标题：在实战中成长:C++开发之路
图书信息
作　者：  钟岱晖 
出 版 社： 电子工业出版社
出版时间： 2009-6-1
页　数：404页
开　本： 16
ISBN：9787121083310
定价: 17.00元
宣传语
从项目实战中学习理论，边做边学。
从企业项目中精简，切合实际。
项目从简单的雏形逐步商业化，循序渐进。
内 容 简 介
本书目的旨在为C++初学者搭建一个通向程序员的桥梁，通过实际的项目摆脱纯知识点练习的枯燥乏味。并期望在项目的开发过程中读者能感悟到成功的软件，其开发过程不是简单的编写代码实现功能。
在最初的几章里介绍了要完成书中项目必须掌握的知识点，包括对开发环境的认识、MFC、UML。接下来的章节中采用了一个循序渐进的过程，通过一个简单的小项目开始，旨在帮助读者熟悉项目开发过程中涉及的各项工作，并指出一些读者应该掌握的知识点。完成这个小项目后，读者应该具备了一定的动手能力，可以进入正式的实战项目的开发，笔者通过图形的方式帮助读者理解项目中的功能需求，并引领读者分析项目并实现功能，最终完成一个企业即时通信系统的一个商业版框架。书的最后一个章节，笔者列举了作为商业版的软件应该完成的功能列表，希望帮助读者真正地理解商业化的含义。
丛 书 序
前几天，应青软实训技术研发中心老师的邀请为青软实训《在实战中成长》丛书写序，让我想起了三年前的这个时候。当时，为了更好地解决大学生的动手实践能力与企业需求之间存在差距的问题，在相关政府、高校、软件企业等各方的协助及大力支持下，成立了青软实训。
现在，从青软实训走出的学员遍布了北京、上海、大连、青岛等全国各地的软件企业，我和我的同仁在体会到快乐的同时，也感受到了深深的责任感。我们发现，虽然学员在实训中学习的时间只有短短的几个月，但我们带给学员的技术课程、对学员进行的综合素养的训练、与学员的沟通交流以及指导学员完成的项目等都有会对他们今后的职业发展产生影响。
正是基于这样的责任感，才让我们不断地思考，通过什么样的方式才能让作为初学者的学员学好软件开发技术。青软实训的讲师都是拥有多年企业级项目开发经验的项目经理及技术专家，在我们日常的讨论及交流中，大家普遍有一个共识，软件技术还是应该在实战中学习、在项目中学习。我们也确实将这样的教学理念运用到了实训的课程设计及教学实践中。
现在大家面前的这一套《在实战中成长》丛书，正是这一教学理念及实践经验的积累及系统体现。这套丛书的编写思路是以实战项目的开发为主线，将项目的开发过程与相关开发技术的讲解有机融合，使得读者在完成项目开发的同时学习相关的开发技术，真正地做到在实战中成长。第一批出版的本套丛书共包含三本：
《在实战中成长——C++开发之路》
《在实战中成长——JSP开发之路》
《在实战中成长——Windows Forms开发之路》
我们希望通过这套丛书帮助软件开发技术的初学者以一种更加高效、直接以及富有成就感的方式学习软件开发技术，同时也希望通过这套丛书把青软实训总结出的一些好的做法分享给更多的人。
这套丛书的策划及编写是由青软实训技术研发中心的各位讲师共同完成的，他们中的很多位老师都为这套丛书的出版付出了辛苦的劳动。特别是负责首批三本图书编写的钟岱晖、高峰、于翔三位老师，他们是在完成大量教学工作的同时，保质保量地完成了图书的编写工作。在此，我也对他们所做的辛苦工作表示感谢。
同时，这套丛书的出版还得到了电子工业出版社的大力帮助及支持。我向在此过程中给予我们大力帮助及指导的李冰、江立及许艳等各位编辑表示感谢。
在这几年实训的过程中，我发现兴趣和方法在软件技术的学习过程中是非常重要的。对技术的兴趣及良好的学习方法可以让技术学习的过程充满乐趣。希望青软实训《在实战中成长》这套丛书带给大家的也是充满乐趣的阅读体验及学习过程。
青软实训CEO 刘全
2009年5月于青岛
前 言
本书特点
本书目的旨在为C++初学者搭建一个通向程序员的桥梁，让读者通过实际的项目摆脱纯知识点练习的枯燥乏味。
特点一，贴近实际应用。本书通过项目实战的方式引领读者步入软件开发，从一个简单的项目开始，逐步过渡到复杂的项目，最终形成一个商业化产品的雏形。
特点二，在实战中学习。本书不仅仅是让读者学习C++的编码，而是期望读者能逐步掌握软件开发的分析方法，理解软件开发的构成元素。
特点三，从how到why。作为初学者一般都能很快地掌握一些语法和代码技巧，但是在使用的时候却经常出错，虽然能找到一些解决方案，对于问题产生的根本原因依然不甚了解，导致此类问题依然不断出现，或者要大量地记忆各种使用情况，对初学者的信心造成不小的影响。本书针对这点首先让初学者明白如何使用，然后由浅入深地逐渐阐明为什么要如此使用，希望能引导初学者走出语法学习的困境，真正地专注于事务逻辑的处理。
特点四，本书最后会帮助读者完成一个完整的项目，其中穿插大量的软件工程的内容，包括各种图及分析表。笔者希望能帮助读者由代码实现逐步过渡到功能实现层面，为成为合格的程序员奠定基础。
目 录  知识准备
第1章 Visual Studio 2008引1.1 Visual Studio 2008简介 2
1.1.1 简介 2
1.1.2 版本介绍 3
1.2 Visual C++ 2008简介 4
1.2.1 Visual C++ 2008版本 4
1.2.2 Visual C++ 2008项目模板 7
1.2.3 Visual C++ 2008中的新增功能 7
1.2.4 Visual C++ 2008中的重大变更 10
小结 10
第2章 使用Visual C++ 20082.1 简介 11
2.2 项目和解决方案 11
2.2.1 使用项目和解决方案 11
2.2.2 使用解决方案资源管理器 12
2.2.3 添加源文件 14
2.3 生成项目 14
2.4 测试项目 15
2.5 调试项目 16
2.6 部署程序 17
小结 18
第3章 MFC3.1 什么是MFC 19
3.2 为什么选择MFC 21
小结 21
第4章 UML 224.1 什么是UML 22
4.2 UML包含的元素 22
4.3 在软件开发的不同阶段对应的UML 25
小结 25
目录 从简单的程序开始
第5章 文件管理器5.1 项目概述 28
5.2 知识点介绍 28
5.2.1 关于字符及编码 28
5.2.2 字符串操作 31
5.2.3 文件操作 32
5.2.4 对话框 33
5.3 项目分析 35
5.4 项目实现 35
5.4.1 搭建用户界面 36
5.4.2 获取系统文件目录结构 42
5.4.3 文件过滤 50
5.4.4 文件类别 51
5.4.5 文件管理 57
小结 60第6章 配置参数6.1 模块概述 61
6.2 知识点介绍 61
6.3 模块分析 65
6.4 功能实现 66
6.5 项目整合 74
6.5.1 保存用户自定义设置 74
6.5.2 读取用户自定义设置 76
小结 78第7章 在项目中学习7.1 几种字符串类型 79
7.1.1 字符串类型的对比 79
7.1.2 使用CString类 83
7.2 字符串列表和字符串数组 89
7.2.1 字符串数组（CStringArray） 89
7.2.2 字符串列表（CStringList） 90
小结 92
目录  即时通信系统——服务端
第8章 项目概述8.1 项目背景 94
8.2 项目需求 96
8.3 项目拆分 97
小结 97第9章 必备知识点9.1 网络编程基础 98
9.1.1 协议的概念 98
9.1.2 端口的概念 99
9.1.3 Socket编程 100
9.1.4 CSocket简介 104
9.2 数据库基础 107
9.3 多线程处理 109
9.3.1 线程的概念 109
9.3.2 多线程的使用方式 109
9.3.3 线程的同步 111
9.3.4 线程的同步类 113
小结 122第10章 服务端项目分析10.1 整体分析 123
10.2 活动分析 126
小结 128
第11章 构建数据库11.1 用户信息数据表 129
11.2 用户信息数据关系 130
11.3 辅助信息数据表 131
小结 132第12章 服务器框架搭建12.1 建立解决方案 133
12.2 配置数据库 134
12.3 搭建系统主界面 135
小结 136第13章 系统登录13.1 用户界面及相关处理 137
13.2 后台处理 139
小结 145第14章 服务端管理14.1 服务端系统设置 146
14.2 用户信息管理 151
14.3 公告管理 174
小结 185第15章 服务管理15.1 实现通信模块 186
15.2 实现协议解析模块 190
15.3 控制服务的启动与关闭 194
小结 199
目录 即时通信系统——客户端
第16章 客户端项目分析 202
16.1 整体分析 202
16.2 活动分析 205
小结 208第17章 搭建客户端框架17.1 建立解决方案 209
17.2 添加数据传输类 210
17.3 建立应用程序通信协议 210
17.4 数据分发与封装处理 217
小结 223第18章 系统登录18.1 建立登录界面 224
18.2 增加连接参数设置 225
18.3 增加登录验证 225
18.4 增加服务端验证处理 230
18.5 连接参数配置 233
小结 235第19章 加载系统主界面19.1 建立系统主界面及所需的加载页 236
19.2 建立加载页与主对话框的关联 239
19.3 载入客户端初始化信息 242
19.3.1 加载用户信息 242
19.3.2 加载用户列表 245
19.3.3 加载公告列表 254
19.4 显示信息 258
19.4.1 组织信息 258
19.4.2 用户信息 260
19.4.3 公告信息 262
小结 266第20章 配置、聊天及文件传输20.1 个性化参数配置 267
20.2 聊天处理 271
20.3 文件传输处理 278
小结 291第21章 企业即时通信的商业扩展21.1 即时通信模块 292
21.2 视频会议模块 293
21.3 用户定义模块 293
21.4 系统管理模块 293
21.5 后台管理模块 294
小结 295第22章 C++/CLI22.1 语言关键字 297
22.2 托管类型 298
22.2.1 声明一个托管类类型 298
22.2.2 一个CLI的引用类对象的声明 300
22.2.3 CLI数组的声明 305
22.2.4 析构函数语义的变化 307
22.3 类或接口中的成员声明 311
22.3.1 属性声明 311
22.3.2 属性索引声明 313
22.3.3 委托和事件 315
22.3.4 密封一个虚函数 317
22.3.5 操作符重载 318
22.3.6 转换操作符 319
22.3.7 接口成员的显式重写 320
22.3.8 私有虚函数 321
22.3.9 静态常量整型的连接方式 322
22.4 值类型及其行为 322
22.4.1 CLI枚举类型 323
22.4.2 隐式装箱 326
22.4.3 装箱值的跟踪句柄 327
22.4.4 值类型语义 328
22.5 语言变化概要 332
22.5.1 字符串 332
22.5.2 参数数组和省略号 334
22.5.3 typeof改为T::typeid 335
22.5.4 强制转换符号和safe_cast<>简介 335
22.6 推动修订版语言设计 339
小结 345
附录A 几种常用的网络通信模型 346
附录B 数据库设计 367
附录C Microsoft Access 2007 378
附录D Visual Studio 2010简介 387