java數(shù)據(jù)庫(kù)課程設(shè)計(jì)---圖書館管理系統(tǒng)_第1頁(yè)
已閱讀1頁(yè),還剩184頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  數(shù)據(jù)庫(kù)課程設(shè)計(jì)報(bào)告</b></p><p>  題目:圖書管理系統(tǒng) </p><p><b>  一 問(wèn)題的提出</b></p><p><b>  開發(fā)背景</b></p><p>  很多高校都擁有圖書館,圖

2、書館可以為全校師生提供一個(gè)閱讀,學(xué)習(xí)的空間。近年來(lái),隨著生源不斷增大,圖書館的規(guī)模也隨之?dāng)U大,圖書數(shù)量也相應(yīng)地大量增加,有關(guān)圖書館各種信息成倍增加。面對(duì)如此龐大的信息量,校領(lǐng)導(dǎo)決定使用一套合理,有效,規(guī)范,實(shí)用的圖書館管理系統(tǒng),對(duì)校內(nèi)圖書資料進(jìn)行統(tǒng)一,集中的管理。</p><p>  本系統(tǒng)將會(huì)涉及到圖書館日常管理工作的基本常見細(xì)節(jié),諸如新圖書的入庫(kù)登記,圖書館所有書籍的分類管理,圖書的查詢,圖書的借閱、退還手續(xù)

3、的登記,費(fèi)舊圖書的清理撤除等,本系統(tǒng)所要實(shí)現(xiàn)的這些功能基本上涵蓋了圖書館的日常管理工作,基本能夠滿足校園圖書館的工作人員的管理需要。</p><p>  在對(duì)本系統(tǒng)的具體開發(fā)過(guò)程當(dāng)中,將采用Java語(yǔ)言進(jìn)行開發(fā),以Sql Server實(shí)現(xiàn)后臺(tái)數(shù)據(jù)庫(kù),本系統(tǒng)是完全基于圖形化用戶界面(GUI)的單機(jī)版本。</p><p>  本系統(tǒng)的設(shè)計(jì)是在Windows 7簡(jiǎn)體中文版操作系統(tǒng)環(huán)境下,使用 J

4、ava中文版開發(fā)成功的。數(shù)據(jù)庫(kù)是MIS中的重要支持技術(shù),在MIS開發(fā)過(guò)程中,如何選擇數(shù)據(jù)庫(kù)管理是一個(gè)重要的問(wèn)題,目前,數(shù)據(jù)庫(kù)產(chǎn)品較多,每種產(chǎn)品都具有各自的特點(diǎn)和適用范圍,因此,在選擇數(shù)據(jù)庫(kù)時(shí),應(yīng)考慮數(shù)據(jù)庫(kù)應(yīng)用的特點(diǎn)及適用范圍,本系統(tǒng)所使用的后臺(tái)數(shù)據(jù)庫(kù)是MS SQL2005數(shù)據(jù)庫(kù)。</p><p>  本系統(tǒng)選用的開發(fā)語(yǔ)言介紹如下:</p><p>  選擇了美國(guó)SUN公司推出的Java開發(fā)

5、工具。Java 是第一個(gè)全面支持面向?qū)ο蟪绦蛟O(shè)計(jì)的數(shù)據(jù)庫(kù)語(yǔ)言工具。Java的主要特點(diǎn)有:</p><p>  1、語(yǔ)言是簡(jiǎn)單的、小型的、結(jié)構(gòu)中性的</p><p>  2、強(qiáng)大的數(shù)據(jù)庫(kù)開發(fā)功能</p><p>  3、擴(kuò)大了對(duì)SQL語(yǔ)言的支持</p><p>  4、是面向?qū)ο蟮?、高性能的、多線程的</p><p> 

6、 5、是分布式的、面向網(wǎng)絡(luò)</p><p><b>  6、具有平臺(tái)無(wú)關(guān)性</b></p><p>  7、語(yǔ)言具有可移植性、是動(dòng)態(tài)的</p><p><b>  需求分析</b></p><p>  圖書館管理系統(tǒng)是圖書館管理工作中補(bǔ)課缺少的部分,對(duì)于圖書館的管理者和使用者來(lái)說(shuō)都非常重要,但長(zhǎng)期以

7、來(lái),人們使用傳統(tǒng)的手工方式或性能較低的圖書館管理系統(tǒng)管理圖書館的日常事務(wù),操作流程比較繁瑣,效率相當(dāng)?shù)?。而一個(gè)成功的圖書館管理系統(tǒng)應(yīng)提供快速的圖書館信息檢索功能,快捷的圖書借閱,歸還流程,為管理者提供充足的信息和快捷的數(shù)據(jù)處理手段。從讀者與圖書館管理員的角度出發(fā),本著以讀者借書,還書快捷,方便的原則,本系統(tǒng)有一下特點(diǎn):</p><p>  ①:具有良好的系統(tǒng)性能,友好的用戶界面。</p><p

8、>  ②:較高的處理效率,便于使用和維護(hù)。</p><p> ?、郏翰捎贸墒斓募夹g(shù)開發(fā),使系統(tǒng)具有較高的技術(shù)水平和較長(zhǎng)的生命周期。</p><p> ?、埽合到y(tǒng)盡可能簡(jiǎn)化圖書館管理員的重復(fù)工作,提高工作效率。</p><p>  ⑤:簡(jiǎn)化數(shù)據(jù)查詢,統(tǒng)計(jì)難度。</p><p><b>  二:系統(tǒng)設(shè)計(jì)</b><

9、/p><p><b>  一:系統(tǒng)目標(biāo)</b></p><p>  根據(jù)以上的需求分析及用戶的溝通,該系統(tǒng)應(yīng)達(dá)到以下目標(biāo):</p><p> ?、伲航缑嬖O(shè)計(jì)友好,美觀。</p><p>  ②:數(shù)據(jù)存儲(chǔ)安全,可靠。</p><p> ?、郏盒畔⒎诸惽逦瑴?zhǔn)確。</p><p>

10、 ?、埽簭?qiáng)大的查詢功能,保證數(shù)據(jù)查詢的靈活性。</p><p>  ⑤:操作簡(jiǎn)單易用,界面清晰大方。</p><p><b> ?、蓿合到y(tǒng)安全穩(wěn)定。</b></p><p>  ⑦:開發(fā)技術(shù)先進(jìn),功能完備,擴(kuò)展性強(qiáng)。</p><p>  ⑧:占用資源少,對(duì)硬件要求低。</p><p> ?、幔禾峁?/p>

11、靈活,方便的權(quán)限設(shè)置功能,使整個(gè)系統(tǒng)的管理分工明確。</p><p><b>  二:系統(tǒng)功能結(jié)構(gòu)</b></p><p>  圖書館管理系統(tǒng)分為四大功能模塊,分為基礎(chǔ)數(shù)據(jù)維護(hù),圖書借閱管理,新書訂購(gòu)功能,系統(tǒng)維護(hù)。本系統(tǒng)各個(gè)部分及其包括的功能模塊如圖:</p><p><b>  三:系統(tǒng)預(yù)覽</b></p>

12、<p>  圖書館管理系統(tǒng)有多多個(gè)程序界面組成,以下是幾個(gè)典型界面</p><p>  該界面用于將讀者相關(guān)信息添加至數(shù)據(jù)庫(kù)表中。</p><p>  該界面用于展示讀者相關(guān)信息,并且提供了參與刪除讀者信息。</p><p>  該界面主要實(shí)現(xiàn)新書訂購(gòu)功能。</p><p>  該界面主要實(shí)現(xiàn)新書驗(yàn)收功能。</p>

13、<p><b>  四:文件組織結(jié)構(gòu)</b></p><p>  圖書館管理系統(tǒng)系統(tǒng)文件夾組織結(jié)構(gòu)</p><p><b>  四:數(shù)據(jù)庫(kù)設(shè)計(jì)</b></p><p><b>  一:數(shù)據(jù)庫(kù)概要說(shuō)明</b></p><p>  SQL Server 2005 具有很

14、強(qiáng)的完整性與課伸縮性,具有較低的價(jià)格與較高的性能。數(shù)據(jù)庫(kù)的樹形結(jié)構(gòu)圖如圖所示:</p><p><b>  二:數(shù)據(jù)庫(kù)概念設(shè)計(jì)</b></p><p>  根據(jù)以上對(duì)系統(tǒng)的需求分析,系統(tǒng)設(shè)計(jì),本系統(tǒng)使用的數(shù)據(jù)庫(kù)實(shí)體分別為圖書信息實(shí)體,圖書分類實(shí)體,圖書訂購(gòu)實(shí)體,讀者信息實(shí)體,操作員信息實(shí)體,圖書借閱信息實(shí)體,庫(kù)存信息實(shí)體</p><p><

15、;b>  1:圖書信息實(shí)體</b></p><p>  圖書信息實(shí)體包括圖書編號(hào),類別編號(hào),書名,譯者,出版社,價(jià)格,出版時(shí)間等屬性。圖書信息實(shí)體的E-R圖如圖所示。</p><p><b>  2:讀者信息實(shí)體</b></p><p>  讀者信息實(shí)體包括條形碼,姓名,性別,年齡,電話,押金,生日,職業(yè),證件類型,辦證日期,

16、最大借書量,證件號(hào)碼等屬性,E-R圖如圖所示。</p><p>  3:圖書借閱信息實(shí)體</p><p>  圖書借閱信息實(shí)體包括編號(hào),圖書編號(hào),讀者編號(hào),操作員編號(hào),是否歸還,借閱日期,歸還日期等屬性。E-R圖如圖所示。</p><p><b>  4:圖書分類實(shí)體</b></p><p>  圖書分類實(shí)體包括編號(hào),類

17、別名稱等屬性,E-R圖如圖所示。</p><p><b>  5:圖書訂購(gòu)實(shí)體</b></p><p>  圖書訂購(gòu)實(shí)體主要包括圖書編號(hào),訂購(gòu)日期,訂購(gòu)數(shù)量,操作員,是否驗(yàn)收和折扣等屬性。E-R圖如圖所示。</p><p><b>  6:操作員信息實(shí)體</b></p><p>  操作員信息實(shí)體主

18、要包括編號(hào),姓名,性別,年齡,身份證號(hào),工作日期,電話,是否為管理員和密碼等屬性。E-R圖如圖所示。</p><p><b>  7:庫(kù)存信息實(shí)體</b></p><p>  庫(kù)存信息實(shí)體主要包括編號(hào),庫(kù)存數(shù)量等屬性。E-R圖如圖所示。</p><p><b>  五:數(shù)據(jù)庫(kù)邏輯設(shè)計(jì)</b></p><

19、p>  1:tb_bookInfo(圖書信息表)</p><p>  圖書信息表包括圖書編號(hào),圖書類別編號(hào),書名,作者,譯者,出版社,出版時(shí)間和價(jià)格等信息。</p><p>  tb_bookType(圖書分類表)</p><p>  圖書分類表包括編號(hào),類別名稱,可借天數(shù)和罰款金額等信息。</p><p>  tb_borrow(圖書

20、借閱表)</p><p>  圖書借閱表包括,圖書編號(hào),讀者編號(hào),操作員編號(hào),是否歸還,借閱日期,歸還日期等信息。</p><p>  tb_operator(操作員信息表)</p><p>  操作員信息表主要包括編號(hào),姓名,性別,年齡,身份證號(hào),工作日期,電話,是否為管理員和密碼等信息。</p><p>  tb_order(圖書訂購(gòu)表)

21、</p><p>  圖書訂購(gòu)表主要包括圖書編號(hào),訂購(gòu)日期,訂購(gòu)數(shù)量,操作員,是否驗(yàn)收和折扣等信息。圖書訂購(gòu)表以圖書編號(hào)與圖書信息表建立了關(guān)系。</p><p>  tb_reader(讀者信息表)</p><p>  讀者信息表包括條形碼,姓名,性別,年齡,電話,押金,生日,職業(yè),證件類型,辦證日期,最大借書數(shù)量,證件號(hào)碼等信息。</p><p

22、>  tb_stockpile(庫(kù)存信息表)</p><p>  庫(kù)存信息表主要包括編號(hào),庫(kù)存數(shù)量等信息。庫(kù)存信息表以庫(kù)存編號(hào)與圖書信息表建立了關(guān)系。</p><p><b>  六:數(shù)據(jù)庫(kù)建模</b></p><p>  本系統(tǒng)數(shù)據(jù)庫(kù)采用Power Designer軟件建立數(shù)據(jù)庫(kù)中各個(gè)表的關(guān)系,進(jìn)行數(shù)據(jù)庫(kù)的建模,以連接各個(gè)數(shù)據(jù)庫(kù),使數(shù)據(jù)

23、庫(kù)中各個(gè)實(shí)體間建立聯(lián)系。數(shù)據(jù)庫(kù)中各個(gè)表間關(guān)系如圖所示。</p><p><b>  七:詳細(xì)設(shè)計(jì)</b></p><p><b>  一:公共模塊設(shè)計(jì)</b></p><p>  1:數(shù)據(jù)庫(kù)連接及操作類的編寫</p><p>  數(shù)據(jù)庫(kù)連接及操作類通常包括連接數(shù)據(jù)庫(kù)的方法getConnection,

24、執(zhí)行查詢語(yǔ)句的方法executeQuery(),執(zhí)行更新操作的方法executeUpdate(),關(guān)閉數(shù)據(jù)庫(kù)連接的方法close()</p><p>  1:指定類Dao.java保存的包,并導(dǎo)入所需的類包。關(guān)鍵代碼如下:</p><p>  package com.wsy.dao;//指定類的包名稱</p><p>  //導(dǎo)入進(jìn)行數(shù)據(jù)庫(kù)連接時(shí)所使用的java

25、.sql.Connection類</p><p>  import java.sql.Connection;</p><p>  //導(dǎo)入進(jìn)行數(shù)據(jù)庫(kù)連接時(shí)所使用的java.sql.DriverManager類</p><p>  import java.sql.DriverManager;</p><p>  //導(dǎo)入進(jìn)行數(shù)據(jù)庫(kù)表查詢時(shí)所使用

26、的java.sql.Resultset類</p><p>  import java.sql.ResultSet;</p><p>  //導(dǎo)入進(jìn)行數(shù)據(jù)庫(kù)操作時(shí)捕捉異常使用的java.sql.SQLException類</p><p>  import java.sql.SQLException;</p><p>  2:在Dao.java類

27、的構(gòu)造方法中創(chuàng)建數(shù)據(jù)庫(kù)連接操作。在此類中首先定義數(shù)據(jù)庫(kù)連接驅(qū)動(dòng)包名,數(shù)據(jù)庫(kù)連接路徑,數(shù)據(jù)庫(kù)連接用戶名,密碼等靜態(tài)變量,然后在構(gòu)造函數(shù)中實(shí)現(xiàn)數(shù)據(jù)庫(kù)連接操作。在數(shù)據(jù)庫(kù)連接代碼中需要添加try...catch關(guān)鍵字,捕捉數(shù)據(jù)庫(kù)連接時(shí)可能拋出的異常。關(guān)鍵代買如下:</p><p><b>  //定義驅(qū)動(dòng)報(bào)名稱</b></p><p>  protected static S

28、tring dbClassName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";</p><p>  protected static String dbUrl = "jdbc:sqlserver://localhost:1433;"</p><p>  + "DatabaseName=

29、db_library;SelectMethod=Cursor";//定義數(shù)據(jù)庫(kù)連接路徑</p><p>  protected static String dbUser = "shining";//數(shù)據(jù)庫(kù)連接用戶名</p><p>  protected static String dbPwd = "1";//數(shù)據(jù)庫(kù)連接密碼</p&g

30、t;<p>  protected static String second = null;</p><p>  private static Connection conn = null;//定義一個(gè)數(shù)據(jù)庫(kù)連接</p><p>  private Dao() {</p><p>  try {//捕捉數(shù)據(jù)庫(kù)連接異常</p>

31、<p>  if (conn == null) {//如果連接為空</p><p>  Class.forName(dbClassName).newInstance(); //裝載SQl Server驅(qū)動(dòng)</p><p>  //獲取數(shù)據(jù)庫(kù)連接</p><p>  conn = DriverManager.getConnection(dbU

32、rl, dbUser, dbPwd);</p><p><b>  }</b></p><p>  Else//如果連接不為空</p><p><b>  return;</b></p><p>  } catch (Exception ee) {//返回</p>

33、<p>  ee.printStackTrace();//捕捉數(shù)據(jù)庫(kù)連接異常</p><p><b>  }</b></p><p>  創(chuàng)建執(zhí)行查詢語(yǔ)句的方法executeQuery,其返回值為ResultSet結(jié)果集。首先需要初始化Dao對(duì)象,調(diào)用構(gòu)造函數(shù),從而獲取數(shù)據(jù)庫(kù)連接。executeQuery方法代碼如下:</p><p

34、>  private static ResultSet executeQuery(String sql) {</p><p><b>  try {</b></p><p>  if(conn==null)</p><p>  new Dao();</p><p>  return conn.createState

35、ment(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE).executeQuery(sql);</p><p>  } catch (SQLException e) {</p><p>  e.printStackTrace();</p><p>  return null;</p>

36、<p>  } finally {</p><p><b>  }</b></p><p><b>  }</b></p><p>  創(chuàng)建執(zhí)行更新操作的方法executeUpdate,它的返回值為int類型的整數(shù),此返回值代表數(shù)據(jù)更新的操作是否成功,返回1代表稱,不成功則返回-1,其關(guān)鍵代碼如下:</

37、p><p>  private static int executeUpdate(String sql) {</p><p><b>  try {</b></p><p>  if(conn==null)</p><p>  new Dao();</p><p>  return conn.crea

38、teStatement().executeUpdate(sql);</p><p>  } catch (SQLException e) {</p><p>  System.out.println(e.getMessage());</p><p>  //if(e.getMessage().equals("[Microsoft][SQLServer 20

39、00 Driver for JDBC][SQLServer]DELETE 語(yǔ)句與 COLUMN REFERENCE 約束 'FK_TB_BORRO_REFERENCE_TB_BOOKI' 沖突。該沖突發(fā)生于數(shù)據(jù)庫(kù) 'db_library',表 'tb_borrow', column 'bookISBN'。"))</p><p>  retu

40、rn -1;</p><p>  } finally {</p><p><b>  }</b></p><p><b>  }</b></p><p>  為了避免運(yùn)行程序時(shí)資源浪費(fèi),優(yōu)化項(xiàng)目的運(yùn)行速度,需要在完成數(shù)據(jù)庫(kù)操作后,關(guān)閉數(shù)據(jù)庫(kù)連接,其關(guān)鍵代碼如下:</p><p&g

41、t;  public static void close() {</p><p><b>  try {</b></p><p>  conn.close();</p><p>  } catch (SQLException e) {</p><p>  e.printStackTrace();</p>&

42、lt;p><b>  }finally{</b></p><p>  conn = null;</p><p><b>  }</b></p><p><b>  }</b></p><p>  二:MenuActions類的編寫</p><p>

43、  通常激活同一個(gè)命令有多種方式,用戶可以通過(guò)工具欄中的按鈕或菜單選擇特定的功能。在本系統(tǒng)中命令就是彈出內(nèi)部窗體</p><p>  Swing包提供了一個(gè)非常有用的機(jī)制來(lái)封裝命令,并將其連接到多個(gè)事件源,這種機(jī)制就是Action借口。Action接口有如下方法:</p><p>  Public void actionPerformed(ActionEvent e)</p>

44、<p>  Public Object getValue(String key)</p><p>  Public void putValue(String key,Object value)</p><p>  Public boolean isEnabled()</p><p>  Public void setEnabled(boolean b)&

45、lt;/p><p>  Pubilc void addPropertyChangeListener(PropertyChangeListener listener)</p><p>  Pinlic void removePropertyChangeListener(PropertyListener listener))</p><p>  在actinPerforme

46、d()方法執(zhí)行“更改密碼”窗體的彈出類中操作,關(guān)鍵代碼如下:</p><p>  private static class PasswordModiAction extends AbstractAction {</p><p><b>  /**</b></p><p><b>  * </b></p>&l

47、t;p><b>  */</b></p><p>  private static final long serialVersionUID = 1L;</p><p>  PasswordModiAction() {</p><p>  putValue(Action.NAME,"更改口令");</p>

48、<p>  putValue(Action.LONG_DESCRIPTION, "修改當(dāng)前用戶密碼");</p><p>  putValue(Action.SHORT_DESCRIPTION, "更換口令");//在“更改口令”提示中顯示的文字</p><p>  //putValue(Action.SMALL_ICON,Createcd

49、Icon.add("bookAddtb.jpg"));</p><p>  //將圖標(biāo)存儲(chǔ)到動(dòng)作對(duì)象中</p><p>  //setEnabled(false);//使動(dòng)作禁用</p><p><b>  }</b></p><p>  public void actionPerformed(Act

50、ionEvent e) {</p><p>  if (!frames.containsKey("更改密碼")||frames.get("更改密碼").isClosed()) {</p><p>  GengGaiMiMa iframe=new GengGaiMiMa();</p><p>  frames.put("

51、;更改密碼", iframe);</p><p>  Library.addIFame(frames.get("更改密碼"));</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b>

52、</p><p>  三:限制文本框長(zhǎng)度類編寫</p><p>  在swing語(yǔ)言創(chuàng)建的窗體中,當(dāng)JTextField組建創(chuàng)建時(shí),可以指定文本框的寬度。但在JTextfield的構(gòu)造器中設(shè)定的寬度并不是用戶輸入的字符個(gè)數(shù)上限,用戶可以在文本框中輸入一個(gè)更長(zhǎng)的字符串,此時(shí)需要限制用戶輸入字符串的長(zhǎng)度。創(chuàng)建此類的步驟如下:</p><p>  1,。創(chuàng)建MyDocum

53、ent.java類,此類繼承PlainDocument類。關(guān)鍵代碼如下:</p><p>  Public class Mydocument extends PlainDocument{</p><p><b>  }</b></p><p>  在Mydocument.java類中創(chuàng)建了兩個(gè)構(gòu)造函數(shù),其中一個(gè)是又參數(shù)的,另一個(gè)是無(wú)參數(shù)的。關(guān)鍵

54、代碼如下:</p><p>  Public Mydocument(int newMaxLength{</p><p><b>  Super();</b></p><p>  Maxlength=newMaxlengyh;</p><p><b>  }</b></p><p&

55、gt;  Public MyDocument(){</p><p><b>  This(10);</b></p><p><b>  }</b></p><p>  重載父類方法insertString(),在此方法中限定文本框允許輸入字符串長(zhǎng)度。關(guān)鍵代碼如下:</p><p>  public

56、void insertString(int offset,String str,AttributeSet a)</p><p>  Throws BadLocationException{</p><p>  If (getLength()+str.length()>maxLength){</p><p><b>  return;</b>

57、;</p><p><b>  }else{</b></p><p>  super.insertString(offset , str,a);</p><p><b>  }</b></p><p><b>  }</b></p><p>  在程序設(shè)

58、計(jì)中,當(dāng)需要限制用戶輸入字符串長(zhǎng)度時(shí),可以用如下代碼</p><p>  JTextfield textfield=new JTextfield("請(qǐng)輸入13位書號(hào)",13);</p><p>  Textfield.setDocument(new MyDocument(13));</p><p>  四:描述組合框索引與內(nèi)容類的編寫</p

59、><p>  在程序編寫的過(guò)程中,經(jīng)常會(huì)遇到組合框組件的應(yīng)用。又是要在窗體中的組合框中顯示具體內(nèi)容,通常需要在數(shù)據(jù)庫(kù)中存儲(chǔ)此組合框的索引值,這時(shí)便需要使用一種數(shù)據(jù)結(jié)構(gòu)將組合框中的內(nèi)容與索引值聯(lián)系在一起</p><p>  創(chuàng)建組合框組件的索引值與其對(duì)應(yīng)的內(nèi)容Item.java類,這個(gè)類中不僅包含代表組合框索引的成員變量id和代表組合框內(nèi)容的成員變量name,還包括兩個(gè)成員變量的setXXX()

60、,getXXX()方法。關(guān)鍵代碼如下:</p><p>  package com.wsy.JComPz;</p><p>  public class Item {</p><p>  public String id;</p><p>  public String name;</p><p>  public S

61、tring getId() {</p><p>  return id;</p><p><b>  }</b></p><p>  public void setId(String id) {</p><p>  this.id = id;</p><p><b>  }</b&

62、gt;</p><p>  public String getName() {</p><p>  return name;</p><p><b>  }</b></p><p>  public void setName(String name) {</p><p>  this.name =

63、 name;</p><p><b>  }</b></p><p>  public String toString() {</p><p>  return getName();</p><p><b>  }</b></p><p><b>  }</b

64、></p><p>  創(chuàng)建MapPz.java類,使用Map關(guān)聯(lián)組合框的索引與組合框的具體內(nèi)容。關(guān)鍵代碼如下:</p><p>  package com.wsy.JComPz;</p><p>  import java.util.HashMap;</p><p>  import java.util.List;</p>

65、<p>  import java.util.Map;</p><p>  import javax.swing.JComboBox;</p><p>  import com.wsy.dao.Dao;</p><p>  import com.wsy.model.BookType;</p><p>  public class

66、 MapPz {</p><p>  static Map map = new HashMap();</p><p>  public static Map getMap() {</p><p>  List list = Dao.selectBookCategory();</p><p>  for (int i = 0; i < l

67、ist.size(); i++) {</p><p>  BookType booktype = (BookType) list.get(i);</p><p>  Item item = new Item();</p><p>  item.setId(booktype.getId());</p><p>  item.setName(bo

68、oktype.getTypeName());</p><p>  map.put(item.getId(), item);</p><p><b>  }</b></p><p>  return map;</p><p><b>  }</b></p><p><b&

69、gt;  }</b></p><p>  上述代碼中用到了Dao.java中的selectBookCategory()方法,此方法用于查詢圖書類別相關(guān)信息,首先將數(shù)據(jù)庫(kù)查詢的相關(guān)信息放入javaBean中,然后將javaBean對(duì)象添加到List集合中,最終將結(jié)果以List形式返回,關(guān)鍵代碼如下:</p><p>  public static List selectBookC

70、ategory(String bookType) {</p><p>  List list=new ArrayList();</p><p>  String sql = "select days from tb_bookType where typeName='"+bookType+"'";</p><p&g

71、t;  ResultSet rs = Dao.executeQuery(sql);</p><p><b>  try {</b></p><p>  while (rs.next()) {</p><p>  BookType type=new BookType();</p><p>  type.setDays(rs

72、.getString("days"));</p><p>  list.add(type);</p><p><b>  }</b></p><p>  } catch (Exception e) {</p><p>  e.printStackTrace();</p><p>

73、;<b>  }</b></p><p>  Dao.close();</p><p>  return list;</p><p><b>  }</b></p><p>  在JLable上添加圖片類的編寫</p><p>  為了美化窗體,通常需要在窗體上添加圖片,關(guān)鍵

74、代碼如下:</p><p>  package com.wsy.util;</p><p>  import java.net.URL;</p><p>  import javax.swing.ImageIcon;</p><p>  import com.wsy.Library;</p><p>  public

75、class CreatecdIcon {</p><p>  public static ImageIcon add(String ImageName){</p><p>  URL IconUrl = Library.class.getResource("/"+ImageName);</p><p>  ImageIcon icon=new I

76、mageIcon(IconUrl);</p><p>  return icon;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  二:主窗體設(shè)計(jì)</b></p><p>  主窗體的設(shè)計(jì)中,使

77、用到JMenuBar類與JToolBar類來(lái)創(chuàng)建菜單欄與工具欄,菜單欄的創(chuàng)建比較簡(jiǎn)單,使用JMenuBar的構(gòu)造函數(shù)初始化菜單欄即可。</p><p><b>  例如:</b></p><p>  JMenuBar menubar=new JMenuBar(); //創(chuàng)建菜單欄</p><p>  frame.setJMenu=new JMe

78、nu(menuBar); //將菜單欄放入頂層框架</p><p>  JMenu editMenu=new JMenu("圖書類別管理); //在菜單欄中創(chuàng)建頂層菜單</p><p>  menuBar.add(editzMenu); //將頂層菜單欄添加到菜單欄中</p><p>  JMenuItem exit=new JMenuItem("

79、;退出"); //在菜單欄中創(chuàng)建菜單項(xiàng)</p><p>  editMenu.add(exit); //將菜單項(xiàng)添加到頂層菜單中</p><p>  editMenu.addSeperator(); //添加分隔符</p><p>  JMenu.bookTypeAdd=new JMenu("圖書添加"); //創(chuàng)建子菜單</p&

80、gt;<p>  editMenu.add(bookTypeAdd);//在頂層菜單中添加子菜單</p><p>  在主窗體中工具欄的創(chuàng)建也非常簡(jiǎn)單。工具欄為系統(tǒng)提供了迅速訪問(wèn)常用命令的一系列按鈕。可以使用如下代碼創(chuàng)建工具欄:</p><p>  JToolBar bar=new JToolBar();</p><p>  完成主窗體中工具欄的創(chuàng)建后

81、同樣需要添加MenuActions類對(duì)象實(shí)現(xiàn)工具欄事件,由于需要在工具欄中添加圖標(biāo),所以將動(dòng)作對(duì)象添加到按鈕組件中,然后為按鈕設(shè)置圖標(biāo)。例如:</p><p>  //將圖書信息修改對(duì)象附加給按鈕組件</p><p>  JButton bookModiAndDelButton=new JButton(MenuActions.BOOK_MODIFY);</p><p&g

82、t;<b>  //創(chuàng)建圖標(biāo)方法</b></p><p>  ImageIcon bookmodiicon=CreatecdIcon.add("bookModiAndDeltb.jpg");</p><p>  bookModiAndDelButton,setIcon(bookmodiicon);//為按鈕設(shè)置圖標(biāo)</p><p

83、>  BookModiAndDelButton.setHideActionText(true);//使按鈕文字隱藏</p><p>  最后將按鈕添加到工具欄中:</p><p>  toolBar.add(bookModiAndDelButton);</p><p><b>  主窗體的實(shí)現(xiàn)過(guò)程:</b></p><

84、p>  1:創(chuàng)建Library類,在它的構(gòu)造函數(shù)中設(shè)置主窗體相關(guān)屬性,如窗體大小,窗體標(biāo)題等相關(guān)屬性,還可以為窗體設(shè)置背景圖片,并調(diào)用創(chuàng)建菜單欄與工具欄的方法,在主窗體中創(chuàng)建菜單欄與工具欄關(guān)鍵代碼如下:</p><p>  public Library() {</p><p><b>  super();</b></p><p>  se

85、tDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);</p><p>  //setModalExclusionType(ModalExclusionType.APPLICATION_EXCLUDE);</p><p>  setLocationByPlatform(true);</p><p>  setSi

86、ze(800, 600);</p><p>  setTitle("圖書館管理系統(tǒng)");</p><p>  JMenuBar menuBar = createMenu(); // 調(diào)用創(chuàng)建菜單欄的方法</p><p>  setJMenuBar(menuBar);</p><p>  JToolBar toolBar =

87、 createToolBar(); // 調(diào)用創(chuàng)建工具欄的方法</p><p>  getContentPane().add(toolBar, BorderLayout.NORTH);</p><p>  final JLabel label = new JLabel();</p><p>  label.setBounds(0, 0, 0, 0);</p&g

88、t;<p>  label.setIcon(null); // 窗體背景</p><p>  DESKTOP_PANE.addComponentListener(new ComponentAdapter() {</p><p>  public void componentResized(final ComponentEvent e) {</p><p&g

89、t;  Dimension size = e.getComponent().getSize();</p><p>  label.setSize(e.getComponent().getSize());</p><p>  label.setText("<html><img width=" + size.width + " height=&q

90、uot;</p><p>  + size.height + " src='"</p><p>  + this.getClass().getResource("/backImg.jpg")</p><p>  + "'></html>");</p><

91、p><b>  }</b></p><p><b>  });</b></p><p>  DESKTOP_PANE.add(label,new Integer(Integer.MIN_VALUE));</p><p>  getContentPane().add(DESKTOP_PANE);</p>

92、<p><b>  }</b></p><p>  2:編寫創(chuàng)建菜單欄方法,可以初始化JMenuBar類對(duì)象創(chuàng)建頂層菜單,并在頂層菜單上添加相關(guān)菜單項(xiàng)與子菜單,然后為菜單欄添加圖標(biāo),為菜單欄添加圖標(biāo)可以使用JMenu類中的setIcon()方法進(jìn)行添加。關(guān)鍵代碼如下:</p><p>  private JMenuBar createMenu() { //

93、創(chuàng)建菜單欄的方法</p><p>  JMenuBar menuBar = new JMenuBar();</p><p>  JMenu bookOrderMenu = new JMenu(); // 初始化新書訂購(gòu)管理菜單</p><p>  bookOrderMenu.setIcon(CreatecdIcon.add("xsdgcd.jpg"

94、;));</p><p>  bookOrderMenu.add(MenuActions.NEWBOOK_ORDER);</p><p>  bookOrderMenu.add(MenuActions.NEWBOOK_CHECK_ACCEPT);</p><p>  JMenu baseMenu = new JMenu();// 初始化基礎(chǔ)數(shù)據(jù)維護(hù)菜單</p&

95、gt;<p>  baseMenu.setIcon(CreatecdIcon.add("jcsjcd.jpg"));</p><p><b>  {</b></p><p>  JMenu readerManagerMItem = new JMenu("讀者信息管理");</p><p> 

96、 readerManagerMItem.add(MenuActions.READER_ADD);</p><p>  readerManagerMItem.add(MenuActions.READER_MODIFY);</p><p>  JMenu bookTypeManageMItem = new JMenu("圖書類別管理");</p><p&

97、gt;  bookTypeManageMItem.add(MenuActions.BOOKTYPE_ADD);</p><p>  bookTypeManageMItem.add(MenuActions.BOOKTYPE_MODIFY);</p><p>  JMenu menu = new JMenu("圖書信息管理");</p><p>  

98、menu.add(MenuActions.BOOK_ADD);</p><p>  menu.add(MenuActions.BOOK_MODIFY);</p><p>  baseMenu.add(readerManagerMItem);</p><p>  baseMenu.add(bookTypeManageMItem);</p><p&g

99、t;  baseMenu.add(menu);</p><p>  baseMenu.addSeparator();</p><p>  baseMenu.add(MenuActions.EXIT);</p><p><b>  }</b></p><p>  JMenu borrowManageMenu = new J

100、Menu(); // 借閱管理</p><p>  borrowManageMenu.setIcon(CreatecdIcon.add("jyglcd.jpg"));</p><p>  borrowManageMenu.add(MenuActions.BORROW); // 借閱</p><p>  borrowManageMenu.add(M

101、enuActions.GIVE_BACK); // 歸還</p><p>  borrowManageMenu.add(MenuActions.BOOK_SEARCH); // 搜索</p><p>  JMenu sysManageMenu = new JMenu(); // 系統(tǒng)維護(hù)</p><p>  sysManageMenu.setIcon(Createc

102、dIcon.add("jcwhcd.jpg"));</p><p>  JMenu userManageMItem = new JMenu("用戶管理"); // 用戶管理</p><p>  userManageMItem.add(MenuActions.USER_ADD);</p><p>  userManageMIte

103、m.add(MenuActions.USER_MODIFY);</p><p>  sysManageMenu.add(MenuActions.MODIFY_PASSWORD);</p><p>  sysManageMenu.add(userManageMItem);</p><p>  menuBar.add(baseMenu); // 添加基礎(chǔ)數(shù)據(jù)維護(hù)菜單到菜

104、單欄</p><p>  menuBar.add(bookOrderMenu); // 添加新書訂購(gòu)管理菜單到菜單欄</p><p>  menuBar.add(borrowManageMenu); // 添加借閱管理菜單到菜單欄</p><p>  menuBar.add(sysManageMenu); // 添加系統(tǒng)維護(hù)菜單到菜單欄</p><

105、;p>  return menuBar;</p><p><b>  }</b></p><p><b>  }</b></p><p>  3:編寫創(chuàng)建工具欄的方法,創(chuàng)建工具欄可以使用JToolBar類,創(chuàng)建工具欄后將所有的圖標(biāo)添加到工具欄中,可以為每個(gè)圖標(biāo)添加提示信息。由于在創(chuàng)建MenuActions類時(shí)已經(jīng)為每

106、個(gè)內(nèi)部窗體動(dòng)作添加了提示信息,關(guān)鍵代碼如下:</p><p><b>  /**</b></p><p><b>  * 創(chuàng)建工具欄</b></p><p><b>  * </b></p><p>  * @return JToolBar</p><p&g

107、t;<b>  */</b></p><p>  private JToolBar createToolBar() { // 創(chuàng)建工具欄的方法</p><p>  JToolBar toolBar = new JToolBar();</p><p>  toolBar.setFloatable(false);</p><p&

108、gt;  toolBar.setBorder(new BevelBorder(BevelBorder.RAISED));</p><p>  JButton bookAddButton=new JButton(MenuActions.BOOK_ADD);</p><p>  //ImageIcon icon=CreatecdIcon.add("bookAdd.bmp")

109、;//創(chuàng)建圖標(biāo)方法</p><p>  ImageIcon icon=new ImageIcon(Library.class.getResource("/bookAddtb.jpg"));//添加菜單欄圖標(biāo)</p><p>  bookAddButton.setIcon(icon);</p><p>  bookAddButton.setHid

110、eActionText(true);</p><p>  //bookAddButton.setToolTipText("fjdkjfk");//圖片上提示字</p><p>  toolBar.add(bookAddButton);</p><p>  //toolBar.add(MenuActions.BOOK_MODIFY);</p&

111、gt;<p>  //在工具欄中添加圖書修改與刪除圖標(biāo)</p><p>  JButton bookModiAndDelButton=new JButton(MenuActions.BOOK_MODIFY);</p><p>  ImageIcon bookmodiicon=CreatecdIcon.add("bookModiAndDeltb.jpg");

112、//創(chuàng)建圖標(biāo)方法</p><p>  bookModiAndDelButton.setIcon(bookmodiicon);</p><p>  bookModiAndDelButton.setHideActionText(true);</p><p>  toolBar.add(bookModiAndDelButton);</p><p>

113、  JButton bookTypeAddButton=new JButton(MenuActions.BOOKTYPE_ADD);</p><p>  ImageIcon bookTypeAddicon=CreatecdIcon.add("bookTypeAddtb.jpg");//創(chuàng)建圖標(biāo)方法</p><p>  bookTypeAddButton.setIcon(

114、bookTypeAddicon);</p><p>  bookTypeAddButton.setHideActionText(true);</p><p>  toolBar.add(bookTypeAddButton);</p><p>  JButton bookBorrowButton=new JButton(MenuActions.BORROW);<

115、/p><p>  ImageIcon bookBorrowicon=CreatecdIcon.add("bookBorrowtb.jpg");//創(chuàng)建圖標(biāo)方法</p><p>  bookBorrowButton.setIcon(bookBorrowicon);</p><p>  bookBorrowButton.setHideActionText

116、(true);</p><p>  toolBar.add(bookBorrowButton);</p><p>  JButton bookOrderButton=new JButton(MenuActions.NEWBOOK_ORDER);</p><p>  ImageIcon bookOrdericon=CreatecdIcon.add("book

117、Ordertb.jpg");//創(chuàng)建圖標(biāo)方法</p><p>  bookOrderButton.setIcon(bookOrdericon);</p><p>  bookOrderButton.setHideActionText(true);</p><p>  toolBar.add(bookOrderButton);</p><

118、p>  JButton bookCheckButton=new JButton(MenuActions.NEWBOOK_CHECK_ACCEPT);</p><p>  ImageIcon bookCheckicon=CreatecdIcon.add("newbookChecktb.jpg");//創(chuàng)建圖標(biāo)方法</p><p>  bookCheckButton.

119、setIcon(bookCheckicon);</p><p>  bookCheckButton.setHideActionText(true);</p><p>  toolBar.add(bookCheckButton);</p><p>  JButton readerAddButton=new JButton(MenuActions.READER_ADD)

120、;</p><p>  ImageIcon readerAddicon=CreatecdIcon.add("readerAddtb.jpg");//創(chuàng)建圖標(biāo)方法</p><p>  readerAddButton.setIcon(readerAddicon);</p><p>  readerAddButton.setHideActionText

121、(true);</p><p>  toolBar.add(readerAddButton);</p><p>  JButton readerModiAndDelButton=new JButton(MenuActions.READER_MODIFY);</p><p>  ImageIcon readerModiAndDelicon=CreatecdIcon.a

122、dd("readerModiAndDeltb.jpg");//創(chuàng)建圖標(biāo)方法</p><p>  readerModiAndDelButton.setIcon(readerModiAndDelicon);</p><p>  readerModiAndDelButton.setHideActionText(true);</p><p>  tool

123、Bar.add(readerModiAndDelButton);</p><p>  JButton ExitButton=new JButton(MenuActions.EXIT);</p><p>  ImageIcon Exiticon=CreatecdIcon.add("exittb.jpg");//創(chuàng)建圖標(biāo)方法</p><p>  Ex

124、itButton.setIcon(Exiticon);</p><p>  ExitButton.setHideActionText(true);</p><p>  toolBar.add(ExitButton);</p><p>  return toolBar;</p><p><b>  }</b></p&

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論