【《基于JAVA SE技術(shù)的圖書管理系統(tǒng)設(shè)計(jì)》9500字】_第1頁
【《基于JAVA SE技術(shù)的圖書管理系統(tǒng)設(shè)計(jì)》9500字】_第2頁
【《基于JAVA SE技術(shù)的圖書管理系統(tǒng)設(shè)計(jì)》9500字】_第3頁
【《基于JAVA SE技術(shù)的圖書管理系統(tǒng)設(shè)計(jì)》9500字】_第4頁
【《基于JAVA SE技術(shù)的圖書管理系統(tǒng)設(shè)計(jì)》9500字】_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

基于JAVASE技術(shù)的圖書管理系統(tǒng)設(shè)計(jì)目錄1.緒論 .1數(shù)據(jù)庫設(shè)計(jì)3.1.1數(shù)據(jù)庫設(shè)計(jì)概述數(shù)據(jù)庫是系統(tǒng)的基礎(chǔ),數(shù)據(jù)庫的設(shè)計(jì)好壞直接決定整個(gè)系統(tǒng)的設(shè)計(jì)成敗,本節(jié)對(duì)數(shù)據(jù)庫的設(shè)計(jì)進(jìn)行專門闡述。信息系統(tǒng)的主要任務(wù)是通過大量數(shù)據(jù)獲得管理所需要的信息,這就要求系統(tǒng)本身能夠存儲(chǔ)和管理大量的數(shù)據(jù),而這一功能的實(shí)現(xiàn)必須借助大型數(shù)據(jù)庫系統(tǒng)。本系統(tǒng)的開發(fā)選擇MySQL作為后臺(tái)數(shù)據(jù)庫開發(fā)工具。設(shè)計(jì)數(shù)據(jù)庫必須遵循一定的規(guī)則,在關(guān)系型數(shù)據(jù)庫中,這種規(guī)則就是范式,范式是符合某一種級(jí)別的關(guān)系模式的集合。一般人們?cè)O(shè)計(jì)數(shù)據(jù)庫遵循第三范式。即:數(shù)據(jù)庫表中不包含已在其他表中包含的非主關(guān)鍵字信息。采用范式減少了數(shù)據(jù)冗余,節(jié)約了存儲(chǔ)空間,同時(shí)加快了增、刪、改的速度。整個(gè)系統(tǒng)所包括的信息有圖書信息、學(xué)生用戶信息、管理員信息、圖書狀態(tài)信息、圖書超期信息、圖書預(yù)約信息、圖書掛失信息??蓪⑦@些信息抽象為下列系統(tǒng)所需要的數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu):1)圖書信息(編號(hào),圖書名稱,作者,出版社,入庫時(shí)間,借閱狀態(tài),預(yù)約狀態(tài))2)學(xué)生用戶信息(編號(hào),姓名,性別,所在班級(jí),所在院系,密碼,借書權(quán)限)3)管理員信息(編號(hào),管理權(quán)限,密碼)4)圖書狀態(tài)信息(圖書編號(hào),學(xué)生編號(hào),借閱時(shí)間,歸還時(shí)間,是否借出,是否預(yù)約)5)圖書超期信息(學(xué)生編號(hào),圖書編號(hào),圖書名稱,超期時(shí)間)6)圖書預(yù)約信息(圖書編號(hào),學(xué)生姓名,班級(jí),圖書名稱,學(xué)生編號(hào),圖書作者)7)圖書掛失信息(丟失圖書編號(hào),學(xué)生編號(hào),圖書編號(hào),圖書名稱)注:帶下劃線表示主鍵3.1.2圖書信息表結(jié)構(gòu)設(shè)計(jì)圖書信息表用于存儲(chǔ)圖書館中所藏圖書的有關(guān)信息,當(dāng)中的有關(guān)信息是在圖書入庫時(shí)由圖書管理員進(jìn)行增加完善,此表主要用于用戶和圖書管理員對(duì)館中書籍的查詢,系統(tǒng)用戶根據(jù)書籍的一些屬性進(jìn)行查詢,就可得知書籍的其他相關(guān)信息。表的具體結(jié)果如下:表3.1圖書信息表book字段名稱數(shù)據(jù)類型字段長(zhǎng)度可否為空說明BookNOintDefaultNo(Key)圖書編號(hào)BookNamevarchar50Yes書名Authorvarchar50Yes作者Publishmentvarchar50Yes出版社ButTimevarchar50Yes圖書入庫時(shí)間Borrowedvarchar50Yes借閱狀態(tài)Orderedvarchar50Yes預(yù)約狀態(tài)3.1.3學(xué)生用戶信息表結(jié)構(gòu)設(shè)計(jì)學(xué)生用戶信息表的設(shè)計(jì)的目的是圖書館管理員對(duì)學(xué)生進(jìn)行管理,其中學(xué)生StuNO號(hào)都是只有一個(gè)的,是學(xué)生在借閱圖書籍時(shí)需要輸入對(duì)讀者身份進(jìn)行辨別的信息,學(xué)生班級(jí)、院系等信息是為了與讀者進(jìn)行溝通,借閱權(quán)限決定了讀者能否可借閱圖書。表的具體結(jié)構(gòu)設(shè)計(jì)如下:表3.2學(xué)生用戶信息表student字段名稱數(shù)據(jù)類型字段長(zhǎng)度可否為空說明StuNOintDefaultNo(Key)學(xué)生編號(hào)StuNamevarchar50Yes姓名StuSexvarchar50Yes性別Classvarchar50Yes班級(jí)Departmentvarchar50Yes院系Passwordvarchar20Yes密碼Permittedvarchar50Yes借閱權(quán)限3.1.4管理員信息表結(jié)構(gòu)設(shè)計(jì)該表的設(shè)計(jì)的目的是對(duì)不同身份的管理員進(jìn)行劃分,依據(jù)管理需求的不同對(duì)其權(quán)限進(jìn)行的設(shè)置,用來規(guī)定不一樣類型管理員的管理權(quán)限,表的具體結(jié)構(gòu)設(shè)計(jì)如下:表3.3管理員信息表manager字段名稱數(shù)據(jù)類型字段長(zhǎng)度可否為空說明mgNOintDefaultNo(Key)管理員編號(hào)permittedvarchar50Yes管理員權(quán)限Passwordvarchar50Yes密碼3.1.5圖書狀態(tài)信息表結(jié)構(gòu)設(shè)計(jì)此表格的設(shè)計(jì)是用來對(duì)學(xué)生借閱圖書進(jìn)行管理,表中圖書BookNO屬性是對(duì)借閱圖書的唯一性識(shí)別,學(xué)生StuNO號(hào)記錄借閱的相應(yīng)學(xué)生,借出時(shí)間記錄了相應(yīng)的歸還時(shí)間,Borrowed和Ordered字段用來判斷圖書能否被借出和是否被預(yù)約,表的具體結(jié)構(gòu)設(shè)計(jì)如下:表3.4圖書狀態(tài)信息表record字段名稱數(shù)據(jù)類型字段長(zhǎng)度可否為空說明BookNOintDefaultNo(Key)圖書編號(hào)StuNOintDefaultYes學(xué)生編號(hào)BorrowTimevarchar50Yes借閱時(shí)間ReturnTimevarchar50Yes應(yīng)還時(shí)間Borrowedvarchar50Yes是否借閱Orderedvarchar50Yes是否預(yù)約3.1.6圖書超期信息表結(jié)構(gòu)設(shè)計(jì)此表的設(shè)計(jì)除了像上面表格一樣把借閱的圖書與對(duì)應(yīng)的借閱者進(jìn)行相應(yīng)的聯(lián)系外還記錄了讀者超時(shí)圖書的時(shí)間,根據(jù)這來判斷讀者應(yīng)繳納的超時(shí)罰款,表的具體結(jié)構(gòu)設(shè)計(jì)如下:表3.5圖書超期信息表exceedtime字段名稱數(shù)據(jù)類型字段長(zhǎng)度可否為空說明StuNOintDefaultNo(Key)學(xué)生編號(hào)BookNOintDefaultYes圖書編號(hào)BookNamevarchar50No(Key)圖書名稱DelayTimeintDefaultYes超期時(shí)間3.1.7圖書預(yù)約信息表結(jié)構(gòu)設(shè)計(jì)此表的設(shè)計(jì)用來記錄圖書被預(yù)約的信息,被預(yù)約的圖書不能被其他學(xué)生借走,表的具體結(jié)構(gòu)設(shè)計(jì)如下:表3.6圖書預(yù)約信息表orderreport字段名稱數(shù)據(jù)類型字段長(zhǎng)度可否為空說明BookNOintDefaultNo(Key)圖書編號(hào)StuNamevarchar50Yes學(xué)生姓名Classvarchar50Yes班級(jí)BookNamevarchar50Yes預(yù)約書名StuNOintDefaultYes學(xué)生編號(hào)Authorvarchar50Yes圖書作者3.1.8圖書掛失信息表結(jié)構(gòu)設(shè)計(jì)此表包括了丟失書籍的名稱,書號(hào),學(xué)生編碼信息,是對(duì)遺失圖書的記錄,表的具體結(jié)構(gòu)設(shè)計(jì)如下:表3.7圖書掛失信息表losebook字段名稱數(shù)據(jù)類型字段長(zhǎng)度可否為空說明LBNOintDefaultNo(Key)掛失圖書編號(hào)StuNOintDefaultYes學(xué)生編號(hào)BookNOintDefaultYes圖書編號(hào)BookNamevarchar50Yes圖書名稱3.1.9數(shù)據(jù)庫表間關(guān)系圖完成圖書館管理系統(tǒng)要以下幾張表,book存儲(chǔ)圖書信息,student存儲(chǔ)學(xué)生用戶信息,manager存儲(chǔ)管理員信息,record存儲(chǔ)圖書狀態(tài)記錄信息,exceedtime存儲(chǔ)圖書超期信息,orderreport存儲(chǔ)圖書預(yù)約信息,losebook存儲(chǔ)圖書掛失信息。數(shù)據(jù)表之間的關(guān)系圖如圖3.8所示。圖3.8表間關(guān)系圖3.2系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì)系統(tǒng)在Windows98/2000/XP環(huán)境下,主要運(yùn)用Java語言開發(fā),MySQL數(shù)據(jù)庫設(shè)計(jì),開發(fā)過程與結(jié)果應(yīng)符合GB/T11457-1995軟件工程術(shù)語,GB/T8567-1988計(jì)算機(jī)軟件產(chǎn)品開發(fā)文件編制等。3.2.1圖書管理系統(tǒng)總體結(jié)構(gòu)圖畫系統(tǒng)結(jié)構(gòu)圖,本質(zhì)就是對(duì)系統(tǒng)功能模版進(jìn)行分解設(shè)計(jì)的過程,即將數(shù)據(jù)流程圖轉(zhuǎn)化為所要的系統(tǒng)結(jié)構(gòu)圖。系統(tǒng)結(jié)構(gòu)圖會(huì)使讀者和用戶能直觀的了解到系統(tǒng)的結(jié)構(gòu)模式,理解整個(gè)系統(tǒng)的各個(gè)功能的結(jié)構(gòu),能更好讓用戶使用和理解系統(tǒng)。本系統(tǒng)的結(jié)構(gòu)圖如下:圖3.9系統(tǒng)功能結(jié)構(gòu)圖圖3.9系統(tǒng)功能結(jié)構(gòu)圖圖書館管理系統(tǒng)學(xué)生端預(yù)約圖書掛失圖書管理端查詢圖書查詢圖書借閱預(yù)約圖書歸還掛失圖書繳納超期罰款管理員管理圖書管理學(xué)生用戶管理依據(jù)需求分析的結(jié)果,按照“低耦合、高內(nèi)聚”的法則,系統(tǒng)將劃分為以下幾個(gè)功能模塊:管理員管理功能模塊,學(xué)生用戶管理功能模塊,圖書管理功能模塊,圖書借閱預(yù)約功能模塊,圖書歸還掛失功能模塊,圖書查詢功能模塊,繳納超期罰款功能模塊。3.2.2系統(tǒng)管理員模塊功能這部分包括管理管理員,查看管理員信息。1.管理管理員此功能選項(xiàng)用來系統(tǒng)管理員對(duì)圖書管理員的信息的管理與更新,方便在人員流動(dòng)時(shí)進(jìn)行圖書管理員用戶的添加、刪除和修改等管理權(quán)限。此功能是對(duì)manager表格進(jìn)行維護(hù)更改的操作,更改后的信息將被保存在此表格中。2.查看管理員信息通過此子模塊的功能運(yùn)行可以對(duì)圖書管理員用戶進(jìn)行信息的查找操作,此操作是對(duì)manager表格進(jìn)行查找操作。3.2.3學(xué)生用戶管理模塊功能此模塊主要包含學(xué)生用戶信息管理的子模塊:學(xué)生用戶信息管理此子模塊是對(duì)學(xué)生用戶的基本信息進(jìn)行管理,可以對(duì)讀者的基本信息進(jìn)行添加、修改、刪除、查詢等動(dòng)作,并對(duì)其借書權(quán)限進(jìn)行修改,這些動(dòng)作均是對(duì)student表格進(jìn)行的,并且操作后的結(jié)果保留在此表格中。3.2.4圖書管理模塊功能圖書管理功能模塊的完成如下面表中所示:表3.10圖書管理描述圖書管理功能描述對(duì)圖書進(jìn)行基本操作和信息管理訪問的數(shù)據(jù)庫表圖書信息表:book圖書狀態(tài)信息表:record進(jìn)行的操作圖書入庫、修改、刪除圖書,對(duì)圖書的編號(hào)、出版社、書名等基本信息進(jìn)行管理產(chǎn)生的結(jié)果對(duì)圖書基本操作管理,對(duì)不同圖書參數(shù)進(jìn)行各自信息的設(shè)置管理結(jié)果存儲(chǔ)位置或輸出結(jié)果存儲(chǔ)在圖書信息表(book)中,結(jié)果在當(dāng)前頁面和圖書查詢頁面均可輸出3.2.5圖書借閱預(yù)約模塊功能該功能模塊主要實(shí)現(xiàn)對(duì)學(xué)生用戶借閱、預(yù)約圖書的操作,其中子模塊各自的描述如下各表所列:表3.11圖書借閱描述圖書借閱管理功能描述對(duì)讀者借閱圖書進(jìn)行基本操作和信息管理訪問的數(shù)據(jù)庫表圖書信息表:book學(xué)生用戶信息表:student圖書狀態(tài)信息表:record進(jìn)行的操作對(duì)學(xué)生用戶借閱圖書進(jìn)行管理產(chǎn)生的結(jié)果學(xué)生用戶借閱成功,系統(tǒng)對(duì)借閱信息進(jìn)行記錄結(jié)果存儲(chǔ)位置或輸出結(jié)果存儲(chǔ)在圖書狀態(tài)信息表(record)中,結(jié)果在圖書借閱頁面輸出表3.12圖書預(yù)約描述圖書預(yù)約管理功能描述對(duì)學(xué)生用戶預(yù)約圖書進(jìn)行操作訪問的數(shù)據(jù)庫表圖書信息表:book學(xué)生用戶信息表:student圖書狀態(tài)信息表:record圖書預(yù)約信息表:orderreport進(jìn)行的操作學(xué)生用戶對(duì)圖書進(jìn)行預(yù)約產(chǎn)生的結(jié)果圖書被預(yù)定,其他用戶不可進(jìn)行此圖書的借閱結(jié)果存儲(chǔ)位置或輸出結(jié)果存儲(chǔ)在圖書狀態(tài)信息表(record)和圖書預(yù)約信息表(orderreport)中3.2.6圖書歸還掛失模塊功能此功能模塊實(shí)現(xiàn)對(duì)學(xué)生用戶歸還、掛失圖書的操作,其中子模塊各自的描述如下各表格所列:表3.13圖書歸還描述圖書歸還管理功能描述對(duì)學(xué)生用戶歸還圖書進(jìn)行基本操作和信息管理訪問的數(shù)據(jù)庫表圖書信息表:book圖書狀態(tài)信息表:record進(jìn)行的操作對(duì)學(xué)生用戶歸還圖書進(jìn)行管理產(chǎn)生的結(jié)果學(xué)生用戶歸還成功,系統(tǒng)對(duì)歸還信息進(jìn)行記錄結(jié)果存儲(chǔ)位置或輸出結(jié)果存儲(chǔ)在圖書信息表(book)和圖書狀態(tài)信息表(record)中表3.14圖書掛失描述圖書掛失管理功能描述對(duì)學(xué)生用戶掛失圖書進(jìn)行基本操作和信息管理訪問的數(shù)據(jù)庫表圖書信息表:book圖書狀態(tài)信息表:record圖書預(yù)約信息表:orderreport圖書超期表:exceedtime圖書掛失表:losebook進(jìn)行的操作對(duì)學(xué)生用戶歸還圖書進(jìn)行管理產(chǎn)生的結(jié)果學(xué)生用戶掛失成功,系統(tǒng)對(duì)掛失信息進(jìn)行記錄結(jié)果存儲(chǔ)位置或輸出結(jié)果存儲(chǔ)在圖書掛失表(losebook)并刪除與之相關(guān)的表的記錄3.2.7圖書查詢模塊功能此模塊包括對(duì)圖書館書籍進(jìn)行查詢,對(duì)圖書的借看預(yù)約情況進(jìn)行查找,它子模塊的完成如下所示:表3.15圖書查詢描述圖書查詢功能描述系統(tǒng)用戶對(duì)館藏圖書信息進(jìn)行查詢操作訪問的數(shù)據(jù)庫表圖書信息表:book進(jìn)行的操作用戶通過圖書的作者,出版社等信息對(duì)圖書進(jìn)行相關(guān)查詢產(chǎn)生的結(jié)果用戶查詢到相應(yīng)的圖書或系統(tǒng)提醒查詢的圖書不存在結(jié)果存儲(chǔ)位置或輸出結(jié)果在圖書查詢頁面輸出3.2.8繳納超期罰款模塊功能此模塊包含對(duì)超期欠費(fèi)查詢,對(duì)超期欠費(fèi)款數(shù)進(jìn)行上繳,其兩個(gè)子模塊的完成如下所示:表3.16超期欠費(fèi)查詢描述超期欠費(fèi)查詢功能描述用戶針對(duì)學(xué)生借閱圖書進(jìn)行超期欠費(fèi)查詢操作訪問的數(shù)據(jù)庫表圖書超期信息表:exceedtime學(xué)生用戶信息表:student進(jìn)行的操作用戶通過學(xué)生用戶編號(hào)對(duì)學(xué)生用戶借閱圖書進(jìn)行超期欠費(fèi)查詢,并交納欠費(fèi)產(chǎn)生的結(jié)果用戶查詢到相應(yīng)的學(xué)生用戶超期欠費(fèi),學(xué)生用戶在查詢欠費(fèi)情況下進(jìn)行交費(fèi)結(jié)果存儲(chǔ)位置或輸出結(jié)果在超期欠費(fèi)查詢頁面輸出4.系統(tǒng)的詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)4.1登錄模塊的實(shí)現(xiàn)本節(jié)主要講了圖書管理系統(tǒng)的具體設(shè)計(jì)與實(shí)現(xiàn)。通過有關(guān)的核心代碼和系統(tǒng)運(yùn)行圖對(duì)圖書管理系統(tǒng)客戶端的各個(gè)模塊進(jìn)行展示和介紹。4.1.1參數(shù)類簡(jiǎn)介與代碼實(shí)現(xiàn)本節(jié)主要是用戶通過圖書管理系統(tǒng)的首頁登錄進(jìn)入此系統(tǒng)。用戶填入正確的用戶名和密碼,系統(tǒng)會(huì)根據(jù)用戶的身份進(jìn)行相應(yīng)權(quán)限劃分;如果登錄信息有錯(cuò)誤,則系統(tǒng)提示登入錯(cuò)誤的信息,并且禁止系統(tǒng)用戶進(jìn)行任何操作。圖書借閱管理系統(tǒng)的登錄主頁面如圖4.1所示。圖4.1圖書管理系統(tǒng)登錄首頁用戶在登錄頁面寫好用戶名和密碼,選擇登錄,登錄成功則跳轉(zhuǎn)到系統(tǒng)的首頁,否則提示錯(cuò)誤信息。進(jìn)行用戶身份驗(yàn)證的程序流程圖如圖4.2程序流程圖所示圖4.2用戶登錄流程圖實(shí)現(xiàn)此登陸模塊的類與方法:此模塊命名為L(zhǎng)ogin,繼承了JFrame類,并實(shí)現(xiàn)ActionListener接口,使用\o"javax.swing中的類"JComponent的子類JPanel作為容器,以便加入GUI組件,實(shí)現(xiàn)ActionListener接口中的actionPerformed方法,在構(gòu)造函數(shù)中進(jìn)行了容器及相應(yīng)標(biāo)簽和按鈕等的布局,并針對(duì)相應(yīng)的組件調(diào)用事件相應(yīng)的方法。其主要的對(duì)象及方法如下表:主要對(duì)象與方法功能與作用jp對(duì)象以便向該模塊中添加GUI組件jlArray對(duì)象用于顯示標(biāo)簽組(如:用戶名和密碼等標(biāo)簽)jbArray對(duì)象創(chuàng)建的按鈕組(如:學(xué)生登錄和管理員登錄按鈕)jtxtArray對(duì)象創(chuàng)建的文本框,用于接收鍵盤向其輸入的字符串jpassword對(duì)象創(chuàng)建的密碼框,用于接收鍵盤輸入的密碼并以特殊字符顯示Login()方法此為該類的構(gòu)造函數(shù),對(duì)組件的布局及方法的調(diào)用封裝在這里actionPerformed(ActionEvente)方法實(shí)現(xiàn)事件響應(yīng)監(jiān)聽器接口中的方法,其響應(yīng)的事件源有文本框、密碼框和布局在此類中的按鈕main()方法程序的入口,JVM識(shí)別此main方法從而編譯該程序生成.class文件表4.3Login類主要對(duì)象與方法4.1.2登錄模塊的代碼實(shí)現(xiàn)信息驗(yàn)證以及界面跳轉(zhuǎn)代碼如下:Stringusername=loginTextField_username.getText();Stringpassword=String.valueOf(loginPasswordField_password.getPassword());if(username.length()==0){JOptionPane.showMessageDialog(null,"用戶名不能為空");return;}elseif(password.length()==0){JOptionPane.showMessageDialog(null,"密碼不能為空");return;}Param.username=username;Useru;u=UserManager.getInstance().getUser(username);try{if(!u.getPassword().equals(password)){JOptionPane.showMessageDialog(null,"密碼錯(cuò)誤,請(qǐng)重試");return;}}catch(NullPointerExceptionex){JOptionPane.showMessageDialog(null,"用戶不存在");}if(jRadioButton_keeppassword.isSelected()){UserManager.getInstance().saveUserInfo(username,password,this.jRadioButton_autologin.isSelected(),true);}switch(u.getType()){case1:ReaderMainJFrameframe1=newReaderMainJFrame();frame1.setVisible(true);this.dispose();break;//普通用戶case2:AdminMainJFrameframe2=newAdminMainJFrame();frame2.setVisible(true);33.this.dispose();34.break;//管理員35.}保存和讀取登錄信息是使用OutputStreamWriter將字符流轉(zhuǎn)換為字節(jié)流,InputStreamReader將字節(jié)流轉(zhuǎn)換為字符流。登陸信息的保存和讀取代碼如下://保存用戶登錄信息publicvoidsaveUserInfo(Stringusername,Stringuserpassword,booleanauto,booleankeep){//全路徑則保存在寫好的路徑中,只有項(xiàng)目名則保存在相對(duì)路徑Filefile=newFile("E:\\user.txt");OutputStreamWriteroutStm=null;BufferedWriterwriter=null;try{if(!file.exists()){file.createNewFile();}outStm=newOutputStreamWriter(newFileOutputStream(file));12.writer=newBufferedWriter(outStm);13.writer.write(username+"\r\n");14.writer.write(userpassword+"\r\n");15.writer.write(auto+"\r\n");16.writer.write(keep+"\r\n");17.}catch(IOExceptionex){18.ex.printStackTrace();19.}finally{20.try{21.if(writer!=null)writer.close();22.if(outStm!=null)outStm.close();23.}catch(IOExceptionex){24.ex.printStackTrace();25.}26.}27.}28.//讀取用戶登錄信息29.publicString[]readUserInfo(){30.Filefile=newFile("E:\\user.txt");31.if(!file.exists()){32.returnnull;33.}34.InputStreamReaderinStm=null;35.BufferedReaderreader=null;36.try{37.inStm=newInputStreamReader(newFileInputStream(file));38.reader=newBufferedReader(inStm);39.Stringusername=reader.readLine();40.Stringuserpassword=reader.readLine();41.Stringauto=String.valueOf(reader.readLine());42.Stringkeep=String.valueOf(reader.readLine());43.returnnewString[]{username,userpassword,auto,keep};44.//reader.;45.}catch(IOExceptionex){46.ex.printStackTrace();47.}finally{48.try{49.if(inStm!=null)inStm.close();50.if(reader!=null)reader.close();51.}catch(IOExceptionex){52.ex.printStackTrace();53.}54.}55.returnnull;56.}記住密碼和自動(dòng)登錄單選按鈕功能的實(shí)現(xiàn)代碼如下:String[]ret=UserManager.getInstance().readUserInfo();if(ret!=null){System.out.print(ret[3]);System.out.print(Boolean.parseBoolean(ret[3]));if(Boolean.parseBoolean(ret[3])){this.jRadioButton_keeppassword.setSelected(true);this.loginTextField_username.setText(ret[0]);this.loginPasswordField_password.setText(ret[1]);}if(Boolean.parseBoolean(ret[2])){this.jRadioButton_autologin.setSelected(true);this.loginButton_login.doClick();}14.}4.2查詢模塊的實(shí)現(xiàn)用戶和管理員的客戶端都有查詢模塊的實(shí)現(xiàn),此論文以讀者用戶的圖書查詢模塊為案例,顯示該系統(tǒng)查找模塊的實(shí)現(xiàn)。4.2.1查詢模塊的流程圖圖書查找模塊主要實(shí)現(xiàn)用戶對(duì)圖書的信息分別可根據(jù)書籍名稱、出版社和作者進(jìn)行查找的功能模塊,其實(shí)現(xiàn)的操作界面如下所示:圖4.12圖書查詢操作界面實(shí)現(xiàn)圖書查詢模塊的類與方法如下表:主要對(duì)象與方法功能與作用jsp對(duì)象將面板分割為兩個(gè)顯示區(qū)域,上半部分為輸入?yún)^(qū),下半部分為向用戶顯示結(jié)果的區(qū)域jpt、jpb對(duì)象以便向該模塊中添加GUI組件jcb對(duì)象JComboBox實(shí)例化的對(duì)象,用于創(chuàng)建下拉列表框str對(duì)象創(chuàng)建下拉列表框數(shù)據(jù)模型的字符串?dāng)?shù)組jrbArray對(duì)象創(chuàng)建單選按鈕jtxtArray對(duì)象創(chuàng)建的文本框,用于接收鍵盤向其輸入的字符串jlArray對(duì)象用于顯示標(biāo)簽組(如:學(xué)號(hào)和學(xué)生姓名等標(biāo)簽)jb對(duì)象創(chuàng)建的按鈕(如:提交按鈕)head對(duì)象由Vector實(shí)例化的對(duì)象,用于對(duì)顯示給用戶的表格創(chuàng)建表頭data對(duì)象由Vector實(shí)例化的對(duì)象,用于存儲(chǔ)表中數(shù)據(jù)的數(shù)組dtm對(duì)象由DefaultTableModel實(shí)例化的對(duì)象,用于創(chuàng)建表格模型的對(duì)象jt對(duì)象JTable的對(duì)象,用于顯示給用戶可見的結(jié)果jspn對(duì)象將JTable封裝到滾動(dòng)表格Student()方法Student類的構(gòu)造函數(shù),封裝了此模塊的界面布局和設(shè)置監(jiān)聽器actionPerformed(ActionEvente)方法實(shí)現(xiàn)事件響應(yīng)監(jiān)聽器接口中的方法,其響應(yīng)的事件源有文本框和布局在此類中的按鈕。并調(diào)用了此類中設(shè)計(jì)的方法insertStudent()方法此方法實(shí)現(xiàn)了對(duì)學(xué)生用戶進(jìn)行添加,其功能有判斷學(xué)生信息是否為空的功能、執(zhí)行添加學(xué)生信息的功能、對(duì)數(shù)據(jù)庫表進(jìn)行操作的功能和顯示結(jié)果到JTable中的功能deleteStudent()方法此方法與insertStudent()方法類似,其不同之處為此方法操作為從數(shù)據(jù)庫表中刪除記錄updateStudent()方法此方法是對(duì)學(xué)生信息進(jìn)行修改,對(duì)數(shù)據(jù)庫中表的內(nèi)容進(jìn)行了更新searchStudent()方法對(duì)數(shù)據(jù)庫的內(nèi)容進(jìn)行查詢操作,將查詢的內(nèi)容顯示到JTable實(shí)例化的對(duì)象中表4.13圖書查詢模塊的對(duì)象與方法5.2.3查詢模塊的代碼實(shí)現(xiàn)模糊查詢按鈕的響應(yīng)代碼:Stringpartoftitle=this.searchTextField_part_title.getText();Stringpartofpress=this.searchTextField_part_press.getText();if(partoftitle.isEmpty()&&partofpress.isEmpty()){JOptionPane.showMessageDialog(null,"未輸入任何搜索項(xiàng)");}if(!partoftitle.isEmpty()){books=BookManager.getInstance().getBooksByTitle(partoftitle);this.loadTableData();}if(!partofpress.isEmpty()){books=BookManager.getInstance().getBooksByPress(partofpress);this.loadTableData();}按照書名關(guān)鍵詞模糊查詢的完整代碼:publicList<BookSummary>getBooksByTitle(Stringpartoftitle){List<BookSummary>ret=newArrayList<>();Stringsql="select*frombookswheretitlelike?limit0,100";Connectioncon=null;ResultSetrs=null;try{con=DBConnectionManager.getConnection();System.out.println(sql);PreparedStatementstm=con.prepareStatement(sql);stm.setString(1,'%'+partoftitle+'%');rs=stm.executeQuery();while(rs.next()){intbId=rs.getInt("bid");Stringtitle=rs.getString("title");Stringauthor=rs.getString("author");Stringpress=rs.getString("press");floatratingscore=rs.getFloat("rating_score");intstock=rs.getInt("stock");BookSummaryb=newBookSummary(bId,title,author,press,ratingscore,stock);ret.add(b);}}catch(SQLExceptionex){ex.printStackTrace();}finally{try{if(rs!=null)rs.close();if(con!=null)con.close();}catch(SQLExceptionex2){ex2.printStackTrace();32.}33.}34.if(ret.size()==0){35.JOptionPane.showMessageDialog(null,"未搜索到相關(guān)圖書!");36.}37.returnret;38.}按照評(píng)分區(qū)間進(jìn)行查詢的SQL語句:select*frombookswhererating_scorebetween?and?limit0,100表格裝載數(shù)據(jù)的代碼:privatevoidloadTableData(){//圖書查詢頁-圖書表String[]header1=newString[]{"id","書名","作者","出版社","評(píng)分","存量"};String[][]rows1=newString[books.size()][];for(inti=0;i<books.size();i++){BookSummaryb=books.get(i);rows1[i]=newString[]{String.valueOf(b.bId),b.title,b.author,b.press,String.valueOf(b.ratingscore)+"分",String.valueOf(b.stock)+"本"};}this.jTable_books.setModel(newDefaultTableModel(rows1,header1){@OverridepublicbooleanisCellEditable(introw,intcolumn){returnfalse;}});}4.3借閱圖書模塊的實(shí)現(xiàn)4.3.1借閱圖書模塊的界面展示用戶借閱圖書的行為在“圖書查詢”頁面點(diǎn)擊對(duì)應(yīng)圖書后彈出的圖書詳情界面上完成,每次借閱時(shí)長(zhǎng)為一周,每人同時(shí)最多只能有五本在借圖書。借完之后點(diǎn)擊“圖書查詢”頁面右上角的“刷新”按鈕,剛剛的借書記錄就會(huì)顯示在“借閱一覽”頁面。“借閱一覽”頁分為“在借記錄”和“已借記錄”兩部分,分別顯示在借的圖書記錄和已經(jīng)歸還的圖書記錄。用戶的歸還圖書和續(xù)借圖書操作發(fā)生在點(diǎn)擊“在借記錄”表中的記錄后彈出的圖書詳情頁上。5.3.2借閱圖書模塊的代碼實(shí)現(xiàn)圖書列表監(jiān)聽事件代碼如下:introw=jTable_books.getSelectedRow();Stringid=jTable_books.getValueAt(row,0).toString();Param.id=Integer.parseInt(id);BookDetailsJFrameframe=newBookDetailsJFrame();frame.setVisible(true);“借閱”按鈕響應(yīng)事件代碼如下:intnum=BorrowManager.getInstance().queryBorrowingBooknum(u.getUsername());if(bk.getStock()==0){JOptionPane.showMessageDialog(this,bk.getTitle()+"已經(jīng)被借完了,請(qǐng)?jiān)倏纯雌渌麜?,"提示",JOptionPane.INFORMATION_MESSAGE);}elseif(num==5){JOptionPane.showMessageDialog(this,"您已經(jīng)有五本在借書籍,請(qǐng)歸還一本后再借。","提示",JOptionPane.INFORMATION_MESSAGE);}else{intn=JOptionPane.showConfirmDialog(this,"每次借閱時(shí)長(zhǎng)為一周(7天)時(shí)間,您確定要借閱"+bk.getTitle()+"嗎?","確認(rèn)",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);if(n==0){try{BorrowManager.getInstance().borrowBook(bk.getBid(),bk.getTitle(),Param.username);Param.msg="ok";UserManager.getInstance().mdifyUserGetnum(u.getUsername(),u.getUsergetnum());BookManager.getInstance().mdifyBookStock(bk.getBid(),bk.getStock());}catch(BMSExceptionex){Logger.getLogger(BookDetailsJFrame.class.getName()).log(Level.SEVERE,null,ex);}}}使用Calendar類的方法獲取當(dāng)前時(shí)間戳并向后增加七天的代碼如下:SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");//設(shè)置日期格式Datedate=newDate();Calendarcalendar=Calendar.getInstance();calendar.setTime(date);date=calendar.getTime();stm.setString(4,sdf.format(date));calendar.add(Calendar.DAY_OF_MONTH,+7);date=calendar.getTime();stm.setString(5,sdf.format(date));4.4增、刪、改模塊的實(shí)現(xiàn)此節(jié)以管理員對(duì)圖書的增加、刪除、修改操作作為示例展示圖書管理系統(tǒng)的增、刪、改模塊的實(shí)現(xiàn)。4.4.1增、刪、改模塊的界面展示添加圖書的按鈕在管理員界面的“圖書管理”頁的右上角,點(diǎn)了之后會(huì)彈出圖書添加界面,此界面能寫圖書信息之后添加到數(shù)據(jù)庫。假如管理員點(diǎn)擊“圖書管理”的圖書列表,那就會(huì)跳出包括“刪除”及“修改”按鈕的圖書詳情,點(diǎn)擊刪除可以刪,并此書并有成功提醒,點(diǎn)修改則可以使該界面除id之外的所有文本框都可編輯。4.4.2增、刪、改模塊的代碼實(shí)現(xiàn)添加圖書信息的SQL語句:Stringsql="insertintobooks(title,author,press,press_time,price,rating_score,produce,stock)values(?,?,?,?,?,?,?,?)";刪除圖書信息的SQL語句:Stringsql="deletefrombookswherebid=?";修改圖書信息的SQL語句:Stringsql="UPDATEbooksSETtitle=?,author=?,press=?,press_time=?,price=?,rating_score=?,produce=?,stock=?WHEREbid=?";4.5圖書推薦模塊的實(shí)現(xiàn)4.5.1圖書推薦模塊的界面展示用戶的個(gè)人中心展示了讀者的用戶名、累計(jì)借書次數(shù)、信譽(yù)積分以及5條圖書推薦。

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論