第1部分 基础篇 3
第1堂课 初探C#及其开发环境 3
1.1了解.NET 4
1.1.1 .NET概述 4
1.1.2 .NET程序编译原理 4
1.1.3 .NET项目成功案例 5
1.2 C#语言及特点 6
1.2.1 C#与.NET的关系 6
1.2.2 C#语言特点 6
1.2.3 C#语言发展趋势 7
1.3安装与卸载Visual Studio 2008 7
1.3.1安装Visual Studio 2008系统必备 7
1.3.2安装Visual Studio 2008 8
1.3.3卸载Visual Studio 2008 9
1.4熟悉Visual Studio 2008开发环境 10
1.4.1创建控制台应用程序 10
1.4.2创建Windows应用程序 11
1.4.3菜单栏介绍 12
1.4.4工具栏介绍 13
1.4.5“工具箱”面板介绍 14
1.4.6“属性”面板介绍 14
1.4.7解决方案资源管理器介绍 15
1.5 C#编程常用帮助 15
1.5.1安装MSDN 15
1.5.2使用MSDN 17
1.6照猫画虎——基本功训练 18
1.6.1基本功训练1——如何开始运行程序 18
1.6.2基本功训练2——如何中断当前程序的运行 19
1.6.3基本功训练3——设置程序代码行号 20
1.6.4基本功训练4——统一窗体中控件的字体设置 20
1.6.5基本功训练5——通过“格式”菜单布局窗体 21
1.7情景应用——拓展与实践 22
1.7.1情景应用1——设置Windows应用程序启动窗体 22
1.7.2情景应用2——为程序设置版本和帮助信息 23
1.7.3情景应用3——为项目添加已有窗体 24
1.7.4情景应用4——动起来的Label控件 24
1.7.5情景应用5——加法计算器 25
1.8自我测试 26
1.9行动指南 27
1.10成功可以复制——C#语言之父安德斯·海尔斯伯格 28
第2堂课C#程序设计基础 31
2.1编写第一个C#程序 32
2.2分析C#程序结构 33
2.2.1命名空间介绍 33
2.2.2类的介绍 34
2.2.3 Main方法的使用 34
2.2.4认识标识符 35
2.2.5认识关键字 35
2.2.6编写C#语句 35
2.2.7代码注释 36
2.3数据类型 37
2.3.1值类型的使用 37
2.3.2引用类型的使用 39
2.4声明并使用变量 40
2.4.1变量的声明及初始化 40
2.4.2变量的作用域 41
2.5声明并使用常量 42
2.6数据类型转换 43
2.6.1隐式类型转换 43
2.6.2显式类型转换 43
2.6.3装箱和拆箱 45
2.7运算符的使用 46
2.7.1算术运算符 46
2.7.2赋值运算符 48
2.7.3关系运算符 49
2.7.4逻辑运算符 51
2.7.5移位运算符 54
2.7.6其他特殊运算符 54
2.7.7运算符的优先级 56
2.8照猫画虎——基本功训练 57
2.8.1基本功训练1——使用“///”标记给代码段添加说明 57
2.8.2基本功训练2——使用引号运算符进行赋值 58
2.8.3基本功训练3——使用checked关键字处理“溢出”错误 58
2.8.4基本功训练4——使用typeof关键字获取类的内部结构 59
2.8.5基本功训练5——使用using关键字有效回收资源 60
2.9情景应用——拓展与实践 61
2.9.1情景应用1——检查对象是否与给定类型兼容 61
2.9.2情景应用2——使用算术运算符开发简单计算器 62
2.9.3情景应用3——使用“^”运算符对数字进行加密 64
2.9.4情景应用4——巧用移位运算符获取汉字编码值 65
2.9.5情景应用5——使用条件运算符判断指定年份是不是闰年 66
2.10自我测试 67
2.11行动指南 68
2.12成功可以复制——中国第一程序员求伯君 69
第3堂课 程序流程控制 71
3.1 C#程序设计算法 72
3.2 if语句的使用 74
3.2.1使用if和if…else语句实现条件选择 74
3.2.2 if语句的嵌套使用 77
3.3 switch语句的使用 78
3.3.1使用switch语句实现多分支选择 79
3.3.2 if…else语句与switch语句 80
3.4 while和do…while语句的使用 82
3.4.1使用while语句实现代码循环 82
3.4.2使用do…while语句实现至少执行一次循环 84
3.4.3 while和do…while语句的区别 86
3.5 for和foreach语句的使用 86
3.5.1使用for语句实现代码循环 86
3.5.2使用foreach语句遍历数据集合 88
3.6循环结构中的跳转语句 89
3.6.1使用break语句跳出循环 89
3.6.2使用continue语句继续程序的执行 91
3.6.3使用goto语句实现程序跳转 92
3.6.4使用return语句使程序返回 94
3.7照猫画虎——基本功训练 95
3.7.1基本功训练1——循环向控制台中输出内容 95
3.7.2基本功训练2——使用switch语句实现数字转换大写 96
3.7.3基本功训练3——鸡尾酒排序算法的实现 97
3.7.4基本功训练4——判断用户登录身份 99
3.7.5基本功训练5——小明去学校和医院分别要走哪条路 100
3.8情景应用——拓展与实践 101
3.8.1情景应用1——递归算法的经典面试题 101
3.8.2情景应用2——使用流程控制语句报销业务花销 102
3.8.3情景应用3——使用switch语句更改窗体颜色 102
3.8.4情景应用4——使用goto语句在数组中搜索指定图书 103
3.8.5情景应用5——制作一个数字猜猜看小游戏 104
3.9自我测试 105
3.10行动指南 107
3.11成功可以复制——软件业的华人教父王嘉廉 108
第4堂课 字符及字符串的使用 111
4.1字符操作 112
4.1.1 Char类概述 112
4.1.2使用Char类中的方法对字符进行操作 112
4.1.3认识并使用转义字符 114
4.2字符串的声明及初始化 114
4.3字符串操作 115
4.3.1比较字符串 115
4.3.2格式化字符串 116
4.3.3截取字符串 117
4.3.4分割字符串 118
4.3.5插入和填充字符串 118
4.3.6删除字符串 120
4.3.7复制字符串 120
4.3.8替换字符串 122
4.4可变字符串类StringBuilder的使用 122
4.4.1 StringBuilder类概述 122
4.4.2创建StringBuilder对象 123
4.4.3 StringBuilder类的使用 123
4.4.4 StringBuilder类与string类的区别 124
4.5照猫画虎——基本功训练 125
4.5.1基本功训练1——判断用户输入的用户名是否正确 125
4.5.2基本功训练2——将字符串的每个字符进行颠倒输出 126
4.5.3基本功训练3——去掉字符串中的所有空格 126
4.5.4基本功训练4——获取字符串中汉字的个数 127
4.5.5基本功训练5——从字符串中分离文件路径、文件名及扩展名 127
4.6情景应用——拓展与实践 128
4.6.1情景应用1——字母与ASCII码的转换 128
4.6.2情景应用2——将汉字转换为拼音 129
4.6.3情景应用3——批量替换某一类字符串 130
4.6.4情景应用4——对字符串进行加密与解密 131
4.6.5情景应用5——开发一个进制转换器 133
4.7自我测试 136
4.8行动指南 137
4.9成功可以复制——“杀毒王”王江民不可思议的传奇人生 138
第5堂课 数组与集合 141
5.1数组概述 142
5.2一维数组的声明和使用 142
5.2.1一维数组的声明 142
5.2.2一维数组的使用 143
5.3二维数组的声明和使用 144
5.3.1二维数组的声明 144
5.3.2二维数组的使用 144
5.3.3动态数组的声明及使用 145
5.4数组的基本操作 146
5.4.1遍历数组中的元素 146
5.4.2添加和删除数组元素 147
5.4.3数组的合并与拆分 147
5.5 ArrayList集合的使用 149
5.5.1 ArrayList集合概述 149
5.5.2添加ArrayList集合元素 150
5.5.3删除ArrayList集合元素 152
5.5.4遍历ArrayList集合 154
5.5.5查找ArrayList集合元素 154
5.6照猫画虎——基本功训练 155
5.6.1基本功训练1——获取多维数组的行数与列数 155
5.6.2基本功训练2——按指定条件在数组中检索元素 156
5.6.3基本功训练3——在数组中添加一个元素 157
5.6.4基本功训练4——不改变长度删除数组中的元素 159
5.6.5基本功训练5——删除数组元素后改变其长度 160
5.7情景应用——拓展与实践 162
5.7.1情景应用1——操作便捷的简单电话簿 162
5.7.2情景应用2——使用数组解决约瑟夫环问题 163
5.7.3情景应用3——向班级集合中添加学生信息 164
5.7.4情景应用4——使用哈希表对XML文件进行查询 165
5.7.5情景应用5——设计一个简单客车售票记录程序 166
5.8自我测试 168
5.9行动指南 169
5.10成功可以复制——善于抓住时机的人徐少春 170
第6堂课 程序设计中的算法 173
6.1算法基础 174
6.1.1初识算法 174
6.1.2描述算法的两种常用流程图 174
6.2常用的算法 175
6.2.1查找最大、最小值算法的实现 176
6.2.2杨辉三角算法的实现 177
6.2.3冒泡排序法 178
6.2.4插入排序法 179
6.2.5选择排序法 180
6.2.6希尔排序法 181
6.3照猫画虎——基本功训练 183
6.3.1基本功训11练1——计算1+2 2+3 3+4 4+…+n n的值 183
6.3.2基本功训练2——计算10!的值 183
6.3.3基本功训练3——求最大公约数 184
6.3.4基本功训练4——将B转换成GB、MB和KB 185
6.3.5基本功训练5——0~N位数的任意组合 186
6.4情景应用——拓展与实践 187
6.4.1情景应用1——身份证号从15位升到18位算法 187
6.4.2情景应用2——韩信点兵的算法实现 188
6.4.3情景应用3——求水仙花数的算法实现 189
6.4.4情景应用4——制作一个迷你星座查询器 190
6.4.5情景应用5——设计双色球彩票选号器 194
6.5自我测试 196
6.6行动指南 197
6.7成功可以复制——缔造华人的硅谷传奇杨致远 197
第7堂课 面向对象程序设计 199
7.1面向对象编程概述 200
7.2属性的定义及使用 200
7.2.1属性概述 201
7.2.2属性的定义 201
7.2.3属性的使用 202
7.3方法的声明及使用 203
7.3.1方法概述 203
7.3.2方法修饰符 203
7.3.3方法的声明 204
7.3.4方法的分类 205
7.3.5重载方法的实现 206
7.4枚举类型 207
7.4.1枚举类型概述 207
7.4.2枚举类型的声明 207
7.4.3枚举类型的使用 208
7.5泛型及其使用 209
7.5.1泛型概述 209
7.5.2类型参数T 209
7.5.3泛型接口的声明及使用 209
7.6结构的定义及使用 210
7.6.1结构概述 211
7.6.2结构的定义 211
7.6.3结构的使用 211
7.7类与对象详解 212
7.7.1类的概念 212
7.7.2类的声明 213
7.7.3构造函数和析构函数 213
7.7.4对象的声明和创建 214
7.8面向对象特性之封装 216
7.8.1封装概述 216
7.8.2封装的实现 217
7.9面向对象特性之继承 218
7.9.1继承概述 218
7.9.2单继承的使用 219
7.9.3多重继承的使用 219
7.10面向对象特性之多态 221
7.10.1多态概述 221
7.10.2多态的实现 222
7.11照猫画虎——基本功训练 224
7.11.1基本功训练1——使用属性存储用户编号和姓名 224
7.11.2基本功训练2——通过定义方法求一个数的平方 225
7.11.3基本功训练3——使用重载方法实现不同类型数据的计算 226
7.11.4基本功训练4——通过结构计算矩形的面积 227
7.11.5基本功训练5——通过类继承计算梯形面积 227
7.12情景应用——拓展与实践 229
7.12.1情景应用1——通过类的多态性确定人类的说话行为 229
7.12.2情景应用2——封装类实现一个简单的计算器 230
7.12.3情景应用3——使用分部类记录学生信息 231
7.12.4情景应用4——使用泛型存储不同类型的数据列表 232
7.12.5情景应用5——使用泛型去掉数组中的重复数字 233
7.13自我测试 234
7.14行动指南 235
7.15成功可以复制——百度CEO李彦宏 236
第2部分 提高篇 241
第8堂课 Windows窗体设计 241
8.1 Form窗体基础 242
8.1.1 Form窗体概述 242
8.1.2添加和删除Form窗体 242
8.1.3添加多窗体 243
8.1.4设置窗体的属性 244
8.1.5窗体的显示与隐藏 246
8.1.6触发窗体事件 247
8.2 MDI窗体设计 248
8.2.1 MDI窗体概述 248
8.2.2设置MDI窗体 249
8.2.3排列MDI子窗体 249
8.3继承窗体设计 251
8.3.1继承窗体概述 251
8.3.2创建继承窗体 251
8.3.3在继承窗体中修改继承的控件属性 253
8.4照猫画虎——基本功训练 254
8.4.1基本功训练1——控制窗体加载时的位置 254
8.4.2基本功训练2——设置窗体在屏幕中的位置 254
8.4.3基本功训练3——使窗体始终在桌面最顶层显示 255
8.4.4基本功训练4——根据桌面大小调整窗体大小 256
8.4.5基本功训练5——使背景图片自动适应窗体的大小 256
8.5情景应用——拓展与实践 257
8.5.1情景应用1——从上次关闭位置启动窗体 257
8.5.2情景应用2——自定义最大化、最小化和关闭按钮 258
8.5.3情景应用3——磁性窗体的设计 261
8.5.4情景应用4——制作鼠标穿透窗体 270
8.5.5情景应用5——窗体换肤程序 270
8.6自我测试 273
8.7行动指南 274
8.8成功可以复制——迅雷创始人邹胜龙 274
第9堂课 Windows应用程序常用控件 277
9.1控件概述 278
9.1.1浏览常用控件 278
9.1.2控件的分类及作用 278
9.2控件的相关操作 279
9.2.1添加控件 279
9.2.2对齐控件 280
9.2.3锁定控件 280
9.2.4删除控件 280
9.3文本类控件 280
9.3.1标签控件 280
9.3.2按钮控件 281
9.3.3文本框控件 282
9.3.4有格式文本控件 284
9.4选择类控件 286
9.4.1下拉组合框控件 286
9.4.2复选框控件 287
9.4.3单选按钮控件 289
9.4.4数值选择控件 290
9.4.5列表控件 291
9.5分组控件 293
9.5.1容器控件 293
9.5.2分组框控件 294
9.5.3选项卡控件 295
9.6对话框控件 297
9.6.1对话框概述 297
9.6.2打开对话框 297
9.6.3另存为对话框 298
9.6.4浏览文件夹对话框 299
9.7菜单、工具栏和状态栏控件 300
9.7.1菜单控件 300
9.7.2工具栏控件 301
9.7.3状态栏控件 302
9.8照猫画虎——基本功训练 303
9.8.1基本功训练1——在ComboBox下拉列表中显示图片 303
9.8.2基本功训练2——实现带查询功能的ComboBox控件 304
9.8.3基本功训练3——在RichTextBox控件中实现关键字描红 305
9.8.4基本功训练4——对ListBox控件中的数据进行排序 306
9.8.5基本功训练5——具有提示功能的工具栏 306
9.9情景应用——拓展与实践 307
9.9.1情景应用1——只允许输入数字的TextBox控件 307
9.9.2情景应用2——判断注册用户操作权限 308
9.9.3情景应用3——实现类似Word的项目编号功能 309
9.9.4情景应用4——制作带历史信息的菜单 310
9.9.5情景应用5——制作仿XP系统的任务栏菜单 311
9.10自我测试 312
9.11行动指南 313
9.12成功可以复制——前微软CEO比尔·盖茨 314
第10堂课 Windows应用程序高级控件 317
10.1存储图像控件 318
10.1.1在ImageList控件中添加图像 318
10.1.2在ImageList控件中移除图像 319
10.2列表视图控件 320
10.2.1在ListView控件中添加移除项 320
10.2.2选择ListView控件中的项 322
10.2.3为ListView控件中的项添加图标 323
10.2.4在ListView控件中启用平铺视图 324
10.3树控件 324
10.3.1添加和删除树节点 325
10.3.2获取树控件中选中的节点 326
10.3.3为树控件中的节点设置图标 327
10.4日期控件 328
10.4.1使用DateTimePicker控件显示时间 328
10.4.2使用DateTimePicker控件以自定义格式显示日期 329
10.4.3返回DateTimePicker控件中选择的日期 330
10.5月历控件 331
10.5.1在MonthCalendar控件中以粗体显示特定日期 331
10.5.2在MonthCalendar控件中选择日期范围 332
10.6其他高级控件 332
10.6.1使用ErrorProvider控件验证文本框输入 333
10.6.2使用HelpProvider控件调用帮助文件 334
10.6.3使用Timer控件设置时间间隔 335
10.6.4使用ProgressBar控件显示程序运行进度条 336
10.7照猫画虎——基本功训练 337
10.7.1基本功训练1——在列表视图中拖动视图项 337
10.7.2基本功训练2——制作带复选框的ListView控件 338
10.7.3基本功训练3——使用MaskedTextBox控件实现输入验证 339
10.7.4基本功训练4——使用Timer组件实现人物动画效果 340
10.7.5基本功训练5——使用ErrorProvider组件验证文本框输入 340
10.8情景应用——拓展与实践 341
10.8.1情景应用1——使用TreeView控件遍历磁盘目录 341
10.8.2情景应用2——用树型列表动态显示菜单 343
10.8.3情景应用3——设计一个电子万年历 344
10.8.4情景应用4——制作一个闹钟计时器 345
10.8.5情景应用5——弹出模式窗口显示进度条 346
10.9自我测试 348
10.10行动指南 349
10.11成功可以复制——图文世界的缔造者约翰·沃洛克 349
第11堂课ADO.NET数据访问技术 351
11.1 ADO.NET概述 352
11.2使用Connection对象连接数据库 352
11.2.1 Connection对象概述 352
11.2.2连接数据库 352
11.2.3关闭连接 353
11.3使用Command对象执行SQL语句 355
11.3.1 Command对象概述 355
11.3.2设置数据源类型 356
11.3.3执行SQL语句 357
11.4使用DataReader对象读取数据 359
11.4.1 DataReader对象概述 359
11.4.2判断查询结果中是否有值 359
11.4.3读取数据 360
11.5数据适配器:DataAdapter对象 361
11.5.1 DataAdapter对象概述 361
11.5.2填充DataSet数据集 361
11.5.3更新数据源 362
11.6数据集:DataSet对象 363
11.6.1 DataSet对象概述 363
11.6.2合并DataSet内容 364
11.6.3复制DataSet内容 365
11.7照猫画虎——基本功训练 366
11.7.1基本功训练1——连接加密的Access数据库 366
11.7.2基本功训练2——连接文本文件并显示其内容 367
11.7.3基本功训练3——读取SQL Server数据库结构 368
11.7.4基本功训练4——备份指定的SQLServer数据库 369
11.7.5基本功训练5——判断计算机中是否安装了SQL软件 370
11.8情景应用——拓展与实践 371
11.8.1情景应用1——向SQL Server数据库中批量写入海量数据 371
11.8.2情景应用2——使用断开式连接批量更新数据库中数据 373
11.8.3情景应用3——综合查询职工详细信息 374
11.8.4情景应用4——使用二进制存取用户头像 376
11.8.5情景应用5——使用存储过程实现员工自动编号 378
11.9自我测试 380
11.10行动指南 380
11.11成功可以复制——微型博客Twitter创始人埃文·威廉姆斯 381
第12堂课 DataGridView数据控件 383
12.1 DataGridView控件概述 384
12.2在DataGridView控件中显示数据 384
12.3获取DataGridView控件中的当前单元格 385
12.4在DataGridView控件中修改数据 386
12.5选中DataGridView控件中的行时显示不同颜色 387
12.6禁止在DataGridView控件中添加和删除行 389
12.7禁用DataGridView控件的自动排序功能 389
12.8合并DataGridView控件中的单元格 390
12.9照猫画虎——基本功训练 392
12.9.1基本功训练1——设置DataGridView控件中网格线的样式 392
12.9.2基本功训练2——在DataGridView控件中设置数据显示格式 392
12.9.3基本功训练3——设置DataGridView控件单元格的文本对齐方式 393
12.9.4基本功训练4——在DataGridView控件中实现下拉列表 394
12.9.5基本功训练5——为DataGridView控件实现复选功能 395
12.10情景应用——拓展与实践 396
12.10.1情景应用1——在DataGridView控件中验证数据输入 396
12.10.2情景应用2——在DataGridView控件中添加“合计”和“平均值” 396
12.10.3情景应用3——使用交叉表实现商品销售统计 398
12.10.4情景应用4——将DataGridView中数据导出到Word 399
12.10.5情景应用5——通过DataGridView分页查看用户信息 401
12.11自我测试 403
12.12行动指南 404
12.13成功可以复制——因特网的点火人马克·安德森 405
第3部分 高级篇 409
第13堂课 面向对象编程高级技术 409
13.1接口的声明及实现 410
13.1.1接口概述 410
13.1.2接口的声明 410
13.1.3接口的实现与继承 411
13.1.4显式接口成员实现 412
13.2抽象类的声明及使用 413
13.2.1抽象类概述 413
13.2.2抽象类的声明 414
13.2.3抽象方法的声明 414
13.2.4抽象类的使用 414
13.2.5抽象类与接口 416
13.3密封类的声明及使用 416
13.3.1密封类概述 416
13.3.2密封类的声明 416
13.3.3密封方法的声明 417
13.3.4密封类的使用 418
13.4照猫画虎——基本功训练 419
13.4.1基本功训练1——自定义抽象类计算圆形的面积 419
13.4.2基本功训练2——利用接口实现选择不同的语言 420
13.4.3基本功训练3——使用接口作为方法参数进行编程 421
13.4.4基本功训练4——通过重写虚方法实现加法运算 422
13.4.5基本功训练5——使用多重继承实现教师和学生信息的输出 422
13.5情景应用——拓展与实践 424
13.5.1情景应用1——使用迭代器显示公交车站点 424
13.5.2情景应用2——通过迭代器实现文字的动态效果 425
13.5.3情景应用3——使用分部类实现多种计算方法 427
13.5.4情景应用4——通过继承泛型类实现输出学生信息 428
13.5.5情景应用5——使用密封类密封用户信息 429
13.6自我测试 430
13.7行动指南 431
13.8成功可以复制——征途巨人史玉柱 432
第14堂课LINQ技术的使用 435
14.1 LINQ基础 436
14.1.1 LINQ概述 436
14.1.2使用var创建隐型局部变量 436
14.1.3 Lambda表达式的使用 437
14.1.4 LINQ查询表达式 438
14.2 LINQ操作SQL Server数据库 439
14.2.1使用LINQ查询SQL Server数据库 439
14.2.2使用LINQ管理SQL Server数据库 443
14.3 LINQ操作其他数据 449
14.3.1使用LINQ操作数组和集合 449
14.3.2使用LINQ操作DataSet数据集 450
14.3.3使用LINQ操作XML 451
14.4照猫画虎——基本功训练 454
14.4.1基本功训练1——检查序列中是否包含指定元素 454
14.4.2基本功训练2——使用LINQ生成随机序列 455
14.4.3基本功训练3——统计每种商品的销售次数 456
14.4.4基本功训练4——统计每种商品的销售均价 457
14.4.5基本功训练5——获取有过返货记录的商品列表 457
14.5情景应用——拓展与实践 458
14.5.1情景应用1——使用存储过程查询单表数据 458
14.5.2情景应用2——使用LINQ技术防止SQL注入式攻击 459
14.5.3情景应用3——使用LINQ技术实现数据分页 460
14.5.4情景应用4——从头开始提取满足指定条件的记录 462
14.5.5情景应用5——读取XML文件并更新到数据库 463
14.6自我测试 464
14.7行动指南 465
14.8成功可以复制——中国通信设备行业的领跑者任正非 466
第15堂课 文件及IO 469
15.1文件操作基础 470
15.1.1 File类和FileInfo类介绍 470
15.1.2 Directoy类和DirectoryInfo类介绍 472
15.2文件基本操作 475
15.2.1判断文件是否存在 475
15.2.2创建文件 475
15.2.3复制文件 476
15.2.4移动文件 477
15.2.5删除文件 477
15.3文件夹基本操作 478
15.3.1判断文件夹是否存在 478
15.3.2创建文件夹 478
15.3.3移动文件夹 479
15.3.4删除文件夹 479
15.4 I/O输入输出 480
15.4.1流概述 480
15.4.2文件I/O流介绍 481
15.4.3使用I/O流操作文本文件 482
15.4.4使用I/O流操作二进制文件 484
15.5照猫画虎——基本功训练 486
15.5.1基本功训练1——获取文件基本信息 486
15.5.2基本功训练2——遍历文件夹 487
15.5.3基本功训练3——使用C#操作INI文件 488
15.5.4基本功训练4——按行读取文本文件中数据 489
15.5.5基本功训练5——获取指定文件夹的上级目录 490
15.6情景应用——拓展与实践 490
15.6.1情景应用1——根据日期动态建立文件 490
15.6.2情景应用2——文件批量更名 491
15.6.3情景应用3——复制文件时显示复制进度 492
15.6.4情景应用4——伪装文件夹 494
15.6.5情景应用5——对指定文件夹中的文件进行分类存储 496
15.7自我测试 497
15.8行动指南 498
15.9成功可以复制——中国网络游戏产业的领军人陈天桥 499
第16堂课GDI+绘图技术 501
16.1 GDI+绘图基础 502
16.1.1 GDI+概述 502
16.1.2创建Graphics对象 502
16.1.3创建Pen对象 503
16.1.4创建Brush对象 503
16.2基本图形绘制 504
16.2.1绘制直线和矩形 505
16.2.2绘制椭圆、弧和扇形 506
16.2.3绘制多边形 508
16.2.4绘制文本 509
16.2.5绘制图形 510
16.3照猫画虎——基本功训练 510
16.3.1基本功训练1——绘制公章 510
16.3.2基本功训练2——波形图的绘制 512
16.3.3基本功训练3——生成图片缩略图 513
16.3.4基本功训练4——以任意角度旋转图像 514
16.3.5基本功训练5——浮雕效果显示图像 515
16.4情景应用——拓展与实践 516
16.4.1情景应用1——绘制中文验证码 516
16.4.2情景应用2——批量图像格式转换 517
16.4.3情景应用3——抓取网站整页面 520
16.4.4情景应用4——批量添加图片水印 523
16.4.5情景应用5——打造自己的开心农场 527
16.5自我测试 530
16.6行动指南 531
16.7成功可以复制——“盖茨第二”马克·扎克伯格 531
第17堂课 水晶报表与打印 533
17.1认识水晶报表 534
17.1.1水晶报表概述 534
17.1.2水晶报表工作区介绍 534
17.2水晶报表数据源和数据访问模式 535
17.2.1 Visual Studio 2008中水晶报表数据源列举 535
17.2.2水晶报表的数据访问模式 535
17.3水晶报表基本操作 536
17.3.1创建水晶报表并连接数据源 536
17.3.2水晶报表中数据的分组与排序 538
17.3.3水晶报表中数据的筛选 540
17.3.4在水晶报表中使用图表 542
17.3.5在水晶报表中创建子报表 543
17.4 Windows打印组件的使用 545
17.4.1使用PageSetupDialog组件设置打印文档信息 545
17.4.2使用PrintDialog组件显示打印对话框 546
17.4.3使用PrintDocument组件设置打印文档 547
17.4.4使用PrintPreviewControl组件设置打印预览文档 548
17.4.5使用PrintPreviewDialog组件显示打印预览 549
17.5照猫画虎——基本功训练 549
17.5.1基本功训练1——自定义横向打印 549
17.5.2基本功训练2——自定义打印页码范围 551
17.5.3基本功训练3——打印商品入库单据 556
17.5.4基本功训练4——使图片成为整个报表的背景 557
17.5.5基本功训练5——设置水晶报表的打印日期与时间 558
17.6情景应用——拓展与实践 560
17.6.1情景应用1——打印学生个人简历 560
17.6.2情景应用2——批量打印学生证书 561
17.6.3情景应用3——订货总金额超过10万元显示“恭喜获奖”文字 564
17.6.4情景应用4——部门销售量占公司总销售量的业绩百分比 566
17.6.5情景应用5——按类别分组统计图书库存 567
17.7自我测试 568
17.8行动指南 569
17.9成功可以复制——3D王国的开创者约翰·沃克 569
第18堂课 网络编程 571
18.1计算机网络基础 572
18.1.1局域网与因特网介绍 572
18.1.2网络协议介绍 572
18.1.3端口及套接字介绍 574
18.2网络编程基础 575
18.2.1 System.NET命名空间及相关类的使用 575
18.2.2 System.NET.Sockets命名空间及相关类的使用 580
18.2.3 System.NET.Mail命名空间及相关类的使用 585
18.3照猫画虎——基本功训练 587
18.3.1基本功训练1——通过IP地址获取主机名称 587
18.3.2基本功训练2——得到本机MAC地址 588
18.3.3基本功训练3——获取网络中所有工作组名称 588
18.3.4基本功训练4——获取网络中某台计算机的磁盘信息 589
18.3.5基本功训练5——编程实现Ping操作 590
18.4情景应用——拓展与实践 591
18.4.1情景应用1——获取网络信息及流量 591
18.4.2情景应用2——远程关闭与重启计算机 593
18.4.3情景应用3——创建Web页面浏览器 594
18.4.4情景应用4——设计点对点聊天程序 595
18.4.5情景应用5——电子邮件的发送与接收 596
18.5自我测试 598
18.6行动指南 598
18.7成功可以复制——80后新贵、泡泡网CEO李想 599
第19堂课 线程的使用 601
19.1线程概述 602
19.1.1线程的定义与分类 602
19.1.2多线程的使用 603
19.1.3线程的生命周期 603
19.2 C#中的线程类Thread 604
19.3线程调度 606
19.3.1创建线程 606
19.3.2线程的挂起与恢复 607
19.3.3线程休眠 608
19.3.4终止线程 608
19.3.5线程的优先级 609
19.4线程同步 611
19.4.1线程同步机制 611
19.4.2使用lock关键字实现线程同步 611
19.4.3使用Monitor驱动对象实现线程同步 612
19.4.4使用Mutex类实现线程同步 613
19.5照猫画虎——基本功训练 615
19.5.1基本功训练1——判断线程的运行状态 615
19.5.2基本功训练2——使用线程遍历文件夹 615
19.5.3基本功训练3——使用线程休眠控制图片以百叶窗效果显示 616
19.5.4基本功训练4——使用线程读取数据库中的数据 618
19.5.5基本功训练5——使用线程实现大容量数据的计算 618
19.6情景应用——拓展与实践 619
19.6.1情景应用1——使用线程扫描局域网IP地址 619
19.6.2情景应用2——使用线程制作小游戏 621
19.6.3情景应用3——有进度条的文件异步复制功能 622
19.6.4情景应用4——使用线程控制向窗体中拖放图片并显示 624
19.6.5情景应用5——使用多线程制作端口扫描工具 625
19.7自我测试 626
19.8行动指南 627
19.9成功可以复制——IT“大王”王志东 627
第20堂课 异常处理与程序调试 629
20.1异常处理与程序调试概述 630
20.2异常处理语句的使用 630
20.2.1使用throw语句抛出异常 630
20.2.2使用try…catch语句捕捉异常 632
20.2.3使用try…catch…finally语句捕捉异常 633
20.3常用的程序调试操作 634
20.3.1断点操作 634
20.3.2开始、中断和停止程序的执行 635
20.3.3单步执行 636
20.3.4运行到指定位置 637
20.4成功可以复制——IT风云人物鲍岳桥 637
第21堂课 Windows应用程序打包部署 639
21.1 Windows Installer介绍 640
21.2创建Windows安装项目 640
21.3制作Windows安装程序 641
21.3.1添加项目输出 641
21.3.2添加内容文件 642
21.3.3创建桌面快捷方式 643
21.3.4添加注册表项 644
21.3.5生成Windows安装程序 646
21.4部署Windows应用程序 646
21.5成功可以复制——暴雪公司的领航者迈克·莫汉 647
第4部分 实战篇 651
第22堂课 企业人事管理系统 651
22.1系统分析 652
22.1.1需求分析 652
22.1.2可行性分析 652
22.1.3编写项目计划书 653
22.2系统设计 654
22.2.1系统目标 654
22.2.2系统功能结构 655
22.2.3系统业务流程图 655
22.2.4系统编码规范 656
22.3系统运行环境 656
22.4数据库与数据表设计 656
22.4.1数据库分析 657
22.4.2创建数据库 657
22.4.3创建数据表 659
22.4.4数据表逻辑关系 663
22.5创建项目 664
22.6公共类设计 665
22.6.1 MyMeans公共类 665
22.6.2 MyModule公共类 667
22.7登录模块设计 679
22.7.1设计登录窗体 680
22.7.2按回车键时移动鼠标焦点 680
22.7.3登录功能的实现 680
22.8系统主窗体设计 681
22.8.1设计菜单栏 682
22.8.2设计工具栏 683
22.8.3设计导航菜单 684
22.8.4设计状态栏 684
22.9人事档案管理模块设计 685
22.9.1设计人事档案管理窗体 686
22.9.2添加/修改人事档案信息 688
22.9.3删除人事档案信息 690
22.9.4单条件查询人事档案信息 690
22.9.5逐条查看人事档案信息 692
22.9.6将人事档案信息导出为Word文档 694
22.10人事资料查询模块设计 698
22.10.1设计人事资料查询窗体 699
22.10.2多条件查询人事资料 700
22.11通讯录模块设计 700
22.11.1设计通讯录窗体 701
22.11.2添加/修改通讯录信息 701
22.11.3删除通讯录信息 703
22.11.4查询通讯录信息 704
22.12用户设置模块设计 704
22.12.1设计用户设置窗体 705
22.12.2添加/修改用户信息 705
22.12.3删除用户基本信息 707
22.12.4设置用户操作权限 707
22.13数据库维护模块设计 708
22.13.1设计数据库维护窗体 708
22.13.2备份数据库 709
22.13.3还原数据库 709
22.14运行项目 711
22.15系统打包部署 712
22.16开发常见问题与解决 715
22.16.1程序为什么会无法运行 715
22.16.2为什么无法添加职工基本信息 716
22.16.3选择职工头像时出现异常怎么办 717
22.16.4数据库还原不成功应该如何解决 717
22.16.5出现Word引用问题怎么办 717
22.16.6 COM选项卡中没有Word 9.0引用怎么办 718
22.16.7为什么使用全名声明Word对象后还出现错误 718
22.17小结 722
第23堂课 房屋中介管理系统 723
23.1系统分析 724
23.2系统设计 724
23.2.1系统目标 724
23.2.2系统功能结构图 724
23.2.3系统业务流程图 725
23.3系统运行环境 725
23.4数据库与数据表设计 725
23.4.1数据库分析 725
23.4.2数据表设计 726
23.4.3视图设计 728
23.4.4存储过程设计 729
23.4.5触发器设计 731
23.5创建项目 732
23.6公共类设计 733
23.7系统主窗体设计 733
23.8用户信息管理模块设计 733
23.9房源信息设置模块设计 734
23.10房源信息查询模块设计 734
23.11房源状态查询模块设计 735
23.12员工信息设置模块设计 735
23.13小结 736
第24堂课 进销存管理系统 737
24.1系统分析 738
24.2系统设计 738
24.2.1系统目标 738
24.2.2系统功能结构图 738
24.2.3系统业务流程图 739
24.3系统运行环境 739
24.4数据库与数据表设计 739
24.4.1数据库分析 740
24.4.2数据表设计 740
24.4.3数据表逻辑关系 742
24.5创建项目 743
24.6公共类设计 744
24.7登录模块设计 744
24.8系统主窗体设计 744
24.9基础数据管理模块设计 745
24.10进货管理模块设计 745
24.11商品销售排行模块设计 746
24.12库存状况管理模块设计 746
24.13库存盘点模块设计 747
24.14小结 747
附录A C#程序编码规范 749
A.1命名规则 749
A.1.1数据类型简写规则 749
A.1.2变量及对象名称命名规则 749
A.1.3类命名规则 750
A.1.4属性命名规则 750
A.1.5方法命名规则 750
A.1.6接口命名规则 750
A.1.7控件命名规则 751
A.2代码版式 751
A.2.1统一代码缩进 751
A.2.2合理使用空行 751
A.2.3代码换行 752
A.2.4空格的使用 752
A.3代码注释 752
A.3.1注释的目的 752
A.3.2代码注释规范 752
A.4数据库编程命名规范 753
A.4.1数据库命名规范 753
A.4.2数据表命名规范 753
A.4.3字段命名规范 753
A.4.4视图命名规范 753
A.4.5存储过程命名规范 754
A.4.6触发器命名规范 754