第1篇 新手入门 2
第1章 初探C#及其开发环境 2
1.1了解.NET 3
1.1.1.NET概述 3
1.1.2.NET程序编译原理 3
1.1.3.NET项目成功案例 4
1.2 C#语言及其特点 5
1.2.1 C#与.NET的关系 5
1.2.2 C#语言的特点 5
1.2.3 C#语言的发展趋势 5
1.3安装与卸载Visual Studio 2010 5
1.3.1安装Visual Studio 2010系统必备条件 6
1.3.2安装Visual Studio 2010 6
1.3.3卸载Visual Studio 2010 8
1.4熟悉Visual Studio 2010开发环境 8
1.4.1创建控制台应用程序 8
1.4.2创建Windows窗体应用程序 9
1.4.3菜单栏 10
1.4.4工具栏介绍 10
1.4.5“工具箱”面板 11
1.4.6“属性”面板 11
1.4.7解决方案资源管理器 11
1.4.8“错误列表”面板 12
1.4.9“输出”面板 12
1.5 C#编程常用帮助 12
1.5.1安装Help Library管理器 13
1.5.2使用Help Library管理器 13
1.5.3常用的C#编程帮助网站 14
1.6实战 15
1.6.1如何开始运行程序 15
1.6.2如何中断当前程序的运行 15
1.7小结 16
1.8学习成果检验 16
第2章 认识C#代码结构 17
2.1定制自己的开发环境 18
2.1.1设置代码字体和颜色 18
2.1.2设置显示代码行号 18
2.1.3灵活使用自动隐藏功能 19
2.2编写第一个C#程序 19
2.3分析C#程序结构 20
2.3.1命名空间介绍 20
2.3.2类 21
2.3.3 Main方法 21
2.3.4标识符 22
2.3.5关键字 22
2.3.6编写C#语句 22
2.3.7代码注释 23
2.4实战 24
2.4.1使用“记事本”编写C#程序并编译 24
2.4.2如何快速找到程序出错位置 24
2.4.3为程序设置版本和帮助信息 25
2.4.4为项目添加已有窗体 26
2.4.5动起来的Label控件 26
2.5小结 27
2.6学习成果检验 27
第3章 C#程序设计基础 28
3.1数据类型 29
3.1.1值类型的使用 29
3.1.2引用类型的使用 31
3.2声明并使用变量 32
3.2.1变量的声明及初始化 32
3.2.2变量的作用域 33
3.3声明并使用常量 33
3.4数据类型转换 34
3.4.1隐式类型转换 34
3.4.2显式类型转换 35
3.4.3装箱和拆箱 36
3.5运算符的使用 37
3.5.1算术运算符 38
3.5.2赋值运算符 39
3.5.3关系运算符 40
3.5.4逻辑运算符 42
3.5.5移位运算符 44
3.5.6其他特殊运算符 45
3.5.7运算符的优先级 46
3.6实战 47
3.6.1制作用户登录程序 47
3.6.2判断一个数是否是素数 48
3.6.3使用算术运算符开发简单计算器 49
3.6.4使用“^”运算符对数字进行加密 50
3.6.5巧用位移运算符获取汉字编码值 51
3.6.6使用条件运算符判断指定年份是不是闰年 51
3.7小结 52
3.8学习成果检验 52
第4章 选择结构控制 53
4.1 C#程序设计算法 54
4.2 if语句的使用 56
4.2.1使用if…else语句实现条件选择 56
4.2.2 if语句的嵌套使用 58
4.3 switch语句的使用 60
4.3.1使用switch语句实现多分支选择 60
4.3.2 if…else语句与switch语句 61
4.4实战 63
4.4.1判断用户登录身份 63
4.4.2递归算法的经典面试题 64
4.4.3使用switch语句实现数字转换大写 65
4.4.4使用流程控制语句报销业务花销 66
4.4.5小明去学校和医院分别要走哪条路 66
4.5小结 67
4.6学习成果检验 67
第5章 循环结构控制 68
5.1 while和do…while语句的使用 69
5.1.1使用while语句实现代码循环 69
5.1.2使用do…while语句实现至少执行一次循环 70
5.1.3 while和do…while语句的区别 71
5.2 for和foreach语句的使用 72
5.2.1使用for语句实现代码循环 72
5.2.2使用foreach语句遍历数据集合 73
5.3循环结构中的跳转语句 74
5.3.1使用break语句跳出循环 74
5.3.2使用continue语句继续程序的执行 76
5.3.3使用goto语句实现程序跳转 76
5.3.4使用return语句使程序返回 78
5.4实战 79
5.4.1鸡尾酒排序算法的实现 79
5.4.2哥德巴赫猜想算法的实现 80
5.4.3使用switch语句更改窗体颜色 82
5.4.4使用goto语句在数组中搜索指定图书 83
5.4.5制作一个数字猜猜看小游戏 83
5.5小结 85
5.6学习成果检验 85
第6章 字符及字符串 86
6.1字符操作 87
6.1.1 Char类概述 87
6.1.2使用Char类中的方法对字符进行操作 87
6.1.3认识并使用转义字符 88
6.2字符串的声明及初始化 89
6.2.1 String类概述 89
6.2.2声明字符串 90
6.2.3初始化字符串 90
6.3字符串操作 90
6.3.1比较字符串 90
6.3.2格式化字符串 92
6.3.3截取字符串 94
6.3.4分割字符串 94
6.3.5插入和填充字符串 95
6.3.6删除字符串 97
6.3.7复制字符串 97
6.3.8替换字符串 99
6.4可变字符串类StringBuilder的使用 100
6.4.1 StringBuilder类概述 100
6.4.2创建StringBuilder对象 100
6.4.3 StringBuilder类的使用 101
6.4.4 StringBuilder类与String类的区别 102
6.5实战 102
6.5.1长字符串分段显示 102
6.5.2字符串加密与解密 103
6.5.3根据汉字获得其区位码 104
6.5.4字母与ASCII码的转换 105
6.5.5将汉字转换为拼音 106
6.5.6批量替换某一类字符串 106
6.5.7开发一个进制转换器 106
6.6小结 109
6.7学习成果检验 109
第7章 数组、集合与哈希表 110
7.1数组概述 111
7.2一维数组的声明和使用 111
7.2.1一维数组的声明 111
7.2.2一维数组的使用 112
7.3二维数组的声明和使用 113
7.3.1二维数组的声明 113
7.3.2二维数组的使用 113
7.3.3动态数组的声明及使用 114
7.4数组的基本操作 115
7.4.1遍历数组中的元素 115
7.4.2添加/删除数组元素 115
7.4.3使用排序算法对数组进行排序 116
7.4.4数组的合并与拆分 118
7.5 ArrayList集合的使用 120
7.5.1 ArrayList集合概述 120
7.5.2添加ArrayList集合元素 121
7.5.3删除ArrayList集合元素 123
7.5.4遍历ArrayList集合 124
7.5.5查找ArrayList集合元素 125
7.6 Hashtable(哈希表)的使用 126
7.6.1 Hashtable概述 126
7.6.2添加Hashtable元素 126
7.6.3删除Hashtable元素 127
7.6.4遍历Hashtable元素 128
7.6.5查找Hashtable元素 128
7.7实战 129
7.7.1使用数组解决约瑟夫环问题 129
7.7.2希尔排序算法的实现 130
7.7.3使用哈希表查找XML文件 131
7.7.4操作便捷的简单电话簿 132
7.7.5向班级集合中添加学生信息 133
7.7.6设计一个简单客车售票记录程序 134
7.8小结 135
7.9学习成果检验 135
第8章 面向对象程序设计 136
8.1面向对象编程概述 137
8.2属性的定义及使用 137
8.2.1属性概述 138
8.2.2属性的定义 138
8.2.3属性的使用 139
8.3方法的声明及使用 140
8.3.1方法概述 140
8.3.2方法修饰符 140
8.3.3方法的声明 141
8.3.4方法的分类 142
8.3.5重载方法的实现 142
8.4结构的定义及使用 143
8.4.1结构概述 143
8.4.2结构的定义 144
8.4.3结构的使用 144
8.5类与对象详解 145
8.5.1类的概念 145
8.5.2类的声明 146
8.5.3构造函数和析构函数 146
8.5.4对象的声明和实例化 147
8.5.5类与对象的关系 149
8.6面向对象特性之封装 149
8.6.1封装概述 149
8.6.2封装的实现 150
8.7面向对象特性之继承 151
8.7.1继承概述 151
8.7.2继承的实现 151
8.7.3单继承的使用 153
8.7.4多重继承的使用 154
8.8面向对象特性之多态 156
8.8.1多态概述 156
8.8.2多态的实现 157
8.9实战 159
8.9.1使用面向对象思想实现简单计算器 159
8.9.2使用面向对象思想实现在字符串中查找数字 160
8.9.3通过类的多态性确定人类的说话行为 161
8.9.4存储不同类型的数据列表 162
8.9.5去掉数组中的重复数字 162
8.10小结 163
8.11学习成果检验 163
第9章 综合实验(一)——365桌面提醒器 164
9.1 365桌面提醒器概述 165
9.1.1提醒设置流程 165
9.1.2计划录入流程 165
9.1.3计划查询流程 165
9.1.4计划统计流程 166
9.1.5定时关机流程 166
9.1.6程序预览 167
9.2数据库设计 168
9.3关键技术 168
9.3.1通过修改注册表实现自动运行程序 168
9.3.2使用多线程处理弹出“提示气泡”任务 170
9.3.3使用扩展方法为系统类型添加新功能 171
9.3.4应用初始化器创建集合或对象 171
9.3.5使用ADO.NET对象提交数据 172
9.4公共类设计 172
9.4.1封装数据值和显示值的类 172
9.4.2绑定和显示数据的类 173
9.5提醒设置 174
9.5.1提醒设置功能概述 174
9.5.2“提醒设置”界面设计 174
9.5.3打开“提醒设置”界面 174
9.5.4保存提示设置 175
9.6计划录入 176
9.6.1计划录入功能概述 176
9.6.2“计划录入”界面设计 176
9.6.3打开“计划录入”界面 177
9.6.4添加计划任务 177
9.6.5保存计划任务 178
9.6.6删除计划任务 179
9.7计划查询 180
9.7.1计划查询功能概述 180
9.7.2“计划查询”界面设计 180
9.7.3打开“计划查询”界面 180
9.7.4查询计划信息 181
9.7.5处理计划 182
9.8计划统计 183
9.8.1计划统计功能概述 183
9.8.2“计划统计”界面设计 183
9.8.3统计计划信息 184
9.9小结 184
9.10学习成果检验 184
第2篇 进阶提高 186
第10章 Windows窗体设计 186
10.1 Form窗体基础 187
10.1.1 Form窗体概述 187
10.1.2添加和删除Form窗体 187
10.1.3添加多窗体 188
10.1.4设置窗体的属性 189
10.1.5窗体的显示与隐藏 191
10.1.6触发窗体事件 191
10.2 MDI窗体设计 192
10.2.1 MDI窗体概述 192
10.2.2设置MDI窗体 193
10.2.3排列MDI子窗体 193
10.3继承窗体设计 195
10.3.1继承窗体概述 195
10.3.2创建继承窗体 195
10.3.3在继承窗体中修改继承的控件属性 197
10.4实战 198
10.4.1设计一个系统登录窗体 198
10.4.2制作启动欢迎界面 198
10.4.3从上次关闭位置启动窗体 199
10.4.4自定义“最大化”、“最小化”和“关闭”按钮 200
10.4.5制作鼠标穿透窗体 202
10.4.6窗体换肤程序 202
10.5小结 204
10.6学习成果检验 204
第11章 Windows应用程序常用控件 205
11.1控件概述 206
11.1.1控件的分类及作用 206
11.1.2控件命名规范 207
11.2控件的相关操作 207
11.2.1添加控件 207
11.2.2对齐控件 208
11.2.3锁定控件 208
11.2.4删除控件 208
11.3文本类控件 208
11.3.1标签控件 209
11.3.2按钮控件 209
11.3.3文本框控件 210
11.3.4有格式文本控件 212
11.4选择类控件 214
11.4.1下拉组合框控件 215
11.4.2复选框控件 216
11.4.3单选按钮控件 217
11.4.4数值选择控件 218
11.4.5列表控件 219
11.5分组控件 221
11.5.1容器控件 222
11.5.2分组框控件 222
11.5.3选项卡控件 223
11.6实战 225
11.6.1判断注册用户操作权限 225
11.6.2使用ListBox实现点菜功能 228
11.6.3只允许输入数字的TextBox控件 230
11.6.4实现类似Word的项目编号功能 230
11.6.5在RichTextBox控件中实现关键字描红 231
11.6.6对ListBox控件中的数据进行排序 231
11.7小结 232
11.8学习成果检验 232
第12章 Windows应用程序高级控件 233
12.1存储图像控件(ImageList控件) 234
12.1.1在ImageList控件中添加图像 234
12.1.2在ImageList控件中移除图像 234
12.2列表视图控件(ListView控件) 235
12.2.1在ListView控件中添加/移除项 236
12.2.2选择ListView控件中的项 237
12.2.3为ListView控件中的项添加图标 238
12.2.4在ListView控件中启用平铺视图 238
12.2.5为ListView控件中的项分组 239
12.3树控件(TreeView控件) 241
12.3.1添加和删除树节点 241
12.3.2获取树控件中选中的节点 242
12.3.3为树控件中的节点设置图标 243
12.4日期控件(DateTimePicker控件) 244
12.4.1使用DateTimePicker控件显示时间 244
12.4.2使用DateTimePicker控件以自定义格式显示日期 244
12.4.3返回DateTimePicker控件中选择的日期 245
12.5月历控件(MonthCalendar控件) 246
12.5.1更改MonthCalendar控件的外观 246
12.5.2在MonthCalendar控件中显示多个月份 247
12.5.3在MonthCalendar控件中以粗体显示特定日期 247
12.5.4在MonthCalendar控件中选择日期范围 248
12.6其他高级控件 249
12.6.1使用ErrorProvider控件验证文本框输入 249
12.6.2使用HelpProvider控件调用帮助文件 250
12.6.3使用Timer控件设置时间间隔 251
12.6.4使用ProgressBar控件显示程序运行进度条 252
12.7实战 252
12.7.1设计一个电子万年历 252
12.7.2制作一个闹钟计时器 254
12.7.3在模式窗口中显示进度条 257
12.7.4使用TreeView控件遍历磁盘目录 259
12.7.5用树型列表动态显示菜单 260
12.8小结 261
12.9学习成果检验 261
第13章 对话框、菜单、工具栏及状态栏控件 262
13.1对话框控件 263
13.1.1对话框概述 263
13.1.2打开对话框控件 263
13.1.3另存为对话框控件 263
13.1.4浏览文件夹对话框控件 264
13.1.5颜色对话框控件 265
13.1.6字体对话框控件 265
13.2菜单、工具栏和状态栏控件 266
13.2.1菜单控件(MenuStrip控件) 266
13.2.2工具栏控件(ToolStrip控件) 266
13.2.3状态栏控件(StatusStrip控件) 267
13.3实战 268
13.3.1制作带历史信息的菜单 268
13.3.2制作仿XP系统的任务栏菜单 269
13.3.3具有提示功能的工具栏 271
13.3.4级联菜单的动态合并 271
13.3.5在状态栏中显示当前系统操作员 272
13.4小结 272
13.5学习成果检验 272
第14章 综合实验(二)——QQ自动登录器模块 273
14.1 QQ自动登录器概述 274
14.1.1 QQ自动登录器流程 274
14.1.2主窗体流程 274
14.1.3添加QQ账号流程 274
14.1.4路径设置流程 275
14.1.5程序预览 275
14.2数据库设计 275
14.3关键技术 276
14.3.1 QQ自动登录器的实现原理 276
14.3.2使用MD5加密算法加密QQ密码 276
14.3.3使用XML文件存储QQ账号信息 277
14.3.4使用XmlElement类序列化QQ账号属性 278
14.3.5通过XML文件读取和写入QQ账号信息 279
14.3.6使用注册表存储信息 281
14.4主窗体 281
14.4.1主窗体功能概述 281
14.4.2主窗体界面设计 281
14.4.3初始化QQ列表 282
14.4.4启动多个QQ账号 283
14.4.5启动QQ程序 284
14.4.6增加QQ账号信息 285
14.4.7修改QQ账号信息 285
14.4.8删除QQ账号 286
14.4.9设置QQ账号为隐身 286
14.5添加QQ账号 287
14.5.1添加QQ账号功能概述 287
14.5.2添加QQ账号界面设计 287
14.5.3添加QQ账号 287
14.6路径设置 289
14.6.1路径设置功能概述 289
14.6.2路径设置界面设计 289
14.6.3显示原有路径设置 289
14.6.4选择QQ程序路径 290
14.6.5保存路径设置 290
14.7小结 291
14.8学习成果检验 291
第3篇 中级开发 294
第15章 数据库编程基础 294
15.1数据库基础 295
15.1.1数据库简介 295
15.1.2安装SQL Server 2000数据库 295
15.1.3安装SQL Server 2005数据库 297
15.1.4安装SQL Server 2008数据库 299
15.1.5数据库的创建及删除 304
15.1.6数据表的创建及删除 304
15.2 SQL语言基础 306
15.2.1 SQL语言简介 306
15.2.2简单SQL语句的应用 306
15.3实战 311
15.3.1使用INSERT SELECT语句批量插入数据 311
15.3.2从一个表中向另一个表中复制行 311
15.3.3统计某个值出现的次数 312
15.3.4对多列的求和运算 313
15.3.5通过CASE语句生成静态交叉表 314
15.4小结 314
15.5学习成果检验 314
第16章 ADO.NET数据访问技术 315
16.1 ADO.NET概述 316
16.2使用Connection对象连接数据库 316
16.2.1 Connection对象概述 316
16.2.2连接数据库 316
16.2.3关闭连接 317
16.3使用Command对象执行SQL语句 319
16.3.1 Command对象概述 319
16.3.2设置数据源类型 319
16.3.3执行SQL语句 320
16.4使用DataReader对象读取数据 322
16.4.1 DataReader对象概述 322
16.4.2判断查询结果中是否有值 323
16.4.3读取数据 324
16.5数据适配器:DataAdapter对象 324
16.5.1 DataAdapter对象概述 324
16.5.2填充DataSet数据集 325
16.5.3更新数据源 325
16.6数据集:DataSet对象 327
16.6.1 DataSet对象概述 327
16.6.2合并DataSet内容 327
16.6.3复制DataSet内容 328
16.7实战 329
16.7.1使用二进制存储用户头像 329
16.7.2使用存储过程实现员工自动编号 332
16.7.3使用交叉表统计商品销售信息 333
16.7.4向SQL Server数据库中批量写入海量数据 336
16.7.5使用断开式连接批量更新数据库中的数据 337
16.7.6综合查询职工详细信息 337
16.8小结 340
16.9学习成果检验 340
第17章 DataGridView数据控件 341
17.1 DataGridView控件概述 342
17.2在DataGridView控件中显示数据 342
17.3获取DataGridView控件中的当前单元格 343
17.4在DataGridView控件中修改数据 344
17.5选中DataGridView控件中的行时显示不同颜色 345
17.6禁止在DataGridView控件中添加和删除行 347
17.7禁用DataGridView控件的自动排序功能 347
17.8合并DataGridView控件中的单元格 348
17.9实战 350
17.9.1将DataGridView中的数据导出到Word 350
17.9.2将DataGridView中的数据导出到Excel 351
17.9.3在DataGridView控件中验证数据输入 352
17.9.4在DataGridView控件中添加“合计”和“平均值” 353
17.9.5通过DataGridView分页查看用户信息 354
17.10小结 356
17.11学习成果检验 356
第18章 面向对象编程高级技术 357
18.1接口的声明及实现 358
18.1.1接口概述 358
18.1.2接口的声明 358
18.1.3接口的实现与继承 359
18.1.4显式接口成员实现 360
18.2抽象类的声明及使用 362
18.2.1抽象类概述 362
18.2.2抽象类的声明 362
18.2.3抽象方法的声明 362
18.2.4抽象类的使用 363
18.2.5抽象类与接口 364
18.3密封类的声明及使用 364
18.3.1密封类概述 364
18.3.2密封类的声明 365
18.3.3密封方法的声明 365
18.3.4密封类的使用 366
18.4实战 367
18.4.1使用多重继承实现教师和学生信息的输出 367
18.4.2对用户信息进行密封 369
18.4.3自定义抽象类计算圆形的面积 371
18.4.4利用接口实现选择不同的语言 371
18.4.5使用接口作为方法参数进行编程 372
18.4.6通过重写虚方法实现加法运算 373
18.5小结 373
18.6学习成果检验 373
第19章 枚举类型与泛型 374
19.1枚举类型 375
19.1.1枚举类型概述 375
19.1.2枚举类型的声明 375
19.1.3枚举类型基类——Enum类 376
19.1.4枚举类型的使用 377
19.2泛型及其使用 378
19.2.1泛型概述 378
19.2.2类型参数T 378
19.2.3泛型接口的声明及使用 379
19.2.4泛型方法的声明及使用 379
19.3实战 380
19.3.1使用枚举判断用户操作权限 380
19.3.2使用泛型去掉数组中的重复数字 381
19.3.3使用迭代器显示公交车站点 383
19.3.4使用分部类实现多种计算方法 383
19.3.5通过继承泛型类实现输出学生信息 384
19.4小结 385
19.5学习成果检验 385
第20章 LINQ技术的使用 386
20.1 LINQ基础 387
20.1.1 LINQ概述 387
20.1.2使用var创建隐型局部变量 387
20.1.3 Lambda表达式的使用 388
20.1.4 LINQ查询表达式 389
20.2 LINQ操作SQL Server数据库 390
20.2.1使用LINQ查询SQL Server数据库 390
20.2.2使用LINQ管理SQL Server数据库 393
20.3 LINQ操作其他数据 398
20.3.1使用LINQ操作数组和集合 398
20.3.2使用LINQ操作DataSet数据集 399
20.3.3使用LINQ操作XML 400
20.4实战 403
20.4.1使用LINQ技术获取文件详细信息 403
20.4.2使用LINQ技术分类查询公司员工薪水 405
20.4.3使用存储过程查询单表数据 406
20.4.4使用LINQ技术防止SQL注入式攻击 407
20.4.5使用LINQ技术实现数据分页 407
20.4.6从头开始提取满足指定条件的记录 409
20.4.7读取XML文件并更新到数据库 409
20.5小结 411
20.6学习成果检验 411
第21章 综合实验(三)——SQL数据表提取器模块 412
21.1 SQL数据表提取器概述 413
21.1.1附加本地数据库流程 413
21.1.2提取表结构流程 413
21.1.3导出数据流程 413
21.1.4程序预览 414
21.2关键技术 415
21.2.1添加COM组件 415
21.2.2附加SQL Server数据库 415
21.2.3分离SQL Server数据库 416
21.2.4设置SQL Server数据库模式 416
21.3主窗体 418
21.3.1主窗体功能概述 418
21.3.2主窗体界面设计 418
21.3.3检索网络中的服务器 419
21.3.4获取数据库的名称 419
21.3.5选择提取信息 421
21.4附加本地数据库 422
21.4.1附加本地数据库功能概述 422
21.4.2附加本地数据库界面设计 422
21.4.3浏览附加文件路径 423
21.4.4实现数据库附加 423
21.5提取表结构 424
21.5.1提取表结构功能概述 424
21.5.2“提取表结构”界面设计 424
21.5.3获取表结构信息 425
21.5.4导出到Excel 425
21.5.5导出到Word 426
21.6导出数据 427
21.6.1导出数据功能概述 427
21.6.2“导出数据”界面设计 428
21.6.3获取数据信息 428
21.6.4数据的导出 429
21.7小结 431
21.8学习成果检验 431
第4篇 高级应用 434
第22章 文件及I/O 434
22.1文件操作基础 435
22.1.1 File类和FileInfo类介绍 435
22.1.2 Directory类和DirectoryInfo类介绍 438
22.2文件基本操作 440
22.2.1判断文件是否存在 440
22.2.2创建文件 441
22.2.3复制文件 442
22.2.4移动文件 442
22.2.5删除文件 443
22.2.6获取文件基本信息 443
22.3文件夹基本操作 444
22.3.1判断文件夹是否存在 444
22.3.2创建文件夹 445
22.3.3移动文件夹 445
22.3.4删除文件夹 446
22.3.5遍历文件夹 446
22.4 I/O(输入/输出) 448
22.4.1流概述 448
22.4.2文件I/O流介绍 449
22.4.3使用I/O流操作文本文件 450
22.4.4使用I/O流操作二进制文件 452
22.5实战 454
22.5.1文件批量重命名的实现 454
22.5.2制作一个分割与合并文件工具 457
22.5.3根据日期动态建立文件 460
22.5.4复制文件时显示复制进度 460
22.5.5伪装文件夹 462
22.5.6对指定文件夹中的文件进行分类存储 463
22.6小结 464
22.7学习成果检验 464
第23章 GDI+绘图及打印技术 465
23.1 GDI+绘图基础 466
23.1.1 GDI+概述 466
23.1.2创建Graphics对象 466
23.1.3创建Pen对象 467
23.1.4创建 Brush对象 467
23.2基本图形绘制 469
23.2.1绘制直线和矩形 469
23.2.2绘制椭圆、圆弧和扇形 470
23.2.3绘制多边形 472
23.2.4绘制文本 472
23.2.5绘制图形 473
23.3 Windows打印组件的使用 473
23.3.1使用PageSetupDialog组件设置打印文档信息 473
23.3.2使用PrintDialog组件显示打印对话框 474
23.3.3使用PrintDocument组件设置打印文档 475
23.3.4使用PrintPreviewControl组件设置打印预览文档 476
23.3.5使用PrintPreviewDialog组件显示打印预览 477
23.4实战 477
23.4.1应用GDI+技术实现图像的水印效果 477
23.4.2应用GDI+技术实现批量图像格式转换 480
23.4.3抓取网站整页面 484
23.4.4打造自己的开心农场 487
23.4.5使用打印组件打印商品入库单信息 489
23.5小结 491
23.6学习成果检验 491
第24章 网络编程 492
24.1计算机网络基础 493
24.1.1局域网与因特网介绍 493
24.1.2网络协议介绍 493
24.1.3端口及套接字介绍 495
24.2网络编程基础 496
24.2.1 System.Net命名空间及相关类的使用 496
24.2.2 System.Net.Sockets命名空间及相关类的使用 501
24.2.3 System.Net.Mail命名空间及相关类的使用 506
24.3实战 509
24.3.1创建Web页面浏览器 509
24.3.2设计点对点聊天程序 510
24.3.3电子邮件的发送与接收 512
24.3.4获取网络信息及流量 516
24.3.5远程关闭与重启计算机 517
24.4小结 518
24.5学习成果检验 518
第25章 线程的使用 519
25.1线程概述 520
25.1.1线程的定义与分类 520
25.1.2多线程的使用 521
25.1.3线程的生命周期 521
25.2 C#中的线程类Thread 522
25.3线程调度 524
25.3.1创建线程 524
25.3.2线程的挂起与恢复 525
25.3.3线程休眠 526
25.3.4终止线程 526
25.3.5线程的优先级 527
25.4线程同步 529
25.4.1线程同步机制 529
25.4.2使用lock关键字实现线程同步 529
25.4.3使用Monitor驱动对象实现线程同步 530
25.4.4使用Mutex类实现线程同步 531
25.5实战 532
25.5.1使用多线程制作端口扫描工具 532
25.5.2使用线程控制向窗体中拖放图片并显示 535
25.5.3使用线程扫描局域网IP地址 538
25.5.4使用线程制作小游戏 539
25.5.5有进度条的文件异步复制功能 540
25.6小结 542
25.7学习成果检验 542
第26章 异常处理与程序调试 543
26.1异常处理与程序调试概述 544
26.2异常处理语句的使用 544
26.2.1使用throw语句抛出异常 544
26.2.2使用try…catch语句捕捉异常 545
26.2.3使用try…catch…finally语句捕捉异常 546
26.3常用的程序调试操作 547
26.3.1断点操作 547
26.3.2开始、中断和停止程序的执行 548
26.3.3单步执行 549
26.3.4运行到指定位置 550
26.4实战 550
26.4.1使用异常处理语句捕获数据库连接异常 550
26.4.2通过插入断点查看局部变量的值 551
26.5小结 552
26.6学习成果检验 552
第27章 Windows应用程序打包部署 553
27.1 Windows Installer介绍 554
27.2创建Windows安装项目 554
27.3制作Windows安装程序 555
27.3.1添加项目输出 555
27.3.2添加内容文件 555
27.3.3创建桌面快捷方式 556
27.3.4添加注册表项 556
27.3.5生成Windows安装程序 557
27.4部署Windows应用程序 558
27.5实战 559
27.5.1为Windows安装程序添加程序组 559
27.5.2使用“发布”部署Windows应用程序 560
27.6小结 561
27.7学习成果检验 561
第28章 综合实验(四)——FTP文件管理模块 562
28.1 FTP文件管理模块概述 563
28.1.1 FTP登录流程 563
28.1.2本机文件操作流程 563
28.1.3服务器文件上传/下载流程 563
28.1.4程序预览 564
28.2关键技术 564
28.2.1架设FTP服务器 564
28.2.2登录FTP服务器 566
28.2.3获取服务器上文件的大小 567
28.2.4向FTP服务器发送命令 568
28.2.5调用系统API 569
28.3主窗体设计 569
28.3.1主窗体功能概述 569
28.3.2主窗体界面设计 570
28.4 FTP登录 570
28.4.1 FTP登录功能概述 570
28.4.2登录FTP服务器 571
28.5本机文件操作 573
28.5.1本机文件操作功能概述 573
28.5.2获取本地磁盘 573
28.5.3获取指定磁盘中的文件 574
28.5.4批量上传文件 575
28.6服务器文件上传/下载 579
28.6.1服务器文件上传/下载功能概述 579
28.6.2获取FTP服务器中的所有文件 579
28.6.3批量下载文件 581
28.6.4删除FTP中的文件或文件夹 584
28.7小结 586
28.8学习成果检验 586
第5篇 项目实战 588
第29章 进销存管理系统 588
29.1需求分析 589
29.2系统设计 589
29.2.1系统目标 589
29.2.2系统功能结构 589
29.2.3系统业务流程图 589
29.2.4文件组织结构 589
29.3系统运行环境 590
29.4数据库与数据表设计 590
29.4.1数据库分析 590
29.4.2数据表设计 591
29.4.3数据表逻辑关系 592
29.5公共类设计 593
29.5.1 DataBase公共类 593
29.5.2 BaseInfo公共类 596
29.6登录模块设计 600
29.6.1登录模块概述 600
29.6.2登录模块实现原理 600
29.6.3登录模块实现过程 600
29.7系统主窗体设计 601
29.7.1系统主窗体概述 601
29.7.2使用MenuStrip控件设计菜单栏 602
29.7.3系统主窗体实现过程 602
29.8库存商品管理模块设计 603
29.8.1库存商品管理模块概述 603
29.8.2自动生成库存商品编号 603
29.8.3库存商品管理模块实现过程 603
29.9进货管理模块设计 607
29.9.1进货管理模块概述 607
29.9.2向进货单中批量添加商品 607
29.9.3进货管理模块实现过程 608
29.10商品销售排行模块设计 612
29.10.1商品销售排行模块概述 612
29.10.2使用BETWEEN…AND关键字查询数据 612
29.10.3商品销售排行模块实现过程 612
29.11库存盘点模块设计 614
29.11.1库存盘点模块概述 614
29.11.2隔离驱动模式的使用 614
29.11.3库存盘点模块实现过程 614
29.12系统打包部署 616
29.13小结 618
第30章 企业人事管理系统 619
30.1系统分析 620
30.1.1需求分析 620
30.1.2可行性分析 620
30.1.3编写项目计划书 621
30.2系统设计 622
30.2.1系统目标 622
30.2.2系统功能结构 623
30.2.3系统业务流程图 623
30.2.4系统编码规范 624
30.3系统运行环境 624
30.4数据库与数据表设计 624
30.4.1数据库分析 624
30.4.2数据表设计 625
30.4.3数据表逻辑关系 626
30.5公共类设计 627
30.5.1 MyMeans公共类 628
30.5.2 MyModule公共类 629
30.6登录模块设计 640
30.6.1设计登录窗体 641
30.6.2按Enter键时移动鼠标焦点 641
30.6.3登录功能的实现 641
30.7系统主窗体设计 642
30.7.1设计菜单栏 642