第1篇 编程经验与感悟
第1章 细节完美——编程者的良好习惯 2
细节01 培养编程兴趣 2
细节02 要重视实践练习 3
细节03 学习编程要打好基本功 4
细节04 善于总结编程经验 5
细节05 多向他人学习 5
细节06 学会独立思考和解决问题 6
第2章 编程感悟——逐步提高编程能力 7
感悟01 编写程序前首先进行需求分析 7
感悟02 软件需求规格说明书 9
感悟03 程序书写要规范化 9
感悟04 将项目模块化 12
感悟05 数据库设计经验谈 13
感悟06 调试的重要意义 15
第3章 展望未来——程序人生的规划 17
感悟01 计算机的应用领域 17
感悟02 如何选择编程语言 18
感悟03 程序员的必备技能 19
感悟04 要有学好编程的坚定信心 20
感悟05 程序员的生涯规划 21
第2篇 陷阱与谬误
第4章 细说开发人员不可忽略的21个技术陷阱 24
陷阱01 while(condition);以分号结尾 24
陷阱02 初始化静态成员的陷阱 25
陷阱03 复合赋值造成的经济损失 27
陷阱04 增量、减量运算符在前在后 28
陷阱05 if语句没加大括号“{”和“}” 29
陷阱06 缺少break的switch语句 31
陷阱07 同名形参变量为成员变量赋值 33
陷阱08 使用循环语句不慎产生死循环 36
陷阱09 相等运算符重载造成的陷阱 38
陷阱10 强制转换的负面影响 40
陷阱11 被覆盖的父类变量 41
陷阱12 溢出错误 44
陷阱13 无法执行循环体内部的语句块 45
陷阱14 死循环 46
陷阱15 数组下标越界 47
陷阱16 数组维数错误 47
陷阱17 局部变量与全局变量同名 48
陷阱18 向流中读写结构 49
陷阱19 自定义string类型导致函数无效 51
陷阱20 数组的定义与初始化 52
陷阱21 传递类数组 53
第5章 细说开发人员意识中的21个常见谬误 54
谬误01 使用&&、||和&、|作用于布尔型值效率相同 54
谬误02 类中不能创建私有构造方法 55
谬误03 为了提高编程效率而不必关心代码的书写风格 56
谬误04 设计数据库表时不必定义索引 57
谬误05 重载就是重写 57
谬误06 线程就是进程 59
谬误07 对象间赋值只能重载等号运算符 60
谬误08 类对象可在离开作用范围后自动释放 61
谬误09 delete与delete[]相同 62
谬误10 结构大小等于各数据类型之和 62
谬误11 函数只能返回一个值 63
谬误12 两个类可以互为成员变量 64
谬误13 无法在指定的内存位置创建对象 65
谬误14 类方法不能作为线程函数 66
谬误15 常量方法不能修改类成员 67
谬误16 在构造函数中初始化静态成员 67
谬误17 free和delete释放指针后指针置空 68
谬误18 使用delete可以释放堆中分配的数组 68
谬误19 使用auto_ptr就不必担心内存泄露 69
谬误20 使用非零对数组整体赋值 70
谬误21 位图数据是按照红绿蓝顺序存储的 70
第1篇 编程经验与感悟
第1章 细节完美——编程者的良好习惯 2
细节01 培养编程兴趣 2
细节02 要重视实践练习 3
细节03 学习编程要打好基本功 4
细节04 善于总结编程经验 5
细节05 多向他人学习 5
细节06 学会独立思考和解决问题 6
第2章 编程感悟——逐步提高编程能力 7
感悟01 编写程序前首先进行需求分析 7
感悟02 软件需求规格说明书 9
感悟03 程序书写要规范化 9
感悟04 将项目模块化 12
感悟05 数据库设计经验谈 13
感悟06 调试的重要意义 15
第3章 展望未来——程序人生的规划 17
感悟01 计算机的应用领域 17
感悟02 如何选择编程语言 18
感悟03 程序员的必备技能 19
感悟04 要有学好编程的坚定信心 20
感悟05 程序员的生涯规划 21
第2篇 陷阱与谬误
第4章 细说开发人员不可忽略的21个技术陷阱 24
陷阱01 while(condition);以分号结尾 24
陷阱02 初始化静态成员的陷阱 25
陷阱03 复合赋值造成的经济损失 27
陷阱04 增量、减量运算符在前在后 28
陷阱05 if语句没加大括号“{”和“}” 29
陷阱06 缺少break的switch语句 31
陷阱07 同名形参变量为成员变量赋值 33
陷阱08 使用循环语句不慎产生死循环 36
陷阱09 相等运算符重载造成的陷阱 38
陷阱10 强制转换的负面影响 40
陷阱11 被覆盖的父类变量 41
陷阱12 溢出错误 44
陷阱13 无法执行循环体内部的语句块 45
陷阱14 死循环 46
陷阱15 数组下标越界 47
陷阱16 数组维数错误 47
陷阱17 局部变量与全局变量同名 48
陷阱18 向流中读写结构 49
陷阱19 自定义string类型导致函数无效 51
陷阱20 数组的定义与初始化 52
陷阱21 传递类数组 53
第5章 细说开发人员意识中的21个常见谬误 54
谬误01 使用&&、||和&、|作用于布尔型值效率相同 54
谬误02 类中不能创建私有构造方法 55
谬误03 为了提高编程效率而不必关心代码的书写风格 56
谬误04 设计数据库表时不必定义索引 57
谬误05 重载就是重写 57
谬误06 线程就是进程 59
谬误07 对象间赋值只能重载等号运算符 60
谬误08 类对象可在离开作用范围后自动释放 61
谬误09 delete与delete[]相同 62
谬误10 结构大小等于各数据类型之和 62
谬误11 函数只能返回一个值 63
谬误12 两个类可以互为成员变量 64
谬误13 无法在指定的内存位置创建对象 65
谬误14 类方法不能作为线程函数 66
谬误15 常量方法不能修改类成员 67
谬误16 在构造函数中初始化静态成员 67
谬误17 free和delete释放指针后指针置空 68
谬误18 使用delete可以释放堆中分配的数组 68
谬误19 使用auto_ptr就不必担心内存泄露 69
谬误20 使用非零对数组整体赋值 70
谬误21 位图数据是按照红绿蓝顺序存储的 70
第3篇 技术细节
第6章 细说Visual C++语言基础细节43例 72
细节01 合理使用注释 72
细节02 数值类型转换 74
细节03 静态转换 75
细节04 sizeof运算符的使用 76
细节05 逗号表达式 78
细节06 条件表达式 78
细节07 枚举类型 79
细节08 共用体类型 80
细节09 goto语句 81
细节10 return语句 82
细节11 位运算符 83
细节12 内存中的数组 85
细节13 死循环 86
细节14 定义和调用函数 87
细节15 设置默认值参数 88
细节16 数组作为函数的参数 89
细节17 指针或引用作为函数的参数 91
细节18 使用省略号作为函数的参数 92
细节19 函数的重载 93
细节20 函数指针 95
细节21 类的定义 96
细节22 类成员的访问权限 97
细节23 为什么使用默认构造函数 99
细节24 重载构造函数 101
细节25 析构函数也很有用 102
细节26 单一继承 103
细节27 多重继承 105
细节28 隐藏的this指针 106
细节29 虚函数的使用 107
细节30 纯虚函数的使用 111
细节31 内联方法的使用 112
细节32 嵌套类的使用 113
细节33 局部类的使用 114
细节34 类的静态数据成员 115
细节35 友员类的使用 116
细节36 友员方法的使用 117
细节37 无法修改数据成员的方法 118
细节38 类模板的使用 119
细节39 如何捕捉程序中的错误 121
细节40 如何在发生逻辑错误时抛出异常 122
细节41 可选的C++关键字 124
细节42 指针引用作为函数参数 125
细节43 构造函数的隐式类型转换 126
第7章 细说开发人员必知必会的39个开发细节 128
细节01 访问带密码的Access数据库 128
细节02 事物在多表操作中的重要性 129
细节03 利用存储过程生成唯一ID 130
细节04 将图片数据存储到数据库 131
细节05 将数据库中的图片数据还原为图片 132
细节06 各种数据库合并列值的方法 134
细节07 将数据表中指定条件的记录优先显示 134
细节08 阻止用户长时间对数据的锁定 134
细节09 除去违反数据完整性约束的记录 135
细节10 级联更新的意义 135
细节11 通过视图简化复杂查询 136
细节12 空值NULL与空字符串区别 137
细节13 将数据表中的空值转换为有意义的数据 137
细节14 按照身份证中的年月日进行排序 138
细节15 使用线程同时进行多项操作 138
细节16 暂停、恢复和终止线程 142
细节17 线程终止隐藏的危机 144
细节18 多线程的安全退出 145
细节19 多线程资源访问冲突 146
细节20 让成员函数作为线程启动函数 150
细节21 合理规划——线程的优先级 150
细节22 线程池的应用 152
细节23 辨别内核对象与GUI对象 154
细节24 CreateProcess函数参数详解 155
细节25 选择TCP还是UDP 156
细节26 TCP粘包的烦恼 156
细节27 UDP丢包的烦恼 157
细节28 允许上万人同时访问服务器的完成端口模型 157
细节29 套接字的阻塞模式 160
细节30 定义用户通信协议 160
细节31 抓取网络数据包 161
细节32 利用UDP协议实现广播通信 164
细节33 套接字的断开重连 165
细节34 套接字中设置超时连接 167
细节35 在套接字关闭时释放套接字资源 168
细节36 单例模式的应用 168
细节37 策略模式的简单应用 169
细节38 适配器模式的使用 170
细节39 任务栏托盘菜单 172
第4篇 编程技巧
第8章 开发技巧之——基础开发技巧 176
技巧01 巧用异或运算符实现加密功能 176
技巧02 delete与delete []的差别 177
技巧03 生成随机数 178
技巧04 COLORREF类型转换RGB分量 179
技巧05 获取字符串中的中文 179
技巧06 英文字符串首字母大写 179
技巧07 指定符号分割字符串 180
技巧08 如何在字符串中使用双引号 181
技巧09 去除字符串中所有的空格 181
技巧10 金额大小写的转换 182
技巧11 汉字转换为区位码 186
技巧12 区位码转换为汉字 186
技巧13 身份证升位计算技巧 187
技巧14 验证18位身份证格式 188
技巧15 自动生成编号 190
技巧16 计算个人所得税 191
技巧17 获取汉字拼音简码 193
技巧18 进制转换 194
第9章 开发技巧之——窗体与界面设计技巧 198
技巧01 向系统菜单中插入自定义菜单项 198
技巧02 创建级联菜单 199
技巧03 创建右键弹出菜单 199
技巧04 在窗体上单击鼠标右键调用系统菜单 200
技巧05 带历史信息的菜单 201
技巧06 默认隐藏的菜单 202
技巧07 工具栏下拉菜单 203
技巧08 滚动的窗体标题栏 206
技巧09 显示和隐藏标题栏 207
技巧10 使状态栏随对话框的改变而改变 209
技巧11 使某个窗体总显示在最前面 211
技巧12 限制窗体的大小 212
技巧13 窗口跟随 214
技巧14 移动无标题栏窗体 215
技巧15 淡入淡出的窗体 215
技巧16 如QQ般隐藏的窗体 217
技巧17 不使用Esc键关闭窗体 218
技巧18 对话框伸缩 218
技巧19 使对话框的关闭按钮变灰 219
技巧20 如何为对话框中的控件设置提示信息 220
技巧21 自定义云型窗体 220
技巧22 闪烁的彩虹文字 223
技巧23 在窗体关闭前显示对话框 224
技巧24 任务栏托盘菜单 225
技巧25 带位图预览的打开对话框 227
技巧26 Windows新型打开对话框 229
技巧27 同时选择多个文件 230
技巧28 使用回车键移动控件焦点 232
技巧29 设置控件的Tab顺序 232
技巧30 如何隐藏控件 232
第10章 开发技巧之——Windows开发技巧 233
技巧01 判断是否插入存储器 233
技巧02 判断光驱是否有光盘 233
技巧03 获取磁盘空间信息 234
技巧04 关闭磁盘共享 236
技巧05 格式化磁盘 237
技巧06 整理磁盘碎片 238
技巧07 控制光驱的弹开与关闭 239
技巧08 关闭、重启和注销计算机 240
技巧09 设计具有插件功能的应用程序 242
技巧10 注册和卸载ocx控件 246
技巧11 清空回收站 248
技巧12 隐藏和显示桌面文件 248
技巧13 隐藏和显示Windows任务栏 250
技巧14 隐藏任务栏时钟 251
技巧15 通过内存映射实现传送数据 252
技巧16 获得当前屏幕的分辨率 253
技巧17 使进程处于睡眠状态 253
技巧18 注册消息 254
技巧19 获取键盘按键 254
技巧20 屏蔽键盘POWER键 255
技巧21 可导出的动态链接库函数 255
技巧22 利用钩子技术实现键盘监控 256
技巧23 显示系统正在运行的程序 258
第11章 开发技巧之——网络开发技巧 260
技巧01 获取局域网中计算机名称 260
技巧02 通过计算机名称获取IP地址 262
技巧03 获取网卡地址 263
技巧04 获取当前打开的端口 264
技巧05 获取局域网共享资源 265
技巧06 映射网络驱动器 268
技巧07 局域网文件夹的共享 269
技巧08 在局域网中发送短消息 270
技巧09 如何清空IE的历史记录 271
技巧10 如何删除Internet临时文件 271
技巧11 设置IE的默认主页 272
技巧12 清空上网历史记录 272
技巧13 套接字的断开重连 272
技巧14 在套接字中如何设置超时连接 274
技巧15 利用UDP实现广播通信 275
技巧16 IP端口扫描 276
第5篇 算法和效率
第12章 算法与执行效率 279
算法01 顺序查找 279
算法02 二分查找 280
算法03 分块查找 283
算法04 哈希查找 285
算法05 直接插入排序 288
算法06 希尔排序 290
算法07 起泡排序 292
算法08 快速排序 294
算法09 选择排序 298
算法10 归并排序 299
第13章 程序员必会的算法 302
算法01 斐波那契数列 302
算法02 角谷猜想 303
算法03 歌德巴赫猜想 304
算法04 四方定理 305
算法05 尼科彻斯定理 306
算法06 水仙花数 307
算法07 百钱百鸡 308
算法08 韩信点兵 309
算法09 魔术师的秘密 310
算法10 巧分苹果 311
算法11 分鱼问题 313
第6篇 解决方案
第14章 登录和主界面显示实施方案 315
方案01 主界面设计方案 315
方案02 实现系统登录 329
方案03 闪屏界面显示 334
第15章 数据库、软件注册及文件加密解决方案 339
方案01 应用存储过程处理数据 339
方案02 利用视图进行查询 343
方案03 初始化、备份和还原数据库 349
方案04 软件注册解决方案 357
方案05 文件加密与解密方案 360
第16章 文件和网络处理开发方案 365
方案01 复制文件方案 365
方案02 文件的分割与合并 368
方案03 屏幕监控专家 371
方案04 聊天室 379
第17章 多媒体应用和游戏解决方案 388
方案01 画图程序 388
方案02 照片版式处理 391
方案03 视频捕捉 397
方案04 音频录制 400
方案05 AVI文件合成分解 404
方案06 屏幕截图方案 413
方案07 俄罗斯方块 415
方案08 贪吃蛇 424