本書是為高等院校面向應(yīng)用型人才培養(yǎng)編寫的C 語言程序設(shè)計教材。全書共分9章,主要內(nèi)容包括Qt C 開發(fā)環(huán)境介紹、C 程序設(shè)計基礎(chǔ)、類與對象、繼承與派生、虛函數(shù)與多態(tài)、運算符重載、模板和異常處理、輸入輸出流與命名空間、圖形界面程序設(shè)計基礎(chǔ)以及圖形界面編程綜合實例。本書采用Qt跨平臺C 程序開發(fā)框架,結(jié)合案例驅(qū)動編寫方式,語法介紹語言精練、內(nèi)容深入淺出、循序漸進、程序案例生動易懂,以規(guī)則幾何圖形面積和體積計算程序設(shè)計案例貫穿本書,既傳授給學生C 語言的基本概念和知識,又傳授給學生使用C 語言進行圖形界面程序設(shè)計的基本方法及基本技能。
本書既可以作為高等院校本科及專科學生C 語言程序設(shè)計的教材,又可以作為教師、自學者的參考用書,同時也可供各類軟件開發(fā)設(shè)計人員學習參考。
本書配有電子教案及相關(guān)教學資源,讀者可從網(wǎng)站www.tup.com.cn下載。
1. 本書基于C 語言程序設(shè)計教學大綱,結(jié)合面向市場應(yīng)用型人才需求現(xiàn)狀,教材內(nèi)容編排具有很強的針對性。2. 注重編程實踐能力的培養(yǎng),把跨操作系統(tǒng)平臺程序設(shè)計、圖形界面程序設(shè)計和面向?qū)ο蟮某虒W設(shè)計與C 語言的基本概念和基本知識有機結(jié)合.3. 全書內(nèi)容注重易用性,知識完善,案例豐富,即使沒有任何程序設(shè)計基礎(chǔ),也可以通過本書的學習,循序漸進、由淺入深的掌握C 程序設(shè)計語言的語法、面向?qū)ο蟪虒W設(shè)計的方法和跨平臺圖形界面程序設(shè)計技能。
前言
C 是優(yōu)秀的計算機程序設(shè)計語言,它的程序設(shè)計功能非常強大,我國絕大多數(shù)高等院校都把它作為程序設(shè)計入門教學的首選。許多經(jīng)典的C 語言程序設(shè)計教材都是基于Visual C 控制臺程序設(shè)計框架編寫的,內(nèi)容包括C 語言概述、基本數(shù)據(jù)類型、運算符和表達式、程序流程控制、數(shù)組、函數(shù)、指針、結(jié)構(gòu)體、共用體與枚舉、類和對象、運算符重載、繼承、虛函數(shù)與多態(tài)、模板、流等C 語言的基本概念和基本知識。這類教材強調(diào)的是培養(yǎng)學生理解和掌握C 語言的語法及邏輯規(guī)則,強調(diào)對C 程序設(shè)計語言的字、詞、數(shù)據(jù)、表達式、語句、函數(shù)、類、對象等基本概念知識的掌握。在多年的教學實踐中我們發(fā)現(xiàn),這類教材缺乏對圖形界面C 程序設(shè)計的介紹,學生要想掌握用C 語言設(shè)計圖形界面的程序,還必須自學或者參加Visual C 語言課程的學習,而Visual C 語言體系龐大,學起來有一定的困難,造成很多學生雖然學了C 語言,卻不能很好地使用它。
筆者所在學校在多年的教學改革和教學實踐中,將C 語言的教學和當前流行的Qt跨平臺開發(fā)框架相結(jié)合,增加了基于Qt的圖形界面應(yīng)用程序設(shè)計,并于2014年出版了第一部教材《Qt C 跨平臺圖形界面程序設(shè)計基礎(chǔ)》。該教材在實際教學應(yīng)用中得到廣泛的認可,基于Qt C 的跨平臺、簡單易學的優(yōu)點,使得學生不僅掌握C 語言的基本概念、基本知識和基本的程序設(shè)計方法,更重要的是培養(yǎng)學生具備初步的跨操作系統(tǒng)平臺開發(fā)圖形界面程序的基本技能,提高了學習的興趣。
在對課程教學改革與實踐的不斷探索中,結(jié)合讀者的反饋意見,作者對教材進行了修訂和完善,推出了第2版。第2版在第1版的基礎(chǔ)上完成了兩方面的修訂:
一是擴充和完善了C 編程基礎(chǔ)和面向?qū)ο蟪绦蛟O(shè)計的相關(guān)章節(jié)內(nèi)容,包括章節(jié)調(diào)整,增加和完善了語法知識和編程實例以及習題;二是將圖形界面程序設(shè)計與面向?qū)ο缶幊逃袡C地結(jié)合在一起,不是把圖形界面編程應(yīng)用作為單獨的一章,而是與講解C 語言基本知識的章節(jié)相融合,先講解面向?qū)ο蠡A(chǔ)知識,再結(jié)合圖形界面編程實現(xiàn),并圍繞一個規(guī)則幾何圖形面積和體積計算的綜合程序?qū)嵗鸩秸归_和完善。具體修訂的章節(jié)內(nèi)容如下。
(1)
第1章,增加了Windows平臺下Qt C 語言開發(fā)環(huán)境第5版的安裝與配置,Qt5簡要介紹,Windows平臺下使用Qt第5版開發(fā)C 語言程序,Qt4平臺項目向Qt5平臺移植,中文版Qt C 語言集成開發(fā)環(huán)境安裝常見問題解決辦法,不同編譯器和不同版本的Qt共存問題等內(nèi)容,對Qt C 程序設(shè)計開發(fā)環(huán)境的使用進一步修訂完善,使其更適合于沒有任何Qt C 開發(fā)基礎(chǔ)的初學者(修訂由殷立峰完成)。
。2)
第2章,C 程序設(shè)計基礎(chǔ)增加和完善了程序控制結(jié)構(gòu)、數(shù)組、函數(shù)和指針的內(nèi)容,更適合于沒有任何C語言開發(fā)基礎(chǔ)的初學者(修訂由祁淑霞完成)。
(3)
第3和第8章,修訂和完善了所有程序?qū)嵗,采用統(tǒng)一的編碼風格(修訂由祁淑霞完成)。
。4)
第4章,將本書第1版中第9章圖形界面程序設(shè)計基礎(chǔ)和第10章對話框編程的內(nèi)容進行整合,放到本書第4章。增加了Qt C 語言開發(fā)圖形界面程序綜合案例規(guī)則幾何圖形面積和體積計算程序設(shè)計內(nèi)容。通過章節(jié)調(diào)整和內(nèi)容整合增加,既能讓學生提前學習掌握采用C 語言開發(fā)圖形界面程序的基本知識,又通過規(guī)則幾何圖形面積和體積計算程序設(shè)計案例貫穿本書,讓學生循序漸進地掌握和提高利用C 語言開發(fā)圖形界面程序的基本技能(修訂由殷立峰完成)。
。5)
第5~9章,調(diào)整有關(guān)章節(jié)結(jié)構(gòu),增加章節(jié)內(nèi)容并完善了程序?qū)嵗土曨}(修訂由祁淑霞完成)。
。6)
第5章,增加規(guī)則幾何圖形面積和體積計算之圓柱體體積計算內(nèi)容,介紹了在圖形界面程序設(shè)計中如何靈活運用繼承與派生知識的具體方法。第6章,增加規(guī)則幾何圖形面積和體積計算之矩形、正方體、梯形面積計算內(nèi)容,介紹了在圖形界面程序設(shè)計中如何靈活運用多態(tài)技術(shù)的具體方法(修訂由殷立峰完成)。
。7)
第9章,增加了規(guī)則幾何圖形面積和體積計算之圓柱體體積計算的保存和查詢功能,介紹了圖形界面程序設(shè)計中程序數(shù)據(jù)、數(shù)據(jù)文件和圖形界面程序設(shè)計的有機結(jié)合(修訂由殷立峰完成)。
修訂后的教材具備如下特色。
。1)
本書基于C 語言程序設(shè)計教學大綱,結(jié)合社會應(yīng)用型人才需求現(xiàn)狀,教材內(nèi)容編排具有很強的針對性。
。2)
注重編程實踐能力的培養(yǎng),把跨操作系統(tǒng)平臺程序設(shè)計、圖形界面程序設(shè)計和面向?qū)ο蟮某虒W設(shè)計與C 語言的基本概念和基本知識有機結(jié)合,不但傳授給學生C 語言的基本概念和基本知識,而且使學生掌握利用C 程序設(shè)計語言進行圖形界面程序設(shè)計開發(fā)和跨操作系統(tǒng)平臺進行程序設(shè)計開發(fā)的基本技能。
。3)
全書內(nèi)容注重易用性,知識完善,案例豐富,即使沒有任何程序設(shè)計基礎(chǔ),也可以通過本書的學習,循序漸進、由淺入深地掌握C 程序設(shè)計語言的語法、面向?qū)ο蟪虒W設(shè)計的方法和跨平臺圖形界面程序設(shè)計技能。
。4)
本書既適合于程序設(shè)計初學者,也適合于進一步學習圖形界面編程的人員。從Qt圖形界面程序設(shè)計開始,本書的第4章、第5章及第9章,全部圍繞一個綜合應(yīng)用實例逐步完善一個圖形界面的程序設(shè)計,使讀者全面學習Qt圖形界面開發(fā)相關(guān)技術(shù)。
(5)
以跨Windows、Linux平臺,基于Qt的C 語言編程為框架,通過案例驅(qū)動教學,內(nèi)容精練、結(jié)構(gòu)緊湊,通俗易懂、重點突出,注重實用和能力的培養(yǎng),克服了一般C 語言程序設(shè)計教科書中學習C 枯燥的缺點,通過生動有趣的案例,激發(fā)學生學習興趣,讓學生由衷地喜歡上C 程序設(shè)計語言,掌握程序設(shè)計技巧和使用C 程學設(shè)計語言分析解決實際問題的動手能力。
由于作者水平有限,書中不足之處在所難免,敬請讀者批評指正。 編者
2017年12月
目錄
第1章走進Qt/1
1.1Qt簡介/1
1.1.1認識Qt/1
1.1.2Qt開發(fā)環(huán)境簡介/2
1.1.3使用Qt開發(fā)C 應(yīng)用程序的優(yōu)勢/4
1.2Qt的下載、安裝與配置/5
1.2.1Windows平臺下第4版Qt C 語言集成開發(fā)環(huán)境的安裝與配置/5
1.2.2Windows平臺下第5版Qt C 語言開發(fā)環(huán)境的安裝與配置/31
1.2.3Linux平臺下Qt的C 語言開發(fā)環(huán)境的安裝與配置/41
1.3Qt Creator集成開發(fā)環(huán)境/47
1.3.1Qt Creator集成開發(fā)環(huán)境/47
1.3.2Qt Creator常用菜單功能介紹/48
1.4Qt Creator的基本操作/49
1.4.1Qt Creator的啟動與退出/49
1.4.2使用Qt創(chuàng)建、打開和關(guān)閉項目/51
1.4.3Qt Creator的編輯器、項目視圖的
操作/55
1.4.4文件的打開、編輯、保存與關(guān)閉/56
1.4.5項目編譯模式及其配置/58
1.4.6編譯、連接生成項目的可執(zhí)行文件/58
1.4.7糾正編譯或連接出現(xiàn)的錯誤/59
1.4.8Qt工具欄的使用/59
1.5Qt Creator聯(lián)機幫助系統(tǒng)/59
1.5.1Qt中如何尋求幫助/59
1.5.2幫助文件的打開及使用源代碼
編輯器/60
1.5.3縮小查找范圍/61
1.6使用Qt開發(fā)C 語言程序/62
1.6.1Windows平臺下使用Qt第4版開發(fā)C 語言程序/62
1.6.2Windows平臺下使用Qt第5版開發(fā)C 語言程序/71
1.6.3Linux平臺下使用Qt開發(fā)C 語言程序/82
1.7Qt5簡要介紹/87
1.7.1Qt5簡介/87
1.7.2Qt4平臺項目向Qt5平臺移植/89
1.8習題/91第2章C 程序設(shè)計基礎(chǔ)/92
2.1C 語言簡介/92
2.1.1認識C 語言/92
2.1.2C 的標準化/93
2.2C 控制臺應(yīng)用程序/93
2.2.1C 控制臺程序舉例/93
2.2.2C 控制臺源程序的結(jié)構(gòu)/96
2.3C 語言的基本語法成分/96
2.3.1C 語言字符集/97
2.3.2C 語言的基本語法單位/97
2.4基本數(shù)據(jù)類型與表達式/99
2.4.1數(shù)據(jù)類型/99
2.4.2常量、變量/101
2.4.3運算符與表達式/103
2.4.4數(shù)據(jù)類型的轉(zhuǎn)換/108
2.5C 控制臺程序常用的輸入輸出/109
2.6結(jié)構(gòu)化程序設(shè)計/112
2.6.1結(jié)構(gòu)化程序設(shè)計概述/112
2.6.2順序結(jié)構(gòu)/112
2.6.3選擇結(jié)構(gòu)/113
2.6.4循環(huán)結(jié)構(gòu)/118
2.6.5其他控制語句/124
2.6.6常用算法程序舉例/125
2.7函數(shù)/130
2.7.1函數(shù)概述/130
2.7.2函數(shù)的其他特性/133
2.7.3變量的作用域與存儲類別/136
2.8數(shù)組與字符串/141
2.8.1數(shù)組/141
2.8.2字符串與string類/146
2.9指針與引用/149
2.9.1指針/149
2.9.2引用/151
2.10const修飾符/156
2.11動態(tài)內(nèi)存管理/158
2.12習題/161
2.12.1選擇題/161
2.12.2填空題/162
2.12.3編程題/164第3章類與對象/165
3.1面向?qū)ο蟪绦蛟O(shè)計概述/165
3.1.1面向?qū)ο蟮幕靖拍?165
3.1.2面向?qū)ο蟮幕咎卣?168
3.1.3面向?qū)ο蟮挠嬎銠C語言簡介/169
3.2類與對象的定義/170
3.2.1類的定義/170
3.2.2對象的定義與使用/178
3.2.3類的作用域/182
3.2.4類的封裝性和信息隱藏公有接口與私有實現(xiàn)的分離/184
3.3構(gòu)造函數(shù)與析構(gòu)函數(shù)/186
3.3.1構(gòu)造函數(shù)/186
3.3.2復(fù)制構(gòu)造函數(shù)/196
3.3.3析構(gòu)函數(shù)/200
3.4對象的深復(fù)制/203
3.5靜態(tài)成員/205
3.5.1靜態(tài)數(shù)據(jù)成員/205
3.5.2靜態(tài)成員函數(shù)/208
3.6常類型/210
3.6.1類的常數(shù)據(jù)成員/210
3.6.2類的常成員函數(shù)/212
3.6.3常對象/213
3.7友元/215
3.7.1友元函數(shù)/215
3.7.2友元類/220
3.7.3友元應(yīng)用舉例/221
3.8對象數(shù)組與類的組合/224
3.8.1對象數(shù)組/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圖形界面程序設(shè)計基礎(chǔ)/240
4.1圖形界面程序設(shè)計基礎(chǔ)知識/240
4.1.1Qt C 中的對象/240
4.1.2Qt C 中的窗體/241
4.1.3Qt內(nèi)置的窗口部件和對話框類/241
4.2Qt的信號和槽/247
4.3Qt的元對象系統(tǒng)/248
4.4Qt命令行方式開發(fā)C 語言圖形
界面程序/249
4.4.1程序的編輯、編譯和運行/249
4.4.2Qt C 圖形界面程序如何響應(yīng)用戶的操作/252
4.4.3Qt中如何實現(xiàn)窗口部件的布局/253
4.5命令行方式下對話框程序設(shè)計/255
4.6可擴展的對話框設(shè)計/264
4.7規(guī)則幾何圖形面積和體積計算之菜單、工具欄的設(shè)計Qt4 Creator開發(fā)圖形界面程序綜合案例/279
4.7.1關(guān)于Qt的項目/279
4.7.2創(chuàng)建項目ReFigCalculator/279
4.7.3創(chuàng)建項目程序的菜單、子菜單及其工具欄按鈕/283
4.8規(guī)則幾何圖形面積和體積計算之三角形面積計算Qt4 Creator開發(fā)圖形界面程序綜合案例/301
4.8.1三角形面積計算對話框的設(shè)計與
實現(xiàn)/301
4.8.2設(shè)計三角形類,實現(xiàn)面積計算功能/316
4.9規(guī)則幾何圖形面積和體積計算之圓面積計算Qt5
Creator開發(fā)圖形界面程序綜合案例/321
4.9.1Qt4平臺項目導入Qt5平臺的步驟和
方法/321
4.9.2圓面積計算對話框的設(shè)計與實現(xiàn)/324
4.9.3增加圓形類,實現(xiàn)面積計算功能/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派生類中訪問靜態(tài)成員/348
5.3派生類的構(gòu)造函數(shù)與析構(gòu)函數(shù)/349
5.3.1構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行順序/350
5.3.2派生類構(gòu)造函數(shù)的定義/351
5.3.3派生類析構(gòu)函數(shù)的定義/355
5.3.4程序舉例/356
5.4多繼承/359
5.4.1派生類的定義/359
5.4.2虛繼承/361
5.5Qt5 Creator開發(fā)圖形界面程序綜合案例規(guī)則幾何圖形面積和體積計算之圓柱體體積計算/362
5.5.1圓柱體體積計算對話框的設(shè)計與
實現(xiàn)/362
5.5.2增加圓柱體類,實現(xiàn)體積計算功能/366
5.6習題/372
5.6.1選擇題/372
5.6.2問答及編程題/373第6章虛函數(shù)與多態(tài)/375
6.1靜態(tài)聯(lián)編和動態(tài)聯(lián)編/375
6.2類指針的關(guān)系/378
6.3虛函數(shù)/380
6.4純虛函數(shù)和抽象類/386
6.5規(guī)則幾何圖形面積和體積計算之矩形、正方形、梯形面積計算Qt5 Creator開發(fā)圖形界面程序綜合案例/393
6.5.1矩形面積計算對話框的設(shè)計與
實現(xiàn)/393
6.5.2正方形面積計算對話框的設(shè)計
與實現(xiàn)/397
6.5.3梯形面積計算對話框的設(shè)計與
實現(xiàn)/401
6.5.4添加矩形、正方形和梯形對話
框類/406
6.5.5實現(xiàn)矩形、正方形和梯形對話框的面積計算功能/409
6.6習題/411
6.6.1選擇題/411
6.6.2填空題/412
6.6.3編程題/414第7章運算符重載/415
7.1運算符重載概述/415
7.2運算符重載的規(guī)則/417
7.3友元或成員函數(shù)重載運算符/418
7.3.1友元函數(shù)重載運算符/419
7.3.2成員函數(shù)重載運算符/421
7.3.3友元函數(shù)和成員函數(shù)重載的區(qū)別/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函數(shù)模板/436
8.2.1函數(shù)模板的定義/436
8.2.2函數(shù)模板的實例化/438
8.2.3函數(shù)模板應(yīng)用舉例/439
8.3類模板/441
8.3.1類模板的定義/441
8.3.2類模板的實例化/442
8.3.3類模板的應(yīng)用舉例/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異常處理的實現(xiàn)/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輸入輸出流的成員函數(shù)/474
9.3流格式控制/478
9.3.1ios成員函數(shù)/478
9.3.2操縱算子/483
9.4文件的輸入輸出/485
9.4.1文件/485
9.4.2文件的打開和關(guān)閉/486
9.4.3文本文件/489
9.4.4二進制文件/492
9.5命名空間/500
9.6規(guī)則幾何圖形面積和體積計算之圓柱體體積的保存/503
9.6.1圓柱體體積計算和保存對話框的設(shè)計與實現(xiàn)/503
9.6.2實現(xiàn)圓柱體體積計算結(jié)果的保存
功能/506
9.6.3實現(xiàn)圓柱體體積計算結(jié)果的查詢
功能/513
9.7習題/515附錄AC 常用關(guān)鍵字/516附錄BC 運算符/517附錄CC/C 常用庫函數(shù)/518
參考文獻/521