JAVA+SQL圖書館管理系統(tǒng)課程設(shè)計(jì)



《JAVA+SQL圖書館管理系統(tǒng)課程設(shè)計(jì)》由會(huì)員分享,可在線閱讀,更多相關(guān)《JAVA+SQL圖書館管理系統(tǒng)課程設(shè)計(jì)(44頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、畢業(yè)設(shè)計(jì)(論文) 題目: 圖書館管理系統(tǒng) 姓 名 學(xué) 號(hào) 專 業(yè) 計(jì)算機(jī)科學(xué)與技術(shù) 指導(dǎo)教師 2 目錄 摘要 IV 前言 V 第一章 圖書館管理系統(tǒng)分析 1 1.1 需求分析 1 1.2 功能分析 2 1.3 系統(tǒng)用例圖設(shè)計(jì) 2 1.4 繪制系統(tǒng)流程圖 3 1.5 系統(tǒng)的開發(fā)環(huán)境 4 第二章數(shù)據(jù)庫(kù)分析與設(shè)計(jì) 5 2.1 數(shù)據(jù)庫(kù)分析 5 2.2 數(shù)據(jù)庫(kù)概念設(shè)計(jì) 5 2.3 數(shù)據(jù)邏輯結(jié)構(gòu)設(shè)計(jì) 7 2.4 各表之間的聯(lián)系圖 9 第三章系統(tǒng)設(shè)計(jì)與功能實(shí)現(xiàn) 10 3.1 數(shù)據(jù)庫(kù)Dao類的構(gòu)建 10 3.2 系統(tǒng)登
2、錄模塊 11 3.3 主窗體模塊 13 3.4 圖書類別管理模塊 15 3.5 圖書信息管理模塊 17 3.6 讀者信息管理模塊 21 3.7 圖書訂購(gòu)管理模塊 24 3.8 圖書借閱管理模塊 27 3.9 系統(tǒng)維護(hù)模塊 30 第四章系統(tǒng)測(cè)試 35 4.1 測(cè)試項(xiàng)目 35 4.2 測(cè)試用例 35 結(jié)束語 37 參考文獻(xiàn) 38 iii 圖書館管理系統(tǒng) 摘要 圖書館管理系統(tǒng)是采用Java做前臺(tái),后臺(tái)數(shù)據(jù)庫(kù)則采用的是 SQL Server 2005,本系 統(tǒng)提供6個(gè)功能模塊,分別是圖書類別管理模塊、圖書信息管理模塊、讀者信息管理模塊、
3、 新書訂購(gòu)管理模塊、圖書借閱模塊,以及系統(tǒng)維護(hù)模塊。這 6個(gè)模塊里又有許多子模塊, 通過這些模塊之間的相互連接與配合,完成操作員發(fā)出的各種指令。 圖書館管理系統(tǒng)是一個(gè)供內(nèi)部人員使用的系統(tǒng)。而圖書館的工作人員也分為兩類,一 類是操作人員,主要負(fù)責(zé)圖書的借閱和歸還的工作;一類是管理員,除了操作人員的所有 功能外,還能夠?qū)斜?、書籍信息、讀者信息等進(jìn)行管理。 論文將全面介紹所設(shè)計(jì)的圖書館管理系統(tǒng)的系統(tǒng)功能和業(yè)務(wù)流程,并對(duì)系統(tǒng)進(jìn)行詳細(xì) 的數(shù)據(jù)分析和設(shè)計(jì),最終使用Java完成系統(tǒng)開發(fā)。 關(guān)鍵詞:圖書館管理系統(tǒng),SQL Server 2005, Java 5 刖百 隨著社會(huì)的發(fā)展,人
4、們對(duì)于知識(shí)的需求也在不斷地增長(zhǎng)。書籍作為人們獲取并增長(zhǎng)知 識(shí)的主要途徑,使得圖書館在人們生活中占有了一定位置。但是近幾年來,隨著書量的不 斷增長(zhǎng),造成了書庫(kù)空間極度不足,圖書擠壓,管理不善。這些都直接影響了讀者對(duì)圖書 館藏書的充分利用。這時(shí)圖書館就特別需要開發(fā)一套圖書館管理系統(tǒng),通過該系統(tǒng)來提高 圖書館的管理效率,從而減少管理方面的工作流和成本。 一個(gè)現(xiàn)代化的圖書館在正常運(yùn)營(yíng)中總是面對(duì)大量的讀者信息,書籍信息以及兩者相互 作用產(chǎn)生的借書信息,還書信息。面對(duì)圖書館數(shù)以萬計(jì)的圖書,紛繁復(fù)雜的讀者信息,頻 繁更替的借還書信息,傳統(tǒng)的直接方法不但管理出現(xiàn)漏洞, 造成損失。因此有一個(gè)智能化、 系統(tǒng)化、
5、信息化的圖書管理系統(tǒng)十分重要的。充分利用計(jì)算機(jī)的功能實(shí)現(xiàn)對(duì)讀者管理、書 籍管理,借閱管理等自動(dòng)化控制,將會(huì)使圖書館的工作大大減弱。方便友好的圖形界面、 簡(jiǎn)便的操作、完善的數(shù)據(jù)庫(kù)管理。將會(huì)使得圖書館系統(tǒng)極大限度的應(yīng)用于現(xiàn)代化圖書管理 中。 第一章圖書館管理系統(tǒng)分析 1.1 需求分析 圖書館管理系統(tǒng)是一個(gè)高度集成的圖書信息處理系統(tǒng),通過將圖書館的各種功能進(jìn)行 整合,從而達(dá)到顯示檢索信息,提高工作效率,降低管理成本等目的。一個(gè)典型的圖書館 管理系統(tǒng)應(yīng)該能夠管理所有的圖書種類,圖書信息以及讀者信息,還需要提供各種圖書信 息的檢索查詢功能。該系統(tǒng)還需要能夠?qū)D書的借閱,歸還進(jìn)行管理,并對(duì)讀者的罰款
6、進(jìn) 行自動(dòng)計(jì)算。通過該系統(tǒng)的自動(dòng)化管理,能夠大大減少圖書館管理人員,還能減少管理人 員的工作任務(wù),從而降低管理開銷和成本。 一個(gè)完整的圖書館管理系統(tǒng)包括前臺(tái)和后臺(tái),前臺(tái)主要是顯示在計(jì)算機(jī)屏幕上的顯示 界面,有各種指令按鈕,操作框以及文本框,后臺(tái)主要是為前臺(tái)的一些操作提供一些必要 的數(shù)據(jù),也就是一個(gè)相對(duì)于系統(tǒng)比較完整的數(shù)據(jù)庫(kù),操作員以及各類圖書的信息,借書者 的信息等等。 一個(gè)最基本的圖書館管理系統(tǒng)要有如下幾個(gè)重要功能: (1)用戶在借書超期的情況下得到來自管理員的提醒。 (2)管理員可以方便進(jìn)行圖書管理,用戶管理,管理員管理。圖書管理包括圖書信 息以及圖書分類的添加,修改,刪除。用戶管
7、理包括用戶信息的添加,刪除,修改。管理 員管理包括管理員信息的添加,刪除,修改等。 (3)用戶和管理員可以修改自己的密碼,修改前需先核實(shí)自己的原始密碼。 (4)未注冊(cè)用戶(游客)也可以瀏覽所有的圖書信息和分類信息,但是無法借閱。 (5)實(shí)現(xiàn)模糊查詢,使用戶得到更多的相關(guān)記錄。并且考慮使用的方便性,一些經(jīng) 常使用的輸入無須用戶輸入,比如進(jìn)行圖書查詢時(shí)圖書分類只須用戶做選擇就可以。 (6)考慮程序執(zhí)行操作時(shí)可能出現(xiàn)的情況,比如刪除圖書分類時(shí)該分類下存在圖書, 程序自動(dòng)跳轉(zhuǎn)該分類圖書查看。刪除某個(gè)用戶,如果存在借書記錄則不允許刪除,跳轉(zhuǎn)到 該用戶的借書記錄。等待管理員確認(rèn)該用戶所借圖書已經(jīng)全
8、部歸還之后才允許刪除該用戶 信息。 一個(gè)圖書館管理系統(tǒng)要是能實(shí)現(xiàn)以上的各種功能,那么這個(gè)圖書館管理系統(tǒng)也就算是 比較成功的一個(gè)系統(tǒng)了。 1.2 功能分析 根據(jù)以上需求分析,我所設(shè)計(jì)的圖書館管理系統(tǒng)有 6個(gè)功能模塊,分別是圖書類別管 理模塊,圖書信息管理模塊,讀者信息管理模塊,新書訂購(gòu)管理模塊,圖書借閱模塊以及 系統(tǒng)維護(hù)模塊。其中各功能模塊的具體說明如下: 圖書類別管理模塊:該模塊主要負(fù)責(zé)管理圖書館的圖書種類信息, 如圖書種類的名稱、 可借天數(shù)、罰款數(shù)目等信息。 圖書信息管理模塊:該模塊主要負(fù)責(zé)管理圖書館的圖書信息,如圖書編號(hào)、圖書名稱、 作者、出版社等信息。 讀者信息管理模塊:該模
9、塊主要負(fù)責(zé)管理圖書館的讀者信息,如讀者編號(hào)、讀者信息、 證件號(hào)碼、最大借書量等信息。 圖書訂購(gòu)管理模塊:該模塊主要負(fù)責(zé)管理圖書館的新書訂購(gòu)信息、包括新書訂購(gòu)和驗(yàn) 收新書兩個(gè)子模塊。 圖書借閱管理模塊:該模塊主要負(fù)責(zé)圖書館的書籍借閱和歸還信息,包括圖書借閱、 圖書歸還、圖書搜索3個(gè)子模塊。 系統(tǒng)維護(hù)模塊:該模塊主要負(fù)責(zé)圖書館的工作人員信息,包括用戶管理和更改系統(tǒng)口 令兩個(gè)子模塊。 1.3 系統(tǒng)用例圖設(shè)計(jì) 圖書館管理系統(tǒng)是一個(gè)內(nèi)部人員使用的系統(tǒng),也就是說不是所有的人都能夠使用它, 只有圖書館的工作人員才能使用。而圖書館的工作人員也分為兩類,一類是操作人員,主 要負(fù)責(zé)圖書的借閱和歸還的工作
10、;一類是管理員,除了操作人員的所有功能外,還能夠?qū)?書籍列表,書籍信息,讀者信息等進(jìn)行管理。下面以管理員為例繪制其所對(duì)應(yīng)的用例圖如 圖1.1所示。 1.4 繪制系統(tǒng)流程圖 本系統(tǒng)首先需要對(duì)用戶的身份進(jìn)行識(shí)別,只有合法的用戶才能進(jìn)入系統(tǒng),否則將無法 進(jìn)入系統(tǒng)。進(jìn)入系統(tǒng)后,首先打開系統(tǒng)主窗體,在系統(tǒng)首頁的菜單欄或者功能區(qū)可以選擇 各種導(dǎo)航鏈接來進(jìn)行各種操作。由于不同權(quán)限的用戶對(duì)于系統(tǒng)有不同的功能,下面以功能 最多的管理員為例,其系統(tǒng)流程圖如圖 1.2所示。 圖1.2系統(tǒng)流程圖 圖書類別管理 系統(tǒng)維護(hù) 用戶 管理 者息加 讀信添 書息改 圖信修 書息加 圖信添
11、 書別改 圖類修 書別加 圖類添 1.5 系統(tǒng)的開發(fā)環(huán)境 圖書館管理系統(tǒng)的具體開發(fā)環(huán)境要求如下: (1)系統(tǒng)開發(fā)平臺(tái):Eclipse 34 (2)數(shù)據(jù)庫(kù)管理系統(tǒng)軟件:SQL Server 200s (3)運(yùn)行平臺(tái):Windows 7。 (4) Java開發(fā)包:JDK 5.0以上。 (5)分辨率:800>600以上。 (6) GUI 開發(fā)包:Swing。 16 第二章數(shù)據(jù)庫(kù)分析與設(shè)計(jì) 6.1 數(shù)據(jù)庫(kù)分析 在開發(fā)圖書館管理系統(tǒng)時(shí),考慮到圖書量大,數(shù)據(jù)庫(kù)維護(hù)大的特點(diǎn),選用 SQL Server 2005作為數(shù)據(jù)庫(kù)管理系統(tǒng)。在 SQL Server 2005中新增一
12、個(gè)數(shù)據(jù)庫(kù),其數(shù)據(jù)庫(kù)名為 db_library。數(shù)據(jù)庫(kù)中可以包含圖書信息、圖書類別信息、圖書借閱信息、操作員信息、圖 書訂購(gòu)信息及讀者信息等實(shí)體,用來存儲(chǔ)不同的信息。 6.2 數(shù)據(jù)庫(kù)概念設(shè)計(jì) 本系統(tǒng)一共設(shè)計(jì)規(guī)劃出6個(gè)實(shí)體,分別是圖書類別信息實(shí)體、圖書信息實(shí)體、讀者信 息實(shí)體、操作員實(shí)體、圖書借閱信息實(shí)體以及圖書訂購(gòu)信息實(shí)體。 圖書的類別有很多,因此可以建立一個(gè)圖書館類別信息表,專門用來保存圖書的類別 信息。同時(shí)因?yàn)槊糠N類別的書籍閱讀時(shí)間有所不同,所以需要在類別表中保存該類別可借 天數(shù)信息。圖書類別信息實(shí)體 E-R圖如圖2.1所示。 圖2.1圖書類別信息實(shí)體 E-R圖 對(duì)于圖書館
13、來說最重要的就是要管理其下的書籍,所以需要建立一個(gè)圖書信息表,用 來保存圖書的所有信息。圖書信息實(shí)體 E-R圖如圖2.2所示 圖2.2圖書信息實(shí)體 E-R圖 要想在圖書館借書首先需要進(jìn)行登記并交付押金。領(lǐng)取讀書卡才能借書。所以需要建 立一個(gè)讀者信息表來保存圖書館的所有讀者的登記信息。讀者信息實(shí)體 E-R圖如圖2.3所 示。 圖書館里一般有一個(gè)以上的系統(tǒng)操作員,需要建立一個(gè)操作員信息表,用來保存操作 員的身份信息。操作員信息實(shí)體 E-R圖如圖2.4所示。 圖書館最大的功能就是能夠借書,這時(shí)需要建立一個(gè)圖書借閱信息表,用來保存讀者 的借書信息。圖書的借閱信息實(shí)
14、體 E-R圖如圖2.5所示。 圖書館除了借書,還需要到出版社或其他代理商訂購(gòu)新書,這是需要建立一個(gè)圖書訂 購(gòu)信息表,用來保存所有的訂購(gòu)信息。圖書訂購(gòu)信息實(shí)體 E-R圖如圖2.6所示。 圖2.6圖書訂購(gòu)信息實(shí)體 E-R圖 6.3 數(shù)據(jù)邏輯結(jié)構(gòu)設(shè)計(jì) 根據(jù)設(shè)計(jì)好的各實(shí)體E-R圖創(chuàng)建數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu),數(shù)據(jù)庫(kù)各表的結(jié)構(gòu)如下: (1)圖書類別信息采表用來儲(chǔ)存所有的圖書類別信息,包括圖書類別編號(hào)、圖書類別名 稱、可借天數(shù)以及遲還一天的罰款數(shù)目 4個(gè)字段。該表的邏輯結(jié)構(gòu)如表 2.1所示。 表2.1圖書類別信息表 id 整數(shù)(int) 是 圖書類別編號(hào) ty
15、peName ( varchar) 否 圖書類別名稱 days 整數(shù)(int) 否 可借天數(shù) fk 遲還一天的罰款數(shù)目 (2)圖書信息表用來儲(chǔ)存所有的圖書信息,包括圖書編號(hào)、類別編號(hào)、圖書名稱、作者、 譯者、出版社、出版日期以及書籍價(jià)格 8個(gè)字段。該表的邏輯結(jié)構(gòu)如表 2.2所示。 表2.2圖書信息表 ISBN 文本(varchar) 是 圖書編號(hào) typeId 整數(shù)(int) 否(外鍵) 類別編號(hào) bookname ( varchar) 否 圖書名稱 writer ( varchar) 否 作者 transla
16、tor ( varchar) 否 譯者 publisher ( varchar) 否 出版社 date 日期時(shí)間(datetime) 否 出版日期 price money 書籍價(jià)格 (3)讀者信息表用來儲(chǔ)存所有的讀者信息,包括讀者姓名、性別、年齡、證件號(hào)碼、會(huì) 員證有效日期、最大借書量、電話號(hào)碼、押金、證件類型、職業(yè)、讀者編號(hào)以及辦證日期 12個(gè)字段。該表的邏輯結(jié)構(gòu)如表 2.3所示 表2.3讀者信息表 鍵 name 文本(varchar) 是 讀者姓名 sex ( varchar) 否(外鍵) 讀者性別 a
17、ge 整數(shù)(int) 否 讀者年齡 identityCard ( varchar) 否 證件號(hào)碼 date 日期時(shí)間(datetime) 否 會(huì)員證有效日期 maxNum 整數(shù)(int) 否 取大怎書里 tel ( varchar) 否 電話號(hào)碼 keepMoney 金錢貨幣(money) 否 押金 zj 整數(shù)(int) 否 證件類型 zy ( varchar) 否 職業(yè) ISBN ( varchar) 是 讀名編p bztime datetime 否 辦證日期 (4) 操作員
18、信息表用來保存操作員信息, 包括操作員編號(hào)、用戶名、 性別、年齡、證件 號(hào)碼、 工作時(shí)間、 電話號(hào)碼、是否為管理員 、密碼 9個(gè)字段。該表的邏輯結(jié)構(gòu)如表 2.4 示。 表2.4操作員信息表 字段名 鍵 描述 id 整數(shù)(int) 是(自動(dòng)遞增) 操作員編號(hào) name ( varchar) 否 用戶名 sex ( varchar) 否 性別 age 整數(shù)(int) 否 年齡 identityCard ( varchar) 否 證件號(hào)碼 workdate 日期時(shí)間(date
19、time) 否 工作時(shí)間 tel ( varchar) 否 電話號(hào)碼 admin 整數(shù)(int) 否 是否為管理員 password varchar) 否 密碼 (5) 圖書借閱信息表用來保存所有圖書的借閱信息,包括借閱編號(hào)、 書籍編號(hào)、操作員 編號(hào)、 讀后編》、. 是夠歸還、借書日期以及應(yīng)還日期 7字段。該表的邏輯結(jié)構(gòu)如表 2.5 示。 表2.5 圖書借閱信息表 字段名 數(shù)據(jù)類型 是否主鍵 描述 id 整數(shù)(int) 是(自動(dòng)遞增) 借閱編號(hào) bookISBN ( varchar) 否(外鍵)
20、 書籍編號(hào) operatorId 整數(shù)(int) 否(外鍵) 操作員編號(hào) readerISBN varchar 讀后編R isback int borrowDate 日期時(shí)間(datetime) 否 借書日期 backdate datetime 應(yīng)還日期 (6)圖書訂購(gòu)信息表用來保存圖書館的所有訂購(gòu)信息,包括書籍編號(hào)、訂購(gòu)日期、訂購(gòu) 數(shù)量、操作員、是否驗(yàn)收以及書籍折扣 6個(gè)字段。該表的邏輯結(jié)構(gòu)如表2.6所示。 表2.6圖書訂購(gòu)信息表 ISBn ( varchar) 是 書籍編號(hào) date 日
21、期時(shí)間(datetime) 否 訂購(gòu)日期 number 整數(shù)(int) 否 訂購(gòu)數(shù)量 operator ( varchar) 否 操作員 checkAndAccep t 整數(shù)(int) 否 是否驗(yàn)收 zk 浮點(diǎn) 否 書籍折扣 6.4 各表之間的聯(lián)系圖 各表間的聯(lián)系圖如圖2.7所示 固 tb_borrow 卜頌有現(xiàn) id booklSCN operaiorld neaderTSBN 國(guó) tb_operator 士廝有列D name 4 age 國(guó)tb_booklnfo 園 thqnd.r ,d date rxirrib
22、er operator dieckAndAccept jJ 啕f育列) ISBN typeld bookname witer 圖2.7各表間聯(lián)系圖 國(guó) tb bookType .唯族5現(xiàn) typeName days ft 第三章系統(tǒng)設(shè)計(jì)與功能實(shí)現(xiàn) 3.1數(shù)據(jù)庫(kù)Dao類的構(gòu)建 首先定義了一個(gè)類Dao,并為該類添加了 4中方法,分別是構(gòu)造方法 Dao、查詢方法 executeQuery更新方法executeUpdate以及關(guān)閉連接方法 close。 public class Dao {
23、 protected static String dbClassName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";//數(shù)據(jù)庫(kù)連接驅(qū)動(dòng)類 protected static String dbUrl = "jdbc:sqlserver://localhost:1433; + "DatabaseName=db_library;";//數(shù)據(jù)庫(kù)連接 URL protected static String dbUser = "sa"; protected static String dbPwd = "123"; private sta
24、tic Connection conn = null; //數(shù)據(jù)庫(kù)用戶名 //數(shù)據(jù)庫(kù)密碼 //數(shù)據(jù)庫(kù)連接對(duì)象 private static String ISBN; private Dao() { //構(gòu)造方法 try { if (conn == null) { //如果連接對(duì)象為空 Class.forName(dbClassName); //加載驅(qū)動(dòng)類 conn = DriverManager.getConnection(dbUrl, dbUser, dbPwd);〃獲得連接對(duì) } } catch (Exception ee) { ee.printStackTra
25、ce(); } } private static ResultSet executeQuery(String sql) { 〃查詢方法 try { if(conn==null) new Dao(); //如果連接對(duì)象為空,則重新調(diào)用構(gòu)造方法 return conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE).executeQuery(sql);/腴行查詢
26、 } catch (SQLException e) { e.printStackTrace(); return null; //返回 null 值 } finally { } } private static int executeUpdate(String sql) { //更新方法 try { if(conn==null) new Dao(); //如果連接對(duì)象為空,則重新調(diào)用構(gòu)造方法 return conn.createStatemen
27、t().executeUpdate(sql)蜿行更新 } catch (SQLException e) { e.printStackTrace(); return -1; } finally { } } public static void close() {//關(guān)閉方法 try { conn.close();//關(guān)閉連接對(duì)象 } catch (SQLException e) { e.printStackTrace(); }finally{ conn = null; //設(shè)置連接對(duì)象為null值 } } 3.2系統(tǒng)登錄模塊 3.1 對(duì)于圖書館管理系統(tǒng)而言,不
28、是所有的用戶都是可以使用的,所有需要添加一個(gè)登陸 模塊。通過該模塊來對(duì)用戶的合法性進(jìn)行判斷,只有合法的用戶才能進(jìn)入到系統(tǒng)。整個(gè)登 陸模塊的實(shí)現(xiàn)非常簡(jiǎn)單,相信讀者能夠快速掌握其開發(fā)過程。登錄模塊的運(yùn)行結(jié)果如圖 所示。 圖3.1系統(tǒng)登錄界面 3.2.1 登陸窗體界面設(shè)計(jì)與實(shí)現(xiàn) 登陸窗體的界面設(shè)計(jì)我依然采用的是比較傳統(tǒng)的方法,新建一個(gè)類 BookLoginFrame 類,用來顯示登錄窗體。在該窗體中需要使用到四類控件,分別是 JLabel、JTextFieid、 JPasswordField以及JButton。其中控件JLabel是用來顯示頂部的圖片以及標(biāo)簽文本;控件 JTextFie
29、id用來接收用戶名輸入信息;控件 JPasswordField用來接收密碼輸入信息;控件 JButton用來創(chuàng)建登陸和重置按鈕。 3.2.2 操作員登陸 在Dao類中新增一個(gè)方法check,通過該方法來檢測(cè)用戶信息是否合法。該方法接收 兩個(gè)參數(shù),分別是操作員用戶名 name,操作員密碼passsward主要方法如下: public static Operater check(String name, String password) { Operater operater=new Operater();操作員信息對(duì)象 String sql = "select * from tb_op
30、erator where name='" + name + "' and password='" + password + "'and admin=1"; ResultSet rs = Dao.executeQuery(sql); try { while (rs.next()) { operater.setId(rs.getString("id")); operater.setName(rs.getString("name")); operater.setGrade(rs.getString("admin")); operater.setPassword(rs.getString("
31、password")); 3.3 主窗體模塊 圖書館管理系統(tǒng)的主窗體模式是由三個(gè)部分組成的。第一部分是位于主窗體上組上端 的系統(tǒng)菜單欄,用來實(shí)現(xiàn)鏈接系統(tǒng)功能菜單。第二部分位于菜單欄下面的工具欄,用來提 供各種常用功能鏈接。第三部分位于工具下的系統(tǒng)功能窗口區(qū)域,主要用來顯示各種功能 窗口。 3.3.1 主窗體界面設(shè)計(jì) 在主窗體中可以顯示其他功能窗體,所以需要在該窗體中加入一個(gè)桌面窗體。通過將 其他功能窗體加入到該窗體中。從而實(shí)現(xiàn)多窗體顯。同時(shí)在主窗口體中,還需要添加一個(gè) main方法,該方法為系統(tǒng)入口的方法,通過執(zhí)行該方法來執(zhí)行系統(tǒng)。其主要代碼如下: public class Libr
32、ary extends JFrame { private static final JDesktopPane DESKTOP_PANE = new JDesktopPane()以面窗體 public static void main(String口 args) { try { UIManager.setLookAndFeel(UIManager .getSystemLookAndFeelClassName());/設(shè)置系統(tǒng)界面外觀 new BookLoginIFrame();//登錄窗口 } catch (Exception ex) { ex.printStackTrace()
33、; } } public static void addIFame(JInternalFrame iframe) { // 添力口子窗體的方法 DESKTOP_PANE.add(iframe); //新增子窗體 } } 下面再來配置主窗體的其他屬性,首先需要設(shè)置其大小和位置,然后還要設(shè)置其菜單 欄和工具欄,最后需要在桌面窗體中添加一個(gè)背景圖片。其代碼實(shí)現(xiàn)如下。 public Library。{ super(); setDefaultCloseOperation( //獲得默認(rèn)的工具箱 //獲得屏幕的大小 //設(shè)置窗體大小 WindowConstants.EXIT_ON
34、_CLOSE);////設(shè)置關(guān)閉按鈕處理事件 Toolkit tool = Toolkit.getDefaultToolkit(); Dimension screenSize = tool.getScreenSize(); setSize(800, 600); setLocation((screenSize.width - getWidth()) / 2, (screenSize.height - getHeight()) / 2); //設(shè)置窗體位置 setTitle("圖書館管理系統(tǒng)"); //設(shè)置窗體標(biāo)題 JMenuBar menuBar = createMenu(); 〃
35、調(diào)用創(chuàng)建菜單欄的方法 setJMenuBar(menuBar); 〃設(shè)置菜單欄 JToolBar toolBar = createToolBar(); // 調(diào)用創(chuàng)建工具欄的方法 getContentPane().add(toolBar, BorderLayout.NORTH);/S 置工具欄 final JLabel label = new JLabel(); //創(chuàng)建一個(gè)標(biāo)簽,用來顯示圖片 label.setBounds(0, 0, 0, 0); //設(shè)置窗體的大小和位置 label.setIcon(null); // 窗體背景 DESKTOP_PANE.addComponentL
36、istener(new ComponentAdapter() {
public void componentResized(final ComponentEvent e) {
Dimension size = e.getComponent().getSize();康得組件大/」、
label.setSize(e.getComponent().getSize());改置標(biāo)簽大小 label.setText("37、tResource("/backImg.jpg")
+ "'>");//設(shè)置標(biāo)簽文本
}
};
DESKTOP_PANE.add(label,new Integer(Integer.MIN_\ALUE));// 將標(biāo)簽添加到桌面
窗體
getContentPane().add(DESKTOP_PANE);//1桌面窗體添力口至 U 主窗體中
}
3.3.2 主窗體菜單欄設(shè)計(jì)
在Library類中定義一個(gè)createMenu方法,在該方法中實(shí)現(xiàn)菜單欄的設(shè)計(jì)。具運(yùn)行界 面如圖3.2所示。
圖書措I身
一互毛TZ空屋花
匐節(jié)布管理
圖3.2主窗體界面
38、 3.4 圖書類別管理模塊 圖書類別管理模塊包含兩個(gè)子模塊,分別是圖書類別添加和圖書類別修改。其中圖書 類別添加模塊用來錄入新的圖書類別信息,圖書列別修改模塊用來修改已有的圖書列別信 息。系統(tǒng)界面如圖3.3所示。 17 圖3.3圖書類別修改界面 3.4.1圖書類別添加模塊 要添加圖書類別信息,首先要在 Dao中添加一個(gè)InsertbookType方法,通過該方法來 接受用戶輸入的所有書籍類別信息,然后執(zhí)行插入操作。其主要方法如下: public static int InsertBookType(String bookTypeName,String days,
39、double fk){ int i=0; try{String sql="insert into tb_bookType(typeName,days,fk) values('"+bookTypeName+"','"+days+"',"+fk+")"; i=Dao.executeUpdate(sql);/枚行插入操作 } } 3.4.2圖書類別修改模塊 修改圖書類別信息同保存圖書類別信息非常類似,首先在 Dao中添加一個(gè)方法 UpdatebookTypa通過該方法來接收?qǐng)D書修改表單中提交的書籍類別信息。其代碼如下: public static int UpdatebookT
40、ype(String id,String typeName,String days,String fk){ int i=0; try{String sql="update tb_bookType set typeName='"+typeName+"', days='"+days+"',fk='"+fk+”' where id='"+id+"'"; 〃System.out.println(sql); i=Dao.executeUpdate(sql);例行更新操作 } } 修改圖書類別信息,是通過單擊修改按鈕執(zhí)行的,上面我們已經(jīng)為修改按鈕注冊(cè)了一 個(gè)監(jiān)聽器,其對(duì)應(yīng)的監(jiān)聽器類為 Bu
41、ttonActionLinter。下面來實(shí)現(xiàn)該監(jiān)聽器類,其實(shí)現(xiàn)代碼 如下: class ButtonAddListener implements ActionListener{ public void actionPerformed(ActionEvent e){ Object selectedItem = bookTypeModel.getSelectedItem(); int i=Dao.UpdatebookType(BookTypeId.getText().trim(),selectedItem. toString(), days.getText().trim(),fk.get
42、Text().trim()); System.out.println(i); if(i==1){//如果返回值為1,則表示修改成功 JOptionPane.showMessageDialog(null,修改成功"); Object口□ results=getFileStates(Dao.selectBookCategory()); model.setDataVector(results,columnNames); table.setModel(model); } } } 3.5 圖書信息管理模塊 圖書信息管理模塊包含兩個(gè)子模塊,分別是圖書信息添加和圖書信息修改。其中圖書 信
43、息添加模塊用來錄入新的圖書信息,圖書信息修改模塊用來修改已有的圖書信息。 3.5.1 圖書信息添加界面設(shè)計(jì) 圖書信息添加窗體一共包含三個(gè)部分,第一部分是位于窗體最上端的圖片。第二部分 是位于中間的主面板,用來提供各種標(biāo)簽和表單元素。第三部分是位于主面板下的按鈕面 板,用來提供添加和關(guān)閉兩個(gè)按鈕。具運(yùn)行界面如圖 3.4所示。 圖3.4圖書信息添加界面 主面板是整個(gè)窗體最重要也是最核心的部分,其部分實(shí)現(xiàn)代碼如下: public BookAddIFrame() { super(); final BorderLayout borderLayout = new BorderLa
44、yout();〃倉(cāng)建邊框布局管理器 getContentPane().setLayout(borderLayout); 〃設(shè)置布局 setIconifiable(true);//設(shè)置窗體可最小化 setClosable(true);//設(shè)置窗體可關(guān)閉 setTitle("圖書信息添加)//設(shè)置窗體標(biāo)題 setBounds(100, 100, 396, 260);//設(shè)置窗體位置和大小 final JPanel mainPanel = new JPanel(//創(chuàng)建中心面板 mainPanel.setBorder(new EmptyBorder(5, 10, 5, 10));般置邊框
45、final GridLayout gridLayout = new GridLayout(0, 4);// 創(chuàng)建表格布局管理器 gridLayout.setVgap(5);//設(shè)置組件之間垂直距離 gridLayout.setHgap(5);//設(shè)置組件之間平行距離 mainPanel.setLayout(gridLayout);/股置布局 getContentPane().add(mainPanel);將中心面板力口入至 U 窗體 final JLabel ISBNLabel = new JLabel(); //創(chuàng)建圖書編號(hào)標(biāo)簽 ISBNLabel.setText("圖書編號(hào):")
46、;//設(shè)置標(biāo)簽文本 mainPanel.add(ISBNLabel);/傣力口至 ij 中心面板 ISBN = new JTextField(”請(qǐng)輸入13位書號(hào)”,13);//創(chuàng)建書號(hào)文本框 ISBN.setDocument(new MyDocument(13)); //設(shè)置書號(hào)文本框最大輸入值為 13 ISBN.setColumns(13);//設(shè)置文本框長(zhǎng)度 ISBN.addKeyListener(new ISBNkeyListener());// 注冊(cè)監(jiān)聽器 ISBN.addFocusListener(new ISBNFocusListener());/姓冊(cè)監(jiān)聽器 main
47、Panel.add(ISBN); } 3.5.2 檢測(cè)書籍編號(hào)是否已存在 因?yàn)椴豢赡艽嬖谥貜?fù)的書籍編號(hào)。為了防止操作員的操作錯(cuò)誤,所以需要提供一個(gè)書 籍編號(hào)監(jiān)測(cè)系統(tǒng)。如果該書籍號(hào)已存在,則不能進(jìn)行添加,否則可以進(jìn)行添加。 要檢測(cè)書籍編號(hào)是否存在,需要在 Dao類中添加一個(gè)方法,該方法用來接收輸入的書 籍編號(hào),然后查詢?cè)摃幪?hào)對(duì)應(yīng)的書籍記錄,其主要方法如下: public static List selectBookInfo(String ISBN) {// 根據(jù)圖書編號(hào)查詢圖書 List list=new ArrayList();//保存所有查詢到的書籍信息 String s
48、ql = "select * from tb_bookInfo where ISBN='"+ISBN+"”'; ResultSet rs = Dao.executeQuery(sql);執(zhí)行查詢 ……/師入數(shù)據(jù),關(guān)閉連接 } 對(duì)書籍編號(hào)進(jìn)行檢測(cè),一般是在操作員輸入完書籍編號(hào),并準(zhǔn)備輸入其他信息時(shí)來完 成。這是需要新建一個(gè)ISBNFFocusListener監(jiān)聽類,該類繼承了 FocusAdoper類,并實(shí)現(xiàn) 其中的focusLost,其實(shí)現(xiàn)代碼如下: class ISBNFocusListener extends FocusAdapter { public void focusLo
49、st(FocusEvent e){ if(!Dao.selectBookInfo(ISBN.getText().trim()).isEmpty()){ JOptionPane.showMessageDialog(null,添加書號(hào)重復(fù)!"); return; } } } 3.5.3 圖書信息添加 要添加書籍信息,首先要在 Dao中添加一個(gè)Insertbook方法,通過該方法來接受用戶 輸入的所有書籍信息,然后執(zhí)行插入操作。其主要方法如下: public static int Insertbook(String ISBN,String typeId,String bookname
50、, String writer,String translator,String publisher,Date date,Double price){ int i=0; try{ String sql="insert into tb_bookInfo(ISBN,typeId,bookname,writer,translator,"+ "publisher,date,price) values('"+ISBN+"','"+typeId+"','"+bookname+"',"+ "”'+writer+"','"+translator+"','"+publisher+"','"+date
51、+"',"+price+")"; i=Dao.executeUpdate(sql);/楨行插入操作 } } 3.5.4 圖書修改信息 修改圖書信息同保存圖書信息非常類似, 首先在Dao中添加一個(gè)方法Updatebook。通 過該方法來接收?qǐng)D書修改表單中提交的書籍信息。其代碼如下: public static int Updatebook(String ISBN,String typeId,String bookname, String writer,String translator,String publisher,Date date,Double price){ int i
52、=0;〃更新記錄數(shù) try{ String sql="update tb_bookInfo set ISBN='"+ISBN+"', typeId='"+typeId+"',bookname='"+bookname+"', writer='"+writer+"', translator='"+translator+”', publisher="'+publisher+”', date='"+date+"', price="+price+" where ISBN='"+ISBN+"”'; i=Dao.executeUpdate(sql);例行更新 } } 修改圖書信息,是通過
53、單擊修改按鈕執(zhí)行的,上面我們已經(jīng)為修改按鈕注冊(cè) 了一個(gè)監(jiān)聽器,其對(duì)應(yīng)的監(jiān)聽器類為 UpdateBookActionLinter。下面來實(shí)現(xiàn)該監(jiān)聽 器類,其實(shí)現(xiàn)代碼如下: class UpdateBookActionListener implements ActionListener { public void actionPerformed(final ActionEvent e) { int i=Dao.Updatebook(ISBNs, bookTypes, bookNames, writer translators,publishers,Date.valueOf(pubDate
54、s),Double.parseDouble(prices)); if(i==1){//如果返回更新記錄數(shù)為1,表示修改成功 JOptionPane.showMessageDialog(null,修改成功"); Object[][]results=getFileStates(Dao.selectBookInfo());//M 新獲得書籍信息 DefaultTableModel model=new DefaultTableModel();〃獲得表格模型 table.setModel(model);//設(shè)置表格模型 model.setDataVector(results, columnNam
55、es);改置模型數(shù)據(jù)和列名 } } } 3.6 讀者信息管理模塊 讀者信息管理模塊包含兩個(gè)子模塊,分別是讀者信息添加和讀者信息修改與刪除。其 中讀者信息添加模塊用來錄入新的讀者信息,讀者信息修改與刪除模塊用來修改和刪除已 有的讀者信息。其系統(tǒng)運(yùn)行界面如圖 3.5所示。 圖3.5讀者信息管理模塊運(yùn)行界面 3.6.1讀者信息添加 要添加讀者信息,首先要在 Dao中添加一個(gè)InsertReader方法,通過該方法來接受用 戶輸入的所有讀者信息,然后執(zhí)行插入操作。其主要方法如下: public static int InsertReader(String name,Strin
56、g sex,String age,String identityCard,Date date,String maxNum,String tel,Double keepMoney,String zj,String zy,Date bztime,String ISBN){ int i=0; try{String sql="insert into tb_reader(name,sex,age,identityCard,date,maxNum, tel,keepMoney,zj,zy,bztime,ISBN)values('"+name+"','"+sex+"','"+age+"','"+ ide
57、ntityCard+"','"+date+"','"+maxNum+"','"+tel+"',"+keepMoney+",'"+zj+"' ,'"+zy+"', '"+bztime+"','"+ISBN+"')"; System.out.println(sql); i=Dao.executeUpdate(sql);例行插入操作 } 3.6.2讀者信息修改與刪除 修改與刪除讀者信息同保存讀者信息非常類似,首先在 Dao中添加兩個(gè)方法 UpdateReader及DelReader。通過這兩個(gè)方法來接收?qǐng)D讀者修改表單中提交的讀者信息。 其主要代碼如下: public stat
58、ic int UpdateReader(String id,String name,String sex,String age,String identityCard,Date date,String maxNum,String tel, Double keepMoney,String zj,String zy,Date bztime,String ISBN){ int i=0; try{String sql="update tb_reader set name='"+name+"',sex='"+sex+"', age='"+age+"',identityCard='"+identi
59、tyCard+"', date='"+date+"',maxNum='"+maxNum+"', tel='"+tel+"',keepMoney="+keepMoney+", zj='"+zj+"',zy='"+zy+"', bztime='"+bztime+"'where ISBN='"+ISBN+"”'; i=Dao.executeUpdate(sql);// 執(zhí)行更新 }catch(Exception e){ e.printStackTrace(); } Dao.close();//關(guān)閉連接 public static int DelReader(String ISBN){
60、int i=0; try{ String sql="delete from tb_reader where ISBN='"+ISBN+"”'; //System.out.println(sql); i=Dao.executeUpdate(sql); }catch(Exception e){ e.printStackTrace(); } Dao.close();//關(guān)閉連接 } 3.7 圖書訂購(gòu)管理模塊 圖書訂購(gòu)管理模塊包含兩個(gè)子模塊,分別是新書訂購(gòu)和驗(yàn)收新書。其中新書訂購(gòu)模塊 用來錄入新的圖書信息,驗(yàn)收新書模塊用來驗(yàn)收新書信息。其系統(tǒng)運(yùn)行界面如圖 3.6和圖 3.7所示。
61、 圖3.6新書訂購(gòu)管理界面 圖3.7圖書驗(yàn)收界面 3.7.1 新書訂購(gòu)管理 要添加新書訂購(gòu)信息,首先要在Dao中添加一個(gè)InsertBookOrder方法,通過該方法來 接受用戶輸入的所有新書訂購(gòu)信息,然后執(zhí)行插入操作。其主要方法如下: public static int InsertBookOrder(String ISBN,Date date,String number,String operator,String checkAndAccept,Double zk){ int i=0; try{String sql="insert into tb_orde
62、r(ISBN,date,number,operator,checkAndAccept,zk) values('"+ISBN+"','"+date+"','"+number+"','"+operator+"',"+checkA ndAccept+",'"+zk+"')"; i=Dao.executeUpdate(sql);/枚行插入 } } 3.7.2 圖書驗(yàn)收 添加完圖書訂購(gòu)信息后,我們還要對(duì)圖書進(jìn)行驗(yàn)收,首先要在 Dao中添加一個(gè) SelectBookOrder方法,通過該方法來查找出所有錄入的新書訂購(gòu)信息,再添加一個(gè) UpdateCheckBookOrder方法,通過該方
63、法來對(duì)圖書進(jìn)行驗(yàn)收。其主要方法如下: public static List selectBookOrder(boolean b) { List list=new ArrayList(); String sql = "SELECT * FROM tb_order where ISBN='"+ISBN+皿; ResultSet rs = Dao.executeQuery(sql);執(zhí)行查詢 try { while (rs.next()) { Order order=new Order(); order.setISBN(rs.getString("ISBN")); order.se
64、tDate(rs.getDate("date")); order.setNumber(rs.getString("number")); order.setOperator(rs.getString("operator")); order.setZk("zk"); order.setCheckAndAccept("checkAndAccept"); list.add(order); } catch (Exception e) { e.printStackTrace(); Dao.close();//關(guān)閉連接 return list; public static int Upda
65、teCheckBookOrder(String ISBN){ int i=0; try{ String sql="update tb_order set checkAndAccept=0 where ISBN='"+ISBN+"”'; i=Dao.executeUpdate(sql);例行更新 }catch(Exception e){ e.printStackTrace(); Dao.close();//關(guān)閉連接 return i; } 3.8 圖書借閱管理模塊 圖書借閱管理模塊包含三個(gè)子模塊,分別是新書借閱、圖書歸還和圖書搜索。其中圖 書借閱模塊用來錄入讀者信息及所借閱的圖書
66、的信息,圖書歸還模塊用來顯示歸還讀者信 息及所借閱的圖書信息,圖書搜索模塊用來為讀者提供圖書搜索功能。其系統(tǒng)運(yùn)行界面如 圖3.8、3.9和3.10所示。 圖3.8圖書借閱管理界面 圖3.9圖書會(huì)還管理界面 圖3.10圖書查詢界面 3.8.1 圖書借閱 當(dāng)讀者想要對(duì)某圖書進(jìn)行借閱操作時(shí),圖書館管理員必須將讀者信息及所借閱的 圖書信息輸入到數(shù)據(jù)庫(kù),此時(shí),需要在 Dao中添加一個(gè)InsertBookBorrow方法,通過 該方法錄入讀者信息及所借閱的圖書信息。其主要方法如下: public static int InsertBookBorrow(String bookISBN,String readerISBN,String operatorId,Timestamp borrowDate,Timestamp backDate){ int i=0; try{String sql="insert into tb_borrow(bookISBN,readerISBN,operatorId, borrowDate,backDate)values C"+bo
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 專題黨課講稿:以高質(zhì)量黨建保障國(guó)有企業(yè)高質(zhì)量發(fā)展
- 廉政黨課講稿材料:堅(jiān)決打好反腐敗斗爭(zhēng)攻堅(jiān)戰(zhàn)持久戰(zhàn)總體戰(zhàn)涵養(yǎng)風(fēng)清氣正的政治生態(tài)
- 在新錄用選調(diào)生公務(wù)員座談會(huì)上和基層單位調(diào)研座談會(huì)上的發(fā)言材料
- 總工會(huì)關(guān)于2025年維護(hù)勞動(dòng)領(lǐng)域政治安全的工作匯報(bào)材料
- 基層黨建工作交流研討會(huì)上的講話發(fā)言材料
- 糧食和物資儲(chǔ)備學(xué)習(xí)教育工作部署會(huì)上的講話發(fā)言材料
- 市工業(yè)園區(qū)、市直機(jī)關(guān)單位、市紀(jì)委監(jiān)委2025年工作計(jì)劃
- 檢察院政治部關(guān)于2025年工作計(jì)劃
- 辦公室主任2025年現(xiàn)實(shí)表現(xiàn)材料
- 2025年~村農(nóng)村保潔員規(guī)范管理工作方案
- 在深入貫徹中央8項(xiàng)規(guī)定精神學(xué)習(xí)教育工作部署會(huì)議上的講話發(fā)言材料4篇
- 開展深入貫徹規(guī)定精神學(xué)習(xí)教育動(dòng)員部署會(huì)上的講話發(fā)言材料3篇
- 在司法黨組中心學(xué)習(xí)組學(xué)習(xí)會(huì)上的發(fā)言材料
- 國(guó)企黨委關(guān)于推動(dòng)基層黨建與生產(chǎn)經(jīng)營(yíng)深度融合工作情況的報(bào)告材料
- 副書記在2025年工作務(wù)虛會(huì)上的發(fā)言材料2篇
相關(guān)資源
更多