《數據庫課程設計》任務與指導手冊2013(V2.0)58146_第1頁
《數據庫課程設計》任務與指導手冊2013(V2.0)58146_第2頁
《數據庫課程設計》任務與指導手冊2013(V2.0)58146_第3頁
《數據庫課程設計》任務與指導手冊2013(V2.0)58146_第4頁
《數據庫課程設計》任務與指導手冊2013(V2.0)58146_第5頁
已閱讀5頁,還剩34頁未讀 繼續免費閱讀

付費下載

下載本文檔

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

文檔簡介

1、數據庫課程設計 任務書數據庫課程設計任務書1. 任務與要求(1) 先修課程:數據庫原理及應用,面向對象程序設計C#、ASP.NET或JAVA等。(2) 課程設計題目:圖書管理系統若自選題目,則需在課程設計第一天上報題目名稱,以及開發工具和數據庫。(3) 時間:2周,在數據庫原理及應用課程結束后進行,建議提前58周開始準備。(4) 開發工具和環境開發工具:VC、VB、C#、ASP.Net、Java、Delphi等任選。數 據 庫: SQL Server、Oracle、DB2、Sybase等任選。應用程序:Windows界面程序(C/S),或Web界面程序(B/S)。(5) 設計報告正文字數不少于

2、5千字,報告附錄應包括主要源代碼。要求層次清楚、整潔規范,不得相互抄襲,凡正文內容有整段相同者一律以作弊論處。明確課程設計的目的和重要性,認真領會課程設計的題目,讀懂課程設計指導書的要求,學會設計的基本方法與步驟,積極認真地做好準備工作。課程設計中,學會應用理論知識,收集、歸納相關資料,以及解決實際問題的方法。嚴格要求自己,自信但不固執,獨立完成課程設計任務,善于接受教師的指導和聽取同學的意見,有意識地樹立嚴謹的科學作風,要獨立思考,刻苦鉆研,勇于創新,按時完成課程設計任務。2. 考勤、考核與成績(1) 嚴格考勤制度,每次上機都要記錄,學生有事必須請假。考勤記錄影響最終成績。(2) 因實驗室環

3、境不能滿足課題要求的,可以申請在實驗室外進行設計工作。(3) 在課程設計的最后一次上機之前,必須向老師申請考核,考核時要求演示程序并回答老師提出的問題。(4) 最終成績以考核成績為主,考核成績占80%以上。(5) 課程設計完成后的一周內提交設計報告的Word電子文檔和打印件,以及程序源代碼文件(含解決方案文件和工程文件)、數據庫腳本文件和數據庫文件。3. 設計報告(1)要求采用統一格式的報告封面。(2)目錄,要求目錄層次結構清晰、合理。(3)正文,要求包括概況、系統分析與設計、系統實現、總結、參考文獻等方面內容。系統分析與設計可包括:系統功能分析、概念模型、數據表結構、三層架構、類的設計等。系

4、統實現可包括:數據庫實現(SQL腳本)、程序界面、界面操作、關鍵技術及實現代碼、調試中遇到的問題等。總結可包括:結論(已完成功能、涉及的主要技術)、下一步工作安排、收獲與體會等。(4)附錄,要求包括數據庫對象(含存儲過程等)的SQL腳本代碼,以及主要源程序代碼。2/39圖書管理系統設計指導書2013.8.1 9.11 LSH圖書管理系統設計指導書1. 設計題目圖書管理系統2. 設計目的通過對圖書管理系統的系統分析、系統設計、編碼和調試等工作的實踐,熟悉管理信息系統的開發過程、設計方法及相關編程技術,熟練掌握數據庫設計的基本理論及方法。3. 設計任務要求完成一個具有一定實用價值的圖書管理系統,主

5、要任務包括: 在Microsoft SQL Server 2000/2005/2008環境下建立圖書管理系統所使用的數據庫,利用企業管理器或查詢分析器建立各種數據庫對象,包括:數據表、視圖、約束、存儲過程和觸發器等; 掌握ADO.NET編程技術,對MS SQL Server數據庫進行連接和操縱; 掌握使用C#語言開發一個數據庫應用系統的基本方法和步驟,熟悉一些基礎功能的實現方法,如:數據維護(插刪改等操作),數據查詢、瀏覽和Excel導出,統計與報表,用戶登錄和權限管理等。 了解C/S或B/S應用程序的多層體系結構及三層架構方案設計思想,了解迭代式開發,熟悉面向對象設計方法及其分析與設計過程,

6、了解UML文檔及其開發過程中的作用。指導書說明:(1)開發環境與目標:微軟 C#、SQL Server,基于C/S結構的Windows應用程序。(2)僅給出了部分功能的設計與實現,以說明面向對象分析與設計的一般方法以及關鍵編程技術,其它功能部分需要自己完成。(3)為減少篇幅和降低閱讀門檻,沒有追求使用標準的UML設計文檔和術語。4. 設計準備4.1 系統準備操作系統:Windows xp/7/8數據庫系統:SQL Server 2005/2008/2012客戶端開發工具:Visual Studio 2005/2008/2010/20124.2 知識準備熟悉SQL Server 2005/200

7、8/2012的使用;熟悉C#、ASP.NET語言及其數據庫編程技術。了解:迭代式開發過程、UML設計文檔、設計模式;以及圖書館相關業務知識4.3 迭代式開發迭代式開發(統一過程UP) 系統開發被組織成一系列固定的短期(一段為2-6周)小項目,稱為迭代;每次迭代都產生可執行的系統。每次迭代都包括計劃、需求、分析、設計、編碼、測試等過程以及文檔編寫工作;第一次迭代考慮系統的核心功能,隨后的迭代逐步擴展系統功能;每次迭代的成果(含需求、分析、設計、代碼和文檔等)均為下一次迭代的工作基礎,直至滿足最終需求。這種開發過程是基于面向對象方法的。5. 系統分析系統邊界與約定(1) 系統限定在實體書庫的借閱和

8、管理等業務范圍;(2) 不考慮圖書館的電子書庫、訂購、情報、人事管理等業務;(3) 不考慮圖書館的跨區分布情況,如長江大學圖書館包括多個校區圖書館;(4) 不考慮圖書的通借通還,如長江大學讀者可在湖北省高校任何一家圖書館借還圖書;(5) 不考慮珍藏圖書的借閱業務;(6) 暫不考慮與校園一卡通系統的外部接口。一卡通系統為外部系統(外部參與者),卡內記錄有身份及相關信息,該系統負責身份驗證工作。(7) 期刊庫和論文庫的借閱和管理等業務可作為二期項目目標,視本系統使用情況而定。需求概要(1) 圖書管理系統的基本功能需求包括:讀者管理、圖書管理、借閱管理、用戶登錄與用戶管理等;其它功能需求包括:讀者查

9、詢與預約借書*、統計與報表*、數據備份*、書架管理*、期刊管理*、期刊借閱*、論文管理*、論文借閱*等。(* 表示留待以后的迭代周期完成,下同)(2) 相關領域概念:借書證(讀者)、圖書、借還書記錄。(3) 系統外部參與者:讀者、借書證管理員、圖書管理員、借閱管理員、系統管理員。將圖書館工作人員劃分為借書證管理、圖書管理、借閱管理等三類人員;系統管理員負責數據庫和軟件系統管理,包括各類管理員用戶的創建和授權、數據庫備份等工作。系統分析目標找出系統用例,書寫用例文檔,建立領域模型(概念模型)。用例 use case,或譯為使用案例、用況。是指為了完成一個領域目標或任務,提供一個或多個場景來說明其

10、在系統內部與外部(人員或外部系統等)之間的交互過程。如辦理借書證、借書、還書、用戶登錄等均為用例;而借閱管理不是用例,因為它包括多個任務;讀者可否借書也不是用例,因為它不是一個領域任務或業務目標。參見“參考資料01 用例.doc”。用例是一個事件流,一個事件對應一個系統操作;如借書用例中的“根據借書證號查詢讀者信息”、“根據借書證號查詢超期未歸還圖書”、“判斷讀者可否借書”、“判斷圖書是否在館”、“確認借書”等均為事件或系統操作。找出系統用例后,對每個用例的交互操作過程進行描述(即書寫用例),通過用例發現領域概念及其屬性,并建立領域模型(即概念模型)。用例與領域模型的建立過程一般是交互進行的,

11、并相互參考、印證和補充完善。通過用例發現事件或系統操作,可進行下一步的設計和實現工作,是系統設計主要內容。在面向對象方法的開發過程中,分析與設計沒有明顯的界限,只是側重面不同而已。5.1 讀者管理讀者管理即借書證管理,包括的業務(即用例)有:辦理借書證、借書證變更、借書證掛失*、解除掛失*、補辦借書證*、注銷借書證*、批量辦理新生借書證*等。(*表示留待迭代2及以后完成,下同。完成此類用例文檔并實現其功能者,教師可酌情加分)借書證(讀者)可分為2種類別:教師、學生。借書證(教師)=借書證號、姓名、性別、所在單位、辦證日期、照片等。借書證(學生)=借書證號、學號、姓名、性別、專業、班級、辦證日期

12、、有效期、照片等。其中,有效期由學生類別決定,本科生4年、專科生3年、碩士生3年等。相關業務規則:(1)讀者憑借書證借書;(2)教師最多借書12本,借書期限最長為60天,可續借2次;學生最多借書8本,借書期限最長為30天,可續借1次;(3)處于掛失、注銷狀態的讀者不能借書;(4)未歸還圖書者不能注銷其借書證。分析:增加讀者類別概念,統一并簡化讀者信息,采用教師屬性項,而學生可在所在單位填寫班級,學生特有讀者信息可留待以后的開發周期處理。可得到2個概念:讀者、讀者類別。讀者=借書證號、姓名、性別、所在單位、讀者類別、辦證日期、照片等。(另可加:電話、郵箱等)讀者類別=讀者類別號、類別名稱、可借書

13、本數、可借書天數、可續借次數。思考:學生借書證的有效期如何處理?1. 辦理借書證用例名稱:辦理借書證迭 代:1 (說明:第1次迭代期間的用例文檔)參 與 者:借書證管理員(或系統管理員)、讀者綜 述:用例起始于讀者來到借書證管理辦公室,管理員給讀者辦理新借書證。觸 發 器: (說明該用例的觸發條件)前置條件:登錄用戶具備讀者管理權限。過程描述: (標題名或為:基本流程、基本事件流、主要成功場景等)1. 管理員輸入:讀者類別、所在單位、姓名。2. 點擊“查詢”。3. 系統查詢讀者信息,并顯示查詢結果。4. 管理員判斷該讀者是否已辦理借書證,若是,則可取消辦證過程。(人工操作)5. 管理員輸入讀者

14、信息:讀者類別、姓名、性別、所在單位、辦證日期、照片等。(類別、姓名、單位等可預置為過程1中輸入值,辦證日期可預置為系統日期)6. 確認辦證。后置條件:創建新的讀者對象,并具有新的借書證號;系統記錄讀者信息。業務規則:借書證號應具有唯一性。待解決問題: 1. 打印借書證;注 釋:未考慮校園一卡通做為借書證使用的情況作者與日期: 2013-7-24日,LSH,版本號1.0思考:讀者分成教師和學生2個概念時,用例有何不同?2. 變更借書證變更借書證類別、有效期、所在單位等,以及其它信息;借書證號不可更改。用例(略 要求自己完成)3. 掛失借書證*用例名稱:掛失借書證參 與 者:借書證管理員、讀者綜

15、 述:用例起始于讀者來到借書證管理辦公室,管理員給讀者辦理借書證掛失。前置條件:登錄用戶具備讀者管理權限,且讀者已經存在過程描述:1. 輸入借書證號,或輸入讀者的類別、單位、姓名。2. 點擊“查詢”。3. 系統查詢并顯示讀者信息。4. 找到其借書證,且讀者狀態為有效。5. 確認掛失。后置條件:修改讀者狀態為掛失;系統記錄讀者信息。業務規則:借書證掛失后禁止讀者借書。分析:修改讀者概念,增加屬性“借書證狀態”;并修改辦理借書證用例。4. 解除掛失*用例名稱:解除掛失參 與 者:借書證管理員、讀者綜 述:用例起始于讀者來到借書證管理辦公室,管理員給讀者辦理解除借書證掛失。前置條件:登錄用戶具備讀者

16、管理權限,且讀者已經存在過程描述:1. 輸入借書證號,或輸入讀者的類別、單位、姓名。2. 點擊“查詢”。3. 系統查詢并顯示讀者信息。4. 找到其借書證,且讀者狀態為掛失。5. 確認解除掛失。后置條件:修改讀者狀態為有效;系統記錄讀者信息。5. 補辦借書證*補辦借書證,辦理新借書證(新借書證號,其它信息不變),并將原借書證的借閱記錄轉移到新證上,原借書證注銷。用例(略)6. 注銷借書證*用例(略)7. 批量辦理新生借書證*從教務管理系統導入新生信息,系統生成借書證信息,管理員核實后辦理借書證。用例(略,思考:聯機在線導入,離線導入?)8. 讀者類型管理從系統的功能完整性來看,還存在一個隱性的功

17、能需求:讀者類型管理,即讀者類型信息的插、刪、改、查等數據維護操作。用例(略 要求自己完成)5.2 圖書管理包括業務(用例):圖書編目*、新書入庫、圖書信息維護、圖書變賣與銷毀處理*等。圖書信息=書號、書名、作者、出版社、出版日期、ISBN、分類號、語言、頁數、單價、內容簡介、圖書封面、圖書狀態等;(圖書狀態包括:在館、借出、遺失、變賣、銷毀)1. 圖書編目*新書入庫前,圖書管理員對圖書進行圖書編目工作,即根據該館的現有圖書分類目錄信息編寫新書的分類號,需要時根據圖書分類法增加新的圖書分類條目。圖書信息= 、分類號、圖書分類目錄=分類號、分類名。圖書分類信息主要用于統計,如中文圖書分類條目:-

18、分類號分類名TP自動化技術、計算機技術TP3計算技術、計算機技術TP31計算機軟件TP311程序設計、軟件工程TP312程序語言、算法語言TP311.13數據庫理論與系統TP311.131數據庫理論新書分類號,如圖書“C#高級編程(第7版)”可編為:TP312/3033.2圖書分類概念暫不考慮, 可留待以后開發周期處理。用例名稱:圖書編目(略)2. 新書入庫用例名稱:新書入庫參 與 者:圖書管理員前置條件:登錄用戶具備圖書管理身份和權限過程描述:1. 輸入或系統生成起始書號(BkNO)。2. 輸入:圖書信息(書名、作者、出版社、出版日期、語言、頁數、單價、ISBN、分類號、內容簡介等)、入庫數

19、量(N,N>=1)、入館日期。3. 確認圖書入庫。4. 圖書館工作人員對圖書進行貼書簽(分類號)、印書號(或條形碼)、蓋圖書館印章。5. 圖書上架。后置條件:創建N個圖書對象,書號分別為BkNO、BkNO+1、BkNO+N-1,這N本圖書的狀態均修改為在館;系統記錄圖書信息。注 釋:BkNO+N可作為下一次新書入庫的起始書號。思考:圖書信息劃分為2個概念是否更為合理?館藏圖書目錄=書名、作者、出版社、出版日期、ISBN、分類號、語言、頁數、單價、內容簡介、圖書封面、入庫數量、入館日期圖書=書號、分類號、圖書狀態3. 圖書信息維護圖書信息的查、刪、改等信息維護操作。用例名稱:圖書信息維護(

20、略 自己完成,提示:先查找,再刪改)4. 在館圖書變賣與銷毀處理*長期沒有借閱記錄且失去保存價值的圖書可以進行變賣或銷毀處理。用例名稱:在館圖書銷毀和變賣處理(略)5.3 借閱管理包括業務用例:借書、續借、還書等。還書過程涉及超期罰款、遺失圖書罰款等業務規則。罰款規則:(1)超期罰款規則 應罰款金額=超期天數*罰款率,罰款率=0.05元/天,罰款率可能隨時間或讀者類別而變化;實際罰款金額<=應罰款金額,根據實際情況可以進行減免。(2)遺失罰款規則 遺失圖書應罰款金額=3*圖書單價;實際罰款金額在(1*圖書單價,3*圖書單價)之間。(3)遺失罰款規則優先于超期罰款規則。借書記錄=借書證號、

21、書號、借書操作員、借書日期、應還日期續借記錄=借書證號、書號、續借操作員、續借日期、應還日期,續借次數還書記錄=借書證號、書號、還書操作員、還書日期、應還日期,超期天數、應罰款金額,實際罰款金額分析:借書記錄、續借記錄、還書記錄等信息可合并為借閱記錄,續借可舍去部分信息。借閱歷史記錄應該長期保存在數據庫中,以便于統計分析,另外,讀者對一本書可能多次借閱,故借閱信息應該增加一個標識項:借書順序號。借閱信息=借書順序號、借書證號、書號、借書操作員、借書日期、應還日期,續借次數、還書操作員、還書日期,超期天數、應罰款金額,實際罰款金額1. 借書用例名稱:借書參 與 者:借閱管理員、讀者綜 述:用例起

22、始于讀者帶著圖書來到圖書借閱大廳,管理員給讀者辦理借書手續。前置條件:登錄用戶具備借閱管理權限。過程描述:(1) 管理員輸入借書證號,點擊“查詢讀者”。(2) 系統查詢讀者信息、未歸還圖書信息(含超期),并進行顯示。(3) 系統判斷讀者可否借書(借書證狀態為有效,已借書數量小于可借書數量,不存在超期未歸還圖書)。若不可借書,則禁止借書。(4) 管理員輸入待借圖書的書號,點擊“查詢圖書”。(5) 系統查詢,并顯示圖書信息。(6) 系統判斷圖書是否在館,若不在館,則禁止借書。(7) 管理員點擊“借書”。后置條件:創建借閱記錄對象(借書順序號由系統自動產生,借書證號和書號為上述輸入值,借書操作員=登

23、錄用戶,借書日期=系統日期,應還日期=系統日期+可借書天數,續借次數=0,還書日期=NULL,還書操作員=NULL),并標記為未歸還;修改讀者對象的已借書數量+1;修改圖書狀態為借出;系統記錄借閱對象、讀者對象、圖書對象。業務規則:(1)借書證狀態為掛失、注銷者不能借書;(2)借書數量不能超過可借書數量;(3)有超期未歸還圖書者不能借書。注 釋:未歸還圖書狀態可采用還書日期為空(NULL)來標記,或另加屬性表示是否還書。修改讀者信息:增加“已借書數量”;修改用例辦理借書證:后置條件中,已借書數量=0。練習:修改用例以滿足讀者攜帶多本圖書進行借書的要求。2. 續借用例名稱:續借參 與 者:借閱管

24、理員、讀者前置條件:登錄用戶具備借閱管理權限、圖書狀態為借出過程描述:(1) 輸入待續借圖書書號。(2) 系統查詢并獲取圖書對象、未歸還狀態的借閱記錄對象、及其讀者對象,并進行顯示。(3) 系統判斷可否續借(續借次數<可續借次數, 讀者狀態為有效)。(4) 點擊“續借”。后置條件:修改借閱記錄對象(續借次數+1,應還日期+=可借書天數),圖書狀態為借出,并保存到數據庫中。業務規則:(1)借書證狀態為掛失、注銷者不能續借;(2)續借次數不能超過可續借次數。注 釋:續借前后圖書狀態應為借出3. 還書還書用例需要處理超期罰款、遺失圖書罰款處理2種情況。用例名稱:歸還圖書(略 要求自己完成,完成

25、罰款處理者,教師可酌情加分)5.4 用戶登錄與用戶管理包括用例:用戶登錄、密碼修改、用戶管理*,為本系統的基礎和主要功能。用戶包括2類:讀者、管理員。其中,管理員用戶權限是4種角色的組合:借書證管理、圖書管理、借閱管理、系統管理;系統管理員負責所有管理員用戶及其權限的管理,借書證管理員負責讀者管理(即借書證管理)。管理員是讀者,但讀者不一定是管理員;讀者與管理員間存在(1對0.1)聯系。讀者信息+=密碼。管理員信息=用戶號、用戶名、密碼、管理角色管理角色設計:可采用4位二進制,借書證管理(0001)2=1、圖書管理(0010)2=2、借閱管理(0100)2=4、系統管理(1000)2=8。如表

26、示圖書管理和借閱管理權限:2+4=6;判斷7是否具備圖書管理權限:7位與2,即(0111)2位與(0010)2=(0010)2,表示有此權限。分析:將管理員信息合并到讀者中,可簡化概念,此時,非管理員的管理角色(0000)2=0。好處:簡化用戶登錄用例;壞處:概念不夠清晰,給用戶管理帶來不便。第1個迭代周期采用簡化概念設計。另外也可用4個邏輯數據項分別表示4個管理角色。讀者信息+=密碼、管理角色。需修改用例辦理借書證(自己完成)。1. 用戶登錄用例名稱:用戶登錄參 與 者:讀者或管理員前置條件:無過程描述:1. 輸入用戶號(即借書證號)、密碼;密碼采用掩碼“*”號顯示。2. 點擊“登錄”。3.

27、 系統根據借書證號獲取讀者對象。3a. 未獲取讀者對象時,顯示無此用戶,轉入1;3b. 密碼未匹配時,顯示密碼錯誤,并清空密碼,轉入1;4. 進入系統主程序界面。后置條件:根據登錄用戶權限顯示或隱藏相應的系統功能(菜單等)。待解決問題:1. 掛失或注銷借書證者不能登錄。注 釋:該登錄用戶(讀者)對象應為全局可見系統功能與用戶角色之間的關系參見“表1 系統功能與用戶角色關系表”。2. 密碼修改用例名稱:修改密碼參 與 者:用戶綜 述:用戶登錄后修改自己的登錄密碼。.(略)3. 用戶管理*用例名稱:用戶管理參 與 者:系統管理員、圖書館工作人員綜 述:系統管理員對圖書館工作人員進行權限管理。前置條

28、件:登錄用戶為系統管理員,圖書館工作人員需先辦理借書證過程描述:1. 輸入借書證號,或輸入讀者的類別、單位、姓名。2. 點擊“查詢”。3. 系統查詢,并顯示讀者信息。4. 找到借書證后,設置該讀者的管理角色。5. 確認完成。后置條件:修改讀者的管理員角色,系統記錄讀者信息。注 釋: 管理角色有4種:借書證管理、圖書管理、借閱管理、系統管理5.5 讀者查詢與預約借書*讀者(非管理員用戶)的功能需求,包括用例:未歸還圖書查詢與續借*(含超期、即將到期查詢操作)、預約借書*(含在館圖書查詢操作)等。該類讀者所使用的功能最好是采用web程序實現,Web程序功能可包括:讀者登錄、密碼修改、未歸還圖書查詢

29、與續借*、預約借書*等。用例名稱:未歸還圖書查詢與續借(略,思考:與續借用例有不同嗎?)用例名稱:預約借書(略,思考:對借書用例有何影響?)5.6 統計與報表*包括:館藏圖書統計、借閱情況統計、借閱時段統計等。館藏圖書統計可按圖書類別、入館時間統計圖書數量、金額等,可得圖書分布情況;借閱情況統計可按單位(含專業、年級)、圖書類別、借閱時間(年、學期、月份)等統計借閱次數和天數,統計結果可作為訂購新書的參考依據;借閱時段統計按工作日(星期一、二、)和時段(8:00-8:30、8:30-9:00、)統計借還書次數,得借閱工作量,并可依此進行人員安排。用例(略)5.7 數據備份*用戶備份是對SQL

30、Server數據庫進行備份,由系統管理員操作。5.8 系統功能與用戶角色表1 系統功能與用戶角色關系表序號系統功能借書證管理圖書管理借閱管理系統管理讀者1讀者管理()2圖書管理3借閱管理4用戶登錄5密碼修改6用戶管理7讀者預約8統計與報表9數據備份105.9 領域模型領域概念小結讀者=讀者號(借書證號)、姓名、性別、所在單位、電話、郵箱地址、辦證日期、照片、借書證狀態、已借書數量、密碼、管理角色。(借書證狀態:有效、掛失、注銷)讀者類別=讀者類別號、讀者類別名稱、可借書數量、可借書天數、可續借次數,罰款率,證件有效期。圖書=書號、書名、作者、出版社、出版日期、ISBN、分類號、語言、頁數、單價

31、、內容簡介、圖書封面、圖書狀態。(圖書狀態包括:在館、借出、遺失、銷毀、賣出)借閱信息=借書順序號、讀者號、書號、借書操作員、借書日期、應還日期、續借次數、還書操作員、還書日期,超期天數、應罰款金額、實際罰款金額。領域模型圖1 圖書管理系統概念模型(V1)重要提示:在領域模型建立后、以及數據庫設計完成后,均應檢查所有的用例文檔(檢查重點:事件流、前置條件和后置條件),檢查兩者的一致性,發現缺漏點及矛盾之處,并進行修正。6.系統設計與實現6.1 數據庫設計與實現1. 讀者類別表(TB_ReaderType)序號字段名數據類型說明1rdTypeSmallInt讀者類別【主鍵】2rdTypeName

32、Nvarchar(20)讀者類別名稱【唯一、非空】3CanLendQtyInt可借書數量4CanLendDayInt可借書天數5CanContinueTimesInt可續借的次數6PunishRateFloat罰款率(元/天)7DateValidSmallInt證書有效期(年)【非空,0表示永久有效】2. 讀者信息表(TB_Reader)序號字段名數據類型說明1rdIDInt讀者編號/借書證號【主鍵】2rdNamenvarchar(20)讀者姓名3rdSexnchar(1)性別,男/女4rdTypeSmallInt讀者類別【外鍵TB_ReaderType】【非空】5rdDeptnvarchar

33、 (20)單位代碼/單位名稱6rdPhonenvarchar(25)電話號碼7rdEmailnvarchar(25)電子郵箱8rdDateRegdatetime讀者登記日期/辦證日期9rdPhotoimage讀者照片10rdStatusnchar(2)證件狀態,3個:有效、掛失、注銷11rdBorrowQtyInt已借書數量(缺省值0)12rdPwdnvarchar (20)讀者密碼(初值123),可加密存儲13rdAdminRolesSmallInt管理角色,0-讀者、1-借書證管理、2-圖書管理、4-借閱管理、8-系統管理,可組合分析提示:(1)可將管理員另外建表,與讀者信息分開單獨進行設

34、計。(2)單位rdType可以采用名稱,若采用代碼則需另建一張表:單位代碼與名稱對照表,這樣便于按單位統計。(3)管理角色(rdAdminRoles)也可設計為4個bit類型字段。3. 圖書信息表(TB_Book)序號字段名數據類型說明1bkIDInt圖書序號【標識列,主鍵】2bkCodeNvarchar (20)圖書編號或條碼號(前文中的書號)3bkNameNvarchar(50)書名4bkAuthorNvarchar(30)作者5bkPressNvarchar(50)出版社6bkDatePressdatetime出版日期7bkISBNNvarchar (15)ISBN書號8bkCatalo

35、gNvarchar(30)分類號(如:TP316-21/123)9bkLanguageSmallInt語言,0-中文,1-英文,2-日文,3-俄文,4-德文,5-法文10bkPagesInt頁數11bkPriceMoney價格12bkDateInDateTime入館日期13bkBriefText內容簡介14bkCoverimage圖書封面照片15bkStatusNChar(2)圖書狀態,在館、借出、遺失、變賣、銷毀說明:bkCode為前文中的書號,這里沒有設計為關鍵字,而增加bkID字段作為表關鍵字,其原因為:防止新書入庫時起始書號輸入錯誤時,因關鍵字而不易修改。4. 借閱信息表(TB_Bor

36、row)序號字段名數據類型說明1BorrowIDNumeric(12,0)借書順序號【主鍵】2rdIDInt讀者序號【外鍵TB_Reader】3bkIDInt圖書序號【外鍵TB_Book】4ldContinueTimesInt續借次數(第一次借時,記為0)5ldDateOutDateTime借書日期6ldDateRetPlanDateTime應還日期7ldDateRetActDateTime實際還書日期8ldOverDayInt超期天數9ldOverMoneyMoney超期金額(應罰款金額)10ldPunishMoneyMoney罰款金額11lsHasReturnBit是否已經還書,缺省為0-

37、未還12OperatorLendNvarchar(20)借書操作員13OperatorRetNvarchar(20)還書操作員分析提示:借閱信息即用于圖書的借還管理,同時又是統計分析的主要信息來源,故要求保持其歷史信息。設計時不能以(讀者序號+圖書序號)為關鍵字,否則讀者不能第二次借閱同一本書了。5. 數據庫實現內容:(1) 創建數據庫:Library;(2) 創建登錄名:LibAdmin,密碼:123;并設置為數據庫Library的dbo;(3) 創建上述4張數據表及約束;實現方法:(1) 采用SQL Server企業管理器手工操作方法完成創建工作;(自己完成)(2) 編寫SQL腳本文件,并

38、在查詢窗口工具中運行并創建;如創建TB_ReaderType表:CREATE TABLE dbo.TB_ReaderType(rdType smallint NOT NULL,rdTypeName nvarchar(20) NOT NULL,CanLendQty int NULL,CanLendDay int NULL,CanContinueTimes int NULL,PunishRate float NULL,DateValid smallint NULL DEFAULT (0), PRIMARY KEY (rdType), UNIQUE (rdTypeName)GOinsert into

39、 TB_ReaderTypevalues(10,'教師',12,60,2,0.05,0);insert into TB_ReaderTypevalues(20,'本科生',8,30,1,0.05,4);insert into TB_ReaderTypevalues(21,'專科生',8,30,1,0.05,3);insert into TB_ReaderTypevalues(30,'碩士研究生',8,30,1,0.05,3);insert into TB_ReaderTypevalues(31,'博士研究生',8,

40、30,1,0.05,4);GO6.2 三層架構簡介采用三層體系結構,即表示層、業務邏輯層和數據訪問層,如圖2所示,圖中箭頭表示調用和依賴關系。圖2 三層架構示意圖表示層(USL):也稱UI,提供交互式界面,形式:WinForm或HTML Web界面。業務邏輯層(BLL):實現業務功能,為表示層提供服務,形式:類庫。數據訪問層(DAL):實現數據訪問功能(如數據庫、文件等數據的讀取、保存和更新),為業務邏輯層提供服務,形式:類庫。微軟公布的SQLHelper類提供了對SQL Server數據庫的一般訪問方法(JAVA有類似的類或組件)。實體類(Model):描述一個業務實體的類,也即應用系統所涉

41、及的業務對象。對數據庫來講,每個數據表對應于一個實體類,數據表的每個字段對應于類的一個屬性。表示層、業務邏輯層、數據訪問層都依賴于業務實體。各層之間數據的傳遞主要是實體對象,業務信息封裝在實體對象中。6.3 搭建三層架構解決方案創建C#應用程序解決方案,包括4個項目:BookManage(Windows窗口應用程序)、BookManage.Model(類庫)、BookManage.DAL(類庫)、BookManage.BLL(類庫)。1. 新建項目BookManage(啟動項目)MS VS菜單:“文件”->“新建”->“項目”,在新建項目窗口中,選擇“C#”->“Window

42、s”->“Windows窗口應用程序”,選擇項目文件的存儲位置,并輸入項目名稱:BookManage,如圖3。項目BookManage即為UI層,該項目在MS VS編譯后產生BookManage.exe文件。圖3 新建項目BookManage2. 添加新項目BookManage.ModelMS VS菜單:“文件”->“添加”->“新建項目”,選擇“類庫”,輸入項目名稱,如圖4。MS VS編譯后產生BookManage.Model.dll文件(.DLL后綴文件稱為動態鏈接庫)。圖4 添加新建項目BookManage.Model3. 添加新項目BookManage.DAL操作與B

43、ookManage.Model類似,項目名稱設置為:BookManage.DAL。MS VS編譯后產生BookManage.DAL.dll文件。4. 添加新項目BookManage.BLL操作與BookManage.Model類似,項目名稱設置為:BookManage.BLL。MS VS編譯后產生BookManage.BLL.dll文件。解決方案見圖5。圖5 圖書管理項目解決方案5. 設置啟動項目和項目引用關系在解決方案中設置BookManage為啟動項目(“BookManage”右鍵菜單“設為啟動項目”)。項目引用關系如表2所示。如BookManage.BLL項目引用DAL和Model,其設

44、置方法:解決方案中項目“BookManage.BLL”的右鍵菜單“添加引用”,并按圖6進行設置。表2 項目引用關系。BookManageBookManage.BLLBookManage.DALBookManage.ModelBookManage×BookManage.BLLBookManage.DALBookManage.Model圖6 給BookManage.BLL項目添加引用6.4 類總體設計(迭代1)實體類、數據訪問層類、業務邏輯層類、表示層窗口類的初步設計如表3。表3 實體類、數據訪問層、業務邏輯層的類設計層類名說明實體類模塊(Model)ReaderType讀者類型實體類R

45、eader讀者實體類Book圖書實體類Borrow借閱記錄實體類數據訪問層(DAL)ReaderTypeDAL讀者類型數據表訪問類(插、刪、改、查、存儲過程等)ReaderDAL讀者數據表訪問類(插、刪、改、查、存儲過程等)BookDAL圖書數據表訪問類(插、刪、改、查、存儲過程等)BorrowDAL借閱數據表訪問類(插、刪、改、查、存儲過程等)SQLHelper微軟提供的對SQL Server數據庫進行訪問的通用類業務邏輯層(BLL)ReaderTypeAdmin讀者類型管理類,實現插、刪、改、查等信息維護操作。ReaderAdmin讀者管理類,實現借書證辦理、變更、補辦、掛失、解除掛失、注

46、銷等用例中的各種系統操作。BookAdmin圖書管理類,實現圖書管理各用例中的系統操作BorrowAdmin借閱管理類,實現借書、還書、續借等用例中的系統操作。UserAdmin用戶管理類,表示層(UI)frmLogin登錄窗口類frmMain程序主窗口類,含菜單、工具欄、狀態欄等frmReader讀者管理窗口類6.5 Model層實體類設計在BookManage.Model項目中添加4個實體類:ReaderType、Reader、Book、Borrow,分別對應4個數據庫表。實體類的屬性與數據庫表結構保持一致(名稱、類型);實體類應盡量簡單,除了實體對象的復制與比較等方法外,不宜添加過多方法

47、。其實實體類就是實現ORM。ORM Object Relational Mapping 對象關系映射,是為了解決面向對象的類,與關系數據庫的表之間,存在的不匹配的現象,通過使用描述對象和關系之間映射的元數據,在程序中的類對象,與關系數據庫的表之間建立持久的關系,用于在程序中描述數據庫表。本質上就是將數據從一種形式轉換到另外一種形式。ORM是一個廣義的概念,適應于關系數據庫與應用程序之間的各類數據轉換,目前有許多自動轉換工具可用,如codesmith 等,也可手工書寫實體類代碼來實現ORM。1. ReaderType類在Model項目中添加新建項:C#代碼類ReaderType.cs,如圖7所示

48、。圖7 添加C#代碼類文件ReaderType.cs表字段映射為實體類屬性的基本方法(VS 2005及以上版本)如下: private string _rdTypeName; public string rdTypeName get return _rdTypeName; set _rdTypeName = value; 而在VS 2008及以上版本中可簡化為: public string rdTypeName get; set; 表4 SQL字段類型與實體類屬性類型的映射關系SQL Server字段類型C#實體類屬性nchar, nvarchar, textstringint, smalli

49、ntintnumeric(12,0)longdatetimeDateTimeFloat, moneyfloatbitboolimageByte在VS 2008及以上版本中ReaderType類的實現代碼如下:在VS 2005(含2008及以上版本)中ReaderType類的實現代碼如下:另外,可添加復制構造函數,如下: public ReaderType(ReaderType rt) this.rdType = rt.rdType; this.rdTypeName = rt.rdTypeName; this.CanLendQty = rt.CanLendQty; this.CanLendDay

50、 = rt.CanLendDay; this.CanContinueTimes = rt.CanContinueTimes; this.PunishRate = rt.PunishRate; this.DateValid = rt.DateValid; 2. Reader類(略)3. Book類(略)4. Borrow類(略)6.6 DAL層類設計除SqlHelper外,每個數據庫表對應一個DAL層類,主要實現該表的插刪改查操作。1. SqlHelper類在BookManage.DAL項目中添加SqlHelper.cs文件,該類是微軟SqlHelper類(參見文件“參考資料03 微軟的SQLH

51、elper類(含完整中文注釋).cs”)的簡化版。SqlHelper類主要包括的成員函數有:打開數據庫連接、關閉數據庫連接、執行SQL語句、執行存儲過程等。表5 SqlHelper類成員1private static string _strConnection = "Data Source=LSH-SL400SQLSERVER; Initial Catalog=Library;User ID=BookManage;Password=123;"<成員屬性> -連接SQL Server的字符串(常量)。- LSH-SL400SQLSERVER為服務器名稱,可在SQL

52、 Server Management Studio的“已注冊服務器”中查看(菜單:“視圖”->“已注冊服務器”)。- 需修改為自己的連接。可手動修改,或可采用MS VS的服務器資源管理器得到(菜單:“視圖”->“服務器資源管理器”,“數據連接”->“添加連接”)。2private static SqlConnection conn = new SqlConnection(_strConnection);<成員屬性> -SQL Server數據庫連接對象(常量);3private static void OpenConn()<成員函數> -打開數據庫連接

53、4private static void CloseConn()<成員函數> -關閉數據庫連接5public static int ExecuteNonQuery(string sql)<成員函數> -執行非查詢的SQL語句,返回受影響的行數- sql指定要執行的SQL語句,- 例:sql = "delete from TB_ReaderType where rdType=12"6public static int ExecuteNonQuery(string sql, SqlParameter parameters)<成員函數> -執行

54、非查詢的SQL語句(帶參數),返回受影響的行數- 參見:6.6-2中的ReaderTypeDAL.Add() 函數代碼7public static object ExecuteScalar(string sql)<成員函數> -執行查詢語句,返回查詢結果中的首行首列8public static object ExecuteScalar(string sql, SqlParameter parameters)<成員函數> -執行查詢語句(帶參數),返回查詢結果中的首行首列9public static DataTable GetDataTable(string sql, S

溫馨提示

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

評論

0/150

提交評論