本書詳細(xì)介紹了C 面向?qū)ο蟮暮诵木幊趟枷牒头椒,特別注重程序設(shè)計(jì)的實(shí)用性,使讀者具備運(yùn)用面向?qū)ο蟮姆椒ǚ治龊徒鉀Q實(shí)際問題的能力。
本書以面向?qū)ο蟮某绦蛟O(shè)計(jì)貫穿始終,共9章,主要包括:C 程序設(shè)計(jì)基礎(chǔ)、文件操作、類的基礎(chǔ)、繼承、多態(tài)、虛函數(shù)、對(duì)象組合、異常處理、標(biāo)準(zhǔn)模板庫STL(主要介紹編程常用的string類、容器類、迭代器及其算法等)以及通過ODBC對(duì)數(shù)據(jù)庫進(jìn)行編程等,為后繼課程的學(xué)習(xí)和課程設(shè)計(jì)打下堅(jiān)實(shí)的基礎(chǔ)。書中列舉了數(shù)百個(gè)可供直接使用的程序示例代碼,并給出了運(yùn)行結(jié)果。
本書語言流暢、實(shí)例豐富,講解了C 程序設(shè)計(jì)的核心內(nèi)容。全部代碼都在Visual Studio C 2010環(huán)境下調(diào)試通過,并配有大量的習(xí)題,同時(shí)在網(wǎng)站提供了該書的電子教案和程序示例源碼,特別適合作為高等學(xué)校C 編程和面向?qū)ο蟪绦蛟O(shè)計(jì)課程的教材。
(1) 本書主要講解面向?qū)ο蟮某绦蛟O(shè)計(jì)理論和編程方法,這些是計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)學(xué)生的編程基礎(chǔ)。(2) 本書作者近20年來一直從事程序設(shè)計(jì)方面的教學(xué)和科研工作,主講過程序設(shè)計(jì)方面的多門課程,如C、C 和Java,積累了豐富的教學(xué)經(jīng)驗(yàn)。從實(shí)踐到理論,再從理論到實(shí)踐,循序而漸進(jìn)是作者教學(xué)的心得體會(huì),編寫教材也不例外,作者深知學(xué)生的薄弱環(huán)節(jié)和學(xué)習(xí)特點(diǎn),具有針對(duì)性。(3) 該書內(nèi)容與時(shí)俱進(jìn),講解了C 的許多新內(nèi)容。例如,string類、體現(xiàn)了泛型程序設(shè)計(jì)思想的STL,以及基于STL的基本程序設(shè)計(jì)方法、通過ODBC對(duì)常規(guī)數(shù)據(jù)庫的編程方法等。作者認(rèn)為,隨著C 的發(fā)展,教材也應(yīng)當(dāng)與之同步。本書另辟新章專門講解了這些內(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é)過C ,卻不會(huì)編程。因此,本書設(shè)計(jì)了許多與實(shí)際有關(guān)的習(xí)題,并且它們彼此相關(guān)。(5) 課程設(shè)計(jì)。C 課程往往都有課程設(shè)計(jì),為便于教師組織教學(xué)和學(xué)生理解課程設(shè)計(jì)要求,本書的*后給出了課程設(shè)計(jì)的基本要求和文檔模板,為課程設(shè)計(jì)的順利進(jìn)行提供了便利。(6) 力求通俗易懂。編寫本書的目的是讓讀者通過自學(xué)或在教師的講授下,能夠運(yùn)用C 語言的核心要素,進(jìn)行面向?qū)ο蟮某绦蛟O(shè)計(jì)。因此,本書圍繞著如何進(jìn)行C 編程展開。為了便于讀者的學(xué)習(xí),作者力求該書的語言通俗易懂,將復(fù)雜的概念采用淺顯的語言講述,便于讀者理解和掌握。本書編排特點(diǎn)(1) 每章開始均引出本章要講解的內(nèi)容和學(xué)習(xí)要求。(2) 每章安排的習(xí)題都具有很強(qiáng)的操作性,能通過計(jì)算機(jī)編程驗(yàn)證。(3) 對(duì)書中重要的內(nèi)容采用黑體標(biāo)記,特別重要的內(nèi)容采用下面加點(diǎn)標(biāo)記。(4) 本書強(qiáng)調(diào)程序的可讀性。書中的程序全部采用統(tǒng)一的程序設(shè)計(jì)風(fēng)格。例如,類名、方法名和變量名的定義做到望名知義;語句的末尾或下一句的開頭放上左大括號(hào),而右大括號(hào)自成一行,并采用縮排格式組織程序代碼;此外,對(duì)程序中的語句還進(jìn)行了盡可能多的注釋。希望讀者模仿這種程序設(shè)計(jì)風(fēng)格。(5) 本書包含了大量的程序示例,全部采用Microsoft Visual C 2010(Express) 版本給出了運(yùn)行結(jié)果。凡是程序開頭帶有程序名編號(hào)的程序都是完整的程序,可以直接在計(jì)算機(jī)上編譯運(yùn)行。(6) 本書采用醒目的標(biāo)記來顯示知識(shí)點(diǎn)。這些注意和思考的標(biāo)記,都穿插在內(nèi)容中,幫助讀者盡快找到重要的信息。
目錄
第1章C 程序設(shè)計(jì)基礎(chǔ)1
1.1為什么要學(xué)習(xí)C 程序設(shè)計(jì)1
1.2過程化程序設(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使用文件的基本過程36
2.1.3文件流類型37目錄2.2打開文件和關(guān)閉文件37
2.2.1打開文件38
2.2.2文件的打開模式39
2.2.3定義流對(duì)象時(shí)打開文件40
2.2.4測(cè)試文件打開是否成功40
2.2.5關(guān)閉文件41
2.3采用流操作符讀寫文件41
2.3.1采用<<寫文件41
2.3.2格式化輸出在寫文件中的應(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ù)成員讀寫文件51
2.6.1采用>>讀文件的缺陷51
2.6.2采用函數(shù)getline讀文件52
2.6.3采用函數(shù)get讀文件53
2.6.4采用函數(shù)put寫文件54
2.7多文件操作55
2.8二進(jìn)制文件57
2.8.1二進(jìn)制文件的操作57
2.8.2讀寫結(jié)構(gòu)體記錄58
2.9隨機(jī)訪問文件62
2.9.1順序訪問文件的缺陷62
2.9.2定位函數(shù)seekp和seekg62
2.9.3返回位置函數(shù)tellp和tellg65
2.10輸入輸出文件67
思考與練習(xí)71
第3章類的基礎(chǔ)部分73
3.1過程化程序設(shè)計(jì)與面向?qū)ο蟪绦蛟O(shè)計(jì)的區(qū)別73
3.1.1過程化程序設(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訪問對(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ì)象賦值問題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í)要注意的問題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ù)成員和類的訪問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通過異常對(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)模板庫STL223
8.1標(biāo)準(zhǔn)模板庫簡(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ù)庫程序設(shè)計(jì)259
9.1數(shù)據(jù)庫簡(jiǎn)介259
9.2SQL語句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ù)庫連接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ù)庫編程中的基本操作264
9.4.1數(shù)據(jù)庫編程的基本過程264
9.4.2數(shù)據(jù)庫查詢265
9.4.3插入記錄266
9.4.4修改記錄267
9.4.5刪除記錄268
9.5數(shù)據(jù)庫編程綜合舉例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操作說明283
A.4.1收銀模塊283
A.4.2書庫管理模塊284
A.4.3報(bào)表模塊284
A.4.4退出系統(tǒng)285
附錄B課程設(shè)計(jì)報(bào)告格式286
參考文獻(xiàn)288