第1章 软件开发过程与方法 1
1-1 软件工程 1
1-1-1 需求分析 2
1-1-2 系统分析与设计 2
1-1-3 编码实现 3
1-1-4 测试 3
1-1-5 维护 4
1-1-6 小结 4
1-2 软件开发方法 4
1-2-1 面向数据流的设计方法 4
1-2-2 结构化方法 5
1-2-3 面向数据结构的软件开发方法 5
1-2-4 问题分析法 5
1-2-5 面向对象的软件开发方法 6
1-3 面向对象的统一建模语言UML 7
1-3-1 UML概述 7
1-3-2 UML视图介绍 8
1-3-3 小结 12
第2章 电子元器件绘制系统 13
2-1 系统背景 13
2-2 Windows图形编程基本技术 14
2-2-1 图形设备接口(GDI) 14
2-2-2 设备环境DC 14
2-3 MFC中与图形相关的类介绍 14
2-3-1 CDC类 15
2-3-2 GDI对象类 17
2-3-3 CDC类和GDI对象类合作 21
2-3-4 坐标变换和映射模式 22
2-3-5 OnPaint()和OnDraw() 24
2-4 序列化 25
2-4-1 序列化概念 25
2-4-2 序列化机制 26
2-4-3 实现类的序列化 26
2-4-4 文档/视图架构程序中数据的序列化 28
2-5-1 绘制功能 29
2-5 电子元器件绘制系统的需求分析 29
2-5-2 图形编辑功能 30
2-5-3 器件属性的编辑 31
2-5-4 保存器件图 32
2-6 电子绘制系统分析与详细设计 32
2-6-1 用例分析(用例图) 32
2-6-2 对象之间的交互分析(顺序图或协作图) 32
2-6-3 业务过程分析(活动图) 37
2-6-4 抽象出来的类(类图) 39
2-6-5 其他的数据结构 46
2-6-6 器件示意图的外观比例设计 46
2-7 重点功能实现方法 48
2-7-1 绘制器件图 48
2-7-2 选择器件图 51
2-7-3 器件图的放大/缩小、单个器件图的移动 57
2-7-4 器件图的Z_Order顺序调整 58
2-7-5 复制/粘贴 59
2-7-6 鼠标形状的改变 62
2-7-7 截获Windows的消息实现多个器件图的移动 63
2-7-8 理解CObList类,以防内存泄漏 66
2-8 进阶与提高 67
2-9 小结与回顾 69
第3章 统一数据库管理系统 71
3-1 统一数据库管理系统的开发背景 71
3-2 大型关系数据库基本知识 72
3-2-1 关系数据库模型 72
3-2-2 关系数据库对象 72
3-3-2 数据定义语言DDL 73
3-3 SQL语言 73
3-3-1 SQL简介 73
3-3-3 数据操纵语言DML 77
3-4 ADO技术 80
3-4-1 ADO对象 80
3-4-2 ADO接口 83
3-4-3 使用ADO接口 83
3-5 统一数据库管理平台的用户需求 85
3-5-1 数据表管理功能 85
3-5-2 视图管理功能 86
3-5-3 存储过程管理功能 87
3-5-4 数据操作功能 87
3-5-5 SQL操作功能 88
3-6 统一数据库管理平台的分析与设计 88
3-6-1 数据库管理功能分析和设计 88
3-6-2 系统的数据结构 94
3-6-3 统一数据库管理平台的主界面 95
3-7-1 取得数据库的结构 96
3-7 重点代码讲解 96
3-7-2 动态创建数据源 100
3-7-3 创建数据库 103
3-7-4 删除数据库 104
3-7-5 存储过程的相关操作 104
3-7-6 显式调用外部DLL 105
3-7-7 取得数据库对象的脚本 107
3-7-8 Explorer风格窗口 109
3-7-9 树控件 111
3-9 小结与回顾 122
3-8 安装与配置 122
第4章 考勤系统 123
4-1 Visual C++中数据库访问方法 123
4-2 ODBC方法访问数据库 124
4-2-1 ODBC基本知识 124
4-2-2 MFC ODBC类 125
4-3 MFC DAO的方法访问数据库 135
4-3-1 MFC DAO类 135
4-3-2 数据库操作 135
4-3-3 表操作 136
4-3-4 记录集操作 137
4-4 MFC中的动态数据交换机制 139
4-5 结构化异常处理 142
4-5-1 结构化异常处理机制(SEH) 143
4-5-2 MFC中的异常类 145
4-6 需求分析说明 148
4-6-1 签到功能 148
4-6-4 系统配置功能 149
4-6-2 查询功能 149
4-6-3 修改功能 149
4-6-5 员工维护 150
4-6-6 用户登录 150
4-6-7 系统用户维护 150
4-7 系统分析与数据库设计 150
4-7-1 数据库设计 150
4-7-2 类设计 152
4-8 重点功能实现代码 152
4-8-1 改变对话框中控件的字体 153
4-8-2 取得记录集对象的记录个数 155
4-8-3 登录对话框实现 156
4-8-4 用户权限不同决定可使用的功能(菜单的控制) 157
4-8-5 CTime类在签到功能中的使用 160
4-8-6 查询某个员工某个时间段的出勤情况 168
4-8-7 修改出勤功能实现 173
4-8-8 员工维护 178
4-8-9 系统配置维护 180
4-8-10 用户管理 182
4-9 小结与回顾 184
第5章 网络信使系统 185
5-1 Windows Sockets API编程技术 185
5-1-1 Socket基本概念 185
5-1-2 Socket分类 186
5-1-3 WinSock API编程 186
5-2 MFC Socket编程技术 195
5-2-1 CAsyncSocket类 195
5-2-2 CSocket类 197
5-3 XML DOM技术基本知识 199
5-3-1 XML概述 199
5-3-2 DOM接口 200
5-3-3 创建DOM文档对象 201
5-3-4 加载XML文档 202
5-3-5 遍历XML文档 203
5-4 多线程技术 204
5-4-1 创建多线程程序 204
5-4-2 线程同步 206
5-5 网络信使需求分析 209
5-5-1 在线朋友维护 209
5-5-2 聊天功能 210
5-5-3 文件传输功能 210
5-5-4 查看历史信息 211
5-6 分析与设计 211
5-6-1 用例分析(用例图) 211
5-6-2 对象之间的交互分析(顺序图或协作图) 213
5-6-3 主要过程分析(活动图) 215
5-6-4 类设计 219
5-6-5 XML方式的数据格式 230
5-6-6 在线朋友数据结构 231
5-7 重点代码讲解 231
5-7-1 读取系统配置和用户配置XML文件 231
5-7-2 UDP广播实现朋友上线 234
5-7-3 朋友下线通知 242
5-7-4 XML聊天报文发送 244
5-7-5 聊天报文接收 250
5-7-6 查看聊天历史记录 254
5-7-7 文件发送 256
5-7-8 文件接收 260
5-7-9 拖拽文件实现 264
5-8 小结与回顾 266
第6章 软件在线升级系统 267
6-1 COM基本知识 267
6-1-1 COM特点 268
6-1-2 COM接口 269
6-1-3 IUnknown接口 272
6-1-4 类厂(Class Factory) 275
6-2 ATL编写COM 276
6-2-1 C++中的模板 277
6-2-2 智能指针 278
6-2-3 ATL的智能指针 280
6-3 WinInet API中与HTTP相关的函数 282
6-3-1 HTTP的工作方式 282
6-3-2 HTTP客户请求 284
6-3-3 HTTP客户获取服务器的响应信息 285
6-4 MFC WinInet类 288
6-4-1 CInternetSession类 288
6-4-2 连接类 290
6-4-3 文件类 291
6-4-4 文件查找 295
6-5 软件在线升级系统的用户需求 296
6-5-1 初始下载界面 296
6-5-2 下载应用系统安装程序 297
6-5-3 安装应用系统 297
6-5-4 检查当前服务器上的版本号 297
6-5-5 更新应用系统 297
6-6 软件在线升级系统的分析与设计 297
6-6-1 IE瘦客户端 298
6-6-2 Web+ActiveX 298
6-6-4 Web页面 300
6-7 重点代码讲解 300
6-6-3 应用程序端 300
6-7-1 工程创建和IUpgradeAtx接口 301
6-7-2 判断程序是否已经存在 305
6-7-3 远程FTP下载 306
6-7-4 启动安装 311
6-7-5 COM组件在IE中显示进度 311
6-7-6 ActiveX的安装与压缩cabarc 312
6-7-7 对Cab文件进行数字签名 313
6-7-8 网页的编写 314
6-7-9 服务器方提供当前最新的版本号 315
6-8 小结与回顾 315
第7章 五笔编码速查系统 317
7-1 需求分析说明 317
7-1-1 五笔编码查询功能 317
7-1-2 在线升级 318
7-1-3 快捷键呼叫功能 318
7-1-4 最小化到通知区 318
7-2-2 在线检查升级设计 319
7-2-1 五笔编码查询设计 319
7-2 系统分析与设计 319
7-1-5 指定汉字输入法 319
7-3 重点功能实现代码 320
7-3-1 五笔编码查询 320
7-3-2 在线升级 323
7-3-3 修改PropertySheet窗口风格 330
7-3-4 给PropertySheet加入菜单 331
7-3-5 拦截PropertySheet的内定动作 332
7-3-6 加入快捷键支持 333
7-3-7 最简单的自定义消息框MessageBoxlndirect 335
7-3-8 通知区功能 336
7-3-9 控制系统单一运行实例 338
7-3-10 选择和激活输入法 339
7-3-11 保存系统配置 342
7-4 小结与回顾 344
第8章 流媒体计费系统 345
8-1 需求分析说明 345
8-1-2 计费 346
8-1-1 授权 346
8-1-4 限制连接数量 347
8-1-5 支持多个收费目录 347
8-1-3 内容翻转 347
8-2 系统分析与设计 348
8-2-1 架构选择与设计 348
8-2-2 授权功能 348
8-2-3 计费功能 349
8-2-4 限制和翻转播放内容 350
8-3-2 编写Helix Universal Server插件 351
8-3 重点功能实现代码 351
8-3-1 Helix Universal Server开发环境 351
8-3-3 限制和翻转播放内容 358
8-3-4 建立定时器控制 364
8-3-5 进行授权请求 367
8-3-6 进行计费请求 377
8-3-7 创建常用对象IRMAValues和IRMABuffer 384
8-3-8 自定义插件描述信息 385
8-3-9 从连接中得到Cookie 386
8-3-10 使用UDP进行通讯 388
8-4 小结与回顾 390
第9章 停车场管理系统 391
9-1 Visual C++实现串口通信 391
9-1-1 串口通信概述 391
9-1-2 控件的方法实现串口通信 393
9-1-3 标准通信函数的方法实现串口通信 396
9-1-4 文件的方法实现串口通信 397
9-2-1 动态链接库的调用方式 406
9-2 动态链接库 406
9-2-2 动态链接库的入口/出口函数 407
9-2-3 MFC DLL 408
9-2-4 使用动态链接库 409
9-3 需求分析说明 414
9-3-1 打印凭据 415
9-3-2 抓拍图像 415
9-4-1 数据库设计 416
9-4 系统分析与设计 416
9-3-5 LED电子显示和智能报价 416
9-3-3 扫描条码 416
9-3-4 收费 416
9-4-2 进入停车场 418
9-4-3 条形码支持 418
9-4-4 收费 419
9-4-5 智能报价 420
9-5 重点功能实现代码 421
9-5-1 串口通讯 421
9-4-6 LED电子显示屏 421
9-5-2 使用视频设备 435
9-5-3 在VC中隐式调用DLL 441
9-5-4 系统配置信息 442
9-5-5 同步客户机和服务器上的时间 445
9-5-6 智能报价 447
9-5-7 条码打印 455
9-5-8 自定义动画播放 457
9-6 小结与回顾 460
附录 光盘使用及版权说明 461