第一部分 开发技术 2
第0章 如何学好C 2
0.1 程序员的成长之路 2
0.2 如何学好C 2
第1章 搭建C#程序开发环境 4
1.1 C#语言简介 4
1.1.1 什么是C#语言 4
1.1.2 C#的应用领域 4
1.1.3 C#开发的成功案例 5
1.1.4 认识.NET Framework 6
1.1.5 C#与.NET的关系 7
1.2 安装与卸载Visual Studio 2010 7
1.2.1 安装Visual Studio 2010系统的必备条件 7
1.2.2 安装Visual Studio 2010 8
1.2.3 卸载Visual Studio 2010 11
1.3 熟悉Visual Studio 2010开发环境 13
1.3.1 创建项目 13
1.3.2 菜单栏 15
1.3.3 工具栏 17
1.3.4 “工具箱”面板 17
1.3.5 “属性”面板 18
1.3.6 “错误列表”面板 18
1.3.7 “输出”面板 19
1.4 Visual Studio 2010帮助系统 21
1.4.1 安装Help Library管理器 22
1.4.2 使用Help Library 25
1.5 术语 26
1.6 小结 27
1.7 练习 27
第2章 C#程序基本结构 28
2.1 编写第一个C#程序 28
2.2 初识C#程序结构 30
2.2.1 命名空间 30
2.2.2 类 32
2.2.3 Main方法 33
2.2.4 标识符及关键字 33
2.2.5 C#语句 34
2.3 添加代码注释 34
2.4 术语 37
2.5 小结 37
2.6 练习 37
第3章 变量和常量 38
3.1 变量和常量的数据类型 38
3.1.1 值类型 38
3.1.2 引用类型 40
3.1.3 值类型与引用类型的区别 41
3.1.4 枚举类型 43
3.1.5 类型转换 45
3.2 声明和使用变量 48
3.2.1 变量的基本概念 48
3.2.2 声明变量 48
3.2.3 变量的作用域 49
3.2.4 变量赋值 50
3.3 声明和使用常量 51
3.4 术语 52
3.5 小结 53
3.6 练习 53
第4章 表达式及运算符 54
4.1 表达式 54
4.2 运算符 55
4.2.1 算术运算符 55
4.2.2 赋值运算符 57
4.2.3 关系运算符 58
4.2.4 逻辑运算符 61
4.2.5 移位运算符 63
4.2.6 其他特殊运算符 64
4.3 运算符优先级 66
4.4 术语 67
4.5 小结 67
4.6 练习 67
第5章 流程控制语句 69
5.1 选择语句 69
5.1.1 if语句 69
5.1.2 if...else语句 70
5.1.3 使用switch语句实现多分支选择 72
5.2 迭代语句 75
5.2.1 while语句 75
5.2.2 do…while语句 76
5.2.3 for语句 77
5.2.4 foreach语句 79
5.3 跳转语句 80
5.3.1 break语句 81
5.3.2 continue语句 82
5.3.3 goto语句 83
5.3.4 return语句 84
5.4 术语 85
5.5 小结 86
5.6 练习 86
第6章 字符与字符串 87
6.1 字符类Char的使用 87
6.1.1 Char类概述 87
6.1.2 Char类的使用 87
6.1.3 转义字符 89
6.2 字符串类String的使用 91
6.2.1 String类概述 91
6.2.2 String类的使用 91
6.2.3 比较字符串 92
6.2.4 格式化字符串 95
6.2.5 截取字符串 96
6.2.6 分割字符串 97
6.2.7 删除字符串 98
6.2.8 替换字符串 99
6.3 可变字符串类StringBuilder类的使用 101
6.3.1 StringBuilder类的定义 101
6.3.2 StringBuilder类的使用 101
6.3.3 StringBuilder类与String类的区别 102
6.4 术语 104
6.5 小结 105
6.6 练习 105
第7章 数组与集合 107
7.1 数组概述 107
7.2 一维数组的声明和使用 107
7.2.1 一维数组的声明 108
7.2.2 一维数组的使用 108
7.3 二维数组的声明和使用 110
7.3.1 二维数组的声明 110
7.3.2 二维数组的使用 110
7.3.3 动态二维数组的声明及使用 111
7.4 数组的基本操作 114
7.4.1 如何遍历数组 114
7.4.2 添加/删除数组元素 115
7.4.3 对数组进行排序 116
7.5 ArrayList类 121
7.5.1 ArrayList类 121
7.5.2 ArrayList元素的添加 122
7.5.3 ArrayList元素的删除 124
7.5.4 ArrayList的遍历 126
7.6 术语 127
7.7 小结 128
7.8 练习 128
第8章 面向对象编程基础 129
8.1 类与对象 129
8.1.1 面向对象概述 129
8.1.2 类的概念 130
8.1.3 类的声明 130
8.1.4 构造函数和析构函数 131
8.1.5 对象的声明和实例化 133
8.1.6 类与对象的关系 134
8.2 方法 135
8.2.1 方法的声明 135
8.2.2 方法的分类 137
8.2.3 方法的重载 138
8.3 字段、属性和索引器 140
8.3.1 使用字段存储数据 140
8.3.2 使用属性存储数据 141
8.3.3 使用索引器存储数据 145
8.4 类的面向对象特性 147
8.4.1 类的封装 147
8.4.2 类的继承 149
8.4.3 类的多态 150
8.5 结构 153
8.5.1 结构概述 153
8.5.2 结构的使用 154
8.6 术语 155
8.7 小结 156
8.8 练习 157
第9章 异常处理与调试 158
9.1 异常处理概述 158
9.2 异常处理语句 159
9.2.1 try…catch语句 159
9.2.2 throw语句 161
9.2.3 try…catch…finally语句 162
9.3 程序调试概述 164
9.4 常用的程序调试操作 164
9.4.1 断点操作 164
9.4.2 开始、中断和停止程序的执行 165
9.4.3 单步执行 167
9.4.4 运行到指定位置 167
9.5 术语 168
9.6 小结 168
9.7 练习 168
第10章 Windows窗体介绍 170
10.1 Form窗体 170
10.1.1 Form窗体的概念 170
10.1.2 添加和删除窗体 170
10.1.3 多窗体的使用 172
10.1.4 窗体的属性 173
10.1.5 窗体的显示与隐藏 175
10.1.6 窗体的事件 175
10.2 MDI窗体 177
10.2.1 MDI窗体的概念 177
10.2.2 如何设置MDI窗体 178
10.2.3 排列MDI子窗体 178
10.3 继承窗体 181
10.3.1 继承窗体的概念 181
10.3.2 创建继承窗体 182
10.3.3 在继承窗体中修改继承的控件属性 183
10.4 术语 184
10.5 小结 184
10.6 练习 185
第11章 Windows基础控件 187
11.1 控件概述 187
11.2 控件的相关操作 187
11.2.1 添加控件 188
11.2.2 对齐控件 188
11.2.3 锁定控件 188
11.2.4 删除控件 188
11.3 文本类控件 189
11.3.1 标签控件(Label控件) 189
11.3.2 按钮控件(Button控件) 189
11.3.3 文本框控件(TextBox控件) 192
11.3.4 有格式文本控件(RichTextBox控件) 193
11.4 选择类控件 196
11.4.1 下拉组合框控件(ComboBox控件) 197
11.4.2 复选框控件(CheckBox控件) 199
11.4.3 单选按钮控件(RadioButton控件) 200
11.4.4 数值选择控件(NumericUpDown控件) 202
11.4.5 列表控件(ListBox控件) 204
11.5 分组类控件 207
11.5.1 容器控件(Panel控件) 207
11.5.2 分组框控件(GroupBox控件) 208
11.5.3 选项卡控件(TabControl控件) 209
11.6 术语 213
11.7 小结 214
11.8 练习 214
第12章 Windows高级控件 216
12.1 ImageList控件 216
12.1.1 在ImageList控件中添加图像 216
12.1.2 在ImageList控件中移除图像 217
12.2 ListView控件 219
12.2.1 在ListView控件中添加移除项 220
12.2.2 选择ListView控件中的项 222
12.2.3 为ListView控件中的项添加图标 222
12.2.4 在ListView控件中启用平铺视图 223
12.3 TreeView控件 225
12.3.1 添加和删除树节点 225
12.3.2 获取TreeView控件中选中的节点 228
12.3.3 为TreeView控件中的节点设置图标 228
12.4 DateTimePicker控件 231
12.4.1 使用DateTimePicker控件显示时间 231
12.4.2 使用DateTimePicker控件以自定义格式显示日期 232
12.4.3 返回DateTimePicker控件中选择的日期 233
12.5 术语 234
12.6 小结 234
12.7 练习 235
第13章 组件与用户控件 236
13.1 Windows组件 236
13.1.1 使用ErrorProvider组件验证文本框输入 236
13.1.2 使用HelpProvider组件调用帮助文件 238
13.1.3 使用Timer组件设置时间间隔 239
13.2 自定义控件 241
13.2.1 制作复合控件 241
13.2.2 制作扩展控件 242
13.2.3 制作自定义控件 244
13.3 术语 248
13.4 小结 248
13.5 练习 248
第14章 菜单栏、工具栏和状态栏 250
14.1 菜单栏 250
14.1.1 菜单栏的用途 250
14.1.2 菜单栏的设计 251
14.2 工具栏 253
14.2.1 工具栏的用途 253
14.2.2 工具栏的设计 253
14.3 状态栏 256
14.3.1 状态栏的用途 256
14.3.2 状态栏的设计 257
14.4 术语 259
14.5 小结 259
14.6 练习 259
第15章 对话框 261
15.1 “消息”对话框 261
15.1.1 简介“消息”对话框 261
15.1.2 应用“消息”对话框 261
15.2 “关于”对话框 264
15.2.1 简介“关于”对话框 264
15.2.2 应用“关于”对话框 264
15.3 “打开”对话框 266
15.3.1 简介“打开”对话框 266
15.3.2 应用“打开”对话框 267
15.4 “另存为”对话框 268
15.4.1 简介“另存为”对话框 268
15.4.2 应用“另存为”对话框 268
15.5 “浏览文件夹”对话框 270
15.5.1 简介“浏览文件夹”对话框 270
15.5.2 应用“浏览文件夹”对话框 270
15.6 “颜色”对话框 271
15.6.1 简介“颜色”对话框 271
15.6.2 应用“颜色”对话框 272
15.7 “字体”对话框 273
15.7.1 简介“字体”对话框 273
15.7.2 应用“字体”对话框 273
15.8 术语 275
15.9 小结 275
15.10 练习 275
第16章 ADO.NET基础 277
16.1 ADO.NET简介 277
16.1.1 ADO.NET的发展 277
16.1.2 ADO.NET体系结构 278
16.2 连接数据库:Connection对象 278
16.2.1 Connection对象概述 278
16.2.2 连接数据库 279
16.2.3 关闭连接 280
16.3 执行SQL语句:Command对象 282
16.3.1 Command对象概述 282
16.3.2 设置数据源类型 283
16.3.3 执行SQL语句 284
16.4 读取数据:DataReader对象 286
16.4.1 DataReader对象概述 286
16.4.2 判断查询结果中是否有值 287
16.4.3 读取数据 288
16.5 数据适配器:DataAdapter对象 289
16.5.1 DataAdapter对象概述 289
16.5.2 填充DataSet数据集 289
16.5.3 更新数据源 290
16.6 数据集:DataSet对象 292
16.6.1 DataSet对象概述 292
16.6.2 使用DataSet对象合并数据 292
16.7 术语 294
16.8 小结 294
16.9 练习 294
第17章 ADO.NET操作数据库 296
17.1 数据库开发基本操作 296
17.1.1 打开和关闭数据库连接 296
17.1.2 向数据库中添加数据 298
17.1.3 修改数据库中数据 299
17.1.4 删除数据库中数据 302
17.1.5 查询数据库中数据 307
17.1.6 使用事务 309
17.2 DataGridView控件绑定数据源 312
17.2.1 DataGridView控件概述 312
17.2.2 在DataGridView控件中显示数据 312
17.2.3 获取DataGridView控件中的当前单元格 313
17.3 术语 314
17.4 小结 315
17.5 练习 315
第18章 高级面向对象技术 317
18.1 接口 317
18.1.1 接口的概念及声明 317
18.1.2 接口的实现与继承 318
18.1.3 显式接口成员实现 321
18.2 抽象类与抽象方法 323
18.2.1 抽象类概述及声明 323
18.2.2 抽象方法概述及声明 324
18.2.3 抽象类与抽象方法的使用 324
18.2.4 抽象类与接口 325
18.3 密封类与密封方法 326
18.3.1 密封类概述及声明 326
18.3.2 密封方法概述及声明 327
18.3.3 密封类与密封方法的使用 327
18.4 迭代器 329
18.4.1 迭代器概述 329
18.4.2 迭代器的使用 329
18.5 分部类 331
18.5.1 分部类概述 331
18.5.2 分部类的使用 331
18.6 泛型概述 333
18.7 泛型的使用 334
18.7.1 类型参数T 334
18.7.2 泛型接口 334
18.7.3 泛型方法 335
18.8 术语 337
18.9 小结 338
18.10 练习 338
第19章 LINQ技术 339
19.1 LINQ基础 339
19.1.1 使用var创建隐型局部变量 339
19.1.2 Lambda表达式的使用 340
19.1.3 LINQ查询表达式 341
19.2 LINQ操作SQL Server数据库 343
19.2.1 使用LINQ查询SQL Server数据库 343
19.2.2 使用LINQ管理SQL Server数据库 348
19.3 LINQ操作其他数据 355
19.3.1 使用LINQ操作数组和集合 355
19.3.2 使用LINQ操作DataSet数据集 356
19.3.3 使用LINQ操作XML 357
19.4 术语 362
19.5 小结 362
19.6 练习 362
第20章 文件和文件夹的操作 364
20.1 System.IO命名空间 364
20.2 文件基本操作 365
20.2.1 File类和FileInfo类 365
20.2.2 判断文件是否存在 368
20.2.3 创建文件 368
20.2.4 打开文件 369
20.2.5 复制文件 372
20.2.6 移动文件 373
20.2.7 删除文件 374
20.2.8 获取文件基本信息 374
20.3 文件夹基本操作 376
20.3.1 Directory类和DirectoryInfo类 376
20.3.2 判断文件夹是否存在 378
20.3.3 创建文件夹 379
20.3.4 移动文件夹 379
20.3.5 删除文件夹 380
20.3.6 遍历文件夹 381
20.4 术语 384
20.5 小结 384
20.6 练习 384
第21章 流的操作 386
21.1 数据流基础 386
21.1.1 流操作类介绍 386
21.1.2 文件流 386
21.1.3 缓存流 389
21.2 流读写文件 391
21.2.1 文本文件的写入与读取 391
21.2.2 二进制文件的写入与读取 394
21.3 术语 396
21.4 小结 396
21.5 练习 396
第22章 GDI+图形图像 398
22.1 GDI+绘图基础 398
22.1.1 GDI+概述 398
22.1.2 创建Graphics对象 398
22.1.3 创建Pen对象 399
22.1.4 创建Brush对象 399
22.2 基本图形绘制 402
22.2.1 GDI+中的直线和矩形 402
22.2.2 GDI+中的椭圆、弧和扇形 405
22.2.3 GDI+中的多边形 407
22.3 术语 409
22.4 小结 409
22.5 练习 409
第23章 水晶报表 411
23.1 水晶报表简介 411
23.2 .NET平台下的CryStal报表 411
23.2.1 CryStal Reports.Net简介 412
23.2.2 Crystal报表设计器的环境介绍 412
23.2.3 Crystal报表区域介绍 412
23.3 Crystal报表数据源和数据访问模式 413
23.3.1 Visual Studio 2010中Crystal报表数据源列举 413
23.3.2 报表的数据访问模式 413
23.4 水晶报表的基本操作 413
23.4.1 创建水晶报表并连接数据源 413
23.4.2 水晶报表中数据的分组与排序 416
23.4.3 水晶报表中数据的筛选 418
23.4.4 在水晶报表中使用图表 421
23.5 术语 424
23.6 小结 424
23.7 练习 424
第24章 Windows打印对象 426
24.1 打印设置控件 426
24.1.1 PageSetupDialog控件 426
24.1.2 PrintDialog控件 428
24.1.3 PrintDocument控件 430
24.2 打印预览控件 432
24.2.1 PrintPreviewControl控件 432
24.2.2 PrintPreviewDialog控件 434
24.3 术语 436
24.4 小结 436
24.5 练习 437
第25章 网络通信 438
25.1 网络通信类 438
25.1.1 System.Net命名空间 438
25.1.2 System.Net.Sockets命名空间 444
25.1.3 System.Net.Mail命名空间 449
25.2 POP3通信协议 452
25.3 术语 453
25.4 小结 454
25.5 练习 454
第26章 注册表 455
26.1 注册表基础 455
26.1.1 Windows注册表概述 455
26.1.2 Registry和RegistryKey类 456
26.2 在C#中操作注册表 457
26.2.1 读取注册表中信息 457
26.2.2 创建和修改注册表信息 459
26.2.3 删除注册表中信息 461
26.3 术语 464
26.4 小结 465
26.5 练习 465
第27章 线程技术 466
27.1 线程简介 466
27.1.1 单线程简介 466
27.1.2 多线程简介 467
27.2 线程的基本操作 467
27.2.1 Thread类 467
27.2.2 创建线程 469
27.2.3 线程的挂起与恢复 470
27.2.4 线程休眠 471
27.2.5 终止线程 471
27.2.6 线程的优先级 473
27.2.7 线程同步 474
27.3 术语 479
27.4 小结 479
27.5 练习 479
第28章 应用程序打包部署 481
28.1 Windows Installer介绍 481
28.2 创建Windows安装项目 482
28.3 制作Windows安装程序 483
28.3.1 添加项目输出文件 483
28.3.2 添加内容文件 483
28.3.3 创建桌面快捷方式 484
28.3.4 添加注册表项 485
28.3.5 生成Windows安装程序 487
28.4 部署Windows应用程序 487
28.5 术语 489
28.6 小结 489
28.7 练习 489
第二部分 项目实战 492
第29章 企业人事管理系统 492
29.1 系统分析 492
29.1.1 需求分析 492
29.1.2 可行性分析 492
29.1.3 编写项目计划书 493
29.2 系统设计 494
29.2.1 系统目标 495
29.2.2 系统功能结构 495
29.2.3 系统业务流程图 495
29.2.4 系统编码规范 495
29.3 系统运行环境 499
29.4 数据库与数据表设计 499
29.4.1 数据库分析 499
29.4.2 数据表结构 499
29.4.3 数据表逻辑关系 501
29.5 公共类设计 502
29.5.1 MyMeans公共类 502
29.5.2 MyModule公共类 505
29.6 人事档案管理模块设计 515
29.6.1 设计人事档案管理窗体 515
29.6.2 添加/修改人事档案信息 517
29.6.3 删除人事档案信息 519
29.6.4 单条件查询人事档案信息 519
29.6.5 逐条查看人事档案信息 521
29.6.6 将人事档案信息导出为Word文档 523
29.7 人事资料查询模块设计 527
29.7.1 设计人事资料查询窗体 527
29.7.2 多条件查询人事资料 528
29.8 通讯录模块设计 529
29.8.1 设计通讯录窗体 529
29.8.2 添加/修改通讯录信息 530
29.8.3 删除通讯录信息 532
29.8.4 查询通讯录信息 532
29.9 用户设置模块设计 533
29.9.1 设计用户设置窗体 533
29.9.2 添加/修改用户信息 533
29.9.3 删除用户基本信息 535
29.9.4 设置用户操作权限 536
29.10 小结 536
第30章 企业QQ系统 537
30.1 需求分析 537
30.2 系统设计 537
30.2.1 系统目标 537
30.2.2 系统功能结构 538
30.2.3 系统业务流程图 538
30.2.4 系统编码规范 539
30.3 系统运行环境 539
30.4 数据库与数据表设计 539
30.4.1 数据库分析 539
30.4.2 数据表概念设计 540
30.5 公共类库设计 540
30.5.1 UDPSocket控件 540
30.5.2 Publec_Class类 543
30.5.3 ClassForms类 544
30.5.4 ClassMsg类 545
30.5.5 ClassOptionData类 546
30.5.6 ClassSerializers类 547
30.5.7 ClassUserInfo类 548
30.5.8 ClassUsers类 548
30.5.9 cVideo类 549
30.6 客户端注册模块设计 549
30.6.1 设计客户端注册窗体 550
30.6.2 将注册信息发送到服务器端 550
30.6.3 将注册信息写入到INI文件中 551
30.7 客户端登录模块设计 552
30.7.1 设计客户端登录窗体 552
30.7.2 判断注册的INI文件是否存在 552
30.7.3 登录功能的实现 553
30.7.4 将登录信息发送到服务器端 553
30.8 客户端QQ模块设计 554
30.8.1 设计客户端QQ窗体 554
30.8.2 加载注册用户列表 555
30.9 客户端消息发送模块设计 560
30.9.1 设计客户端消息发送窗体 560
30.9.2 消息发送功能的实现 561
30.9.3 在线视频功能的实现 562
30.10 服务器端控制台模块设计 566
30.10.1 设计服务器端控制台窗体 566
30.10.2 开始服务功能的实现 566
30.10.3 显示用户信息及在线状态 567
30.11 小结 569
第31章 餐饮管理系统 570
31.1 需求分析 570
31.2 系统设计 570
31.2.1 系统目标 570
31.2.2 系统功能结构 571
31.2.3 系统业务流程图 571
31.2.4 系统编码规范 572
31.2.5 系统预览 572
31.3 系统运行环境 573
31.4 数据库与数据表设计 573
31.4.1 数据库分析 573
31.4.2 数据库概念设计 573
31.4.3 数据库逻辑设计 575
31.5 公共类设计 577
31.6 登录模块设计 577
31.6.1 设计登录窗体 577
31.6.2 登录系统 578
31.7 开台模块设计 579
31.7.1 设计开台窗体 580
31.7.2 显示桌台信息 580
31.7.3 系统开台功能的实现 581
31.8 点菜模块设计 581
31.8.1 设计点菜窗体 582
31.8.2 显示所有菜系 582
31.8.3 显示指定菜系的详细信息 584
31.8.4 自动计算金额 584
31.8.5 保存顾客的菜单 585
31.9 结账模块设计 587
31.9.1 设计结账窗体 587
31.9.2 显示消费明细 587
31.9.3 系统结账功能的实现 589
31.10 数据备份模块设计 590
31.10.1 设计数据备份窗体 590
31.10.2 数据备份功能的实现 590
31.11 系统恢复模块设计 591
31.11.1 设计系统恢复窗体 591
31.11.2 系统恢复功能的实现 592
31.12 小结 593
第32章 ERP管理系统 594
32.1 需求分析 594
32.2 系统设计 594
32.2.1 系统目标 595
32.2.2 系统功能结构 595
32.2.3 系统业务流程图 595
32.2.4 系统编码规范 595
32.2.5 系统预览 598
32.3 系统运行环境 600
32.4 数据库与数据表设计 600
32.4.1 数据库分析 601
32.4.2 数据库概念设计 601
32.4.3 数据库逻辑设计 602
32.4.4 数据表逻辑关系 605
32.5 公共类设计 606
32.5.1 DataBase类 607
32.5.2 CommonUse类 609
32.6 物料清单模块设计 614
32.6.1 设计物料清单(BOM)窗体 614
32.6.2 加载物料清单的母件和子件信息 614
32.6.3 添加物料清单信息 615
32.6.4 保存物料清单信息 616
32.7 销售收款单模块设计 619
32.7.1 设计销售收款单窗体 619
32.7.2 浏览已审核的销售出库单信息 620
32.7.3 选择已审核的销售出库单 621
32.8 生产单模块设计 622
32.8.1 设计生产单窗体 622
32.8.2 浏览已审核的主生产计划信息 623
32.8.3 审核的生产单信息 623
32.8.4 弃审的生产单信息 624
32.9 产品销售毛利汇总模块设计 626
32.9.1 设计产品销售毛利汇总窗体 626
32.9.2 加载产品名称信息 626
32.9.3 查询产品销售毛利信息 627
32.10 小结 628
附录A Visual Studio 2010的菜单命令 629
附录B 常用网上资源 632