2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩42頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  畢業(yè)設計(論文)</b></p><p>  題目: 圖書館管理系統(tǒng) </p><p>  姓 名 陳 平 </p><p>  學 號 </p><p>  專 業(yè)

2、 計算機網(wǎng)絡 </p><p>  指導教師 周亞鳳 </p><p><b>  南京航空航天大學</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)用例圖設計2

4、</p><p>  1.4 繪制系統(tǒng)流程圖3</p><p>  1.5 系統(tǒng)的開發(fā)環(huán)境4</p><p>  第二章 數(shù)據(jù)庫分析與設計5</p><p>  2.1 數(shù)據(jù)庫分析5</p><p>  2.2 數(shù)據(jù)庫概念設計5</p><p>  2.3 數(shù)據(jù)邏輯結(jié)構(gòu)設計7<

5、/p><p>  2.4 各表之間的聯(lián)系圖9</p><p>  第三章 系統(tǒng)設計與功能實現(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)維護模塊30</p><p>  第四章 系統(tǒng)測試

7、35</p><p>  4.1 測試項目35</p><p>  4.2 測試用例35</p><p><b>  結(jié)束語37</b></p><p><b>  參考文獻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個功能模塊,分別是圖書類別管理模塊、圖書信息管理模塊、讀者信息管理模塊、新書訂購管理模塊、圖書借閱模塊,以及系統(tǒng)維護模塊。這6個模塊里又有許多子模塊,通過這些模塊之間的相互連接與配合,完成操作員發(fā)出的各種指令。&

9、lt;/p><p>  圖書館管理系統(tǒng)是一個供內(nèi)部人員使用的系統(tǒng)。而圖書館的工作人員也分為兩類,一類是操作人員,主要負責圖書的借閱和歸還的工作;一類是管理員,除了操作人員的所有功能外,還能夠?qū)斜?、書籍信息、讀者信息等進行管理。</p><p>  論文將全面介紹所設計的圖書館管理系統(tǒng)的系統(tǒng)功能和業(yè)務流程,并對系統(tǒng)進行詳細的數(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、響了讀者對圖書館藏書的充分利用。這時圖書館就特別需要開發(fā)一套圖書館管理系統(tǒng),通過該系統(tǒng)來提高圖書館的管理效率,從而減少管理方面的工作流和成本。</p><p>  一個現(xiàn)代化的圖書館在正常運營中總是面對大量的讀者信息,書籍信息以及兩者相互作用產(chǎn)生的借書信息,還書信息。面對圖書館數(shù)以萬計的圖書,紛繁復雜的讀者信息,頻繁更替的借還書信息,傳統(tǒng)的直接方法不但管理出現(xiàn)漏洞,造成損失。因此有一個智能化、系統(tǒng)化、信息化的圖書

12、管理系統(tǒng)十分重要的。充分利用計算機的功能實現(xiàn)對讀者管理、書籍管理,借閱管理等自動化控制,將會使圖書館的工作大大減弱。方便友好的圖形界面、簡便的操作、完善的數(shù)據(jù)庫管理。將會使得圖書館系統(tǒng)極大限度的應用于現(xiàn)代化圖書管理中。 </p><p>  第一章 圖書館管理系統(tǒng)分析</p><p><b>  1.1 需求分析</b></p><p>  圖

13、書館管理系統(tǒng)是一個高度集成的圖書信息處理系統(tǒng),通過將圖書館的各種功能進行整合,從而達到顯示檢索信息,提高工作效率,降低管理成本等目的。一個典型的圖書館管理系統(tǒng)應該能夠管理所有的圖書種類,圖書信息以及讀者信息,還需要提供各種圖書信息的檢索查詢功能。該系統(tǒng)還需要能夠?qū)D書的借閱,歸還進行管理,并對讀者的罰款進行自動計算。通過該系統(tǒng)的自動化管理,能夠大大減少圖書館管理人員,還能減少管理人員的工作任務,從而降低管理開銷和成本。</p>

14、;<p>  一個完整的圖書館管理系統(tǒng)包括前臺和后臺,前臺主要是顯示在計算機屏幕上的顯示界面,有各種指令按鈕,操作框以及文本框,后臺主要是為前臺的一些操作提供一些必要的數(shù)據(jù),也就是一個相對于系統(tǒng)比較完整的數(shù)據(jù)庫,操作員以及各類圖書的信息,借書者的信息等等。</p><p>  一個最基本的圖書館管理系統(tǒng)要有如下幾個重要功能:</p><p>  用戶在借書超期的情況下得到來自

15、管理員的提醒。</p><p>  管理員可以方便進行圖書管理,用戶管理,管理員管理。圖書管理包括圖書信息以及圖書分類的添加,修改,刪除。用戶管理包括用戶信息的添加,刪除,修改。管理員管理包括管理員信息的添加,刪除,修改等。</p><p>  用戶和管理員可以修改自己的密碼,修改前需先核實自己的原始密碼。</p><p>  未注冊用戶(游客)也可以瀏覽所有的圖書

16、信息和分類信息,但是無法借閱。</p><p>  (5)實現(xiàn)模糊查詢,使用戶得到更多的相關(guān)記錄。并且考慮使用的方便性,一些經(jīng)常使用的輸入無須用戶輸入,比如進行圖書查詢時圖書分類只須用戶做選擇就可以。</p><p>  (6)考慮程序執(zhí)行操作時可能出現(xiàn)的情況,比如刪除圖書分類時該分類下存在圖書,程序自動跳轉(zhuǎn)該分類圖書查看。刪除某個用戶,如果存在借書記錄則不允許刪除,跳轉(zhuǎn)到該用戶的借書記錄

17、。等待管理員確認該用戶所借圖書已經(jīng)全部歸還之后才允許刪除該用戶信息。</p><p>  一個圖書館管理系統(tǒng)要是能實現(xiàn)以上的各種功能,那么這個圖書館管理系統(tǒng)也就算是比較成功的一個系統(tǒng)了。</p><p><b>  1.2 功能分析</b></p><p>  根據(jù)以上需求分析,我所設計的圖書館管理系統(tǒng)有6個功能模塊,分別是圖書類別管理模塊,圖

18、書信息管理模塊,讀者信息管理模塊,新書訂購管理模塊,圖書借閱模塊以及系統(tǒng)維護模塊。其中各功能模塊的具體說明如下:</p><p>  圖書類別管理模塊:該模塊主要負責管理圖書館的圖書種類信息,如圖書種類的名稱、可借天數(shù)、罰款數(shù)目等信息。</p><p>  圖書信息管理模塊:該模塊主要負責管理圖書館的圖書信息,如圖書編號、圖書名稱、作者、出版社等信息。</p><p&g

19、t;  讀者信息管理模塊:該模塊主要負責管理圖書館的讀者信息,如讀者編號、讀者信息、證件號碼、最大借書量等信息。</p><p>  圖書訂購管理模塊:該模塊主要負責管理圖書館的新書訂購信息、包括新書訂購和驗收新書兩個子模塊。</p><p>  圖書借閱管理模塊:該模塊主要負責圖書館的書籍借閱和歸還信息,包括圖書借閱、圖書歸還、圖書搜索3個子模塊。</p><p>

20、;  系統(tǒng)維護模塊:該模塊主要負責圖書館的工作人員信息,包括用戶管理和更改系統(tǒng)口令兩個子模塊。</p><p>  1.3 系統(tǒng)用例圖設計</p><p>  圖書館管理系統(tǒng)是一個內(nèi)部人員使用的系統(tǒng),也就是說不是所有的人都能夠使用它,只有圖書館的工作人員才能使用。而圖書館的工作人員也分為兩類,一類是操作人員,主要負責圖書的借閱和歸還的工作;一類是管理員,除了操作人員的所有功能外,還能夠?qū)?/p>

21、籍列表,書籍信息,讀者信息等進行管理。下面以管理員為例繪制其所對應的用例圖如圖1.1所示。</p><p>  圖1.1 管理員用例圖</p><p>  1.4 繪制系統(tǒng)流程圖</p><p>  本系統(tǒng)首先需要對用戶的身份進行識別,只有合法的用戶才能進入系統(tǒng),否則將無法進入系統(tǒng)。進入系統(tǒng)后,首先打開系統(tǒng)主窗體,在系統(tǒng)首頁的菜單欄或者功能區(qū)可以選擇各種導航鏈接來進

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>  運行平臺:Windows 7。</p><p>  Java開發(fā)包:JDK 5.0以上。</p><p>  分辨率:800×600以上。</p><p>  GUI開發(fā)包:Swing。</p><p>  第二章 數(shù)據(jù)

24、庫分析與設計</p><p><b>  2.1 數(shù)據(jù)庫分析</b></p><p>  在開發(fā)圖書館管理系統(tǒng)時,考慮到圖書量大,數(shù)據(jù)庫維護大的特點,選用SQL Server 2005作為數(shù)據(jù)庫管理系統(tǒng)。在SQL Server 2005中新增一個數(shù)據(jù)庫,其數(shù)據(jù)庫名為db_library。數(shù)據(jù)庫中可以包含圖書信息、圖書類別信息、圖書借閱信息、操作員信息、圖書訂購信息及讀

25、者信息等實體,用來存儲不同的信息。</p><p>  2.2 數(shù)據(jù)庫概念設計</p><p>  本系統(tǒng)一共設計規(guī)劃出6個實體,分別是圖書類別信息實體、圖書信息實體、讀者信息實體、操作員實體、圖書借閱信息實體以及圖書訂購信息實體。</p><p>  圖書的類別有很多,因此可以建立一個圖書館類別信息表,專門用來保存圖書的類別信息。同時因為每種類別的書籍閱讀時間有所

26、不同,所以需要在類別表中保存該類別可借天數(shù)信息。圖書類別信息實體E-R圖如圖2.1所示。</p><p>  圖2.1 圖書類別信息實體E-R圖</p><p>  對于圖書館來說最重要的就是要管理其下的書籍,所以需要建立一個圖書信息表,用來保存圖書的所有信息。圖書信息實體E-R圖如圖2.2所示。</p><p>  圖2.2 圖書信息實體E-R圖</p>

27、;<p>  要想在圖書館借書首先需要進行登記并交付押金。領(lǐng)取讀書卡才能借書。所以需要建立一個讀者信息表來保存圖書館的所有讀者的登記信息。讀者信息實體E-R圖如圖2.3所示。</p><p>  圖2.3 讀者信息實體E-R圖</p><p>  圖書館里一般有一個以上的系統(tǒng)操作員,需要建立一個操作員信息表,用來保存操作員的身份信息。操作員信息實體E-R圖如圖2.4所示。&l

28、t;/p><p>  圖2.4 操作員信息實體E-R圖</p><p>  圖書館最大的功能就是能夠借書,這時需要建立一個圖書借閱信息表,用來保存讀者的借書信息。圖書的借閱信息實體E-R圖如圖2.5所示。</p><p>  圖2.5 圖書的借閱信息實體E-R圖</p><p>  圖書館除了借書,還需要到出版社或其他代理商訂購新書,這是需要建立

29、一個圖書訂購信息表,用來保存所有的訂購信息。圖書訂購信息實體E-R圖如圖2.6所示。</p><p>  圖2.6 圖書訂購信息實體E-R圖</p><p>  2.3 數(shù)據(jù)邏輯結(jié)構(gòu)設計</p><p>  根據(jù)設計好的各實體E-R圖創(chuàng)建數(shù)據(jù)庫的邏輯結(jié)構(gòu),數(shù)據(jù)庫各表的結(jié)構(gòu)如下:</p><p> ?。?)圖書類別信息采表用來儲存所有的圖書類別

30、信息,包括圖書類別編號、圖書類別名稱、可借天數(shù)以及遲還一天的罰款數(shù)目4個字段。該表的邏輯結(jié)構(gòu)如表2.1所示。</p><p>  表2.1 圖書類別信息表</p><p> ?。?)圖書信息表用來儲存所有的圖書信息,包括圖書編號、類別編號、圖書名稱、作者、譯者、出版社、出版日期以及書籍價格8個字段。該表的邏輯結(jié)構(gòu)如表2.2所示。</p><p>  表2.2 圖書信

31、息表</p><p> ?。?)讀者信息表用來儲存所有的讀者信息,包括讀者姓名、性別、年齡、證件號碼、會員證有效日期、最大借書量、電話號碼、押金、證件類型、職業(yè)、讀者編號以及辦證日期12個字段。該表的邏輯結(jié)構(gòu)如表2.3所示。</p><p>  表2.3 讀者信息表</p><p> ?。?)操作員信息表用來保存操作員信息,包括操作員編號、用戶名、性別、年齡、證件號

32、碼、工作時間、電話號碼、是否為管理員、密碼9個字段。該表的邏輯結(jié)構(gòu)如表2.4所示。</p><p>  表2.4 操作員信息表</p><p> ?。?)圖書借閱信息表用來保存所有圖書的借閱信息,包括借閱編號、書籍編號、操作員編號、讀者編號、是夠歸還、借書日期以及應還日期7字段。該表的邏輯結(jié)構(gòu)如表2.5所示。</p><p>  表2.5 圖書借閱信息表</p

33、><p> ?。?)圖書訂購信息表用來保存圖書館的所有訂購信息,包括書籍編號、訂購日期、訂購數(shù)量、操作員、是否驗收以及書籍折扣6個字段。該表的邏輯結(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)設計與功能實現(xiàn)</p><p>  3.1 數(shù)據(jù)庫Dao類的構(gòu)建</p><p>  首先定義了一個類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;//設置連接對象為null值</p>

47、;<p><b>  }</b></p><p><b>  }</b></p><p>  3.2 系統(tǒng)登錄模塊</p><p>  對于圖書館管理系統(tǒng)而言,不是所有的用戶都是可以使用的,所有需要添加一個登陸模塊。通過該模塊來對用戶的合法性進行判斷,只有合法的用戶才能進入到系統(tǒng)。整個登陸模塊的實現(xiàn)非常簡單,

48、相信讀者能夠快速掌握其開發(fā)過程。登錄模塊的運行結(jié)果如圖3.1所示。</p><p>  圖3.1 系統(tǒng)登錄界面</p><p>  3.2.1 登陸窗體界面設計與實現(xiàn)</p><p>  登陸窗體的界面設計我依然采用的是比較傳統(tǒng)的方法,新建一個類BookLoginFrame類,用來顯示登錄窗體。在該窗體中需要使用到四類控件,分別是JLabel、JTextFieid、

49、JPasswordField以及JButton。其中控件JLabel是用來顯示頂部的圖片以及標簽文本;控件JTextFieid用來接收用戶名輸入信息;控件JPasswordField用來接收密碼輸入信息;控件JButton用來創(chuàng)建登陸和重置按鈕。</p><p>  3.2.2 操作員登陸</p><p>  在Dao類中新增一個方法check,通過該方法來檢測用戶信息是否合法。該方法接收

50、兩個參數(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)的主窗體模式是由三個

55、部分組成的。第一部分是位于主窗體上組上端的系統(tǒng)菜單欄,用來實現(xiàn)鏈接系統(tǒng)功能菜單。第二部分位于菜單欄下面的工具欄,用來提供各種常用功能鏈接。第三部分位于工具下的系統(tǒng)功能窗口區(qū)域,主要用來顯示各種功能窗口。</p><p>  3.3.1 主窗體界面設計</p><p>  在主窗體中可以顯示其他功能窗體,所以需要在該窗體中加入一個桌面窗體。通過將其他功能窗體加入到該窗體中。從而實現(xiàn)多窗體顯。

56、同時在主窗口體中,還需要添加一個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());//設置系統(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>  下面再來配置主窗體的其他屬性,首先需要設置其大小和位置,然后還要設置其菜單欄和工具欄,最后需要在桌面窗體中添加一個背景圖片。其代碼實現(xiàn)如下。</p><p>  public Library() {</p><p><b>  super(

61、);</b></p><p>  setDefaultCloseOperation(</p><p>  WindowConstants.EXIT_ON_CLOSE);////設置關(guān)閉按鈕處理事件</p><p>  Toolkit tool = Toolkit.getDefaultToolkit();//獲得默認的工具箱</p>

62、<p>  Dimension screenSize = tool.getScreenSize();//獲得屏幕的大小</p><p>  setSize(800, 600);//設置窗體大小</p><p>  setLocation((screenSize.width - getWidth()) / 2,</p><p>  

63、(screenSize.height - getHeight()) / 2);//設置窗體位置</p><p>  setTitle("圖書館管理系統(tǒng)");//設置窗體標題</p><p>  JMenuBar menuBar = createMenu(); //調(diào)用創(chuàng)建菜單欄的方法</p><p>  setJMenuB

64、ar(menuBar);//設置菜單欄</p><p>  JToolBar toolBar = createToolBar(); // 調(diào)用創(chuàng)建工具欄的方法</p><p>  getContentPane().add(toolBar, BorderLayout.NORTH);//設置工具欄</p><p>  final JLabel label = n

65、ew JLabel();//創(chuàng)建一個標簽,用來顯示圖片</p><p>  label.setBounds(0, 0, 0, 0);//設置窗體的大小和位置</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、);//設置標簽大小</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>");//設置標簽文本</p><p><b>  }</b></p><p><b>  };</b></p><p>  D

69、ESKTOP_PANE.add(label,new Integer(Integer.MIN_VALUE));//將標簽添加到桌面窗體</p><p>  getContentPane().add(DESKTOP_PANE);//將桌面窗體添加到主窗體中</p><p><b>  }</b></p><p>  3.3.2 主窗體菜單欄設計&l

70、t;/p><p>  在Library類中定義一個createMenu方法,在該方法中實現(xiàn)菜單欄的設計。其運行界面如圖3.2所示。</p><p>  圖3.2 主窗體界面</p><p>  3.4 圖書類別管理模塊</p><p>  圖書類別管理模塊包含兩個子模塊,分別是圖書類別添加和圖書類別修改。其中圖書類別添加模塊用來錄入新的圖書類別信

71、息,圖書列別修改模塊用來修改已有的圖書列別信息。系統(tǒng)界面如圖3.3所示。</p><p>  圖3.3 圖書類別修改界面</p><p>  3.4.1 圖書類別添加模塊</p><p>  要添加圖書類別信息,首先要在Dao中添加一個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中添加一個方法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)為修改按鈕注冊了一個監(jiān)聽器,其對應的監(jiān)聽器類為ButtonActionLinter。下面來實現(xiàn)該監(jiān)聽器類,其實現(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>  圖書信息管理模塊包含兩個子模塊,分別是圖書信息添加和圖書信息

83、修改。其中圖書信息添加模塊用來錄入新的圖書信息,圖書信息修改模塊用來修改已有的圖書信息。</p><p>  3.5.1 圖書信息添加界面設計</p><p>  圖書信息添加窗體一共包含三個部分,第一部分是位于窗體最上端的圖片。第二部分是位于中間的主面板,用來提供各種標簽和表單元素。第三部分是位于主面板下的按鈕面板,用來提供添加和關(guān)閉兩個按鈕。其運行界面如圖3.4所示。</p>

84、;<p>  圖3.4 圖書信息添加界面</p><p>  主面板是整個窗體最重要也是最核心的部分,其部分實現(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);//設置布局</p><p>  setIconifiable(true);// 設置窗體可最小化</p><p>  setClosable(true);// 設置窗體可關(guān)

86、閉</p><p>  setTitle("圖書信息添加");// 設置窗體標題</p><p>  setBounds(100, 100, 396, 260);// 設置窗體位置和大小</p><p>  final JPanel mainPanel = new JPanel();//創(chuàng)建中心面板</p><p>  

87、mainPanel.setBorder(new EmptyBorder(5, 10, 5, 10));//設置邊框</p><p>  final GridLayout gridLayout = new GridLayout(0, 4);//創(chuàng)建表格布局管理器</p><p>  gridLayout.setVgap(5);//設置組件之間垂直距離</p><p>

88、  gridLayout.setHgap(5);//設置組件之間平行距離</p><p>  mainPanel.setLayout(gridLayout);//設置布局</p><p>  getContentPane().add(mainPanel);//將中心面板加入到窗體</p><p>  final JLabel ISBNLabel = new JLab

89、el();//創(chuàng)建圖書編號標簽</p><p>  ISBNLabel.setText("圖書編號:");//設置標簽文本</p><p>  mainPanel.add(ISBNLabel);//添加到中心面板</p><p>  ISBN = new JTextField("請輸入13位書號",13);//創(chuàng)建書號文本框

90、</p><p>  ISBN.setDocument(new MyDocument(13)); //設置書號文本框最大輸入值為13</p><p>  ISBN.setColumns(13);//設置文本框長度</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>  因為不可能存在重復的書籍編號。為了防止操作員的操作錯誤,所以需要提供一個書籍編號監(jiān)測系統(tǒng)。如果該書籍號已存在,則不能進行添加,否則可以進行添加。</p><p>  要檢測書籍編號是否存在,需要在Dao類中添加一個方法,該方法用來接收輸入的書籍編號,然后查詢該書籍編號對應的書籍記錄,其主要方法如下:</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>  對書籍編號進行檢測,一般是在操作員輸入完書籍編號,并準備輸入其他信息時來

95、完成。這是需要新建一個ISBNFFocusListener監(jiān)聽類,該類繼承了FocusAdoper類,并實現(xiàn)其中的focusLost,其實現(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, "添加書號重復!");</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中添加一個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中添加一個方法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)為修改按鈕注冊了一個監(jiān)聽器,其對應的監(jiān)聽器類為UpdateBookActionLinter。下面來實現(xiàn)該監(jiān)聽器類,其實現(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);//設置表格模型</p><p>  model.setDataVector(results, columnNames);//設置模型數(shù)據(jù)和列名</p><p><b>  }</b></p><p><b>  }</b></p><p><

112、b>  }</b></p><p>  3.6 讀者信息管理模塊</p><p>  讀者信息管理模塊包含兩個子模塊,分別是讀者信息添加和讀者信息修改與刪除。其中讀者信息添加模塊用來錄入新的讀者信息,讀者信息修改與刪除模塊用來修改和刪除已有的讀者信息。其系統(tǒng)運行界面如圖3.5所示。</p><p>  圖3.5 讀者信息管理模塊運行界面</p

113、><p>  3.6.1 讀者信息添加</p><p>  要添加讀者信息,首先要在Dao中添加一個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中添加兩個方法UpdateReader及DelReader。通過這兩個方法來接收圖讀者修改表單中提交的讀者信息。其主要代碼如下:</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)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論