學校圖書館資料管理系統(tǒng)_第1頁
學校圖書館資料管理系統(tǒng)_第2頁
學校圖書館資料管理系統(tǒng)_第3頁
學校圖書館資料管理系統(tǒng)_第4頁
學校圖書館資料管理系統(tǒng)_第5頁
已閱讀5頁,還剩103頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

開發(fā)背景和需求分析

db例ooi圖書館管理系統(tǒng)

i.i開發(fā)背景

XX高校擁有一種小型圖書館,為全校師生提供一種閱讀、學習的空間。近年來,伴隨

生源不停擴大,圖書館H勺規(guī)模也隨之擴大,圖書數(shù)量也對應地大量增長,有關圖書的多種信

息成倍增長。面對如此龐大的信息量,校領導決定使用一套合理、有效、規(guī)范、實用的圖書

館管理系統(tǒng),對校內(nèi)圖書資料進行統(tǒng)?、集中的管理。

筆者受該高校的委托,開發(fā)一種圖書館管理系統(tǒng),開發(fā)宗旨是實現(xiàn)圖書管理H勺系統(tǒng)化、

規(guī)范化和自動化,到達圖書資料集中、統(tǒng)一管理的I目H勺。

1.2需求分析

圖書館管理系統(tǒng)是圖書館管理工作中小川缺乏的部分,對十圖書館的管理者和使用者米

說都非常重要,但長期以來,人們使用老式日勺手工方式或性能較低口勺圖書館管理系統(tǒng)管理圖

書館的平常事務,操作流程比較繁瑣,效率相稱低。而一種成功的)圖書館管理系統(tǒng)應提供迅

速的j圖書信息檢索功能、快捷日勺圖書借閱、償還流程,為管理者與讀者提供充足口勺信息和快

捷的數(shù)據(jù)處理手段。筆者通過對某些經(jīng)典圖書館管理系統(tǒng)的考察,從讀者與圖書館管理員的

角度出發(fā),本著以讀者借書、還書快捷、以便的原則,規(guī)定本系統(tǒng)應具有如下特點。

0具有良好口勺系統(tǒng)性能,友好的顧客界面。

□較高的處理效率,便于使用和維護。

□采用成熟技術(shù)開發(fā),使系統(tǒng)JR,有較高的技術(shù)水平和較長的生命周期V

0系統(tǒng)盡量簡化圖書館管理員日勺反復工作,提高工作效率。

0簡化數(shù)據(jù)查詢、記錄難度。

系統(tǒng)設計

:視頻001系統(tǒng)功能概述

db例Ooi圖書館管理系統(tǒng)

1.1系統(tǒng)目的

根據(jù)以上FI勺需求分析以及與顧客H勺溝通,該系統(tǒng)應到達如下目的。

□界面設計友好、美觀。

□數(shù)據(jù)存儲安全、可靠。

0信息分類清晰、精確。

0強大的查詢功能,保證數(shù)據(jù)查詢H勺靈活性。

0操作簡樸易用、界面清晰大方。

0系統(tǒng)安全、穩(wěn)定。

0開發(fā)技術(shù)先進、功能完備、擴展性強。

0占用資源少、上硬件規(guī)定低。

0提供靈活、以便的權(quán)限設置功能,使整個系統(tǒng)的管理分工明確。

1.2系統(tǒng)功能構(gòu)造

圖書館管理系統(tǒng)分為4大功能模塊,分別為“基礎數(shù)據(jù)維護”、“圖書借閱管理”、“新

書訂購管理”、“系統(tǒng)維護”。本系統(tǒng)各個部分及其包括口勺詳細功能模塊如圖1所示。

圖書館管理

基礎數(shù)據(jù)維護圖書借閱管理新書訂購管理系統(tǒng)維護

圖錯誤!未定義書簽。圖書館管理系統(tǒng)功能構(gòu)造

1.3系統(tǒng)流程圖

圖書館管理系統(tǒng)的系統(tǒng)流程如圖2所示。

圖2圖書館管理系統(tǒng)流程圖

1.4系統(tǒng)預覽

圖書館管理系統(tǒng)由多種程序界面構(gòu)成,下面僅列出幾種經(jīng)典界面。

讀者有關信息添加界面如圖3所示,該界面用于將讀者有關信息添加至數(shù)據(jù)表中;讀者

信息修改與刪除界面如圖4所示,該界面用于展示讀者有關信息,并且提供了修改與刪除功

能。

圖3讀者有關信息添加界面

圖4讀者信息修改與刪除界而

新書訂購管理界面如圖5所示,重要實現(xiàn)新書訂購功能。圖書驗收界面如圖6所示,重

要實現(xiàn)新書驗收功能。

圖5新書訂購管理界面

國圖書驗收匚

是否驗收折扣圖書類別圖書名稱作者譯者出版社出版日期圖書價格

譚0.31計篁機類圖書Java測試________朝試***出版社2007-12-2630.0

否0.7|計算機類圖書PHP快餓死的魚快餓死的魚***出版社2007-12-28|30,0

否0.7計算機類圖書C*快誡死的魚快餓死的魚***出版社2007-12-2840.0

否0.7計篁機類圖書C++快慌死的魚快避死的魚***出版社2007-12-2840.0

否0.7討算機類圖書測試測試測試***出版社2007-12-2845.0

±______________I_____________皿」

訂購日期:2007-12-29書籍編號:1234567891234

訂購數(shù)量:70操作員:tsoft

圖書類別:計篁機類圖書圖書原價格:30.0

是否驗收:?是。否折扣:0.3

訂購價格:9.0

圖6圖竹驗收界面

1.5構(gòu)建開發(fā)環(huán)境

在開發(fā)圖書館管理系統(tǒng)時,需要具有下面的開發(fā)環(huán)境。

0操作系統(tǒng):Windows2023o

0Java開發(fā)包:JDK6.0。

0數(shù)據(jù)庫:SQLServer2023。

0開發(fā)工具:Eclipse3.2o

1.6文獻夾組織構(gòu)造

在編寫代碼之前,可以將系統(tǒng)中也許用到的文獻夾完創(chuàng)立出來,這樣不僅以便后來日勺開

發(fā)工作,也可以規(guī)范系統(tǒng)的整體架構(gòu)。筆者在開發(fā)圖書館管理系統(tǒng)時,設計了如圖7所示的

文獻夾架構(gòu)圖0在開發(fā)時將所創(chuàng)立H勺文獻保留在對應H勺文獻夾中即可.

三'尋1ibraryNanager

日碗src-----------------------------------------------------------------源碼文件夾

fflSicom.wsy-----------------------------------------------------主窗體源代碼文件夾

田田com.wsy.dao------------------------------------------------------------Dao類文件夾

(±)比com.wsy.ifrane------------------------------------------內(nèi)部窗體文件夾

+史com.wsy.JComPz------------------------------------------輔助類文件夾

由用com.wsy.model------------------------------------------數(shù)據(jù)模型文件夾

l±l國com.wsy.util---------------公共類文件夾

ffi因r?s------------------------------------------------------------------圖片資源文件夾

S,MsSQLJTBC---------------------------------------------------------------------Jav施接SQLSeruer數(shù)據(jù)庫類庫文件

ffi旬數(shù)據(jù)庫建模-------------------------------------數(shù)據(jù)庫建模文件夾

圖7圖書館管理系統(tǒng)文獻夾組織構(gòu)造

數(shù)據(jù)庫設計

:視頻002數(shù)據(jù)庫設計

:視頻003創(chuàng)立項目

心例001圖書館管理系統(tǒng)

1.1數(shù)據(jù)庫分析

SQLServer2023具有很強日勺完整性與可伸縮性,具有較低的價格比與性能比,考慮到本

系統(tǒng)的穩(wěn)定性與可靠性以及開發(fā)程序與顧客需求,筆者決定在設計該系統(tǒng)時選擇SQLServer

2023數(shù)據(jù)庫來滿足系統(tǒng)的需求。

1.2數(shù)據(jù)庫概念設計

根據(jù)以上對系統(tǒng)所作的需求分析、系統(tǒng)設計,規(guī)劃出本系統(tǒng)中使用日勺數(shù)據(jù)庫實體分別為

圖書信息實體、圖書分類實體、圖書訂購實體、讀者信息實體、操作員信息實體、圖書借閱

信息實體、庫存信息實體.其中圖書信息實體與圖書訂購實體、圖書分類實體、圖書訂購實

體、圖書借閱信息實體、庫存信息實體都具有關系,而讀者信息實體與圖書借閱信息實體同

樣具有關系。下面將簡介幾種關鍵實體的E-R圖。

0圖書信息實體

圖書信息實體包括圖書編號、圖書類別編號、書名、作者、譯者、出版社、價格、出版時間

等屬性。其中圖書編號為圖書信息實體B勺主鍵,圖書類別編號為圖書信息實體H勺外鍵,與圖

書類別實體具有外鍵關系,圖書信息實體依JE-R圖如圖8所示。

(編號>:類別編號〕f書名1('作者:

圖書

(價格)[出版時間)(出版社](譯者:

圖8圖書信息實體E-R圖

0讀者信息實體

讀者信息實體包括條形碼、姓名、性別、年齡、、押金、生日、職業(yè)、證件類型、辦證

口期、最大借書數(shù)量、證件號碼等屬性。讀者條形碼作為本實體日勺唯一標識。其中,在性別

屬性標識信息中,“1”代表此讀者為男性,“2”代表此讀者為女性;最大借書數(shù)量屬性設置

默認值為3;而在證件屬性標識信息中,“0”代表身份證,“1”代表軍人證,“2”代表學生

證,“3”代表工作證。讀者信息實體的E-R圖如圖9所示。

圖9讀者信息實體E-R圖

0圖書借閱信息實體

圖書借閱信息實體包括編號、圖書編號、讀者編號、操作員編號、與否償還、借閱日期、

償還日期等屬性。編號作為圖書借閱信息實體H勺唯一標識,它包括兩個外鍵,分別為圖書編

號與讀者編號,圖書借閱信息實體以這兩個外鍵與圖書信息實體、讀者信息實體建立了關系。

圖書借閱信息實體的E-R圖如圖10所示。

圖10圖書借閱信息實體E-R圖

0圖書分類實體

圖書分類實體包括編號、類別名稱等屬性。圖書分類實體與圖書信息實體以圖書類別編

號建立了關系。圖書分類實體日勺E-R圖如圖11所示。

0圖書訂購實體

圖書訂購實體重要包括圖書編號、訂購日期、訂購數(shù)量、操作員、與否驗收和折扣等屬

性。圖書訂購實體以圖書編號與圖書信息實體建立了關系。圖書訂購實體H勺E-R圖如圖12

所示。

圖打分類

可信天致罰款外薇

圖11圖書分類實體E-R圖

訂購日期圖書編號::訂購數(shù)量

圖書訂收

;操作員:[是次驗收折扣:

圖12圖書訂購實體E-R圖

0操作員信息實體

操作員信息實體重要包括編號、姓名、性別、年齡、身份證號、工作日期、、與否

為管理員和密碼等屬性。其中,性別屬性信息中“1”代表男性,“2”代表女性;與否為管

理員屬性信息中“0”代表目前顧客不是管理員,“1”代表目前顧客是管理員。操作員信息

實體的E-R圖如圖13所示。

1編號〕[姓名

操作員

(身份證號1(是否為管理員:;工作日期i(密碼)

圖13操作員信息實體E-R圖

0庫存信息實體

庫存信息實體重要包括編號、庫存數(shù)量等屬性。庫存信息實體以庫存編號與圖書信息實

體建立了關系。庫存信息實體的E-R圖如圖14所示。

編號)(庫存數(shù)量:

庫存

圖14庫存信息實體E-R圖

1.3使用PowerDesigner建模

在數(shù)據(jù)庫概念設計中已經(jīng)分析了本系統(tǒng)中重要的數(shù)據(jù)庫實體對象,通過這些實體可以得

出數(shù)據(jù)表構(gòu)造H勺基本模型,最終這些實體將被創(chuàng)立成數(shù)據(jù)表,形成完整H勺數(shù)據(jù)構(gòu)造。

筆者使用PowerDesi即er軟件對數(shù)據(jù)進行建模操作,創(chuàng)立完畢H勺數(shù)據(jù)庫模型如圖15所

不。

tbbookInfo

ICDV.......1.~~/1

typeIdint<fk>

booknamevarchar(40)

writervarchar(21)

translalorvarchar(30)

publishervarchar(50)

datesmalldatetime

pricemoney

ziV

FKTBSTOCKREFERENCETB_BOOKI

FK_TBBOOKI_REFERENCE_TB_BOOKT

REFERENCETB_BOOKI

FKTBBORROREFERENCE_TBBOOKI

tb_bookType

/cl,、

tborder

typeNamevarchar(20)

rcovdaysint

datedatetimefkfloat

numberint

operatorvarchar(6)

checkAndAcceptinttbborow

zkfloat

booklSBNvarcnar(13)<fk2>

operatorldint<fk1>

readerlSBNvarcnar(13)<fk3>

isbackint

borrowDatedatetime

backDatedatelime

FKTBBORROREFERENCE_TB_OPERAFK_TB_BORRO_REFERENCE_TB_READE

________▲~一一,

2J:-A,.1.、tbreader

namevarchar(12)namevarchar(10)

sexvarchar(2)sexvarchar(2)

ageintagfiint

identitvCardvarchar(30)identityCardvarchar(30)

workdatedatetimedaledatetime

telvarchar(50)maxNufnint

adminbittelvarchar(50)

passwordvarchar(IO)keepMoneymoney

ziint

zyvarchar(50)

1CDV?一一L.一八*Z-l.X

bztimedatelime

圖15圖書館管理系統(tǒng)的數(shù)據(jù)庫模型

公共模塊設計

:視頻004編寫公共類

001圖書館管理系統(tǒng)

在開發(fā)過程中,常常會用到某些公共模塊,如數(shù)據(jù)走連接及操作的類、限制文本柩輸入

長度的類以及描述組合框索引與內(nèi)容口勺類等,因此在開發(fā)系統(tǒng)前首先需要設計這些公共模塊。

卜面將詳細簡介圖書館管理系統(tǒng)中公共模塊的設計過程。

1.1數(shù)據(jù)庫連接及操作類的編寫

數(shù)據(jù)庫連接及操作類?般包括連接數(shù)據(jù)庫的措施getConnection。、執(zhí)行查詢語句的措施

executeQuery()、執(zhí)行更新操作歐J措施executeUpdate()x關閉數(shù)據(jù)庫連接的措施close。。下

面將詳細簡介怎樣編寫圖書館管理系統(tǒng)中的數(shù)據(jù)庫連接及操作的類Dao.javao環(huán)節(jié)如下:

(1)指定類Dao.java保留口勺包,并導入所需口勺類包,本例將其保留到包中。關鍵代碼如下:

package;〃指定類的包名稱

import;〃導入進行數(shù)據(jù)庫連接時所使用口勺java.sql.Connection類

import;〃導入進行數(shù)據(jù)庫連接時所使用口勺java.sql.DriverManager類

import;〃導入進行數(shù)據(jù)表查詢時所使用I向java.sql.ResultSet類

impon;〃導入進行數(shù)據(jù)庫操作時捕捉異常使用的Jjava.sql.SQLExcepiion類

*

9注意:包語句以關鍵字package背面緊跟一種包名稱,然后以分號結(jié)束;

包語句必須出目前import語句之前;一種.java文獻只能有一種包語句。

(2)在Dao.java類的構(gòu)造措施中創(chuàng)立數(shù)據(jù)庫連接操作。在此類中首先定義數(shù)據(jù)庫連接驅(qū)動

包名、數(shù)據(jù)庫連接途徑、數(shù)據(jù)庫連接顧客名、密碼等靜態(tài)變量,然后在構(gòu)造函數(shù)中實現(xiàn)數(shù)據(jù)

庫連接操作。在數(shù)據(jù)庫連接代碼中需要添加trycatch關鍵字,捕捉數(shù)據(jù)庫連接時也許拋出的

異常。關鍵代碼如下:

〃定義驅(qū)動包名稱

protectedstaticStringdbClassName=",com.niicrosoft.jdbc.sqlserver.SQLServerDrivef,;

protectedstaticStringdbUrl="jdbc:microsoft:sqlserver://localhost:1433;"

+"DatabascNamc=db_librar)/;SclcctMcthod=Cursor";〃定義數(shù)據(jù)庫連

接途徑

protectedstaticStringdbUser="sa";〃定義數(shù)據(jù)庫連

接顧客名

protectedstaticStringdbPwd=,n,;〃定義數(shù)據(jù)庫連

接密碼

protectedstaticSiringsecond=null;

privatestaticConnectionconn=null;〃定義?種數(shù)據(jù)

庫連接

privateDao(){

tryf〃捕捉數(shù)據(jù)庫連

接異常

if(conn==null){〃假如連接為空

Class.forName(dbClassName).newlnstance();〃裝載SQL

Server驅(qū)動

conn=DriverManager.getConnection(dbUrl,dbUser,dbPwd);〃獲取數(shù)據(jù)

庫連接

else〃假如連接不為空

return;〃返回

}catch(Exceptionee){

ee.printStackTrace();〃捕捉數(shù)據(jù)庫連接異

)

1

(3)創(chuàng)立.執(zhí)行查詢語句R勺措施executeQuery,其返回值為ResultSet成果集。首先需要

初始化Dao對象,調(diào)用構(gòu)造函數(shù),從而獲取數(shù)據(jù)庫連接。有一點值得注意,就是在創(chuàng)立數(shù)

據(jù)庫連接之前首先判斷數(shù)據(jù)庫連接與否為空,假如為空再創(chuàng)立數(shù)據(jù)庫連接,防止導致程序資

源I內(nèi)揮霍。executeQuery措施1向代碼如下:

privatestaticResultSetexecuteQuery(Stringsql){

try{〃捕捉數(shù)據(jù)庫操

作異常

if(conn==null)〃數(shù)據(jù)庫連接假

如為空

?newDao();

return

conn.createStatem2nt(

?ResultSet.TYPE_SCROLL_SENSITIVE,

?ResultSet.CONCUR_UPDATABLE),executeQuery(sql);

〃返回?種ResultSet成果集

}catch(SQLExceptione){

e.printStackTrace();〃捕捉異常

returnnull;

}finally{

1

)

?調(diào)用構(gòu)造函數(shù)創(chuàng)立數(shù)據(jù)庫連接。

?RcsultSct.TYPE_SCROLL_SENSITIVE:常量容許記錄指針向前或向后移動,且當R

esultSet對象變動記錄指針時,會影響記錄指針的位直。這種類型口勺設置使成果集受到其他

顧客所作更改。勺影響。例如當一種顧客正在瀏覽記錄時,其他顧客口勺操作使數(shù)據(jù)庫中。勺數(shù)據(jù)

發(fā)生了變化,這時目前顧客所獲取。勺記錄集中的數(shù)據(jù)也會同步發(fā)生變化。

?ResultSet.CONCUR_UPDATABLE:這種類型的設置支持對ResukSet日勺動態(tài)更新。

(4)創(chuàng)立執(zhí)行更新操作II勺措施execuleUpdate。,它口勺返回值為血型的整數(shù),此返回值

代表數(shù)據(jù)表更新操作與否成功,返回1代表成功,返回T代表沒有成功。executeUpdate()

措施的關鍵代碼如下:

privatestaticintexecuteUpdate(Stringsql){

try{〃捕捉數(shù)據(jù)庫操

作異常

if(conn==nulli〃假如數(shù)據(jù)庫連

接為空

newDao();〃獲取數(shù)據(jù)庫連接

returnconn.createStatement().executeUpdate(sql);〃進行數(shù)據(jù)庫更

新操作

}catch(SQLExceptione){

System.out.println(e.getMessage());〃打印捕捉的異

return-1;〃返回T

}finally{

)

1

(5)為了防止運行程序時資源H勺揮霍,優(yōu)化項目運行速度,需要在完畢數(shù)據(jù)庫操作后,

關閉數(shù)據(jù)庫連接,因此筆者在Dao.java類中創(chuàng)立了關閉數(shù)據(jù)庫連接的措施dose。。為了使數(shù)

據(jù)庫連接在程序結(jié)束后確定會被關閉,在close。措施中抑入了finally字段,在finally塊中

將數(shù)據(jù)庫連接置空。關鍵代碼如下:

publicstaticvoidclose(){

try{〃捕捉異常

conn.closeO;〃關閉數(shù)據(jù)庫連

}catch(SQLExceptione){

e.printStackTrace();〃捕捉異常

}finally(

conn=null;〃在最終執(zhí)行塊中將

數(shù)據(jù)庫連接置空

)

)

1.2MenuAclions類的I編寫

一般激活同一種命令有多種方式,顧客可以通過工具欄中按鈕、菜單項選擇擇特定的功

能。在本系統(tǒng)中,最常用的命令就是彈出內(nèi)部窗體,筆者將本系統(tǒng)中需要彈出的內(nèi)部窗體命

令統(tǒng)一放入MenuActions類中,這樣觸發(fā)任何一種組件事件時,都會按照統(tǒng)一的方式處理。

Swing包提供了一種非常有用的機制,用來封裝命令,并將其連接到多種事件源,這種

機制就是Action接口。Action接口有如下措施:

0publicvoidactionPcrformcd(ActionEvcnte)

0publicObjectgetValue(Stringkey)

0publicvoidpulValue(S(ringkey,Objectvalue)

0publicbooleanisEnabled()

0publicvoidsetEnabled(booleanb)

0publicvoidaddPropertyChangeListener(PropertyChangeListenerlistener)

□publicvoidremovePiopertyCliangeListener(PropertyCliangeListenerlistener)

其中第?種措施在實現(xiàn)ActionListener接口的程序中常??吹?,實際上Action接口擴展

\ActionListener接口。

getValue。與putValue。措施用來存儲與提取動作對象的)預定義名稱與值。例如:

action.putValue(Action.SMALL_ICON,newImagelcon("*.gif'));//將圖

標存儲到動作對象中

表I列舉了幾種常用的動作對象H勺預定義名稱。

表1動作對象的預定義名稱

名稱值

NAME名稱,顯示在按鈕或菜單上

SMALL_ICON小圖標,顯示在按鈕或菜單上

SHORT_DESCRIPTION簡樸提醒闡明,當鼠標放在按鈕或菜單上出現(xiàn)提醒

LONG_DESCRIPTION詳細提醒闡明

setEnabled。措施用于啟動或禁用動作對象,isEnabled。措施用于檢查動作與否啟用。

實現(xiàn)Action接口需要將接口中的所有措施都實現(xiàn),因此在?般狀況下都使用實現(xiàn)該接

口的JAbstractAction類,本系統(tǒng)中日勺McnuActions類正是繼承了AbstractAction類,在

MenuActions類中只要重寫AbstractAction類中日勺actionPerformed()措施即可。

下面以系統(tǒng)中日勺“更改密碼”菜單項為例闡明MenuActions類的編寫。如下代色是在

McnuActions類中創(chuàng)立一種內(nèi)部類,這個內(nèi)部類用于創(chuàng)立菜單欄中“更改密碼”菜單項的動作

對象,在此類口勺構(gòu)造函數(shù)中創(chuàng)立組件H勺提醒闡明,在aclionPerformedO措施執(zhí)行“更改密碼”

窗體H勺彈出操作。關鍵代碼如下:

privatestaticclassPasswordModiActionextendsAbstractAction{

PasswordModiAction(){

putValue(Action.NAME,”更改密碼)//將菜單項名稱設置為“更

改密碼”

puiValue(Action.LONG_DESCRIPTION,”修改目前顧客密碼)

putValue(Aclion.SHORT_DESCRIPTION,”更換密碼,〃在“更改密碼”菜單

項顯示的提醒文字

//putValue(Action.SMALL_ICON,CreatecdIccn.addCbookAddtb.jpg"));

〃將圖標存儲到動作對象中

//setEnabled(false);//使動作禁用

)

publicvoidaclionPerformed(ActionEvente){

if(!frames.containsKey("更改密碼")||frames.get("更改密碼").isClosed。){

GengGaiMiMaiframe=newGengGaiMiMa();〃初始化更改密碼內(nèi)部窗

frames.put("更改密碼",iframe);

Library.addIFame(frames.get("更改密碼"));〃將內(nèi)部窗體添加到外部

窗體中

將此內(nèi)部類H勺對象作為MenuActions類的組員變量,然后再使用static定義一種靜態(tài)區(qū)

域進行初始化。類在被加載時,首先執(zhí)行static定義的靜態(tài)區(qū)域內(nèi)部的代碼,且只會被執(zhí)行

一次。關鍵代碼如下:

publicstaticPasswordModiActionMODIFY_PASSWORD;〃修改密碼窗體動作

static{

MODIFY_PASSWORD=newPasswordModiActionO;〃初始化修改密碼內(nèi)

部類對象

)

同理,菜單欄中其他菜單項與子菜單中U勺菜單項也是以相似方式被封裝到MenuActions

類中。

當某個組件需要使用這個動作對象時,以按鈕為例,可以使用如下代碼實現(xiàn):

JButtonbutton=ncwJButton(McnuActions.MODIFY_PASSWORD);

1.3限制文本框長度類日勺編寫

在Swing語言創(chuàng)立時窗體中,當JTextField組件創(chuàng)立時,可以指定文本框H勺寬度。例如:

JPanelpanel=newJPanel();〃創(chuàng)立面板

JTextFieldtextFie!d=newJTextField(20);〃創(chuàng)立文本

panel.add(textFieid);〃將文本框添加到面

板中

但在JTextField的構(gòu)造器中設定的寬度并不是顧客能輸入的字符個數(shù)上限,顧客可以在

文本框中輸入一種更長的字符申,此時需要限制顧客輸入字符串的長度,筆者創(chuàng)立了限制文

本框輸入長度11勺類MyDocument.javao創(chuàng)立此類口勺環(huán)節(jié)如下:

(1)創(chuàng)立MyDocumcnt.java類,此類繼承PlainDocument類。關鍵代碼如卜:

publicclassMyDocunicntextendsPlainDocumcnt{

(2)在MyDocumcnLjava類中創(chuàng)立兩個構(gòu)造函數(shù),其中一種是有參數(shù)的,另一種是無

參數(shù)的。關鍵代碼如下:

publicMyDocument(intnewMaxLength){〃設置文本

框的最大長度

super();〃執(zhí)行父類構(gòu)造

措施

maxLength=newMaxLength;〃將參數(shù)賦予類

組員變量

)

publicMyDocument(){〃無參的I構(gòu)造函

數(shù)

this(10);〃將數(shù)值10賦予

類組員變量

(3)重載父類措施inserlSiringO,在此措施中限定文本框容許輸入字符串長度。關鍵

代碼如下:

publicvoidinsertString(in(offset.Stringstr,AttributeSeta)

throwsBadLocationExccption{

if(getLength()+str.length()>maxLength){〃這里假定限制

長度為10

return;〃返回

}else{

siiper.insertString(offset,str,a);

)

)

(4)在程序設計中,當需要限制顧客輸入字符串長度時,可以使用如下代碼。

JTextFieldtextField=newJTextField(”請輸入13位書號”[3);〃初始化文本框

textField.setDocument(newMyDocument(13));〃設置“書號”文本框

最大輸入值為13位

1.4描述組合框索引與內(nèi)容類的編寫

在程序編寫口勺過程中,常常會碰到組合框組件的應月。有時要在窗體中的組合框中顯示

詳細內(nèi)容,一股需要在數(shù)據(jù)庫中存儲此組合框的索引值,這時便需要使用一種數(shù)據(jù)構(gòu)造將組

合框中的內(nèi)容與索引值聯(lián)絡在一起。形式是比很好的選擇,可以使用Map接口中的put。措

施將索引值與詳細內(nèi)容放入集合中,當?shù)玫剿饕禃r獲取詳細內(nèi)容可以使用M叩接口中的

get(key)措施。描述組合柩索引與內(nèi)容類的編寫環(huán)節(jié)如下:

(1)創(chuàng)立組合框組件的索引值與其所對應的內(nèi)容的Item.java類,這個類中不僅包括代

表組合框索引口勺組員變量id和代表組合框內(nèi)容的組員變量name,還包括這兩個組員變量的

setXXX。、getXXX。措施,關鍵代碼如F:

packagecom.wsy.JComPz;

publicclassItem{

?publicStringid;〃組合框索引值

?publicStringname;〃組合框內(nèi)容

publicStringgetld(){〃id對應

的geiXXXO措施

returnid;

)

publicvoidsct!d(Stringid){//id對應

WsetXXX。措施

this.id=id;

)

publicStringgetName(){〃name對應

l向getXXXO措施

returnname;

}

publicvoidsetName(Stringname){//name對應

MJselXXX。措施

th=name;

publicStringtoStringO{〃重寫Object類中的

toStringO措施

returngetName();

?id:表達組合框中索引值的變量。

?name:表達組合框中詳細內(nèi)容的變量。

(2)創(chuàng)立MapPz.java類,使用Map關聯(lián)組合框的索引與組合框口勺詳細內(nèi)容。這里以

圖書類別編號與圖書類別創(chuàng)立組合框為例,首先在此類中初始化Map集合,取圖書類別有

關內(nèi)容,將圖書類別有關內(nèi)容放入Item類中;然后將圖書類別編號與圖書類別名稱放入Map

集合中,可以使用put。措施;最終返回類型為Map日勺集合。關鍵代碼如下:

packagecom.wsy.JComPz;

publicclassMapPz{

staticMapmap=newHashMapO;〃初始化Map接

publicstaticMapgetMap(){

Listlist=Dao.selectBookCaiegoryO;〃獲取圖書類別有關

內(nèi)容

for(inti=0;i<list.size();i++){〃循環(huán)操作

BookTypebooktype=(BookType)list.get(i);〃獲得集合中口勺值

Itemitem=newItcm();〃初始化Item對象

item.setld(booktype.getld());〃將圖書類別編

號放入Item類中

item.setName(booktype.getTypeNameO);〃將圖書類別名稱放

入Item類中

map.put(item.getld(),item);〃將圖書類別編

號與item對象放入m叩

)

returnmap;〃返回集合

)

1

(3)上述代碼中用到了Dao.java中口勺selectBookCategoryO措施,此措施用「查詢圖書

類別有關信息,首先將數(shù)據(jù)庫杳詢H勺有關信息放入JavaBean中,然后將JavaBean對象添加

到lisi集合中,最終將成果以List形式返回。關鍵代碼如下:

publicstaticListseleciBookCategoryO(

Listlist=ncwArrayList();〃初始化List對象

?Stringsql="select*fromtb_bookTypeM;〃查詢圖書類別

表SQL語句

?ResultSetrs=Dao.executeQuery(sql);〃執(zhí)行SQL語句,

返回ResultSet對象

try(

while(rs.ncxK)){〃循環(huán)成果集

?BookTypebookType=newBookTypeO;〃初始化BookType對

bookType.setId(rs.getString("id"));〃將數(shù)據(jù)庫中查

泡id值賦予到JavaBean中

〃將數(shù)據(jù)庫中查詢typeName值賦予到JavaBean中

bookType.setTypeName(rs.getString("typeName"));

bookType.setDays(rs.getString(,'days,'));〃將數(shù)據(jù)庫中查

詢days值賦予到JavaBean中

bookType.setFk(rs.getString("fk"));〃將數(shù)據(jù)庫中查詢fk值

賦予到JavaBean中

list.add(bookType);〃將JavaBean對象添

加到list中

}catch(Exceptione){

c.printStackTracc();〃捕捉異常

Dao.close();〃關閉數(shù)據(jù)庫連接

returnlist;//將集合返回

?sql:查詢tb_bookTypc(圖書類別表)。勺所有內(nèi)容。

?rs:執(zhí)行SQL語句后返回時ResullSel成果集。

?bookType:實例化BookType類對象。

1.5在JLable上添加圖片類的編寫

為了美化窗體,一般需要在窗體上添加圖片。一般狀況下使用如下方式添加圖片:

0在窗體上添加J?anel。

0在JPancI上添加JlabiCo

0將圖片初始化為Imageicon對象。

0使用JLabeLseilcon(Imagelcon)代碼實目前窗體上添加圖片功能。

在這里筆者將上述操作封裝在公共類中,命名為Crealecdlcon.java類,在此類中定義一

種返回Imageicon類對象的措施,此措施以目前圖片的文獻名稱為參數(shù)初始化一種Imageicon

類對象。關鍵代碼如下:

packagecom.wsy.util;

publicclassCrcatccdlcon{

publicstaticImageiconadd(StringImageName){〃返回Imageicon類型

的對象

URLIconUrl=Library.class.getResource(,7,,+ImageName);〃目前圖片歸途

Imageiconicon=newImagelcon(IconUrl);〃將途徑封裝

到Imageicon對象中

returnicon;〃返回icon對象

)

)

A

闡明:Library.class.getResourceC71.jpg")指代的圖片為項目名稱下口勺res文獻下口勺

圖片,實際上指代H勺途徑為項目名稱中H勺res文獻c

當需要在JLable中添加圖片時,可以使用如下代碼。

finalJLabelheadLogo=newJLabel();〃創(chuàng)立Jlable對象

〃使用CreadedIcon類中的Jadd。措施返回一種ImageIcon對象

ImageiconbookModiAndDelIcon=CreatecdIcon.add("bookModiAndDel.jpg");

headLogo.setlcon(bookModiAndDellcon);〃設置Jlable圖片

主窗體設計

,I視頻005主窗體設計

例001圖書館管理系統(tǒng)

1.1主窗體概述

管理員通過“系統(tǒng)登錄”模塊口勺驗證后,可以登錄到圖書館管理系統(tǒng)的主窗體。系統(tǒng)主

窗體重要包括菜單欄、工具欄。顧客在菜單欄中單擊任一菜單項即可執(zhí)行對應H勺功能;工具

欄為顧客提供了常常使用的功能按鈕。主窗體運行效果如圖1所示。

圖1圖書館管理系統(tǒng)主窗體日勺運行效果

1.2主窗體技術(shù)分析

系統(tǒng)主窗體重要包括菜單欄與工具欄。

單擊窗體頂端口勺菜單欄中的某一菜單項,可以打開下拉菜單,其中包括菜單項與子菜單項。

當顧客單擊下拉菜單中某一菜單項時,窗體中所有口勺菜單都會被關閉。圖2展示了?種經(jīng)典

的菜單欄。

圖2主窗體日勺菜單欄

在主窗體的設計中,需要創(chuàng)立菜單欄與工具欄,此時用到了JMenuBar類與JToolBar

類來創(chuàng)立菜單欄與工具欄。

菜單欄口勺創(chuàng)立比較簡樸,使用JMenuBarH勺構(gòu)造函數(shù)初始化菜單欄即可。一般狀況下將

菜單欄顯示在框架頂部。例如:

JMenuBarmenuBa尸newJMenuBar。;〃創(chuàng)立菜單欄

frame.setJMenu=newJMenu(menuBar);〃將菜單欄放入

頂層框架

對于每個菜單,需要創(chuàng)立一種對象,實際上就是菜單項名稱。例如:

JMenuedilMenu=newJMenu("圖書類別管理");//在菜單欄中創(chuàng)立頂

層菜單

最終將頂層菜單添加到菜單欄中,可以使用JMenuBar類的add。措施進行添加。例如:

menuBar.add(editMenu);〃將頂層菜單添加到菜單

欄中

可以在頂層菜單中添加菜單項、分割符與子菜單。其中菜單項可以使用JMenuItem類

的構(gòu)造函數(shù)進行初始化,然后使用JMenuBar類的add。措施進行添加;分割符可以使用

JMenuBar類口勺addSeparator()措施進行添加;子菜單欄實質(zhì)上也是一種菜單欄,與頂層菜單

欄創(chuàng)立方式相似,可以使用JMenuBar類的add。措施將子菜單項添加到頂層菜單中。例如:

JMenuItemexit=newJMenuItem("退出)〃在菜單欄中創(chuàng)

立菜單項

editMenu.add(exit);〃將菜單項添加到頂

層菜單中

edilMenu.addSeparator();〃添加分割符

JMcnubookTypcAdd=newJMcnu("圖書添加");〃創(chuàng)立子菜單

editMenu.add(bookTypeAdd);〃在頂層菜單中添加

子菜單

當顧客選擇一種菜單時,會引起一種動作事件,需要為每個菜單項添加監(jiān)聽器,重寫

ActionListener接口中的actionPerfoiTned。措施,在此措施中為菜單欄添加業(yè)務邏輯。例如:

exit.addActionListener(newActionListener{

publicvoidaclionPerformed(finalActionEvenle){//實現(xiàn)ActionListene「接口

中歐IactionPerformed()措施

)

));

9注意:這里為菜單項添加監(jiān)聽事件的代碼使用

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論