版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 畢業(yè)設(shè)計(jì)(論文)</b></p><p> 題目: 圖書館管理系統(tǒng) </p><p> 姓 名 陳 平 </p><p> 學(xué) 號 </p><p> 專 業(yè)
2、 計(jì)算機(jī)網(wǎng)絡(luò) </p><p> 指導(dǎo)教師 周亞鳳 </p><p><b> 南京航空航天大學(xué)</b></p><p><b> 2012年4月</b></p><p><b> 目錄</b></p><
3、;p><b> 摘要III</b></p><p><b> 前言IV</b></p><p> 第一章 圖書館管理系統(tǒng)分析1</p><p> 1.1 需求分析1</p><p> 1.2 功能分析2</p><p> 1.3 系統(tǒng)用例圖設(shè)計(jì)2
4、</p><p> 1.4 繪制系統(tǒng)流程圖3</p><p> 1.5 系統(tǒng)的開發(fā)環(huán)境4</p><p> 第二章 數(shù)據(jù)庫分析與設(shè)計(jì)5</p><p> 2.1 數(shù)據(jù)庫分析5</p><p> 2.2 數(shù)據(jù)庫概念設(shè)計(jì)5</p><p> 2.3 數(shù)據(jù)邏輯結(jié)構(gòu)設(shè)計(jì)7<
5、/p><p> 2.4 各表之間的聯(lián)系圖9</p><p> 第三章 系統(tǒng)設(shè)計(jì)與功能實(shí)現(xiàn)10</p><p> 3.1 數(shù)據(jù)庫Dao類的構(gòu)建10</p><p> 3.2 系統(tǒng)登錄模塊11</p><p> 3.3 主窗體模塊13</p><p> 3.4 圖書類別管理模塊1
6、5</p><p> 3.5 圖書信息管理模塊17</p><p> 3.6 讀者信息管理模塊21</p><p> 3.7 圖書訂購管理模塊24</p><p> 3.8 圖書借閱管理模塊27</p><p> 3.9 系統(tǒng)維護(hù)模塊30</p><p> 第四章 系統(tǒng)測試
7、35</p><p> 4.1 測試項(xiàng)目35</p><p> 4.2 測試用例35</p><p><b> 結(jié)束語37</b></p><p><b> 參考文獻(xiàn)38</b></p><p><b> 圖書館管理系統(tǒng)</b><
8、;/p><p><b> 摘要</b></p><p> 圖書館管理系統(tǒng)是采用Java做前臺,后臺數(shù)據(jù)庫則采用的是SQL Server 2005,本系統(tǒng)提供6個(gè)功能模塊,分別是圖書類別管理模塊、圖書信息管理模塊、讀者信息管理模塊、新書訂購管理模塊、圖書借閱模塊,以及系統(tǒng)維護(hù)模塊。這6個(gè)模塊里又有許多子模塊,通過這些模塊之間的相互連接與配合,完成操作員發(fā)出的各種指令。&
9、lt;/p><p> 圖書館管理系統(tǒng)是一個(gè)供內(nèi)部人員使用的系統(tǒng)。而圖書館的工作人員也分為兩類,一類是操作人員,主要負(fù)責(zé)圖書的借閱和歸還的工作;一類是管理員,除了操作人員的所有功能外,還能夠?qū)斜?、書籍信息、讀者信息等進(jìn)行管理。</p><p> 論文將全面介紹所設(shè)計(jì)的圖書館管理系統(tǒng)的系統(tǒng)功能和業(yè)務(wù)流程,并對系統(tǒng)進(jìn)行詳細(xì)的數(shù)據(jù)分析和設(shè)計(jì),最終使用Java完成系統(tǒng)開發(fā)。</p>
10、<p> 關(guān)鍵詞:圖書館管理系統(tǒng),SQL Server 2005,Java</p><p><b> 前言</b></p><p> 隨著社會的發(fā)展,人們對于知識的需求也在不斷地增長。書籍作為人們獲取并增長知識的主要途徑,使得圖書館在人們生活中占有了一定位置。但是近幾年來,隨著書量的不斷增長,造成了書庫空間極度不足,圖書擠壓,管理不善。這些都直接影
11、響了讀者對圖書館藏書的充分利用。這時(shí)圖書館就特別需要開發(fā)一套圖書館管理系統(tǒng),通過該系統(tǒng)來提高圖書館的管理效率,從而減少管理方面的工作流和成本。</p><p> 一個(gè)現(xiàn)代化的圖書館在正常運(yùn)營中總是面對大量的讀者信息,書籍信息以及兩者相互作用產(chǎn)生的借書信息,還書信息。面對圖書館數(shù)以萬計(jì)的圖書,紛繁復(fù)雜的讀者信息,頻繁更替的借還書信息,傳統(tǒng)的直接方法不但管理出現(xiàn)漏洞,造成損失。因此有一個(gè)智能化、系統(tǒng)化、信息化的圖書
12、管理系統(tǒng)十分重要的。充分利用計(jì)算機(jī)的功能實(shí)現(xiàn)對讀者管理、書籍管理,借閱管理等自動化控制,將會使圖書館的工作大大減弱。方便友好的圖形界面、簡便的操作、完善的數(shù)據(jù)庫管理。將會使得圖書館系統(tǒng)極大限度的應(yīng)用于現(xiàn)代化圖書管理中。 </p><p> 第一章 圖書館管理系統(tǒng)分析</p><p><b> 1.1 需求分析</b></p><p> 圖
13、書館管理系統(tǒng)是一個(gè)高度集成的圖書信息處理系統(tǒng),通過將圖書館的各種功能進(jìn)行整合,從而達(dá)到顯示檢索信息,提高工作效率,降低管理成本等目的。一個(gè)典型的圖書館管理系統(tǒng)應(yīng)該能夠管理所有的圖書種類,圖書信息以及讀者信息,還需要提供各種圖書信息的檢索查詢功能。該系統(tǒng)還需要能夠?qū)D書的借閱,歸還進(jìn)行管理,并對讀者的罰款進(jìn)行自動計(jì)算。通過該系統(tǒng)的自動化管理,能夠大大減少圖書館管理人員,還能減少管理人員的工作任務(wù),從而降低管理開銷和成本。</p>
14、;<p> 一個(gè)完整的圖書館管理系統(tǒng)包括前臺和后臺,前臺主要是顯示在計(jì)算機(jī)屏幕上的顯示界面,有各種指令按鈕,操作框以及文本框,后臺主要是為前臺的一些操作提供一些必要的數(shù)據(jù),也就是一個(gè)相對于系統(tǒng)比較完整的數(shù)據(jù)庫,操作員以及各類圖書的信息,借書者的信息等等。</p><p> 一個(gè)最基本的圖書館管理系統(tǒng)要有如下幾個(gè)重要功能:</p><p> 用戶在借書超期的情況下得到來自
15、管理員的提醒。</p><p> 管理員可以方便進(jìn)行圖書管理,用戶管理,管理員管理。圖書管理包括圖書信息以及圖書分類的添加,修改,刪除。用戶管理包括用戶信息的添加,刪除,修改。管理員管理包括管理員信息的添加,刪除,修改等。</p><p> 用戶和管理員可以修改自己的密碼,修改前需先核實(shí)自己的原始密碼。</p><p> 未注冊用戶(游客)也可以瀏覽所有的圖書
16、信息和分類信息,但是無法借閱。</p><p> ?。?)實(shí)現(xiàn)模糊查詢,使用戶得到更多的相關(guān)記錄。并且考慮使用的方便性,一些經(jīng)常使用的輸入無須用戶輸入,比如進(jìn)行圖書查詢時(shí)圖書分類只須用戶做選擇就可以。</p><p> ?。?)考慮程序執(zhí)行操作時(shí)可能出現(xiàn)的情況,比如刪除圖書分類時(shí)該分類下存在圖書,程序自動跳轉(zhuǎn)該分類圖書查看。刪除某個(gè)用戶,如果存在借書記錄則不允許刪除,跳轉(zhuǎn)到該用戶的借書記錄
17、。等待管理員確認(rèn)該用戶所借圖書已經(jīng)全部歸還之后才允許刪除該用戶信息。</p><p> 一個(gè)圖書館管理系統(tǒng)要是能實(shí)現(xiàn)以上的各種功能,那么這個(gè)圖書館管理系統(tǒng)也就算是比較成功的一個(gè)系統(tǒng)了。</p><p><b> 1.2 功能分析</b></p><p> 根據(jù)以上需求分析,我所設(shè)計(jì)的圖書館管理系統(tǒng)有6個(gè)功能模塊,分別是圖書類別管理模塊,圖
18、書信息管理模塊,讀者信息管理模塊,新書訂購管理模塊,圖書借閱模塊以及系統(tǒng)維護(hù)模塊。其中各功能模塊的具體說明如下:</p><p> 圖書類別管理模塊:該模塊主要負(fù)責(zé)管理圖書館的圖書種類信息,如圖書種類的名稱、可借天數(shù)、罰款數(shù)目等信息。</p><p> 圖書信息管理模塊:該模塊主要負(fù)責(zé)管理圖書館的圖書信息,如圖書編號、圖書名稱、作者、出版社等信息。</p><p&g
19、t; 讀者信息管理模塊:該模塊主要負(fù)責(zé)管理圖書館的讀者信息,如讀者編號、讀者信息、證件號碼、最大借書量等信息。</p><p> 圖書訂購管理模塊:該模塊主要負(fù)責(zé)管理圖書館的新書訂購信息、包括新書訂購和驗(yàn)收新書兩個(gè)子模塊。</p><p> 圖書借閱管理模塊:該模塊主要負(fù)責(zé)圖書館的書籍借閱和歸還信息,包括圖書借閱、圖書歸還、圖書搜索3個(gè)子模塊。</p><p>
20、; 系統(tǒng)維護(hù)模塊:該模塊主要負(fù)責(zé)圖書館的工作人員信息,包括用戶管理和更改系統(tǒng)口令兩個(gè)子模塊。</p><p> 1.3 系統(tǒng)用例圖設(shè)計(jì)</p><p> 圖書館管理系統(tǒng)是一個(gè)內(nèi)部人員使用的系統(tǒng),也就是說不是所有的人都能夠使用它,只有圖書館的工作人員才能使用。而圖書館的工作人員也分為兩類,一類是操作人員,主要負(fù)責(zé)圖書的借閱和歸還的工作;一類是管理員,除了操作人員的所有功能外,還能夠?qū)?/p>
21、籍列表,書籍信息,讀者信息等進(jìn)行管理。下面以管理員為例繪制其所對應(yīng)的用例圖如圖1.1所示。</p><p> 圖1.1 管理員用例圖</p><p> 1.4 繪制系統(tǒng)流程圖</p><p> 本系統(tǒng)首先需要對用戶的身份進(jìn)行識別,只有合法的用戶才能進(jìn)入系統(tǒng),否則將無法進(jìn)入系統(tǒng)。進(jìn)入系統(tǒng)后,首先打開系統(tǒng)主窗體,在系統(tǒng)首頁的菜單欄或者功能區(qū)可以選擇各種導(dǎo)航鏈接來進(jìn)
22、行各種操作。由于不同權(quán)限的用戶對于系統(tǒng)有不同的功能,下面以功能最多的管理員為例,其系統(tǒng)流程圖如圖1.2所示。</p><p> 圖1.2 系統(tǒng)流程圖</p><p> 1.5 系統(tǒng)的開發(fā)環(huán)境</p><p> 圖書館管理系統(tǒng)的具體開發(fā)環(huán)境要求如下:</p><p> 系統(tǒng)開發(fā)平臺:Eclipse 3.4。</p><
23、;p> 數(shù)據(jù)庫管理系統(tǒng)軟件:SQL Server 2005。</p><p> 運(yùn)行平臺:Windows 7。</p><p> Java開發(fā)包:JDK 5.0以上。</p><p> 分辨率:800×600以上。</p><p> GUI開發(fā)包:Swing。</p><p> 第二章 數(shù)據(jù)
24、庫分析與設(shè)計(jì)</p><p><b> 2.1 數(shù)據(jù)庫分析</b></p><p> 在開發(fā)圖書館管理系統(tǒng)時(shí),考慮到圖書量大,數(shù)據(jù)庫維護(hù)大的特點(diǎn),選用SQL Server 2005作為數(shù)據(jù)庫管理系統(tǒng)。在SQL Server 2005中新增一個(gè)數(shù)據(jù)庫,其數(shù)據(jù)庫名為db_library。數(shù)據(jù)庫中可以包含圖書信息、圖書類別信息、圖書借閱信息、操作員信息、圖書訂購信息及讀
25、者信息等實(shí)體,用來存儲不同的信息。</p><p> 2.2 數(shù)據(jù)庫概念設(shè)計(jì)</p><p> 本系統(tǒng)一共設(shè)計(jì)規(guī)劃出6個(gè)實(shí)體,分別是圖書類別信息實(shí)體、圖書信息實(shí)體、讀者信息實(shí)體、操作員實(shí)體、圖書借閱信息實(shí)體以及圖書訂購信息實(shí)體。</p><p> 圖書的類別有很多,因此可以建立一個(gè)圖書館類別信息表,專門用來保存圖書的類別信息。同時(shí)因?yàn)槊糠N類別的書籍閱讀時(shí)間有所
26、不同,所以需要在類別表中保存該類別可借天數(shù)信息。圖書類別信息實(shí)體E-R圖如圖2.1所示。</p><p> 圖2.1 圖書類別信息實(shí)體E-R圖</p><p> 對于圖書館來說最重要的就是要管理其下的書籍,所以需要建立一個(gè)圖書信息表,用來保存圖書的所有信息。圖書信息實(shí)體E-R圖如圖2.2所示。</p><p> 圖2.2 圖書信息實(shí)體E-R圖</p>
27、;<p> 要想在圖書館借書首先需要進(jìn)行登記并交付押金。領(lǐng)取讀書卡才能借書。所以需要建立一個(gè)讀者信息表來保存圖書館的所有讀者的登記信息。讀者信息實(shí)體E-R圖如圖2.3所示。</p><p> 圖2.3 讀者信息實(shí)體E-R圖</p><p> 圖書館里一般有一個(gè)以上的系統(tǒng)操作員,需要建立一個(gè)操作員信息表,用來保存操作員的身份信息。操作員信息實(shí)體E-R圖如圖2.4所示。&l
28、t;/p><p> 圖2.4 操作員信息實(shí)體E-R圖</p><p> 圖書館最大的功能就是能夠借書,這時(shí)需要建立一個(gè)圖書借閱信息表,用來保存讀者的借書信息。圖書的借閱信息實(shí)體E-R圖如圖2.5所示。</p><p> 圖2.5 圖書的借閱信息實(shí)體E-R圖</p><p> 圖書館除了借書,還需要到出版社或其他代理商訂購新書,這是需要建立
29、一個(gè)圖書訂購信息表,用來保存所有的訂購信息。圖書訂購信息實(shí)體E-R圖如圖2.6所示。</p><p> 圖2.6 圖書訂購信息實(shí)體E-R圖</p><p> 2.3 數(shù)據(jù)邏輯結(jié)構(gòu)設(shè)計(jì)</p><p> 根據(jù)設(shè)計(jì)好的各實(shí)體E-R圖創(chuàng)建數(shù)據(jù)庫的邏輯結(jié)構(gòu),數(shù)據(jù)庫各表的結(jié)構(gòu)如下:</p><p> ?。?)圖書類別信息采表用來儲存所有的圖書類別
30、信息,包括圖書類別編號、圖書類別名稱、可借天數(shù)以及遲還一天的罰款數(shù)目4個(gè)字段。該表的邏輯結(jié)構(gòu)如表2.1所示。</p><p> 表2.1 圖書類別信息表</p><p> ?。?)圖書信息表用來儲存所有的圖書信息,包括圖書編號、類別編號、圖書名稱、作者、譯者、出版社、出版日期以及書籍價(jià)格8個(gè)字段。該表的邏輯結(jié)構(gòu)如表2.2所示。</p><p> 表2.2 圖書信
31、息表</p><p> ?。?)讀者信息表用來儲存所有的讀者信息,包括讀者姓名、性別、年齡、證件號碼、會員證有效日期、最大借書量、電話號碼、押金、證件類型、職業(yè)、讀者編號以及辦證日期12個(gè)字段。該表的邏輯結(jié)構(gòu)如表2.3所示。</p><p> 表2.3 讀者信息表</p><p> ?。?)操作員信息表用來保存操作員信息,包括操作員編號、用戶名、性別、年齡、證件號
32、碼、工作時(shí)間、電話號碼、是否為管理員、密碼9個(gè)字段。該表的邏輯結(jié)構(gòu)如表2.4所示。</p><p> 表2.4 操作員信息表</p><p> (5)圖書借閱信息表用來保存所有圖書的借閱信息,包括借閱編號、書籍編號、操作員編號、讀者編號、是夠歸還、借書日期以及應(yīng)還日期7字段。該表的邏輯結(jié)構(gòu)如表2.5所示。</p><p> 表2.5 圖書借閱信息表</p
33、><p> ?。?)圖書訂購信息表用來保存圖書館的所有訂購信息,包括書籍編號、訂購日期、訂購數(shù)量、操作員、是否驗(yàn)收以及書籍折扣6個(gè)字段。該表的邏輯結(jié)構(gòu)如表2.6所示。</p><p> 表2.6 圖書訂購信息表</p><p> 2.4 各表之間的聯(lián)系圖</p><p> 各表間的聯(lián)系圖如圖2.7所示。</p><p&g
34、t; 圖2.7 各表間聯(lián)系圖</p><p> 第三章 系統(tǒng)設(shè)計(jì)與功能實(shí)現(xiàn)</p><p> 3.1 數(shù)據(jù)庫Dao類的構(gòu)建</p><p> 首先定義了一個(gè)類Dao,并為該類添加了4中方法,分別是構(gòu)造方法Dao、查詢方法executeQuery、更新方法executeUpdate以及關(guān)閉連接方法close。</p><p> pub
35、lic class Dao {</p><p> protected static String dbClassName = </p><p> "com.microsoft.sqlserver.jdbc.SQLServerDriver";//數(shù)據(jù)庫連接驅(qū)動類</p><p> protected static String dbUrl =
36、 "jdbc:sqlserver://localhost:1433;"</p><p> + "DatabaseName=db_library;";//數(shù)據(jù)庫連接URL</p><p> protected static String dbUser = "sa";//數(shù)據(jù)庫用戶名</p><p>
37、; protected static String dbPwd = "123";//數(shù)據(jù)庫密碼</p><p> private static Connection conn = null;//數(shù)據(jù)庫連接對象</p><p> private static String ISBN;</p><p> private Dao(
38、) {//構(gòu)造方法</p><p><b> try {</b></p><p> if (conn == null) {//如果連接對象為空</p><p> Class.forName(dbClassName);//加載驅(qū)動類</p><p> conn = Driv
39、erManager.getConnection(dbUrl, dbUser, dbPwd);//獲得連接對象</p><p><b> }</b></p><p> } catch (Exception ee) {</p><p> ee.printStackTrace();</p><p><b>
40、}</b></p><p><b> }</b></p><p> private static ResultSet executeQuery(String sql) {//查詢方法</p><p><b> try {</b></p><p> if(conn==null)
41、 new Dao(); //如果連接對象為空,則重新調(diào)用構(gòu)造方法</p><p> return conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,</p><p> ResultSet.CONCUR_UPDATABLE).executeQuery(sql);//執(zhí)行查詢</p><p> } catc
42、h (SQLException e) {</p><p> e.printStackTrace();</p><p> return null;//返回null值</p><p> } finally {</p><p><b> }</b></p><p><b>
43、}</b></p><p> private static int executeUpdate(String sql) {//更新方法</p><p><b> try {</b></p><p> if(conn==null) new Dao();//如果連接對象為空,則重新調(diào)用構(gòu)造方法</p><
44、;p> return conn.createStatement().executeUpdate(sql);//執(zhí)行更新</p><p> } catch (SQLException e) {</p><p> e.printStackTrace();</p><p> return -1;</p><p> } finally
45、 {</p><p><b> }</b></p><p><b> }</b></p><p> public static void close() {//關(guān)閉方法</p><p><b> try {</b></p><p> conn.
46、close();//關(guān)閉連接對象</p><p> } catch (SQLException e) {</p><p> e.printStackTrace();</p><p><b> }finally{</b></p><p> conn = null;//設(shè)置連接對象為null值</p>
47、;<p><b> }</b></p><p><b> }</b></p><p> 3.2 系統(tǒng)登錄模塊</p><p> 對于圖書館管理系統(tǒng)而言,不是所有的用戶都是可以使用的,所有需要添加一個(gè)登陸模塊。通過該模塊來對用戶的合法性進(jìn)行判斷,只有合法的用戶才能進(jìn)入到系統(tǒng)。整個(gè)登陸模塊的實(shí)現(xiàn)非常簡單,
48、相信讀者能夠快速掌握其開發(fā)過程。登錄模塊的運(yùn)行結(jié)果如圖3.1所示。</p><p> 圖3.1 系統(tǒng)登錄界面</p><p> 3.2.1 登陸窗體界面設(shè)計(jì)與實(shí)現(xiàn)</p><p> 登陸窗體的界面設(shè)計(jì)我依然采用的是比較傳統(tǒng)的方法,新建一個(gè)類BookLoginFrame類,用來顯示登錄窗體。在該窗體中需要使用到四類控件,分別是JLabel、JTextFieid、
49、JPasswordField以及JButton。其中控件JLabel是用來顯示頂部的圖片以及標(biāo)簽文本;控件JTextFieid用來接收用戶名輸入信息;控件JPasswordField用來接收密碼輸入信息;控件JButton用來創(chuàng)建登陸和重置按鈕。</p><p> 3.2.2 操作員登陸</p><p> 在Dao類中新增一個(gè)方法check,通過該方法來檢測用戶信息是否合法。該方法接收
50、兩個(gè)參數(shù),分別是操作員用戶名name,操作員密碼passsward。主要方法如下:</p><p> public static Operater check(String name, String password) {</p><p> Operater operater=new Operater();//操作員信息對象</p><p> String s
51、ql = "select * from tb_operator where name='" + name</p><p> + "' and password='" + password + "'and admin=1";</p><p> ResultSet rs = Dao.execu
52、teQuery(sql);</p><p><b> try {</b></p><p> while (rs.next()) {</p><p> operater.setId(rs.getString("id"));</p><p> operater.setName(rs.getStri
53、ng("name"));</p><p> operater.setGrade(rs.getString("admin"));</p><p> operater.setPassword(rs.getString("password"));</p><p><b> ……</b>
54、</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> 3.3 主窗體模塊</b></p><p> 圖書館管理系統(tǒng)的主窗體模式是由三個(gè)
55、部分組成的。第一部分是位于主窗體上組上端的系統(tǒng)菜單欄,用來實(shí)現(xiàn)鏈接系統(tǒng)功能菜單。第二部分位于菜單欄下面的工具欄,用來提供各種常用功能鏈接。第三部分位于工具下的系統(tǒng)功能窗口區(qū)域,主要用來顯示各種功能窗口。</p><p> 3.3.1 主窗體界面設(shè)計(jì)</p><p> 在主窗體中可以顯示其他功能窗體,所以需要在該窗體中加入一個(gè)桌面窗體。通過將其他功能窗體加入到該窗體中。從而實(shí)現(xiàn)多窗體顯。
56、同時(shí)在主窗口體中,還需要添加一個(gè)main方法,該方法為系統(tǒng)入口的方法,通過執(zhí)行該方法來執(zhí)行系統(tǒng)。其主要代碼如下: </p><p> public class Library extends JFrame {</p><p> private static final JDesktopPane </p><p> DESKTOP_PANE = new JDes
57、ktopPane();//桌面窗體</p><p> public static void main(String[] args) {</p><p><b> try {</b></p><p> UIManager.setLookAndFeel(UIManager</p><p> .getSystemLoo
58、kAndFeelClassName());//設(shè)置系統(tǒng)界面外觀</p><p> new BookLoginIFrame();//登錄窗口</p><p> } catch (Exception ex) {</p><p> ex.printStackTrace();</p><p><b> }</b><
59、/p><p><b> }</b></p><p> public static void addIFame(JInternalFrame iframe) { // 添加子窗體的方法</p><p> DESKTOP_PANE.add(iframe);//新增子窗體</p><p><b> }</
60、b></p><p><b> }</b></p><p> 下面再來配置主窗體的其他屬性,首先需要設(shè)置其大小和位置,然后還要設(shè)置其菜單欄和工具欄,最后需要在桌面窗體中添加一個(gè)背景圖片。其代碼實(shí)現(xiàn)如下。</p><p> public Library() {</p><p><b> super(
61、);</b></p><p> setDefaultCloseOperation(</p><p> WindowConstants.EXIT_ON_CLOSE);////設(shè)置關(guān)閉按鈕處理事件</p><p> Toolkit tool = Toolkit.getDefaultToolkit();//獲得默認(rèn)的工具箱</p>
62、<p> Dimension screenSize = tool.getScreenSize();//獲得屏幕的大小</p><p> setSize(800, 600);//設(shè)置窗體大小</p><p> setLocation((screenSize.width - getWidth()) / 2,</p><p>
63、(screenSize.height - getHeight()) / 2);//設(shè)置窗體位置</p><p> setTitle("圖書館管理系統(tǒng)");//設(shè)置窗體標(biāo)題</p><p> JMenuBar menuBar = createMenu(); //調(diào)用創(chuàng)建菜單欄的方法</p><p> setJMenuB
64、ar(menuBar);//設(shè)置菜單欄</p><p> JToolBar toolBar = createToolBar(); // 調(diào)用創(chuàng)建工具欄的方法</p><p> getContentPane().add(toolBar, BorderLayout.NORTH);//設(shè)置工具欄</p><p> final JLabel label = n
65、ew JLabel();//創(chuàng)建一個(gè)標(biāo)簽,用來顯示圖片</p><p> label.setBounds(0, 0, 0, 0);//設(shè)置窗體的大小和位置</p><p> label.setIcon(null); // 窗體背景</p><p> DESKTOP_PANE.addComponentListener(new ComponentAdapte
66、r() {</p><p> public void componentResized(final ComponentEvent e) {</p><p> Dimension size = e.getComponent().getSize();//獲得組件大小</p><p> label.setSize(e.getComponent().getSize()
67、);//設(shè)置標(biāo)簽大小</p><p> label.setText("<html><img width=" + size.width + " height="</p><p> + size.height + " src='"</p><p> + this.getClass
68、().getResource("/backImg.jpg")</p><p> + "'></html>");//設(shè)置標(biāo)簽文本</p><p><b> }</b></p><p><b> };</b></p><p> D
69、ESKTOP_PANE.add(label,new Integer(Integer.MIN_VALUE));//將標(biāo)簽添加到桌面窗體</p><p> getContentPane().add(DESKTOP_PANE);//將桌面窗體添加到主窗體中</p><p><b> }</b></p><p> 3.3.2 主窗體菜單欄設(shè)計(jì)&l
70、t;/p><p> 在Library類中定義一個(gè)createMenu方法,在該方法中實(shí)現(xiàn)菜單欄的設(shè)計(jì)。其運(yùn)行界面如圖3.2所示。</p><p> 圖3.2 主窗體界面</p><p> 3.4 圖書類別管理模塊</p><p> 圖書類別管理模塊包含兩個(gè)子模塊,分別是圖書類別添加和圖書類別修改。其中圖書類別添加模塊用來錄入新的圖書類別信
71、息,圖書列別修改模塊用來修改已有的圖書列別信息。系統(tǒng)界面如圖3.3所示。</p><p> 圖3.3 圖書類別修改界面</p><p> 3.4.1 圖書類別添加模塊</p><p> 要添加圖書類別信息,首先要在Dao中添加一個(gè)InsertbookType方法,通過該方法來接受用戶輸入的所有書籍類別信息,然后執(zhí)行插入操作。其主要方法如下:</p>
72、;<p> public static int InsertBookType(String bookTypeName,String days,double fk){</p><p><b> int i=0;</b></p><p> try{String sql="insert into</p><p> tb
73、_bookType(typeName,days,fk)</p><p> values('"+bookTypeName+"','"+days+"',"+fk+")";</p><p> i=Dao.executeUpdate(sql);//執(zhí)行插入操作</p><p
74、><b> }</b></p><p><b> ……</b></p><p><b> }</b></p><p> 3.4.2 圖書類別修改模塊</p><p> 修改圖書類別信息同保存圖書類別信息非常類似,首先在Dao中添加一個(gè)方法UpdatebookTy
75、pe。通過該方法來接收圖書修改表單中提交的書籍類別信息。其代碼如下:</p><p> public static int UpdatebookType(String id,String typeName,String days,String fk){</p><p><b> int i=0;</b></p><p> try{Stri
76、ng sql="update </p><p> tb_bookType set typeName='"+typeName+"',</p><p> days='"+days+"',fk='"+fk+"' where id='"+id+"
77、39;";</p><p> //System.out.println(sql);</p><p> i=Dao.executeUpdate(sql);//執(zhí)行更新操作</p><p><b> }</b></p><p><b> ……</b></p><p&
78、gt;<b> }</b></p><p> 修改圖書類別信息,是通過單擊修改按鈕執(zhí)行的,上面我們已經(jīng)為修改按鈕注冊了一個(gè)監(jiān)聽器,其對應(yīng)的監(jiān)聽器類為ButtonActionLinter。下面來實(shí)現(xiàn)該監(jiān)聽器類,其實(shí)現(xiàn)代碼如下:</p><p> class ButtonAddListener implements ActionListener{</p>
79、<p> public void actionPerformed(ActionEvent e){</p><p> Object selectedItem = bookTypeModel.getSelectedItem();</p><p> int i=Dao.UpdatebookType(BookTypeId.getText().trim(),selectedIte
80、m.</p><p> toString(), days.getText().trim(),fk.getText().trim());</p><p> System.out.println(i);</p><p> if(i==1){//如果返回值為1,則表示修改成功</p><p> JOptionPane.showMessage
81、Dialog(null, "修改成功");</p><p> Object[][] results=getFileStates(Dao.selectBookCategory());</p><p> model.setDataVector(results,columnNames);</p><p> table.setModel(model
82、);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> 3.5 圖書信息管理模塊</p><p> 圖書信息管理模塊包含兩個(gè)子模塊,分別是圖書信息添加和圖書信息
83、修改。其中圖書信息添加模塊用來錄入新的圖書信息,圖書信息修改模塊用來修改已有的圖書信息。</p><p> 3.5.1 圖書信息添加界面設(shè)計(jì)</p><p> 圖書信息添加窗體一共包含三個(gè)部分,第一部分是位于窗體最上端的圖片。第二部分是位于中間的主面板,用來提供各種標(biāo)簽和表單元素。第三部分是位于主面板下的按鈕面板,用來提供添加和關(guān)閉兩個(gè)按鈕。其運(yùn)行界面如圖3.4所示。</p>
84、;<p> 圖3.4 圖書信息添加界面</p><p> 主面板是整個(gè)窗體最重要也是最核心的部分,其部分實(shí)現(xiàn)代碼如下:</p><p> public BookAddIFrame() {</p><p><b> super();</b></p><p> final BorderLayout b
85、orderLayout = new BorderLayout();//創(chuàng)建邊框布局管理器</p><p> getContentPane().setLayout(borderLayout);//設(shè)置布局</p><p> setIconifiable(true);// 設(shè)置窗體可最小化</p><p> setClosable(true);// 設(shè)置窗體可關(guān)
86、閉</p><p> setTitle("圖書信息添加");// 設(shè)置窗體標(biāo)題</p><p> setBounds(100, 100, 396, 260);// 設(shè)置窗體位置和大小</p><p> final JPanel mainPanel = new JPanel();//創(chuàng)建中心面板</p><p>
87、mainPanel.setBorder(new EmptyBorder(5, 10, 5, 10));//設(shè)置邊框</p><p> final GridLayout gridLayout = new GridLayout(0, 4);//創(chuàng)建表格布局管理器</p><p> gridLayout.setVgap(5);//設(shè)置組件之間垂直距離</p><p>
88、 gridLayout.setHgap(5);//設(shè)置組件之間平行距離</p><p> mainPanel.setLayout(gridLayout);//設(shè)置布局</p><p> getContentPane().add(mainPanel);//將中心面板加入到窗體</p><p> final JLabel ISBNLabel = new JLab
89、el();//創(chuàng)建圖書編號標(biāo)簽</p><p> ISBNLabel.setText("圖書編號:");//設(shè)置標(biāo)簽文本</p><p> mainPanel.add(ISBNLabel);//添加到中心面板</p><p> ISBN = new JTextField("請輸入13位書號",13);//創(chuàng)建書號文本框
90、</p><p> ISBN.setDocument(new MyDocument(13)); //設(shè)置書號文本框最大輸入值為13</p><p> ISBN.setColumns(13);//設(shè)置文本框長度</p><p> ISBN.addKeyListener(new ISBNkeyListener());//注冊監(jiān)聽器</p><p
91、> ISBN.addFocusListener(new ISBNFocusListener());//注冊監(jiān)聽器</p><p> mainPanel.add(ISBN);</p><p><b> ……</b></p><p><b> }</b></p><p> 3.5.2 檢
92、測書籍編號是否已存在</p><p> 因?yàn)椴豢赡艽嬖谥貜?fù)的書籍編號。為了防止操作員的操作錯(cuò)誤,所以需要提供一個(gè)書籍編號監(jiān)測系統(tǒng)。如果該書籍號已存在,則不能進(jìn)行添加,否則可以進(jìn)行添加。</p><p> 要檢測書籍編號是否存在,需要在Dao類中添加一個(gè)方法,該方法用來接收輸入的書籍編號,然后查詢該書籍編號對應(yīng)的書籍記錄,其主要方法如下:</p><p> pu
93、blic static List selectBookInfo(String ISBN) {//根據(jù)圖書編號查詢圖書</p><p> List list=new ArrayList();//保存所有查詢到的書籍信息</p><p> String sql = "select * from tb_bookInfo where ISBN='"+ISBN+&q
94、uot;'";</p><p> ResultSet rs = Dao.executeQuery(sql);//執(zhí)行查詢</p><p> ……//插入數(shù)據(jù),關(guān)閉連接</p><p><b> }</b></p><p> 對書籍編號進(jìn)行檢測,一般是在操作員輸入完書籍編號,并準(zhǔn)備輸入其他信息時(shí)來
95、完成。這是需要新建一個(gè)ISBNFFocusListener監(jiān)聽類,該類繼承了FocusAdoper類,并實(shí)現(xiàn)其中的focusLost,其實(shí)現(xiàn)代碼如下:</p><p> class ISBNFocusListener extends FocusAdapter {</p><p> public void focusLost(FocusEvent e){</p><p
96、> if(!Dao.selectBookInfo(ISBN.getText().trim()).isEmpty()){</p><p> JOptionPane.showMessageDialog(null, "添加書號重復(fù)!");</p><p><b> return;</b></p><p><b&g
97、t; }</b></p><p><b> }</b></p><p><b> }</b></p><p> 3.5.3 圖書信息添加</p><p> 要添加書籍信息,首先要在Dao中添加一個(gè)Insertbook方法,通過該方法來接受用戶輸入的所有書籍信息,然后執(zhí)行插入操作
98、。其主要方法如下:</p><p> public static int Insertbook(String ISBN,String typeId,String bookname,</p><p> String writer,String translator,String publisher,Date date,Double price){</p><p>
99、<b> int i=0;</b></p><p><b> try{</b></p><p> String sql="insert into tb_bookInfo(ISBN,typeId,bookname,writer,translator,"+"publisher,date,price) v
100、alues('"+ISBN+"','"+typeId+"','"+bookname+"',"+ "'"+writer+"','"+translator+"','"+publisher+"','&q
101、uot;+date+"',"+price+")";</p><p> i=Dao.executeUpdate(sql);//執(zhí)行插入操作</p><p><b> }</b></p><p><b> ……</b></p><p><b&g
102、t; }</b></p><p> 3.5.4 圖書修改信息</p><p> 修改圖書信息同保存圖書信息非常類似,首先在Dao中添加一個(gè)方法Updatebook。通過該方法來接收圖書修改表單中提交的書籍信息。其代碼如下:</p><p> public static int Updatebook(String ISBN,String typeI
103、d,String bookname,</p><p> String writer,String translator,String publisher,Date date,Double price){</p><p> int i=0;//更新記錄數(shù)</p><p> try{String sql="update tb_bookInfo set
104、ISBN='"+ISBN+"' , typeId='"+typeId+"',bookname='"+bookname+"',</p><p> writer='"+writer+"',</p><p> translator=&
105、#39;"+translator+"',</p><p> publisher='"+publisher+"',</p><p> date='"+date+"',</p><p> price="+price+" where ISBN=
106、39;"+ISBN+"'";</p><p> i=Dao.executeUpdate(sql);//執(zhí)行更新</p><p><b> }</b></p><p><b> ……</b></p><p><b> }</b><
107、;/p><p> 修改圖書信息,是通過單擊修改按鈕執(zhí)行的,上面我們已經(jīng)為修改按鈕注冊了一個(gè)監(jiān)聽器,其對應(yīng)的監(jiān)聽器類為UpdateBookActionLinter。下面來實(shí)現(xiàn)該監(jiān)聽器類,其實(shí)現(xiàn)代碼如下:</p><p> class UpdateBookActionListener implements ActionListener {</p><p> publ
108、ic void actionPerformed(final ActionEvent e) {</p><p> int i=Dao.Updatebook(ISBNs, bookTypes, bookNames, writer,
109、 translators,publishers,Date.valueOf(pubDates),Double.parseDouble(prices));</p><p> if(i==1){//如果返回更新記錄數(shù)為1,表示修改成功</p><p>
110、JOptionPane.showMessageDialog(null, "修改成功");Object[][]results=getFileStates(Dao.selectBookInfo());//重新獲得書籍信息</p><p> DefaultTableModel model=new DefaultTableModel();//獲得表格模型</p><p>
111、; table.setModel(model);//設(shè)置表格模型</p><p> model.setDataVector(results, columnNames);//設(shè)置模型數(shù)據(jù)和列名</p><p><b> }</b></p><p><b> }</b></p><p><
112、b> }</b></p><p> 3.6 讀者信息管理模塊</p><p> 讀者信息管理模塊包含兩個(gè)子模塊,分別是讀者信息添加和讀者信息修改與刪除。其中讀者信息添加模塊用來錄入新的讀者信息,讀者信息修改與刪除模塊用來修改和刪除已有的讀者信息。其系統(tǒng)運(yùn)行界面如圖3.5所示。</p><p> 圖3.5 讀者信息管理模塊運(yùn)行界面</p
113、><p> 3.6.1 讀者信息添加</p><p> 要添加讀者信息,首先要在Dao中添加一個(gè)InsertReader方法,通過該方法來接受用戶輸入的所有讀者信息,然后執(zhí)行插入操作。其主要方法如下: </p><p> public static int InsertReader(String name,String sex,String age,String
114、identityCard,Date date,String maxNum,String tel,Double keepMoney,String zj,String zy,Date bztime,String ISBN){</p><p><b> int i=0;</b></p><p> try{String sql="insert into tb_r
115、eader(name,sex,age,identityCard,date,maxNum,</p><p> tel,keepMoney,zj,zy,bztime,ISBN)values('"+name+"','"+sex+"','"+age+"','"+identityCard+&quo
116、t;','"+date+"','"+maxNum+"','"+tel+"',"+keepMoney+",'"+zj+"','"+zy+"',</p><p> '"+bztime+&quo
117、t;','"+ISBN+"')";</p><p> System.out.println(sql);</p><p> i=Dao.executeUpdate(sql);//執(zhí)行插入操作</p><p><b> }</b></p><p><b>
118、 ……</b></p><p><b> }</b></p><p> 3.6.2 讀者信息修改與刪除</p><p> 修改與刪除讀者信息同保存讀者信息非常類似,首先在Dao中添加兩個(gè)方法UpdateReader及DelReader。通過這兩個(gè)方法來接收圖讀者修改表單中提交的讀者信息。其主要代碼如下:</p>
119、<p> public static int UpdateReader(String id,String name,String sex,String age,String identityCard,Date date,String maxNum,String tel,</p><p> Double keepMoney,String zj,String zy,Date bztime,String
120、 ISBN){</p><p><b> int i=0;</b></p><p> try{String sql="update tb_reader set </p><p> name='"+name+"',sex='"+sex+"',</p>
121、;<p> age='"+age+"',identityCard='"+identityCard+"',</p><p> date='"+date+"',maxNum='"+maxNum+"',</p><p> tel=
122、39;"+tel+"',keepMoney="+keepMoney+",</p><p> zj='"+zj+"',zy='"+zy+"',</p><p> bztime='"+bztime+"'where ISBN='&
123、quot;+ISBN+"'";</p><p> i=Dao.executeUpdate(sql);// 執(zhí)行更新</p><p> }catch(Exception e){</p><p> e.printStackTrace();</p><p><b> }</b></p&
124、gt;<p> Dao.close();//關(guān)閉連接</p><p><b> ……</b></p><p><b> }</b></p><p> public static int DelReader(String ISBN){</p><p><b> int
125、 i=0;</b></p><p> try{String sql="delete from tb_reader where ISBN='"+ISBN+"'";</p><p> //System.out.println(sql);</p><p> i=Dao.executeUpdate(
126、sql);</p><p> }catch(Exception e){</p><p> e.printStackTrace();</p><p><b> }</b></p><p> Dao.close();//關(guān)閉連接</p><p><b> ……</b>&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 圖書館管理系統(tǒng)--畢業(yè)設(shè)計(jì)
- 圖書館管理系統(tǒng)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---圖書館集成管理系統(tǒng)
- 畢業(yè)設(shè)計(jì)--圖書館借閱管理系統(tǒng)
- 圖書館管理系統(tǒng)畢業(yè)設(shè)計(jì)論文
- 圖書館管理系統(tǒng)(完整畢業(yè)設(shè)計(jì))
- 畢業(yè)設(shè)計(jì)(論文)---圖書館管理系統(tǒng)
- 圖書館管理系統(tǒng)畢業(yè)設(shè)計(jì)論文
- 畢業(yè)設(shè)計(jì)---圖書館借閱管理系統(tǒng)
- 畢業(yè)設(shè)計(jì)論文 圖書館管理系統(tǒng)設(shè)計(jì)
- 圖書館借閱管理系統(tǒng)---畢業(yè)設(shè)計(jì)論文
- 圖書館借閱管理系統(tǒng)-畢業(yè)設(shè)計(jì)論文
- 畢業(yè)設(shè)計(jì)----圖書館管理系統(tǒng)開發(fā)
- 圖書館管理系統(tǒng)——后臺管理(畢業(yè)設(shè)計(jì)論文)
- 畢業(yè)設(shè)計(jì)---圖書館在線查閱管理系統(tǒng)
- 圖書館畢業(yè)設(shè)計(jì)
- 圖書館照明系統(tǒng)設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 圖書館照明系統(tǒng)設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---運(yùn)用uml建模圖書館管理系統(tǒng)
- 基于jsp圖書館管理系統(tǒng)畢業(yè)設(shè)計(jì)論文
評論
0/150
提交評論