目录
第1篇 C++(www.cppentry.com)程序设计语言入门
第1章 C++(www.cppentry.com)程序设计语言概述2
1.1 C++(www.cppentry.com)和C#、Java的区别2
1.1.1 面向对象还是面向过程2
1.1.2 内存管理是否自动释放2
1.1.3 是否跨平台3
1.1.4 C++(www.cppentry.com)与其他语言的主要区别3
1.2 C++(www.cppentry.com)语言的主要应用领域4
1.3 C++(www.cppentry.com)的开发工具以及
Visual C++(www.cppentry.com) 6.05
1.3.1 Visual C++(www.cppentry.com) 6.0开发工具简介5
1.3.2 Visual C++(www.cppentry.com) 6.0的开发过程6
第2章 Visual C++(www.cppentry.com) 6.0入门7
2.1 安装Visual C++(www.cppentry.com) 6.07
2.1.1 对硬件的要求7
2.1.2 安装Visual C++(www.cppentry.com) 6.08
2.1.3 安装MSDN Library9
2.1.4 安装源代码管理器11
2.1.5 完成安装11
2.1.6 安装Visual C++(www.cppentry.com) 6.0开发
插件12
2.1.7 编写宏文件12
2.1.8 使用宏文件15
2.2 Visual C++(www.cppentry.com) 6.0开发环境介绍17
2.2.1 熟悉Visual C++(www.cppentry.com) 6.0开发
环境17
2.2.2 建立一个工程18
2.2.3 工程菜单21
2.2.4 编译菜单22
2.2.5 Tools菜单23
2.2.6 工具条23
2.3 创建第一个Visual C++(www.cppentry.com)程序24
2.3.1 编写代码24
2.3.2 编译程序25
2.3.3 运行程序25
2.4 使用源代码管理器25
2.4.1 基本概念26
2.4.2 创建数据库26
2.4.3 根据现有工程在服务端创建
文件夹27
2.4.4 代码入库和出库27
2.4.5 版本控制(Label)29
2.5 常见问题29
2.5.1 必须安装和Visual C++(www.cppentry.com) 6.0配套发行的MSDN Library吗29
2.5.2 可以在Visual C++(www.cppentry.com) 6.0下使用
其他的C++(www.cppentry.com)编译器吗29
第3章 C++(www.cppentry.com)基础语法30
3.1 变量和常量30
3.2 C++(www.cppentry.com)基础数据类型31
3.2.1 整值类型31
3.2.2 浮点值类型32
3.2.3 布尔类型33
3.2.4 字符串类型33
3.3 C++(www.cppentry.com)高级数据类型34
3.3.1 枚举类型34
3.3.2 结构类型36
3.3.3 联合类型37
3.3.4 数组类型38
3.4 指针和引用40
3.4.1 指针变量的声明与初始化41
3.4.2 指针运算符:&43
3.4.3 指针运算符:*44
3.4.4 指针运算符:::45
3.4.5 指针运算47
3.4.6 指针与常量限定符48
3.4.7 指针与数组49
3.4.8 引用50
3.5 表达式和运算符52
3.5.1 表达式的定义52
3.5.2 基本运算符52
3.5.3 逻辑运算操作符53
3.5.4 ==、>、>=、<、<=、!=
运算符53
3.5.5 ++、--操作符53
3.5.6 位操作符54
3.5.7 new/delete操作符54
3.6 程序控制结构56
3.6.1 switch/case结构56
3.6.2 if/else/else if结构58
3.6.3 goto语句59
3.6.4 for循环语句59
3.6.5 while与do/while循环语句61
3.6.6 break语句62
3.6.7 continue语句63
3.7 函数64
3.7.1 函数的定义64
3.7.2 函数的返回类型65
3.7.3 函数的参数65
3.7.4 参数传递66
3.7.5 函数的默认参数68
3.8 常见问题69
3.8.1 new/delete操作符和malloc/free函数有何区别69
3.8.2 应该使用const修饰符
还是宏70
第4章 C++(www.cppentry.com)面向对象编程(www.cppentry.com)72
4.1 类的基本概念和特性72
4.1.1 类和结构72
4.1.2 类的数据成员73
4.1.3 类的成员函数74
4.1.4 类成员访问级别75
4.1.5 类声明、类定义和类实现76
4.1.6 类的内联函数和非内联函数78
4.1.7 构造函数78
4.1.8 析构函数81
4.1.9 this指针82
4.1.10 友元82
4.1.11 静态成员84
4.2 类的派生和继承87
4.2.1 public继承87
4.2.2 protected继承98
4.2.3 private继承100
4.3 常见问题100
4.3.1 析构函数是否可以定义为虚函数,有何用处101
4.3.2 在C++(www.cppentry.com)中struct被赋予了哪些
类的特征102
第5章 异常及其处理104
5.1 异常的产生104
5.2 异常的处理106
5.3 深入了解异常109
5.3.1 异常的再抛出109
5.3.2 异常的参数传递110
5.4 Visual C++(www.cppentry.com) 6.0中的异常112
5.4.1 关键字_try/_except/_finally112
5.4.2 TRY/CATCH宏112
5.5 常见问题113
5.5.1 应该怎样设计异常113
5.5.2 如何避免使用异常114
第2篇 使用Visual C++(www.cppentry.com) 6.0进行常用开发
第6章 Visual C++(www.cppentry.com) 6.0开发起步116
6.1 Windows消息机制116
6.1.1 什么是消息116
6.1.2 消息的分类117
6.1.3 消息的处理过程118
6.2 Win32 API介绍118
6.2.1 API的分类118
6.2.2 API的用途119
6.2.3 在Visual C++(www.cppentry.com) 6.0中使用
Win32 API119
6.3 MFC介绍119
6.3.1 MFC的来源和用途120
6.3.2 MFC的基本框架结构120
6.3.3 使用MFC121
6.4 常见问题122
6.4.1 如何自定义消息122
6.4.2 Win32 API定义了哪些数据
类型123
6.4.3 Visual C++(www.cppentry.com)、Win32 API和
MFC之间的关系124
6.4.4 使用C++(www.cppentry.com)开发Windows应用
程序必须使用Win32 API
或者MFC吗124
第7章 开发基于对话框的应用程序126
7.1 使用向导生成应用程序框架126
7.1.1 建立基于对话框的应用程序
框架126
7.1.2 控件128
7.2 基于对话框的程序基本框架128
7.2.1 应用程序的入口函数129
7.2.2 MFC应用程序的入口点130
7.2.3 CDemo1App类解析131
7.2.4 CDemo1Dlg类框架解析132
7.2.5 CDemo1Dlg类解析134
7.3 实现数据交互136
7.3.1 使用类向导编辑控件属性137
7.3.2 使用类向导实现数据交互137
7.4 实现消息映射139
7.4.1 消息的分类140
7.4.2 消息的处理140
7.4.3 处理【OK】按钮单击事件141
7.4.4 程序实现143
7.4.5 自定义控件145
7.5 实战:简易计算器148
7.5.1 程序界面设计148
7.5.2 简易计算器的业务逻辑149
7.5.3 简易计算器的状态150
7.5.4 简易计算器的实现151
7.6 常见问题159
7.6.1 如何响应自定义消息159
7.6.2 如何在窗体中使用定时器160
第8章 文档/视图结构163
8.1 基础知识163
8.1.1 单文档视图和多文档视图
结构163
8.1.2 文件类型164
8.1.3 使用向导生成一个简单的
记事本164
8.2 单文档/视图结构166
8.2.1 CDocViewApp应用程序类
解析166
8.2.2 修改CDocViewApp类使得程序支持多种文件类型168
8.2.3 CMainFrame框架类解析171
8.2.4 CDocViewDoc文档类解析173
8.2.5 CDocViewView视图类
解析174
8.3 多文档/视图结构174
8.4 实战:使用单文档/视图结构
实现八数码游戏175
8.4.1 需求分析176
8.4.2 设计并实现操作接口的
主框架176
8.4.3 设计并实现棋盘数据结构178
8.4.4 在CEightDoc类中添加棋盘
类的对象182
8.4.5 在CMainFrame类中实现对
棋盘的控制182
8.4.6 在CEightView类中实现对
棋盘的控制184
8.4.7 在CEightView类中实现对
棋盘的绘制185
8.4.8 实现智能解题188
8.5 常见问题194
8.5.1 CFrameWnd、CView、CDocument是如何协作的194
8.5.2 MFC中包含了哪些CView的
派生类195
第9章 使用Visual C++(www.cppentry.com) 6.0开发动态
链接库196
9.1 动态链接库基础196
9.1.1 创建静态链接库196
9.1.2 使用静态链接库197
9.1.3 创建简单的动态链接库199
9.1.4 使用动态链接库201
9.1.5 动态链接库和静态链接库的
比较203
9.1.6 规则DLL和扩展DLL203
9.2 开发Win32动态链接库204
9.2.1 动态链接库的初始化和反
初始化204
9.2.2 导出、导入函数和数据206
9.3 开发基于MFC的动态
链接库208
9.3.1 创建链接MFC的规则DLL208
9.3.2 MFC扩展 DLL210
9.4 实战:使用动态链接库实现界面
和功能实现的分离212
9.5 常见问题217
9.5.1 AFX_MANAGE_STATE宏有何作用,何时需要使用该宏217
9.5.2 MFCDLL能导出C++(www.cppentry.com)类、成员
函数吗218
9.5.3 如何只导出部分类成员218
9.5.4 LoadLibrary和FreeLibrary函数的用途有哪些,什么是显式加载动态链接库219
9.5.5 DEPENDS工具的用处有
哪些220
9.5.6 Windows操作系统用来定位DLL
的搜索路径是怎样的220
第3篇 使用Visual C++(www.cppentry.com) 6.0进行高级开发
第10章 多线程开发222
10.1 为什么需要多线程222
10.2 基础知识222
10.2.1 进程与线程222
10.2.2 关于"同时执行"、"并发
处理"223
10.3 线程的创建与结束224
10.3.1 Sleep函数224
10.3.2 CreateThread/ExitThread
函数225
10.3.3 _beginthreadex/_endthreadex
函数227
10.3.4 AfxBeginThread/AfxEndThread
函数228
10.3.5 选择哪种函数创建线程231
10.4 线程的调度233
10.4.1 优先权类别233
10.4.2 优先权层级234
10.5 核心对象234
10.5.1 什么是核心对象235
10.5.2 CloseHandle函数235
10.6 线程同步236
10.6.1 同步机制简介236
10.6.2 临界区域(Critical Section)236
10.6.3 使用临界区域保证数据访问的安全性238
10.6.4 安全退出临界区域240
10.6.5 互斥器(Mutexes)242
10.6.6 使用互斥器设计线程
安全的数据结构244
10.6.7 信号量(Semaphores)249
10.6.8 事件(Event Objects)251
10.6.9 使用事件通知线程安全地
退出253
10.6.10 WaitForSingleObject系列
函数254
10.7 再论线程的创建和退出255
10.7.1 回顾255
10.7.2 创建线程的一个习惯用法256
10.7.3 协作式退出线程257
10.8 实战:多线程实现百米赛跑
模拟258
10.8.1 设计界面259
10.8.2 设计相关数据结构259
10.8.3 实现自定义消息响应262
10.9 常见问题265
10.9.1 在多线程情况下,使用STL
(标准模板库)应该注意
什么265
10.9.2 临界区域(Critical Section)相比本章介绍的相关核心对象有何优缺点265
第11章 数据库应用开发266
11.1 数据库应用开发介绍266
11.1.1 ODBC技术介绍266
11.1.2 OLE DB、ADO技术介绍267
11.1.3 使用数据库API接口268
11.1.4 准备工作268
11.2 使用ODBC开发数据库
应用269
11.2.1 创建ODBC数据源269
11.2.2 连接数据源271
11.2.3 CRecordSet类介绍273
11.2.4 添加、修改和删除数据276
11.2.5 撤销操作277
11.2.6 查询记录278
11.2.7 读取数据278
11.3 使用ADO开发数据库应用280
11.3.1 ADO内置对象简介281
11.3.2 使用ADO注意事项281
11.3.3 连接数据库281
11.3.4 记录集-填充和读取数据283
11.3.5 记录集-添加数据284
11.3.6 记录集-删除数据284
11.3.7 记录集-编辑数据285
11.3.8 命令286
11.4 使用数据库API开发数据库
应用287
11.4.1 MySQL数据库介绍287
11.4.2 安装MySQL数据库288
11.4.3 准备工作288
11.4.4 配置编译环境289
11.4.5 连接MySQL数据库290
11.4.6 执行SQL语句291
11.4.7 读取数据291
11.5 实战:使用ODBC操作MS
SQL Server数据库291
11.5.1 需求分析292
11.5.2 界面设计及实现292
11.5.3 实现数据源的连接和关闭294
11.5.4 数据显示295
11.5.5 删除数据296
11.5.6 添加、编辑数据297
11.6 实战:使用ADO操作Access
数据库301
11.6.1 需求分析301
11.6.2 数据库设计301
11.6.3 界面设计302
11.6.4 封装数据结构303
11.6.5 数据访问层接口设计304
11.6.6 数据访问层接口实现305
11.6.7 辅助窗口设计和实现311
11.6.8 主程序实现314
11.7 实战:开发MySQL数据库
应用程序323
11.7.1 设置头文件和导入库323
11.7.2 编写辅助宏324
11.7.3 设计数据结构324
11.7.4 连接数据库325
11.7.5 添加数据326
11.7.6 读取数据326
11.7.7 主程序实现327
11.8 常见问题330
11.8.1 如何选择开发数据库应用程序
的技术330
11.8.2 如何使用基于XML的文本
数据库330
第12章 Windows网络编程(www.cppentry.com)331
12.1 Winsock基础知识331
12.1.1 Winsock版本331
12.1.2 使用Winsock333
12.1.3 初始化Winsock334
12.1.4 反初始化Winsock335
12.1.5 使用WSAGetLastError
函数336
12.1.6 基本的Winsock初始化、反初
始化代码框架337
12.1.7 阻塞和非阻塞调用338
12.2 寻址及套接字的创建与
关闭338
12.2.1 IPv4寻址338
12.2.2 创建套接字340
12.2.3 关闭套接字341
12.3 使用TCP协议进行网络通信342
12.3.1 TCP协议通信流程342
12.3.2 服务端函数342
12.3.3 客户端函数345
12.3.4 收发数据345
12.4 使用UDP协议进行网络
通信347
12.4.1 UDP协议通信流程347
12.4.2 服务端函数348
12.4.3 客户端函数350
12.5 Winsock I/O模型353
12.5.1 套接字模式353
12.5.2 阻塞模型、select模型354
12.5.3 WSAAsyncSelect模型357
12.5.4 WSAEventSelect模型359
12.5.5 重叠模型、完成端口模型361
12.6 实战:使用UDP协议实现即时通信361
12.6.1 需求分析362
12.6.2 通信协议设计363
12.6.3 服务端设计与实现363
12.6.4 客户端框架设计373
12.6.5 设定套接字模型375
12.6.6 套接字的连接和关闭375
12.6.7 消息的发送377
12.6.8 数据接收378
12.6.9 运行效果381
12.7 常见问题382
12.7.1 为什么本章没有介绍使用
MFC类进行Windows网络
编程(www.cppentry.com)382
12.7.2 本章中介绍的Winsock I/O模型对平台有何要求382
12.7.3 在select模型中,fd_set结构能够绑定多少套接字382
12.7.4 WSAWaitForMultiple- Events
可以同时等待多少网络事件
对象382
12.7.5 编写网络应用程序应该注意
什么382
第13章 一个完整的项目实现384
13.1 需求分析以及项目框架384
13.2 服务端设计与实现385
13.2.1 通信协议的设计385
13.2.2 多线程模型的设计387
13.2.3 线程同步387
13.2.4 文件管理模块的设计388
13.2.5 用户管理模块的设计394
13.2.6 线程管理模块设计400
13.2.7 监听模块设计408
13.2.8 传输/服务模块设计411
13.2.9 服务端主程序设计415
13.3 客户端设计与实现422
13.3.1 界面设计422
13.3.2 相关数据结构设计422
13.3.3 断点续传功能的实现424
13.3.4 服务器连接模块426
13.3.5 文件目录信息获取模块426
13.3.6 文件下载模块426
13.4 运行情况429
13.5 常见问题430
13.5.1 服务端如何管理"正在服务的
客户"和"尚未服务的
客户"430
13.5.2 为什么在某些网络环境下测试本章程序会出现丢包现象430
第4篇 数据结构和技巧
第14章 错误和调试432
14.1 错误的基本概念和常见问题432
14.1.1 什么是错误432
14.1.2 野指针问题432
14.1.3 空指针问题433
14.1.4 传值不当引起的问题434
14.1.5 循环终止条件设置不当引起的
效率问题435
14.1.6 使用STL中迭代器失效的
问题435
14.2 使用Visual C++(www.cppentry.com) 6.0进行
调试436
14.2.1 Debug版本和Release版本436
14.2.2 以调试模式启动程序436
14.2.3 断点的使用437
14.2.4 Step Into和Step Out438
14.2.5 Step Out和Run to Cursor440
14.2.6 查看调试断点的上下文
信息441
14.2.7 调试动态链接库442
14.3 常见问题442
14.3.1 如何在Release版本下加入调试符号443
14.3.2 MFC对程序调试提供了哪些
支持443
第15章 MFC常用技巧444
15.1 使CListCtrl控件可以选择一
整行444
15.2 去除单(多)文档窗口标题栏
的文档名445
15.3 禁止调整窗口大小445
15.4 使应用程序在同一时刻只能
运行一个实例446
15.5 创建选择文件夹的对话框447
15.6 使窗口置顶449
15.7 使应用程序支持启动参数449
15.8 获得程序自身所在的目录450
15.9 如何播放WAV文件451
15.10 更改选择文件对话框中的按钮文字452
15.11 使用CBitmapButton类453
15.12 使用CToolTipCtrl类实现提示信息效果455
15.13 判断窗口的最大化、最小化状态并进行控制457
15.14 如何在运行时动态创建
控件458
15.15 如何创建"上下文"式右键
菜单460
15.16 如何获得系统文件夹路径462
15.17 如何使用RichEdit控件462
15.18 如何获取当前屏幕的
分辨率463
15.19 CListCtrl控件无法满足需求,有什么好的控件可以代替463
15.20 有哪些兼容MFC的界面库464
第16章 MFC抽象数据类型465
16.1 链表465
16.1.1 使用CStringList、CObList、CPtrList简单链表类465
16.1.2 使用CList链表类468
16.2 数组469
16.2.1 使用CDWordArray类470
16.2.2 使用CArray类474
16.3 映射475
16.3.1 使用CMapStringToString等简单映射类475
16.3.2 使用CMap类477
16.4 常见问题478
16.4.1 如何选择适当的MFC抽象
数据类型478
16.4.2 使用MFC抽象数据类型还是STL(标准模板库)478
第17章 标准模板库(STL)479
17.1 基本概念479
17.1.1 命名空间和头文件479
17.1.2 异常处理480
17.1.3 STL的主要组成部分481
17.2 容器482
17.2.1 使用动态数组类vector482
17.2.2 使用队列类deque489
17.2.3 使用链表类list491
17.2.4 使用集合类set498
17.2.5 使用映射类map501
17.3 常用算法506
17.3.1 for_each算法506
17.3.2 count、count_if算法507
17.3.3 min_element、max_element
算法508
17.3.4 find、find_if算法509
17.4 常见问题511
17.4.1 STL有不同版本吗511
17.4.2 遍历容器为什么对迭代器进行++ite而不是ite++操作511
第18章 ERP的进销存管理系统512
18.1 概念分析阶段512
18.1.1 需求分析512
18.1.2 系统功能分析512
18.1.3 系统模块设计513
18.1.4 数据库设计514
18.1.5 创建数据库516
18.2 项目前期配置517
18.2.1 选择数据库程序开发技术517
18.2.2 新建用于实现系统的项目517
18.2.3 添加用于数据库开发的ADO
封装类和ADO控件518
18.3 用户管理模块520
18.3.1 实现用户登录功能520
18.3.2 实现修改密码功能526
18.3.3 实现用户的增、删、改528
18.4 实体信息管理模块532
18.4.1 客户信息管理532
18.4.2 供应商信息管理539
18.4.3 员工信息管理545
18.4.4 商品信息管理547
18.5 进销存管理模块553
18.5.1 销售管理553
18.5.2 进货管理560
18.6 统计报表模块566
18.6.1 创建员工销售业绩报表566
18.6.2 创建各种商品销售情况
报表570
18.6.3 员工销售业绩统计报表572
18.6.4 各种商品销售情况统计
报表575
18.7 系统运行结果575
18.8 常见问题576
18.8.1 什么是水晶报表576
18.8.2 从程序员的角度看,MIS系统
的开发步骤是怎样的576
附录A C++(www.cppentry.com)常见面试题578
【责任编辑:
夏书 TEL:(010)68476606】