java語言課程設(shè)計(jì)---圖書館管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第1頁
已閱讀1頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  課 程 設(shè) 計(jì)</b></p><p>  課程名稱 Java語言課程設(shè)計(jì) </p><p>  題目名稱 圖書館管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)</p><p>  學(xué)生學(xué)院 應(yīng)用數(shù)學(xué)學(xué)院 </p><p>  專業(yè)班級(jí) 信息與計(jì)算科學(xué) <

2、/p><p>  學(xué) 號(hào) </p><p>  學(xué)生姓名 </p><p>  指導(dǎo)教師 </p><p>  2012年 10 月 09 日</p><p>&l

3、t;b>  目錄</b></p><p><b>  摘 要III</b></p><p>  1. 學(xué)生管理系統(tǒng)設(shè)計(jì)主要任務(wù)1</p><p>  2.系統(tǒng)總體設(shè)計(jì)1</p><p>  2.1用戶功能描述1</p><p>  2.2系統(tǒng)用例圖2</p&g

4、t;<p>  2.3系統(tǒng)總體結(jié)構(gòu)圖3</p><p><b>  3數(shù)據(jù)庫設(shè)計(jì)4</b></p><p>  3.1數(shù)據(jù)庫設(shè)計(jì)概述4</p><p>  3.2系統(tǒng)管理員信息表結(jié)構(gòu)設(shè)計(jì)5</p><p>  3.3圖書管理員信息表結(jié)構(gòu)設(shè)計(jì)5</p><p>  3.4 讀

5、者信息表結(jié)構(gòu)設(shè)計(jì)6</p><p>  3.5圖書信息表結(jié)構(gòu)設(shè)計(jì)6</p><p>  3.6歷史記錄信息表結(jié)構(gòu)設(shè)計(jì)7</p><p>  3.7圖書館信息表結(jié)構(gòu)設(shè)計(jì)8</p><p>  4.業(yè)務(wù)實(shí)體與實(shí)體業(yè)務(wù)處理8</p><p><b>  4.1業(yè)務(wù)實(shí)體9</b></p&

6、gt;<p>  4.1.1系統(tǒng)管理員實(shí)體9</p><p>  4.1.2圖書管理員實(shí)體9</p><p>  4.1.3讀者實(shí)體10</p><p>  4.1.4圖書實(shí)體10</p><p>  4.1.5歷史記錄實(shí)體11</p><p>  4.1.6圖書館實(shí)體11</p>

7、<p>  4.2數(shù)據(jù)庫連接類12</p><p>  4.3實(shí)體業(yè)務(wù)處理12</p><p>  4.3.1歷史記錄業(yè)務(wù)處理12</p><p>  4.3.2讀者業(yè)務(wù)處理17</p><p>  4.3.3系統(tǒng)管理員業(yè)務(wù)處理17</p><p>  4.3.4圖書管理員業(yè)務(wù)處理17<

8、/p><p>  4.3.5圖書業(yè)務(wù)處理17</p><p>  4.3.6圖書館信息業(yè)務(wù)處理17</p><p><b>  4.4工廠類18</b></p><p>  5界面窗口程序設(shè)計(jì)19</p><p>  5.1登錄窗口19</p><p>  5.2圖書

9、管理員主界面20</p><p>  5.3添加圖書界面21</p><p>  5.4添加用戶界面21</p><p>  6工作成果與收獲體會(huì)22</p><p>  6.1工作成果22</p><p>  6.2收獲體會(huì)23</p><p><b>  7參考文獻(xiàn)2

10、3</b></p><p><b>  摘 要</b></p><p>  圖書管理系統(tǒng)是學(xué)校管理機(jī)制中的重要組成部分, 通過對(duì)圖書管理系統(tǒng)的運(yùn)行管理機(jī)制進(jìn)行調(diào)查研究, 開發(fā)了此圖書系統(tǒng)。本系統(tǒng)中解決了學(xué)校圖書管理事務(wù)中的常用基本問題以及相關(guān)統(tǒng)計(jì)工作。本系統(tǒng)中包含7個(gè)系統(tǒng)模塊:圖書檢索、圖書館信息、用戶倉庫、圖書倉庫、系統(tǒng)查詢、借還書業(yè)務(wù)、我的圖書館、

11、退出登錄。</p><p>  本系統(tǒng)使用NetBeans7.0.1進(jìn)行swing用戶界面的設(shè)計(jì), 使用工廠類設(shè)計(jì)模式, 采用了面向?qū)ο笤O(shè)計(jì)思想, 具有功能完善、簡(jiǎn)單易用、用戶界面友好等特點(diǎn)。本軟件具有一系列異常處理機(jī)制, 確保了用戶錯(cuò)誤操作時(shí)也不會(huì)出錯(cuò)或死機(jī), 并且予以相應(yīng)的提示信息。本系統(tǒng)中通過JDBC驅(qū)動(dòng)和數(shù)據(jù)庫進(jìn)行無縫連接, 后端的數(shù)據(jù)庫是SQL Server2008, 該數(shù)據(jù)庫具有較高的完整性, 一致性

12、和安全性。</p><p>  關(guān)鍵詞:圖書管理;信息管理;java;netbeans;sql server2008</p><p>  1. 學(xué)生管理系統(tǒng)設(shè)計(jì)主要任務(wù)</p><p>  該系統(tǒng)主要建立一個(gè)單機(jī)版的圖書館借閱管理系統(tǒng),面對(duì)當(dāng)前很多小型圖書管理仍是人工管理帶來的檢索速度慢,效率低,借閱歸還圖書量大,圖書統(tǒng)計(jì)工作量大,藏書不能完成及時(shí)更新的問題,該系統(tǒng)

13、可以對(duì)該系統(tǒng)的三個(gè)用戶類型的使用實(shí)現(xiàn): </p><p>  1.對(duì)于讀者在本系統(tǒng)的應(yīng)用下可實(shí)現(xiàn)按照各種方式(如:書名,編號(hào),作者)查詢圖書館的藏書情況,能夠查詢自己的個(gè)人信息, 方便地修改密碼,且能夠查詢自己的借閱圖書情況。</p><p>  2.對(duì)于圖書館工作人員能夠?qū)崿F(xiàn)方便的對(duì)圖書進(jìn)行查詢,方便的進(jìn)行讀者借閱情況查詢,方便的進(jìn)行借書還書處理等,便捷的對(duì)圖書信息進(jìn)行添加、修改、刪除等

14、操作,對(duì)個(gè)人信息進(jìn)行查詢、修改等操作。</p><p>  3.對(duì)于系統(tǒng)管理員可以對(duì)圖書館信息進(jìn)行修改更新操作,對(duì)系統(tǒng)用戶進(jìn)行添加、修改、刪除等操作,對(duì)圖書館的辦證參數(shù)進(jìn)行修改維護(hù)等操作功能。</p><p><b>  2.系統(tǒng)總體設(shè)計(jì)</b></p><p><b>  2.1用戶功能描述</b></p>

15、<p>  本MIS系統(tǒng)是對(duì)小型圖書館進(jìn)行高效率管理的應(yīng)用系統(tǒng),它的用戶主要是讀者和圖書管理員,系統(tǒng)管理員。三類用戶的具體描述如下表所示:</p><p>  表2.1用戶具體描述</p><p><b>  2.2系統(tǒng)用例圖 </b></p><p>  圖書借閱管理系統(tǒng)的主要任務(wù)是實(shí)現(xiàn)讀者迅速檢索查詢,方便修改信息;圖書管理員高

16、效的完成系統(tǒng)的各項(xiàng)基本操作,系統(tǒng)管理員是管理用戶錄入等操作。從圖2.2可以看出圖書借閱管理系統(tǒng)要完成以下功能:</p><p><b>  1. 登錄。</b></p><p>  讀者、圖書管理員,系統(tǒng)管理員進(jìn)入該系統(tǒng)必須登錄, 身份驗(yàn)證正確了才可以進(jìn)入該系統(tǒng), 以不同身份進(jìn)入該系統(tǒng)所對(duì)應(yīng)的系統(tǒng)使用權(quán)限是不同的。</p><p><b&

17、gt;  2. 圖書檢索</b></p><p>  讀者、圖書管理員、系統(tǒng)管理員都可以按條件(全部圖書, 圖書編號(hào), 圖書名稱)查詢館藏圖書。</p><p><b>  3. 圖書館信息</b></p><p>  讀者、圖書管理員、系統(tǒng)管理員可查看圖書館相關(guān)信息。系統(tǒng)管理員有修改的權(quán)限。</p><p>

18、;  4. 用戶管理功能:</p><p>  對(duì)系統(tǒng)用戶進(jìn)行查詢,添加,修改,刪除等操作。</p><p>  5. 圖書管理功能:</p><p>  對(duì)圖書館圖書進(jìn)行查詢,添加,修改,刪除等操作。</p><p>  4. 系統(tǒng)查詢功能:</p><p>  對(duì)借閱信息,超期信息,圖書信息,圖書信息等按條件進(jìn)行查

19、詢。</p><p><b>  7.借還書業(yè)務(wù)</b></p><p>  圖書管理員根據(jù)讀者編號(hào),圖書編號(hào)進(jìn)行借還書業(yè)務(wù)操作。</p><p><b>  8.我的圖書館</b></p><p>  讀者、圖書管理員、系統(tǒng)管理員可查詢個(gè)人信息, 并可修改郵箱, 電話??蛇M(jìn)行密碼重設(shè)。(初始密碼為

20、各用戶身份證號(hào))</p><p>  下面的系統(tǒng)用例圖描述了整個(gè)系統(tǒng)用戶之間的動(dòng)作聯(lián)系,及功能模塊的概述。</p><p><b>  圖2.2系統(tǒng)用例圖</b></p><p>  2.3系統(tǒng)總體結(jié)構(gòu)圖</p><p>  繪制系統(tǒng)結(jié)構(gòu)圖的過程, 實(shí)際上就是對(duì)系統(tǒng)功能模塊進(jìn)行分解設(shè)計(jì)的過程, 即合理地將用戶需求轉(zhuǎn)變?yōu)樗?/p>

21、需要的系統(tǒng)結(jié)構(gòu)圖。</p><p>  系統(tǒng)結(jié)構(gòu)圖將會(huì)使用戶能直觀的了解系統(tǒng)的結(jié)構(gòu)模式, 理解系統(tǒng)的各個(gè)功能的結(jié)構(gòu), 能很好地方便用戶使用和理解整個(gè)系統(tǒng)。</p><p>  本系統(tǒng)的結(jié)構(gòu)圖如下:</p><p>  圖2.3系統(tǒng)總體結(jié)構(gòu)圖</p><p>  根據(jù)功能需求分析的結(jié)果, 按照“低耦合、高內(nèi)聚”的原則, 本系統(tǒng)將劃分為以下主要功

22、能模塊:圖書檢索功能模塊、圖書館信息功能模塊、用戶倉庫功能模塊、圖書倉庫功能模塊、系統(tǒng)查詢功能模塊、借還書業(yè)務(wù)功能模塊、我的圖書館功能模塊、退出登錄功能模塊。</p><p><b>  3數(shù)據(jù)庫設(shè)計(jì)</b></p><p>  3.1數(shù)據(jù)庫設(shè)計(jì)概述</p><p>  在完成系統(tǒng)的需求分析和系統(tǒng)設(shè)計(jì)之后,即可進(jìn)行數(shù)據(jù)庫的設(shè)計(jì)。對(duì)于</p

23、><p>  圖書管理系統(tǒng),數(shù)據(jù)的永久性存儲(chǔ)是非常重要的。本系統(tǒng)所需的永久性數(shù)據(jù),都存儲(chǔ)在SQL Server數(shù)據(jù)庫管理系中(本系統(tǒng)以sa的身份登錄,密碼為ssz60891252)。在SQL Server中創(chuàng)建數(shù)據(jù)庫sqlibrary,并創(chuàng)建相應(yīng)系統(tǒng)的系統(tǒng)管理員信息表sysadmin_info、圖書管理員信息表admin_info、讀者信息表reader_info、圖書信息表books_info、借閱歷史記錄表his

24、tory、圖書館信息表library_info。</p><p>  在這里先使用E-R圖描述圖書借閱管理系統(tǒng)的數(shù)據(jù)模型。圖3.1圖書借閱管理系統(tǒng)E-R圖描述了該系統(tǒng)所涉及到的實(shí)體以及他們之間的關(guān)系。具體結(jié)構(gòu)如下圖所示:</p><p>  圖3.1 系統(tǒng)E-R 圖</p><p>  3.2系統(tǒng)管理員信息表結(jié)構(gòu)設(shè)計(jì)</p><p>  此表

25、主要由8個(gè)字段組成,分別是saId、saPassword、saName、sex 、Idnum 、birthday、tel和e_mail,分別用來保存系統(tǒng)管理員的編號(hào)、密碼、姓名、性別、身份證號(hào)、出生日期、電話、郵件,具體說明如表3.2所示。</p><p>  表 3.2系統(tǒng)管理員信息表sysadmin_info</p><p>  3.3圖書管理員信息表結(jié)構(gòu)設(shè)計(jì)</p>&

26、lt;p>  此表主要由8個(gè)字段組成,分別是aId、aPassword、aName、sex 、Idnum 、birthday、tel和e_mail,分別用來保存圖書管理員的編號(hào)、密碼、姓名、性別、身份證號(hào)、出生日期、電話、郵件,具體說明如表3.3所示。</p><p>  表3.3 圖書管理員信息表</p><p>  3.4 讀者信息表結(jié)構(gòu)設(shè)計(jì)</p><p&g

27、t;  此表主要由17個(gè)字段組成,分別是Id、readername、sex、IDnum 、reatype、tel、e_mail、papertype、papernum、birthday、faculty、operator、rpassword、borrow_num、cost、intime和validity,分別用來保存讀者的編號(hào)、讀者名、性別、身份證號(hào)、讀者類型、電話、郵件、證件類型、證件號(hào)碼、出生日期、學(xué)院、操作員、密碼、可借本數(shù)、辦證費(fèi)用

28、、登記時(shí)間、有效時(shí)間,具體說明如表3.4所示。</p><p>  表3.4讀者信息表reader_info</p><p>  3.5圖書信息表結(jié)構(gòu)設(shè)計(jì)</p><p>  此表主要由13個(gè)字段組成,分別是ISBN、bookname、author、translator、page、price、press、barcode、bookcase、borrowdays、int

29、ime、oprator和bstate,分別用來保存圖書的條形碼、書名、作者、譯者、頁碼、價(jià)格、出版社、圖書編號(hào)、書架、可借天數(shù)、入庫時(shí)間、操作員、是否歸還,具體說明如表3.5所示。</p><p>  表3.5圖書信息表book_info</p><p>  3.6歷史記錄信息表結(jié)構(gòu)設(shè)計(jì)</p><p>  此表主要由8個(gè)字段組成,分別是readerId、bookI

30、d、registerTime、backTime、operator、num、hstate和hmoney,分別用來保存歷史記錄的讀者編號(hào)、圖書編號(hào)、登記時(shí)間、應(yīng)歸還時(shí)間、操作員、自動(dòng)編號(hào)、是否歸還、罰金,具體說明如表3.6所示。</p><p>  表 3.6 歷史記錄信息表 history</p><p>  3.7圖書館信息表結(jié)構(gòu)設(shè)計(jì)</p><p>  該表包含

31、了圖書館的名稱,地址,聯(lián)系方式,建館時(shí)間,官方網(wǎng)站和借閱參數(shù)等信息,是對(duì)圖書館基本屬性信息的描述,方便用戶對(duì)圖書館的了解,具體說明如表3.6所示。</p><p>  表3.7圖書館信息表 library_info</p><p>  4.業(yè)務(wù)實(shí)體與實(shí)體業(yè)務(wù)處理</p><p>  為了提高系統(tǒng)代碼的可重用性,有必要將系統(tǒng)的基本業(yè)務(wù)實(shí)體抽象為類,并把經(jīng)常使用的代碼設(shè)

32、計(jì)為類。通過前面的需求分析和數(shù)據(jù)庫設(shè)計(jì)可以知道,在本系統(tǒng)中基本實(shí)體有系統(tǒng)管理員實(shí)體、圖書管理員實(shí)體、讀者實(shí)體、圖書實(shí)體、歷史記錄實(shí)體和圖書館信息實(shí)體,經(jīng)常使用的代碼為連接數(shù)據(jù)庫。所以下面把這些公共代碼部分定義為類,使其能夠更靈活地為系統(tǒng)服務(wù)。</p><p><b>  4.1業(yè)務(wù)實(shí)體</b></p><p>  業(yè)務(wù)實(shí)體是現(xiàn)實(shí)中真實(shí)存在(系統(tǒng)管理員、圖書管理員、讀者

33、、圖書、圖書館),或抽象概念(比如歷史記錄),它們?cè)谙到y(tǒng)中是由數(shù)據(jù)組成的,具有一定意義的數(shù)據(jù)結(jié)構(gòu)。本系統(tǒng)需要定義6個(gè)業(yè)務(wù)實(shí)體,下面將一一介紹。</p><p>  4.1.1系統(tǒng)管理員實(shí)體</p><p>  系統(tǒng)管理員是本系統(tǒng)最高權(quán)限的用戶,主要進(jìn)行識(shí)別管理員身份。根據(jù)數(shù)據(jù)庫中對(duì)系統(tǒng)管理員的屬性分析,可以定義系統(tǒng)管理員實(shí)體,如代碼4.1.1所示。</p><p>

34、  public class SystemAdmin {</p><p>  private String saId; //01.編號(hào)</p><p>  private String saPassword; //02.密碼</p><p>  private String saName; //

35、03.姓名</p><p>  private String sex; //04.性別</p><p>  private String Idnum; //05.身份證號(hào)</p><p>  private String birthday; //06.出生日期</p><p

36、>  private String tel; //07.電話</p><p>  private String e_mail; //08.郵件 </p><p>  //省略set與get方法</p><p><b>  }</b></p><p>  4.1

37、.2圖書管理員實(shí)體 </p><p>  圖書管理員是本系統(tǒng)最主要的用戶,主要進(jìn)行借還書業(yè)務(wù)。根據(jù)數(shù)據(jù)庫中對(duì)圖書管理員的屬性分析,可以定義圖書管理員實(shí)體,如代碼4.1.2所示。</p><p>  public class Admin {</p><p>  private String aId; //01.編號(hào)</p>

38、<p>  private String aPassword; //02.密碼</p><p>  private String aName; //03.姓名</p><p>  private String sex; //04.性別</p><p>  private String

39、Idnum; //05.身份證號(hào)</p><p>  private String birthday; //06.出生日期</p><p>  private String tel; //07.電話</p><p>  private String e_mail; //0

40、8.郵件</p><p>  //省略set與get方法</p><p><b>  }</b></p><p><b>  4.1.3讀者實(shí)體</b></p><p>  本系統(tǒng)為圖書管理系統(tǒng),主要針對(duì)的是讀者借還書處理。根據(jù)數(shù)據(jù)庫中對(duì)讀者的屬性分析,可以定義讀者實(shí)體,如代碼4.1.3所示。<

41、;/p><p>  public class Reader {</p><p>  private String rpassword; //01.讀者姓名 </p><p>  private String reaname; //01.讀者姓名</p><p>  private String sex;

42、 // 02.性別</p><p>  private String IDnum; //03.身份證號(hào)</p><p>  private String birthday; //04.出生日期</p><p>  private String faculty; //05.學(xué)院,系</p>

43、<p>  private String tel; //06.電話</p><p>  private String e_mail; //07.郵件</p><p>  private String papertype; //08.證件類型(學(xué)生證,身份證,圖書證)</p><p>  private

44、 String papernum; //09.證件號(hào)碼</p><p>  private String Id; //10.讀者編號(hào)</p><p>  private String reatype; //11.讀者類型(本科生,研究生,老師,校外人員)</p><p>  private int borrow

45、_num; //12.可借圖書本數(shù)</p><p>  private String operator; //13.操作員</p><p>  private double cost; //14.辦證費(fèi)用</p><p>  private String intime; //15.登記時(shí)間</p&

46、gt;<p>  private String validity; //16.有效時(shí)間</p><p>  //省略set與get方法</p><p><b>  }</b></p><p><b>  4.1.4圖書實(shí)體</b></p><p>  圖書是整個(gè)業(yè)務(wù)流程中

47、的處理對(duì)象。根據(jù)數(shù)據(jù)庫中對(duì)圖書的屬性分析,可以定義圖書實(shí)體,如代碼4.1.4所示。</p><p>  public class Books {</p><p>  private String ISBN; //01.條形碼</p><p>  private String bookname; //02.書名</p><p>

48、  private String author; //03.作者</p><p>  private String translator; //04.譯者</p><p>  private int page; //05.頁碼</p><p>  private double price; //06.價(jià)格</p><

49、p>  private String press; //07.出版社</p><p>  private String barcode; //08.圖書編號(hào)(主鍵) </p><p>  private String bookcase; //09.圖書所在的書架</p><p>  private int borrowdays; //10.

50、可借閱天數(shù)(圖書類型)</p><p>  private String intime; //11.入庫時(shí)間</p><p>  //省略set與get方法</p><p><b>  }</b></p><p>  4.1.5歷史記錄實(shí)體</p><p>  歷史記錄是讀者借書與還書的記

51、錄,方便借還書操作。根據(jù)數(shù)據(jù)庫中對(duì)歷史記錄的屬性分析,可以定義歷史記錄實(shí)體,如代碼4.1.5所示。</p><p>  public class History {</p><p>  private String Id; //自動(dòng)編號(hào)(序號(hào))</p><p>  private String readerId;

52、 //讀者編號(hào)</p><p>  private String bookId; //圖書編號(hào)</p><p>  private String registerTime; //登記時(shí)間</p><p>  private String backTime; //歸還時(shí)間<

53、;/p><p>  private int hstate; //是否已經(jīng)歸還</p><p>  private String operator; //操作員</p><p>  private double money; //罰金</p><p>  //省

54、略set與get方法</p><p><b>  }</b></p><p>  4.1.6圖書館實(shí)體</p><p>  圖書館實(shí)體主要用于系統(tǒng)管理設(shè)置更改圖書館信息。根據(jù)數(shù)據(jù)庫中對(duì)圖書館的屬性分析,可以定義圖書館實(shí)體,如代碼4.1.5所示。</p><p>  public class LibInfor {</

55、p><p>  private String LibName;</p><p>  private String Curator; //館長(zhǎng)</p><p>  private String LibAddress; </p><p>  private String E_Mail;</p><p>  private

56、String URL;</p><p>  private String FoundTime;</p><p>  private String Introduction;</p><p><b>  //借閱參數(shù)</b></p><p>  private int Stu1BorrowDay; //本科

57、生</p><p>  private int Stu2BorrowDay; //研究生</p><p>  private int Stu3BorrowDay; //博士生</p><p>  private int TeaBorrowDay; //教師</p><p>  private

58、double Cost; //辦證費(fèi)用</p><p>  private double DayFine; //超期一天罰款 </p><p>  //省略set與get方法</p><p><b>  }</b></p><p><b>  

59、4.2數(shù)據(jù)庫連接類</b></p><p>  之所以把數(shù)據(jù)庫連接也定義為公共代碼,是因?yàn)樵诒鞠到y(tǒng)中需要多長(zhǎng)頻繁地與數(shù)據(jù)庫建立連接,這樣可以提高代碼的可重用性。 使用數(shù)據(jù)庫驅(qū)動(dòng)和URL的setter與getter方法,這樣代碼就可直接連接其他數(shù)據(jù)庫。下面定義此連接類如代碼4.2所示。</p><p>  public class SQDBConnecter {</p>

60、;<p>  // 1.Connection ct=null; //連接對(duì)象</p><p>  public Connection getConnection() throws SQLException{ //返回連接對(duì)象方法</p><p><b>  try{</b></p><p>  Clas

61、s.forName(getDriver());//加載驅(qū)動(dòng) </p><p>  }catch(Exception e){</p><p>  e.printStackTrace();</p><p><b>  }</b></p><p>  Connection ct=DriverManager.getCon

62、nection(getUrl(),getName(),getPassword()); //連接上數(shù)據(jù)庫實(shí)例 </p><p>  return ct; </p><p><b>  }</b></p><p>  //2.私有數(shù)據(jù)成員&

63、lt;/p><p>  private String driver="com.microsoft.sqlserver.jdbc.SQLServerDriver"; //數(shù)據(jù)庫驅(qū)動(dòng)</p><p>  private String url="jdbc:sqlserver://localhost:1433;databaseName=sqlibrary&quo

64、t;; //URL</p><p>  private String name="sa"; //用戶名</p><p>  private String password="ssz60891252"; //密碼</p><p>  //3.省略set與get方法</p><

65、;p><b>  }</b></p><p><b>  4.3實(shí)體業(yè)務(wù)處理</b></p><p>  業(yè)務(wù)處理是本系統(tǒng)的重點(diǎn),是響應(yīng)用戶界面操作與增刪查改數(shù)據(jù)庫數(shù)據(jù)的核心代碼,主要負(fù)責(zé)系統(tǒng)的日常事務(wù)處理,比如:登錄、圖書檢索、用戶添加、借還書等等核心功能。由于各個(gè)部分代碼很長(zhǎng),且性質(zhì)相似,此處只舉出部分代碼(以歷史記錄為例),其它業(yè)務(wù)處

66、理僅給出相應(yīng)方法。(詳細(xì)代碼,請(qǐng)參考package library.sqdb.entity.manager)</p><p>  4.3.1歷史記錄業(yè)務(wù)處理</p><p>  歷史記錄主要是記錄圖書館借還書籍情況,以便于對(duì)借還書的操作與查詢。每一個(gè)讀者的每次借書記錄都是一條歷史信息,主要包括圖書編號(hào)、讀者編號(hào)、圖書狀態(tài)、罰金等信息。有關(guān)歷史記錄的業(yè)務(wù)處理有1.添加一條新的歷史記錄;2.當(dāng)

67、讀者進(jìn)行還書時(shí)修改圖書狀態(tài)3.當(dāng)讀者進(jìn)行續(xù)借時(shí)修改歸還時(shí)間;4.使用讀者編號(hào)和狀態(tài)返回借還書記錄;5.返回某一圖書的借還歷史信息;6. 返回具體時(shí)間段某一讀者的借還歷史信息;7 返回具體時(shí)間段某一圖書的借還歷史信息;8.返回某一時(shí)間段內(nèi)的全部歷史信息;9.由圖書編號(hào)返回超期圖書;10. 由讀者編號(hào)返回超期圖書;11.返回所有超期圖書;</p><p>  public boolean addHistory(His

68、tory hs){ //形參是一個(gè)歷史記錄對(duì)象,返回布爾值 【添加】</p><p>  sql="insert into history "</p><p>  +"(readerId,bookId,operator)"</p><p>  +"values(?,?,?)";

69、 //向表history中插入記錄</p><p><b>  try{</b></p><p>  PreparedStatement ps=getPreparedStatement(sql); //調(diào)用getPreparedStatement()方法</p><p>  ps.setString(1, hs.getR

70、eaderId()); //綁定 readerId字段</p><p>  ps.setString(2, hs.getBookId()); //綁定 bookId字段</p><p>  ps.setString(3, hs.getOperator()); //綁定 operator字段&

71、lt;/p><p>  ps.executeUpdate(); //執(zhí)行更新語句</p><p>  ps.close();</p><p>  return true;</p><p>  }catch(Exception e){</p><p>  System.o

72、ut.println(e);</p><p>  return false;</p><p><b>  }</b></p><p><b>  }</b></p><p>  //通過數(shù)據(jù)庫連接類的實(shí)例的getConnection()方法取得一個(gè)數(shù)據(jù)庫連接</p><p>

73、  private PreparedStatement getPreparedStatement(String sql) throws SQLException{</p><p>  return new SQDBConnecter().getConnection().prepareStatement(sql);</p><p><b>  }</b></p&

74、gt;<p>  public boolean backbook(String bookid){</p><p>  sql="update history set hstate=1 where bookId=?"; //【修改】</p><p><b>  try{</b></p><p>  Prepa

75、redStatement ps=getPreparedStatement(sql);</p><p>  ps.setString(1, bookid);</p><p>  ps.executeUpdate();</p><p>  ps.close();</p><p>  return true;</p><p>

76、;  }catch(SQLException e){</p><p>  e.printStackTrace();</p><p>  return false;</p><p><b>  }</b></p><p><b>  }}</b></p><p>  publi

77、c boolean againBorrow(String bookid); //續(xù)借</p><p>  private boolean getBookChaoqi(String id);//某一圖書是否超期</p><p>  private boolean getExistReader(String id);//某一讀者是否存在</p><p>  priv

78、ate ResultSet getHistoryByReaderId(String id);//返回某一讀者的歷史記錄</p><p>  //根據(jù)借閱狀態(tài)返回某一讀者的歷史記錄</p><p>  private ResultSet getByReaderIdandstate(String id,int i);</p><p>  private ResultSe

79、t getHistoryByBookId(String id); //返回某一圖書的歷史記錄</p><p>  //根據(jù)圖書編號(hào),時(shí)間段返回該書的歷史記錄</p><p>  private ResultSet getHistoryByRIdIntime(String id,String time1,String time2);</p><p>  //根據(jù)讀者編

80、號(hào),時(shí)間段返回讀者的歷史記錄</p><p>  private ResultSet getHistoryByBIdIntime(String id,String time1,String time2)</p><p>  //返回某段時(shí)間的所有歷史記錄</p><p>  private ResultSet getHistoryByIntime(String ti

81、me1,String time2);</p><p>  private ResultSet getChaoqiTushu(String bookbar);//根據(jù)圖書編號(hào)返回超期圖書</p><p>  private ResultSet getChaoqiDuzhe(String nameId); //根據(jù)讀者編號(hào)返回超期圖書</p><p>  private

82、 ResultSet getAllChaoqi();//返回所有超期圖書</p><p>  //Step1:使用toArrayList()方法,把結(jié)果集放到ArrayList集合對(duì)象中</p><p>  private ArrayList<History> toArrayList(ResultSet rs){</p><p><b>  t

83、ry {</b></p><p>  ArrayList<History> al = new ArrayList<History>();</p><p>  History hs = null;</p><p>  while (rs.next()) {</p><p>  hs=new History()

84、;</p><p>  hs.setId(rs.getString("num"));</p><p>  hs.setReaderId(rs.getString("readerId"));</p><p>  hs.setBookId(rs.getString("bookId"));</p>

85、<p>  hs.setBackTime (rs.getString("backTime"));</p><p>  hs.setRegisterTime(rs.getString("registerTime"));</p><p>  hs.setOperator(rs.getString("operator"));&

86、lt;/p><p>  hs.setHstate(rs.getInt("hstate"));</p><p>  hs.setMoney(rs.getDouble("hmoney"));</p><p>  al.add(hs);</p><p><b>  }</b></p&g

87、t;<p>  rs.close();</p><p>  return al;</p><p>  } catch (SQLException ex) {</p><p>  System.out.print(ex.getMessage());</p><p>  return null;</p><p&g

88、t;<b>  }</b></p><p><b>  }</b></p><p>  //Step2:從ArrayList集合對(duì)象,取得表格數(shù)據(jù)模型DefaultTableModel</p><p>  private DefaultTableModel toDefaultTableModel(ArrayList<

89、History> al){ </p><p>  int row=al.size();</p><p>  Object[][] o=new Object[row][8];</p><p>  History hs=null;</p><p>  for(int i=0;i<row;i++){</p><p&g

90、t;  hs=al.get(i);</p><p>  for(int k=0;k<8;k++){</p><p><b>  if(k==0){</b></p><p>  o[i][k]=Integer.valueOf(hs.getId());</p><p>  }else if(k==1){</p&g

91、t;<p>  o[i][k]=hs.getReaderId();</p><p>  }else if(k==2){</p><p>  o[i][k]=hs.getBookId();</p><p>  }else if(k==3){</p><p>  o[i][k]=hs.getRegisterTime();</p

92、><p>  }else if(k==4){</p><p>  o[i][k]=hs.getBackTime();</p><p>  }else if(k==5){</p><p>  o[i][k]=hs.getHstate()==1?"空閑":"已借出";</p><p> 

93、 }else if(k==6){</p><p>  o[i][k]=hs.getOperator();</p><p><b>  }else{</b></p><p>  o[i][k]=Double.valueOf(hs.getMoney()); </p><p><b>  }</b><

94、;/p><p><b>  }</b></p><p><b>  }</b></p><p>  String col[]={"序號(hào)","讀者編號(hào)","圖書編號(hào)","借書時(shí)間","還書時(shí)間","圖書狀態(tài)",

95、"操作員","罰金(元)"};</p><p>  return new MyDefaultTableModel(o,col);</p><p><b>  }</b></p><p>  //Step3:使用toDefaultTableModel()方法,得到具體某個(gè)sql語句的表格數(shù)據(jù)模型</p

96、><p>  public DefaultTableModel getDefaultTableModel(int flag,String bianhao,String time1,String time2){//形參是查詢種類,讀者編號(hào),返回表格模型</p><p>  if(flag==1){</p><p><b>  try {</b><

97、;/p><p>  return toDefaultTableModel(this.toArrayList(this.getHistoryByReaderId(bianhao))); //讀者歷史查詢</p><p>  } catch (SQLException ex) {</p><p>  Logger.getLogger(HistoryManager.class

98、.getName()).log(Level.SEVERE, null, ex);</p><p>  return null;</p><p><b>  }</b></p><p>  }else if(flag==2){</p><p><b>  try {</b></p>&l

99、t;p>  return toDefaultTableModel(this.toArrayList(this.getHistoryByBookId(bianhao))); //圖書外借查詢</p><p>  } catch (SQLException ex) {</p><p>  Logger.getLogger(HistoryManager.class.getName()).l

100、og(Level.SEVERE, null, ex);</p><p>  return null;</p><p><b>  }</b></p><p>  }else if(flag==3){</p><p><b>  try {</b></p><p>  retu

101、rn toDefaultTableModel(this.toArrayList(this.getHistoryByRIdIntime(bianhao,time1,time2))); //全館超期未還的圖書查詢</p><p>  } catch (SQLException ex) {</p><p>  Logger.getLogger(HistoryManager.class.get

102、Name()).log(Level.SEVERE, null, ex);</p><p>  return null;</p><p><b>  } </b></p><p>  }else if(flag==4){</p><p><b>  try {</b></p>&l

103、t;p>  return toDefaultTableModel(this.toArrayList(this.getHistoryByBIdIntime(bianhao,time1,time2))); //某讀者超期未還的圖書</p><p>  } catch (SQLException ex) {</p><p>  Logger.getLogger(HistoryManag

104、er.class.getName()).log(Level.SEVERE, null, ex);</p><p>  return null;}</p><p>  }else if(flag==5){</p><p><b>  try {</b></p><p>  return toDefaultTableMode

105、l(this.toArrayList(this.getHistoryByIntime(time1,time2))); //某讀者超期未還的圖書</p><p>  } catch (SQLException ex) {</p><p>  Logger.getLogger(HistoryManager.class.getName()).log(Level.SEVERE, null, e

106、x);</p><p>  return null;</p><p><b>  } </b></p><p><b>  }else{</b></p><p>  return null;</p><p><b>  }</b></p>

107、;<p><b>  }</b></p><p>  //Step4:定義我自己的表格模型內(nèi)部類</p><p>  class MyDefaultTableModel extends DefaultTableModel{</p><p>  public MyDefaultTableModel(Object[][] data,

108、Object[] columnNames){</p><p>  super(data,columnNames);</p><p><b>  } </b></p><p><b>  @Override</b></p><p>  public boolean isCellEditable(int

109、 rowIndex, int columnIndex){</p><p>  return false;</p><p><b>  } </b></p><p><b>  } </b></p><p>  4.3.2讀者業(yè)務(wù)處理</p><p>  public Re

110、ader getReaderByName(String name);//通過姓名返回讀者對(duì)象</p><p>  public Reader getReaderById(String card);//通過讀者編號(hào)取得讀者對(duì)象</p><p>  public boolean login(Reader reader);//判斷讀者名和密碼是否正確</p><p>  

111、public boolean ExistByName(String name);//判斷是否存在此姓名的讀者</p><p>  public boolean ExistById(String id);//判斷某編號(hào)的讀者是否存在</p><p>  public boolean addReader(Reader reader);//增加新讀者</p><p>  

112、public boolean delete(String id);//刪除一個(gè)讀者</p><p>  public boolean change(String nameId ,String Newpassword);//修改讀者密碼</p><p>  public boolean changeCom(String tel ,String e_mail,String nameId);//

113、修改郵箱電話</p><p>  public boolean UpdateReader(Reader r,String nameId);//更新讀者的全部信息</p><p>  private ResultSet getReaderAll();//取得所有讀者的結(jié)果集</p><p>  private ResultSet getReaderRsByName(S

114、tring name);//取得某一姓名的讀者的結(jié)果集</p><p>  private ResultSet getReaderRsById(String id);//驅(qū)動(dòng)某一編號(hào)的讀者的結(jié)果集</p><p>  4.3.3系統(tǒng)管理員業(yè)務(wù)處理</p><p><b>  同讀者類似。</b></p><p>  4.

115、3.4圖書管理員業(yè)務(wù)處理</p><p><b>  同讀者類似。</b></p><p>  4.3.5圖書業(yè)務(wù)處理</p><p>  public Books getBooksById(String barcode);//通過圖書編號(hào)取得一個(gè)圖書實(shí)例</p><p>  public boolean addBook

116、s(Books book);//增加新圖書</p><p>  public boolean UpdateBooks(Books book,String barcode);//更新一本圖書信息</p><p>  public boolean setN(String barcode);//更改圖書狀態(tài)為空閑狀態(tài)</p><p>  public boolean se

117、tY(String barcode);//更改圖書狀態(tài)為借閱狀態(tài)</p><p>  public boolean delete(String id);//根據(jù)圖編號(hào)刪除圖書</p><p>  public DefaultTableModel getMessage();//取得所有圖書結(jié)果集</p><p>  public DefaultTableModel g

118、etMessageById(String barcode);//根據(jù)圖書編號(hào)取得圖書信息</p><p>  public DefaultTableModel getMessageByName(String name);//取得書名name的圖書信息</p><p>  public DefaultTableModel getMessage(int bstate);//取得圖書狀態(tài)為bst

119、ate的圖書信息</p><p>  4.3.6圖書館信息業(yè)務(wù)處理</p><p>  public LibInfor getLibInfor();//取得圖書館的一個(gè)實(shí)例</p><p>  public boolean ChangeTyepStr(LibInfor lib );//更新圖書館簡(jiǎn)介</p><p>  public bool

120、ean ChangeTyepInt(LibInfor lib );//更新圖書館參數(shù)</p><p><b>  4.4工廠類</b></p><p>  為了降低業(yè)務(wù)控制代碼與上述業(yè)務(wù)邏輯處理代碼的耦合性,下面定義一個(gè)工廠類,用與生成業(yè)務(wù)邏輯處理類的對(duì)象。ManagerFactory的內(nèi)容如代碼4.4所示。</p><p>  public

121、class ManagerFactory {</p><p>  protected ManagerFactory(){</p><p><b>  }</b></p><p>  //實(shí)例化ManagerFactory</p><p>  public static ManagerFactory newInstance

122、(){</p><p>  return new ManagerFactory();</p><p><b>  }</b></p><p>  //取得圖書業(yè)務(wù)處理對(duì)象</p><p>  public BooksManager getBooksManager(){</p><p>  retu

溫馨提示

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

評(píng)論

0/150

提交評(píng)論