《C#面向对象程序设计(第2版)》
第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.5C#语言 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.1Form类 51
任务3.1:以编程方式创建窗体 51
3.4.2Form类的常用属性及方法 53
3.4.3StringBuilder类 54
任务3.2:文字游戏 54
3.4.4StringBuilder类的常用属性及方法 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.1if语句 74
任务4.1:计时工人工资的计算 (版本1) 74
4.2.2if ... else语句 76
任务4.2:猜数游戏 76
4.2.3条件运算符 78
任务4.3:显示时间(版本1) 78
4.2.4if ... else if ... else语句 80
任务4.4:工资发放(版本1) 81
4.2.5if语句的嵌套 83
任务4.5:求数的绝对值 83
4.2.6switch语句 85
任务4.6:计算器(版本1) 86
4.2.7复合赋值运算符 89
4.2.8条件逻辑运算符和逻辑运算符 89
4.2.9独立实践 89
4.3循环语句 91
4.3.1while语句 91
任务4.7:计算复利存款(版本1) 91
4.3.2do ... while语句 94
任务4.8:计算复利存款(版本2) 94
4.3.3for语句 95
任务4.9:打印字母表及对应的 ASCII码(版本1) 96
4.3.4嵌套循环 98
任务4.10:计算销售额 98
4.3.5独立实践 100
4.4跳转语句 100
4.4.1goto语句 100
4.4.2break语句 103
4.4.3continue语句 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.3ref参数与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.1ArrayList类的常用属性 196
7.10.2ArrayList类的常用方法 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:用委托排序数组 282
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.1Button按钮的常用属性 298
10.3.2Button按钮的常用事件 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.5Connection对象和Command对象 303
10.5.1Connection对象 304
任务10.4:创建并打开一个到
SQL Server的连接 304
10.5.2Command对象 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.8PictureBox图片框控件 325
10.8.1任务10.8:雇员相片管理 326
10.8.2PictureBox的常用属性 329
10.8.3PictureBox的常用事件 329
10.8.4Image.FromFile方法 329
10.8.5独立实践:图片幻灯机 330
10.9组合框控件和文本框控件 330
任务10.9:登录程序 330
10.9.1ComboBox的常用属性和方法 334
10.9.2组合框控件的常用事件 337
10.9.3TextBox的常用属性 337
10.9.4TextBox的常用事件 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.4Windows窗体中的数据绑定 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.6DataRelation对象 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.2Timer控件 415
12.2.3ToolStripMenuItem的常用属性 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.1FileStream 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.4StreamReader和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