第1篇 C#2.0基础知识 3
第1章 C#概述 3
1.1 当前流行的开发语言概述 3
1.2 C#的基础框架.NET Framework 3
1.2.1 框架是什么 3
1.2.2 框架的组织结构 4
1.3 C#简介 4
1.3.1 C#的由来 4
1.3.2 C#的特点 5
1.3.3 C#与C++的区别 5
1.4 C#开发工具Visual Studio简介 5
1.4.1 Visual Studio的发展历史 6
1.4.2 用Visual Studio开发C#的优点 6
1.4.3 Visual Studio 2005的界面介绍 6
1.5 第一个Windows应用程序 7
1.5.1 什么是Windows应用程序 7
1.5.2 开发Hello World Windows应用程序 7
1.6 第一个Web应用程序 9
1.6.1 什么是Web应用程序 9
1.6.2 开发Hello World Web应用程序 9
1.7 Windows应用程序和Web应用程序的区别 12
1.8 小结 12
第2章 C#的语法知识 13
2.1 变量、常量和表达式 13
2.1.1 常量 13
2.1.2 变量 13
2.1.3 变量的类型 13
2.1.4 类型转换 14
2.1.5 变量的作用域和生存周期 14
2.1.6 表达式 15
2.2 运算符 15
2.2.1 算术运算符 15
2.2.2 关系运算符和逻辑运算符 16
2.2.3 赋值运算符 16
2.2.4 ?运算符 16
2.2.5 运算符优先级 17
2.3 流程控制语句 17
2.3.1 if语句 17
2.3.2 switch语句 18
2.3.3 for语句 19
2.3.4 foreach语句 20
2.3.5 while语句 20
2.4 方法和函数 21
2.4.1 方法和函数的定义 21
2.4.2 函数的参数 22
2.4.3 函数的返回值 22
2.4.4 函数的重载 22
2.4.5 委托 23
2.5 泛型 23
2.5.1 什么是泛型 23
2.5.2 泛型的应用范围 24
2.6 小结 24
第3章 C#的面向对象特性 25
3.1 面向对象编程概述 25
3.1.1 什么是类和对象 25
3.1.2 用C#如何创建类 25
3.1.3 用C#如何创建对象 27
3.1.4 什么是面向对象编程 27
3.2 面向对象的技术 28
3.2.1 接口 28
3.2.2 用C#如何创建接口 28
3.2.3 继承 29
3.2.4 用C#如何实现继承 29
3.2.5 多态 29
3.2.6 用C#如何实现多态 30
3.3 面向对象开发的简单实例 31
3.3.1 面向对象功能设计 31
3.3.2 面向对象的类设计 31
3.3.3 面向对象的应用 32
3.4 小结 33
第4章 数组、字典和字符串 34
4.1 字符串 34
4.1.1 字符串对象string 34
4.1.2 字符串的截取 34
4.1.3 字符串的复制 35
4.1.4 字符串的格式化 35
4.1.5 使用StringBuild连接字符串 36
4.2 数组 36
4.2.1 普通数组 36
4.2.2 动态数组 36
4.2.3 泛型数组 37
4.2.4 数组的遍历 37
4.2.5 ArrayList与传统数组间的转换 38
4.3 字典 39
4.3.1 什么是字典 39
4.3.2 可排序的字典 39
4.3.3 哈希表 39
4.3.4 字典的遍历 40
4.3.5 使用可排序字典存储自定义类型 40
4.4 小结 41
第2篇 C# Windows应用 45
第5章 Windows应用程序概述 45
5.1 Windows应用程序包含的应用 45
5.2 Windows应用程序的工作界面 45
5.2.1 解决方案资源管理器 46
5.2.2 工具箱 46
5.2.3 菜单 46
5.3 控件的属性和事件概述 47
5.4 公共控件 47
5.4.1 按钮控件Button 48
5.4.2 文本显示控件Label 48
5.4.3 输入控件TextBox 49
5.4.4 日期控件DateTimePicker 50
5.4.5 进度条控件ProgressBar 50
5.4.6 列表控件ListBox 51
5.4.7 树控件TreeView 52
5.4.8 其他公共控件 53
5.5 容器 54
5.5.1 流布局控件FlowLayoutPanel 54
5.5.2 分隔条控件SplitContainer 55
5.5.3 选项卡控件TabControl 55
5.5.4 其他容器控件 56
5.6 菜单和工具栏 56
5.6.1 快捷菜单控件ContextMenuStrip 56
5.6.2 工具栏控件ToolStrip 57
5.6.3 其他菜单和工具栏控件 58
5.7 组件 58
5.7.1 帮助文档组件HelpProvider 58
5.7.2 定时器组件Timer 59
5.7.3 其他组件 59
5.8 对话框 59
5.8.1 保存文件对话框SaveFileDialog 60
5.8.2 打开文件对话框OpenFileDialog 61
5.8.3 其他对话框 62
5.9 小结 62
第6章 Windows应用程序的跟踪、调试和错误处理 63
6.1 应用程序的跟踪 63
6.1.1 什么是跟踪 63
6.1.2 什么是跟踪侦听器 63
6.1.3 跟踪对象Trace 64
6.1.4 在应用程序中跟踪代码 64
6.1.5 将跟踪结果输出到文件 65
6.2 应用程序的调试 66
6.2.1 什么是调试 66
6.2.2 代码级断点调试 66
6.2.3 掌握调试时的即时信息 67
6.3 应用程序的异常处理 67
6.3.1 什么是异常处理 68
6.3.2 异常处理的特点 68
6.3.3 如何使用try/catch处理异常 68
6.3.4 如何使用try/finally清理 68
6.4 小结 69
第7章 Windows应用程序的部署 70
7.1 应用程序部署概述 70
7.1.1 VS2005提供的应用程序部署功能 70
7.1.2 Windows Installer部署和ClickOnce部署的比较 70
7.2 使用ClickOnce部署应用程序 71
7.2.1 将应用程序发布到Web 71
7.2.2 将应用程序发布到共享文件夹 72
7.2.3 将应用程序发布到CD-ROM 73
7.3 使用Windows Installer创建安装程序 74
7.3.1 创建部署项目 74
7.3.2 在部署项目中添加应用程序 75
7.3.3 安装应用程序 76
7.4 小结 77
第8章 Windows应用程序中的文件管理 78
8.1 文件管理概述 78
8.2 目录管理对象DirectoryInfo 78
8.2.1 DirectoryInfo概述 78
8.2.2 DirectoryInfo的成员 79
8.2.3 创建目录 79
8.2.4 移动目录 80
8.2.5 删除目录 80
8.2.6 用ListBox显示根目录下所有目录 80
8.3 文件管理对象FileInfo 83
8.3.1 FileInfo概述 83
8.3.2 FileInfo对象的成员 83
8.3.3 创建文件 84
8.3.4 在文件末尾添加文本 84
8.3.5 删除文件 84
8.3.6 为自定义资源管理器添加创建目录和文件的功能 84
8.4 文件流对象FileStream 86
8.4.1 什么是文件流 86
8.4.2 FileStream对象的成员 86
8.4.3 读取文件 87
8.4.4 编写文件 87
8.4.5 为自定义资源管理器添加读取文件内容的功能 87
8.5 小结 88
第3篇 C# Web应用 91
第9章 Web应用程序概述 91
9.1 Web应用程序包含的应用 91
9.2 Web应用程序的工作界面 91
9.2.1 解决方案资源管理器 92
9.2.2 工具箱 92
9.2.3 菜单 92
9.3 标准控件 93
9.3.1 按钮控件Button 93
9.3.2 文本显示控件Label 94
9.3.3 输入控件TextBox 95
9.3.4 日期控件Calendar 96
9.3.5 复选列表CheckBoxList 97
9.3.6 单选列表RadioButtonList 99
9.3.7 下拉列表控件DropDownList 99
9.3.8 隐藏字段HiddenField 100
9.3.9 广告控件AdRotator 101
9.3.10 多视图控件MultiView 102
9.3.11 上传控件FileUpload 104
9.3.12 自定义向导控件Wizard 105
9.3.13 局部刷新控件Substitution 107
9.3.14 其他标准控件 108
9.4 HTML控件 108
9.4.1 Input控件 108
9.4.2 页面布局控件 109
9.4.3 其他客户端控件 110
9.5 验证控件 110
9.5.1 必填内容验证控件RequiredFieldValidator 110
9.5.2 限制范围的控件RangeValidator 111
9.5.3 正则表达式验证控件RegularExpressionValidator 112
9.5.4 其他验证控件 112
9.6 导航控件 112
9.6.1 站点地图控件SiteMapPath 113
9.6.2 菜单控件Menu 113
9.6.3 树型控件TreeView 114
9.7 登录控件 115
9.7.1 登录控件Login 115
9.7.2 创建用户控件CreateUserWizard 116
9.7.3 改密码控件ChangePassword 117
9.7.4 其他登录控件 117
9.8 WebParts控件 118
9.8.1 WebPart的管理控件WebPartManager 118
9.8.2 标准WebPart区域控件WebPartZone 119
9.8.3 可修改的区域控件EditorZone 120
9.8.4 目录区域控件CatalogZone 122
9.8.5 其他区域控件ConnectionsZone 124
9.9 小结 125
第10章 Web应用程序的跟踪、调试和错误处理 126
10.1 应用程序的跟踪 126
10.1.1 什么是跟踪 126
10.1.2 页面级跟踪 126
10.1.3 应用程序级跟踪 127
10.2 应用程序的调试 129
10.2.1 什么是调试 129
10.2.2 在Web.Config中启动调试 130
10.2.3 代码级断点调试 130
10.2.4 掌握调试时的即时信息 130
10.3 应用程序的错误处理 131
10.3.1 什么是错误处理 131
10.3.2 代码级错误处理 132
10.3.3 使用Page_Error事件控件 133
10.3.4 用Web.Config控制所有页面级错误 134
10.3.5 使用Application_Error控制应用程序级错误 135
10.4 小结 136
第11章 应用程序的部署和配置 137
11.1 应用程序部署的意义 137
11.2 Web程序的部署 137
11.2.1 VS 2005提供的部署模板 137
11.2.2 创建Web安装项目 137
11.2.3 安装Web项目 140
11.2.4 使用XCopy部署远程网站 141
11.3 应用程序配置的意义 143
11.4 应用程序的配置 143
11.4.1 配置文件的格式 143
11.4.2 标准ASP.NET配置节 144
11.4.3 运行时访问配置文件 145
11.5 小结 145
第12章 Web应用程序的安全性 146
12.1 应用程序的安全概述 146
12.1.1 为什么要保障应用程序的安全性 146
12.1.2 保障安全都有哪些措施 146
12.2 配置Web应用程序的身份验证类型 147
12.2.1 Windows身份验证 147
12.2.2 Forms身份验证 147
12.2.3 Forms身份验证的格式 148
12.3 配置Web应用程序中的权限 149
12.3.1 allow授权配置 149
12.3.2 deny拒绝授权配置 150
12.4 用户管理对象Membership和MembershipUser 150
12.4.1 什么是用户管理 150
12.4.2 Membership用户管理类概述 151
12.4.3 MembershipUser用户类概述 151
12.4.4 用户管理的关键配置-成员资格提供程序MembershipProvider 151
12.4.5 创建用户 152
12.4.6 验证用户 154
12.4.7 查找用户 156
12.4.8 使用MembershipUser修改登录密码 157
12.5 角色管理对象Role 159
12.5.1 什么是角色管理 159
12.5.2 启用角色 159
12.5.3 创建角色 160
12.5.4 赋予用户角色权限 160
12.5.5 验证角色的登录 161
12.6 匿名用户的授权管理 161
12.7 小结 162
第13章 用C#开发Web Service 163
13.1 Web Service介绍 163
13.1.1 概述 163
13.1.2 Web Service的优点 164
13.1.3 Web Service支持的数据类型 164
13.1.4 使用Web Service实现Hello World 164
13.2 在Web Service使用Session对象 166
13.3 使用Web Service实现网络数据的获取 168
13.3.1 创建Web Service天气预报服务 168
13.3.2 在程序中使用Web Service 169
13.4 小结 171
第14章 管理用户的个性化设置 172
14.1 简单类型的个性化设置功能 172
14.1.1 设计个性化的项目 172
14.1.2 配置个性化信息 173
14.1.3 个性化用户登录站点 173
14.1.4 保存个性化设置 173
14.1.5 显示个性化设置 174
14.2 复杂类型的个性化设置功能 174
14.2.1 设计复杂个性的项目 174
14.2.2 配置复杂项目 175
14.2.3 保存复杂项目的设置 176
14.2.4 获取复杂项目的设置并显示 177
14.3 匿名用户的个性化设置功能 177
14.3.1 启用匿名用户的个人配置属性 178
14.3.2 设计匿名用户的登录功能 178
14.3.3 将匿名用户的个性设置移植到已验证用户 180
14.4 完善系统对三个功能的导航 181
14.5 小结 181
第15章 ASP.NET的UI设计 182
15.1 母版页 182
15.1.1 母版页概述 182
15.1.2 母版页优点 182
15.1.3 母版页的设计 182
15.1.4 内容页的设计 183
15.2 母版页高级应用 184
15.2.1 母版页的嵌套 185
15.2.2 以编程方式访问母版页 186
15.3 主题和外观 187
15.3.1 主题和外观概述 187
15.3.2 创建主题和外观 187
15.3.3 在程序中应用主题和外观 188
15.3.4 以编程方式访问主题和外观 189
15.4 小结 189
第16章 ASP.NET的状态管理 190
16.1 状态管理概述 190
16.1.1 什么是状态管理 190
16.1.2 ASP.NET提供的状态管理 190
16.1.3 各种状态管理之间的区别 191
16.2 Cookie状态管理 191
16.2.1 什么是Cookie 191
16.2.2 使用Cookie的优缺点 192
16.2.3 编写Cookie 192
16.2.4 读取Cookie 193
16.3 Session状态管理 194
16.3.1 什么是会话状态Session 194
16.3.2 使用Session的优缺点 195
16.3.3 配置会话状态 195
16.3.4 在ASP.NET中读写Session 196
16.4 Application状态管理 197
16.4.1 什么是Application 197
16.4.2 Application的优缺点 198
16.4.3 读写Application状态 198
16.5 ViewState状态管理 200
16.5.1 什么是ViewState 200
16.5.2 ViewState的优缺点 200
16.5.3 读写ViewState 200
16.6 小结 201
第4篇 ADO.NET数据库操作 205
第17章 ADO.NET 2.0基础知识 205
17.1 ADO.NET 2.0概述 205
17.1.1 什么是ADO.NET 205
17.1.2 ADO.NET的工作原理 205
17.1.3 ADO.NET的结构 206
17.2 数据库连接对象SqlConnection 207
17.2.1 什么是数据库连接 207
17.2.2 SqlConnection对象的成员 207
17.2.3 创建应用程序与数据库的连接 208
17.2.4 使用配置文件和SqlConnection创建与数据库的连接 208
17.3 数据库命令执行对象SqlCommand 209
17.3.1 什么是数据库命令 209
17.3.2 SqlCommand对象的成员 209
17.3.3 创建数据库和数据表 209
17.3.4 使用SqlCommand执行数据库的增、删、改操作 211
17.3.5 使用SqlCommand获取数据库中的一个字段 214
17.3.6 使用SqlCommand获取数据库的只读数据集 215
17.4 只进数据集对象SqlDataReader 216
17.4.1 什么是只进数据集 216
17.4.2 SqlDataReader对象的成员 217
17.4.3 遍历SqlDataReader中的数据 217
17.5 缓存数据集DataSet 218
17.5.1 什么是数据集DataSet 219
17.5.2 DataTable对象概述 219
17.5.3 以编程方式创建DataTable对象 220
17.5.4 DataColumn对象概述 220
17.5.5 以编程方式创建DataColumn对象 221
17.5.6 以编程方式创建DataRow对象 222
17.5.7 使用DataAdapter填充DataSet对象 223
17.5.8 使用可视化向导创建数据集DataSet 224
17.6 小结 227
第18章 Windows应用中的数据控件 228
18.1 数据集控件DataSet 228
18.1.1 创建数据源 228
18.1.2 应用数据源控件 229
18.1.3 动态修改数据源控件的内容 230
18.2 绑定数据源控件BindingSource 231
18.2.1 BindingSource概述 231
18.2.2 使用BindingSource绑定数组 232
18.2.3 使用BindingSource绑定SQL Server数据源 233
18.3 数据表格显示控件DataGridView 234
18.3.1 DataGridView控件概述 234
18.3.2 用向导实现DataGridView对SQL Server数据源的绑定 234
18.3.3 DataGridView实现Web服务数据源的绑定 235
18.3.4 实现DataGridView的增、删、改 238
18.3.5 动态获取DataGridView的行或列 240
18.4 小结 243
第19章 Web应用中的数据控件 244
19.1 数据控件概述 244
19.2 SqlDataSource数据源控件 245
19.2.1 SqlDataSource数据源控件概述 245
19.2.2 使用SqlDataSource填充列表控件 245
19.3 ObjectDataSource数据源控件 249
19.3.1 ObjectDataSource数据源控件概述 249
19.3.2 使用ObjectDataSource填充复选框列表 250
19.3.3 ObjectDataSource使用参数 252
19.4 XmlDataSource数据源控件 254
19.4.1 XmlDataSource数据源控件概述 254
19.4.2 使用XmlDataSource显示树型菜单 255
19.4.3 XmlDataSource数据源的筛选XPath 256
19.5 SiteMapDataSource数据源控件 257
19.5.1 SiteMapDataSource数据源控件概述 257
19.5.2 使用SiteMapDataSource制作网站导航栏 258
19.6 网格控件GridView 258
19.6.1 GridView概述 258
19.6.2 使用GridView显示数据表 259
19.6.3 GridView的列字段 259
19.6.4 GridView的样式 260
19.6.5 GridView的模板 260
19.6.6 GridView的事件 261
19.6.7 无代码实现GridView的编辑和删除 261
19.6.8 GridView的分页 263
19.6.9 在GridView中使用CheckBox 263
19.6.10 实现GridView的多行编辑 265
19.7 数据列表控件DataList 269
19.7.1 DataList概述 269
19.7.2 用DataList显示数据表 270
19.7.3 用DataList实现编辑和删除 271
19.8 详细信息控件DetailsView 274
19.8.1 DetailsView概述 274
19.8.2 使用DetailsView显示指定行的详细信息 274
19.8.3 使用DetailsView实现数据的插入 276
19.8.4 使用DetailsView实现数据的编辑 276
19.9 模板数据控件Repeater 277
19.9.1 Repeater概述 277
19.9.2 使用Repeater显示数据表 278
19.10 用户控件 279
19.10.1 用户控件概述 279
19.10.2 如何创建用户控件 279
19.10.3 如何动态加载用户控件 280
19.11 小结 281
第20章 XML与ADO.NET 282
20.1 XML概述 282
20.1.1 XML文件的概念 282
20.1.2 XML文件的用途 282
20.1.3 XML文件的优缺点 283
20.1.4 XML文件与HTML文件的区别 283
20.1.5 XML文件的声明和规范 283
20.2 XPath概述 284
20.2.1 XPath是什么 284
20.2.2 XPath的语法 284
20.3 XML文档对象模型 285
20.3.1 文档对象模型概述 285
20.3.2 XML文档对象的结构 285
20.3.3 使用XML DOM获取XML文件 286
20.3.4 编辑XML文件中的节点 287
20.4 XML文件读取器XmlReader 289
20.4.1 XmlReader概述 289
20.4.2 XmlReader读取器的验证属性 289
20.4.3 使用XmlReader读取XML文件 290
20.5 XML文件编写器XmlWriter 291
20.5.1 XmlWriter概述 291
20.5.2 XmlWriter编写器的验证属性 291
20.5.3 使用XmlWriter编写XML文件 292
20.6 XML与ADO.NET的交互 293
20.6.1 将XML文件转换为数据集 293
20.6.2 将数据集输出为XML文件 294
20.6.3 XmlDataDocument数据集文档对象概述 296
20.6.4 使用XmlDataDocument对象编辑XML文件 296
20.7 小结 297
第21章 Web应用程序中的缓存服务 298
21.1 缓存服务概述 298
21.2 页面缓存 298
21.2.1 页面缓存概述 298
21.2.2 不带参数的页面缓存 299
21.2.3 带控件参数的页面缓存 299
21.2.4 带页面查询参数的页面缓存 300
21.3 片段缓存 301
21.3.1 片段缓存概述 301
21.3.2 创建片段缓存 301
21.4 数据缓存 302
21.4.1 数据缓存概述 302
21.4.2 创建数据缓存 303
21.4.3 使用XML文件实现缓存依赖 304
21.5 数据库缓存依赖简介 306
21.5.1 数据库缓存依赖概述 306
21.5.2 数据库缓存依赖的优点 306
21.6 开始使用数据库缓存 306
21.6.1 开启应用程序的缓存功能 307
21.6.2 配置缓存依赖的数据库 307
21.6.3 为SQL Server启用缓存通知 308
21.7 控件级数据缓存功能 308
21.7.1 添加时间戳和数据 308
21.7.2 观察缓存数据的变化 310
21.8 页面级数据缓存依赖功能 310
21.8.1 配置页面的缓存属性 310
21.8.2 完善模块中两个功能的导航 311
21.9 小结 311
第5篇 C#开发实例 315
第22章 Small Business Starter Kit小型业务网站 315
22.1 Small Business Starter Kit简介 315
22.2 Small Business Starter Kit的安装 316
22.3 Small Business Starter Kit的结构 317
22.3.1 页面布局—MasterPage母版页 317
22.3.2 页面布局—web.sitemap导航地图 318
22.3.3 数据源—XM:和SQL Server 318
22.3.4 数据层处理—Provider 319
22.3.5 业务逻辑层处理 319
22.4 Small Business Starter Kit的模块 320
22.4.1 Catalog目录管理 320
22.4.2 People人员管理 322
22.4.3 News新闻管理 323
22.4.4 Testimonials用户体验 324
22.5 小结 324
第23章 Personal Site Starter Kit个人网站 325
23.1 Personal Site Starter Kit简介 325
23.2 Personal Site Starter Kit的安装 325
23.3 Personal Site Starter Kit的结构 327
23.3.1 页面布局—MasterPage母版页 327
23.3.2 页面布局—面包屑导航web.sitemap 327
23.3.3 数据库—用户权限库和素材库 329
23.3.4 业务逻辑层处理 329
23.4 Personal Site Starter Kit的模块 330
23.4.1 注册和登录模块 330
23.4.2 权限管理模块 331
23.4.3 角色管理 331
23.4.4 相册管理模块 333
23.4.5 图片浏览和加载模块 334
23.4.6 图片的下载模块 334
23.4.7 其他模块 335
23.5 小结 335
第24章 Club Web Site Starter Kit网站 336
24.1 Club Web Site Starter Kit简介 336
24.2 Club Web Site Starter Kit的结构 337
24.2.1 用户控件和自定义控件 337
24.2.2 统一错误处理 338
24.2.3 用户数据库和信息数据库 339
24.3 Club Web Site Starter Kit的模块 340
24.3.1 事件日志管理模块 340
24.3.2 新闻管理模块 342
24.3.3 相册管理模块 343
24.3.4 用户管理模块 344
24.4 小结 345
第25章 Time Tracker Starter Kit项目跟踪 346
25.1 Time Tracker Starter Kit简介 346
25.2 Time Tracker Starter Kit的特色 347
25.2.1 Time Tracker Starter Kit的三层结构 347
25.2.2 GridView控件的灵活运用 348
25.2.3 日期控件的时尚设计 349
25.3 Time Tracker Starter Kit的模块 349
25.3.1 项目管理模块 349
25.3.2 进度登记模块 351
25.3.3 报表模块 352
25.4 小结 352
第26章 Classifieds Web Site分类网站 353
26.1 Classifieds Web Site Starter Kit简介 353
26.2 Classifieds Web Site Starter Kit的结构 353
26.2.1 缓存数据层 354
26.2.2 业务逻辑层 355
26.2.3 数据集.xsd(数据层) 356
26.3 Classifieds Web Site Starter Kit的模块 356
26.3.1 信息发布模块 356
26.3.2 个性设置模块 357
26.3.3 网站管理模块 358
26.4 小结 358
第27章 学校课程管理系统 359
27.1 课程管理系统的技术要点 359
27.1.1 创建GridView的多条件查询字符串—StringBuilder 359
27.1.2 GridView的增、删、改 360
27.1.3 全局错误统一处理 360
27.2 课程管理系统的分析设计 360
27.2.1 设计数据库架构 361
27.2.2 数据库表之间的关系 362
27.2.3 功能模块设计 362
27.3 登录模块 363
27.3.1 创建项目并配置数据库 363
27.3.2 系统默认登录页 364
27.3.3 学生管理默认页面 365
27.3.4 教师管理默认页面 366
27.3.5 权限管理配置 366
27.4 学生功能模块 368
27.4.1 修改密码 368
27.4.2 查看所有课程 369
27.4.3 学生选课 370
27.4.4 学生取消选课 371
27.5 教师功能模块 372
27.5.1 修改密码 373
27.5.2 添加新课程 373
27.5.3 查看所教课程 375
27.6 管理员模块 375
27.6.1 管理员的登录界面 375
27.6.2 学生信息的增、删、改和查询 376
27.6.3 教师信息的增、删、改和查询 377
27.7 统一错误处理 378
27.8 小结 378