本书是为高等院校面向应用型人才培养编写的C 语言程序设计教材。全书共分9章,主要内容包括Qt C 开发环境介绍、C 程序设计基础、类与对象、继承与派生、虚函数与多态、运算符重载、模板和异常处理、输入输出流与命名空间、图形界面程序设计基础以及图形界面编程综合实例。本书采用Qt跨平台C 程序开发框架,结合案例驱动编写方式,语法介绍语言精练、内容深入浅出、循序渐进、程序案例生动易懂,以规则几何图形面积和体积计算程序设计案例贯穿本书,既传授给学生C 语言的基本概念和知识,又传授给学生使用C 语言进行图形界面程序设计的基本方法及基本技能。
本书既可以作为高等院校本科及专科学生C 语言程序设计的教材,又可以作为教师、自学者的参考用书,同时也可供各类软件开发设计人员学习参考。
本书配有电子教案及相关教学资源,读者可从网站www.tup.com.cn下载。
1. 本书基于C 语言程序设计教学大纲,结合面向市场应用型人才需求现状,教材内容编排具有很强的针对性。2. 注重编程实践能力的培养,把跨操作系统平台程序设计、图形界面程序设计和面向对象的程学设计与C 语言的基本概念和基本知识有机结合.3. 全书内容注重易用性,知识完善,案例丰富,即使没有任何程序设计基础,也可以通过本书的学习,循序渐进、由浅入深的掌握C 程序设计语言的语法、面向对象程学设计的方法和跨平台图形界面程序设计技能。
前言
C 是优秀的计算机程序设计语言,它的程序设计功能非常强大,我国绝大多数高等院校都把它作为程序设计入门教学的首选。许多经典的C 语言程序设计教材都是基于Visual C 控制台程序设计框架编写的,内容包括C 语言概述、基本数据类型、运算符和表达式、程序流程控制、数组、函数、指针、结构体、共用体与枚举、类和对象、运算符重载、继承、虚函数与多态、模板、流等C 语言的基本概念和基本知识。这类教材强调的是培养学生理解和掌握C 语言的语法及逻辑规则,强调对C 程序设计语言的字、词、数据、表达式、语句、函数、类、对象等基本概念知识的掌握。在多年的教学实践中我们发现,这类教材缺乏对图形界面C 程序设计的介绍,学生要想掌握用C 语言设计图形界面的程序,还必须自学或者参加Visual C 语言课程的学习,而Visual C 语言体系庞大,学起来有一定的困难,造成很多学生虽然学了C 语言,却不能很好地使用它。
笔者所在学校在多年的教学改革和教学实践中,将C 语言的教学和当前流行的Qt跨平台开发框架相结合,增加了基于Qt的图形界面应用程序设计,并于2014年出版了第一部教材《Qt C 跨平台图形界面程序设计基础》。该教材在实际教学应用中得到广泛的认可,基于Qt C 的跨平台、简单易学的优点,使得学生不仅掌握C 语言的基本概念、基本知识和基本的程序设计方法,更重要的是培养学生具备初步的跨操作系统平台开发图形界面程序的基本技能,提高了学习的兴趣。
在对课程教学改革与实践的不断探索中,结合读者的反馈意见,作者对教材进行了修订和完善,推出了第2版。第2版在第1版的基础上完成了两方面的修订:
一是扩充和完善了C 编程基础和面向对象程序设计的相关章节内容,包括章节调整,增加和完善了语法知识和编程实例以及习题;二是将图形界面程序设计与面向对象编程有机地结合在一起,不是把图形界面编程应用作为单独的一章,而是与讲解C 语言基本知识的章节相融合,先讲解面向对象基础知识,再结合图形界面编程实现,并围绕一个规则几何图形面积和体积计算的综合程序实例逐步展开和完善。具体修订的章节内容如下。
(1)
第1章,增加了Windows平台下Qt C 语言开发环境第5版的安装与配置,Qt5简要介绍,Windows平台下使用Qt第5版开发C 语言程序,Qt4平台项目向Qt5平台移植,中文版Qt C 语言集成开发环境安装常见问题解决办法,不同编译器和不同版本的Qt共存问题等内容,对Qt C 程序设计开发环境的使用进一步修订完善,使其更适合于没有任何Qt C 开发基础的初学者(修订由殷立峰完成)。
(2)
第2章,C 程序设计基础增加和完善了程序控制结构、数组、函数和指针的内容,更适合于没有任何C语言开发基础的初学者(修订由祁淑霞完成)。
(3)
第3和第8章,修订和完善了所有程序实例,采用统一的编码风格(修订由祁淑霞完成)。
(4)
第4章,将本书第1版中第9章图形界面程序设计基础和第10章对话框编程的内容进行整合,放到本书第4章。增加了Qt C 语言开发图形界面程序综合案例规则几何图形面积和体积计算程序设计内容。通过章节调整和内容整合增加,既能让学生提前学习掌握采用C 语言开发图形界面程序的基本知识,又通过规则几何图形面积和体积计算程序设计案例贯穿本书,让学生循序渐进地掌握和提高利用C 语言开发图形界面程序的基本技能(修订由殷立峰完成)。
(5)
第5~9章,调整有关章节结构,增加章节内容并完善了程序实例和习题(修订由祁淑霞完成)。
(6)
第5章,增加规则几何图形面积和体积计算之圆柱体体积计算内容,介绍了在图形界面程序设计中如何灵活运用继承与派生知识的具体方法。第6章,增加规则几何图形面积和体积计算之矩形、正方体、梯形面积计算内容,介绍了在图形界面程序设计中如何灵活运用多态技术的具体方法(修订由殷立峰完成)。
(7)
第9章,增加了规则几何图形面积和体积计算之圆柱体体积计算的保存和查询功能,介绍了图形界面程序设计中程序数据、数据文件和图形界面程序设计的有机结合(修订由殷立峰完成)。
修订后的教材具备如下特色。
(1)
本书基于C 语言程序设计教学大纲,结合社会应用型人才需求现状,教材内容编排具有很强的针对性。
(2)
注重编程实践能力的培养,把跨操作系统平台程序设计、图形界面程序设计和面向对象的程学设计与C 语言的基本概念和基本知识有机结合,不但传授给学生C 语言的基本概念和基本知识,而且使学生掌握利用C 程序设计语言进行图形界面程序设计开发和跨操作系统平台进行程序设计开发的基本技能。
(3)
全书内容注重易用性,知识完善,案例丰富,即使没有任何程序设计基础,也可以通过本书的学习,循序渐进、由浅入深地掌握C 程序设计语言的语法、面向对象程学设计的方法和跨平台图形界面程序设计技能。
(4)
本书既适合于程序设计初学者,也适合于进一步学习图形界面编程的人员。从Qt图形界面程序设计开始,本书的第4章、第5章及第9章,全部围绕一个综合应用实例逐步完善一个图形界面的程序设计,使读者全面学习Qt图形界面开发相关技术。
(5)
以跨Windows、Linux平台,基于Qt的C 语言编程为框架,通过案例驱动教学,内容精练、结构紧凑,通俗易懂、重点突出,注重实用和能力的培养,克服了一般C 语言程序设计教科书中学习C 枯燥的缺点,通过生动有趣的案例,激发学生学习兴趣,让学生由衷地喜欢上C 程序设计语言,掌握程序设计技巧和使用C 程学设计语言分析解决实际问题的动手能力。
由于作者水平有限,书中不足之处在所难免,敬请读者批评指正。 编者
2017年12月
目录
第1章走进Qt/1
1.1Qt简介/1
1.1.1认识Qt/1
1.1.2Qt开发环境简介/2
1.1.3使用Qt开发C 应用程序的优势/4
1.2Qt的下载、安装与配置/5
1.2.1Windows平台下第4版Qt C 语言集成开发环境的安装与配置/5
1.2.2Windows平台下第5版Qt C 语言开发环境的安装与配置/31
1.2.3Linux平台下Qt的C 语言开发环境的安装与配置/41
1.3Qt Creator集成开发环境/47
1.3.1Qt Creator集成开发环境/47
1.3.2Qt Creator常用菜单功能介绍/48
1.4Qt Creator的基本操作/49
1.4.1Qt Creator的启动与退出/49
1.4.2使用Qt创建、打开和关闭项目/51
1.4.3Qt Creator的编辑器、项目视图的
操作/55
1.4.4文件的打开、编辑、保存与关闭/56
1.4.5项目编译模式及其配置/58
1.4.6编译、连接生成项目的可执行文件/58
1.4.7纠正编译或连接出现的错误/59
1.4.8Qt工具栏的使用/59
1.5Qt Creator联机帮助系统/59
1.5.1Qt中如何寻求帮助/59
1.5.2帮助文件的打开及使用源代码
编辑器/60
1.5.3缩小查找范围/61
1.6使用Qt开发C 语言程序/62
1.6.1Windows平台下使用Qt第4版开发C 语言程序/62
1.6.2Windows平台下使用Qt第5版开发C 语言程序/71
1.6.3Linux平台下使用Qt开发C 语言程序/82
1.7Qt5简要介绍/87
1.7.1Qt5简介/87
1.7.2Qt4平台项目向Qt5平台移植/89
1.8习题/91第2章C 程序设计基础/92
2.1C 语言简介/92
2.1.1认识C 语言/92
2.1.2C 的标准化/93
2.2C 控制台应用程序/93
2.2.1C 控制台程序举例/93
2.2.2C 控制台源程序的结构/96
2.3C 语言的基本语法成分/96
2.3.1C 语言字符集/97
2.3.2C 语言的基本语法单位/97
2.4基本数据类型与表达式/99
2.4.1数据类型/99
2.4.2常量、变量/101
2.4.3运算符与表达式/103
2.4.4数据类型的转换/108
2.5C 控制台程序常用的输入输出/109
2.6结构化程序设计/112
2.6.1结构化程序设计概述/112
2.6.2顺序结构/112
2.6.3选择结构/113
2.6.4循环结构/118
2.6.5其他控制语句/124
2.6.6常用算法程序举例/125
2.7函数/130
2.7.1函数概述/130
2.7.2函数的其他特性/133
2.7.3变量的作用域与存储类别/136
2.8数组与字符串/141
2.8.1数组/141
2.8.2字符串与string类/146
2.9指针与引用/149
2.9.1指针/149
2.9.2引用/151
2.10const修饰符/156
2.11动态内存管理/158
2.12习题/161
2.12.1选择题/161
2.12.2填空题/162
2.12.3编程题/164第3章类与对象/165
3.1面向对象程序设计概述/165
3.1.1面向对象的基本概念/165
3.1.2面向对象的基本特征/168
3.1.3面向对象的计算机语言简介/169
3.2类与对象的定义/170
3.2.1类的定义/170
3.2.2对象的定义与使用/178
3.2.3类的作用域/182
3.2.4类的封装性和信息隐藏公有接口与私有实现的分离/184
3.3构造函数与析构函数/186
3.3.1构造函数/186
3.3.2复制构造函数/196
3.3.3析构函数/200
3.4对象的深复制/203
3.5静态成员/205
3.5.1静态数据成员/205
3.5.2静态成员函数/208
3.6常类型/210
3.6.1类的常数据成员/210
3.6.2类的常成员函数/212
3.6.3常对象/213
3.7友元/215
3.7.1友元函数/215
3.7.2友元类/220
3.7.3友元应用举例/221
3.8对象数组与类的组合/224
3.8.1对象数组/224
3.8.2类的组合/227
3.9程序举例/232
3.10习题/234
3.10.1选择题/234
3.10.2分析程序题/236
3.10.3问答题/238
3.10.4编程题/239第4章Qt GUI图形界面程序设计基础/240
4.1图形界面程序设计基础知识/240
4.1.1Qt C 中的对象/240
4.1.2Qt C 中的窗体/241
4.1.3Qt内置的窗口部件和对话框类/241
4.2Qt的信号和槽/247
4.3Qt的元对象系统/248
4.4Qt命令行方式开发C 语言图形
界面程序/249
4.4.1程序的编辑、编译和运行/249
4.4.2Qt C 图形界面程序如何响应用户的操作/252
4.4.3Qt中如何实现窗口部件的布局/253
4.5命令行方式下对话框程序设计/255
4.6可扩展的对话框设计/264
4.7规则几何图形面积和体积计算之菜单、工具栏的设计Qt4 Creator开发图形界面程序综合案例/279
4.7.1关于Qt的项目/279
4.7.2创建项目ReFigCalculator/279
4.7.3创建项目程序的菜单、子菜单及其工具栏按钮/283
4.8规则几何图形面积和体积计算之三角形面积计算Qt4 Creator开发图形界面程序综合案例/301
4.8.1三角形面积计算对话框的设计与
实现/301
4.8.2设计三角形类,实现面积计算功能/316
4.9规则几何图形面积和体积计算之圆面积计算Qt5
Creator开发图形界面程序综合案例/321
4.9.1Qt4平台项目导入Qt5平台的步骤和
方法/321
4.9.2圆面积计算对话框的设计与实现/324
4.9.3增加圆形类,实现面积计算功能/328
4.10习题/334第5章继承与派生/336
5.1继承概述/336
5.2基类与派生类/337
5.2.1派生类的定义/337
5.2.2访问控制/340
5.2.3重名的成员/346
5.2.4派生类中访问静态成员/348
5.3派生类的构造函数与析构函数/349
5.3.1构造函数和析构函数的执行顺序/350
5.3.2派生类构造函数的定义/351
5.3.3派生类析构函数的定义/355
5.3.4程序举例/356
5.4多继承/359
5.4.1派生类的定义/359
5.4.2虚继承/361
5.5Qt5 Creator开发图形界面程序综合案例规则几何图形面积和体积计算之圆柱体体积计算/362
5.5.1圆柱体体积计算对话框的设计与
实现/362
5.5.2增加圆柱体类,实现体积计算功能/366
5.6习题/372
5.6.1选择题/372
5.6.2问答及编程题/373第6章虚函数与多态/375
6.1静态联编和动态联编/375
6.2类指针的关系/378
6.3虚函数/380
6.4纯虚函数和抽象类/386
6.5规则几何图形面积和体积计算之矩形、正方形、梯形面积计算Qt5 Creator开发图形界面程序综合案例/393
6.5.1矩形面积计算对话框的设计与
实现/393
6.5.2正方形面积计算对话框的设计
与实现/397
6.5.3梯形面积计算对话框的设计与
实现/401
6.5.4添加矩形、正方形和梯形对话
框类/406
6.5.5实现矩形、正方形和梯形对话框的面积计算功能/409
6.6习题/411
6.6.1选择题/411
6.6.2填空题/412
6.6.3编程题/414第7章运算符重载/415
7.1运算符重载概述/415
7.2运算符重载的规则/417
7.3友元或成员函数重载运算符/418
7.3.1友元函数重载运算符/419
7.3.2成员函数重载运算符/421
7.3.3友元函数和成员函数重载的区别/424
7.4常用运算符的重载/425
7.4.1自增/自减( /--)运算符的重载/425
7.4.2赋值运算符(=)的重载/429
7.4.3下标运算符(\[\])的重载/432
7.5习题/434
7.5.1选择题/434
7.5.2编程题/434第8章模板和异常处理/436
8.1模板的概念/436
8.2函数模板/436
8.2.1函数模板的定义/436
8.2.2函数模板的实例化/438
8.2.3函数模板应用举例/439
8.3类模板/441
8.3.1类模板的定义/441
8.3.2类模板的实例化/442
8.3.3类模板的应用举例/443
8.4标准模板库/447
8.4.1容器/447
8.4.2算法/451
8.4.3迭代器/454
8.5异常处理/455
8.5.1异常处理概述/455
8.5.2异常处理的实现/456
8.5.3标准库中的异常类型/460
8.6习题/462
8.6.1选择题/462
8.6.2编程题/463第9章输入输出流与命名空间/464
9.1I/O流概述/465
9.2标准I/O流/466
9.2.1标准I/O流对象/466
9.2.2标准输入输出/467
9.2.3重载插入/提取运算符/471
9.2.4输入输出流的成员函数/474
9.3流格式控制/478
9.3.1ios成员函数/478
9.3.2操纵算子/483
9.4文件的输入输出/485
9.4.1文件/485
9.4.2文件的打开和关闭/486
9.4.3文本文件/489
9.4.4二进制文件/492
9.5命名空间/500
9.6规则几何图形面积和体积计算之圆柱体体积的保存/503
9.6.1圆柱体体积计算和保存对话框的设计与实现/503
9.6.2实现圆柱体体积计算结果的保存
功能/506
9.6.3实现圆柱体体积计算结果的查询
功能/513
9.7习题/515附录AC 常用关键字/516附录BC 运算符/517附录CC/C 常用库函数/518
参考文献/521