圖書館管理系統(tǒng)畢業(yè)設(shè)計(jì)_第1頁
已閱讀1頁,還剩42頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論