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