第1章 厉兵秣马——做好C#程序开发前期准备 3
第1篇 登堂入室——技能学习篇 3
1.1 本章学习任务 3
1.1.1 本章知识体系 3
1.1.2 带着任务往下学 3
1.2 追溯C#发展历史 4
1.2.1 谈古论今—C#发展历程 4
1.2.2 C#语言特点 5
1.2.3 C#与.NET的关系 5
1.3 熟悉.NET Framework三大核心 6
1.3.1 决胜千里——公共语言运行库 6
1.3.2 与众不同——.NET程序编译 6
1.3.3 充分交流——通用类型系统 7
1.4 掌握C#开发利器——Visual Studio 2008 8
1.4.1 系统必备 8
1.4.2 安装Visual Studio 2008 8
1.4.3 卸载Visual Studio 2008 11
1.4.4 熟悉Visual Studio 2008开发环境 12
1.5 使用MSDN辅助编程 17
1.5.1 安装帮助文档——MSDN 17
1.5.2 使用MSDN 19
1.5.3 常用的C#编程帮助网站 20
1.6 3种经典应用程序的创建 21
1.6.1 创建第一个控制台应用程序 21
1.6.2 创建第一个Windows窗体应用程序 23
1.6.3 创建第一个Web网站应用程序 24
1.7 实战检验 25
1.7.1 设置Visual Studio 2008开发环境中显示代码行号 25
1.7.2 如何中断正在运行的程序 25
1.8 疑难解惑 26
1.8.1 C#和.NET有什么关系 26
1.8.2 Visual Studio 2008安装不上 26
1.8.3 如何下载MSDN附带的示例 27
1.9 精彩回顾 28
第2章 掌握C#语言基础之数据类型与变量 28
2.1 本章学习任务 30
2.1.1 本章知识体系 30
2.1.2 带着任务往下学 30
2.2 常用数据类型解析 31
2.2.1 值类型——不能没有你 31
2.2.2 引用类型——世界因你而精采 37
2.3 程序开发最常用的武器——变量 39
2.3.1 变量的命名规则与惯例 40
2.3.2 数据类型与变量 41
2.3.3 变量的声明与赋值 42
2.3.4 永恒不变——定义及使用常量 45
2.3.5 变量的作用域和生存周期 46
2.4 实战检验 48
2.4.1 计算圆的面积 48
2.4.2 计算长方形的面积 49
2.4.3 计算个人工资 50
2.5 疑难解惑 50
2.5.1 WriteLine和ReadLine方法我还有点不明白 50
2.5.2 怎样发现变量在运算时溢出 51
2.6 精彩回顾 51
第3章 领略运算符和表达式带给我们的神奇 51
3.1 本章学习任务 53
3.1.1 本章知识体系 53
3.1.2 带着任务往下学 53
3.2 认识运算符和表达式 53
3.2.1 什么是运算符 53
3.2.2 什么是表达式 54
3.3 你必须掌握的几种运算符 54
3.3.1 无处不在的赋值运算符 54
3.3.2 重温算术运算符 56
3.3.3 一起学习比较运算符 60
3.3.4 为什么要使用逻辑运算符 63
3.4 运算符之“特殊问题特殊对待” 65
3.4.1 什么是自增/自减运算符 65
3.4.2 学会使用位运算符 67
3.4.3 短小精悍——三元运算符 68
3.5 让运算符的运算顺序如你所愿 69
3.5.1 层次分明——运算符的优先级 69
3.5.2 争先恐后——逻辑运算符的优先级 70
3.5.3 自有定数——使用小括号来得到正确的表达式 70
3.6 实战检验 71
3.6.1 制作简单计算器 71
3.6.2 输入数字比大小 72
3.7 疑难解惑 72
3.7.1 自增/自减运算符我还是有点不明白 72
3.7.2 三元运算符都用在哪里呢 73
3.7.3 表达式中加入小括号有什么好处 73
3.8 精彩回顾 73
第4章 峰回路转——巧用流程控制语句 73
4.1 本章学习任务 75
4.1.1 本章知识体系 75
4.1.2 带着任务往下学 75
4.2 流程控制 76
4.2.1 流程控制的体现——语句 76
4.2.2 语句的构成 76
4.2.3 复合语句 76
4.3 判断—条件—结果,你熟悉吗 77
4.3.1 使用if条件判断语句 77
4.3.2 学会使用switch语句 80
4.3.3 两种判断语句各自的适用场合 83
4.4 循环来了,你准备好了吗 85
4.4.1 必须掌握的while循环语句 85
4.4.2 学会使用do while循环语句 86
4.5 强大的for家族 88
4.5.1 for语句——撑起循环半边天 88
4.5.2 遍历好帮手——foreach语句 90
4.6 让跳转语句告诉你:没有不可能 91
4.6.1 continue语句——跳出本次循环 91
4.6.2 break语句——跳出当前循环体 92
4.6.3 用于返回数据的return语句 93
4.6.4 定点射击——goto语句 94
4.7 实战检验 95
4.7.1 猜数字小游戏 95
4.7.2 打造彩色控制台 96
4.8 疑难解惑 97
4.8.1 为什么不建议过多使用goto语句 97
4.8.2 关于return语句的问题 97
4.8.3 do while循环与while循环有什么不同吗 97
4.9 精彩回顾 97
第5章 程序开发的灵魂——算法 99
5.1 本章学习任务 99
5.1.1 本章知识体系 99
5.1.2 带着任务往下学 99
5.2 你了解算法吗 101
5.2.1 初识算法 101
5.2.2 描述算法的两种常用流程图 101
5.3 你应该掌握的常用算法 103
5.3.1 抛砖引玉——查找最大最小值 103
5.3.2 经典再现——杨辉三角算法的实现 104
5.3.3 争先恐后——冒泡排序法 105
5.3.4 峰回路转——插入排序法 107
5.3.5 我选择了你从不后悔——选择排序法 108
5.3.6 釜底抽薪——希尔排序法 109
5.4 实战检验 111
5.4.1 迷你星座查询器的实现 111
5.4.2 设计双色球彩票选号器 115
5.5 疑难解惑 117
5.5.1 传统流程图与N-S结构化流程图有何不同 117
5.5.2 为什么杨辉三角的表示形式不一样 117
5.5.3 如何选择适合自己的排序算法 118
5.6 精彩回顾 118
第6章 看似简单的字符串真就那么简单吗 118
6.1 本章学习任务 120
6.1.1 本章知识体系 120
6.1.2 带着任务往下学 120
6.2 让我们从字符开始学起 121
6.2.1 我很小,可是我很重要——Char结构 121
6.2.2 System.Char结构的成员 121
6.2.3 一种特殊的字符——转义字符 123
6.3 想知道字符串的具体含义吗 125
6.4 字符串有9种常用操作,你相信吗 126
6.4.1 互不相让——比较字符串 126
6.4.2 按部就班——格式化字符串 128
6.4.3 为我所用——截取字符串 129
6.4.4 一刀两断——分割字符串 130
6.4.5 见缝插针——插入字符串 131
6.4.6 钵满盒满——填充字符串 131
6.4.7 取之有道——删除字符串 132
6.4.8 推陈出新——复制字符串 133
6.4.9 移形幻影——替换字符串 134
6.5 深入学习可变字符串 135
6.5.1 高效率字符串对象操作——StringBuilder 135
6.5.2 我可以做些什——StringBuilder的使用 136
6.5.3 string类与StringBuilder类的区别 137
6.6 实战检验 138
6.6.1 制作字符串加密/解密程序 138
6.6.2 正则表达式分解字符串程序的实现 139
6.7 疑难解惑 140
6.7.1 (char)8和‘8’有什么不同 140
6.7.2 如何区别0、空字符串、Null、Empty和Nothing 140
6.7.3 选择合适的方法比较字符串 140
6.8 精彩回顾 140
第7章 批量数据处理专家——数组 143
7.1 本章学习任务 143
7.1.1 本章知识体系 143
7.1.2 带着任务往下学 143
7.2 数组从何而来 144
7.2.1 为什么使用数组 144
7.2.2 什么是数组 144
7.2.3 数组用途之广 144
7.3 从最简单的一维数组开始学起 145
7.3.1 一维数组的创建——很轻松吧 145
7.3.2 怎样对一维数组进行初始化 145
7.3.3 如何遍历一维数组 146
7.4 想掌握二维以及多维数组吗,跟我来 148
7.4.1 创建二维数组 148
7.4.2 怎样对二维数组进行初始化 150
7.4.3 学会遍历二维数组 151
7.4.4 解析多维数组 152
7.4.5 运用多维数组 153
7.5 原来数组有这么多操作 154
7.5.1 一个不留——清除数组内元素 155
7.5.2 合二为一——合并数组 156
7.5.3 化整为零——拆分数组 157
7.5.4 浅表副本——克隆数组 157
7.5.5 众里寻他千百度——查找数组元素 159
7.6 告诉你一个不一样的ArrayList集合 160
7.6.1 强大的ArrayList 160
7.6.2 ArrayList成员 160
7.6.3 试试多强大——ArrayList的使用 161
7.7 实战检验 161
7.7.1 操作便捷的简单电话簿 161
7.7.2 设计一个简单客车售票记录程序 162
7.8 疑难解惑 163
7.8.1 遍历数组还有什么方法 163
7.8.2 清空ArrayList集合中元素的问题 163
7.9 精彩回顾 164
第8章 步入面向对象程序设计的殿堂 166
8.1 本章学习任务 166
8.1.1 本章知识体系 166
8.1.2 带着任务往下学 166
8.2 掌握面向对象编程的核心——类 166
8.2.1 设计图纸——类是什么 166
8.2.2 准备设计图纸——定义类 167
8.2.3 根据类型来得到对象——类的使用 167
8.2.4 对象的生成——对象构造器 169
8.2.5 对象的释放——对象析构器 172
8.3 对象的状态和行为——字段、方法和属性 172
8.3.1 对象的状态——字段 172
8.3.2 怎样定义字段 173
8.3.3 如何定义方法 173
8.3.4 方法的使用 174
8.3.5 方法的重载 175
8.3.6 字段的封装——什么是属性 176
8.3.7 如何使用属性来封装字段 177
8.3.8 对集合的封装——索引器 179
8.4 面向对象编程特性之继承 180
8.4.1 继承——代码的重用 180
8.4.2 如何使用继承 181
8.5 你来我往——详解数据类型之间的转换 182
8.5.1 表里如一——隐式类型转换 182
8.5.2 循规蹈矩——显式类型转换 184
8.5.3 值类型的装箱和拆箱 185
8.6 可以被重写的方法——虚方法 186
8.6.1 如何定义虚方法 186
8.6.2 override重写虚方法 187
8.7 千变万化——抽象类 188
8.7.1 什么是抽象类 188
8.7.2 如何使用抽象类 189
8.8 功能的定义——接口 190
8.8.1 雾里看花——接口是什么 190
8.8.2 如何使用接口 191
8.8.3 一石二鸟——隐式实现接口 192
8.8.4 用心专一——显式实现接口 192
8.9 面向对象编程特性之——多态 193
8.9.1 什么是多态 193
8.9.2 怎样使用多态特性 193
8.10 实战检验 195
8.10.1 制作简单计时器 195
8.10.2 使用面向对象的思想计算圆及正方形周长 195
8.11 疑难解惑 197
8.11.1 关于属性和索引器的使用 197
8.11.2 装箱和拆箱操作为什么叫做“值类型的装箱和拆箱” 197
8.11.3 关于接口的问题 197
8.12 精彩回顾 197
第9章 使用Windows窗体搭建交互式图形界面 197
9.1 本章学习任务 200
9.1.1 本章知识体系 200
9.1.2 带着任务往下学 200
9.2 告诉你什么是Windows窗体 201
9.2.1 窗体的介绍 201
9.2.2 创建Windows窗体应用程序 202
9.3 Windows窗体的常见操作 205
9.3.1 窗体的最大化、最小化和正常大小 205
9.3.2 顶层窗体——控制窗体总在最前面 205
9.3.3 多姿多彩——更改窗体背景图片或颜色 206
9.3.4 看不清我吧——窗体的透明度 207
9.3.5 我可以隐身的哦——窗体的显示和隐藏 207
9.4 在一个窗体中装载多个窗体,很神奇吧 208
9.4.1 多文档窗体——让文档更有条理 208
9.4.2 建立多文档窗体 209
9.4.3 快来试一试——简单的多文档小程序 210
9.5 用最快的速度制作两个一模一样的窗体 212
9.5.1 定义基窗体 212
9.5.2 新建窗体并继承于基窗体 212
9.5.3 真的很神奇——有效使用继承窗体 215
9.6 实战检验 216
9.6.1 制作启动欢迎窗体 216
9.6.2 设计图形窗体 217
9.7 疑难解惑 218
9.7.1 项目编译之后的.pdb文件有何用处 218
9.7.2 MDI主窗体中的背景为何呈现灰色 219
9.7.3 创建继承窗体的两种方法有什么区别 219
9.7.4 区别Modifiers属性的3种访问修饰符 219
9.8 精彩回顾 219
第10章 你所必须知道的Windows控件 222
10.1 本章学习任务 222
10.1.1 本章知识体系 222
10.1.2 带着任务往下学 222
10.2 最简单、常用的文本类控件 223
10.2.1 窗体中的广告牌——标签控件 223
10.2.2 电子版的笔记本——文本框控件 224
10.2.3 一锤定音——按钮控件 227
10.3 选择数字、列表……,让选择类控件帮你实现 229
10.3.1 数字操作最佳工具——数字选择控件 229
10.3.2 唯一的选择——单选按钮 230
10.3.3 多重选择——必选复选框 232
10.3.4 编辑框和列表框的进化——组合框控件 234
10.3.5 存储字符串的盒子——列表控件 236
10.3.6 样式控制好帮手——列表视图控件 238
10.3.7 层次分明——树视图控件 241
10.4 控件大家族——分组类控件 244
10.4.1 带有标题框的分组——GroupBox 244
10.4.2 面板分组——Panel 244
10.4.3 选项卡面板分组——TabControl 245
10.5 天下三分——菜单、工具栏和状态栏 247
10.5.1 半数天下归于魏——菜单 247
10.5.2 民心向背在于蜀——工具栏 249
10.5.3 独树一帜当属吴——状态栏 251
10.6 实战检验 252
10.6.1 制作电子点菜系统 252
10.6.2 设计仿XP系统的任务栏菜单 253
10.7 疑难解惑 255
10.7.1 保持文本框的滚动条始终在最底端 255
10.7.2 如何对ListBox控件中的数据进行排序 256
10.7.3 在状态栏中实时显示当前系统时间 256
10.8 精彩回顾 256
第11章 掌握能够辅助程序开发的Windows控件 256
11.1 本章学习任务 259
11.1.1 本章知识体系 259
11.1.2 带着任务往下学 259
11.2 Windows系统中最常用的几种对话框 260
11.2.1 认识Windows消息对话框 260
11.2.2 如何找到文件的家——打开对话框 263
11.2.3 将文件存到何处——另存为对话框 264
11.2.4 确认文件的位置——浏览文件夹对话框 265
11.2.5 个性字体博览会——字体对话框 266
11.2.6 让世界充满颜色——颜色对话框 267
11.3 使用计时器方便地获取最新信息 268
11.3.1 认真守时——Timer组件 268
11.3.2 勤劳的小闹钟——Timer组件 269
11.3.3 鼠标哪里跑——Timer组件 270
11.4 漂亮的图片、好看的图标——图像控件帮你来存取 271
11.4.1 我型我秀——图像控件 271
11.4.2 画家的收藏夹——图像列表组件 272
11.5 想知道操作进度吗,那还不试试进度条控件 273
11.5.1 怎样使用进度条控件 273
11.5.2 Loading——以进度条驱散枯燥 274
11.6 实战检验 275
11.6.1 播放幻灯片的屏幕保护程序 275
11.6.2 飞舞的小蝴蝶动画效果的实现 276
11.7 疑难解惑 278
11.7.1 关于OpenFileDialog组件的问题 278
11.7.2 Timer组件的执行周期最大可以设计多长时间 278
11.7.3 ImageList中如果放入大图片会怎么样 278
11.7.4 ProgressBar控件的问题 278
11.8 精彩回顾 278
第12章 数据库管理系统开发必备 281
12.1 本章学习任务 281
12.1.1 本章知识体系 281
12.1.2 带着任务往下学 281
12.2 下面要介绍ADO.NET技术了,准备好了吗 282
12.2.1 ADO.NET简介 282
12.2.2 连接模式与非连接模式 283
12.3 我能连接数据库了——Connection对象 283
12.3.1 尝试前的准备——认识Connection对象 283
12.3.2 初次尝试——使用SqlConnection对象连接SQL Server 2005数据库 285
12.4 Command对象,执行SQL好帮手 285
12.4.1 认识Command对象 286
12.4.2 使用Command对象添加记录 287
12.4.3 使用Command对象删除记录 288
12.4.4 使用Command对象修改记录 288
12.4.5 使用Command对象查找记录 289
12.5 读取数据库中数据,就用DataReader对象 290
12.5.1 数据在这里——初识数据读取器 290
12.5.2 将数据库中的内容读出来——如何使用数据读取器 290
12.6 非连接模式不能知的DataSet与DataTable 291
12.6.1 内存中的数据库——DataSet 291
12.6.2 内存中的数据表——DataTable 292
12.7 功能强大的DataAdapter对象 293
12.7.1 认识数据适配器——DataAdapter对象 294
12.7.2 使用SqlDataAdapter对象填充DataSet数据集 294
12.7.3 使用SqlDataAdapter对象更新数据库中记录 295
12.8 用更方便的数据控件体现数据库操作 295
12.8.1 呈现数据我最强——DataGridView 296
12.8.2 一切都是这么轻松——DataGridView数据绑定 296
12.9 实战检验 297
12.9.1 制作个人通讯簿 297
12.9.2 设计个性影集程序 300
12.10 疑难解惑 304
12.10.1 使用SqlConnection对象连接数据库的问题 304
12.10.2 怎样取出DataReader中的数据呢? 305
12.10.3 什么是DataSet 305
12.11 精彩回顾 305
第13章 .NET 3.5神来之笔——LINQ数据访问技术 305
13.1 本章学习任务 307
13.1.1 本章知识体系 307
13.1.2 带着任务往下学 307
13.2 LINQ从何而来 308
13.3 .Net Framework 3.5——语言扩展 309
13.3.1 安全又方便——隐式类型局部变量 310
13.3.2 短小精悍——Lambda表达式 311
13.4 查询表达式对于LINQ有多重要 312
13.4.1 查询表达式 312
13.4.2 用from子句指定数据源 313
13.4.3 用where子句指定筛选条件 314
13.4.4 用select子句指定目标数据 315
13.4.5 用orderby子句进行排序 315
13.5 操作SQL数据库很简单,但你会用LINQ吗 316
13.5.1 创建LINQ实体类 316
13.5.2 执行数据的查询、添加、修改和删除操作 319
13.6 LINQ告诉你:操作任何数据都可以很方便 324
13.6.1 使用LINQ在数组中查询数据 324
13.6.2 使用LINQ操作XML文件 325
13.7 实战检验 327
13.7.1 LINQ防止SQL注入式攻击 327
13.7.2 使用LINQ实现数据分页 328
13.8 疑难解惑 330
13.8.1 如何使用LINQ生成随机序列 330
13.8.2 如何为LINQ实体类中的数据表设置主键 330
13.8.3 开发网站时有必要用到LINQ技术吗 331
13.9 精彩回顾 331
第14章 钟馗捉妖——程序调试与错误处理 331
14.1 本章学习任务 334
14.1.1 本章知识体系 334
14.1.2 带着任务往下学 334
14.2 “妖”之分类——常见的异常 335
14.2.1 千年小妖——语法错误 335
14.2.2 千年老妖——语义错误 336
14.2.3 千年老妖——逻辑错误 336
14.3 修练仙道——程序调试 337
14.3.1 仙术秘诀——设定断点 337
14.3.2 开始修练——调试断点 338
14.3.3 跨越险阻——中断执行 340
14.3.4 飞升成仙——停止执行 340
14.4 捉妖之术——C#中的最佳异常处理 341
14.4.1 使用try...catch语句捕获异常 341
14.4.2 使用try...catch...finally语句捕获异常 342
14.5 实战检验 343
14.5.1 制作捕获除数为零错误程序 343
14.5.2 制作捕获数据库连接错误程序 344
14.6 疑难解惑 344
14.6.1 如何区分程序中常见的3种异常 344
14.6.2 异常与Bug有什么区别 345
14.6.3 如何针对不同的异常进行捕捉 345
14.7 精彩回顾 345
第15章 Windows程序不可或缺的两个步骤——打包部署 345
15.1 本章学习任务 347
15.1.1 本章知识体系 347
15.1.2 带着任务往下学 347
15.2 Windows Installer,翻译成汉语看看 348
15.3 告诉你如何来创建Windows安装项目 349
15.4 原来制作Windows安装程序这么简单 350
15.4.1 添加项目输出 350
15.4.2 添加内容文件 350
15.4.3 创建桌面快捷方式 351
15.4.4 添加注册表项 352
15.4.5 生成Windows安装程序 354
15.5 用更容易的方式理解部署——安装 354
15.6 实战检验 356
15.6.1 打包程序时设置桌面图标 356
15.6.2 打包.NET Framework 3.5框架 357
15.7 疑难解惑 359
15.7.1 打包生成的.exe文件和.msi文件有何区别 359
15.7.2 常用的C#程序打包工具有哪些 359
15.8 精彩回顾 359
第2篇 小试牛刀——范例演练篇 363
第16章 打好根基——基础应用相关 363
16.1 完美实用——金额大小写转换 363
16.1.1 范例功能演示 363
16.1.2 开发思路指引 363
16.1.3 专家难点解析 363
16.1.4 设计过程详解 365
16.1.5 范例开发手记 367
16.1.6 进阶与提高 367
16.2 衣着华丽——窗体更换皮肤 368
16.2.1 范例功能演示 368
16.2.2 开发思路指引 368
17.2.3 专家难点解析 368
16.2.4 设计过程详解 369
16.2.5 范例开发手记 371
16.2.6 进阶与提高 372
16.3 亦真亦幻——仿QQ抽屉式窗体 372
16.3.1 范例功能演示 372
16.3.2 开发思路指引 373
16.3.3 专家难点解析 373
16.3.4 设计过程详解 374
16.3.5 范例开发手记 376
16.3.6 进阶与提高 377
16.4 绚丽多彩——七彩复选框 377
16.4.1 范例功能演示 377
16.4.2 开发思路指引 377
16.4.3 专家难点解析 378
16.4.4 设计过程详解 379
16.4.5 范例开发手记 380
16.4.6 进阶与提高 380
16.5 鉴别真伪——身份证号码验证工具 381
16.5.1 范例功能演示 381
16.5.2 开发思路指引 381
16.5.3 专家难点解析 382
16.5.4 设计过程详解 382
16.5.5 范例开发手记 384
16.5.6 进阶与提高 385
第17章 开发必备——数据库开发相关 385
17.1 全能数据库连接器 387
17.1.1 范例功能演示 387
17.1.2 开发思路指引 387
17.1.3 专家难点解析 388
17.1.4 设计过程详解 389
17.1.5 范例开发手记 391
17.1.6 进阶与提高 392
17.2 多条件查询员工信息 392
17.2.1 范例功能演示 392
17.2.2 开发思路指引 393
17.2.3 专家难点解析 393
17.2.4 设计过程详解 394
17.2.5 范例开发手记 396
17.2.6 进阶与提高 397
17.3 使用断开式连接批量更新数据库中数据 397
17.3.1 范例功能演示 397
17.3.2 开发思路指引 398
17.3.3 专家难点解析 398
17.3.4 设计过程详解 399
17.3.5 范例开发手记 400
17.3.6 进阶与提高 400
17.4 将图片以二进制形式存入数据库 400
17.4.1 范例功能演示 400
17.4.2 开发思路指引 401
17.4.3 专家难点解析 401
17.4.4 设计过程详解 402
17.4.5 范例开发手记 403
17.4.6 进阶与提高 404
17.5 通过存储过程对员工信息进行管理 405
17.5.1 范例功能演示 405
17.5.2 开发思路指引 405
17.5.3 专家难点解析 406
17.5.4 设计过程详解 407
17.5.5 范例开发手记 410
17.5.6 进阶与提高 411
17.6 使用事务批量删除生产单信息 412
17.6.1 范例功能演示 412
17.6.2 开发思路指引 413
17.6.3 专家难点解析 413
17.6.4 设计过程详解 413
17.6.5 范例开发手记 415
17.6.6 进阶与提高 415
第18章 引领时尚——图形图像及多媒体应用 415
18.1 让画面更流畅——使用双缓冲技术绘图 417
18.1.1 范例功能演示 417
18.1.2 开发思路指引 417
18.1.3 专家难点解析 417
18.1.4 设计过程详解 418
18.1.5 范例开发手记 419
18.1.6 进阶与提高 420
18.2 画家的培养——画桃花 420
18.2.1 范例功能演示 420
18.2.2 开发思路指引 421
18.2.3 专家难点解析 421
18.2.4 设计过程详解 422
18.2.5 范例开发手记 423
18.2.6 进阶与提高 423
18.3 随心所欲——屏幕抓图 424
18.3.1 范例功能演示 424
18.3.2 开发思路指引 424
18.3.3 专家难点解析 425
18.3.4 设计过程详解 426
18.3.5 范例开发手记 427
18.3.6 进阶与提高 428
18.4 流行时尚——打造自己的开心农场 428
18.4.1 范例功能演示 428
18.4.2 开发思路指引 429
18.4.3 专家难点解析 429
18.4.4 设计过程详解 430
18.4.5 范例开发手记 433
18.4.6 进阶与提高 433
18.5 经典之作——MP3播放器 434
18.5.1 范例功能演示 434
18.5.2 开发思路指引 434
18.5.3 专家难点解析 434
18.5.4 设计过程详解 435
18.5.5 范例开发手记 437
18.5.6 进阶与提高 438
第19章 新品展示——WPF图形化显示系统 440
19.1 花样百出——两种图形有多少种组合方式 440
19.1.1 范例功能演示 440
19.1.2 开发思路指引 440
19.1.3 专家难点解析 441
19.1.4 设计过程详解 442
19.1.5 范例开发手记 443
19.1.6 进阶与提高 443
19.2 冲击视觉——实现Windows 7的Aero效果 443
19.2.1 范例功能演示 443
19.2.2 开发思路指引 444
19.2.3 专家难点解析 444
19.2.4 设计过程详解 445
19.2.5 范例开发手记 447
19.2.6 进阶与提高 447
19.3 雾里看花——图片的浮雕边缘效果 448
19.3.1 范例功能演示 448
19.3.2 开发思路指引 448
19.3.3 专家难点解析 448
19.3.4 设计过程详解 449
19.3.5 范例开发手记 449
19.3.6 进阶与提高 450
19.4 动感十足——旋转的立方体 451
19.4.1 范例功能演示 451
19.4.2 开发思路指引 451
19.4.3 专家难点解析 452
19.4.4 设计过程详解 453
19.4.5 范例开发手记 455
19.4.6 进阶与提高 455
19.5 如影随形——模拟车轮的滚动路径 456
19.5.1 范例功能演示 456
19.5.2 开发思路指引 456
19.5.3 专家难点解析 457
19.5.4 设计过程详解 458
19.5.5 范例开发手记 460
19.5.6 进阶与提高 460
19.6 精彩无限——使用WPF打造炫目视频播放器 460
19.6.1 范例功能演示 460
19.6.2 开发思路指引 461
19.6.3 专家难点解析 461
19.6.4 设计过程详解 463
19.6.5 范例开发手记 465
19.6.6 进阶与提高 466
第20章 明日快递单打印系统——单据打印系统模板 466
第3篇 初露锋芒——项目实战篇 469
20.1 明日快递单打印系统概述 469
20.1.1 研发背景 469
20.1.2 需求分析 469
20.1.3 系统功能结构图 469
20.2 数据库设计 470
20.2.1 设计数据表结构 470
20.2.2 创建存储过程 471
20.3 技术准备 472
20.3.1 自定义控件 472
20.3.2 泛型的应用简介 474
20.4 主要功能模块设计 475
20.4.1 快递单设置设计 475
20.4.2 快递单打印设计 482
20.4.3 快递单查询设计 486
20.5 程序调试与错误处理 492
20.5.1 空引用异常调试 492
20.5.2 数组越界异常调试 493
20.6 开发总结 494
20.6.1 技术总结 494
20.6.2 经验总结 495
第21章 QQ自动登录器——方便你我他 495
21.1 QQ自动登录器概述 497
21.1.1 研发背景 497
21.1.2 需求分析 497
21.1.3 系统业务流程图 497
21.1.4 系统功能结构图 497
21.2 技术攻关 498
21.2.1 QQ自动登录器实现原理 498
21.2.2 使用MD5加密算法加密QQ密码 498
21.2.3 使用XML文件存储QQ账号信息 499
21.3 公共类设计 500
21.3.1 QQInfo类设计 500
21.3.2 QQRegister类设计 501
21.3.3 QQFilePath类设计 502
21.4 主要功能模块设计 503
21.4.1 QQ自动登录器主窗体设计 503
21.4.2 添加QQ账号模块设计 509
21.4.3 设置QQ程序路径模块设计 511
21.5 程序调试与错误处理 513
21.5.1 XML文件序列化失败 513
21.5.2 QQ账号和密码无法传递 514
21.6 开发总结 514
21.6.1 技术总结 514
21.6.2 经验总结 515
第22章 雷速网络下载专家——让你忘记迅雷 515
22.1 雷速网络下载专家概述 517
22.1.1 研发背景 517
22.1.2 需求分析 517
22.1.3 系统业务流程图 517
22.1.4 系统功能结构图 518
22.2 技术攻关 518
22.2.1 多线程下载实现原理 518
22.2.2 保存和读取续传信息 520
22.2.3 合并多线程下载文件 520
22.3 公共类设计 521
22.3.1 Locations类设计 521
22.3.2 DownLoad类设计 522
22.3.3 xuchuan类设计 523
22.4 主要功能模块设计 524
22.4.1 雷速主窗体设计 524
22.4.2 添加下载任务模块 531
22.5 程序调试与错误处理 533
22.5.1 无法连接到下载服务器 533
22.5.2 无法使用多线程下载资源 534
22.6 开发总结 534
22.6.1 技术总结 534
22.6.2 经验总结 535
第23章 编程词典销售分析系统——让用户了解我们 535
23.1 编程词典销售分析系统概述 537
23.1.1 研发背景 537
23.1.2 需求分析 537
23.1.3 系统功能结构图 537
23.2 数据库设计 538
23.2.1 主要数据表结构 538
23.2.2 创建视图 541
23.2.3 创建存储过程 541
23.3 技术准备 542
23.3.1 动态实例化窗体 542
23.3.2 可空类型的使用 542
23.4 主要功能模块设计 543
23.4.1 产品大类设计 543
23.4.2 代理登记设计 546
23.4.3 订货单设计 551
23.4.4 权限分配设计 557
23.5 程序调试与错误处理 560
23.6 开发总结 561
23.6.1 技术总结 561
23.6.2 经验总结 562
第24章 企业ERP管理系统(C/S架构) 562
第4篇 挑战自我——商业系统篇 565
24.1 企业ERP管理系统概述 565
24.1.1 什么是ERP和ERP管理系统 565
24.1.2 ERP的发展阶段 565
24.2 系统分析 566
24.2.1 需求分析 566
24.2.2 开发工具选择 567
24.3 总体设计 567
24.3.1 项目规划 567
24.3.2 ERP管理系统流程图 567
24.3.3 系统功能结构 568
24.4 系统设计 569
24.4.1 设计目标 569
24.4.2 开发及运行环境 569
24.4.3 系统预览 570
24.4.4 数据库命名规范 572
24.4.5 数据库设计 573
24.5 技术准备 581
24.5.1 使用泛型集合、字典存储不同的信息列表 581
24.5.2 使用SqlTransaction事务处理对象 584
24.5.3 动态设置水晶报表数据源 585
24.6 公共模块设计 585
24.6.1 文件及文件夹模块设计 585
24.6.2 公共类设计 587
24.7 主要功能模块设计 599
24.7.1 物料清单设计 599
24.7.2 采购入库单设计 609
24.7.3 销售收款单设计 621
24.7.4 库存清单设计 628
24.7.5 生产单设计 630
24.7.6 生产完工处理设计 639
24.7.7 产品销售毛利汇总表设计 646
24.7.8 操作权限设计 649
24.8 系统打包部署 653
24.9 系统使用手册 658
24.10 疑难问题分析与解决 660
24.10.1 向被数据绑定的DataGridView控件的行集合中添加行 660
24.10.2 动态添加DataGridView控件的列 660
24.11 程序调试与错误处理 662
24.11.1 空引用异常调试 662
24.11.2 水晶报表查询错误调试 663
24.12 技术、经验总结 663
24.12.1 技术总结 663
24.12.2 经验总结 664