第1章 认识C# 1
1.1 场景引入 1
1.2 什么是.NET 1
1.3 .NET应用程序的编译 2
1.3.1 从用户代码到机器代码 2
1.3.2 中间语言介绍 3
1.4 .NET Framework平台体系结构 3
1.5 C#语言 4
1.6 第一个简单的控制台应用程序 4
1.6.1 任务1.1:打印客户信息 4
1.6.2 独立实践:打印邮寄地址 6
1.7 创建简单的Windows应用程序 7
1.7.1 任务1.2:在对话框中显示客户信息 7
1.7.2 任务1.3:显示图像 8
1.7.3 任务1.4:在文本框中显示客户信息 10
1.7.4 独立实践:显示当前时间 15
1.8 认识使用程序逻辑解决问题 15
1.8.1 程序开发的步骤 15
1.8.2 描述算法的工具 17
任务1.5:计算门票收益和捐款额 17
1.8.3 算法实例 19
任务1.6:数的排序 20
任务1.7:投资计算 20
1.8.4 独立实践:画活动图和指出伪代码 21
1.9 项目实践 21
第2章 基本数据的存储与运算 24
2.1 场景引入 24
2.2 变量与常数 25
2.2.1 变量的含义和作用 25
2.2.2 标识符 25
2.2.3 变量声明 26
任务2.1:计算路程 26
2.2.4 常数 29
2.2.5 独立实践:计算多项式的值 29
2.3 基本数据类型 29
2.3.1 整型 30
任务2.2:产品销售 30
2.3.2 字符数据类型 33
任务2.3:字符检查 33
2.3.3 非整型 36
任务2.4:贷款计算器 37
2.3.4 格式化输出 40
2.3.5 算术运算 41
2.3.6 基本数据类型的相互转换 41
任务2.5:隐式和强制数值转换 43
2.3.7 算术溢出及显式转换溢出 44
任务2.6:算术溢出及显式转换溢出 44
2.3.8 布尔类型 45
任务2.7:数值比较 46
2.3.9 独立实践 46
2.4 项目实践 47
第3章 使用对象存储数据及完成任务 49
3.1 场景引入 49
3.2 类和对象 49
3.3 消息和方法 50
3.4 使用现有的类 51
3.4.1 Form类 51
任务3.1:以编程方式创建窗体 51
3.4.2 Form类的常用属性及方法 53
3.4.3 StringBuilder类 54
任务3.2:文字游戏 54
3.4.4 StringBuilder类的常用属性及方法 57
3.5 创建自己的类 57
3.5.1 创建圆类 57
任务3.3:使用圆类计算圆的面积(版本1) 58
3.5.2 使用set方法和get方法访问字段 63
任务3.4:使用圆类计算圆的面积(版本2) 63
3.5.3 使用可实例化类的贷款计算器 66
任务3.5:贷款计算器(版本2) 66
3.5.4 独立实践 72
3.6 项目实践 72
第4章 程序流控制 73
4.1 场景引入 73
4.2 选择语句 73
4.2.1 if语句 74
任务4.1:计时工人工资的计算(版本1) 74
4.2.2 if…else语句 76
任务4.2:猜数游戏 76
4.2.3 条件运算符 78
任务4.3:显示时间(版本1) 78
4.2.4 if…else if…else语句 80
任务4.4:工资发放(版本1) 81
4.2.5 if语句的嵌套 83
任务4.5:求数的绝对值 83
4.2.6 switch语句 85
任务4.6:计算器(版本1) 86
4.2.7 复合赋值运算符 89
4.2.8 条件逻辑运算符和逻辑运算符 89
4.2.9 独立实践 89
4.3 循环语句 91
4.3.1 while语句 91
任务4.7:计算复利存款(版本1) 91
4.3.2 do...while语句 94
任务4.8:计算复利存款(版本2) 94
4.3.3 for语句 95
任务4.9:打印字母表及对应的ASCII码(版本1) 96
4.3.4 嵌套循环 98
任务4.10:计算销售额 98
4.3.5 独立实践 100
4.4 跳转语句 100
4.4.1 goto语句 100
4.4.2 break语句 103
4.4.3 continue语句 104
4.4.4 运算符的优先级 105
4.5 项目实践 105
第5章 使用数组存储一系列数据 107
5.1 情景引入 107
5.2 数组 107
任务5.1:计算月平均降雨量 108
5.2.1 数组初始化 112
任务5.2:显示月名称 112
5.2.2 可变长度的数组的声明 113
任务5.3:创建可变长度的数组 114
5.2.3 独立实践 115
5.3 多维数组 116
5.3.1 多维数组的声明和创建 117
5.3.2 多维数组初始化 117
5.3.3 实例研究 117
任务5.4:测试二维数组 117
任务5.5:数据查询 119
任务5.6:学生考试成绩统计 121
5.3.4 独立实践 122
5.4 值类型与引用类型 123
5.5 独立实践 126
5.6 项目实践 126
第6章 使用方法完成任务 128
6.1 场景引入 128
6.2 传值方式 129
6.2.1 以传值方式传递值类型参数 129
任务6.1:移动矩形 129
6.2.2 以传值方式传递引用类型参数 134
任务6.2:以传值方式传递数组 134
6.2.3 独立实践 137
6.3 传引用方式 138
6.4 以传引用方式传递值类型参数 138
6.4.1 引用参数(ref参数) 138
任务6.3:调用方法获得多个值(使用ref参数) 139
6.4.2 输出参数(out参数) 140
任务6.4:调用方法获得多个值(使用out参数) 140
6.4.3 ref参数与out参数的比较 142
任务6.5:改变矩形位置 142
6.4.4 独立实践 143
6.5 以传引用方式传递引用类型参数 144
任务6.6:调用方法为实参创建新的对象 144
6.6 独立实践 146
6.7 命名实参 146
任务6.7:投资计算(版本1) 146
6.8 给参数指定默认值 147
任务6.8:投资计算(版本2) 147
6.9 使用可变数目的参数 148
任务6.9平均成绩 149
6.10 项目实践 151
第7章 使用类与对象设计程序 152
7.1 场景引入 152
7.2 类、对象和封装 153
7.3 字段 154
任务7.1:贷款计算器(版本3) 154
7.3.1 常数和只读字段 157
7.3.2 成员访问控制 157
7.4 属性 158
任务7.2:贷款计算器(版本4) 158
7.4.1 类作用域 163
7.4.2 索引器 163
任务7.3:贷款分析 163
7.4.3 属性与字段、属性和方法的比较 168
7.4.4 使用this关键字 169
任务7.4:雇员税金计算 169
7.4.5 独立实践 171
7.5 实例构造函数 171
7.5.1 默认实例构造函数 171
任务7.5:定义Person类 172
7.5.2 默认初始化字段 173
7.5.3 显式初始化字段 173
7.5.4 实例构造函数声明 174
任务7.6:定义矩形(版本1) 174
7.5.5 独立实践 177
7.6 实例构造函数重载 177
7.6.1 使用重载的实例构造函数 177
任务7.7:定义矩形(版本2) 177
7.6.2 调用同类中的其他构造函数 179
任务7.8:定义矩形(版本3) 179
7.6.3 独立实践 180
7.7 静态成员与实例成员 180
7.7.1 静态字段和实例字段 180
任务7.9:自动编号 180
7.7.2 静态构造函数 182
任务7.10:自动编号从随机整数开始 182
7.7.3 静态方法 183
7.7.4 静态成员和实例成员的特征 183
7.7.5 独立实践 184
7.8 以对象为参数与以返回值为对象 185
7.8.1 以对象为参数 185
任务7.11:放大矩形 185
任务7.12:以传引用方式传递对象参数 187
7.8.2 以返回值为对象 187
任务7.13:放大矩形的副本 187
7.8.3 独立实践 189
7.9 方法的重载 189
7.9.1 任务7.14:定义矩形(版本4) 189
7.9.2 独立实践:查找数据 191
7.10 使用ArrayList类 191
任务7.15:地址簿 191
7.10.1 ArrayList类的常用属性 196
7.10.2 ArrayList类的常用方法 196
7.11 项目实践 197
第8章 使用继承重用代码 199
8.1 场景引入 199
8.2 直接基类与派生类 200
8.2.1 任务8.1:定义基类Person 200
8.2.2 任务8.2:定义派生类Student(版本1) 201
8.2.3 独立实践 203
8.3 派生类实例构造函数声明 203
任务8.3:复数加法 203
8.3.1 运算符重载 204
任务8.4:复数减法 205
8.3.2 显式调用直接基类实例构造函数 208
任务8.5:调用基类实例构造函数 209
8.3.3 独立实践 209
8.4 隐藏从基类继承的成员 210
任务8.6:隐藏继承字段 210
8.5 含直接基类构造函数的构造函数声明 211
8.5.1 任务8.7:定义派生类Student(版本2) 211
8.5.2 独立实践 212
8.6 虚拟方法与重写方法 213
任务8.8:销售员工资系统(版本1) 213
8.6.1 继承中构造函数的执行过程 223
8.6.2 重载、重写和隐藏的比较 224
8.6.3 独立实践 225
8.7 垃圾回收和析构函数 225
8.7.1 使用析构函数 226
任务8.9:保存状态信息 226
8.7.2 声明派生类的析构函数 227
任务8.10:保存雇员状态信息 227
8.8 项目实践 228
第9章 实现多态性 230
9.1 场景引入 230
9.2 抽象方法与抽象类 231
9.2.1 抽象方法和抽象属性 231
任务9.1:雇员工资系统 231
9.2.2 抽象类继承 237
任务9.2:多态性及实现 237
9.2.3 独立实践:绘制图形 242
9.3 接口 243
9.3.1 声明和实现接口 243
任务9.3:创建和使用接口 244
9.3.2 独立实践:比较对象 247
9.3.3 接口成员的显式实现 248
任务9.4:用接口实现不同的度量衡系统 248
9.3.4 接口和抽象类 249
任务9.5:薪水发放系统 250
9.3.5 接口与抽象类的比较 255
9.4 使用委托封装方法 256
9.4.1 使用委托 256
任务9.6:使用委托处理数据 256
9.4.2 组合委托 259
任务9.7:使用组合委托实现运算 260
9.4.3 独立实践:配送系统 261
9.4.4 实例研究 262
任务9.8:用委托排序数组 262
9.5 使用匿名函数创建委托 265
9.5.1 使用匿名方法创建委托 265
任务9.9:使用匿名方法改写程序 265
9.5.2 使用Lambda创建委托 268
任务9.10:使用匿名表达式改写程序 268
9.5.3 独立实践:存货清单 272
9.6 实例研究 272
任务9.11:停销产品处理 272
9.7 事件 277
9.7.1 自定义事件 278
任务9.12:密码监听器 278
9.7.2 声明持有事件数据的类 281
9.7.3 使用匿名函数创建事件处理程序 283
9.7.4 逆变和协变 284
9.7.5 独立实践:监视库存量 285
9.8 项目实践 286
第10章 创建GUI程序和数据库应用程序 287
10.1 场景引入 287
10.2 滚动条 287
任务10.1:调色板 288
10.2.1 滚动条常用属性 290
10.2.2 滚动条常用事件 291
10.2.3 用户定义的颜色 291
10.2.4 独立实践 292
10.3 事件及事件处理程序 292
任务10.2:计算器 293
10.3.1 Button按钮的常用属性 298
10.3.2 Button按钮的常用事件 299
10.3.3 独立实践 299
10.4 复选框和单选按钮 299
任务10.3:Font程序 299
10.4.1 如何设置字体 302
10.4.2 复选框的常用属性 302
10.4.3 复选框的常用事件 303
10.4.4 单选按钮的常用属性 303
10.4.5 单选按钮的常用事件 303
10.4.6 独立实践 303
10.5 Connection对象和Command对象 303
10.5.1 Connection对象 304
任务10.4:创建并打开一个到SQL Server的连接 304
10.5.2 Command对象 306
任务10.5:操作数据库 306
10.5.3 独立实践:修改库存量 307
10.6 使用SqlDataReader 307
10.6.1 任务10.6:雇员信息管理 308
10.6.2 独立实践:浏览产品表 319
10.7 创建三层应用程序 319
10.7.1 任务10.7:增强雇员信息管理程序 320
10.7.2 独立实践:修改产品表 325
10.8 PictureBox图片框控件 325
10.8.1 任务10.8:雇员相片管理 326
10.8.2 PictureBox的常用属性 329
10.8.3 PictureBox的常用事件 329
10.8.4 Image.FromFile方法 329
10.8.5 独立实践:图片幻灯机 330
10.9 组合框控件和文本框控件 330
任务10.9:登录程序 330
10.9.1 ComboBox的常用属性和方法 334
10.9.2 组合框控件的常用事件 337
10.9.3 TextBox的常用属性 337
10.9.4 TextBox的常用事件 339
10.9.5 独立实践:产品的查询 339
10.10 列表框 339
任务10.10:产品信息管理 340
10.10.1 列表框控件的常用属性 355
10.10.2 列表框控件的常用方法 356
10.10.3 列表框控件的常用事件 357
10.10.4 独立实践:客户信息管理 357
10.11 带复选框的列表框 358
任务10.11:购买产品 358
10.11.1 复选列表框控件的常用属性 361
10.11.2 复选列表框控件的常用方法和事件 361
10.12 项目实践 361
第11章 使用ADO.NET进行数据库编程 363
11.1 场景引入 363
11.2 数据表DataTable 364
任务11.1:客户信息管理 365
11.3 数据集和数据适配器 374
11.3.1 通过数据集更新数据源 374
任务11.2:客户信息管理(版本1) 375
11.3.2 将数据集绑定到DataGridView控件 389
任务11.3:以浏览方式管理客户信息 389
11.3.3 行状态与行版本 391
11.3.4 独立实践:产品信息管理 392
11.4 Windows窗体中的数据绑定 392
11.4.1 简单绑定控件属性 392
任务11.4:类别信息管理(版本1) 392
11.4.2 使用CurrencyManager 398
11.4.3 独立实践:客户信息管理(版本2) 399
11.5 创建和使用数据视图 399
11.5.1 使用数据视图查询数据 399
任务11.5:类别信息管理(版本2) 399
11.5.2 数据视图的常用属性及方法 404
11.5.3 独立实践:客户及其订单管理(版本1) 405
11.6 DataRelation对象 405
11.6.1 创建DataRelation对象 406
11.6.2 导航表间的关系 409
11.6.3 独立实践:客户及其订单管理(版本2) 410
11.7 项目实践 410
第12章 与用户交互 411
12.1 场景引入 411
12.2 菜单 411
12.2.1 创建菜单 411
任务12.1:随机画矩形 412
12.2.2 Timer控件 415
12.2.3 ToolStripMenuItem的常用属性 416
12.2.4 快捷菜单 416
任务12.2:实现快捷菜单 417
12.2.5 独立实践:数学学习工具 418
12.3 鼠标事件 418
任务12.3:用鼠标画直线和画矩形 418
12.3.1 鼠标事件 422
12.3.2 鼠标事件发生顺序 423
12.3.3 独立实践:创建迷宫游戏 423
12.4 键盘事件处理 423
12.4.1 任务12.4:用箭头键移动字符 424
12.4.2 独立实践 427
12.5 通用对话框 427
12.5.1 打开文件对话框 427
任务12.5:打开文件 427
12.5.2 保存文件对话框 430
任务12.6:保存文件 430
12.5.3 字体对话框 432
任务12.7:改变文本的字体 432
12.5.4 颜色对话框 433
任务12.8:改变文本颜色 433
12.5.5 独立实践:图片查看器(版本1) 434
12.6 编写多文档界面应用程序 434
12.6.1 任务12.9:字处理器 435
12.6.2 独立实践:图片查看器(版本2) 444
12.7 项目实践 444
第13章 用流进行文件输入和输出 445
13.1 场景引入 445
13.2 文件与流 446
13.2.1 FileStream 446
任务13.1:使用FileStream 446
任务13.2:将图像文件存入数据库 448
任务13.3:从数据库读取Image类型数据并保存为图像文件 450
13.2.2 随机访问文件 451
任务13.4:定位操作 452
13.2.3 向文件追加数据 453
任务13.5:向文件追加数据 453
13.2.4 独立实践:文件复制 454
13.3 内存和缓冲流 454
任务13.6:显示图像 454
13.4 StreamReader和StreamWriter 456
13.4.1 任务13.7:电话号码簿 456
13.4.2 独立实践:处理成绩(版本1) 459
13.5 二进制读取器和写出器 459
13.5.1 任务13.8:学生名册 459
13.5.2 独立实践:处理成绩(版本2) 462
13.6 序列化对象 462
13.6.1 任务13.9:序列化对象 462
13.6.2 独立实践:贷款计算 464
13.7 可视化继承 464
任务13.10:创建基窗体 464
任务13.11:创建可视继承窗体 466
13.8 顺序访问文件 467
13.8.1 任务13.12:产品类别管理程序 467
13.8.2 独立实践:联系人信息管理(版本1) 478
13.9 随机存取文件 478
13.9.1 任务13.13:产品供应商管理程序 478
13.9.2 独立实践:联系人信息管理(版本2) 487
13.10 使用序列化对象存储数据 487
13.10.1 任务13.14:产品管理程序 487
13.10.2 独立实践:联系人信息管理(版本3) 497
13.11 项目实践 497