目录
目录
第1章 计算机和编程导论 1
1.1 导言 1
1.2 硬件和软件 2
1.2.1 硬件 2
1.2.2 软件 5
1.2.3 思考题 5
1.3 计算机存储数据的方式 6
1.3.1 数字存储 7
1.3.2 字符存储 8
1.3.3 高级数字存储 9
1.3.4 其他类型数据的
存储方式 9
1.3.5 思考题 9
1.4 程序工作原理 10
1.4.1 从机器语言到汇编
语言 12
1.4.2 高级语言 12
1.4.3 关键字、运算符和
语法概述 13
1.4.4 编译器和解释器 14
1.4.5 思考题 15
1.5 图形用户界面 16
1.5.1 事件驱动的GUI
程序 17
1.5.2 思考题 18
1.6 对象 18
1.6.1 可见对象与不可见
对象 19
1.6.2 类:对象来源 20
1.6.3 .NET框架 20
1.6.4 编写自定义类 20
1.6.5 思考题 20
1.7 程序开发过程 21
1.7.1 程序开发周期 21
1.7.2 思考题 24
1.8 Visual Studio开发环境入门 24
教程1-1:Visual Studio入门和
环境设置 25
1.8.1 新建项目 27
教程1-2:新建Visual C#项目 27
教程1-3:保存和关闭项目 29
1.8.2 Visual Studio开发
环境 29
1.8.3 使用“自动隐藏”
功能 30
1.8.4 菜单栏和“标准”
工具栏 31
1.8.5 工具箱 32
1.8.6 使用工具提示 34
1.8.7 停靠和浮动窗口 34
1.8.8 项目和解决方案 34
1.8.9 解决方案和项目在磁盘
上的典型组织方式 36
1.8.10 打开现有的项目 37
教程1-4:打开现有的项目 37
1.8.11 显示设计器窗口 37
1.8.12 访问Visual Studio
文档 38
教程1-5:熟悉Visual Studio开发
环境 38
1.8.13 思考题 39
本章重点词汇(中英文对照) 39
复习和练习 41
编程挑战 44
第2章 Visual C#简介 46
2.1 窗体和控件入门 46
2.1.1 应用程序窗体 46
2.1.2 通过名称识别窗体和
控件 46
2.1.3 “属性”窗口 48
2.1.4 添加控件到窗体中 50
2.1.5 按钮控件详解 51
2.1.6 修改控件的名称 52
2.1.7 控件命名规则 53
2.1.8 思考题 54
2.2 为第一个程序创建图形用户
界面 54
教程2-1:创建Hello World应用
程序的图形用户界面 55
2.3 初识C#代码 58
2.3.1 在代码编辑器和
设计器之间切换 61
2.3.2 将自己的代码添加
到项目中 62
2.3.3 消息框 64
2.3.4 字符串常量 66
2.3.5 多个按钮与事件
处理程序 66
2.3.6 设计时和运行时 67
2.3.7 思考题 68
2.4 为Hello World应用程序编写
代码 68
教程2-2:为Hello World应用
程序编写代码 68
2.5 使用标签控件 70
2.5.1 设置字体属性 72
2.5.2 设置边框样式属性 73
2.5.3 设置自动调整大小
属性 73
2.5.4 设置文本对齐属性 74
2.5.5 使用代码在标签控件
中显示输出 75
教程2-3:创建Language Translator
程序 78
2.5.6 思考题 81
2.6 了解智能感知功能 81
2.7 使用图片框控件 82
2.7.1 设置大小模式属性 84
2.7.2 创建可单击的图像 85
教程2-4:创建Flags应用程序 86
2.7.3 可见性属性 89
教程2-5:创建Card Flip应用
程序 90
2.7.4 语句执行顺序 93
2.7.5 思考题 94
2.8 注释、空行和缩进 94
2.8.1 注释 94
2.8.2 使用空行和缩进使
代码更易于阅读 95
2.8.3 思考题 96
2.9 编写代码以关闭应用程序
窗体 96
2.10 处理语法错误 97
思考题 98
本章重点词汇(中英文对照) 98
复习和练习 99
编程挑战 102
第3章 处理数据 106
3.1 使用文本框控件读取输入 106
3.1.1 清除文本框控件的
内容 108
3.1.2 思考题 108
3.2 变量初窥 108
3.2.1 数据类型 109
3.2.2 变量名 109
3.2.3 string变量 109
3.2.4 字符串连接 110
3.2.5 在使用变量之前必须
先声明 112
3.2.6 局部变量 112
3.2.7 变量的作用域 112
3.2.8 变量的生存周期 113
3.2.9 重复的变量名称 113
3.2.10 赋值兼容性 113
3.2.11 一个变量一次只能
保存一个值 114
教程3-1:创建Birth Date String
应用程序 115
3.2.12 初始化变量 118
3.2.13 使用一个语句声明
多个变量 119
3.2.14 思考题 119
3.3 数字数据类型和变量 120
3.3.1 数字常量 121
3.3.2 int变量的赋值
兼容性 122
3.3.3 double变量的赋值
兼容性 122
3.3.4 decimal变量的赋值
兼容性 123
3.3.5 使用强制类型转换
运算符显式转换值 123
3.3.6 思考题 124
3.4 执行计算 125
3.4.1 计算的顺序 126
3.4.2 使用括号分组 127
3.4.3 在数学表达式中使用
混合的数据类型 127
3.4.4 整除 128
3.4.5 组合赋值运算符 129
3.4.6 思考题 130
3.5 输入和输出数字值 130
3.5.1 从文本框中获取
数字 130
3.5.2 显示数字值 133
3.5.3 使用+运算符进行
隐式字符串转换 134
教程3-2:计算燃油的经济性 135
3.5.4 思考题 138
3.6 使用ToString方法设置
数字格式 138
3.6.1 数字格式 139
3.6.2 固定点格式 139
3.6.3 指数格式 140
3.6.4 货币格式 140
3.6.5 使用百分比格式 140
3.6.6 指定精度 140
3.6.7 四舍五入 140
3.6.8 对整数值使用
前导零 141
教程3-3:创建具有货币格式化
功能的 Sale Price Calculator
应用程序 141
3.6.9 思考题 145
3.7 简单的异常处理 145
3.7.1 处理异常 146
3.7.2 显示异常的默认错误
消息 149
教程3-4:创建包含异常处理
机制的 Test Average应用
程序 150
3.7.3 思考题 154
3.8 使用命名常量 154
3.9 声明变量为字段 155
3.9.1 在窗体类中字段的
生存周期 158
3.9.2 慎用字段 158
3.9.3 常量字段 159
教程3-5:创建Change Counter
应用程序 159
3.9.4 思考题 163
3.10 使用Math类 164
3.10.1 Math.PI和Math.E
命名常量 165
3.10.2 思考题 165
3.11 图形用户界面详解 165
3.11.1 控制窗体的Tab键
顺序 165
3.11.2 使用Focus方法
改变焦点 167
3.11.3 将键盘访问键
分配给按钮 168
3.11.4 BackColor属性 169
3.11.5 ForeColor属性 170
3.11.6 使用代码设置
颜色 170
3.11.7 窗体的背景图像 171
3.11.8 使用GroupBox和
Panel来组织控件 172
3.12 使用调试器定位逻辑错误 174
教程3-6:在运行时单步执行应用
程序代码 175
思考题 178
本章重点词汇(中英文对照) 179
复习和练习 180
编程挑战 182
第4章 条件选择 187
4.1 决策结构和if语句 187
4.1.1 布尔表达式和关系
运算符 189
4.1.2 综合应用 190
教程4-1:完成Test Score Average
应用程序 191
4.1.3 思考题 195
4.2 if-else语句 195
教程4-2:完成Payroll with
Overtime应用程序 197
思考题 201
4.3 嵌套决策结构 201
教程4-3:完成Loan Qualifier
应用程序 203
4.3.1 嵌套决策结构中的
缩进和对齐 207
4.3.2 测试一系列条件 207
4.3.3 if-else-if语句 210
4.3.4 思考题 212
4.4 逻辑运算符 213
4.4.1 &&运算符 213
4.4.2 ||运算符 214
4.4.3 短路评估 214
4.4.4 !运算符 215
4.4.5 逻辑运算符的
优先级 215
4.4.6 使用逻辑运算符检查
数字范围 216
4.4.7 思考题 217
4.5 bool变量和标记 218
思考题 219
4.6 比较字符串 219
4.6.1 其他字符串比较 221
4.6.2 思考题 223
4.7 使用TryParse方法防止
数据转换异常 223
4.7.1 验证多个文本框中的
数据 226
教程4-4:计算燃油经济性 228
4.7.2 思考题 231
4.8 输入验证 231
4.9 单选按钮和复选框 233
4.9.1 单选按钮 233
4.9.2 复选框 236
4.9.3 CheckedChanged
事件 237
教程4-5:创建Color Theme应用
程序 238
4.9.4 思考题 241
4.10 switch语句 241
思考题 243
4.11 列表框介绍 244
4.11.1 SelectedItem属性 245
4.11.2 确定是否选中一个
项目 245
教程4-6:创建Time Zone应用
程序 246
4.11.3 思考题 249
本章重点词汇(中英文对照) 249
复习和练习 250
编程挑战 253
第5章 循环、文件和随机数 258
5.1 列表框详解 258
5.1.1 Items.Count属性 259
5.1.2 Items.Clear方法 260
5.1.3 思考题 260
5.2 while循环 260
5.2.1 while循环是一个预
测试循环 263
5.2.2 计数器变量 263
教程5-1:使用循环计算账户
余额 264
教程5-2:改进Ending Balance
应用程序 267
5.2.3 无限循环 270
5.2.4 思考题 271
5.3 递增和递减运算符 271
思考题 272
5.4 for循环 273
5.4.1 for循环是一个预测试
循环 276
5.4.2 在初始化表达式中
声明计数器变量 276
5.4.3 其他形式的更新
表达式 276
5.4.4 通过递减来倒数
计数器变量 277
5.4.5 避免修改for循环体
中的计数器变量 277
教程5-3:使用for循环 277
5.4.6 思考题 280
5.5 do-while循环 281
思考题 282
5.6 使用文件存储数据 282
5.6.1 文件类型 284
5.6.2 文件访问方法 284
5.6.3 文件名和文件流对象 285
5.6.4 使用StreamWriter
对象将数据写入文件 286
5.6.5 使用write方法写入
数据 287
5.6.6 处理与文件相关的
异常 288
教程5-4:将数据写入到文本
文件 288
5.6.7 将数字数据写入文本
文件 292
5.6.8 将数据追加到现有
文件 293
教程5-5:追加数据到Friend.txt
文件 294
5.6.9 指定输出文件的
位置 296
5.6.10 使用StreamReader
对象从文件中读取
数据 296
5.6.11 读取位置 298
5.6.12 从文本文件读取数字
数据 299
5.6.13 使用循环读取文件
并检测文件的结尾 301
教程5-6:使用循环读取到
文件末尾 302
5.6.14 累计汇总 305
教程5-7:累计汇总 306
5.6.15 思考题 309
5.7 使用OpenFileDialog和
SaveFileDialog控件 310
5.7.1 使用OpenFileDialog
控件 310
5.7.2 使用SaveFileDialog
控件 313
5.7.3 思考题 315
5.8 随机数 315
5.8.1 Next方法 316
5.8.2 NextDouble方法 317
教程5-8:模拟抛掷硬币 317
5.8.3 随机数种子 320
5.8.4 思考题 321
5.9 Load事件 321
教程5-9:创建一个Load事件
处理程序 321
思考题 324
本章重点词汇(中英文对照) 324
复习和练习 325
编程挑战 327
第6章 使用方法实现代码模块化 331
6.1 方法入门 331
6.2 void方法 333
6.2.1 方法头 333
6.2.2 方法体 334
6.2.3 在类中声明方法 334
6.2.4 调用方法 335
教程6-1:创建并调用方法 337
6.2.5 自上而下的设计 340
6.2.6 思考题 341
6.3 将实参传递给方法 341
教程6-2:传递实参给方法 344
6.3.1 实参和形参的数据
类型兼容性 348
6.3.2 形参变量的作用域 348
6.3.3 传递多个实参 348
6.3.4 命名实参 350
6.3.5 默认实参 350
6.3.6 通过值传递实参 351
6.3.7 思考题 352
6.4 通过引用传递实参 353
6.4.1 使用引用形参 353
6.4.2 使用输出形参 355
教程6-3:使用输出形参 356
6.4.3 思考题 360
6.5 返回值方法 361
6.5.1 编写自己的返回值
函数 361
教程6-4:编写返回值的方法 365
6.5.2 布尔方法 368
6.5.3 使用布尔方法实现
输入验证的模块化 369
教程6-5:使用布尔方法实现输入
验证的模块化 369
6.5.4 从方法返回一个
字符串 372
6.5.5 思考题 374
6.6 调试方法 374
教程6-6:练习使用“逐语句”
命令 375
教程6-7:连续使用“逐过程”
命令 376
教程6-8:练习使用“跳出”
命令 377
本章重点词汇(中英文对照) 378
复习和练习 378
编程挑战 380
第7章 数组和List 385
7.1 值类型和引用类型 385
思考题 387
7.2 数组基础知识 387
7.2.1 数组元素和下标 389
7.2.2 数组元素默认值 390
7.2.3 使用数组元素 390
7.2.4 数组初始化 392
7.2.5 使用循环遍历数组 393
7.2.6 无效的下标 394
7.2.7 Length属性 394
教程7-1:使用数组保存随机生成
的彩票号码清单 395
7.2.8 注意大小差一错误 397
7.2.9 使用数组的foreach
循环 397
7.2.10 重新给数组引用
变量赋值 399
7.2.11 思考题 400
7.3 使用文件和数组 400
7.3.1 将数组的内容写入
文件 400
7.3.2 从文件中读取值并将
其存储到数组中 402
7.4 将数组作为实参传递给
方法 403
7.4.1 在数组形参中使用ref
和out关键字 406
7.4.2 思考题 410
7.5 实用数组算法 411
7.5.1 顺序搜索 411
7.5.2 复制数组 413
7.5.3 比较数组 414
7.5.4 计算数组中值的
总和 416
7.5.5 计算数组中值的
平均值 416
7.5.6 查找数组中的最高值
和最低值 417
7.5.7 部分填充的数组 419
教程7-2:处理数组数据 422
7.6 排序和搜索数组的高级
算法 427
7.6.1 选择排序算法 427
7.6.2 二分搜索算法 432
7.6.3 思考题 434
7.7 二维数组 435
7.7.1 声明一个二维数组 436
7.7.2 访问二维数组中的
元素 437
7.7.3 隐式声明二维数组的
大小和初始化 437
教程7-3:完成Seating Chart
应用程序 438
7.7.4 计算二维数组的所有
元素之和 442
7.7.5 计算二维数组各行
之和 442
7.7.6 计算二维数组各列
之和 443
7.7.7 思考题 444
7.8 交错数组 444
思考题 446
7.9 List集合 446
7.9.1 创建List对象 446
7.9.2 初始化List 447
7.9.3 将项目添加到List 447
7.9.4 Count属性 447
7.9.5 访问List中的项目 448
7.9.6 将List传递给方法 448
7.9.7 从List中删除项目 449
7.9.8 在List中插入项目 450
7.9.9 搜索List中的项目 451
教程7-4:完成Test Score List
应用程序 452
7.9.10 思考题 457
本章重点词汇(中英文对照) 458
复习和练习 458
编程挑战 460
第8章 数据处理详解 464
8.1 本章内容简介 464
8.2 字符串和字符处理 464
8.2.1 char数据类型 464
8.2.2 检索字符串中的单个
字符 465
8.2.3 字符测试和转换
方法 466
教程8-1:完成Password Validation
应用程序 470
8.2.4 字符大小写转换 474
8.2.5 搜索子字符串 475
8.2.6 修改字符串的方法 482
教程8-2:完成Telephone Format
应用程序 484
教程8-3:完成Telephone Unformat
应用程序 488
8.2.7 拆分字符串 492
教程8-4:完成CSV Reader应用
程序 495
8.2.8 思考题 499
8.3 结构 500
8.3.1 使用new运算符来
创建结构实例 503
8.3.2 访问结构的字段 503
8.3.3 将一个结构对象赋值
给另一个结构对象 504
8.3.4 将结构对象传递给
方法 504
8.3.5 比较结构对象 505
8.3.6 结构对象数组 506
8.3.7 在List中存储结构
对象 506
教程8-5:完成Phonebook应用
程序 511
8.3.8 思考题 517
8.4 枚举类型 517
8.4.1 使用枚举量或enum
变量的ToString方法 520
教程8-6:完成Color Spectrum
应用程序 520
8.4.2 获取枚举量或enum
变量的整数值 523
8.4.3 为枚举量指定整
数值 523
8.4.4 比较枚举量和enum
变量 523
8.4.5 使用enum变量遍历
数组的元素 524
8.4.6 思考题 525
8.5 ImageList控件 525
教程8-7:完成Random Card
应用程序 527
思考题 529
本章重点词汇(中英文对照) 530
复习和练习 530
编程挑战 533
第9章 类和多窗体项目 537
9.1 关于类 537
9.1.1 创建一个类 538
9.1.2 创建一个对象 540
9.1.3 编写类声明的位置 541
教程9-1:创建和使用Coin类 544
9.1.4 将对象传递给方法 548
9.1.5 思考题 549
9.2 属性 549
9.2.1 属性与公共字段 552
9.2.2 将属性作为实参传递 553
教程9-2:创建和使用CellPhone
类 553
9.2.3 只读属性 558
9.2.4 避免陈旧的数据 558
9.2.5 自动属性 559
9.2.6 只读自动属性 560
9.2.7 思考题 560
9.3 带形参的构造函数和重载 561
教程9-3:创建和使用
BankAccount类 561
9.3.1 重载的方法 566
9.3.2 重载的构造函数 567
9.3.3 默认构造函数 568
9.3.4 思考题 568
9.4 在数组和List中存储类
类型对象 568
9.4.1 类类型对象的数组 568
9.4.2 类类型对象的List 569
教程9-4:完成Cell Phone
Inventory应用程序 570
9.4.3 思考题 574
9.5 寻找问题中的类及其责任 574
9.5.1 编写问题领域的
说明 574
9.5.2 识别所有的名词 575
9.5.3 修改名词列表 576
9.5.4 确定类的责任 579
9.5.5 这仅仅是个开始 583
9.5.6 思考题 584
9.6 在项目中创建多个窗体 584
9.6.1 重命名Form1窗体 584
9.6.2 将新窗体添加到
项目 586
9.6.3 在窗体和窗体代码
之间切换 587
9.6.4 删除窗体 587
9.6.5 显示窗体 588
教程9-5:创建包含两个窗体的
应用程序 589
9.6.6 模式窗体和无模式
窗体 592
9.6.7 访问不同窗体上的
控件 593
教程9-6:访问不同窗体上的
控件 594
9.6.8 思考题 598
本章重点词汇(中英文对照) 598
复习和练习 599
编程挑战 602
第10章 继承和多态 605
10.1 继承 605
10.1.1 普遍性和特殊性 605
10.1.2 继承与Is-a关系 605
教程10-1:创建并测试
SavingsAccount 和
CDAccount类 616
10.1.3 基类和派生类构造
函数 622
10.1.4 继承中的构造函数
问题总结 624
10.1.5 思考题 624
10.2 多态 624
10.2.1 覆盖属性 628
10.2.2 基类引用变量只
知道基类成员 629
10.2.3 Is-a关系不能
反向工作 629
10.2.4 传递对象给基类
形参 629
教程10-2:完成Polymorphism
应用程序 630
10.2.5 思考题 635
10.3 抽象类 636
教程10-3:完成Computer Science
Student应用程序 637
思考题 642
本章重点词汇(中英文对照) 642
复习和练习 643
编程挑战 645
第11章 数据库 647
11.1 数据库管理系统简介 647
11.1.1 SQL Server Express
Edition 648
11.1.2 思考题 648
11.2 表、行和列 648
11.2.1 列数据类型 649
11.2.2 主键 650
11.2.3 标识列 650
11.2.4 允许Null值 650
11.2.5 思考题 651
11.3 在Visual Studio中创建一个
数据库 651
11.3.1 将应用程序连接到
数据库 651
教程11-1:启动Phone Book应用
程序并创建Phonelist.mdf
数据库 652
11.3.2 数据库文件的位置 659
11.3.3 思考题 659
11.4 DataGridView控件 660
教程11-2:完成Phone Book应用
程序 660
11.4.1 自动生成的代码 664
11.4.2 思考题 665
11.5 连接到现有数据库并使用
“详细信息”视图控件 666
教程11-3:创建Products应用
程序并使用“详细信息”
视图 667
11.5.1 运行时的数据库
副本 674
11.5.2 思考题 674
11.6 数据绑定控件详解 674
11.6.1 自定义DataGridView
控件 674
11.6.2 自定义“详细信息”
视图 676
11.6.3 将列绑定到列表框
控件 677
教程11-4:创建Product Lookup
应用程序 678
11.6.4 在多个窗体上有
数据绑定控件 680
教程11-5:创建Multiform Products
应用程序 680
11.6.5 思考题 686
11.7 使用SQL Select语句选择
数据 686
11.7.1 使用Where子句
指定搜索条件 687
11.7.2 使用Like运算符 688
11.7.3 使用And和Or 689
11.7.4 对Select查询的
结果进行排序 690
11.7.5 TableAdapter查询 690
11.7.6 添加新的
TableAdapter查询 693
教程11-6:创建Product Queries
应用程序 693
11.7.7 SQL数学函数 701
教程11-7:创建Product Queries
应用程序 701
11.7.8 查询形参 705
教程11-8:创建Product Search
应用程序 705
11.7.9 思考题 710
本章重点词汇(中英文对照) 710
复习和练习 711
编程挑战 714
附录A C#基本数据类型 716
附录B 用户界面控件详解 717
附录C ASCII/Unicode字符 737
附录D 思考题答案 738