第1章 程序设计基本知识 1
1.1 程序及程序设计语言 1
1.1.1 程序的一般结构 1
1.1.2 程序设计语言 4
1.1.3 C#语言与.NET框架 6
1.2 程序设计的一般步骤 8
1.2.1 Visual C#开发环境 8
1.2.2 创建控制台应用程序 11
1.2.3 创建Windows窗体应用程序 14
1.3 程序解析 17
程序1-1计算并联电阻 17
程序1-2求解二元一次方程组 19
程序1-33 个数排序 20
1.4 实验指导 23
实验1-1 C#程序的编辑、编译和运行 23
实验1-2简单控制台应用程序 25
实验1-3简单Windows窗体应用程序 27
实验1-4有特殊控件的Windows窗体应用程序 29
实验1-5程序的调试和运行 31
第2章 数据类型与运算符 36
2.1 .NET框架与C#的数据类型 36
2.1.1 .NET框架的数据类型 36
2.1.2 System命名空间及其基类型 38
2.1.3 C#的数据类型 39
2.2 内置类型及其常量和变量 40
2.2.1 数值型常量 40
2.2.2 数值类型及其变量 41
2.2.3 字符和字符串 43
2.2.4 数据类型转换 44
2.2.5 常用数学函数 47
2.3 运算符与表达式 48
2.3.1 算术运算及自增减运算 49
2.3.2 关系运算和逻辑运算 50
2.3.3 位运算 51
2.3.4 赋值运算和条件运算 52
2.3.5 运算顺序 53
2.4 程序解析 54
程序2-1按海伦公式求三角形面积 55
程序2-2提取E-mail地址中的用户名和域名 56
程序2-3输出一个5位整数的反序数 57
程序2-4判断一个4位整数是否回文数 59
程序2-5加法练习器 61
2.5 实验指导 64
实验2-1不同类型数据的输入输出 64
实验2-2表达式求值 66
第3章 算法及程序的控制结构 69
3.1 算法的概念与基本结构 69
3.1.1 算法的概念 69
3.1.2 算法的特征 70
3.1.3 算法的3种基本结构 71
3.2 程序中的选择结构和循环结构 75
3.2.1 if语句和switch语句 75
3.2.2 while语句和do-while语句 78
3.2.3 for语句 80
3.2.4 循环的嵌套 81
3.2.5 跳转语句 82
3.3 程序解析 83
程序3-1确定某年某月的天数 84
程序3-2输出100以内能同时被3和5整除的数 85
程序3-3找2~10000之内的所有完全数 86
程序3-4穷举法求组合数 88
程序3-5计算sinx函数的值 89
3.4 实验指导 91
实验3-1 3种基本结构 91
实验3-2迭代法 93
实验3-3穷举法 95
第4章 类和对象 97
4.1 类及类的实例 97
4.1.1 面向对象程序设计的概念 98
4.1.2 类的定义和使用 100
4.1.3 对象的创建和使用 101
4.2 类的成员 103
4.2.1 类中的方法 103
4.2.2 构造函数 105
4.2.3 内存回收与析构函数 107
4.2.4 类中的属性 109
4.2.5 this引用 111
4.2.6 类中的成员常量和只读字段 114
4.3 异常处理 116
4.3.1 处理异常情况的传统方式 117
4.3.2 try-catch语句 118
4.3.3 .NET的异常类 120
4.3.4 finally语句块 122
4.3.5 throw语句 125
4.4 程序解析 127
程序4-1时间类 128
程序4-2复数运算 130
程序4-3点类和矩形类 132
4.5 实验指导 134
实验4-1修改并运行程序 135
实验4-2人员类及其对象 137
实验4-3异常的捕获与处理 138
实验4-4包含异常处理的分数类 139
实验4-5椭圆类及其对象 141
第5章 数组、枚举与结构 142
5.1 数组 142
5.1.1 一维数组的定义和引用 142
5.1.2 多维数组的定义和使用 144
5.1.3 交错数组的定义和使用 148
5.1.4 使用foreach语句遍历数组 149
5.2 枚举与结构 151
5.2.1 枚举的定义和使用 151
5.2.2 结构的定义和使用 153
5.2.3 装箱与拆箱 155
5.3 程序解析 157
程序5-1顺序查找 157
程序5-2 LINQ查询 159
程序5-3输出杨辉三角 161
程序5-4筛法求素数 163
程序5-5 Josephus问题 166
程序5-6计算商品金额 167
5.4 实验指导 169
实验5-1数组的使用 169
实验5-2结构及结构数组的使用 171
实验5-3枚举型变量的使用 173
第6章 方法 175
6.1 方法的定义和调用 175
6.1.1 静态与非静态方法 175
6.1.2 方法的定义和调用方式 177
6.1.3 方法体及变量的作用域 179
6.2 参数传递方式 180
6.2.1 方法中的参数修饰符 181
6.2.2 可选参数和命名参数 183
6.2.3 参数传递时的数据类型转换 184
6.2.4 按值传递参数 186
6.2.5 按引用传递参数 189
6.2.6 数组参数的传递 191
6.3 方法重载与递归调用 193
6.3.1 方法重载 193
6.3.2 方法的递归调用 195
6.3.3 尾递归 198
6.4 程序解析 199
程序6-1比较两个分数的大小 200
程序6-2几个数及数组排序 202
程序6-3牛顿迭代法求方程的根 204
6.5 实验指导 207
实验6-1方法的定义和调用 207
实验6-2方法重载与递归调用 209
第7章 类的继承性与多态性 212
7.1 面向对象程序的特点 212
7.1.1 类的三大特性 212
7.1.2 C#及其他面向对象程序设计语言 213
7.1.3 类的继承性的概念 215
7.1.4 类的多态性的概念 216
7.2 类的继承性 217
7.2.1 派生类的定义和使用 217
7.2.2 派生类的构造函数及虚拟方法 221
7.2.3 Object类 223
7.2.4 .NET通用类型系统 226
7.2.5 object变量与var变量 227
7.3 类的多态性 228
7.3.1 虚方法实现类的多态性 229
7.3.2 抽象类及抽象方法实现类的多态性 231
7.3.3 接口的定义与继承 233
7.3.4 接口实现类的多态性 235
7.3.5 运算符重载 238
7.4 程序解析 240
程序7-1网络账号类 241
程序7-2圆类及其派生类 243
程序7-3抽象几何体类及其派生类 246
程序7-4加减乘除计算器 248
程序7-5复数的四则运算 252
7.5 实验指导 254
实验7-1类的继承性 254
实验7-2类的多态性 257
实验7-3接口和运算符重载 259
第8章 Windows应用程序 261
8.1 项目与解决方案 261
8.1.1 创建Windows应用程序项目 261
8.1.2 使用解决方案资源管理器 266
8.1.3 项目与解决方案 267
8.2 事件及事件处理方法 269
8.2.1 Windows应用程序的事件驱动机制 270
8.2.2 委托的概念及应用 271
8.2.3 事件的定义及工作方式 273
8.2.4 鼠标事件处理 274
8.2.5 键盘事件处理 277
8.3 窗体设计 280
8.3.1 窗体与控件 280
8.3.2 多窗体应用程序 282
8.3.3 使用画笔和画刷绘图 285
8.3.4 窗体上的菜单 287
8.3.5 消息对话框的使用 291
8.3.6 标准对话框的使用 292
8.4 程序解析 294
程序8-1委托的定义和使用 294
程序8-2计数器程序 296
程序8-3密码输入程序 299
程序8-4简单画图程序 302
程序8-5画函数图像程序 305
8.5 实验指导 307
实验8-1多窗体调用 307
实验8-2移动两个列表中的项 310
实验8-3计算器程序 313
实验8-4绘图程序 314
第9章 流与文件 317
9.1 流类与文件类 317
9.1.1 流及流类 317
9.1.2 System.IO命名空间中的类 319
9.1.3 流类的方法和属性 321
9.2 文件读写及其他操作 323
9.2.1 读写文本文件 324
9.2.2 使用FileStream对象读写文件 325
9.2.3 读写二进制文件 327
9.2.4 对象序列化 329
9.2.5 文件目录操作 330
9.2.6 文件拷贝、移动和删除等操作 332
9.3 程序解析 335
程序9-1读写文件及文件属性 335
程序9-2读写文本文件 337
程序9-3二进制方式读写职工信息文件 340
9.4 实验指导 345
实验9-1通过内存流读取图片 345
实验9-2通过文件流写入文本文件 346
实验9-3读写二进制文件 347
附录1 ASCII码表 349
附录2数据库连接与查询 351
附录2.1 数据库系统 351
附录2.2 关系数据库 352
附录2.3 ADO.NET数据库接口 356
参考文献 363