本書從零基礎讀者的角度出發,通過通俗易懂的語言、豐富多彩的實例,循序漸進地讓讀者在實踐中學習C#編程知識,并提升自己的實際開發能力。
全書共分為5篇21章,內容包括搭建C#開發環境、第一個C#程序、數據類型、運算符、條件語句、循環語句、數組、字符串、面向對象編程基礎、繼承與多態、集合與索引器、委托與事件、泛型、程序調試與異常處理、Windows窗體編程、Windows控件的使用、使用C#操作數據庫、Entity Framework編程、文件及文件夾操作、貪吃蛇大作戰、人事工資管理系統等。書中知識點講解細致,側重介紹每個知識點的使用場景,涉及的代碼給出了詳細的注釋,可以使讀者輕松領會C#程序開發的精髓,快速提高開發技能。同時,本書配套了大量教學視頻,掃碼即可觀看,還提供所有程序源文件,方便讀者實踐。
本書適合C#初學者、軟件開發入門者自學使用,也可用作高等院校相關專業的教材及參考書。
第1篇 C#基礎知識篇
第1章 搭建C#開發環境 2 視頻講解:3節,49分鐘
1.1 C#語言入門 3
1.1.1 C#語言的發展 3
1.1.2 C#語言的特點 3
1.1.3 認識.NET Framework 3
1.1.4 C#與.NET Framework 4
1.1.5 C#的應用領域 4
1.2 Visual Studio 2019的安裝與卸載 4
1.2.1 安裝Visual Studio 2019必備條件 4
1.2.2 下載Visual Studio 2019 5
1.2.3 安裝Visual Studio 2019 5
1.2.4 卸載Visual Studio 2019 8
1.3 熟悉Visual Studio 2019開發環境 9
1.3.1 創建項目 9
1.3.2 菜單欄 11
1.3.3 工具欄 11
1.3.4 解決方案資源管理器 11
1.3.5 “工具箱”窗口 12
1.3.6 “屬性”窗口 12
1.3.7 “錯誤列表”窗口 13
本章知識思維導圖 13
第2章 第一個C#程序 14 視頻講解:9節,77分鐘
2.1 編寫第一個C#程序 15
[實例2.1] 輸出“人因夢想而偉大” 17
2.2 C#程序結構預覽 18
2.2.1 命名空間 18
2.2.2 類 20
2.2.3 關鍵字與標識符 21
2.2.4 Main方法 22
2.2.5 C#語句 23
2.2.6 注釋 24
2.2.7 一個完整的C#程序 26
[實例2.2] 輸出軟件啟動頁 26
2.3 程序編寫規范 27
2.3.1 代碼編寫規則 27
2.3.2 命名規范 28
本章知識思維導圖 30
第3章 數據類型 31 視頻講解:4節,136分鐘
3.1 數據類型及變量 32
3.1.1 為什么要使用變量 32
3.1.2 變量是什么 32
3.1.3 聲明變量 32
3.1.4 簡單數據類型 33
[實例3.1] 根據身高體重計算BMI指數 36
[實例3.2] 字符類Char的常用方法應用 38
[實例3.3] 輸出Windows系統目錄 40
3.1.5 變量的初始化 41
3.1.6 變量的作用域 42
[實例3.4] 使用變量記錄用戶登錄名 43
3.2 引用類型 43
3.2.1 引用類型分類 43
3.2.2 引用類型舉例 45
[實例3.5] 引用類型的使用 45
3.2.3 值類型與引用類型的區別 46
[實例3.6] 值類型與引用類型的區別舉例 46
3.3 常量 47
3.3.1 常量是什么 48
3.3.2 常量的分類 48
3.4 數據類型轉換 49
3.4.1 隱式類型轉換 49
3.4.2 顯式類型轉換 50
3.4.3 使用Convert類進行轉換 50
本章知識思維導圖 52
第4章 運算符 53 視頻講解:9節,99分鐘
4.1 算術運算符 54
[實例4.1] 計算學生成績的分差及平均分 54
4.2 自增自減運算符 55
4.3 賦值運算符 56
4.4 關系運算符 58
[實例4.2] 使用關系運算符比較大小關系 58
4.5 邏輯運算符 59
[實例4.3] 參加面包店的打折活動 60
4.6 位運算符 60
4.7 移位運算符 62
4.8 條件運算符 62
[實例4.4] 判斷人的年齡所處階段 63
4.9 運算符優先級與結合性 64
本章知識思維導圖 66
第5章 條件語句 67 視頻講解:2節,61分鐘
5.1 if條件語句 68
5.1.1 決策分支 68
5.1.2 if語句 68
[實例5.1] 判斷輸入是不是奇數 69
[實例5.2] 根據分數劃分是否優秀 71
[實例5.3] 根據分數劃分優秀等級 73
[實例5.4] 判斷輸入的年份是不是閏年 75
5.2 switch多分支語句 76
5.2.1 switch語句 76
[實例5.5] 查詢高考錄取分數線 77
5.2.2 switch與if…else if…else的區別 78
本章知識思維導圖 79
第6章 循環語句 80 視頻講解:5節,63分鐘
6.1 while循環 81
[實例6.1] 數學家高斯的故事 81
6.2 do…while循環 82
6.2.1 do…while循環的使用 82
[實例6.2] 使用do…while循環挑戰數據家高斯 83
6.2.2 while和do…while語句的區別 83
6.3 for循環 83
6.3.1 for循環的一般形式 83
[實例6.3] 使用for循環挑戰數據家高斯 84
6.3.2 for循環的變體 85
6.3.3 for循環中逗號的應用 86
6.4 循環的嵌套 86
[實例6.4] 打印九九乘法表 88
6.5 跳轉語句 88
6.5.1 break語句 88
[實例6.5] 使用break跳出循環 89
6.5.2 continue語句 89
[實例6.6] 使用continue語句實現1到100之間的偶數和 89
6.5.3 goto語句 90
[實例6.7] 使用goto語句實現1到100的累加 90
6.5.4 continue和break語句的區別 91
本章知識思維導圖 92
第7章 數組 93 視頻講解:5節,75分鐘
7.1 一維數組 94
7.1.1 數組概述 94
7.1.2 一維數組的創建 94
7.1.3 一維數組的初始化 96
7.1.4 一維數組的使用 96
[實例7.1] 輸出一年中每個月的天數 96
7.2 二維數組 97
7.2.1 二維數組的創建 97
7.2.2 二維數組的初始化 99
7.2.3 二維數組的使用 100
[實例7.2] 模擬客車售票系統 100
7.2.4 不規則數組的定義 101
7.2.5 獲取二維數組的列數 101
7.3 數組與Array類 102
[實例7.3] 打印楊輝三角 102
7.4 數組的基本操作 103
7.4.1 數組的輸入與輸出 103
[實例7.4] 一維數組的輸入與輸出 103
[實例7.5] 二維數組的輸入與輸出舉例 104
7.4.2 使用foreach語句遍歷數組 105
[實例7.6] 輸出狼人殺游戲主要角色 105
7.4.3 對數組進行排序 106
7.5 數組排序算法 107
7.5.1 冒泡排序算法 107
[實例7.7] 冒泡排序算法排序 108
7.5.2 選擇排序算法 109
[實例7.8] 選擇排序算法排序 110
本章知識思維導圖 112
第8章 字符串 113 視頻講解:20節,156分鐘
8.1 字符串的聲明與初始化 114
8.1.1 聲明字符串 114
8.1.2 字符串的初始化 114
8.2 提取字符串信息 115
8.2.1 獲取字符串長度 116
8.2.2 獲取指定位置的字符 116
8.2.3 獲取子字符串索引位置 116
[實例8.1] 查找“r”在“We are the world”中出現的位置 117
8.2.4 判斷字符串首尾內容 118
8.3 字符串操作 119
8.3.1 字符串的拼接 120
8.3.2 比較字符串 120
[實例8.2] 驗證用戶名和密碼是否正確 121
8.3.3 字符串的大小寫轉換 122
8.3.4 格式化字符串 122
[實例8.3] 格式化不同的數值類型數據 124
[實例8.4] 輸出不同形式的日期時間 125
8.3.5 截取字符串 126
[實例8.5] 從完整文件名中獲取文件名和擴展名 126
8.3.6 分割字符串 126
[實例8.6] 學習編程的最終目標 127
8.3.7 插入及填充字符串 127
[實例8.7] 對字符串進行填充 128
8.3.8 刪除字符串 128
8.3.9 去除空白內容 129
8.3.10 復制字符串 129
8.3.11 替換字符串 131
[實例8.8] 字符串的替換 131
8.4 可變字符串類 132
8.4.1 StringBuilder類的定義 132
8.4.2 StringBuilder類的使用 133
[實例8.9] StringBuilder類中幾種方法的應用 133
8.4.3 StringBuilder類與string類的區別 134
[實例8.10] 對比string和StringBuilder的執行效率 135
本章知識思維導圖 137
第2篇 面向對象編程篇
第9章 面向對象編程基礎 140 視頻講解:5節,133分鐘
9.1 認識面向對象 141
9.1.1 對象 141
9.1.2 類 142
9.1.3 面向對象技術的基本思想 143
9.1.4 面向對象程序設計的特點 143
9.1.5 了解面向過程編程 144
9.2 類 145
9.2.1 類的聲明 145
9.2.2 類的成員 145
[實例9.1] 使用屬性控制用戶年齡輸入 147
[實例9.2] 設計表示星期的枚舉 149
9.2.3 權限修飾符 150
9.2.4 構造函數 151
[實例9.3] 對比靜態構造函數和實例構造函數的執行 153
9.2.5 析構函數 154
9.3 方法 154
9.3.1 方法的聲明 155
9.3.2 方法的參數 155
[實例9.4] 計算兩個數的和 156
[實例9.5] 值參數對引用類型的影響 157
[實例9.6] ref參數的應用 157
[實例9.7] 使用out參數記錄運算結果 158
[實例9.8] 使用params參數計算不定數的和 159
9.3.3 方法的重載 160
[實例9.9] 使用重載方法計算不同類型數的和 160
9.4 類的靜態成員 161
9.5 對象的創建及使用 161
9.5.1 對象的創建 161
9.5.2 訪問對象的屬性和行為 162
[實例9.10] 使用屬性控制用戶年齡輸入 163
9.5.3 對象的銷毀 163
9.5.4 this關鍵字 164
9.5.5 類與對象的關系 165
本章知識思維導圖 165
第10章 繼承與多態 166 視頻講解:3節,42分鐘
10.1 繼承 167
10.1.1 使用繼承 167
[實例10.1] 模擬實現進銷存管理系統的進貨信息并輸出 168
10.1.2 base關鍵字 169
[實例10.2] 使用base關鍵字調用父類方法 170
10.1.3 繼承中的構造函數與析構函數 171
[實例10.3] 演示繼承中構造函數與析構函數的執行順序 171
10.2 多態 172
10.2.1 虛方法的重寫 172
[實例10.4] 通過重寫虛方法實現多態 173
10.2.2 抽象類與抽象方法 174
[實例10.5] 模擬“去商場買衣服”場景 175
10.2.3 密封類與密封方法 176
[實例10.6] 密封類的使用 176
10.3 接口 177
10.3.1 接口的概念及聲明 177
10.3.2 接口的實現與繼承 178
[實例10.7] 通過繼承接口實現輸出進貨信息和銷售信息 178
10.3.3 顯式接口成員實現 180
[實例10.8] 顯式接口成員的實現舉例 180
10.3.4 抽象類與接口 182
本章知識思維導圖 183
第11章 集合與索引器 184 視頻講解:3節,14分鐘
11.1 集合 185
11.1.1 自定義集合 185
[實例11.1] 自定義集合存儲商品信息 186
11.1.2 使用集合類 187
[實例11.2] 使用ArrayList集合存儲商品信息 188
11.2 索引器 188
[實例11.3] 使用索引器操作字符串數組 189
本章知識思維導圖 190
第12章 委托與事件 191 視頻講解:3節,27分鐘
12.1 委托與多路廣播委托 192
12.1.1 委托 192
12.1.2 多路廣播委托 194
[實例12.1] 多路廣播委托操作 195
12.2 匿名方法 196
[實例12.2] 匿名方法和命名方法的對比 196
12.3 事件 197
12.3.1 委托的發布和訂閱 197
[實例12.3] 通過委托來實現學生們對鈴聲所做出的響應 198
12.3.2 事件的發布和訂閱 199
12.3.3 EventHandler類 200
12.3.4 Windows事件概述 201
本章知識思維導圖 202
第13章 泛型 203 視頻講解:1節,14分鐘
13.1 為什么要使用泛型 204
13.2 泛型類型參數 204
[實例13.1] 使用泛型解決參數類型不確定的問題 205
13.3 泛型方法 205
13.4 泛型類 206
13.5 泛型接口 206
13.6 泛型約束 206
13.7 兩種特殊的泛型委托 207
本章知識思維導圖 209
第14章 程序調試與異常處理 210 視頻講解:3節,20分鐘
14.1 程序調試 211
14.1.1 Visual Studio編輯器調試 211
14.1.2 Visual Studio調試器調試 212
14.2 異常處理 215
14.2.1 try…catch語句 216
[實例14.1] 未將對象引用設置到對象的實例 217
14.2.2 try…catch…finally語句 218
[實例14.2] 捕捉將字符串轉換為整型數據時的異常 218
14.2.3 throw語句 219
[實例14.3] 拋出除數為0的異常 219
14.2.4 異常的使用原則 220
本章知識思維導圖 221
第3篇 Windows窗體編程篇
第15章 Windows窗體編程 224 視頻講解:3節,35分鐘
15.1 開發Windows窗體程序的步驟 225
15.2 Form窗體 228
15.2.1 添加和刪除窗體 228
15.2.2 多窗體的使用 230
15.2.3 窗體的屬性 230
15.2.4 窗體的顯示與隱藏 233
15.2.5 窗體的事件 234
15.3 MDI窗體 236
15.3.1 MDI窗體的概念 236
15.3.2 如何設置MDI窗體 236
15.3.3 排列MDI子窗體 237
[實例15.1] 排列MDI父窗體中的多個子窗體 237
本章知識思維導圖 239
第16章 Windows控件的使用 240 視頻講解:25節,143分鐘
16.1 控件基礎 241
16.1.1 控件概述 241
16.1.2 控件的相關操作 241
16.2 文本類控件 242
16.2.1 Label:標簽 242
16.2.2 TextBox:文本框 243
16.2.3 RichTextBox:有格式文本框 244
[實例16.1] 在RichTextBox中設置超鏈接 245
16.3 按鈕類控件 246
16.3.1 Button:按鈕 246
[實例16.2] 制作登錄窗體中的登錄和退出按鈕 246
16.3.2 RadioButton:單選按鈕 247
[實例16.3] 選擇用戶登錄身份 247
16.3.3 CheckBox:復選框 248
[實例16.4] 設置用戶操作權限 249
16.4 列表類控件 249
16.4.1 ComboBox:下拉組合框 249
[實例16.5] 選擇員工的職位 250
16.4.2 NumericUpDown:數值選擇 250
[實例16.6] 動態顯示選擇的數值 251
16.4.3 ListBox:列表 251
[實例16.7] 在ListBox中添加和移除項 252
[實例16.8] 在ListBox中顯示滾動條 252
[實例16.9] 在ListBox中選擇多項 253
16.4.4 ListView控件:列表視圖 254
16.5 圖片類控件 256
16.5.1 PictureBox:圖片 256
16.5.2 ImageList:圖片列表 257
[實例16.10] 使用ImageList加載和移除圖像 258
16.6 容器控件 259
16.6.1 GroupBox:分組框 259
16.6.2 Panel:容器 259
16.6.3 TabControl:選項卡 259
[實例16.11] 動態添加和刪除選項卡 261
16.7 TreeView:樹控件 261
[實例16.12] 使用樹控件顯示部門結構 263
16.8 Timer:計時器 264
[實例16.13] 模擬雙色球選號 265
16.9 ProgressBar:進度條 266
16.10 菜單、工具欄和狀態欄 266
16.10.1 MenuStrip:菜單 266
16.10.2 ToolStrip:工具欄 267
16.10.3 StatusStrip:狀態欄 268
[實例16.14] 在狀態欄中顯示登錄用戶及時間 268
16.11 消息框 270
16.12 對話框 271
16.12.1 “打開”對話框 271
16.12.2 “另存為”對話框 273
16.12.3 “瀏覽文件夾”對話框 273
本章知識思維導圖 274
第4篇 數據庫及文件篇
第17章 使用C#操作數據庫 276 視頻講解:7節,67分鐘
17.1 SQL語句基礎 277
17.1.1 SQL語言簡介 277
17.1.2 簡單SQL語句的應用 277
17.2 ADO.NET概述 281
17.2.1 ADO.NET對象模型 281
17.2.2 數據訪問命名空間 281
17.3 Connection數據連接對象 282
17.3.1 熟悉Connection對象 282
17.3.2 數據庫連接字符串 282
17.3.3 應用SqlConnection對象連接數據庫 284
[實例17.1] 使用SqlConnection對象連接SQL Server數據庫 284
17.4 Command命令執行對象 285
17.4.1 熟悉Command對象 285
17.4.2 應用Command對象操作數據 286
[實例17.2] 向數據表中添加編程詞典價格信息 286
17.4.3 應用Command對象調用存儲過程 286
[實例17.3] 使用存儲過程向數據表中添加編程詞典價格信息 286
17.5 DataReader數據讀取對象 287
17.5.1 DataReader對象概述 287
17.5.2 使用DataReader對象檢索數據 288
[實例17.4] 獲取編程詞典信息并分列顯示 289
17.6 DataSet對象和DataAdapter操作對象 290
17.6.1 DataSet對象 290
17.6.2 DataAdapter對象 290
17.6.3 填充DataSet數據集 291
[實例17.5] 填充DataSet數據集并顯示 292
17.6.4 DataSet對象與DataReader對象的區別 292
17.7 DataGridView控件的使用 292
[實例17.6] DataGridView表格的使用 293
本章知識思維導圖 295
第18章 Entity Framework編程 296 視頻講解:1節,22分鐘
18.1 什么是Entity Framework 297
18.2 Entity?Framework實體數據模型 297
18.3 創建實體數據模型 298
18.4 通過EF對數據表進行增刪改查操作 300
[實例18.1] 通過EF對數據表進行增刪改查操作 301
18.5 EF相對于ADO.NET的優勢 302
本章知識思維導圖 303
第19章 文件及文件夾操作 304 視頻講解:4節,70分鐘
19.1 System.IO命名空間 305
19.2 文件基本操作 306
19.2.1 File類 306
19.2.2 FileInfo類 307
19.2.3 判斷文件是否存在 307
19.2.4 創建文件 308
19.2.5 復制文件 309
19.2.6 移動文件 310
19.2.7 刪除文件 310
19.2.8 獲取文件基本信息 311
[實例19.1] 獲取選定文件的詳細信息 311
19.3 文件夾基本操作 312
19.3.1 Directory類 312
19.3.2 DirectoryInfo類 312
19.3.3 判斷文件夾是否存在 313
19.3.4 創建文件夾 313
19.3.5 移動文件夾 314
19.3.6 刪除文件夾 315
19.3.7 遍歷文件夾 315
[實例19.2] 獲取文件夾中的所有子文件夾及文件信息 316
19.4 I/O數據流基礎 318
19.4.1 流概述 318
19.4.2 文件流 319
[實例19.3] 使用不同的方式打開文件 320
19.4.3 文本文件的讀寫 321
[實例19.4] 文本文件中寫入和讀取名人名言 322
本章知識思維導圖 324
第5篇 項目開發篇
第20章 貪吃蛇大作戰 326 視頻講解:1節,3分鐘
20.1 游戲描述 327
20.2 設計思路 327
20.3 開發過程 328
20.3.1 創建項目并導入資源文件 328
20.3.2 設計主窗體 329
20.3.3 初始化游戲場景及蛇身 331
20.3.4 控制游戲的開始、暫停和結束 332
20.3.5 移動貪吃蛇并控制其速度 333
本章知識思維導圖 334
第21章 人事工資管理系統 335 視頻講解:1節,3分鐘
21.1 需求分析 336
21.2 系統設計 336
21.2.1 系統功能結構 336
21.2.2 業務流程圖 336
21.2.3 編碼規則 336
21.2.4 程序運行環境 337
21.2.5 系統預覽 337
21.3 數據庫設計 339
21.3.1 數據庫分析 339
21.3.2 數據庫概念設計 339
21.3.3 數據庫邏輯結構設計 341
21.4 文件夾組織結構 342
21.4.1 文件夾組織結構圖 343
21.4.2 程序文件組織結構圖 343
21.5 公共類設計 344
21.5.1 DBConnection公共類 344
21.5.2 DBOperate公共類 345
21.6 登錄模塊設計 348
21.6.1 登錄模塊概述 348
21.6.2 登錄模塊實現過程 349
21.7 主窗體設計 350
21.7.1 主窗體概述 350
21.7.2 主窗體實現過程 351
21.8 檔案管理模塊設計 352
21.8.1 檔案管理模塊概述 352
21.8.2 檔案管理模塊實現過程 352
21.9 獎罰管理模塊設計 359
21.9.1 獎罰管理模塊概述 359
21.9.2 獎罰管理模塊實現過程 360
本章知識思維導圖 364
附錄 數據庫基礎 365