【正文】
2〉 一對多聯(lián)系:如 果實體集 A 中的每個實體可以與實體集 B 中的任意個(零個或多個)實體有聯(lián)系,而 B 中的每個實體之多和 A 中的一個實體有聯(lián)系,那么稱 A 對 B 的聯(lián)系為“一對多聯(lián)系”,記作 1: n 。實體內部的聯(lián)系通常指組成實體的各屬性之間的聯(lián)系,實體之間的聯(lián)系是指不同實體集之間的聯(lián)系。 3〉 書刊:書名( name)、書刊號( bookID)、作者( writer)、出版社( pubname)、類別( type)、 ISBN/ISSN 號等,其中主屬性是書刊號。 1〉 借閱者:它具有的屬性有:姓名( name)、地址( address)、身份證號( borrowerID)、電話號碼( teleNumber)和借閱卡號( id)等,其中主屬性是借閱卡號。實體既可以是實際存在的對象,也可以是某種概念。 31 (2)圖書管理模塊:圖書管理員可以 在系統(tǒng)中添加書刊信息,編輯書刊信息,刪除書刊信息,查詢書刊信息 等 一系列對書刊的管理。 圖書 管理員 作為借閱者的代理,進行借閱、返還、預訂及取消預訂等操作,還可以對書刊及借閱者信息進行管理。 借閱 者可以按照 借閱者號 進行查找,逐級瀏覽 ,可以查看自己的信息 。 系統(tǒng)功能 設計 該系統(tǒng)主要分為兩部分: 借閱者 部分和 圖書 管理 員 部分。 (7) 強大的查詢功能, 保證數(shù)據(jù)查詢的靈活性。 (5) 系統(tǒng)處理數(shù)據(jù)的準確度很高,能夠很快輸出各種信息,其工作質量很高。 (3) 系統(tǒng)的效率高,在 10 秒 內就可以響應用戶請求。因為此系統(tǒng)是為圖書館而設計的,對系統(tǒng)的硬件、軟件和運行環(huán)境的要求不是很高,只要不進行誤操作和非法使用,該圖書管理系統(tǒng)就可以很好的運行。 總體設計 系統(tǒng)目標設計 系統(tǒng)設計的目標是評價和衡量系統(tǒng)設計方案優(yōu)劣的基本標準,也是選擇系統(tǒng)設計方案的主要依據(jù)。 30 4 系統(tǒng)設計 系統(tǒng)設計通常分為兩個階段進行,首先是總體設計,其任務是設計系統(tǒng)的框架和概貌,并向用戶做詳細報告,若獲得認可,在此基礎上進行第二階段 — 詳細設計。圖書管理員通過“ PC”完成借閱、預訂、 取消預訂及 返還書刊操作,并維護借閱者賬戶、書刊種類、物理書刊信息,“ PC”也通過 校園局域網(wǎng)與“ Library Server”連接。 29 圖 “ Library Server”為借閱者提供了借閱、預訂、取消預訂及返還書刊的服務,并為圖書管理員提供了維護借閱者賬戶、書刊種類、物理書刊信息的服務。 圖 Title對象的狀態(tài)機圖 物理模型 該圖書管理系統(tǒng)是一個給予局域網(wǎng)和數(shù)據(jù)庫的應用系統(tǒng)。當對象開始處于“ Reserved”狀態(tài)時,若有新的預訂事件“ reserve()”發(fā)生,則自動發(fā)生遷躍,同時執(zhí)行動作 將預訂記錄存儲到數(shù)據(jù)庫中。 : MainW indow : B orrow er : B oo k: L ibrari an1 : retu rn ()2 : createD ial o g ()3 : retu rn ()5 : g etO b ject ( OID )4 : fin d B o o k ( Int eg er ): R eturnD ial og : L oan7 : g etB o rr o wer ()10 : d elLo an ( OID )9 : u p d ate ()8 : set Lo an ( n u ll )12 : d elet e ()11 : u p d ate ()6 : g etLo an () 28 圖 Book對象狀態(tài)機圖 圖 是對象 Title 的狀態(tài)機圖,對象 Title 有兩個狀態(tài),即“ Reserved”(預訂)狀態(tài)和“ Unreserved”(未預訂)狀態(tài)。對象 Book 開始處于“ Unloaned”狀態(tài),當事件 borrow()發(fā)生時,對象遷躍到“ Loaned”狀態(tài),同時執(zhí)行動作 ()將借閱記錄存儲到數(shù)據(jù)庫中。最后,刪除借閱記錄。 系統(tǒng)查詢數(shù)據(jù)庫,確定該種書刊是否存在,若存在,確定是否有可借閱的物理圖書,如有,確定借閱者是否有效,若有效,創(chuàng)建并存儲借閱記錄,并將借閱 記錄添加到物理書刊和借閱者信息中,更新物理書刊和借閱者信息 。 圖 刪除書種 順序圖 : M ainW indow : T it le : T it leD ial og: L ibrari an1 : d elTi tl e ()2 : createD ial o g ()3 : fin d Tit le ()6 : g etTi tl e ( OID )5 : createD ial o g ( OID )4 : fin d Tit le ( is b n : St rin g ): Find T D ial og : R eserv ati on: B oo k7 : g etN u m B o o k s ()14 : d elet e ()10 : d elTi tl e ()15 : g etN u m R s v s ()12 : g etB o o k ( In teg er )11 : g etN u m B o o k s ()13 : h as Lo an (): B orrow er8 : g etB o o k ( In teg er )9 : g etID ()16 : g etR es erv ati o n ( In teg er )20 : d elet e ()19 : d elet e ()18 : d elR es erv ati o n ( OID )17 : g etB o rr o wer () 25 ( 4) 預 訂 書刊 若借閱者有效,創(chuàng)建并存儲預定記錄,并將預定記錄添加到相應的借閱者和書刊種類信息中;若借閱者無效,則顯示提示信息,圖書管理員重新輸入借閱者信息或終止預定操作 。檢查是否有預定記錄,若有,刪除預定記錄并通知借閱者。 ( 3) 刪除書種 圖書管理員選擇菜單項 “ 刪除書種 ” ,對話框彈出,圖書管理員輸入書刊的 ISBN/ISSN 號,提交,系統(tǒng)查詢數(shù)據(jù)庫,顯示書刊信息。圖書管理 員選擇菜單項 “ 添加書種 ” ,類MainWindow 的方法 addTitle()被調用,然后通過調用類 TitleDialog 的方法creatDialog()創(chuàng)建對話框,圖書管理員輸入書刊信息后,提交,類 TitleDialog的方法 addTitle()被調用。 ( 2)添加書種 圖書管理員選擇菜單項 “ 添加書種 ” ,對話框彈出,圖書管理員輸入書刊名、ISBN/ISSN、作者等信息,提交,系統(tǒng)根據(jù) ISBN/ISSN 號查詢書種信息是否已存在,若不存在,創(chuàng)建書種,并存儲書種信息。圖書管理員選擇菜單項“添加借閱者”,邊界類 Mainwindow 的方法 addborrower()被調用,然后通過調用邊界類BorrowerDialog的方法 createDialog()創(chuàng)建對話框。 ( 1)添加借閱者 “添加借閱者”的過程是,圖書管理員選擇菜單項“添加借閱者”,對話框彈出,圖書管理員輸入借閱者信息,然后提交,系統(tǒng)根據(jù)借閱者的 ID 號查詢數(shù)據(jù)庫,看數(shù)據(jù)庫中是否存在該借閱者,若不存在,創(chuàng)建借閱者賬戶,并存儲借閱者信息。本章選用順序圖描述用例的主要場景,用狀態(tài)機圖描述對象的動態(tài)行為。類 TitleDialog依賴于類 Book、類 Reservation、類 Borrower和類 Title;類 FindTDialog 依賴于類 Title,如圖 所示。類 RsvDialog 依賴于 Reservation、類 Borrower和類 Title;如圖 所示。 20 圖 實 體類類 圖 圖 ~ 圖 所示類 圖描述了界 面類與實體 類之間的關 系。即每個 Reservation(預訂)只能有一個 Borrower 預訂。類 Title 與類 Reservation 之間存在“一對多”的關聯(lián)關系,即每個 Title 對象可以沒有或多個 Reservation(預訂),每個 Reservation(預訂)只能預定一個 Title。類 Book、類 Title、類 Reservation、類 Borrower、類 Loan 和類 Persistent 之 間存在類屬關系。包 GUI 是由界面類組成,包 Library 由實體類組成,包 DB 是由與數(shù)據(jù)庫有關的類組成的。 圖 圖書管理系統(tǒng)的邊界類 19 建立類圖 識別出系統(tǒng)中的類后,再進行類間關系的識別,然后建立類圖。 ( 10) 類 LoginDialog,是用來輸入用戶名和密碼的對話框。 ( 8) 類 RsvDialog,是進行“預訂”“取消預訂”操作時所需的對話框。 ( 6) 類 BorrowDialog,是進行“借閱”操作時所需的對話框。 18 ( 4) 類 TitleDialog,是進行操作“添加書種” “修改書種”或“刪除書 種”時所需的對話框。 ( 2) 類 BorrowerDialog,進行操作“添加借閱者” “修改借閱者”或“刪除借閱者”時所需的對話框。通過對系統(tǒng)的不斷分析和細化,可以識別出以下 10 個邊界類: ( 1)類 Main Window Main Window 是系統(tǒng)的主界面,具有菜單和菜單項,當用戶選擇不同的菜單項時,系統(tǒng)可以執(zhí)行不同的操作。在此系統(tǒng)中,除了這五個重要的持久性的類之外,還需要建立一個描述對象 id 的類( OID)和一個代表持久性的父類( Persisent)。 定義系統(tǒng)對象 通過對系統(tǒng)進行需求分析后,就可以識別出在該系統(tǒng)中存在的對象。 靜態(tài)建模 進一步分析系統(tǒng)需求,發(fā)現(xiàn)類以及類之間的聯(lián)系,確定它們的靜態(tài)結構和動態(tài)行為,是面向對象分析的基本任務。 非功能性需求分析 非功能性需求是從各個角度對系統(tǒng)的約束和限制,反映了應用系統(tǒng)對軟件系統(tǒng)質量和特性的額外要求,例如響應時間、數(shù)據(jù)精度、可靠性等。 ② 替代流( Alternative Flow) E1:如果用戶輸入無效的用戶名和 /或密碼,系統(tǒng)顯示錯誤信息。 ⑵ 用戶輸入用戶名和密碼。 4〉事件流 ① 基流( Basic Flow) 當用戶希望登錄到系統(tǒng)中 時,用例啟動。反之,系統(tǒng)的狀態(tài)不變。 (8) 登錄( Log In) 1〉 前置條件( PreConditions) 沒有。 ⑸ 更新系統(tǒng)中物理書刊的信息。 ⑶ 查詢并顯示該種書刊的所有物理書 刊。 ⑴ 提供物理書刊的種類信息。 ⑷ 從系統(tǒng)中刪除物理書刊信息,并更新相關信息。 ⑵ 查詢物理書刊的種類( Title)( E1)。 ⑷ 將物理書刊信息存儲到到系統(tǒng)中。 ② 分支流( Subflows) S1:添加物理書刊信息 ⑴ 提供物理書刊的種類信息 ⑵ 查詢物理書刊的種類( Title),確定系統(tǒng)中已存在該書刊種類( E1)。 如果所選活動是“刪除物理書刊”,則執(zhí)行分支流 S2:刪除物理書刊信息。 系統(tǒng)要求 Librarian 選擇所想執(zhí)行的活動(添加物理書刊、刪除物理書刊、或修改物理書刊)。 3〉擴充點( Extension Points) 沒有。 2〉 后置條件 ( PostConditions) 如果這個用例成功,系統(tǒng)添加、修改或刪除物理書刊信息。 E3:若有物理書刊借出,系統(tǒng)顯示提示信息,用例終止。 ③ 替代流( Alternative Flow) E1:若書刊信息已存在,系統(tǒng)顯示提示信息,用例終止。 ⑶ 修改相應的信息。 S3:更改書刊信息 ⑴ 提供要修改的書刊信息。 ⑶ 刪除該書刊的所有物理書刊的信息( E3) 。 S2:刪除書刊者 ⑴ 提供所要刪除的書刊信息。 ② 分支流( Subflows) S1:添加書刊信息 ⑴ 提供書刊的書名、作業(yè)、 ISBN/ISSN 號等信息。 如果所選的活動是“刪除書種”,則執(zhí)行分支流 S2:刪除書刊信息。 系統(tǒng)要求 Librarian 選擇所想執(zhí)行的活動(添加、刪除或修改書種)。 3〉擴充點( Extension Points) 沒有。 2〉 后置條件 ( PostConditions) 如果這個用例成功,系統(tǒng)添加、修改或刪除種類信息。 E3:若存在借閱記錄,系統(tǒng)顯示提示信息,用例終止。 ③ 替代流( Alternative Flow) E1:若借閱者已存在,系統(tǒng)顯示提示信息,用例終止。 ⑵ 查詢并顯示借閱者的信息( E2) ,修改相應的信息。 ⑷ 從系統(tǒng)中刪除借閱者的信息,以及借閱者的預 定記錄。 ⑵ 查詢借閱者( E2) 。 ⑵ 系統(tǒng)存儲借閱者信息( E1) 。 如果所選的活動是“修改借閱者”,則執(zhí)行分支流 S3:修