微軟的C#(VS 2012版)是從C和C++演變而來的一種新的面向對象的程序設計語言,用它結合ASP.NET或Windows Phone平臺的開發應用代表了當前的編程方向。C#可以編譯成跨平臺的代碼,它避免了C語言的指針和多繼承,簡單易學且功能強,其協變和逆變、LINQ及PLINQ等新特點皆受到人們青睞。本書共12章和兩個附錄,詳述了C#的由來和發展,數據類型、運算符與表達式,結構化程序設計及算法,數組、結構、枚舉和集合,面向對象程序設計(類、委托、繼承和接口),可視化應用程序設計,文件和流,數據庫操作,C/S模式編程,多線程和多窗體等。最后給出一個較完整的編程案例。
本書可作為高等學校及軟件學院的教材,也適合從事軟件開發和應用的人員參考。
C#是從C和C++演變而來的一種新的面向對象的編程語言。結合了C#的強大功能和Visual Studio.NET平臺的環境和類的支持后,形成了功能強大的開發工具——C#.NET。C#是目前主流語言中不多見的在Internet出現后推出的語言,故它的設計很適合在國際互聯網上使用。C#結合ASP.NET或Windows Phone平臺開發應用程序,代表了當前的編程方向。C#可以編譯成跨平臺的代碼,它避免了C語言中的指針和多繼承,簡單易學且功能強。
目前,國內高校該類課程的教學內容一般理論過多,筆者認為主要應加強編程實踐,提高動手能力。很有必要改變課程的教學內容和教學模式,用先進的教學理念和方法培養一流人才,本教材就是在此改革的思路下編寫的,其主要特點如下。
(1)《C# 程序設計教程(第3版)》介紹了VS2012(C#在其中)等的新特點,并以C# 2010(C# 4)版平臺為基礎進行了內容更新和添加。所用的Access數據庫也升級了版本。
(2)增加了泛型、泛型集合List<T>、ICollection接口、IEnumerable<T>接口、yield,以及泛型接口和委托中的協變、逆變的內容,見第7.4節。
(3)增加了10.6節“LINQ語言集成查詢以及PLINQ”(Var、Lambda、查詢表達式轉換和LINQ To SQL);第6章增加了對象初始化器;第9章加強了C#的文件中流的概念。
(4)增加“C#的多線程、多窗體”,將原第11章Web服務放到筆者另外的B/S的書中。
(5)精煉了第12章C#案例——人力資源管理系統的內容。
(6)區分各課程在該專業的不同技能培養目標。C#程序設計作為計算機軟件類專業基礎課,其目標重點是C/S模式編程,即對專業分解到該課程的結構化程序設計、面向對象程序設計、可視化編程、ADO.NET與庫表、.NET平臺等能力模塊進行教學;而把XML、正則表達式、WPF、Ajax、WCF、ListView富數據控件等放筆者另外一部書(ASP.NET B/S)中。
(7)在選材上,繼續強調理論“以必需、夠用為度”,減少了個別章節的難度,且深入淺出。另外,書中例子使用了許多經典算法,彌補了有些讀者未學《數據結構》的不足。
(8)增強實踐性,各章均有不少經過運行驗證的例題與實例(例如,10.7節C#應用實例——學生成績管理系統)以及第12章較完整的案例(用UML、CASE、MVC等技術)。
(9)輔助教學資源豐富,打造成立體化精品教材。在其精品課程網站上,有配套的PPT、教學大綱、習題、實驗指導書、專周課程設計、教師在線輔導、CAI、網絡課程、試題庫、考試系統、相關素材等,這些資源生動、具體、形象、直觀,便于教與學。
本書由劉甫迎教授主編,劉光會、王蓉、劉焱老師任副主編。劉甫迎編寫第1章、7.4節、第12章;劉光會編寫第2章至第6章和附錄;王蓉編寫第7章、第9章、第10章;劉焱編寫第8章、6.2.4節、10.6節、第11 章,全書由劉甫迎統稿。其他參編人員有:周紹敏、李朝蓉、黨晉蓉、李琦、李飛躍、楊雅志、龔茗茗、謝春、饒斌、陳振梁、樊婷婷等。對電子工業出版社的編輯在本書出版過程中給予的幫助表示感謝。由于水平有限,錯誤難免,請斧正。
劉甫迎
2012年4月
第1章 C#概述
1.1 C#簡介
1.1.1 C#的發展
1.1.2 C#的特點
1.1.3 VS2012等的新功能
1.1.4 Microsoft.NET平臺
1.1.5 C#的運行環境及安裝
1.2 C#集成開發環境
1.2.1 C#的啟動
1.2.2 C#集成開發環境
習題
第2章 簡單的C#程序設計
2.1 C#程序結構
2.1.1 第一個C#程序
2.1.2 編譯和執行程序
2.1.3 C#程序結構分析
2.1.4 標識符
2.2 輸入/輸出操作
2.2.1 Console.WriteLine 方法
2.2.2 Console.Write 方法
2.2.3 Console.ReadLine 方法
2.2.4 Console.Read方法
習題
第3章 數據類型、運算符與表達式
3.1 數據類型
3.1.1 值類型
3.1.2 引用類型
3.1.3 類型轉換
3.1.4 裝箱和拆箱
3.2 常量與變量
3.2.1 常量
3.2.2 變量
3.3 運算符和表達式
3.3.1 運算符
3.3.2 表達式
習題
第4章 結構化程序設計
4.1 結構化程序設計的概念
4.1.1 結構化程序設計的概念及算法的概念
4.1.2 流程圖
4.2 順序結構
4.2.1 順序結構的概念
4.2.2 順序結構的實例
4.3 選擇結構
4.3.1 選擇結構的概念
4.3.2 條件語句
4.3.3 分支語句
4.3.4 選擇結構的實例
4.4 循環結構
4.4.1 循環結構的概念
4.4.2 while語句和do-while語句
4.4.3 for語句和foreach語句
4.4.4 跳轉語句
4.4.5 循環語句的算法——循環結構的實例
4.5 異常處理
4.5.1 異常處理的概念
4.5.2 異常的處理
習題
第5章 數組、結構和枚舉
5.1 數組
5.1.1 數組的概念
5.1.2 一維數組
5.1.3 二維數組
5.1.4 “冒泡排序”算法——數組的實例
5.2 結構類型
5.2.1 結構的聲明
5.2.2 結構成員的訪問
5.2.3 順序查找算法——結構的實例
5.3 枚舉
5.3.1 枚舉類型的定義
5.3.2 枚舉成員的賦值
5.3.3 枚舉成員的訪問
習題
第6章 C#的面向對象程序設計
6.1 面向對象程序設計的基本概念
6.2 類和對象
6.2.1 類的聲明
6.2.2 類的成員
6.2.3 對象的聲明
6.2.4 對象初始化器
6.3 構造函數和析構函數
6.3.1 構造函數
6.3.2 析構函數
6.4 方法
6.4.1 方法的定義及調用
6.4.2 方法的參數類型
6.4.3 方法的重載
6.4.4 靜態方法與非靜態方法
6.4.5 運算符的重載
6.4.6 遞歸
6.5 屬性
6.5.1 屬性的聲明
6.5.2 屬性的訪問
6.6 索引指示器
6.6.1 定義索引指示器
6.6.2 使用索引指示器訪問對象
6.7 委托與事件
6.7.1 委托
6.7.2 事件
6.8 C#常用的基礎類
6.8.1 Math類與Random類
6.8.2 字符串
6.9 命名空間
6.9.1 命名空間的聲明
6.9.2 命名空間的成員
6.9.3 命名空間的使用
習題
第7章 繼承和接口
7.1 C#的繼承機制
7.1.1 繼承的基本知識
7.1.2 base關鍵字
7.1.3 覆蓋
7.2 多態性
7.2.1 多態性概述
7.2.2 虛方法
7.2.3 多態性的實現
7.3 接口
7.3.1 接口的定義
7.3.2 接口的成員
7.3.3 接口的實現
7.3.4 接口的應用實例
7.4 泛型、泛型接口和委托中的協變、逆變
7.4.1 泛型、泛型集合List<T>、IEnumerable<T>接口及yield
7.4.2 協變和逆變
7.4.3 泛型接口和委托中的協變和逆變
習題
第8章 可視化應用程序設計
8.1 Windows窗體
8.1.1 Windows窗體的基本屬性
8.1.2 創建窗體
8.1.3 設置啟動窗體屬性
8.2 控件概述
8.2.1 控件的基本屬性
8.2.2 控件共有的屬性、事件和方法
8.3 命令按鈕控件(Button)
8.4 標簽控件(Label)
8.5 文本框控件(TextBox)
8.6 單選按鈕(RadioButton)和復選框(CheckBox和CheckedListBox)
8.7 面板控件(Panel)和分組框(GroupBox)控件
8.8 圖形框控件(PictureBox)
8.9 列表框(ListBox)、帶復選框的列表框(Checked ListBox)和組合框(ComboBox)控件
8.9.1 列表框控件(ListBox)
8.9.2 帶復選框的列表框控件(CheckedListBox)
8.9.3 組合框控件(ComboBox)
8.10 滾動條控件(ScrollBar)
8.11 定時器控件(Timer)
8.12 超鏈接標簽控件(LinkLabel)
8.13 通用對話框控件
8.13.1 消息框
8.13.2 文件打開和保存對話框
8.13.3 顏色選擇對話框
8.13.4 字體對話框
8.13.5 打印機對話框
8.13.6 對話框綜合實例
習題
第9章 C#的文件和流
9.1 文件和流的概念
9.2 文件的讀和寫
9.2.1 讀文件
9.2.2 寫文件
9.3 文件操作實例——鏈表算法
習題
第10章 C#的數據庫操作
10.1 Access數據庫
10.1.1 建立Access數據庫表
10.1.2 輸入表的數據
10.1.3 SQL語言簡介及常用的SQL命令
10.2 客戶機/服務器(C/S)模式編程
10.3 ADO.NET概念
10.4 ADO.NET對象
10.4.1 Connection對象
10.4.2 Command對象
10.4.3 DataReader對象
10.4.4 DataAdapter(數據適配器)對象
10.4.5 DataSet對象
10.5 數據綁定控件
10.6 LINQ語言集成查詢
10.6.1 LINQ以及PLINQ的概念
10.6.2 LINQ語法(Var、擴展方法、Lambda、匿名類型和查詢表達式轉換)
10.6.3 關系數據的集成查詢LINQ To SQL應用
10.7 C#應用實例——學生成績管理系統
習題
第11章 C#的多線程、多窗體(MDI)應用
11.1 C#的多線程編程
11.1.1 多線程簡介
11.1.2 線程的優先級和執行狀態
11.1.3 線程同步
11.2 C#的多窗體(MDI)應用程序
習題
第12章 C#案例——人力資源管理系統
12.1 系統概述
12.1.1 辦公自動化系統FoxOA
12.1.2 系統功能
12.2 系統分析與設計(UML)
12.2.1 計算機輔助軟件工程(CASE)工具——PD
12.2.2 本系統建模
12.3 主要關鍵技術
12.3.1 MVC設計模式簡介
12.3.2 MVC設計模式的實現
12.4 數據庫結構
12.5 用戶使用說明書
12.5.1 系統平臺
12.5.2 登錄和進入系統
12.6 關鍵源程序
習題
附錄A 《C#程序設計課程》教學大綱
附錄B 《C#程序設計課程》實驗指導書
參考文獻