本书采用作者工作过程中开发过的一个实例项目为线索贯穿全书,在介绍面向对象C++基础知识及程序思想的基础上,通过实例系统帮助学生了解系统开发的思想和开发过程。
本教材以实例系统的不断完善为主线,将三大知识体系:C++基础知识、Windows程序设计知识和MFC程序设计知识有机融为一体,并将实例系统中的各个功能模块分布到不同的理论章节之中。读者通过本书可以实际亲历一个功能齐全、知识分布广泛的实例系统的开发过程,同时以上三大知识体系的讲解也穿插在完善实例系统不同的功能模块中来完成。
C++语言是美国贝尔实验室于20世纪80年代在C语言的基础上开发出来的,虽然在它之后又出现了Java和C#之类的新语言,但至今它仍是人们进行中型和大型软件开发项目的最佳选择之一。
本书不同于其他C++语言的教材,而是另辟蹊径,从一个实际的案例 “基于TCP/IP的点对点网络通信系统”出发,结合每一章的知识点,手把手地讲解如何利用学到的知识构架系统。这样不仅让学生在学习C++语言的语法的同时保持极大的兴趣,还能对真正地利用C++语言进行大型软件开发作一个有效的尝试,为学生今后从事开发工作打下良好的基础。
本书所用案例涉及网络协议、数据库、多线程等知识,所以要求读者对计算机网络、数据库、操作系统的基本知识有所了解。本书主要讲述C++面向对象及高级应用,所以面向的是有C或其他语言编程基础的读者。
在组织结构上本书采用案例贯通式,以案例为主线,每一章的案例实现都是建立在前面章节的基础上的。建议读者从头阅读,如果只选取其中的一两章进行阅读,则不能很好地理解案例的实现过程。
本书章节分配如下:
第1章初步认识C++和实例系统。本章首先介绍C++语言的特点,接着介绍本书实例系统的总体结构和功能,重点给出实例系统中的协议设计,最后建立服务器项目,为后面章节的实例系统开发做好准备。
第2章类和对象及其应用。本章介绍C++中类和对象的定义语法,利用这些知识来设计实例系统中的核心基础类:消息实体类和在线用户信息类。
第3章C++多态性的定义及其应用。本章主要介绍C++中继承的定义和多态性的实现,以及如何应用,即设计实例系统中数据库操作类的层次结构。
第4章C++的输入/输出流及其应用。本章详细介绍iostream库在标准输入/输出和文件的输入/输出两个方面的应用及相关语法,并在此基础上为实例系统设计能够读写配置文件信息的输入/输出类。
第5章Windows程序设计基础。本章介绍Windows应用程序的基本框架构成和运行机制。
第6章MFC应用程序基础。本章以实例系统中客户端的建立为例,介绍如何利用MFC和Visual C++的应用程序向导(Application Wizard)编写Windows应用程序,以及MFC应用程序中各种标准控件的使用。
第7章MFC数据库编程及其应用。本章介绍ODBC的概念和简单使用方法,并在此基础上设计实例系统数据库,完善实例系统中服务器端的数据库操作类。
第8章Windows多线程应用程序及其应用。本章主要介绍Windows多线程的概念,以及线程之间的同步与通信,设计实例系统中的服务器多线程类和客户端多线程类。
第9章Winsock编程及其应用。本章主要介绍在Win32平台上基于Winsock的TCP/IP编程基础知识,实现实例系统中网络通信的相关功能,完成整个实例系统。
为了更好地配合任课教师的教学,帮助学生解决学习中的困惑,本书还提供了配套的电子教案。如果需要,可以登录华章网站(wwwhzbookcom)或通过邮件liuhengyang@cquteducn索取。
本书由重庆理工大学的刘恒洋、杨宏雨、王勇、王柯柯、刘洁、黄同愿和但远宏老师执笔编写,同时本书得到了重庆理工大学教材出版基金资助。
尽管我们在写作过程中投入了大量的时间和精力,但由于水平有限,错误和不足仍在所难免,敬请读者批评指正。
编 者
2010年5月
计算机\程序设计
本书不仅介绍C++中比较核心和经常使用的基本语法,而且把C++编程和Windows编程有机结合起来,使读者不再孤立地用C++进行枯燥的没有界面的编程。本书把所有的知识点都跟实例系统中的一个个相关功能关联起来,使得读者在学习过程中充满趣味性。
本书特点:
基础与应用并重。本书从一个实际的案例 “基于TCP/IP的点对点网络通信系统”出发,结合每一章的知识点,手把手地引导读者利用学到的知识构建系统。
内容安排循序渐进。本书合理地划分实例系统的功能模块,组织上采用案例贯通式,以案例为主线,每一章的案例实现都建立在前面内容的基础上,让读者逐步掌握C++基础语法、Windows程序设计和MFC程序设计三个方面的知识。
实例系统代码丰富。本书实例系统的代码量比较大(一两万行左右),所有的代码都合理地分布正文中,这对于读者自学很有帮助。
读者对象广泛。本书适用于有一定C语言编程基础的读者学习,也可以作为本、专科C++面向对象程序设计等课程的课堂教材来使用。
本书为教师提供教学课件及实例程序源代码,有需要者可登录华章网站(www.hzbook.com)下载。
封面宣传语:
统一的贯穿始终的实例程序
简洁的C++语法和Windows程序设计的完美结合
特有的服务器和客户机多线程解决方案
前言
教学建议
第1章初步认识C++和实例系统
11C++语言概述
111C++语言的特点
112类和对象的概念
12实例系统概述
121实例系统的总体功能
122实例系统的总体结构
123实例系统的协议设计
13实例系统开发前的准备
131创建服务器项目
132定义公共头文件
133定义协议
14本章小结
15思考与练习
第2章类和对象及其应用
21C++基础语法
211new和delete
212const限定修饰符
213引用
22类和对象
221类和对象的定义
222类成员的定义和访问
223类的构造函数和析构函数
224操作符重载
225类模板和标准模板库
23消息实体类的设计和实现
231消息实体类的设计
232消息实体类的实现
24在线用户信息类的设计
241在线用户信息类的定义
242在线用户信息类的实现
25本章小结
26思考与练习
第3章C++多态性的定义及其应用
31基类和派生类
311基类和派生类的定义
312基类和派生类成员的定义及其访问
32基类和派生类的构造及其析构
321基类和派生类的构造函数
322基类和派生类的析构函数
33多态性在C++中的体现
331静态多态性
332动态多态性
34实例系统数据库操作类的设计
35本章小结
36思考与练习
第4章C++的输入/输出流及其应用
41C++输入/输出流概述
411C++的输入/输出流类库
412C++对流文件的操作
42>>和<<输入/输出操作符
421>>和<<用于标准输入/输出
422>>和<<用于文件输入/输出
423>>和<<操作符的重载
43get()和put()输入/输出函数
431get()和put()用于标准输入/输出
432get()和put()用于文件输入/输出
44read()和write()输入/输出函数
441read()和write()用于标准输入/输出
442read()和write()用于文件输入/输出
45格式控制
451布尔变量的输出操作控制
452带进制整数的输出操作控制
453浮点数输出操作控制
454输入操作控制
455刷新缓冲区操作控制
456字符设置操作控制
46实例系统输入/输出类的设计
461输入/输出需求
462输入/输出类的实现
47本章小结
48思考与练习
第5章Windows程序设计基础
51概述
511窗口
512事件驱动
513句柄和Windows消息
52最简单的Windows应用程序
521最简单的Windows应用程序的组成
522最简单的Windows应用程序示例
53本章小结
54思考与练习
第6章MFC应用程序基础
61应用程序向导
62MFC应用程序中常用Windows标准控件的应用
621按钮控件及其应用
622列表框控件及其应用
623编辑框控件及其应用
624组合框控件及其应用
625对话框通用控件及其应用
63基于对话框的MFC应用程序在实例系统中的应用
631登录对话框的设计与实现
632添加全局变量和全局函数
633注册对话框的设计与实现
634主界面对话框的设计与实现
635查看联系人信息对话框的设计与实现
636查找联系人类型对话框的设计与实现
637查找联系人结果对话框的设计与实现
638文本聊天对话框的设计与实现
639为实例系统添加自定义消息
64本章小结
65思考与练习
第7章MFC数据库编程及其应用
71数据库系统的基本概念
72ODBC基本概念
73MFC的ODBC类简介
731CDatabase类
732CRecordset类
74设计实例系统数据库
75注册数据源
76设计实例系统数据库操作类
77本章小结
78思考与练习
第8章Windows多线程应用程序及其应用
81进程和线程
811进程和线程的概念
812线程的创建和终止
82线程同步
821事件对象
822临界段
823互斥体
824信号计数器
83线程通信
831利用全局对象进行线程通信
832利用自定义消息进行线程通信
84设计服务器多线程类
841服务器线程工作流程
842服务器线程类的实现
85设计客户端多线程类
851客户端线程工作流程
852客户端线程类的实现
86本章小结
87思考与练习
第9章Winsock编程及其应用
91网际协议
911TCP和UDP
912定址
913套接字
92Winsock基础
921Winsock的初始化
922错误检查和控制
923面向连接的协议
924无连接协议
93利用Winsock完善实例系统
931收发消息类的封装
932完善服务器收发消息线程
933完善服务器消息处理线程
934完善服务器主函数
935完善客户端收发消息线程
94本章小结
95思考与练习
参考文献