1. 程式人生 > >完整圖書館管理系統(包含設計思路、圖形介面、後臺資料庫)

完整圖書館管理系統(包含設計思路、圖形介面、後臺資料庫)

面向物件技術》課程綜合性實驗報告

 

開課實驗室:基礎一實驗室                                   2018 11 18

實驗題目

圖書館管理系統

實驗題目:

圖書館管理系統

實驗目的:

1、掌握面向物件分析與設計的思想與方法。

2、使用UML進行系統的面向物件分析與設計:用例圖,類圖,順序圖,狀態圖,活動圖,元件圖等。

3.系統功能用Java或C++語言實現,並與後臺資料庫連線,實現系統的基本功能。

實驗裝置及環境:

硬體:多媒體計算機

軟體:Windows7作業系統、Rational Rose建模工具

實驗內容及要求:

工資管理:在取得授權的情況下,有關人員要進行如下工作。

(1)書籍資訊錄入

圖書管理員錄入書籍的書號、名稱,修改錄入的出錯(維護),形成圖書表。

(2)讀者資訊錄入

系統管理員錄入讀者的個人資訊,修改錄入的出錯(維護),形成讀者表。

(3)借閱情況的錄入

圖書管理員在讀者借閱圖書時錄入資訊,修改錄入的出錯(維護),形成借閱表和歷史借閱表。

(4)計算扣款金額

圖書管理員按讀者借書時間、還書時間和借閱時長判斷讀者是否需要扣費,然後生成資訊到歷史借閱表中。 

(5)讀者、圖書管理員及圖書資訊的查詢

讀者可以根據自己的讀者號查詢自己的個人資訊;圖書管理員可以根據自己的管理員號查詢自己的個人資訊(包括工資);所有人都可以登入之後無條件查詢圖書的資訊包括館藏冊數。

完成步驟和要求:

完成使用者需求的分析,找出系統的執行者、用況,畫出用況模型圖(包括用例描述)。

找出系統的概念類,建立基本模型。

建立系統順序/通訊圖,找出系統與外界互動的訊息。

建立系統活動圖,找出系統的主要業務流程與關鍵操作流程。

建立系統中主要物件的狀態機圖,找出物件在其生存期內因響應事件所經歷的狀態序列。

給出系統的問題域部分設計的思路,結合2建立類設計模型圖。

給出系統的關鍵介面設計圖,並予以說明。

給出資料管理部分的設計結果。

給出控制驅動部分的設計思路。(可選)

設計系統的構件圖和部署圖。(可選)

四、實驗結果及分析

1. 根據使用者的需求畫出用況圖:

 

在本系統中一共包含了三個參與者:

其中讀者的主要用例包括查詢讀者賬戶(即查詢自己的個人資訊以及查詢自己的賬戶和借閱情況)、借書、還書和查詢圖書資訊。

圖書管理員的主要用例是檢視讀者的賬戶,包括讀者的個人資訊以及讀者的賬戶和借閱情況。在對書籍的資訊進行管理的時候能夠檢視並新增新增圖書的各種資訊,修改圖書的資訊,以及刪除圖書的資訊。在對借書記錄和還書記錄進行管理時圖書管理員可以判斷讀者的借書情況是否超期,根據超期的情況決定是否需要罰款。

系統管理員有五個用例,管理借閱者資訊,包括新增新生資訊和刪除畢業生資訊。在對圖書的資訊進行管理的時候,也能夠新增新書的資訊和刪除已損壞圖書的資訊。同時,系統管理員也可以查詢現有所有圖書的資訊,來決定是否需要引進新書。系統管理員也可以管理借書記錄和還書記錄,主要是當圖書管理員遇到問題時,系統管理員也可以實現借還書的功能。

另外,圖書管理員和系統管理員都繼承於圖書館內部人員這個父類。

2.根據用況圖建立本系統的類圖:

 

本系統一共設計了七個類:    。

讀者類:屬性包含(1)讀者證號 (2)密碼 (3)最大借書數量

方法包括(1)借書 (2)還書 (3)檢視使用者賬戶 (4)檢視借書數量 (5)登入系統

    (5)查詢圖書資訊 (6)交罰款

    圖書管理員類:屬性包含(1)管理員帳號 (2)密碼

方法包括(1)查詢圖書資訊(2)修改圖書資訊

    書架類:屬性包含(1)書架號 (2)型別(3)位置(4)存放數量

方法只有 存放圖書

圖書類:屬性包含(1)書號(2)書名(3)數量(4)價格(5)出版社

(6)館藏冊數(7)在館冊數

系統管理員類:屬性包含 值班時間

     方法包括(1)檢視使用者個人資訊(2)修改使用者個人資訊

後臺系統類:屬性包含(1)級別(2)配置

     方法包括(1)儲存使用者個人資訊(2)儲存圖書資訊(3)儲存借閱資訊

Item類:屬性包含 id

     方法包括(1)建立(2)銷燬(3)更新(4)顯示圖書資訊(5)顯示借閱次數

其中,圖書管理員類和系統管理員類是工作人員類的子類,圖書管理員在繼承了其父類的屬性和操作以外還自己添加了管理員帳號和密碼這兩個屬性,添加了查詢圖書資訊和修改圖書資訊這兩個操作。系統管理員在繼承了父類的基礎以外還添加了值班時間這個屬性,以及檢視使用者個人資訊和修改使用者個人資訊這兩個操作。

另外,讀者類和工作人員類是Person類的子類,讀者在繼承了其父類的屬性和操作以外還自己添加了讀者證號、密碼和最大借書數量這幾個屬性,添加了借書、還書、檢視使用者賬戶、檢視借書數量、登入系統、查詢圖書資訊和交罰款這些操作。工作人員在繼承了其父類的屬性和操作以外還自己添加了工資和管理範圍這兩個屬性,添加了登入賬戶、查詢使用者借閱資訊、管理借書記錄、管理還書記錄、檢視使用者賬戶這些操作。

Person類是讀者類和工作人員類的父類,它包含了所有人都有的三個屬性:姓名、性別和年齡。讀者類和工作人員類繼承於Person類,這就簡化了這兩個子類的屬性。

類之間的關係先從圖書管理員講起,圖書管理員能夠為讀者提供服務,因此,二者之間應該是服務與被服務的關係。另外,圖書管理員能夠管理書架和圖書,而且書架與圖書之間是存放與被存放的關係,所有的圖書都被存放於圖書館的書架中。最後,圖書管理員還能夠檢視Item,Item類有點類似於超市中在購物後產生的小票,當讀者在完成整個借閱的操作之後,後臺系統會自動生成一個Item,因此,在類圖中Item與後臺系統之間是一種聚合的關係,而讀者也可以檢視Item,因為當讀者在完成借閱之後,Item便可以證明借書是否成功以及後臺系統是否發生故障。

除了圖書管理員之外,同樣繼承於工作人員的系統管理員類也與其他類有著很多聯絡,比如說系統管理員同樣與圖書類有著維護與被維護這樣的關係,但與圖書管理員不同的是,系統管理員只負責通過從後臺系統中的新增、修改或者刪除來管理圖書,而不是像圖書管理員一樣去管理實體的圖書。另外,系統管理員可以管理後臺系統,控制後臺系統中所儲存的資訊以及當後臺系統在發生一些故障時,系統管理員能夠提供及時的維修。

 

 

3.使用者登入的時候的時序圖:

 

 

 

 

 

 

 

    借書過程的時序圖:

上圖表示了讀者在進行借閱操作時的一系列變化,讀者在進行借書操作之前,首先需要輸入自己的資訊包括帳號和密碼,顯示器將這些資訊傳送給資料庫,在資料庫中將讀者的帳號和密碼進行比對,進行身份驗證,並將驗證的結果返回給讀者。如果身份驗證成功則使用者登入成功,反之讀者登入失敗。

然後,讀者可以向圖書管理員傳送借閱請求,圖書管理員在收到訊息後可以向後臺系統輸入借閱資訊,後臺系統檢視對應圖書的館藏冊數,並根據館藏資訊,返回該圖書是否可借閱。若可借閱,則圖書管理員可在此時修改後臺系統的借閱資訊,將需要借閱圖書的讀者資訊新增到後臺資料庫的借閱表中,並且後臺系統自動計算當前對應的借閱時間。

此時,後臺系統呼叫其Item功能,當圖書管理員修改完借閱表之後,後臺系統生成一張紙質書單,即類似於超市購物時的小票,圖書管理員得到小票確認無誤後將紙質小票返回給借閱者,借閱者可以得到實體的圖書,整個借閱過程結束。

 

還書過程的時序圖:

使用者在還書的時候也需要登入,在登入的時候,首先需要輸入自己的資訊包括帳號和密碼,顯示器講這些資訊傳送給資料庫,在資料庫中將使用者的帳號和密碼進行比對,進行身份驗證,並將驗證的結果返回給使用者。如果身份驗證成功則使用者登入成功,反之使用者登入失敗。

借閱者在登入成功之後,可以向圖書管理員傳送還書請求,圖書管理員在接收到還書請求之後,需要進入後臺系統檢視該借閱者是否超期借閱,後臺系統返回超期的資訊,若借閱者還書的時間超過了應還的時間,後臺系統則自動生成一張扣款賬單,由圖書管理員返回給借閱者。

之後借閱者需要支付扣款的金額,支付完畢後,圖書管理員需要修改借閱資訊,即進入後臺資料庫的借閱表刪除這條借閱資訊,後臺系統自動將刪除的借閱資訊新增到後臺資料庫的歷史借閱表中。另外,後臺系統還需要修改圖書的館藏冊數,將所還圖書的館藏冊數加一,並返回館藏資訊。

最後,借閱者可以歸還實體的圖書,圖書管理員將會請求生成一張還書書單,後臺系統啟用其Item功能生成一張還書書單並返回給讀者,整個還書操作結束。

 

4.進行還書操作時的活動圖:

讀者在進行借書操作時,可以向圖書管理員傳送借閱請求,圖書管理員在收到訊息後可以向後臺系統輸入借閱資訊,並檢視對應圖書的館藏資訊,並根據館藏資訊,產生一個分支判斷。若館藏冊數為0,則不可借閱,返回錯誤資訊並拒絕讀者的借閱,之後結束整個借書操作。若館藏冊數不為0,則可借閱,後臺系統返回可借閱資訊。

圖書管理員在後臺系統返回可借閱資訊之後修改後臺系統的借閱資訊,將需要借閱圖書的讀者資訊新增到後臺資料庫的借閱表中,並且後臺系統自動計算當前對應的借閱時間,與此同時,後臺系統呼叫其Item功能,當圖書管理員修改完借閱資訊之後,後臺系統生成一張紙質書單。

完成這兩個操作之後,借閱者可以得到實體的圖書,整個借閱過程結束。

 

5.讀者從未登記到還書成功時的狀態圖:

讀者在進行借書與還書操作之前首先需要通過註冊來驗證身份,學校中的圖書館借閱者以學生為主,學生在登記學生資訊之後一直處於未註冊的狀態。通過圖書館管理員對其進行註冊操作,讀者的狀態才由未註冊轉向已註冊。另外,讀者在已註冊的狀態下也可以修改個人資訊,此時借閱者的狀態不變。

註冊完之後的讀者在身份驗證成功之後就可以進入到系統,進行圖書資訊和自己個人資訊的查詢。已註冊的讀者此時處於可借閱的狀態,若讀者借書數量小於等於10本時,在辦理借閱手續之後就可以對圖書館中的圖書進行借閱。在取完實體書之後,借閱者便進入一個未還書的狀態。

若借閱者處於未還書狀態超過2個月,則借閱者進入欠款狀態,若借閱者處於未還書狀態不超過2個月,則借閱者依舊處於未欠款狀態。當借閱者在欠款狀態時,需要進行還款,還款之後返回到未欠款狀態。通過還書,借閱者進入已還書的狀態。

此時可選擇繼續借閱或者是直接結束,若是通過繼續借閱返回,則需要進行判斷,當讀者借書數量小於等於10本時,才可以繼續借閱,若是讀者借書數量大於10本,則直接結束,無法再借。

 

6.系統的介面設計:

系統的頁面包括主介面、錄入介面、查詢所有學生介面和查詢單個學生介面。

主介面:是所有分介面的總和,所有的分介面都展示在主介面上。

 

錄入介面:將新入學的學生錄入到圖書管理系統中,同時註冊自己的賬號,用賬號登入到系統後,即可以查詢自己的借書記錄。

查詢所有學生介面:圖書管理員可以通過“查詢所有”這個介面來查詢所有借閱者的資訊以及借書的數量。

 

查詢單個學生介面:通過輸入單個借閱者的姓名來查詢對應借閱者的借閱資訊。

 

 

 

 

7、後臺資料庫管理部分的設計結果

主要設計了7個表,具體表結構如下:

圖書表

欄位名稱

資料型別

長度

說明

書號

VARCHAR2

15

主碼

書名

VARCHAR2

20

非空

  作者

VARCHAR2

  10

-

型別

VARCHAR2

15

依賴於書架型別表中的型別欄位

價格

FLOAT

  -

-

出版社

VARCHAR2

40

-

摘要

VARCHAR2

50

-

館藏冊數

NUMBER

-

-

在館冊數

NUMBER

-

小於館藏冊數

存放位置

VARCHAR2

5

-

被借次數

NUMBER

-

判斷圖書是否受歡迎的標準

 

讀者表

欄位名稱

資料型別

長度

說明

卡號

VARCHAR2

15

主碼

姓名

VARCHAR2

20

   -

性別

CHAR

2

為“男”或“女”

單位

VARCHAR2

40

   -

型別

VARCHAR2

  10

依賴於讀者型別表中的型別欄位

級別

NUMBER

-

用來記錄該學生借閱的數量

在借冊數

NUMBER

-

   -

 

 

 

讀者型別表

欄位名稱

資料型別

長度

說明

型別

VARCHAR2

10

主碼

借書時間

DATE

   -

 

最多在借冊數

NUMBER

   -

 

 

正借閱表

欄位名稱

資料型別

長度

說明

書號

VARCHAR2

15

主碼

卡號

VARCHAR2

15

借書時間

DATE

   -

 

已還表

欄位名稱

資料型別

長度

說明

書號

VARCHAR2

15

主碼

卡號

VARCHAR2

15

借書時間

DATE

-

還書時間

DATE

    -

 

書架表

欄位名稱

資料型別

長度

說明

書架號

VARCHAR2

15

主碼

型別

VARCHAR2

15

NOT NULL

 

工作人員表

欄位名稱

資料型別

長度

說明

工作號

VARCHAR2

15

主碼

姓名

VARCHAR2

20

   -

職務

VARCHAR2

20

   -

工資

FLOAT

-

 -

 

五.實驗心得體會

     通過本次面向物件的綜合實驗,我對面向物件的思想有了更加深入的瞭解。作為一種思想,面向物件是需要進行抽象、提煉、總結的,這也許就是是我之前對面向物件思想認知有鴻溝的原因。但是不可否認的是,認真地學習面向物件的思想,不僅僅對程式設計有好處,還可以讓你能更深入地理解所處的這個世界。

     除此之外,通過使用老師向我們介紹的用例圖、類圖、順序圖、通訊圖、活動圖以及狀態圖,我對如何去全面地描述一個實際應用的系統有了更多的方法。之前如果讓我獨立去完成一個比較全面的系統。我可能會不知道從哪裡開始,但經過了這次實驗,我會先從使用者需求分析開始,然後畫一個對應的用例圖,再根據用用例圖畫出其他的圖,這看似繁瑣,但經過這一個學期我發現這是解決一個綜合問題的最有效、最有條理的方式。這就是我對這門課的收穫。

     最後,我對面向物件的設計也有了一些初步的認識,由於在面向物件的分析階段,我針對使用者需求已經建立起用面向物件概念描述的系統分析模型,因此在面向物件設計階段需要更多地考慮如何去實現以及用什麼程式語言去實現,這需要進一步運用面向物件方法對系統進行設計。在綜合實驗中,我主要運用JAVA語言在構造前端介面,用SQL資料庫來構造後臺,之後再用SQL資料庫的JDBC功能將前端介面與後臺SQL資料庫中的對應表進行連線,最終實現可以進行錄入、查詢、排序和查詢的效果。但是由於時間原因,我的系統還不是很完善,比如說還沒有製作登入介面,並根據使用者從登入介面輸入的資訊來判斷是否允許使用者登入,因此整個系統仍需要進行後續改進。但通過本次綜合實驗,我真的收穫到了很多,思想也變得更加全面了。