
本书面向零基础的计算机专业学生或者喜欢编程的读者。书中提供的项目简练、易入门,力图通过CMMI 2级简化模型的软件过程管理的方式,让学生掌握项目计划以及项目计划跟踪与控制,通过角色扮演方式了解企业软件开发流程与团队合作。另外,本书的项目基于MFC框架进行可视化编程,使读者更易上手。全书共13章,内容涵盖了整个软件开发流程,每章的知识点配备有图文解释以及相关的项目练习。
本书可作为高等学校及各类培训机构计算机专业课程的教材或参考书。
C++语言程序设计项目实践
企业的软件项目开发一般分为问题的定义及规划、需求分析、软件设计、程序编码、软件测试5个阶段。很多学校把软件项目开发的5个阶段分解成多门独立的课程,导致学生在实践过程中不能系统地了解项目开发流程,没有形成完整的项目文档。另外,一个大型项目需要各类角色的参与和协作。本书以“个人通讯录”项目为案例,让学生以项目角色扮演的形式参与进来,从而认识自己的职责范围,发挥各自特长,同时基于CMMI 2级简化模型的软件过程管理实践,开发出“高内聚低耦合”的项目,与一线企业接轨。
本书使用Visual Studio进行MFC(Microsoft Foundation Classes,微软基础类库)项目开发,该工具是开发C++语言类项目使用的重要工具,而C++程序设计语言是计算机相关专业学生应掌握的一门语言。通过对Visual Studio开发平台和C++程序设计语言的学习,学生可以了解Visual Studio平台的开发环境,了解MFC的程序架构、事件驱动和用户程序界面设计方法,为成为一名优秀的软件程序员打下必要的基础。
本书具有以下特点。
(1) 以项目为中心。 以“个人通讯录”(ContactList)项目开发过程为主线,按照CMMI 2级简化模型逐步展开,以完成此项目的开发为终结。
(2) 先练后学。 在项目开发过程中先按照规定的步骤完成代码的编写和运行,然后对新知识进行讲解,让学生每节课都有成就感。
(3) 与主教材和主课程紧密结合。 本书不系统讲解语法知识,只注明所需语法知识在主教材和主课程中的位置,让学生自行学习或复习。
(4) 课程设计。 要求学生完成一个比ContactList难度略高的软件项目的开发。4~6名学生为一组,分配项目经理、软件工程师、测试工程师、UI设计师等角色,项目分成需求分析、概要设计、编码、测试和答辩5个环节执行。
(5) 应用程序界面。设计均采用商业化的风格,在课堂教学和课程设计实践中就开始培养学生编写商业化项目的思路与方法。
本书主要由南宁学院高博软件学院的黄匀、何文河编写,清华大学郑莉教授、高博软件学院的彭振云和唐昭琳参加了部分编写和审校工作,并在本书的编写中给予了许多建议,在此谨致谢意。在本书的编写过程中参考了目前国内比较优秀的有关MFC程序设计方面的书籍,在此谨向有关作者表示感谢。另外,本书建议安排64个学时,其中40个学时用于讲授本书和完成课堂练习,24个学时用于课程设计。
由于作者水平有限,书中难免会有疏漏和错误之处,恳请读者批评指正。
作者
2018年5月
第1章Visual Studio 2012介绍1
1.1Visual Studio 2012的安装要求2
1.2Visual Studio 2012的安装步骤2
1.3Visual Studio 2012集成开发环境介绍4
1.4小结7
第2章初识MFC编程8
2.1可视化程序设计8
2.2使用AppWizard创建ContactList初始应用程序9
2.3选择Debug或Release生成选项12
2.4小结14
第3章需求分析15
3.1需求分析的作用15
3.2需求分析的结构15
3.3通讯录系统业务需求16
3.4通讯录系统需求分析范例17
3.5小结19
第4章概要设计20
4.1概要设计要求20
4.2概要设计结构20
4.3通讯录概要设计范例20
4.4小结23
第5章数据结构设计与实现24
5.1CPerson类的设计与实现24
5.2添加CPerson类24
5.3添加CPerson类的成员变量26
5.4添加CPerson类的成员函数27
5.5重载CPerson类的构造函数29
5.6CPerson成员变量的初始化30
5.7CPersonList类的设计与实现30
5.8类模板和动态数组CArray31
5.9添加CPersonList类32
5.10CPersonList继承CArray功能32
5.11生成和运行ContactList34
5.12小结35
第6章界面设计与实现36
6.1界面设计概述36
6.2主对话框的设计与实现36
6.3添加CListCtrl控件36
6.4添加CButton控件39
6.5添加Static Text控件41
6.6添加CEdit控件42
6.7子对话框的设计与实现43
6.8添加CEditDlg类44
6.9绘制编辑对话框界面45
6.10将控件映射到成员变量49
6.11修改CEditDlg类构造函数52
6.12添加OnInitDialog()虚函数55
6.13添加和实现消息响应函数59
6.14设置对话框Tab键顺序60
6.15CListCtrl风格的定义与实现61
6.16CListCtrl数据更新64
6.17小结69
第7章编码实现: 联系人管理71
7.1添加联系人功能的实现71
7.2删除联系人功能的实现73
7.3编辑联系人功能的实现74
7.4小结75
第8章编码实现: 通讯录文件的读写76
8.1CPerson基础数据的存储76
8.2CPersonList对象的存储77
8.3DoSaveFile()与“恢复”功能79
8.4DoLoadFile()与“恢复”功能81
8.5实现自动读写功能83
8.6实现复制功能86
8.7小结88
第9章编码实现: 联系人检索89
9.1查找联系人功能的实现89
9.2统计联系人功能的实现92
9.3显示联系人的照片96
9.4主对话框联系人头像的显示105
9.5显示联系人统计图形109
9.6小结118
第10章编码实现: 界面增强119
10.1添加菜单119
10.2添加工具栏122
10.3小结130
第11章软件测试131
11.1软件测试流程131
11.2ContactList项目测试案例131
11.3小结147
第12章软件发布148
12.1通过InstallShield制作安装包148
12.2ContactList项目说明书案例154
12.3小结161
第13章总结与展望162
13.1项目总结162
13.2总结1: 软件过程管理162
13.3总结2: 面向对象程序设计163
13.4总结3: 数据设计原则163
13.5总结4: 功能增强163
附录A术语解释164
参考文献168
以“个人通讯录”项目开发过程为主线,按照CMMI 2级简化模型逐步展开,以完成此项目的开发
以“个人通讯录”项目开发过程为主线,按照CMMI 2级简化模型逐步展开,以完成此项目的开发