本書通過一個完整的項目講解如何使用 Visual Studio 2019(C#)開發基于 SQL Server 數據庫的 Windows窗體應用程序。 本書主要內容包括認識項目、主窗體開發、數據維護窗體開發、系統登錄及權限管理、學生選課、選課抽簽及抽簽結果查詢、統計查詢、RDLC 報表、系統完善、控件開發、LINQ 技術、使用 ClickOnce 部署項目; 拓展項目通過網上購物系統介紹了使用 Visual Studio 開發 Web 項目的強大功能,有利于讀者進一步了解 Visual Studio 開發工具。本書項目既實用,又盡量避免出現重復知識點。在講解方面,本書力求以深入淺出的方式引導讀者完成項 目的開發,并期望讀者取得舉一反三的效果。
曾建華(1972.9——),男,漢族,副教授,微軟認證講師、廣東省首位1+X高級(Web前端)證書獲得者,主講培訓深圳富士康軟件工程師。獨立開發過眾多行業項目:五金電器、防彈玻璃、汽車配件、獸藥銷售、教材管理、排課、技能鑒定系統等。編寫教材11部,其中國家級規劃教材7部,作為主要項目負責人參與國家精品課程《大型數據庫》(第二)、廣東省精品課程《大型數據庫》的建設。
項目 1 認識項目????????????????????????????????????????????????????????????????????????????????????????????? (1)
任務 1.1 項目和開發環境介紹 ???????????????????????????????????????????????????????????????????????? (1)
1.1.1 項目 ???????????????????????????????????????????????????????????????????????????????????????????????????????? (1)
1.1.2 開發環境 ?????????????????????????????????????????????????????????????????????????????????????????????????? (2) 任務 1.2 項目運行????????????????????????????????????????????????????????????????????? (2)
1.2.1 準備項目所需數據庫 ??????????????????????????????????????????????????????????????????????????????????? (2)
1.2.2 運行學生選課系統 ?????????????????????????????????????????????????????????????????????????????????????? (5) 任務 1.3 了解項目功能及數據庫 ????????????????????????????????????????????????????????????????? (6)
1.3.1 項目功能介紹 ???????????????????????????????????????????????????????????????????????????????????????????? (6)
1.3.2 熟悉項目數據庫中的表 ???????????????????????????????????????????????????????????????????????????????(13)
1.3.3 數據庫中表之間的關系 ???????????????????????????????????????????????????????????????????????????????(15) 實訓 ???????????????????????????????????????????????????????????????????????????????????????????????????????? (17)
項目 2 主窗體開發 ?????????????????????????????????????????????????????????????????????????????????? (21)
任務 2.1 項目構成??????????????????????????????????????????????????????????????????????????????????? (21)
2.1.1 創建項目 ????????????????????????????????????????????????????????????????????????????????????? (21)
2.1.2 認識 Program.cs 文件 ????????????????????????????????????????????????????????????????????????(23) 任務 2.2 主窗體設計????????????????????????????????????????????????????????????????????????????????????????????????? (25)
2.2.1 主菜單(MenuStrip) ?????????????????????????????????????????????????????????????????????????????????(25)
2.2.2 工具欄(ToolStrip)???????????????????????????????????????????????????????????????????????????????????(27)
2.2.3 狀態欄(StatusStrip) ?????????????????????????????????????????????????????????????????????????????????(29)
2.2.4 多文檔界面(MDI)主窗體 ?????????????????????????????????????????????????????????????????????????(31)
實訓????????????????????????????????????????????????????????????????????????????????????????????????????? (33)
項目 3 數據維護窗體開發 ?????????????????????????????????????????????????????????????????????????? (35)
任務 3.1 系部數據維護???????????????????????????????????????????????????????????????????????????? (35)
3.1.1 創建數據集并添加系部表 ????????????????????????????????????????????????????????????????????????????(35)
3.1.2 設計“系部信息”窗體并維護數據 ????????????????????????????????????????????????????????????????(38)
任務 3.2 班級數據維護?????????????????????????????????????????????????????????????????????????????????????????????? (43)
3.2.1 修改數據集并添加班級表 ????????????????????????????????????????????????????????????????????????????(43)
3.2.2 設計“班級信息”窗體并維護數據 ????????????????????????????????????????????????????????????????(44) 任務 3.3 學生數據維護?????????????????????????????????????????????????????????????????????????????????????????????? (50)
3.3.1 修改數據集并添加學生表 ????????????????????????????????????????????????????????????????????????????(50)
3.3.2 設計“學生信息”窗體并維護數據 ????????????????????????????????????????????????????????????????(50) 任務 3.4 課程數據維護?????????????????????????????????????????????????????????????????????????????????????????????? (55)
3.4.1 設計“課程信息”窗體 ???????????????????????????????????????????????????????????????????????????????(55)
3.4.2 維護課程數據 ??????????????????????????????????????????????????????????????????????????????????????????? (56) 實訓 ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? (61)
項目 4 系統登錄及權限管理??????????????????????????????????????????????????????????????????????????????????????? (62)
任務 4.1 系統登錄???????????????????????????????????????????????????????????????????????????????????????????????????? (62)
4.1.1 設計登錄窗體 ??????????????????????????????????????????????????????????????????????????????????????????? (62)
4.1.2 編寫供全局使用的靜態類 ????????????????????????????????????????????????????????????????????????????(63)
4.1.3 編寫登錄相關代碼 ?????????????????????????????????????????????????????????????????????????????????????(66) 任務 4.2 權限管理???????????????????????????????????????????????????????????????????????????????????????????????????? (68)
4.2.1 登錄信息 ????????????????????????????????????????????????????????????????????????????????????????????????? (68)
4.2.2 操作權限控制 ??????????????????????????????????????????????????????????????????????????????????????????? (69) 實訓 ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? (70)
項目 5 學生選課 ???????????????????????????????????????????????????????????????????????????????????????????????????????? (72)
任務 5.1 選課填報志愿?????????????????????????????????????????????????????????????????????????????????????????????? (72)
5.1.1 界面設計 ????????????????????????????????????????????????????????????????????????????????????????????????? (72)
5.1.2 實現選課業務邏輯 ?????????????????????????????????????????????????????????????????????????????????????(80)
5.1.3 通過 DataGridView 控件拖動行確定選課志愿順序 ?????????????????????????????????????????????(85) 任務 5.2 查詢報名結果?????????????????????????????????????????????????????????????????????????????????????????????? (89)
5.2.1 界面設計 ????????????????????????????????????????????????????????????????????????????????????????????????? (89)
5.2.2 相關代碼編寫 ??????????????????????????????????????????????????????????????????????????????????????????? (89) 實訓 ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? (92)
項目 6 選課抽簽及抽簽結果查詢???????????????????????????????????????????????????????????????????????????????? (94)
任務 6.1 隨機抽簽產生選課結果 ??????????????????????????????????????????????????????????????????????????????????(94)
6.1.1 設計存儲過程 ??????????????????????????????????????????????????????????????????????????????????????????? (94)
6.1.2 調用存儲過程 ??????????????????????????????????????????????????????????????????????????????????????????? (97) 任務 6.2 按課程查看選課結果 ?????????????????????????????????????????????????????????????????????????????????????(98)
6.2.1 界面設計 ????????????????????????????????????????????????????????????????????????????????????????????????? (99)
6.2.2 相關代碼編寫 ??????????????????????????????????????????????????????????????????????????????????????????? (99) 實訓 ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? (102)
項目 7 統計查詢 ???????????????????????????????????????????????????????????????????????????????????????????????????????(104)
任務 7.1 按班級性別統計學生人數 ????????????????????????????????????????????????????????????????????????????? (104)
7.1.1 界面設計 ??????????????????????????????????????????????????????????????????????????????????????????????? (104)
7.1.2 相關代碼編寫 ????????????????????????????????????????????????????????????????????????????????????????? (105) 任務 7.2 未選課學生統計????????????????????????????????????????????????????????????????????????????????????????? (108)
7.2.1 界面設計 ??????????????????????????????????????????????????????????????????????????????????????????????? (108)
7.2.2 相關代碼編寫 ????????????????????????????????????????????????????????????????????????????????????????? (109) 實訓 ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? (112)
項目 8 RDLC 報表????????????????????????????????????????????????????????????????????????????????????????????????????(113)
8.1 打印來自原始表的數據??????????????????????????????????????????????????????????????????????????????????????? (113)
8.1.1 創建報表 ??????????????????????????????????????????????????????????????????????????????????????????????? (113)
8.1.2 準備“報表預覽”窗體 ????????????????????????????????????????????????????????????????????????????? (127)
8.1.3 調用報表 ??????????????????????????????????????????????????????????????????????????????????????????????? (128)
8.2 打印來自自定義表的數據???????????????????????????????????????????????????????????????????????????????????? (129)
8.2.1 修改數據集,準備報表所需的數據表 ??????????????????????????????????????????????????????????? (129)
8.2.2 創建報表 ??????????????????????????????????????????????????????????????????????????????????????????????? (131)
8.2.3 調用報表 ??????????????????????????????????????????????????????????????????????????????????????????????? (134) 實訓 ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? (136)
項目 9 系統完善 ???????????????????????????????????????????????????????????????????????????????????????????????????????(137)
任務 9.1 設計“關于”窗體?????????????????????????????????????????????????????????????????????????????????????? (137)
9.1.1 設置項目屬性 ????????????????????????????????????????????????????????????????????????????????????????? (137)
9.1.2 設計窗體 ??????????????????????????????????????????????????????????????????????????????????????????????? (138) 任務 9.2 異常???????????????????????????????????????????????????????????????????????????????????????????????????????? (140)
9.2.1 異常的概念 ???????????????????????????????????????????????????????????????????????????????????????????? (140)
9.2.2 異常處理 ??????????????????????????????????????????????????????????????????????????????????????????????? (140) 任務 9.3 單擊 DataGridView 控件的列標題時取消排序 ???????????????????????????????????????????????????? (142)
9.3.1 通過可視化方式設定 DataGridView 控件的所有列不排序 ?????????????????????????????????? (142)
9.3.2 通過編寫通用方法設定 DataGridView 控件的所有列不排序 ??????????????????????????????? (143)
9.3.3 調用方法禁止單擊 DataGridView 控件的列標題時排序 ????????????????????????????????????? (143) 任務 9.4 Singleton 模式???????????????????????????????????????????????????????????????????????????????????????????? (144)
9.4.1 Singleton 模式的概念 ???????????????????????????????????????????????????????????????????????????????? (144)
9.4.2 使用 Singleton 模式防止 MDI 子窗體的多實例化 ????????????????????????????????????????????? (144) 實訓 ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? (146)
項目 10 控件開發 ?????????????????????????????????????????????????????????????????????????????????????????????????????(147)
任務 10.1 用戶控件 ???????????????????????????????????????????????????????????????????????????????????????????????? (147)
10.1.1 開發用戶控件???????????????????????????????????????????????????????????????????????????????????????? (147)
10.1.2 使用用戶控件???????????????????????????????????????????????????????????????????????????????????????? (153)
任務 10.2 復合控件 ???????????????????????????????????????????????????????????????????????????????????????????????? (154)
10.2.1 開發登錄系統的復合控件????????????????????????????????????????????????????????????????????????? (154)
10.2.2 使用復合控件實現系統登錄?????????????????????????????????????????????????????????????????????? (156) 實訓 ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? (159)
項目 11 LINQ 技術 ???????????????????????????????????????????????????????????????????????????????????????????????????(160)
任務 11.1 LINQ TO Object???????????????????????????????????????????????????????????????????????????????????????? (160)
11.1.1 LINQ TO Object 簡介 ?????????????????????????????????????????????????????????????????????????????? (160)
11.1.2 使用 LINQ TO Object ?????????????????????????????????????????????????????????????????????????????? (161) 任務 11.2 LINQ TO DataSet ?????????????????????????????????????????????????????????????????????????????????????? (166)
11.2.1 LINQ TO DataSet 簡介 ????????????????????????????????????????????????????????????????????????????? (166)
11.2.2 使用 LINQ TO DataSet ????????????????????????????????????????????????????????????????????????????? (166) 實訓 ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? (168)
項目 12 使用 ClickOnce 部署項目 ????????????????????????????????????????????????????????????????????????????(169)
任務 12.1 發布前的準備 ?????????????????????????????????????????????????????????????????????????????????????????? (170)
12.1.1 配置 IIS ??????????????????????????????????????????????????????????????????????????????????????????????? (170)
12.1.2 更改項目圖標???????????????????????????????????????????????????????????????????????????????????????? (173) 任務 12.2 發布 ?????????????????????????????????????????????????????????????????????????????????????????????????????? (175)
12.2.1 發布項目?????????????????????????????????????????????????????????????????????????????????????????????? (175)
12.2.2 測試發布項目???????????????????????????????????????????????????????????????????????????????????????? (175) 實訓 ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? (177)
拓展項目 網上購物系統 ????????????????????????????????????????????????????????????????????????????????????????????(178)
任務 T.1 網上購物系統介紹 ????????????????????????????????????????????????????????????????????????????????????? (178) T.1.1 網上購物系統的功能 ???????????????????????????????????????????????????????????????????????????????? (178) T.1.2 為什么通過網上購物系統學習 SQL Server ????????????????????????????????????????????????????? (178)
任務 T.2 運行網上購物系統 ????????????????????????????????????????????????????????????????????????????????????? (179) T.2.1 準備網上購物系統所需數據庫 ???????????????????????????????????????????????????????????????????? (179) T.2.2 運行網上購物系統的步驟 ?????????????????????????????????????????????????????????????????????????? (181) T.2.3 網上購物系統的具體功能介紹 ???????????????????????????????????????????????????????????????????? (184)
任務 T.3 網上購物系統使用的數據庫 eShop ????????????????????????????????????????????????????????????????? (195)
T.3.1 初步認識網上購物系統使用的數據庫 eShop ??????????????????????????????????????????????????? (195)
T.3.2 數據庫中表之間的關系 ????????????????????????????????????????????????????????????????????????????? (198)