本書對C#程序設計的教學內容進行了系統化設計和優化,形成了4個學習階段(C#基礎語法學習、面向對象程序設計、界面設計與交互實現、面向數據庫的程序設計)、9個單元和3條主線(教學組織主線、理論知識主線和編程任務主線)的完整體系,按照程序探析知識導讀編程實戰同步訓練析疑解難單元習題6個環節有效組織教學。以程序設計為中心組織教學內容、設計編程任務,圍繞程序學習語法、熟悉算法、掌握方法、實現想法。采用任務驅動教學方法,強調做中學、做中會,強化編程技能的訓練,強調良好編程習慣的培養。
本書可以作為計算機各專業和非計算機專業C#程序設計課程的教材,也可以作為C#程序設計的培訓教材以及自學用書。
本書對C#程序設計的教學內容進行了系統化設計和優化,形成了4個學習階段(C#基礎語法學習、面向對象程序設計、界面設計與交互實現、面向數據庫的程序設計)、9個單元和3條主線(教學組織主線、理論知識主線和編程任務主線)的完整體系,按照程序探析-知識導讀-編程實戰-同步訓練-疑難解析-單元習題6個環節有效組織教學。以程序設計為中心組織教學內容、設計編程任務,圍繞程序學習語法、熟悉算法、掌握方法、實現想法。采用任務驅動教學方法,強調做中學、做中會,強化編程技能和工作態度的訓練,強調良好編程習慣的培養。
前言
C#是微軟公司發布的一種面向對象的、運行于.NET Framework之上的高級程序設計語言。C#是一種安全、穩定、簡單,由C和C 衍生而來的面向對象的編程語言。它在繼承C和C 強大功能的同時去掉了一些復雜特性(例如它沒有宏以及不允許多重繼承)。C#以其強大的操作能力、嚴謹的語法風格、創新的語言特性和便捷的面向組件編程的支持成為.NET開發的首選語言。C#使得程序員可以快速地編寫各種應用程序,.NET提供了一系列的工具和服務來最大限度地滿足計算與通信領域的程序開發需要。本書具有以下特色與創新。(1) 對C#程序設計的教學內容進行了系統化設計和優化,形成了4個階段、9個單元和3條主線的完整體系。4個階段: C#基礎語法學習、面向對象程序設計、界面設計與交互實現、面向數據庫的程序設計。9個單元: 初識C#程序及其開發環境、C#程序中不同類型數據的存儲與輸入、C#程序中數據的運算與輸出、C#程序的流程控制與算法實現、面向對象基本程序設計、面向對象高級程序設計、文件操作應用程序設計、用戶界面設計與交互實現、數據庫訪問應用程序設計。3條主線: 教學組織主線、理論知識主線和編程任務主線。每個單元面向教學全過程設置了完整的教學環節,按照程序探析知識導讀編程實戰同步訓練析疑解難單元習題6個環節有效組織教學。每個單元以節的方式組織理論知識,形成了系統性強、條理性強、循序漸進的理論知識體系。每個單元根據學習知識和訓練技能的需要設計了系統的編程任務。(2) 以程序設計為中心組織教學內容、設計編程任務,圍繞程序學習語法、熟悉算法、掌握方法、實現想法。作為程序設計課程,讓學生在課堂上學到一些知識點、掌握一些具體的語法規則固然重要,但是更重要的是,要教學生解決實際問題的方法,在教學過程中培養學生的思維能力,把訓練編程能力放在主體地位,使學生熟悉算法設計,掌握編程方法,提高學生分析問題和解決問題的能力。C#程序設計任務驅動教程(3) 采用任務驅動教學方法,強調做中學、做中會,強化編程技能的訓練。程序設計不是聽會的,也不是看會的,而是練會的。寫在紙上的程序,看上去是正確的,可是一上機,卻發現漏洞不少,上機運行能實現預期的功能且運行結果正確是檢驗程序正確性的標準。只有讓學生動手,才會有成就感,進而對程序設計課程產生濃厚的興趣,才會主動學習。課堂教學應讓學生多動手、動腦,更多地上機實踐。學生只有在編寫大量程序之后,才能獲得真知灼見,感到運用自如。(4) 理論知識與實際應用有機結合,在分析實際需求、解決實際問題過程中學習語法知識、體驗語法規則、積累編程經驗、形成編程能力。每個教學單元的程序探析環節通過探析一個典型應用程序,引出各個單元的教學內容,對相關知識和技能形成初步印象,同時也讓學習者頭腦中形成一些問題,帶著問題學習知識和動手編程,經過后面環節的學習和訓練,化解這些問題,這樣帶著問題進行探索性地學習,比平淡乏味地學習語法知識效果會更好。每個教學單元的理論知識分別在知識導讀環節和析疑解難環節進行講解,知識導讀部分主要闡述每個單元的基礎知識,提供基本方法支持;析疑解難主要解答一些綜合性、有一定難度的問題;編程實戰環節引導學習者系統性完成多項編程任務,每項任務都給出了詳細的實現步驟;同步訓練部分由學習者自行完成編程任務。學習者在完成每一項編程任務的過程中,應理解程序需求、掌握語法知識、熟悉開發工具,從而形成編程能力。(5) 強調良好編程習慣的培養,強化認真工作態度的訓練。編程過程中除了學習必備知識和訓練必需技術之外,還應注重養成良好的習慣,強調程序的規范性、可讀性。程序構思要有說明,程序代碼要有注釋,程序運行結果要有分析,程序算法盡量優化。良好的編程習慣、嚴謹的設計思路、認真的工作態度,將使學生終身受益。本書主要由湖南鐵道職業技術學院的陳承歡教授和趙志茹,內蒙古電子信息職業技術學院的王鳳岐老師編寫,包頭輕工職業技術學院的張尼奇、池明文,長沙職業技術學院的殷正坤、藍敏、艾娟,湖南鐵道職業技術學院的馮向科、寧云智、肖素華、林保康、張麗芳,湖南工業職業技術學院的劉曼春,廣東科學技術職業學院的陳華政,長沙環保職業技術學院的楊茜等老師參與了部分章節的編寫工作。由于編者水平有限,教材中的疏漏之處敬請專家與讀者批評、指正,編者的QQ為1574819688。本書免費提供電子教案、源代碼等相關教學資源,購書的讀者請直接聯系編者。
編者2016年8月
目錄
單元1初識C#程序及其開發環境1
程序探析1
任務11打開已有項目與運行C#程序1
知識導讀7
1.1項目與文件7
1.2C#程序的基本框架8
1.3C#語言的關鍵字9
1.4C#語言的預定義標識符10
1.5C#標識符的命名規則11
編程實戰13
任務12認知Visual Studio 2012的集成開發環境13
任務13定制Visual Studio集成開發環境16
任務14創建與運行控制臺應用程序22
任務15查看與設置屬性32
任務16使用解決方案資源管理器管理項目
和文件36
任務17嘗試調試程序與排除程序錯誤41
同步訓練45
任務18編寫C#程序輸出歡迎信息45
析疑解難45
單元習題47
單元2C#程序中不同類型數據的存儲與輸入50
程序探析50
任務21編寫程序輸出教師的基本信息50
知識導讀53
2.1數據類型53
2.1.1數據類型的多樣性分析53C#程序設計任務驅動教程目錄2.1.2內存空間的劃分與管理54
2.1.3C#語言的數據類型54
2.1.4C#數據類型的應用技巧58
2.2數據類型轉換59
2.2.1隱式類型轉換59
2.2.2顯式類型轉換60
2.2.3顯式數值轉換的主要方法61
2.3常量與枚舉62
2.3.1常量62
2.3.2枚舉及應用63
2.4使用單個變量存儲數據65
2.4.1認識變量65
2.4.2變量的聲明66
2.4.3變量的賦值67
2.5使用數組存儲數據69
2.5.1認識數組69
2.5.2一維數組及應用70
2.5.3二維數組及應用72
2.6使用結構存儲數據73
2.6.1認識結構73
2.6.2結構類型的聲明73
2.6.3結構變量的聲明74
2.6.4結構成員的使用方法74
2.6.5DateTime結構及應用74
2.7控制臺中C#程序中的數據輸入76
編程實戰77
任務22應用枚舉類型實現星期數據輸出的程序設計77
任務23使用單個變量存儲教師數據的程序設計79
任務24使用一維數組存儲工資數據的程序設計81
任務25使用二維數組存儲工資數據的程序設計83
任務26使用結構存儲教師數據的程序設計87
任務27編寫程序按約定的格式輸出教師的基本信息89
同步訓練91
任務28編寫程序輸出學生的基本信息91
任務29應用枚舉類型實現季節數據輸出的程序設計91
任務210使用單個變量存儲1個學生多門課程成績的程序設計91
任務211使用單個變量存儲多個學生1門課程成績的程序設計92
任務212使用一維數組存儲1個學生多門課程成績的程序設計92
任務213使用二維數組存儲多個學生多門課程成績的程序設計92
任務214使用結構存儲學生數據的程序設計92
析疑解難93
單元習題100
單元3C#程序中數據的運算與輸出103
程序探析103
任務31計算并輸出教師的工資數據103
知識導讀108
3.1運算符與表達式概述108
3.2算術運算109
3.2.1算術運算符110
3.2.2算術表達式111
3.3賦值運算111
3.3.1賦值運算符111
3.3.2賦值表達式113
3.4連接運算113
3.4.1連接運算符113
3.4.2連接表達式114
3.5關系運算114
3.5.1關系運算符114
3.5.2關系表達式115
3.6邏輯運算116
3.6.1邏輯運算符116
3.6.2邏輯表達式117
3.7控制臺中C#程序中的數據輸出117
3.7.1控制臺中C#程序的數據輸出方法117
3.7.2數據的格式化及其輸出格式118
編程實戰119
任務32計算商品平均優惠價格119
任務33商品庫存數量的更新120
任務34判斷商品的當前庫存數量是否足夠122
任務35判斷與輸出商品是否有貨123
任務36判斷是否符合打折條件124
任務37使用Console類的方法實現教師數據的輸出125
同步訓練126
任務38計算購買空調的實付金額和優惠金額126
任務39判斷是否符合評選三好學生的基本條件127
任務310使用Console類的方法實現學生數據的輸出127
析疑解難127
單元習題131
單元4C#程序的流程控制與算法實現134
程序探析134
任務41使用順序結構編寫程序計算與輸出工資數據134
知識導讀135
4.1順序結構135
4.2選擇結構136
4.2.1if語句136
4.2.2if...else語句137
4.2.3if...else if語句139
4.2.4switch語句140
4.3循環結構141
4.3.1for語句144
4.3.2foreach語句145
4.3.3while語句146
4.3.4do...while語句147
4.4嵌套結構148
4.4.1嵌套結構常見的形式148
4.4.2嵌套結構的使用說明149
4.5算法設計與實現149
4.5.1算法概述150
4.5.2算法描述的方法151
4.5.3程序設計的基本步驟156
編程實戰157
任務42使用if語句編寫程序計算基本工資157
任務43使用if...else 語句編寫程序計算個人所得稅159
任務44使用switch語句編寫程序計算調整后的工資額161
任務45使用for語句編寫程序計算平均工資163
任務46使用foreach語句編寫程序計算平均工資164
任務47使用while語句編寫程序計算平均工資165
任務48使用do...while語句編寫程序計算平均工資167
任務49使用嵌套結構語句編寫程序計算平均工資168
任務410使用for語句編寫程序計算銀行存款的本利和172
任務411使用混合嵌套結構編寫程序計算最高工資和最低工資176
同步訓練178
任務412使用選擇結構編寫程序178
任務413使用循環結構編寫程序178
任務414使用嵌套結構編寫程序179
單元習題182
單元5面向對象基本程序設計186
程序探析186
任務51初識Person類的完整定義結構186
知識導讀188
5.1類的定義及其成員188
5.1.1類的定義格式189
5.1.2類的成員190
5.1.3嵌套類193
5.2對象的創建與使用193
5.2.1對象概述193
5.2.2創建對象194
5.2.3使用對象194
5.3類的成員方法195
5.3.1方法的聲明195
5.3.2方法的參數195
5.4類的屬性197
5.4.1屬性的定義197
5.4.2屬性的使用199
5.5類的繼承199
5.5.1創建子類199
5.5.2base和this的使用200
5.6命名空間201
5.6.1自定義命名空間202
5.6.2引用命名空間中的類202
5.6.3.NET框架常用的命名空間203
5.7類及類成員的可訪問性及變量的作用域206
5.7.1訪問修飾符概述206
5.7.2類的可訪問性206
5.7.3類成員的可訪問性207
5.7.4默認的可訪問性207
5.7.5靜態類和靜態成員208
5.7.6類及成員的可訪問域208
5.7.7變量的作用域208
5.8Visual C#常用的類209
5.8.1Console類209
5.8.2Object類209
5.8.3String類209
5.8.4Array類210
5.8.5Math類210
5.8.6Form類210
5.8.7Control類211
5.8.8MessageBox類211
5.9值類型和引用類型及裝箱和拆箱212
5.9.1值類型和引用類型212
5.9.2裝箱和拆箱215
5.10異常及異常處理216
5.10.1異常與異常類216
5.10.2異常處理217
編程實戰221
任務52定義父類職員類Personnel221
任務53定義職員類的子類教師類Teacher227
任務54在同一個解決方案的不同項目之間訪問類及類的成員234
同步訓練239
任務55定義學生類Student239
析疑解難239
單元習題241
單元6面向對象高級程序設計245
程序探析245
任務61根據指定的語言類型在屏幕上動態輸出對應語言的
問候語245
知識導讀246
6.1委托與事件246
6.1.1委托概述247
6.1.2委托的定義、實例化與使用247
6.1.3事件的定義248
6.1.4事件的使用249
6.2接口249
6.2.1接口的定義與實現249
6.2.2顯式接口250
6.2.3接口作為參數和返回值251
6.3抽象類251
6.3.1抽象類的定義251
6.3.2抽象類的實現252
6.4類的多態252
6.4.1利用方法和運算符重載實現多態252
6.4.2利用虛方法和方法隱藏實現多態255
6.4.3通過接口實現多態259
編程實戰261
任務62使用委托實現屏幕上動態輸出不同語言的問候語261
任務63使用事件驅動機制輸出指定日期對應的星期數263
任務64商品接口的定義與實現265
任務65商品抽象類的定義與繼承267
任務66通過方法的重載實現多態271
同步訓練278
任務67委托的定義與使用278
任務68設計銀行卡模擬系統的抽象類和接口278
析疑解難279
單元習題280
單元7文件操作應用程序設計282
程序探析282
任務71創建文件夾與查看文件夾的屬性282
知識導讀286
7.1用于文件和文件夾操作的類286
7.2文件夾的操作287
7.3文件的操作289
7.4讀寫文件的操作291
編程實戰297
任務72文件的建立與復制及其屬性輸出297
任務73讀寫文件的操作300
同步訓練305
任務74創建文件夾和文件并輸出學生信息305
析疑解難305
單元習題306
單元8用戶界面設計與交互實現308
程序探析308
任務81設計用戶登錄界面與實現用戶登錄功能308
知識導讀317
8.1Windows窗體317
8.1.1Windows窗體概述318
8.1.2Windows窗體的基本操作318
8.1.3Windows窗體的主要屬性及其設置319
8.1.4Windows窗體的常用方法322
8.1.5Windows窗體的常用事件322
8.2Visual C#的控件323
8.2.1窗體中控件的基本操作323
8.2.2控件的通用屬性324
8.2.3Visual C#常用的控件326
8.3菜單設計327
8.3.1主菜單327
8.3.2上下文菜單328
8.4工具欄的設計329
8.5狀態欄的設計330
8.6對話框的設計330
8.7MDI多窗體程序的設計331
編程實戰331
任務82設計職員信息輸入窗體與實現信息輸入功能331
任務83設計簡易記事本與實現其基本功能337
任務84設計人力資源管理系統的主界面348
同步訓練354
任務85設計學生成績錄入界面354
析疑解難354
單元習題356
單元9數據庫訪問應用程序設計357
程序探析357
任務91獲取并輸出用戶表中的用戶總數357
知識導讀360
9.1ADO.NET概述360
9.2創建與使用Connection對象361
9.2.1ADO.NET的SqlConnection連接對象362
9.2.2ADO.NET的OleDBConnection連接對象365
9.3創建與使用SqlCommand對象366
9.4創建與使用SqlDataReader對象368
9.5創建與使用SqlDataAdapter對象370
9.6創建與使用DataSet對象373
編程實戰376
任務92使用SqlDataAdapter對象從用戶表中獲取并輸出
全部用戶數據376
任務93通過三層架構方式實現用戶登錄和新增用戶功能378
同步訓練390
任務94使用SqlDataReader對象從用戶表中獲取并輸出所有的
用戶名390
任務95創建更改密碼窗體與實現更改密碼功能391
析疑解難391
單元習題392
附錄C#程序設計處理數據說明394
參考文獻395