本書(shū)詳細(xì)介紹了C 面向?qū)ο蟮暮诵木幊趟枷牒头椒,特別注重程序設(shè)計(jì)的實(shí)用性,使讀者具備運(yùn)用面向?qū)ο蟮姆椒ǚ治龊徒鉀Q實(shí)際問(wèn)題的能力。
本書(shū)以面向?qū)ο蟮某绦蛟O(shè)計(jì)貫穿始終,共9章,主要包括:C 程序設(shè)計(jì)基礎(chǔ)、文件操作、類的基礎(chǔ)、繼承、多態(tài)、虛函數(shù)、對(duì)象組合、異常處理、標(biāo)準(zhǔn)模板庫(kù)STL(主要介紹編程常用的string類、容器類、迭代器及其算法等)以及通過(guò)ODBC對(duì)數(shù)據(jù)庫(kù)進(jìn)行編程等,為后繼課程的學(xué)習(xí)和課程設(shè)計(jì)打下堅(jiān)實(shí)的基礎(chǔ)。書(shū)中列舉了數(shù)百個(gè)可供直接使用的程序示例代碼,并給出了運(yùn)行結(jié)果。
本書(shū)語(yǔ)言流暢、實(shí)例豐富,講解了C 程序設(shè)計(jì)的核心內(nèi)容。全部代碼都在Visual Studio C 2010環(huán)境下調(diào)試通過(guò),并配有大量的習(xí)題,同時(shí)在網(wǎng)站提供了該書(shū)的電子教案和程序示例源碼,特別適合作為高等學(xué)校C 編程和面向?qū)ο蟪绦蛟O(shè)計(jì)課程的教材。
(1) 本書(shū)主要講解面向?qū)ο蟮某绦蛟O(shè)計(jì)理論和編程方法,這些是計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)學(xué)生的編程基礎(chǔ)。(2) 本書(shū)作者近20年來(lái)一直從事程序設(shè)計(jì)方面的教學(xué)和科研工作,主講過(guò)程序設(shè)計(jì)方面的多門課程,如C、C 和Java,積累了豐富的教學(xué)經(jīng)驗(yàn)。從實(shí)踐到理論,再?gòu)睦碚摰綄?shí)踐,循序而漸進(jìn)是作者教學(xué)的心得體會(huì),編寫(xiě)教材也不例外,作者深知學(xué)生的薄弱環(huán)節(jié)和學(xué)習(xí)特點(diǎn),具有針對(duì)性。(3) 該書(shū)內(nèi)容與時(shí)俱進(jìn),講解了C 的許多新內(nèi)容。例如,string類、體現(xiàn)了泛型程序設(shè)計(jì)思想的STL,以及基于STL的基本程序設(shè)計(jì)方法、通過(guò)ODBC對(duì)常規(guī)數(shù)據(jù)庫(kù)的編程方法等。作者認(rèn)為,隨著C 的發(fā)展,教材也應(yīng)當(dāng)與之同步。本書(shū)另辟新章專門講解了這些內(nèi)容,并結(jié)合實(shí)例給出了具體應(yīng)用和綜合舉例。為讀者采用C 進(jìn)行課程設(shè)計(jì)和項(xiàng)目研發(fā)打下堅(jiān)實(shí)的基礎(chǔ)。(4) 作業(yè)安排從易到難,環(huán)環(huán)相扣。許多學(xué)生學(xué)過(guò)C ,卻不會(huì)編程。因此,本書(shū)設(shè)計(jì)了許多與實(shí)際有關(guān)的習(xí)題,并且它們彼此相關(guān)。(5) 課程設(shè)計(jì)。C 課程往往都有課程設(shè)計(jì),為便于教師組織教學(xué)和學(xué)生理解課程設(shè)計(jì)要求,本書(shū)的*后給出了課程設(shè)計(jì)的基本要求和文檔模板,為課程設(shè)計(jì)的順利進(jìn)行提供了便利。(6) 力求通俗易懂。編寫(xiě)本書(shū)的目的是讓讀者通過(guò)自學(xué)或在教師的講授下,能夠運(yùn)用C 語(yǔ)言的核心要素,進(jìn)行面向?qū)ο蟮某绦蛟O(shè)計(jì)。因此,本書(shū)圍繞著如何進(jìn)行C 編程展開(kāi)。為了便于讀者的學(xué)習(xí),作者力求該書(shū)的語(yǔ)言通俗易懂,將復(fù)雜的概念采用淺顯的語(yǔ)言講述,便于讀者理解和掌握。本書(shū)編排特點(diǎn)(1) 每章開(kāi)始均引出本章要講解的內(nèi)容和學(xué)習(xí)要求。(2) 每章安排的習(xí)題都具有很強(qiáng)的操作性,能通過(guò)計(jì)算機(jī)編程驗(yàn)證。(3) 對(duì)書(shū)中重要的內(nèi)容采用黑體標(biāo)記,特別重要的內(nèi)容采用下面加點(diǎn)標(biāo)記。(4) 本書(shū)強(qiáng)調(diào)程序的可讀性。書(shū)中的程序全部采用統(tǒng)一的程序設(shè)計(jì)風(fēng)格。例如,類名、方法名和變量名的定義做到望名知義;語(yǔ)句的末尾或下一句的開(kāi)頭放上左大括號(hào),而右大括號(hào)自成一行,并采用縮排格式組織程序代碼;此外,對(duì)程序中的語(yǔ)句還進(jìn)行了盡可能多的注釋。希望讀者模仿這種程序設(shè)計(jì)風(fēng)格。(5) 本書(shū)包含了大量的程序示例,全部采用Microsoft Visual C 2010(Express) 版本給出了運(yùn)行結(jié)果。凡是程序開(kāi)頭帶有程序名編號(hào)的程序都是完整的程序,可以直接在計(jì)算機(jī)上編譯運(yùn)行。(6) 本書(shū)采用醒目的標(biāo)記來(lái)顯示知識(shí)點(diǎn)。這些注意和思考的標(biāo)記,都穿插在內(nèi)容中,幫助讀者盡快找到重要的信息。
目錄
第1章C 程序設(shè)計(jì)基礎(chǔ)1
1.1為什么要學(xué)習(xí)C 程序設(shè)計(jì)1
1.2過(guò)程化程序設(shè)計(jì)和面向?qū)ο蟪绦蛟O(shè)計(jì)2
1.3簡(jiǎn)單的輸出和輸入方法2
1.3.1cout對(duì)象2
1.3.2cin對(duì)象4
1.4標(biāo)識(shí)符7
1.5布爾類型8
1.6培養(yǎng)良好的編程風(fēng)格8
1.6.1風(fēng)格對(duì)比9
1.6.2注釋方法9
1.7格式化輸出11
1.7.1采用操作符實(shí)現(xiàn)格式化輸出12
1.7.2采用函數(shù)成員實(shí)現(xiàn)格式化輸出17
1.7.3對(duì)函數(shù)成員的初步討論19
1.8格式化輸入19
1.8.1指定輸入域?qū)?9
1.8.2讀取一行20
1.8.3讀取一個(gè)字符21
1.8.4讀取字符時(shí)容易出錯(cuò)的地方22
1.9函數(shù)的默認(rèn)參數(shù)23
1.10引用作函數(shù)參數(shù)25
1.11函數(shù)重載27
1.12內(nèi)存的動(dòng)態(tài)分配和釋放30
思考與練習(xí)33
第2章文件操作36
2.1文件的基本概念36
2.1.1文件命名的原則36
2.1.2使用文件的基本過(guò)程36
2.1.3文件流類型37目錄2.2打開(kāi)文件和關(guān)閉文件37
2.2.1打開(kāi)文件38
2.2.2文件的打開(kāi)模式39
2.2.3定義流對(duì)象時(shí)打開(kāi)文件40
2.2.4測(cè)試文件打開(kāi)是否成功40
2.2.5關(guān)閉文件41
2.3采用流操作符讀寫(xiě)文件41
2.3.1采用<<寫(xiě)文件41
2.3.2格式化輸出在寫(xiě)文件中的應(yīng)用43
2.3.3采用>>從文件讀數(shù)據(jù)45
2.3.4檢測(cè)文件結(jié)束46
2.4流對(duì)象作為參數(shù)47
2.5出錯(cuò)檢測(cè)49
2.6采用函數(shù)成員讀寫(xiě)文件51
2.6.1采用>>讀文件的缺陷51
2.6.2采用函數(shù)getline讀文件52
2.6.3采用函數(shù)get讀文件53
2.6.4采用函數(shù)put寫(xiě)文件54
2.7多文件操作55
2.8二進(jìn)制文件57
2.8.1二進(jìn)制文件的操作57
2.8.2讀寫(xiě)結(jié)構(gòu)體記錄58
2.9隨機(jī)訪問(wèn)文件62
2.9.1順序訪問(wèn)文件的缺陷62
2.9.2定位函數(shù)seekp和seekg62
2.9.3返回位置函數(shù)tellp和tellg65
2.10輸入輸出文件67
思考與練習(xí)71
第3章類的基礎(chǔ)部分73
3.1過(guò)程化程序設(shè)計(jì)與面向?qū)ο蟪绦蛟O(shè)計(jì)的區(qū)別73
3.1.1過(guò)程化程序設(shè)計(jì)的缺陷74
3.1.2面向?qū)ο蟪绦蛟O(shè)計(jì)的基本思想74
3.2類的基本概念75
3.3定義函數(shù)成員78
3.4定義對(duì)象79
3.4.1訪問(wèn)對(duì)象的成員79
3.4.2指向?qū)ο蟮闹羔?9
3.4.3引入私有成員的原因81
3.5類的多文件組織82
3.6私有函數(shù)成員的作用84
3.7內(nèi)聯(lián)函數(shù)85
3.8構(gòu)造函數(shù)和析構(gòu)函數(shù)87
3.8.1構(gòu)造函數(shù)87
3.8.2析構(gòu)函數(shù)89
3.8.3帶參構(gòu)造函數(shù)91
3.8.4構(gòu)造函數(shù)應(yīng)用舉例輸入有效的對(duì)象93
3.8.5重載構(gòu)造函數(shù)95
3.8.6缺省構(gòu)造函數(shù)的表現(xiàn)形式97
3.9對(duì)象數(shù)組98
3.10類的應(yīng)用舉例101
3.11抽象數(shù)組類型106
3.11.1創(chuàng)建抽象數(shù)組類型106
3.11.2擴(kuò)充抽象數(shù)組類型109
思考與練習(xí)114
第4章類的高級(jí)部分115
4.1靜態(tài)成員115
4.1.1靜態(tài)數(shù)據(jù)成員116
4.1.2靜態(tài)函數(shù)成員118
4.2友元函數(shù)121
4.3對(duì)象賦值問(wèn)題125
4.4拷貝構(gòu)造函數(shù)127
4.4.1默認(rèn)的拷貝構(gòu)造函數(shù)129
4.4.2調(diào)用拷貝構(gòu)造函數(shù)的情況129
4.4.3拷貝構(gòu)造函數(shù)中的常參數(shù)131
4.5運(yùn)算符重載131
4.5.1重載賦值運(yùn)算符132
4.5.2this指針134
4.5.3重載運(yùn)算符時(shí)要注意的問(wèn)題137
4.5.4重載雙目算術(shù)運(yùn)算符138
4.5.5重載單目算術(shù)運(yùn)算符140
4.5.6重載關(guān)系運(yùn)算符141
4.5.7重載流操作符<<和>>142
4.5.8重載類型轉(zhuǎn)換運(yùn)算符144
4.5.9重載\[\]操作符149
4.5.10操作符重載綜合舉例自定義string類154
4.6對(duì)象組合163
思考與練習(xí)165
第5章繼承、多態(tài)和虛函數(shù)166
5.1繼承166
5.2保護(hù)成員和類的訪問(wèn)171
5.3構(gòu)造函數(shù)和析構(gòu)函數(shù)174
5.3.1缺省構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用175
5.3.2向基類的構(gòu)造函數(shù)傳參數(shù)176
5.4覆蓋基類的函數(shù)成員179
5.5虛函數(shù)182
5.6純虛函數(shù)和抽象類185
5.6.1純虛函數(shù)185
5.6.2抽象類186
5.6.3指向基類的指針189
5.7多重繼承190
5.8多繼承192
思考與練習(xí)195
第6章異常處理198
6.1異常198
6.1.1拋出異常199
6.1.2處理異常199
6.2基于對(duì)象的異常處理201
6.3捕捉多種類型的異常203
6.4通過(guò)異常對(duì)象獲取異常信息205
6.5再次拋出異常207
思考與練習(xí)208
第7章模板209
7.1函數(shù)模板209
7.1.1從函數(shù)重載到函數(shù)模板209
7.1.2在函數(shù)模板中使用操作符需要注意的地方212
7.1.3在函數(shù)模板中使用多種類型213
7.1.4重載函數(shù)模板213
7.1.5定義函數(shù)模板的方法214
7.2類模板215
7.2.1定義類模板的方法215
7.2.2定義類模板的對(duì)象217
7.2.3類模板與繼承219
思考與練習(xí)222
第8章標(biāo)準(zhǔn)模板庫(kù)STL223
8.1標(biāo)準(zhǔn)模板庫(kù)簡(jiǎn)介223
8.2string類型226
8.2.1如何使用string類型226
8.2.2為string對(duì)象讀取一行226
8.2.3string對(duì)象的比較227
8.2.4string對(duì)象的初始化227
8.2.5string的函數(shù)成員228
8.2.6string對(duì)象應(yīng)用舉例230
8.3迭代器類231
8.4順序容器233
8.4.1矢量類234
8.4.2列表類239
8.4.3雙端隊(duì)列類242
8.5函數(shù)對(duì)象與泛型算法244
8.5.1函數(shù)對(duì)象245
8.5.2泛型算法248
8.6關(guān)聯(lián)容器251
8.6.1集合和多重集合類251
8.6.2映射和多重映射類253
8.7容器適配器255
8.7.1棧容器適配器255
8.7.2隊(duì)列容器適配器256
8.7.3優(yōu)先級(jí)隊(duì)列容器適配器257
思考與練習(xí)258
第9章數(shù)據(jù)庫(kù)程序設(shè)計(jì)259
9.1數(shù)據(jù)庫(kù)簡(jiǎn)介259
9.2SQL語(yǔ)句260
9.2.1定義表260
9.2.2查詢260
9.2.3插入261
9.2.4刪除261
9.2.5修改261
9.3數(shù)據(jù)庫(kù)連接262
9.3.1ODBC簡(jiǎn)介262
9.3.2ODBC驅(qū)動(dòng)程序262
9.3.3創(chuàng)建數(shù)據(jù)源262
9.4數(shù)據(jù)庫(kù)編程中的基本操作264
9.4.1數(shù)據(jù)庫(kù)編程的基本過(guò)程264
9.4.2數(shù)據(jù)庫(kù)查詢265
9.4.3插入記錄266
9.4.4修改記錄267
9.4.5刪除記錄268
9.5數(shù)據(jù)庫(kù)編程綜合舉例269
思考與練習(xí)276
附錄A課程設(shè)計(jì)要求278
A.1課程設(shè)計(jì)簡(jiǎn)介278
A.2程序結(jié)構(gòu)282
A.3程序的主要特點(diǎn)283
A.4操作說(shuō)明283
A.4.1收銀模塊283
A.4.2書(shū)庫(kù)管理模塊284
A.4.3報(bào)表模塊284
A.4.4退出系統(tǒng)285
附錄B課程設(shè)計(jì)報(bào)告格式286
參考文獻(xiàn)288