
本书共21章,从Visual C++的基础入手,由浅入深,逐步介绍了使用Visual C++进行Windows程序设计的各个方面。在Visual C++的高级应用部分,详细介绍了使用Visual C++进行数据库编程、网络编程、线程技术的实现、动态链接库的实现和ActiveX技术的实现,基本涵盖了Visual C++的功能。 本书内容丰富,深度和广度兼顾。可以作为初学者的入门指南,也可以帮助中高级读者进一步提高编程水平。此外,也可作为读者学习面向对象程序设计的参考书。
前 言 千里之行,始于足下! ——老子 “21天学编程系列”自2009年1月上市以来一直受到广大读者的青睐。该系列中的大部分图书从一上市就登上了编程类图书销售排行榜的前列,很多大、中专院校也将该系列中的一些图书作为教材使用,目前这些图书已经多次印刷、改版。可以说,“21天学编程系列”是自2009年以来国内原创计算机编程图书最有影响力的品牌之一。 为了使该系列图书能紧跟技术和教学的发展,更加适合读者学习和学校教学,我们结合最新技术和读者的建议,对该系列图书进行了改版(即第4版)。本书便是该系列中的Visual C++分册。 本书有何特色 1.细致体贴的讲解 为了让读者更快地上手,本书特别设计了适合初学者的学习方式,用准确的语言总结概念?用直观的图示演示过程?用详细的注释解释代码?用形象的比方帮助记忆,效果如下图所示。 知识点介绍 准确、清晰是其显著特点,一般放在每一节开始的位置,让零基础的读者了解相关概念,顺利入门。 范例 书中出现的完整实例,以章节顺序编号,便于检索和循序渐进地学习、实践,放在每节知识点介绍之后。 示例代码 与范例编号对应,层次清楚、语句简洁、注释丰富,体现了代码优美的原则,有利于读者养成良好的代码编写习惯。对于大段程序,均在每行代码前设定编号,便于学习。 运行结果 对范例给出运行结果和对应图示,帮助读者更直观地理解示例代码。 代码解析 将示例代码中的关键代码行逐一解释,有助于读者掌握相关概念和知识。 习题 每章最后提供专门的测试习题,供读者检验所学知识是否牢固掌握。 贴心的提示 为了便于读者阅读,全书还穿插着一些技巧、提示等小贴士,体例约定如下。 ? 提示:通常是一些贴心的提醒,让读者加深印象或提供建议,或者解决问题的方法。 ? 注意:提出学习过程中需要特别注意的一些知识点和内容,或者相关信息。 ? 警告:对操作不当或理解偏差将会造成的灾难性后果给出警示,以加深读者印象。 经作者多年的培训和授课证明,以上讲解方式是最适合初学者学习的方式,读者按照这种方式学习,会非常轻松、顺利地掌握本书知识。 2.实用超值的DVD光盘 为了帮助读者比较直观地学习,本书附带DVD光盘,内容包括多媒体视频、电子教案(PPT)和实例源代码、职场面试法宝等。 ? 多媒体视频 本书配有长达21小时的教学视频,讲解关键知识点界面操作和书中的一些综合练习题。作者亲自配音、演示,手把手教会读者使用。 ? 电子教案(PPT) 本书可以作为高校相关课程的教材或课外辅导书,所以作者特别为本书制作了电子教案(PPT),以方便老师教学使用。 ? 职场面试法宝 本书附赠“职场面试法宝”,含常见的职场经典面试题及解答。 3.提供完善的技术支持 本书的技术支持论坛为http://www.rzchina.net,读者可以在上面提问、交流。另外,论坛上还有一些教程、视频动画和各种技术文章,可帮助读者提高开发水平。 推荐的学习计划 本书作者在长期从事相关培训或教学实践过程中,归纳了最适合初学者的学习模式,并参考了多位专家的意见,为读者总结了合理的学习时间分配方式,列表如下。 推荐时间安排 自学目标(框内打钩表示已掌握) 难度指数 第1周 第1天 了解Visual C++ 6.0的版本、使用环境和特点 熟悉Visual C++ 6.0集成开发环境中系统菜单、快捷键及功能 掌握Visual C++ 6.0的常用工具 了解Visual C++ 6.0的常用文件类型说明 掌握使用Visual C++ 6.0创建应用程序的步骤 第2天 了解Windows编程基础,主要包括Windows编程的基本概念,如API、WinMain函数、句柄和消息机制等 了解传统Win32编程步骤 熟练掌握MFC应用程序框架以及使用Visual C++ 6.0的应用程序向导AppWizard构建一个MFC程序 熟悉Visual C++应用程序框架中类的相关说明 ?? 第3天 了解控件的基本概念 掌握Visual C++ 6.0所提供的基本控件及其功能 熟练掌握如何在Visual C++ 6.0编制的应用程序中使用控件 □□□ ??? 第4天 了解Visual C++中对话框的组成和分类 掌握Visual C++ 6.0中创建和显示普通模态或非模态对话框的步骤 掌握Visual C++ 6.0中对话框的数据交换机制 掌握创建和显示属性页对话框和向导对话框的步骤 了解通用对话框以及其中的颜色对话框和字体对话框 续表 推荐时间安排 自学目标(框内打钩表示已掌握) 难度指数 第1周 第5天 了解Windows程序设计中的消息分类及常用消息 掌握Visual C++支持的MFC消息映射机制 掌握在Visual C++ 6.0中使用消息处理函数完成某些具体功能 熟悉Visual C++ 6.0中ClassWizard工具的使用 □□□□ ??? 第6天 了解Windows应用程序中菜单的种类及其相关介绍 掌握Visual C++ 6.0中菜单的设计与创建 掌握Visual C++ 6.0中菜单的消息处理等 掌握Visual C++ 6.0中快捷菜单的创建 □□□□ ??? 第7天 了解工具栏使用的MFC类和常用函数 掌握工具栏的创建方法 掌握工具栏的显示/隐藏功能的实现 了解状态栏使用的MFC类和常用函数 掌握状态栏窗格的修改 掌握在状态栏中显示鼠标坐标、时间和进度条功能的实现 ??? 第2周 第8天 了解图形设备接口(GDI)的相关基础知识 了解设备描述表的概念及其获取方法 熟悉Windows常用的图形设备接口对象 掌握常用GDI对象画笔和画刷的创建方法 掌握画笔在Windows应用程序中的具体使用方法和步骤 掌握画刷在Windows应用程序中的具体使用方法和步骤 □□□□□□ ????? 第9天 了解有关文本编程的相关基础知识:WM_CHAR消息和OnChar消息处理函数、CString类、OnDraw函数和OnPaint函数 掌握使用GDI自定义字体的方法 掌握字体的具体使用:文本输入、编辑功能的实现,文本颜色实时变化功能的实现 ? 第10天 了解文档视图结构应用程序的基本构成 掌握文档类、视图类及框架窗口类对象之间的联系方法 理解并在程序编写过程中正确处理文档类对象与视图类对象的分工与合作 第11天 了解文件与流的基本概念 了解顺序文件、随机文件、二进制文件的操作方法等 掌握文件的I/O(输入/输出)操作 熟练使用Visual C++的CFile类操作文件 熟练使用Visual C++的CFileDialog类创建文件对话框 □□□□□ ??? 第12天 了解文档序列化的概念及其实现 了解注册表的读写操作实现 ????续表 推荐时间安排 自学目标(框内打钩表示已掌握) 难度指数 第2周 第13天 修改应用程序外观样式:包括应用程序标题、图标及框架的设计 为应用程序设计动画图标 修改应用程序背景 第14天 了解面向对象程序设计基础理论:读者可以掌握面向对象程序设计中类、对象、封装、集成和多态等概念,并根据这概念掌握面向对象程序设计的思想 掌握Visual C++中面向对象思想的实现:读者可以简单了解Visual C++中类的声明、使用和继承,函数的重载,构造函数和析构函数,以及多态的实现 □ □ ???? 第3周 第15天 了解数据库及关系数据的基础知识 了解Visual C++进行数据库访问的相关技术简介 掌握ODBC及其使用 掌握属性MFC中支持的三个ODBC类 熟练掌握应用ODBC进行数据库编程 □□□□ □ ??? 第16天 了解计算机网络的相关基础概念:TCP/IP结构、Winsock接口 掌握Socket套接字的概念及其使用 掌握通过WinSock接口在两个或多个计算机间进行网络通信 □ □□ ????? 第17天 了解进程和线程的概念 掌握线程的创建 掌握线程间的同步 掌握进程的创建和终止 掌握进程间的通信 □□□□□ ????? 第18天 熟悉动态链接库在实际中的应用 了解动态链接库的概念及优势 掌握和理解三种动态链接库的创建和使用:Win32 DLL、MFC规则DLL和MFC扩展DLL □□□ ???? 第19天 了解什么是ActiveX控件 熟悉ActiveX控件的属性、事件和方法 掌握如何使用ActiveX控件 掌握怎样制作一个ActiveX控件 掌握如何为ActiveX控件添加属性、方法和事件 □□□□□ ???? 第20天 了解应用程序的错误类型 掌握Visual C++的基本调试方法及其步骤 理解Visual C++的高级调试技术 □□□ ??? 第21天 了解Visual C++进行应用系统开发的流程 掌握应用系统实现的步骤 掌握应用系统的基本调试方法 □ □ □ ???? 本书适合哪些读者阅读 本书非常适合以下人员阅读: ? 从未接触过Visual C++编程,但对Visual C++编程有兴趣的自学人员; ? 各大中专院校的在校学生和相关授课老师; ? 了解一些Visual C++,但还需要进一步学习的人员; ? 在某些需要使用Visual C++编程的特殊领域的工作人员; ? 其他编程爱好者。 本书作者 本书主要由张志美编写。参与编写的其他人员还有张燕、杜海梅、孟春燕、吴金艳、鲍凯、庞雁豪、杨锐丽、鲍洁、王小龙、李亚杰、张彦梅、刘媛媛、李亚伟、张昆,在此一并表示感谢。 编 者
目 录 第1篇 Visual C++基础篇 第1章 Visual C++ 6.0概述 1 1.1 Visual C++ 6.0简介 1 1.1.1 Visual C++ 6.0的特点 1 1.1.2 Visual C++ 6.0的版本种类和硬件环境 2 1.2 Visual C++ 6.0集成开发环境概览 2 1.2.1 工作区 3 1.2.2 编辑区 3 1.2.3 输出窗口 4 1.3 Visual C++ 6.0集成开发环境菜单简介 4 1.4 Visual C++ 6.0的工具组件 5 1.4.1 C/C++编译器 5 1.4.2 资源编辑器和资源编译器 6 1.4.3 链接器和调试器 6 1.4.4 应用程序向导 6 1.4.5 类向导 7 1.4.6 资源浏览器 8 1.5 第一个Visual C++程序——“Hello World” 9 1.5.1 使用应用程序向导创建工程 9 1.5.2 添加并修改消息处理函数 11 1.5.3 编译、链接和运行 12 1.6 Visual C++ 6.0项目文件类型简介 12 1.7 小结 13 1.8 习题 13 第2章 Windows应用程序框架 18 2.1 基于Windows的应用程序设计 18 2.1.1 基于Windows的应用程序接口(API) 18 2.1.2 句柄的原理 19 2.1.3 Windows应用程序入口——WinMain()函数 20 2.1.4 消息及消息队列机制 20 2.2 MFC的基本概念及应用程序框架 21 2.2.1 MFC的基本概念 22 2.2.2 使用应用程序向导创建MFC应用程序框架 23 2.3 MFC应用程序框架详解 27 2.3.1 应用程序类 28 2.3.2 框架类 29 2.3.3 视图类和文档类 29 2.4 小结 30 2.5 习题 31 第2篇 可视化编程篇 第3章 常用控件 33 3.1 控件的基本概念 33 3.2 Visual C++ 6.0中的控件 33 3.2.1 静态文本控件 35 3.2.2 编辑框控件 38 3.2.3 按钮控件 39 3.2.4 列表框控件 41 3.2.5 组合框控件 41 3.2.6 滚动条控件 43 3.3 控件的应用 43 3.3.1 添加控件到应用程序界面中 44 3.3.2 多个控件的排列布局 44 3.4 控件应用实例 45 3.5 小结 49 3.6 习题 49 第4章 对话框 51 4.1 对话框概述 51 4.1.1 对话框的组成 52 4.1.2 对话框的种类 52 4.1.3 对话框的编辑器 53 4.1.4 对话框的属性 54 4.2 创建对话框 55 4.2.1 添加对话框资源 55 4.2.2 添加控件 56 4.2.3 使用类向导创建对话框类 56 4.2.4 使用类向导添加成员变量 58 4.2.5 添加消息处理函数 61 4.3 模态对话框和非模态对话框 62 4.3.1 构建主程序框架 62 4.3.2 创建非模态对话框 65 4.3.3 对话框的输入/输出——数据交换机制 67 4.3.4 创建模态对话框 68 4.4 小结 69 4.5 习题 69 第5章 消息处理与类向导的使用 72 5.1 消息的种类 72 5.1.1 来自键盘的消息 72 5.1.2 来自鼠标的消息 73 5.1.3 来自窗口的消息 73 5.1.4 来自焦点的消息 74 5.1.5 定时器消息 75 5.1.6 命令消息 75 5.2 使用消息机制的应用实例 76 5.3 类向导的使用 79 5.3.1 启动类向导 79 5.3.2 使用类向导添加消息处理函数 79 5.3.3 添加成员变量 82 5.3.4 添加新类 83 5.4 小结 85 5.5 习题 85 第6章 菜单 87 6.1 Windows的应用程序菜单概述 87 6.1.1 菜单的种类 87 6.1.2 使用Visual C++ 6.0生成的菜单 88 6.2 创建菜单的操作方法 89 6.2.1 添加菜单资源 89 6.2.2 利用菜单编辑器编辑菜单资源 90 6.2.3 将菜单添加到应用程序中 93 6.2.4 添加消息处理函数 94 6.3 菜单的程序设计 97 6.3.1 在程序中获取菜单信息 97 6.3.2 在程序中修改菜单状态 98 6.3.3 在程序中添加、删除、插入菜单或菜单项 101 6.4 快捷菜单——弹出式菜单 103 6.4.1 手动创建快捷菜单 103 6.4.2 使用组件创建快捷菜单 104 6.5 小结 106 6.6 习题 106 第7章 工具栏与状态栏 110 7.1 工具栏介绍 110 7.1.1 工具栏类——CToolBar 111 7.1.2 创建工具栏 111 7.1.3 使用工具栏编辑器设计工具栏按钮 114 7.2 创建工具栏 116 7.2.1 添加工具栏资源 116 7.2.2 设计工具栏按钮 116 7.2.3 将工具栏添加到应用程序 117 7.3 显示/隐藏工具栏 119 7.4 状态栏 123 7.4.1 状态栏介绍 123 7.4.2 状态栏类——CStatusBar 123 7.4.3 创建状态栏 124 7.5 修改状态栏 125 7.5.1 指示器数组 126 7.5.2 修改状态栏 126 7.6 小结 127 7.7 习题 127 第3篇 Visual C++应用篇 第8章 图形 130 8.1 图形设备接口的基本原理 130 8.2 设备描述表的概念及使用 130 8.2.1 设备描述表概述 131 8.2.2 获取设备描述表 131 8.3 Windows的图形设备接口类 132 8.4 GDI对象的创建 133 8.4.1 自定义画刷类(CBrush) 133 8.4.2 自定义画笔类(CPen) 134 8.5 画笔类的使用 134 8.5.1 使用画笔类对象进行画线 135 8.5.2 改进画线功能 137 8.6 画刷类的使用 140 8.6.1 使用带颜色的画刷对象 140 8.6.2 使用带位图的画刷对象 142 8.7 小结 145 8.8 习题 145 第9章 文本与字体 148 9.1 文本编程简介 148 9.1.1 文本编程的基本概念 148 9.1.2 使用GDI类自定义字体对象 149 9.2 字体的使用 150 9.2.1 实现简单文字处理 150 9.2.2 特殊字符的处理 153 9.2.3 具有颜色的文本应用实例 156 9.3 小结 160 9.4 习题 160 第10章 文档视图结构 163 10.1 文档视图结构概述 163 10.1.1 文档和视图的基本原理 163 10.1.2 基于文档视图结构的应用程序 164 10.1.3 基于文档视图结构的程序的组成部分 164 10.1.4 框架窗口 165 10.2 文档/视图类的关联函数 166 10.2.1 视图类中的获取文档函数——GetDocument() 166 10.2.2 文档视图类其他常用的关联函数 167 10.3 单文档视图结构的应用程序 168 10.3.1 单文档视图结构的应用程序概述 168 10.3.2 创建单文档视图应用程序 169 10.4 多文档视图结构的应用程序 171 10.4.1 多文档视图结构的应用程序概述 171 10.4.2 创建多文档视图应用程序 172 10.5 小结 174 10.6 习题 174 第11章 文件 180 11.1 文件的基本概念 180 11.1.1 文件与输入/输出流 180 11.1.2 文件的内容与种类 181 11.2 常见的文件操作 181 11.2.1 打开和关闭顺序文件 181 11.2.2 顺序文件的读/写操作 183 11.2.3 顺序文件读/写操作应用实例 183 11.3 MFC中的CFile类 188 11.3.1 CFile类的成员函数详解 189 11.3.2 使用CFile类对象打开文件 189 11.3.3 使用CFile类对象读/写文件 190 11.3.4 使用CFile类对象关闭文件 190 11.4 文件输入/输出的实现实例 191 11.5 “打开”和“保存”对话框 194 11.5.1 创建“打开”对话框 194 11.5.2 创建“保存”对话框 197 11.6 小结 198 11.7 习题 198 第12章 文档序列化与注册表操作 202 12.1 什么是文档序列化 202 12.2 文档序列化的实例 203 12.2.1 实现简单绘图功能的实例 204 12.2.2 添加可序列化的类 206 12.2.3 重载Serialize()函数 207 12.2.4 加入宏 208 12.2.5 构造图形类CGraph 208 12.2.6 保存图形 209 12.2.7 完成绘图功能 210 12.2.8 以序列化方式保存图形 211 12.3 注册表的操作 213 12.3.1 注册表简介 213 12.3.2 注册表的结构 214 12.3.3 读/写注册表 215 12.4 小结 218 12.5 习题 218 第13章 应用程序界面设计 221 13.1 修改应用程序外观样式 221 13.1.1 在框架类中修改程序外观 221 13.1.2 在视图类中修改程序外观 224 13.2 制作动画效果的图标 225 13.3 设置背景图片 227 13.4 小结 232 13.5 习题 233 第14章 面向对象程序设计基础 235 14.1 面向对象技术概览 235 14.1.1 面向对象技术的基本概念和特点 235 14.1.2 面向对象程序设计语言的演化 236 14.2 类对象和类 236 14.2.1 类对象 237 14.2.2 类 237 14.3 对象的属性和方法 239 14.3.1 对象的属性 239 14.3.2 对象的方法 239 14.4 封装、继承和多态 240 14.4.1 封装 240 14.4.2 继承 241 14.4.3 多态 242 14.5 使用Visual C++6.0进行面向对象程序设计 242 14.5.1 类类型的定义 243 14.5.2 类的实例化使用 244 14.5.3 函数的多态形式——重载 246 14.5.4 类的构造函数 248 14.5.5 类的析构函数 249 14.5.6 指向当前对象的指针——this指针 250 14.5.7 类的继承 251 14.5.8 虚函数与多态性 255 14.6 小结 255 14.7 习题 256 第4篇 Visual C++开发篇 第15章 数据库应用程序开发 258 15.1 数据库基础理论简介 258 15.1.1 关系型数据库 258 15.1.2 数据库结构化查询语言 259 15.2 数据库访问技术介绍 259 15.2.1 使用Visual C++ 6.0开发数据库技术的特点 260 15.2.2 使用Visual C++ 6.0开发数据库的接口 260 15.3 使用ODBC进行数据库应用程序开发 260 15.3.1 ODBC技术概述 260 15.3.2 添加ODBC数据源 262 15.4 与ODBC兼容的MFC类 264 15.4.1 CDatabase类及其使用方法 264 15.4.2 CRecordSet类及其使用方法 265 15.4.3 CRecordView类 267 15.5 应用ODBC进行数据库应用编程 267 15.5.1 生成一个ODBC应用程序框架 267 15.5.2 数据库中的记录查询 269 15.5.3 为数据库增加记录 271 15.5.4 修改数据库记录 271 15.5.5 删除数据库记录 271 15.6 ADO简介 271 15.6.1 ADO技术概述 272 15.6.2 ADO中的对象 272 15.7 使用ADO进行数据库应用程序设计 273 15.7.1 导入ADO DLL 274 15.7.2 初始化ADO开发环境 274 15.7.3 使用ADO连接数据库 275 15.7.4 使用ADO函数执行数据库查询命令 278 15.7.5 访问数据库中的数据 279 15.7.6 操作数据 280 15.7.7 关闭数据库连接 280 15.8 应用ADO编程的实例 281 15.9 小结 284 15.10 习题 284 第16章 网络编程 287 16.1 一个简单的网络编程实例 287 16.2 Socket套接字及使用 290 16.2.1 Socket套接字概述 290 16.2.2 创建Socket套接字对象 291 16.2.3 使用套接字对象建立连接 291 16.2.4 发送数据和监听数据 292 16.2.5 数据接收 293 16.2.6 关闭套接字 293 16.3 基于Windows系统的套接字编程机制 294 16.3.1 Windows Sockets简介 294 16.3.2 WinSock编程原理及步骤 294 16.3.3 使用WinSock编程的实例 295 16.4 小结 299 16.5 习题 299 第17章 线程与进程程序设计 303 17.1 进程和线程的基本概念 303 17.2 MFC的线程处理机制 304 17.2.1 MFC线程处理机制概述 304 17.2.2 创建工作者线程 304 17.2.3 创建用户界面的线程 305 17.3 线程的同步 309 17.3.1 线程同步简介 309 17.3.2 线程同步的实现 309 17.4 进程之间的通信 313 17.4.1 剪贴板操作的常用函数 313 17.4.2 剪贴板操作的通信实例 314 17.5 小结 316 17.6 习题 317 第18章 动态链接库开发 319 18.1 一个简单的动态链接库实例 319 18.2 动态链接库详解 322 18.2.1 静态链接库与动态链接库 322 18.2.2 运行与查看动态链接库 323 18.3 Win32 DLL的创建和使用 324 18.4 MFC规则DLL的创建 325 18.4.1 MFC规则DLL简介 325 18.4.2 MFC规则的DLL创建 325 18.5 小结 329 18.6 习题 329 第19章 ActiveX应用程序设计 334 19.1 ActiveX技术简介 334 19.2 ActiveX控件详解 334 19.2.1 ActiveX控件与普通的Windows控件 335 19.2.2 ActiveX控件的属性 335 19.2.3 ActiveX控件的方法 336 19.2.4 ActiveX控件的事件 337 19.3 创建ActiveX控件 337 19.3.1 创建ActiveX控件应用程序外壳 337 19.3.2 添加OnDraw()函数代码 341 19.3.3 实现ActiveX控件与系统时间同步 342 19.4 ActiveX控件的高级应用 344 19.4.1 添加背景色属性 344 19.4.2 添加ActiveX的方法 347 19.4.3 添加ActiveX事件 349 19.5 小结 351 19.6 习题 351 第20章 Visual C++ 6.0的调试技术 354 20.1 Visual C++ 6.0的调试方法 354 20.1.1 错误种类 354 20.1.2 设置调试环境 355 20.1.3 设置调试断点 356 20.1.4 控制调试中的程序运行 359 20.2 使用调试信息查看工具 360 20.2.1 调试信息泡泡 360 20.2.2 变量窗口 360 20.2.3 观察窗口 361 20.2.4 快速查看变量窗口 361 20.3 高级调试技术 362 20.3.1 使用TRACE宏输出调试信息 362 20.3.2 使用断言输出错误信息 363 20.3.3 自建类的Dump()函数 364 20.3.4 检查内存泄漏 364 20.4 调试的应用实例 365 20.5 小结 368 20.6 习题 368 第5篇 案例篇 第21章 综合案例 370 21.1 系统功能概述 370 21.2 系统功能的具体实现 371 21.2.1 创建数据库 371 21.2.2 添加ODBC类型的数据源 372 21.2.3 创建应用程序工程 373 21.2.4 设计软件用户界面 375 21.3 实现成绩浏览功能的操作 377 21.3.1 添加成员变量 377 21.3.2 添加成员函数 378 21.3.3 添加函数程序代码 379 21.3.4 编译并运行 380 21.4 实现添加成绩的功能 381 21.5 实现删除成绩的功能 382 21.6 实现成绩查询的功能 384 21.7 小结 386
毕业于清华大学__eol__曾就读于中国水利水电科学研究院__eol__主要著作出版情况:《家庭理财宝典:生活中的理财知识大全集》 电子工业出版社__eol__《财报中隐藏的大牛股》 电子工业出版社__eol__《实战网络营销——网络推广经典案例战术解析(第2版)》 电子工业出版社__eol__《日常生活中的经济学》 电子工业出版社