C++程式開發案例課堂

《C++程式開發案例課堂》是清華大學出版社於2019年出版的圖書,作者是劉春茂、李琪

圖書簡介

《C++程式開發案例課堂》以零基礎講解為宗旨,採取【基礎入門→核心技術→高級套用→項目開發實戰】的講解模式。

《C++程式開發案例課堂》第1篇【基礎入門】主要講解C++基本概念、C++的程式結構、數據類型、靈活使用運算符、程式流程控制等;第2篇【核心技術】主要講解函式的套用、數組與字元串、指針、結構體、共用體和枚舉類型、面向對象編程、構造函式和析構函式等;第3篇【高級套用】主要講解運算符的重載、類的繼承、虛函式和抽象類、C++操作檔案、異常處理、模板與類型轉換、容器和疊代器等;第4篇【項目開發實戰】主要講解開發計算器助手、開發汽車信息管理系統、開發銀行交易系統、開發學校職工信息管理系統。

圖書目錄

第1篇 基 礎 入 門

第1章 揭開C++的神秘面紗——我的第一個C++程式 3

1.1 認識C++ 4

1.2 C++的優勢 5

1.3 常見的C++開發環境 6

1.4 新手的福音——Visual Studio 2017集成環境 8

1.4.1 安裝Visual Studio 2017的條件 8

1.4.2 安裝Visual Studio 2017 8

1.5 熟悉Visual Studio 2017開發界面 10

1.5.1 創建項目 10

1.5.2 選單欄 12

1.5.3 工具列 13

1.5.4 解決方案資源管理器 13

1.5.5 【屬性】面板 14

1.5.6 【錯誤列表】面板 14

1.5.7 【輸出】面板 14

1.6 實戰演練——第一個C++項目 15

1.7 理解C++語言的翻譯過程 16

1.8 大神解惑 17

1.9 跟我學上機 18

第2章 零基礎開始學習——C++的程式結構 19

2.1 分析C++程式的結構 20

2.1.1 #include指令及頭檔案 20

2.1.2 main函式 21

2.1.3 變數聲明和定義 22

2.1.4 函式的聲明 24

2.1.5 關於注釋 25

2.2 編譯前的預處理 26

2.3 輸入和輸出數據 29

2.3.1 cout輸出數據 29

2.3.2 cin讀取輸入數據 32

2.4 命名空間 33

2.4.1 命名空間的定義 33

2.4.2 using關鍵字 34

2.4.3 命名空間std 35

2.5 實戰演練——經典的入門程式 36

2.6 大神解惑 38

2.7 跟我學上機 38

第3章 程式中的數據種類——數據類型 39

3.1 標識符 40

3.1.1 保留字 40

3.1.2 標識符命名 41

3.2 變數與常量 41

3.2.1 變數 41

3.2.2 常量 44

3.3 基本變數類型 46

3.3.1 整數類型 46

3.3.2 字元類型 48

3.3.3 浮點數類型 50

3.3.4 布爾類型 51

3.4 查詢變數的類型和記憶體空間大小 52

3.5 自定義數據類型 53

3.6 實戰演練——對比不同數據類型的長度 57

3.7 大神解惑 57

3.8 跟我學上機 58

第4章 誰來運算元據——靈活使用運算符 59

4.1 運算符概述 60

4.1.1 賦值運算符 60

4.1.2 算術運算符 61

4.1.3 關係運算符 62

4.1.4 邏輯運算符 64

4.1.5 自增和自減運算符 65

4.1.6 位邏輯運算符 66

4.1.7 移位運算符 68

4.1.8 三元運算符 69

4.1.9 逗號運算符 70

4.1.10 類型轉換運算符 71

4.2 運算符優先權和結合性 72

4.2.1 運算符優先權 72

4.2.2 運算符結合性 73

4.3 實戰演練——綜合運用運算符 75

4.4 大神解惑 76

4.5 跟我學上機 77

第5章 程式的執行方向——程式流程控制 79

5.1 順序語句 80

5.2 條件判斷語句 81

5.2.1 if條件 81

5.2.2 if-else條件 82

5.2.3 條件運算符 83

5.3 循環語句 84

5.3.1 for循環 85

5.3.2 while循環 86

5.3.3 do-while循環 87

5.4 多重選擇——switch語句 88

5.5 跳出循環 90

5.5.1 continue語句 90

5.5.2 break語句 90

5.5.3 goto語句 91

5.6 實戰演練——流程控制綜合套用 92

5.7 大神解惑 95

5.8 跟我學上機 96

第II篇 核 心 技 術

第6章 C++的靈魂——函式的套用 99

6.1 函式的基本結構 100

6.1.1 函式的聲明、定義和調用 100

6.1.2 參數的傳遞方式 101

6.1.3 函式的默認參數 103

6.1.4 函式的返回值 104

6.2 變數的作用域 105

6.2.1 局部變數 105

6.2.2 靜態局部變數 106

6.2.3 外部變數 107

6.2.4 暫存器變數 108

6.3 特殊函式調用方式——遞歸調用 108

6.4 內聯函式 109

6.5 預處理器 110

6.5.1 #define預處理器 110

6.5.2 #define的作用 111

6.5.3 const修飾符 112

6.6 函式的重載 113

6.7 實戰演練——漢諾塔問題函式 114

6.8 大神解惑 116

6.9 跟我學上機 116

第7章 特殊的元素集合——數組與字元串 117

7.1 一維數組 118

7.1.1 一維數組的聲明 118

7.1.2 數組初始化 119

7.1.3 數組的操作 120

7.2 二維數組和多維數組 121

7.2.1 二維數組的聲明 121

7.2.2 二維數組的使用和存取 122

7.2.3 多維數組 123

7.3 數組與函式 125

7.3.1 一維數組作為函式的參數 125

7.3.2 傳送多維數組到函式 126

7.4 字元串類 127

7.4.1 字元串的聲明 127

7.4.2 字元串的輸入和輸出 128

7.4.3 字元串處理 129

7.5 實戰演練1——判斷字元串回文 132

7.6 實戰演練2——輸出斐波那契數列 134

7.7 大神解惑 135

7.8 跟我學上機 136

第8章 靈活調用記憶體地址——指針 137

8.1 指針概述 138

8.1.1 什麼是指針 138

8.1.2 為什麼要用指針 138

8.1.3 指針的地址 139

8.2 指針變數 139

8.2.1 指針變數的聲明 139

8.2.2 指針變數的使用 140

8.3 指針與函式 141

8.3.1 指針傳送到函式中 141

8.3.2 返回值為指針的函式 142

8.3.3 函式指針 143

8.4 指針與數組 144

8.4.1 指針的算術運算 145

8.4.2 利用指針存儲一維數組的元素 146

8.4.3 利用指針傳遞一維數組到函式中 147

8.5 指針與字元串 147

8.6 const指針 148

8.7 void指針 149

8.8 指向指針的指針 149

8.9 動態記憶體配置 150

8.9.1 使用基本數據類型做動態配置 151

8.9.2 使用數組做動態配置 152

8.10 實戰演練——判斷字元串中有多少個整數 153

8.11 大神解惑 155

8.12 跟我學上機 156

第9章 靈活定義數據類型——結構體、共用體和枚舉類型 157

9.1 結構體 158

9.1.1 結構體的聲明 158

9.1.2 結構體變數的初始化與使用 159

9.1.3 結構體數組初始化 161

9.2 將結構體變數作為函式參數 162

9.2.1 將整個結構體傳送到函式 162

9.2.2 傳送結構體的地址到函式 163

9.3 共用體 164

9.3.1 共用體的定義和聲明 164

9.3.2 共用體類型的初始化和使用 165

9.3.3 struct和union的差異 166

9.4 枚舉類型 167

9.4.1 枚舉類型的定義和聲明 167

9.4.2 枚舉類型的初始化和使用 168

9.5 實戰演練——學生信息登記表 169

9.6 大神解惑 172

9.7 跟我學上機 172

第10章 主流的編程思想——認識面向對象編程 173

10.1 面向對象編程概述 174

10.1.1 面向對象編程的幾個概念 174

10.1.2 面向對象編程與面向過程編程的區別 175

10.2 認識類 175

10.2.1 類的基本概念 175

10.2.2 類的定義 175

10.2.3 類對象的生成 177

10.2.4 類對象指針 178

10.3 成員函式 180

10.4 嵌套類 182

10.5 const成員函式 182

10.6 類成員的訪問控制 184

10.6.1 私有成員 184

10.6.2 公有成員 185

10.6.3 保護成員 186

10.7 靜態成員 187

10.7.1 靜態數據成員 187

10.7.2 靜態成員函式 189

10.8 友元函式 190

10.9 實戰演練——棧類的實現 191

10.10 大神解惑 193

10.11 跟我學上機 194

第11章 類的特殊函式——構造函式和析構函式 195

11.1 構造函式初始化類對象 196

11.1.1 什麼是構造函式 196

11.1.2 使用構造函式 196

11.2 析構函式清除類對象 198

11.2.1 析構函式的概念 198

11.2.2 析構函式的調用 198

11.3 默認構造函式 200

11.4 重載構造函式 201

11.4.1 重載構造函式的作用 201

11.4.2 重載構造函式的調用 201

11.5 類對象數組的初始化 202

11.5.1 類對象數組調用 203

11.5.2 類對象數組和默認構造函式 204

11.5.3 類對象數組和析構函式 206

11.6 拷貝構造函式 207

11.6.1 拷貝構造函式的概念 207

11.6.2 深拷貝和淺拷貝 208

11.7 實戰演練——構造函式和析構函式的套用 210

11.8 大神解惑 212

11.9 跟我學上機 212

第III篇 高 級 應 用

第12章 賦予新功能——運算符的重載 215

12.1 什麼是運算符重載 216

12.1.1 運算符重載的形式 216

12.1.2 可重載的運算符 218

12.2 重載前置運算符和後置運算符 219

12.2.1 重載前置運算符 219

12.2.2 重載後置運算符 221

12.3 插入運算符和析取運算符的重載 222

12.3.1 插入運算符重載 222

12.3.2 析取運算符重載 223

12.4 常用運算符的重載 225

12.4.1 “<”運算符的重載 225

12.4.2 “+”運算符的重載 226

12.4.3 “=”賦值運算符重載 227

12.5 實戰演練——重載運算符綜合 套用 230

12.6 大神解惑 231

12.7 跟我學上機 232

第13章 實現代碼重用——類的繼承 233

13.1 繼承的基本概念 234

13.1.1 基類和繼承類 234

13.1.2 簡單的基礎實例 235

13.2 調用父類中的構造函式 240

13.3 子類存取父類成員 243

13.3.1 私有成員的存取 243

13.3.2 繼承與靜態成員 244

13.4 多繼承 246

13.5 實戰演練——繼承的綜合套用 248

13.6 大神解惑 250

13.7 跟我學上機 250

第14章 實現多態性——虛函式和抽象類 251

14.1 什麼是虛函式 252

14.1.1 虛函式的作用 252

14.1.2 動態綁定和靜態綁定 253

14.2 抽象類與純虛函式 255

14.2.1 定義純虛函式 255

14.2.2 抽象類的作用 256

14.2.3 虛析構函式 257

14.3 抽象類的多重繼承 259

14.4 虛函式表 260

14.4.1 什麼是虛函式表 260

14.4.2 繼承關係的虛函式表 262

14.5 實戰演練——抽象類的綜合套用 263

14.6 大神解惑 266

14.7 跟我學上機 266

第15章 數據存儲——C++操作檔案 267

15.1 檔案的基本概念 268

15.1.1 檔案I/O 268

15.1.2 檔案順序讀寫 271

15.1.3 隨機檔案讀寫 271

15.2 檔案的打開與關閉 273

15.2.1 檔案的打開 273

15.2.2 檔案的關閉 275

15.3 文本檔案的處理 275

15.3.1 將變數寫入檔案 275

15.3.2 將變數寫入檔案尾部 276

15.3.3 從文本檔案中讀入變數 277

15.3.4 使用get()、getline()和 put()函式 278

15.4 處理二進制檔案 280

15.5 實戰演練——檔案操作 282

15.6 大神解惑 284

15.7 跟我學上機 285

第16章 解決問題的法寶——異常處理 287

16.1 異常的基本概念 288

16.2 異常處理機制 288

16.3 拋出異常 289

16.4 重新拋出異常 291

16.5 捕獲所有異常 292

16.6 未捕捉到的異常 293

16.7 標準異常 294

16.8 異常規範 294

16.9 異常與繼承 295

16.10 自定義異常類 296

16.11 捕獲多個異常 298

16.12 實戰演練——異常處理套用 299

16.13 大神解惑 301

16.14 跟我學上機 302

第17章 C++的高級技能——模板與類型轉換 303

17.1 模板 304

17.1.1 函式模板 304

17.1.2 類模板 305

17.1.3 模板參數 307

17.1.4 模板的特殊化 308

17.1.5 重載和函式模板 309

17.2 類型識別和強制轉換運算符 311

17.2.1 運行時類型識別 311

17.2.2 強制類型轉換運算符 314

17.3 實戰演練——模板的綜合套用 316

17.4 大神解惑 318

17.5 跟我學上機 318

第18章 控制元素的存儲和訪問——容器和疊代器 321

18.1 STL 322

18.2 疊代器 322

18.3 順序容器 323

18.3.1 向量 323

18.3.2 雙端佇列 325

18.3.3 列表 326

18.4 關聯容器 327

18.4.1 集合和多集 327

18.4.2 映射和多重映射 329

18.5 容器適配器 330

18.5.1 棧 330

18.5.2 佇列 331

18.5.3 優先權佇列 332

18.6 實戰演練——容器的綜合操作 333

18.7 大神解惑 338

18.8 跟我學上機 338

第IV篇 項目開發實戰

第19章 項目實訓1——開發計算器助手 341

19.1 需求分析 342

19.2 功能分析 342

19.3 開發前的準備工作 343

19.4 系統代碼編寫 343

19.4.1 CalculatorAssistant.h和 CalculatorAssistant.cpp檔案 344

19.4.2 Complex.h和Complex.cpp 檔案 347

19.4.3 Fraction.h和Fraction.cpp 檔案 351

19.4.4 main.cpp檔案 356

19.5 系統運行 356

19.6 項目總結 358

第20章 項目實訓2——開發汽車信息管理系統 359

20.1 需求分析 360

20.2 功能分析 360

20.3 開發前的準備工作 362

20.4 系統代碼編寫 362

20.4.1 Date.h檔案 362

20.4.2 DateException.h檔案 363

20.4.3 Vehicle.h和Vehicle.cpp 檔案 364

20.4.4 VehicleManage.h和 VehicleManage.cpp檔案 366

20.4.5 Main.cpp檔案 373

20.5 系統運行 376

20.6 項目總結 378

第21章 項目實訓3——開發銀行交易系統 379

21.1 需求分析 380

21.2 功能分析 380

21.3 開發前的準備工作 381

21.4 系統代碼編寫 382

21.4.1 交易流程處理、餘額查詢、存款和取款等功能 382

21.4.2 相關設備模擬 388

21.4.3 交易設備、資料庫和賬戶等 具體實現 390

21.4.4 設備處理、交易處理、操作 處理和驗證處理等功能 394

21.4.5 主程式運行入口 398

21.5 系統運行 398

21.6 項目總結 399

第22章 項目實訓4——開發學校職工信息管理系統 401

22.1 需求分析 402

22.2 功能分析 402

22.3 開發前的準備工作 404

22.4 系統代碼編寫 404

22.4.1 職工信息的數據結構的基類屬性和成員方法 404

22.4.2 各人員類的聲明、定義 和實現 407

22.4.3 系統職工信息增刪改查功能的 聲明、定義 413

22.4.4 系統增刪改查以及選單功能的 實現 416

22.4.5 主程式運行入口 432

22.5 系統運行 432

22.6 項目總結 434

相關詞條

熱門詞條

聯絡我們