第1章 初识C#语言 1
1.1 C#概述 1
1.1.1 C#发展历程 1
1.1.2 C#语言特点 2
1.1.3 C#语言编程环境 2
1.2 .NET Framework简介 3
1.2.1 什么是.NET Framework 3
1.2.2 C#与.NET Framework的关系 4
1.3 安装与卸载Visual Studio 2010 4
1.3.1 系统必备 4
1.3.2 安装Visual Studio 2010 4
1.3.3 卸载Visual Studio 2010 6
1.4 熟悉Visual Studio 2010开发环境 7
1.4.1 创建项目 8
1.4.2 窗体设计器 8
1.4.3 代码设计器 9
1.4.4 菜单栏 9
1.4.5 工具栏 10
1.4.6 工具箱面板 10
1.4.7 属性面板 11
1.5 Visual Studio 2010帮助系统 11
1.5.1 安装Help Library管理器 12
1.5.2 使用Help Library 15
1.6 综合实例——创建一个Windows应用程序 16
知识点提炼 17
习题 17
实验:安装Visual Studio 2010开发环境 17
实验目的 17
实验内容 18
实验步骤 18
第1章 初识C#语言 1
1.1 C#概述 1
1.1.1 C#发展历程 1
1.1.2 C#语言特点 2
1.1.3 C#语言编程环境 2
1.2 .NET Framework简介 3
1.2.1 什么是.NET Framework 3
1.2.2 C#与.NET Framework的关系 4
1.3 安装与卸载Visual Studio 2010 4
1.3.1 系统必备 4
1.3.2 安装Visual Studio 2010 4
1.3.3 卸载Visual Studio 2010 6
1.4 熟悉Visual Studio 2010开发环境 7
1.4.1 创建项目 8
1.4.2 窗体设计器 8
1.4.3 代码设计器 9
1.4.4 菜单栏 9
1.4.5 工具栏 10
1.4.6 工具箱面板 10
1.4.7 属性面板 11
1.5 Visual Studio 2010帮助系统 11
1.5.1 安装Help Library管理器 12
1.5.2 使用Help Library 15
1.6 综合实例——创建一个Windows应用程序 16
知识点提炼 17
习题 17
实验:安装Visual Studio 2010开发环境 17
实验目的 17
实验内容 18
实验步骤 18
第2章 C#程序的组成元素 19
2.1 编写第一个C#程序 19
2.2 C#程序的基本组成 20
2.2.1 标识符 20
2.2.2 关键字 21
2.2.3 命名空间 21
2.2.4 类的介绍 23
2.2.5 Main方法 23
2.2.6 C#语句 24
2.2.7 代码注释 24
2.3 综合实例——在控制台中输出笑脸图案 25
知识点提炼 25
习题 25
实验:声明指定命名空间并定义类 26
实验目的 26
实验内容 26
实验步骤 26
第3章 变量和常量 28
3.1 数据类型 28
3.1.1 值类型 28
3.1.2 引用类型 32
3.1.3 类型转换 33
3.2 常量和变量 36
3.2.1 常量的声明和使用 36
3.2.2 变量的声明和使用 37
3.3 综合实例——使用值类型和引用类型输出不同的字段 39
知识点提炼 40
习题 40
实验:判断当前系统日期是星期几 40
实验目的 40
实验内容 41
实验步骤 41
第4章 表达式及运算符 42
4.1 表达式 42
4.2 运算符 43
4.2.1 算术运算符 43
4.2.2 赋值运算符 45
4.2.3 关系运算符 46
4.2.4 逻辑运算符 48
4.2.5 移位运算符 50
4.2.6 其他特殊运算符 51
4.3 运算符优先级 53
4.4 综合实例——在控制台中实现模拟登录 54
知识点提炼 54
习题 55
实验:通过条件运算符判断奇偶数 55
实验目的 55
实验内容 55
实验步骤 55
第5章 流程控制语句 56
5.1 选择语句 56
5.1.1 if条件选择语句 56
5.1.2 switch多分支选择语句 61
5.2 循环语句 63
5.2.1 while循环语句 63
5.2.2 do…while循环语句 64
5.2.3 for循环语句 66
5.2.4 foreach循环语句 68
5.3 跳转语句 69
5.3.1 break语句 69
5.3.2 continue语句 69
5.3.3 return语句 70
5.4 综合实例——哥德巴赫猜想算法的实现 71
知识点提炼 72
习题 73
实验:计算前N个自然数之和 73
实验目的 73
实验内容 73
实验步骤 73
第6章 字符与字符串 74
6.1 字符 74
6.1.1 字符的使用 74
6.1.2 转义字符的使用 76
6.2 字符串 78
6.2.1 字符串概述 78
6.2.2 比较字符串 78
6.2.3 格式化字符串 80
6.2.4 截取字符串 82
6.2.5 分割字符串 82
6.2.6 插入和填充字符串 83
6.2.7 复制字符串 84
6.2.8 替换字符串 86
6.2.9 删除字符串 86
6.2.10 可变字符串 87
6.3 正则表达式 90
6.4 综合实例——根据汉字获得其区位码 92
知识点提炼 93
习题 93
实验:将字符串中的每个字符颠倒输出 93
实验目的 93
实验内容 94
实验步骤 94
第7章 数组和集合 95
7.1 一维数组 95
7.1.1 一维数组的概述 95
7.1.2 一维数组的声明与使用 96
7.2 二维数组 98
7.2.1 二维数组的概述 98
7.2.2 二维数组的声明与使用 98
7.3 数组操作 100
7.3.1 输入与输出数组 100
7.3.2 数组的排序 102
7.3.3 添加和删除数组元素 103
7.4 ArrayList集合类 106
7.4.1 ArrayList类概述 106
7.4.2 遍历ArrayList集合 107
7.4.3 添加ArrayList元素 107
7.4.4 删除ArrayList元素 108
7.5 综合实例——设计一个简单客车售票程序 109
知识点提炼 110
习题 111
实验:使用数组解决约瑟夫环问题 111
实验目的 111
实验内容 111
实验步骤 111
第8章 面向对象程序设计基础 113
8.1 类与对象 113
8.1.1 面向对象概述 113
8.1.2 类的概念 114
8.1.3 类的声明 114
8.1.4 构造函数和析构函数 115
8.1.5 对象的声明和实例化 116
8.1.6 类与对象的关系 117
8.2 方法 118
8.2.1 方法的声明 118
8.2.2 方法的分类 119
8.2.3 方法的重载 120
8.3 字段、属性和索引器 121
8.3.1 字段 121
8.3.2 属性 122
8.3.3 索引器 124
8.4 类的面向对象特性 125
8.4.1 类的封装 125
8.4.2 类的继承 127
8.4.3 类的多态 128
8.5 结构 129
8.5.1 结构概述 129
8.5.2 结构的使用 130
8.6 综合实例——定义商品库存结构 131
知识点提炼 133
习题 133
实验:通过重载方法计算图形周长 133
实验目的 133
实验内容 134
实验步骤 134
第9章 异常处理与调试 135
9.1 异常处理概述 135
9.2 异常处理语句 136
9.2.1 try…catch语句 136
9.2.2 throw语句 137
9.2.3 try…catch…finally语句 139
9.3 程序调试概述 140
9.4 常用的程序调试操作 140
9.4.1 断点操作 140
9.4.2 开始、中断和停止程序的执行 141
9.4.3 单步执行 143
9.4.4 运行到指定位置 143
9.5 综合实例——捕获数组越界异常 143
知识点提炼 144
习题 145
实验:自定义异常输出信息 145
实验目的 145
实验内容 145
实验步骤 145
第10章 Windows窗体及控件 147
10.1 Windows窗体介绍 147
10.1.1 设置窗体属性 147
10.1.2 调用窗体方法 151
10.1.3 触发窗体事件 152
10.2 Windows窗体的调用 154
10.2.1 调用模式窗体 154
10.2.2 调用非模式窗体 154
10.3 基本Windows控件 155
10.3.1 Label控件 155
10.3.2 TextBox控件 155
10.3.3 RichTextBox控件 157
10.3.4 Button控件 158
10.3.5 GroupBox控件 159
10.3.6 TabControl控件 160
10.4 菜单、工具栏与状态栏 161
10.4.1 MenuStrip控件 161
10.4.2 ToolStrip控件 162
10.4.3 StatusStrip控件 163
10.5 高级控件与组件 165
10.5.1 列表选择控件 165
10.5.2 视图控件 167
10.5.3 ImageList组件 171
10.5.4 Timer组件 173
10.6 综合实例——进销存管理系统登录窗口 175
知识点提炼 176
习题 176
实验:在窗体中的滚动字幕 176
实验目的 176
实验内容 177
实验步骤 177
第11章 ADO.NET操作数据库 178
11.1 ADO.NET概述 178
11.2 Connection数据连接对象 179
11.2.1 熟悉Connection对象 179
11.2.2 数据库连接字符串 180
11.2.3 应用SqlConnection对象连接数据库 181
11.3 Command命令执行对象 181
11.3.1 熟悉Command对象 181
11.3.2 应用Command对象添加数据 182
11.3.3 应用Command对象调用存储过程 183
11.4 DataReader数据读取对象 185
11.4.1 理解DataReader对象 185
11.4.2 应用DataReader对象读取数据 186
11.5 DataSet和DataAdapter数据操作对象 187
11.5.1 熟悉DataSet对象和DataAdapter对象 187
11.5.2 应用DataAdapter对象填充DataSet数据集 189
11.5.3 应用DataAdapter对象更新数据库中的数据 190
11.5.4 区别DataSet对象与DataReader对象 192
11.6 数据操作控件 192
11.6.1 应用DataGridView控件 192
11.6.2 应用BindingSource组件 194
11.7 综合实例——商品月销售统计表 197
知识点提炼 200
习题 200
实验:使用二进制存取用户头像 200
实验目的 200
实验内容 201
实验步骤 201
第12章 面向对象高级技术 202
12.1 接口 202
12.1.1 接口的概念及声明 202
12.1.2 接口的实现与继承 203
12.1.3 显式接口成员实现 206
12.2 抽象类与抽象方法 207
12.2.1 抽象类概述及声明 207
12.2.2 抽象方法概述及声明 208
12.2.3 抽象类与抽象方法的使用 208
12.2.4 抽象类与接口 210
12.3 密封类与密封方法 210
12.3.1 密封类概述及声明 210
12.3.2 密封方法概述及声明 210
12.3.3 密封类与密封方法的使用 211
12.4 迭代器 212
12.4.1 迭代器概述 212
12.4.2 迭代器的使用 213
12.5 分部类 213
12.5.1 分部类概述 214
12.5.2 分部类的使用 214
12.6 泛型概述 215
12.7 泛型的使用 216
12.7.1 类型参数T 216
12.7.2 泛型接口 216
12.7.3 泛型方法 217
12.8 综合实例——利用接口实现选择不同语言 218
知识点提炼 219
习题 219
实验:通过重写抽象方法实现多态性 220
实验目的 220
实验内容 220
实验步骤 220
第13章 委托与事件 222
13.1 委托 222
13.1.1 委托的概述 222
13.1.2 委托的应用 223
13.2 匿名方法 223
13.2.1 匿名方法概述 223
13.2.2 匿名方法的应用 224
13.3 事件 225
13.3.1 委托的发布和订阅 225
13.3.2 事件的发布和订阅 227
13.3.3 EventHandler类 227
13.4 Windows事件概述 229
13.5 综合实例——运用委托实现两个数的四则运算 230
知识点提炼 232
习题 232
实验:向指定事件中添加自定义内容 232
实验目的 232
实验内容 232
实验步骤 232
第14章 文件与流 234
14.1 System.IO命名空间 234
14.2 文件基本操作 235
14.2.1 文件操作类 235
14.2.2 创建文件 236
14.2.3 打开文件 237
14.2.4 判断文件是否存在 240
14.2.5 复制或移动文件 241
14.2.6 删除文件 242
14.3 文件夹基本操作 242
14.3.1 文件夹操作类 243
14.3.2 创建文件夹 243
14.3.3 判断文件夹是否存在 244
14.3.4 移动文件夹 244
14.3.5 删除文件夹 245
14.3.6 遍历文件夹 245
14.4 数据流基础 250
14.4.1 流操作类介绍 250
14.4.2 文件流 250
14.4.3 缓存流 253
14.5 流读写文件 255
14.5.1 文本文件的读写 255
14.5.2 二进制文件的读写 257
14.6 综合实例——复制文件时显示进度条 259
知识点提炼 261
习题 261
实验:比较两个文件的内容是否相同 261
实验目的 261
实验内容 261
实验步骤 262
第15章 网络与多线程 263
15.1 网络编程基础 263
15.1.1 System.Net命名空间 263
15.1.2 System.Net.Sockets命名空间 269
15.2 线程简介 273
15.2.1 单线程简介 274
15.2.2 多线程简介 274
15.3 线程的基本操作 275
15.3.1 Thread类 275
15.3.2 创建线程 276
15.3.3 线程的挂起与恢复 277
15.3.4 线程休眠 278
15.3.5 终止线程 279
15.3.6 线程的优先级 280
15.3.7 线程同步 281
15.4 综合实例——设计点对点聊天程序 285
知识点提炼 286
习题 286
实验:使用多线程扫描局域网IP地址 287
实验目的 287
实验内容 287
实验步骤 287
第16章 GDI+绘图 289
16.1 GDI+绘图基础 289
16.1.1 GDI+概述 289
16.1.2 创建Graphics对象 290
16.1.3 创建Pen对象 290
16.1.4 创建Brush对象 291
16.2 基本图形绘制 293
16.2.1 GDI+中的直线和矩形 294
16.2.2 GDI+中的椭圆、弧和扇形 296
16.2.3 GDI+中的多边形 298
16.3 综合实例——绘制图形验证码 299
知识点提炼 300
习题 301
实验:使用双缓冲技术绘图 301
实验目的 301
实验内容 301
实验步骤 301
第17章 C#语言新特性 303
17.1 简述C#的新技术 303
17.2 列举C#语言的新特性 304
17.2.1 隐式类型var 304
17.2.2 对象初始化器 305
17.2.3 集合初始化器 306
17.2.4 扩展方法 307
17.2.5 匿名类型对象 308
17.2.6 Lambda 表达式 309
17.2.7 自动实现属性 311
17.2.8 LINQ技术 312
17.3 综合实例——使用LINQ过滤文章中包含特殊词语的句子 316
知识点提炼 317
习题 317
实验:使用LINQ生成随机数 318
实验目的 318
实验内容 318
实验步骤 318
第18章 综合案例——进销存管理系统 319
18.1 需求分析 319
18.2 总体设计 320
18.2.1 系统目标 320
18.2.2 构建开发环境 320
18.2.3 系统功能结构 320
18.2.4 业务流程图 321
18.3 数据库设计 322
18.3.1 数据库概要说明 322
18.3.2 数据库E-R图 323
18.3.3 数据表结构 325
18.4 公共类设计 327
18.4.1 DataBase公共类 327
18.4.2 BaseInfo公共类 330
18.5 系统主要模块开发 334
18.5.1 系统主窗体设计 334
18.5.2 库存商品管理模块设计 335
18.5.3 进货管理模块概述 340
18.5.4 商品销售排行模块概述 346
18.6 系统打包部署 348
第19章 课程设计——雷速下载专家 352
19.1 课程设计目的 352
19.2 功能描述 352
19.3 总体设计 353
19.3.1 构建开发环境 353
19.3.2 软件功能结构 353
19.3.3 业务流程图 354
19.4 公共类设计 354
19.4.1 Locations类设计 354
19.4.2 DownLoad类设计 356
19.4.3 xuchuan类设计 357
19.5 实现过程 358
19.5.1 雷速主窗体设计 358
19.5.2 添加下载任务模块 364
19.6 调试运行 367
19.6.1 无法连接到下载服务器 367
19.6.2 无法使用多线程下载资源 367
19.7 课程设计总结 367
19.7.1 技术总结 368
19.7.2 经验总结 368
第20章 课程设计——快递单打印系统 369
20.1 课程设计目的 369
20.2 功能描述 370
20.3 总体设计 370
20.3.1 构建开发环境 370
20.3.2 软件功能结构 370
20.3.3 业务流程图 371
20.4 数据库设计 372
20.4.1 实体E-R图 372
20.4.2 数据表设计 373
20.4.3 存储过程设计 374
20.5 技术准备 376
20.6 实现过程 378
20.6.1 快递单设置 378
20.6.2 快递单打印 388
20.6.3 快递单查询 392
20.7 调试运行 396
20.7.1 空引用异常调试 396
20.7.2 数组越界异常调试 397
20.8 课程设计总结 399
20.8.1 技术总结 399
20.8.2 经验总结 400