accp4.0s2-accp5.0y2轉換課程理論部分教學tp8v1_第1頁
accp4.0s2-accp5.0y2轉換課程理論部分教學tp8v1_第2頁
accp4.0s2-accp5.0y2轉換課程理論部分教學tp8v1_第3頁
accp4.0s2-accp5.0y2轉換課程理論部分教學tp8v1_第4頁
accp4.0s2-accp5.0y2轉換課程理論部分教學tp8v1_第5頁
已閱讀5頁,還剩67頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、使用三層結構開發數據庫應用系統第八章案例展示:MySchoolPro 三層結構最終版演示:HotelManager演示回顧標識一個類可序列化的特性是什么?反射的主要應用是什么?預習檢查1、三層結構劃分為哪三層?2、實體類在三層結構中的主要作用是什么?3、抽象工廠的職責是什么?本章任務完成聯機考試系統三層結構劃分:表示層MySchool業務邏輯層MySchoolBLL數據訪問層MySchoolDAL用三層結構實現不同類型用戶登錄升級我們的聯機考試系統支持多數據庫訪問Access數據庫訪問 SqlServer數據庫訪問 目標使用三層結構開發項目體會到使用三層結構開發的優勢使用抽象工廠設計模式為什么

2、需要三層結構服務員只管接待客人廚師只管烹炒客人要的美食采購員只管按客人需求采購肉,海鮮,蔬菜他們各負其責共同協作為客人提供美食顧客服務員廚師采購員飯店服務員廚師采購員為什么需要三層結構離職、請假其他服務員代替離職、請假離職、請假其他廚師代替其他采購員代替服務員廚師采購員為什么需要三層結構三層結構軟件模型 表示層 業務邏輯層 數據訪問層 軟件系統 飯店 為什么需要三層結構回顧我們S1做的聯機考試系統 為什么需要三層結構:登錄實現部分(LoginForm類)代碼結構我們從三方面對登錄實現部分代碼進行分析1、界面控件數據綁定實現2、邏輯判斷實現3、數據庫訪問實現首先我們看一下界面部分的關鍵代碼 為什

3、么需要三層結構 / 登錄 private void btnLogIn_Click(object sender, EventArgs e) /. if (ValidateInput() / 調用用戶驗證方法 isValidUser = ValidateUser(cboLogInType.Text, txtLogInId.Text, txtLogInPwd.Text, ref message);/ 如果是合法用戶,顯示相應的窗體 /. 界面層實現 為什么需要三層結構 public bool ValidateUser(string loginType, string loginId, string

4、loginPwd, ref string message) int count = 0; / 數據庫查詢的結果 bool result = false; / 返回值,是否找到該用戶 / 查詢是否存在匹配的用戶名和密碼 if (loginType= 管理員) / 判斷管理員用戶 /數據訪問實現代碼. else if (loginType = 學員) /數據訪問實現代碼. return result; 邏輯判斷實現用戶登錄實現方法 為什么需要三層結構 public bool ValidateUser(string loginType, string loginId, string loginPwd

5、, ref string message) /. / 查詢是否存在匹配的用戶名和密碼/ 查詢用sql語句 string sql = string.Format( SELECT COUNT(*) FROM Admin WHERE LogInId=0 AND LogInPwd=1, txtLogInId.Text txtLogInPwd.Text );/./ 查詢用sql語句 string sql = string.Format( SELECT COUNT(*) FROM Student WHERE LogInId=0 AND LogInPwd=1,txtLogInId, txtLogInPwd)

6、; 管理員信息數據訪問 用戶登錄實現方法 通過分析我們得到結論是? 學員信息數據訪問 為什么需要三層結構1、數據庫訪問和用戶類型判斷邏輯放在一起實現2、用戶界面層直接調用數據訪問實現3、整個系統功能放在同一項目中實現結論是:從結論可知,我們開發的兩層結構應用系統有哪些局限性? 為什么需要三層結構我們開發的兩層結構有哪些局限性?難以適應需求變化不易維護安全性差為什么需要三層結構兩層結構:三層結構:數據庫用戶界面業務邏輯數據訪問兩層結構軟件模型數據庫數據訪問業務邏輯用戶界面三層結構軟件模型當數據庫或用戶界面發生改變時需要重新開發整個系統當數據庫或用戶界面發生改變時不需要重新開發,只做簡單調整即可什

7、么是三層結構表示層 業務邏輯層 數據訪問層 數 據 庫為用戶提供交互操作界面 負責關鍵業務的處理和數據傳遞 實現數據庫訪問 服務員 廚師 采購員 什么是三層結構表示層: 為用戶提供一種交互式操作界面 什么是三層結構業務邏輯層是表示層與數據訪問層之間的橋梁,負責數據處理、傳遞。 用戶請求數據用戶請求數據/switch (type) case 管理員: loginPwd = GetAdminLoginPwd(loginID); break; case 學員: loginPwd = GetStudentLoginPwd(loginID); break; / 什么是三層結構數據訪問層數 據 庫用戶請求

8、數據 SQL命令實現對數據的保存和讀取操作 /.conn.Open();SqlDataReader objReader = mand.ExecuteReader();if (objReader.Read() studentlist.Add(objReaderLoginPwd); studentlist.Add(objReaderUserStateId); objReader.Dispose();conn.Close();/.什么是三層結構三層之間依賴關系表示層業務邏輯層數據訪問層什么是三層結構三層之間的數據傳遞方向業務邏輯層數據訪問層表示層客戶請求客戶請求響應數據響應數據如何搭建三層結構如何搭

9、建表示層、業務邏輯層、數據訪問層?如何實現各層之間的相互依賴?要掌握這一切,我們將整個實現過程分為以下步驟 搭建三層結構步驟1、搭建表示層(創建一個Windows應用程序)2、搭建業務邏輯層(類庫)3、搭建數據訪問層(類庫)4、添加各層之間的相互依賴 現在我們打開VS IDE環境逐層搭建三層結構 搭建表示層2、在彈出的“新建項目“窗口中,選擇Windows應用程序選擇語言種類項目類型創建解決方案輸入項目名稱MySchool選擇項目生成路徑1、文件 新建 項目 :創建一個新項目搭建業務邏輯層2、在彈出的“新建項目”窗口中,選擇類庫選擇語言種類項目類型項目名稱:MySchoolBLL選擇項目路徑選

10、擇“添入解決方案”1、文件 新建 項目 :創建一個新項目搭建數據訪問層2、在彈出的“新建項目“窗口中,選擇類庫 選擇語言種類項目類型項目名稱:MySchoolDAL選擇項目路徑選擇“添入解決方案”如何將三層中各自獨立的項目產生依賴1、文件 新建 項目 :創建一個新項目 添加各層之間的相互依賴:添加表示層對業務邏輯層依賴1、右鍵單擊“引用”選擇“添加引用” 2、選擇“項目”,選中“邏輯層”單擊 確定 添加業務邏輯層對數據訪問層的依賴與此類似完成對邏輯層的引用為什么需要實體類回顧我們第二章做的“學員信息列表”數 據 庫它不具備OO的優點實現數據檢索比較繁瑣、易出錯它使數據結構暴露在業務邏輯層和表示

11、層為了消除以上局限性我們需要使用實體類DataSet解析實體對象構建實體對象返回行集為什么需要實體類處理窗體表示層表示層后臺代碼業務邏輯層數據訪問層數據庫用戶請求傳遞參數展示數據返回請求數據操作調用存儲過程返回解析實體對象構建實體對象或集合為什么需要實體類從OOP思想考慮它是完全受控制的對象 它具有面向對象的基本特征它可以自定義行為它消除了關系數據和對象之間的差異 它為我們在關系數據庫和對象之間架起一座橋梁 什么是實體類管理員數據表簡單地說就是描述一個業務實體的類,例如:管理員信息 管理員信息對應的實體類三層結構中的實體類:表示層如何使用實體類 12三層結構中的實體類:業務邏輯層如何使用實體類

12、 業務邏輯層 實體對象實體對象12表示層 數據訪問層 三層結構中的實體類:數據訪問層如何使用實體類 數 據 庫12完成本章任務的步驟1、實現業務實體層1、新增項目MySchoolModels2、添加其它項目對實體項目的引用3、添加數據表對應的實體類4、編寫實體類2、設計用戶界面 3、實現數據訪問層4、實現業務邏輯層5、實現表示層數據綁定實現業務實體層1、在解決方案“MySchoolPro” 上單擊右鍵選擇“添加” 新建項目 選擇語言種類項目類型輸入項目名稱MySchoolModels選擇項目生成路徑實現業務實體層2、在 “MySchoolModels”項目上單擊右鍵選擇“添加” 新建項 3、依

13、次添加“Admin.cs、Class.cs、Grade.cs” 類名稱實現業務實體層4、編寫實體類 它是業務的基礎、數據傳遞的載體,它與其他項目的依賴關系是什么? 實體類實現業務實體層5、回顧第一章“三層之間相互依賴”的實現 6、實現三層對業務實體的依賴 表示層業務實體業務邏輯數據訪問層設計用戶界面 3、按需求添加所需窗體,并編輯窗體 1、在“MySchool”項目上單擊右鍵選擇“添加” 新建項 2、在“添加新項“對話框中選擇”Windows 窗體” 實現數據訪問層 2、在“添加新項“對話框中選擇”類” 類名稱如何實現高效的數據訪問呢?我們需要掌握using語句的使用 新增類有:AdminSe

14、rvice.csStudentService.cs 1、在“MySchoolDAL”項目上單擊右鍵選擇“添加” 新建項 什么是using語句在C#中using語句:用于定義一個范圍,在此范圍末尾將釋放對象 public void DeleteStudentByLoginID (string loginID) int studentID = GetStudentIDByLoginID(loginID); using (SqlConnection conn = new SqlConnection(connString) mand mand = new mand(dboOwner + .usp_De

15、leteStudent, conn); mand.CommandType = CommandType.StoredProcedure; mand.Parameters.Add(StudentID, SqlDbType.Int).Value = studentID; conn.Open(); mand.ExecuteNonQuery(); 自動釋放數據庫連接資源實現數據訪問層:用戶登錄 1、在數據訪問實現類中引用業務實體項目命名空間2、實例化SqlConnection對象,實現數據庫連接3、實例化 mand對象,執行SQL命令4、實例化SqlDataReader對象,讀取數據5、使用實體類傳遞信

16、息6、回顧List的使用 演示示例:用戶登錄 文件名稱:StudentService.csAdminService.cs實現業務邏輯層 2、在“添加新項“對話框中 選擇”類” 類名稱新增類有:LoginManager.cs如何實現業務邏輯功能?1、在“MySchoolBLL”項目上單擊右鍵選擇“添加” 新建項 實現業務邏輯層:用戶登錄 1、回顧第二章的實現2、在業務邏輯處理類中引用數據訪問層、業務實體層命名空間3、實例化數據訪問對象4、調用數據訪問功能5、實現業務邏輯處理功能 演示示例:用戶登錄 文件名稱:LoginManager.cs 實現表示層數據綁定:用戶登錄 1、在窗體后臺實現類中引用

17、業務邏輯層、業務實體層命名空間2、實例化業務邏輯處理對象和業務實體對象3、數據綁定4、調用業務邏輯層功能 演示示例:用戶登錄 窗體名稱:LoginForm.cs 模式起源:同一問題的兩種不同解決方案有什么相似之處 軟件設計模式設計模式如同此理,它是經驗的傳承 。地上本沒有路,走得人多了也就成了路。軟件設計模式人是一個經驗性動物 1、每一個模式描述了一個在我們周圍不斷重復發生的問題,以及該問題的解決方案下面我們回顧一下簡單工廠設計模式 2、設計模式描述了軟件設計過程中某一類常見問題的一般性的解決方案3、面向對象設計模式是對在特定場景下,解決一般 設計問題中類與相互通信對象的描述為什么需要抽象工廠

18、設計模式父類產品子類產品A 子類產品B 子類產品C 工廠客戶:簡單工廠設計模式原理結構 什么是抽象工廠設計模式什么是抽象工廠設計模式抽象工廠 實體工廠2實體工廠1抽象產品A抽象產品B實體產品B1實體產品B2實體產品A1實體產品A2客戶 :抽象工廠設計模式原理結構 什么是抽象工廠設計模式1、提供一系列相互依賴對象的創建工作2、封裝對象常規的創建方法(new)3、提供統一調用數據訪問方法的方式4、避免調用數據訪問方法和具體對象創建工作的緊耦合什么是抽象工廠設計模型提供一個創建一系列相關或相互依賴對象的接口,無需指定它們具體的類 客戶請求 抽象工廠抽象產品如何用抽象工廠設計模式構建我們的數據訪問層?

19、 如何使用抽象工廠設計模式1、用抽象工廠生產抽象產品2、用實體工廠生產實體產品3、用抽象產品提供實體產品訪問接口4、用實體產品實現自己的功能:抽象工廠設計模式中各個象的主要功能、職責應用示例:在MySchoolPro數據訪問層使用抽象工廠設計模式 SQLServer實體工廠學員抽象產品抽象工廠Access實體工廠管理員抽象產品Access學員實體產品SQL Server學員實體產品客戶Access管理員實體產品SQL Server管理員實體產品完成本章任務的步驟搭建數據訪問層基本架構新增抽象工廠項目新增抽象產品項目實現項目間的依賴實現數據訪問接口實現數據訪問對象創建功能業務邏輯層調用數據訪問層

20、方法實體工廠實體產品抽象產品數據訪問層 抽象工廠在解決方案“MySchoolPro” 上單擊右鍵選擇“添加” 新建項目新增抽象工廠項目選擇語言種類項目類型輸入項目名稱MySchoolDALFactory選擇項目生成路徑在解決方案“MySchoolPro” 上單擊右鍵選擇“添加” 新建項目新增抽象產品項目選擇語言種類項目類型輸入項目名稱MySchoolIDAL選擇項目生成路徑實現項目之間的依賴MySchoolMySchoolBLLMySchoolModelsMySchoolIDALMySchoolDALFactory抽象工廠實體工廠抽象產品實體產品箭頭方向從引用項目指向被引用項目MySchool

21、DAL 實現數據訪問接口接口名稱根據信息類別不同,分別添加不同信息的訪問接口 在“MySchoolIDAL”項目上單擊右鍵選擇“添加” 新建項實現數據訪問接口:使用接口提供數據訪問 如何實現數據訪問? 1、將相關信息的數據訪問放在同一個接口中2、根據需求定義接口中的數據訪問方法 演示示例:用戶登錄數據訪問接口定義接口IStudentService.csIAdminService.cs實現接口實現數據訪問接口:實現用戶登錄數據訪問接口如何封裝數據訪問對象的創建? 1、將接口的實現分:Sql Server 和Access兩種2、將不同的數據庫訪問實現放在不同的命名空間下 演示示例:實現用戶登錄數據

22、訪問文件名稱:StudentService.csAdminService.cs實現數據訪問對象創建功能類名稱新增抽象工廠類:AbstracterDALFactory.cs在“MySchoolDALFactory”項目上單擊右鍵選擇“添加” 新建項編碼實現實現數據訪問對象創建功能:在抽象工廠類中用抽象方法提供數據訪問對象的創建/. public abstract IStudentService CreateStudentService(); public abstract IAdminService CreateAdminService();/.抽象工廠提供抽象產品如何選擇實體工廠? /實體工廠

23、的選擇應該用反射實現, 便于學員理解這里用開關語句實現 public static AbstractDALFactory ChooseFactory() string dbType = ConfigurationManager.AppSettings“DBType”.ToString(); AbstractDALFactory factory = null; switch (dbType) case Sql: factory = new SqlDALFactory(); break; case Access: factory = new AccessDALFactory(); break; return factory; 實現數據訪問對象創建功能如何通過實體工廠實現數據訪問對象的創建?實現數據訪問對象創建功能類名稱新增實體工廠類:SqlDALFactory.csAcces

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論