

版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- java課程設(shè)計(jì)----圖書館管理系統(tǒng)
- java課程設(shè)計(jì)——圖書館管理系統(tǒng)
- java圖書館管理系統(tǒng)課程設(shè)計(jì)
- java課程設(shè)計(jì)報(bào)告---圖書館管理系統(tǒng)
- java課程設(shè)計(jì)報(bào)告---圖書館管理系統(tǒng)
- c語言圖書館管理系統(tǒng)課程設(shè)計(jì)---高校圖書館管理系統(tǒng)
- c語言圖書館管理系統(tǒng)課程設(shè)計(jì)
- 圖書館管理系統(tǒng)c語言課程設(shè)計(jì)
- c語言課程設(shè)計(jì)-圖書館管理系統(tǒng)
- java課程設(shè)計(jì)---圖書館信息管理系統(tǒng)
- c語言課程設(shè)計(jì)--圖書館系統(tǒng)
- c語言實(shí)現(xiàn)圖書館課程設(shè)計(jì)報(bào)告--圖書借閱管理系統(tǒng)
- java數(shù)據(jù)庫課程設(shè)計(jì) 圖書館管理系統(tǒng)
- java數(shù)據(jù)庫課程設(shè)計(jì)---圖書館管理系統(tǒng)
- c語言課程設(shè)計(jì)報(bào)告---圖書館管理系統(tǒng)
- c語言課程設(shè)計(jì)-- 圖書館借閱管理系統(tǒng)
- 圖書館管理系統(tǒng)課程設(shè)計(jì)
- 課程設(shè)計(jì)--圖書館管理系統(tǒng)
- 圖書館管理系統(tǒng)課程設(shè)計(jì)
- java 圖書館管理系統(tǒng)(附全代碼)課程設(shè)計(jì)報(bào)告
評(píng)論
0/150
提交評(píng)論