圖書館管理系統(tǒng)-畢業(yè)論文_第1頁(yè)
圖書館管理系統(tǒng)-畢業(yè)論文_第2頁(yè)
圖書館管理系統(tǒng)-畢業(yè)論文_第3頁(yè)
圖書館管理系統(tǒng)-畢業(yè)論文_第4頁(yè)
圖書館管理系統(tǒng)-畢業(yè)論文_第5頁(yè)
已閱讀5頁(yè),還剩85頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

******屆班級(jí):軟件G142遼寧****學(xué)院畢業(yè)設(shè)計(jì)(論文)題目:圖書館管理系統(tǒng)設(shè)計(jì)系(部):信息工程系專業(yè):軟件技術(shù)姓名:小峰學(xué)號(hào):19目錄第一章 引言 圖書館管理系統(tǒng)設(shè)計(jì)引言隨著網(wǎng)絡(luò)技術(shù)的高速發(fā)展,計(jì)算機(jī)應(yīng)用的普及,利用計(jì)算機(jī)對(duì)圖書館的日常工作進(jìn)行管理勢(shì)在必行。雖然目前很多大型的圖書館已經(jīng)有一套完善的管理系統(tǒng),但一些中小型圖書館,包括在一些高校中,圖書館的大部分工作仍需要手工完成,工作起來效率比較低,管理員不能及時(shí)了解圖書館內(nèi)各類圖書的借閱情況,讀者需要的圖書難以在短時(shí)間內(nèi)找到,所以圖書管理涉及到大量的數(shù)據(jù)處理,一個(gè)現(xiàn)在化的圖書館根本不可能手工完成的龐大的數(shù)據(jù)處理。該畢業(yè)設(shè)計(jì)鑒于管理系統(tǒng)的不斷發(fā)展,為了減輕人工操作管理圖書的負(fù)擔(dān),提高圖書館圖書管理工作的效率。使用JSP進(jìn)行網(wǎng)頁(yè)界面的設(shè)計(jì),采用Servlet和JavaBean進(jìn)行開發(fā)了一個(gè)適用于中小型圖書館的在線圖書館管理系統(tǒng),該系統(tǒng)較完善的實(shí)現(xiàn)了不同級(jí)別用戶所需求的各項(xiàng)圖書管理操作。該畢業(yè)設(shè)計(jì)的學(xué)習(xí)和實(shí)踐過程以實(shí)用性為目的,特別注意整體的設(shè)計(jì)和構(gòu)思,避免了開發(fā)過程中不必要的反復(fù)修改和添減。程序編寫時(shí)著重體現(xiàn)編程實(shí)用技巧,對(duì)系統(tǒng)的安全性,實(shí)用性和可維護(hù)性都做了較為充分的考慮。為保護(hù)個(gè)人知識(shí)產(chǎn)權(quán),在系統(tǒng)中還添加了產(chǎn)品信息的介紹。該數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的學(xué)習(xí)、開發(fā)和其他的系統(tǒng)開發(fā)步驟一樣被分為5個(gè)部分:開發(fā)工具概述,系統(tǒng)的需求分析設(shè)計(jì),數(shù)據(jù)庫(kù)設(shè)計(jì),系統(tǒng)功能實(shí)現(xiàn),系統(tǒng)運(yùn)行。該論文從對(duì)Javaweb系統(tǒng)開發(fā)基礎(chǔ)的敘述開始,對(duì)整個(gè)系統(tǒng)的具體開發(fā)設(shè)計(jì)過程做了詳細(xì)介紹。并在附錄部分附有該系統(tǒng)精華部分的程序編碼。由于水平有限,論文中難免存在錯(cuò)誤和不足之處,敬請(qǐng)各位批評(píng)和指正。

系統(tǒng)分析與系統(tǒng)設(shè)計(jì)需求分析長(zhǎng)期以來,人們使用傳統(tǒng)的人工方式管理圖書館的日常業(yè)務(wù),其操作流程比較煩瑣。在借書時(shí),讀者首先將要借的書和借閱證交給工作人員,然后工作人員將每本書的信息卡片和讀者的借閱證放在一個(gè)小格欄里,最后在借閱證和每本書貼的借閱條上填寫借閱信息。在還書時(shí),讀者首先將要還的書交給工作人員,工作人員根據(jù)圖書信息找到相應(yīng)的書卡和借閱證,并填好相應(yīng)的還書信息。從上述描述中可以發(fā)現(xiàn),傳統(tǒng)的手工流程存在的不足。首先處理借書、還書業(yè)務(wù)流程的效率很低;其次處理能力比較低,一段時(shí)間內(nèi),所能服務(wù)的讀者人數(shù)是有限的。為此,圖書館管理系統(tǒng)需要為企業(yè)解決上述問題,為企業(yè)提供快速的圖書信息檢索功能、快捷的圖書借閱和歸還流程。一個(gè)最基本的圖書館管理系統(tǒng)要有如下幾個(gè)重要功能:用戶在借書超期的情況下得到來自管理員注:本系統(tǒng)的使用對(duì)象為圖書館的管理員(以下簡(jiǎn)稱管理員),即管理員為本系統(tǒng)的用戶。注:本系統(tǒng)的使用對(duì)象為圖書館的管理員(以下簡(jiǎn)稱管理員),即管理員為本系統(tǒng)的用戶。管理員可以方便進(jìn)行圖書管理,用戶管理,管理員管理。圖書管理包括圖書信息以及圖書分類的添加,修改,刪除。用戶管理包括用戶信息的添加,刪除,修改。管理員管理包括管理員信息的添加,刪除,修改等。管理員可以修改自己的密碼,修改前需先核實(shí)自己的原始密碼。實(shí)現(xiàn)模糊查詢。管理員權(quán)限的限制可行性分析為了對(duì)問題進(jìn)行研究,以最小代價(jià)在最短的時(shí)間內(nèi)確定問題是否可解,經(jīng)過對(duì)此項(xiàng)目進(jìn)行詳細(xì)調(diào)查研究,初擬本系統(tǒng)的實(shí)現(xiàn)報(bào)告,對(duì)軟件開發(fā)中將要面臨的問題及其解決方案進(jìn)行初步設(shè)計(jì)及合理安排,明確開發(fā)目標(biāo)。技術(shù)可行性分析該網(wǎng)站的開發(fā)語(yǔ)言我選擇了JSP語(yǔ)言做前臺(tái)頁(yè)面,JAVA語(yǔ)言實(shí)現(xiàn)后臺(tái)管理功能;JSP技術(shù)在開發(fā)網(wǎng)站有著很大的優(yōu)勢(shì):最大的優(yōu)勢(shì)就是和JAVA語(yǔ)言一樣,與平臺(tái)的無關(guān)性,也是一次編寫到處可以運(yùn)行;除此之外,JSP/Servlet的安全以效率也是十分驚人的;再者JSP相對(duì)其他編寫網(wǎng)站的語(yǔ)言ASP/PHP等其他語(yǔ)言來說在環(huán)境中進(jìn)行系統(tǒng)部署中的局限性顯而易見的少的很多。選擇JAVA語(yǔ)言開發(fā)程序的優(yōu)勢(shì)就更不用了,JAVA語(yǔ)言的平臺(tái)無關(guān)性,以及JAVA語(yǔ)言技術(shù)的發(fā)展越來越成熟化;而且近年來JAVA語(yǔ)言也正在逐漸成為了Internet應(yīng)用的主要開發(fā)語(yǔ)言;該網(wǎng)站選擇模式二為網(wǎng)站的開發(fā)結(jié)構(gòu)(也就是俗稱的MVC設(shè)計(jì)模式);在模式二中所有的開發(fā)都是以Servlet為主體展開的,由Servlet接收所有的客戶端請(qǐng)求,然后根據(jù)請(qǐng)求調(diào)用相應(yīng)的JavaBean,然后將所有的顯示結(jié)果交給JSP完成。所有開發(fā)該網(wǎng)站在技術(shù)層面上來說是絕對(duì)可行的。經(jīng)濟(jì)可行性分析對(duì)于開發(fā)此網(wǎng)站的開發(fā)者來說,首先電腦需要有Java環(huán)境,然后開發(fā)者需要到各工具官方網(wǎng)站上免費(fèi)下載這三款開源的軟件:Eclipse、Mysql數(shù)據(jù)庫(kù)以及Tomcat服務(wù)器。因?yàn)橄螺d的Eclipse是標(biāo)準(zhǔn)版的,不含開發(fā)web工程需要的插件,所以需要安裝WTP和tomcatplugin插件才可使用。因?yàn)槭褂枚际情_源軟件,所以創(chuàng)建該網(wǎng)站對(duì)于開發(fā)者來不需要投入多少金錢,但是需要開發(fā)者投入一定的時(shí)間來完成。但該網(wǎng)站開發(fā)出來后極大提高了中小型圖書館包括高校圖書館在內(nèi)的工作效率,所以該網(wǎng)站建設(shè)完成所產(chǎn)生的效益是顯而易見的,所以從經(jīng)濟(jì)方面上講開發(fā)此系統(tǒng)是可行的。安全可行性分析在系統(tǒng)運(yùn)行后,就管理者而言,關(guān)心的是如何管理圖書信息及用戶信息,只要把圖書信息及用戶的信息放入服務(wù)器端的數(shù)據(jù)庫(kù)或?qū)iT的數(shù)據(jù)庫(kù)服務(wù)器,管理者就可運(yùn)行相應(yīng)的后臺(tái)程序進(jìn)行處理。就用戶方而言,由于用戶使用本系統(tǒng)時(shí)不會(huì)也不必關(guān)心系統(tǒng)內(nèi)部的結(jié)構(gòu)及實(shí)現(xiàn)方法,即對(duì)用戶來說是透明的,所以本系統(tǒng)對(duì)用戶而言是定位在界面友好、操作方便、功能齊全的原則上的,用戶只需簡(jiǎn)單的用鼠標(biāo)點(diǎn)擊各頁(yè)面上的鏈接或按鈕就能執(zhí)行相應(yīng)的功能。操作可行性分析目前資源的利用情況和可操作性,只需根據(jù)相關(guān)需要對(duì)數(shù)據(jù)庫(kù)中的相應(yīng)表數(shù)據(jù)直接操作就可以實(shí)現(xiàn)系統(tǒng)的完整、穩(wěn)定的運(yùn)行,不會(huì)造成系統(tǒng)的巨大壓力,可以保證系統(tǒng)的正常運(yùn)行。綜上所述,通過技術(shù)可行性分析、經(jīng)濟(jì)可行性分析、安全可行性分析、操作可行性分析,本系統(tǒng)的開發(fā)是可行的。系統(tǒng)目標(biāo)根據(jù)前面所進(jìn)行的需求分析和實(shí)際的調(diào)查,圖書館管理系統(tǒng)實(shí)施后,應(yīng)達(dá)到以下目標(biāo):界面設(shè)計(jì)友好、美觀。數(shù)據(jù)存儲(chǔ)安全、可靠。倍總分類清晰、準(zhǔn)確。強(qiáng)大的查詢功能,保證數(shù)椐查詢的靈活性。實(shí)現(xiàn)對(duì)圖書借閱、續(xù)借和歸還過程的全程數(shù)據(jù)信息跟蹤。提供圖書借閱排行榜,為圖書館管理員提供了真是的數(shù)據(jù)信息。提供借閱到期提解功能,使管理者可以及時(shí)了解到己經(jīng)到達(dá)歸還日期的圖書借閱信息。提供靈活、方便的權(quán)限設(shè)置功能.使整個(gè)系統(tǒng)的管理分工明確。具有易維護(hù)性和易操作性。系統(tǒng)功能結(jié)構(gòu)根據(jù)圖書館管理系統(tǒng)的特點(diǎn),可以將其分為系統(tǒng)設(shè)置、讀者管理、圖書管理、圖書借還、系統(tǒng)查詢等5個(gè)部分,其中各個(gè)部分及其包含的具體功能模塊如圖2-1所示。圖2-1系統(tǒng)功能結(jié)構(gòu)圖系統(tǒng)流程圖圖書館管理系統(tǒng)的系統(tǒng)流程圖如圖2-2所示。圖2-2系統(tǒng)流程圖開發(fā)環(huán)境在開發(fā)圖書館管理系統(tǒng)時(shí),需要具備以下的軟件環(huán)境。服務(wù)器端:操作系統(tǒng):windows10。Web服務(wù)器:Tomcat8.0。Java開發(fā)包:JDK1.8以上。前端工具:Dreamweaver。數(shù)據(jù)庫(kù):MySQL。瀏覽器:IE9.0??蛻舳耍簽g覽器:IE9.0。分辨率:最佳為1024×768分辨率。文件夾組織結(jié)構(gòu)在開發(fā)圖書館管理系統(tǒng)時(shí),設(shè)計(jì)了如圖2-3所示的文件夾組織結(jié)構(gòu)圖。在開發(fā)時(shí),只需要將所創(chuàng)建的文件保存在相應(yīng)的文件夾中就可以了。圖2-3圖書館管理系統(tǒng)文件夾組織結(jié)構(gòu)頂層用例圖本系統(tǒng)頂層用例如圖2-4所示。圖2-4頂層用例圖用例分析與描述登錄用例圖圖2-5登錄用例圖用例的事件流描述簡(jiǎn)單描述:本用例描述了用戶如何登錄到系統(tǒng)中。前置條件用戶訪問本系統(tǒng)后置條件如果用例成功,用例登錄到系統(tǒng)中,否則系統(tǒng)的狀態(tài)不變。事件流基流圖書館管理員登錄到本系統(tǒng)時(shí),服務(wù)啟動(dòng)。系統(tǒng)顯示要管理員輸入管理員名稱和管理員密碼。管理員輸入自己的名稱和密碼,提交。系統(tǒng)驗(yàn)證輸入的名稱和密碼,用戶成功登錄系統(tǒng)。替代流未輸入管理員名稱,系統(tǒng)提示請(qǐng)輸入管理員名稱。未輸入管理員密碼,系統(tǒng)提示請(qǐng)輸入管理員密碼。系統(tǒng)檢索不到該用戶的賬號(hào)密碼,系統(tǒng)提示您輸入的管理員名稱或密碼錯(cuò)誤。系統(tǒng)設(shè)置用例圖圖2-6系統(tǒng)設(shè)置用例圖用例的事件流描述簡(jiǎn)單描述:管理員登錄系統(tǒng)后選擇系統(tǒng)設(shè)置,會(huì)彈出圖書館信息、管理員設(shè)置、參數(shù)設(shè)置、書架設(shè)置四個(gè)選項(xiàng),選擇進(jìn)入其功能頁(yè)面。前置條件已登錄后置條件用例成功后會(huì)彈出圖書館信息、管理員設(shè)置、參數(shù)設(shè)置、書架設(shè)置四個(gè)選項(xiàng)。事件流基流選擇一選項(xiàng)后進(jìn)入其功能頁(yè)面。讀者管理用例圖圖2-7讀者管理用例圖用例的事件流描述簡(jiǎn)單描述:管理員登錄系統(tǒng)后選擇讀者管理,會(huì)彈出讀者類型管理、讀者檔案管理兩個(gè)選項(xiàng),選擇進(jìn)入其功能頁(yè)面。前置條件已登錄后置條件用例成功后會(huì)彈出讀者類型管理、讀者檔案管理兩個(gè)選項(xiàng)事件流基流選擇一選項(xiàng)后進(jìn)入其功能頁(yè)面。圖書管理用例圖圖2-8圖書管理用例圖用例的事件流描述簡(jiǎn)單描述:管理員登錄系統(tǒng)后選擇圖書管理,會(huì)彈出圖書類型管理、圖書檔案管理兩個(gè)選項(xiàng),選擇進(jìn)入其功能頁(yè)面。前置條件已登錄后置條件用例成功后會(huì)彈出讀者類型管理、讀者檔案管理兩個(gè)選項(xiàng)事件流基流選擇一選項(xiàng)后進(jìn)入其功能頁(yè)面。圖書借還用例圖圖2-9圖書借還用例圖用例的事件流描述簡(jiǎn)單描述:管理員登錄系統(tǒng)后選擇圖書借還,會(huì)彈出圖書借閱、圖書續(xù)借、圖書歸還三個(gè)選項(xiàng),選擇進(jìn)入其功能頁(yè)面。前置條件已登錄后置條件用例成功后會(huì)彈出圖書借閱、圖書續(xù)借、圖書歸還三個(gè)選項(xiàng)。事件流基流選擇一選項(xiàng)后進(jìn)入其功能頁(yè)面。系統(tǒng)查詢用例圖圖2-10系統(tǒng)查詢用例圖用例的事件流描述簡(jiǎn)單描述:管理員登錄系統(tǒng)后選擇系統(tǒng)查詢,會(huì)彈出圖書檔案查詢、圖書借閱查詢、借閱到期提醒三個(gè)選項(xiàng),選擇進(jìn)入其功能頁(yè)面。前置條件已登錄后置條件用例成功后會(huì)彈出圖書檔案查詢、圖書借閱查詢、借閱到期提醒三個(gè)選項(xiàng)事件流基流選擇一選項(xiàng)后進(jìn)入其功能頁(yè)面。更改口令用例圖圖2-9更改口令用例圖用例的事件流描述簡(jiǎn)單描述:管理員登錄系統(tǒng)后選擇更改口令,會(huì)進(jìn)入更改口令頁(yè)面,填入相關(guān)信息即可更改登錄口令。前置條件已登錄后置條件如果用例成功,則成功修改密碼,否則原始密碼不改變。事件流基流用戶點(diǎn)擊更改口令按鈕。系統(tǒng)顯示要求用戶填寫原密碼、新密碼和確認(rèn)密碼。用戶填寫相關(guān)信息,提交。系統(tǒng)驗(yàn)證成功后,提示密碼修改成功。替代流系統(tǒng)對(duì)比原始密碼不正確,系統(tǒng)提示錯(cuò)誤。系統(tǒng)驗(yàn)證兩次密碼輸入不一致,系統(tǒng)提示錯(cuò)誤。

數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)庫(kù)分析由于本系統(tǒng)是為中小型圖書館開發(fā)的程序,需要充分考慮到成本問題及跨平臺(tái)等問題,而MySQL是目前最為流行的開放源碼的數(shù)據(jù)庫(kù),是完全網(wǎng)絡(luò)化的跨平臺(tái)的關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng),這正好滿足了中小型企業(yè)的需求,所以本系統(tǒng)采用Mysql數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)如表3-1所示為本系統(tǒng)數(shù)據(jù)庫(kù)中所包含的數(shù)據(jù)表的結(jié)構(gòu)。表3-1db_librarysys數(shù)據(jù)庫(kù)所包含數(shù)據(jù)表的結(jié)構(gòu)表tb_bookcase書架信息表tb_bookinfo圖書信息表tb_booktype圖書類型表tb_borrow圖書借閱信息表tb_giveback圖書歸還信息表tb_library圖書館信息表tb_manager管理員信息表tb_parameter參數(shù)設(shè)置表tb_publishing出版社信息表tb_purview權(quán)限表tb_reader讀者信息表tb_readertype讀者類型信息表tb_manager(管理員信息表)管理員信息表主要用來保存管理員信息。tb_manager的表結(jié)構(gòu)如表3-2所示。表3-2tb_manager的表結(jié)構(gòu)字段名數(shù)據(jù)類型是否為空是否主鍵默認(rèn)值描述idint(10)unsigned否是ID(自動(dòng)編號(hào))namevarchar(30)是NULL管理員名稱(續(xù)表)字段名數(shù)據(jù)類型是否為空是否主鍵默認(rèn)值描述pwdvarchar(30)是NULL密碼tb_purview(權(quán)限表)權(quán)限表主要用來保存管理員的權(quán)限信息,該表中的id字段與管理員信息表(tb_manager)中的id字段相關(guān)聯(lián)。tb_purview的表結(jié)構(gòu)如圖表3-3所示。表3-3tb_purview的表結(jié)構(gòu)字段名數(shù)據(jù)類型是否為空是否主鍵默認(rèn)值描述idint(11)否是0管理員ID號(hào)syssettinyint(1)是0系統(tǒng)設(shè)置readersettinyint(1)是0讀者管理booksettinyint(1)是0圖書管理borrowbacktinyint(1)是0圖書借還sysquerytinyint(1)是0系統(tǒng)查詢tb_bookinfo(圖書信息表)圖書信息表主要用來保存圖書信息。表tb_bookinfo的結(jié)構(gòu)如圖表3-4所示。表3-4tb_bookinfo的表結(jié)構(gòu)字段名數(shù)據(jù)類型是否為空是否主鍵默認(rèn)值描述barcodevarchar(30)是NULL條形碼booknamevarchar(70)是NULL書名typeidint(10)unsigned是NULL類型authorvarchar(30)是NULL作者translatorvarchar(30)是NULL譯者ISBNvarchar(20)是NULL出版社pricefloat(8,2)是NULL價(jià)格pageint(10)unsigned是NULL頁(yè)碼bookcaseint(10)unsigned是NULL書架inTimedate是NULL錄入時(shí)間(續(xù)表)字段名數(shù)據(jù)類型是否為空是否主鍵默認(rèn)值描述operatorvarchar(30)是NULL操作員deltinyint(1)是0是否刪除idint(11)否是ID(自動(dòng)編號(hào))tb_borrow(圖書借閱信息表)圖書借閱信息表主要用來保存圖書借閱信息。tb_borrow的表結(jié)構(gòu)如表3-5所示。表3-5tb_borrow的表結(jié)構(gòu)字段名數(shù)據(jù)類型是否為空是否主鍵默認(rèn)值描述idint(10)unsigned否是ID(自動(dòng)編號(hào))readeridint(10)unsigned是NULL讀者編號(hào)bookidint(10)是NULL圖書編號(hào)borrowTimedate是NULL借書時(shí)間backtimedate是NULL應(yīng)還時(shí)間operatorvarchar(30)是NULL操作員ifbacktinyint(1)是0是否歸還tb_giveback(圖書歸還信息表)圖書歸還信息表主要用來保存圖書歸還信息。tb_giveback的表結(jié)構(gòu)如表3-6所示。表3-6tb_giveback的表結(jié)構(gòu)字段名數(shù)據(jù)類型是否為空是否主鍵默認(rèn)值描述idint(10)unsigned否是ID(自動(dòng)編號(hào))readeridint(11)是NULL讀者編號(hào)bookidint(11)是NULL圖書編號(hào)backTimedate是NULL歸還時(shí)間operatorvarchar(30)是NULL操作員tb_reader(讀者信息表)讀者信息表主要用來保存讀者信息。tb_reader的表結(jié)構(gòu)如圖3-7所示。表3-7tb_reader的表結(jié)構(gòu)字段名數(shù)據(jù)類型是否為空是否主鍵默認(rèn)值描述idint(10)unsigned否是ID(自動(dòng)編號(hào))namevarchar(20)是NULL姓名sexvarchar(4)是NULL性別barcodevarchar(30)是NULL條形碼vocationvarchar(50)是NULL職業(yè)birthdaydate是NULL出生日期paperTypevarchar(10)是NULL有效證件paperNOvarchar(20)是NULL證件號(hào)碼telvarchar(20)是NULL電話emailvarchar(100)是NULL電子郵件createDatedate是NULL登記日期operatorvarchar(30)是NULL操作員remarktext是0備注typeidint(11)是類型

設(shè)計(jì)流程圖書館管理系統(tǒng)的使用對(duì)象是圖書館的管理人員,要保證系統(tǒng)的界面友好性和易操作性,軟件的整體配色采用綠色加橙色,使用綠色可減少眼睛的疲勞,使用橙色可防止一些誤操作的產(chǎn)生。每天借書還書操作的重復(fù)率,將這兩項(xiàng)的入口放在一起,方便操作。此外對(duì)于用戶權(quán)限的控制也在本系統(tǒng)有體現(xiàn)。登錄功能作為一個(gè)企業(yè)所使用的系統(tǒng),內(nèi)部保存的數(shù)據(jù)尤為重要,必須需要使用賬號(hào)和密碼登錄,來防止他人對(duì)系統(tǒng)數(shù)據(jù)的惡意破壞。系統(tǒng)登錄是進(jìn)入圖書館管理系統(tǒng)的入口。在運(yùn)行本系統(tǒng)后,首先進(jìn)入的是系統(tǒng)登錄頁(yè)面,在該頁(yè)面中,系統(tǒng)管理員可以通過輸入正確的管理員名稱和密碼登錄到系統(tǒng),當(dāng)用戶沒有輸入管理員名稱或密碼時(shí),系統(tǒng)會(huì)通過JavaScript進(jìn)行判斷,并給予提示信息。系統(tǒng)登錄的運(yùn)行結(jié)果如圖4-1所示。圖4-1系統(tǒng)登錄頁(yè)面此外,從安全角度考量,還需要防止非法用戶登錄本系統(tǒng),具體在第五章詳細(xì)設(shè)計(jì)階段進(jìn)行說明。主界面設(shè)計(jì)管理員通過“系統(tǒng)登錄”模塊的驗(yàn)證后,可以登陸到圖書館管理系統(tǒng)的主界面,主界面運(yùn)行結(jié)果如圖4-2(a)所示。系統(tǒng)主界面主要包括Banner信息欄、導(dǎo)航欄、排行榜和版權(quán)信息4部分。其中,導(dǎo)航欄中的功能菜單將根據(jù)管理員的權(quán)限進(jìn)行顯示。例如,系統(tǒng)管理員admin登錄后,將擁有整個(gè)系統(tǒng)的全部功能,因?yàn)樗浅?jí)管理員,具體情況如圖4-3(a)所示。(a)系統(tǒng)主界面運(yùn)行結(jié)果(b)主界面布局圖4-2主界面設(shè)計(jì)圖(a)admin超級(jí)管理員狀態(tài)(b)無權(quán)限用戶登錄狀態(tài)圖4-3導(dǎo)航欄功能菜單的不同顯示在如圖4-2(a)所示的主界面中,Banner信息欄、導(dǎo)航欄和版權(quán)信息并不是僅保存于主界面中,其他功能模塊的子界面中也需要包括此部分。因此,可以將這幾個(gè)部分分別存放保存在單獨(dú)的文件中,這樣,在需要放置相應(yīng)功能時(shí)只需包含這些文件即可,主要界面的布局如圖4-2(b)所示。考慮到本系統(tǒng)中需要包含的多個(gè)文件之間相對(duì)比較獨(dú)立,并且不需要進(jìn)行參數(shù)傳遞,屬于靜態(tài)包含,因此采用<%@include%>指令實(shí)現(xiàn),部分代碼如下:<%@includefile="banner.jsp"%><%@includefile="navigation.jsp"%><!--省略部分代碼--><tablewidth="778"height="510"border="0"align="center"cellpadding="0"cellspacing="0"bgcolor="#FFFFFF"class="tableBorder_gray"><tr><tdalign="center"valign="top"style="padding:5px;"> <!--省略部分代碼--></td></tr></table><%@includefile="copyright.jsp"%>系統(tǒng)設(shè)置功能修改圖書館信息功能作為一個(gè)圖書管理系統(tǒng),并不是專為一家企業(yè)所開發(fā)的,可以使用在多個(gè)圖書館中,那么圖書館的詳細(xì)信息就不能寫在代碼當(dāng)中,那樣修改的代價(jià)太大。所以設(shè)計(jì)此功能,方便修改信息,如圖4-4所示。圖4-4修改圖書館信息頁(yè)面圖4-5修改管理員權(quán)限管理員設(shè)置功能進(jìn)入管理員設(shè)置頁(yè)面,將顯示管理員列表,可以添加、刪除管理員,也可修改管理員的權(quán)限(如圖4-5),這樣就方便企業(yè)來控制每個(gè)職工的權(quán)限,不會(huì)出現(xiàn)越權(quán)問題。圖4-6管理員列表書架設(shè)置功能書架的設(shè)置是一個(gè)圖書館必須的要素,在此設(shè)置好書架后,就可以在導(dǎo)入圖書時(shí),選擇書架,如圖4-7為書架設(shè)置頁(yè)面。圖4-7書架設(shè)置頁(yè)面讀者管理設(shè)置讀者類型管理因?yàn)橄到y(tǒng)需要記錄借書人的相關(guān)信息,所以需要先設(shè)置讀者的類型,來控制借書的數(shù)量,如圖4-8所示。圖4-8讀者類型管理頁(yè)面讀者檔案管理系統(tǒng)需要記錄借書人的相關(guān)信息,包括4.4.1提到的讀者類型在內(nèi)的條形碼、姓名、證件類型、證件號(hào)碼、電話、Email等信息。圖4-9讀者檔案管理頁(yè)面圖書管理設(shè)置圖書類型管理系統(tǒng)需要先設(shè)置圖書的類型,來控制圖書可借的天數(shù),如圖4-10所示。圖4-10圖書類型管理頁(yè)面圖書檔案管理作為圖書館管理系統(tǒng),圖書的管理尤為重要,該功能的目的就是記錄圖書的檔案,包括條形碼(ISBN)、圖書名稱、圖書類型、出版社、書架等信息。由于列表不能完全的顯示圖書的全部信息,所以點(diǎn)擊圖書名稱即可進(jìn)圖詳細(xì)信息頁(yè)面(如圖4-12所示)。圖4-11讀者檔案管理頁(yè)面圖4-12圖書詳情頁(yè)圖書借還設(shè)置本塊就是本系統(tǒng)的核心部分,在設(shè)計(jì)方面圖書借閱、圖書續(xù)借、圖書歸還是相似的,實(shí)現(xiàn)方面也是非常類似的。圖書借閱先輸入讀者的條形碼,之后會(huì)顯示讀者的信息,之后添加圖書,完成借閱圖4-13圖書借閱頁(yè)面圖書續(xù)借圖4-14圖書續(xù)借頁(yè)面圖書歸還圖4-15圖書歸還頁(yè)面圖書借閱排行榜功能為了讓管理員清楚的了解到圖書的借閱情況,特設(shè)計(jì)了本功能,用來統(tǒng)計(jì)圖書的借閱情況,并顯示在首頁(yè)上,如圖4-16所示。圖4-16圖書借閱排行榜系統(tǒng)查詢?cè)O(shè)置圖書檔案查詢當(dāng)圖書庫(kù)里的圖書超過一定量時(shí),想查找到一本書修改或刪除它是相當(dāng)不容易的,因此開發(fā)了此功能。圖4-17圖書檔案查詢頁(yè)面圖書借閱查詢按照?qǐng)D書信息查詢或者借閱時(shí)間查詢,如圖4-18所示。圖4-18圖書借閱查詢頁(yè)面借閱到期提醒圖書的借閱都是有時(shí)間限制的,借閱到期提醒會(huì)給出管理員所有圖書借閱到期時(shí)間的統(tǒng)計(jì)列表,如圖4-19所示。圖4-19借閱到期提醒頁(yè)面更改口令設(shè)置更改口令是每個(gè)管理系統(tǒng)必備的功能,用于修改用戶的登錄口令。圖4-20更改口令頁(yè)面

詳細(xì)設(shè)計(jì)管理員模塊設(shè)計(jì)管理員模塊主要包括管理員登陸、查看管理員列表、添加管理員信息、管理員權(quán)限設(shè)置、管理員刪除和更改口令6個(gè)功能。管理員模塊的框架如圖5-1所示。圖5-1管理員模塊的框架圖編寫管理員的實(shí)體類在管理員模塊中,涉及的數(shù)據(jù)表是tb_manager(管理員信息表)和tb_purview(權(quán)限表),其中,管理員信息表中保存的是管理員的名稱和密碼等信息,權(quán)限表中保存的是各管理員的權(quán)限信息,根據(jù)這些信息可以得出管理員模塊的實(shí)體類。管理員模塊的實(shí)體類的名稱為ManagerForm。具體代碼如下:packagecom.actionForm;importorg.apache.struts.action.ActionForm;publicclassManagerFormextendsActionForm{privateIntegerid=newInteger(-1);//管理員ID號(hào)privateStringname="";//管理員名稱privateStringpwd="";//管理員密碼privateintsysset=0;//系統(tǒng)設(shè)置權(quán)限privateintreaderset=0;//讀者管理權(quán)限privateintbookset=0;//圖書管理權(quán)限privateintborrowback=0;//圖書借還權(quán)限privateintsysquery=0;//系統(tǒng)查詢權(quán)限publicIntegergetId(){returnid;}publicvoidsetId(Integerid){this.id=id;}……編寫管理員的Servlet控制類管理員功能模塊的Servlet控制類繼承了HttpServlet類,在該類中,首先需要在構(gòu)造方法中實(shí)例化管理員模塊的ManagerDAO類(該類用于實(shí)現(xiàn)與數(shù)據(jù)庫(kù)的交互),然后編寫doGet()和doPost()方法,在這兩個(gè)方法中根據(jù)request的getParameter()方法獲取的action參數(shù)值執(zhí)行相應(yīng)的方法,由于這兩個(gè)方法中的代碼相同,所以只需在同一個(gè)方法doGet()中寫相應(yīng)代碼,在另一個(gè)方法doPost()中調(diào)用doGet()方法即可。配置管理員的Servlet控制類管理員的Servlet控制類編寫完需要在web.xml文件中配置該Servlet,關(guān)鍵代碼如下:<servlet><servlet-name>Manager</servlet-name><servlet-class>com.action.Manager</servlet-class></servlet><servlet-mapping><servlet-name>Manager</servlet-name><url-pattern>/manager</url-pattern></servlet-mapping>系統(tǒng)登錄的實(shí)現(xiàn)過程系統(tǒng)登錄是進(jìn)入圖書館管理系統(tǒng)的入口。在運(yùn)行本系統(tǒng)后,首先進(jìn)入的是系統(tǒng)登錄頁(yè)面,在該頁(yè)面中,系統(tǒng)管理員可以通過輸入正確的管理員名稱和密碼登錄到系統(tǒng),當(dāng)用戶沒有輸入管理員名稱或密碼是,系統(tǒng)會(huì)通過JavaScript進(jìn)行判斷,并給予提示信息。系統(tǒng)登錄的運(yùn)行結(jié)果如圖4-1所示。此外還需要修改5.1.2和5.1.3中提到的Serclet控制類以及ManagerDAO類。從安全角度考量,僅靠上面介紹的系統(tǒng)登錄頁(yè)面并不能有效地保證系統(tǒng)的安全,一旦系統(tǒng)主界面的地址被他人獲得,就可以通過在地址欄中輸入系統(tǒng)的主界面地址從而直接進(jìn)入到系統(tǒng)中。由于系統(tǒng)的Banner信息欄banner.jsp幾乎包含整個(gè)系統(tǒng)的每個(gè)頁(yè)面(如圖4-2(b)),因此這里將驗(yàn)證用戶是否登錄的代碼放置在該頁(yè)中。驗(yàn)證用戶是否登錄的具體代碼如下:<%ChStrchStr=newChStr();Stringmanager=(String)session.getAttribute("manager");//驗(yàn)證用戶是否登錄if(manager==null||"".equals(manager)){ response.sendRedirect("login.jsp");}%>這樣,當(dāng)系統(tǒng)調(diào)用每個(gè)頁(yè)面時(shí),都會(huì)判斷session變量manager是否存在,如果不存在,將頁(yè)面重定向到系統(tǒng)登錄頁(yè)面。添加管理員的實(shí)現(xiàn)過程管理員登陸系統(tǒng)后,在管理員設(shè)置頁(yè)面,單擊“添加管理員信息”超鏈接,打開添加管理員信息頁(yè)面。添加管理員信息頁(yè)面的運(yùn)行結(jié)果如圖5-2所示。圖5-2添加管理員信息頁(yè)面設(shè)計(jì)添加管理員信息頁(yè)面添加管理員頁(yè)面主要用于收集輸入的管理員信息及通過自定義的JavaScript函數(shù)驗(yàn)證輸入信息是否合法,該頁(yè)面中所涉及的表單元素如表5-1所示。表5-1添加管理員頁(yè)面涉及的表單元素名稱元素類型重要屬性含義form1formmethod=”post”action=”manager?action=managerAdd”表單nametext管理員名稱pwdpassword管理員密碼pwd1password確認(rèn)密碼(續(xù)表)名稱元素類型重要屬性含義Buttonbuttonvalue=”保存”onClick=”check(form1)”“保存”按鈕Submit2buttonvalue=”關(guān)閉”onClick=”window.close()”“關(guān)閉”按鈕編寫自定義的JavaScript函數(shù),用于判斷管理員名稱、管理員密碼、確認(rèn)密碼文本框是否為空,以及兩次輸入的密碼是否一致。程序代碼如下:<scriptlanguage="javascript">functioncheck(form){ if(.value==""){ alert("請(qǐng)輸入管理員名稱!");.focus();return; } if(form.pwd.value==""){ alert("請(qǐng)輸入管理員密碼!");form.pwd.focus();return; } if(form.pwd1.value==""){ alert("請(qǐng)確認(rèn)管理員密碼!");form.pwd1.focus();return; } if(form.pwd.value!=form.pwd.value){ alert("您兩次輸入的管理員密碼不一致,請(qǐng)重新輸入!");form.pwd.focus();return; } form.submit();}</script>修改管理員的Servlet控制類在添加管理員頁(yè)面中,輸入合法的管理員名稱及密碼后,單擊“保存”按鈕,網(wǎng)頁(yè)會(huì)訪問一個(gè)URL,這個(gè)URL是manager?action=managerAdd。從該URL地址中可以知道添加管理員信息頁(yè)面涉及的action的參數(shù)值為managerAdd,也就是當(dāng)action=managerAdd時(shí),會(huì)調(diào)用添加管理員信息的方法managerAdd()。在添加管理員信息的方法managerAdd()中,首先需要將接收到的表單信息保存到管理員實(shí)體類ManagerForm中,然后調(diào)用ManagerDAO類中的insert()方法,將添加的管理員信息保存到數(shù)據(jù)表中,并將返回值保存到變量ret中,如果返回值為1,則表示信息添加成功,將頁(yè)面重定向到添加信息成功的頁(yè)面;如果返回值為2,則表示該管理員信息已經(jīng)添加,將錯(cuò)誤提示信息“該管理員信息已經(jīng)存在!”保存到HttpServletRequest對(duì)象的error參數(shù)中,然后將頁(yè)面重定向到錯(cuò)誤提示信息頁(yè)面;否則,將錯(cuò)誤提示信息“添加管理員信息失敗!”保存到HttpServletRequest的對(duì)象error中,并將頁(yè)面重定向到錯(cuò)誤提示頁(yè)。編寫添加管理員信息的ManagerDAO類的方法從managerAdd()方法中可以知道添加管理員信息使用的ManagcrDAO類的方法是insert()。在insert()方法中首先從數(shù)據(jù)表tb_manager中查詢輸入的管理員名稱是否存在,如果存在,將標(biāo)志變量設(shè)置為2,否則將輸入的信息保存到管理員信息表中,并將返回值賦給標(biāo)志變量,最后返回標(biāo)志變量。Inscrt()方法的具體代碼如下:publicintinsert(ManagerFormmanagerForm){Stringsql1="SELECT*FROMtb_managerWHEREname='"+managerForm.getName()+"'";ResultSetrs=conn.executeQuery(sql1);Stringsql="";intfalg=0;try{if(rs.next()){falg=2;}else{sql="INSERTINTOtb_manager(name,pwd)values('"+managerForm.getName()+"','"+managerForm.getPwd()+"')";falg=conn.executeUpdate(sql);System.out.println("添加管理員信息的SQL:"+sql);}}catch(SQLExceptionex){falg=0;}finally{ conn.close();}returnfalg;}制作添加信息成功頁(yè)面下面將添加管理員信息、設(shè)置管理員權(quán)限和管理員信息刪除3個(gè)模塊操作成功的頁(yè)面,這里用一個(gè)JSP文件實(shí)現(xiàn),只是通過傳遞的參數(shù)para的值進(jìn)行區(qū)分,關(guān)鍵代碼如下:<%intpara=Integer.parseInt(request.getParameter("para"));switch(para){ case1: %> <scriptlanguage="javascript"> alert("管理員信息添加成功!"); opener.location.reload(); window.close(); </script> <% break; case2: %> <scriptlanguage="javascript"> alert("管理員權(quán)限設(shè)置成功!"); opener.location.reload(); window.close(); </script> <% break; case3: %> <scriptlanguage="javascript"> alert("管理員信息刪除成功!"); window.location.href="manager.do?action=managerQuery"; </script> <% break;}%>設(shè)置管理員權(quán)限的實(shí)現(xiàn)過程管理員登陸系統(tǒng)后,在管理員設(shè)置頁(yè)面,單擊指定管理員后面的“權(quán)限設(shè)置”超鏈接,即可進(jìn)入到權(quán)限設(shè)置頁(yè)面,設(shè)置該管理員的權(quán)限。權(quán)限設(shè)置頁(yè)面的運(yùn)行結(jié)果如圖5-3所示。圖5-3權(quán)限設(shè)置頁(yè)面在管理員列表中添加權(quán)限設(shè)置頁(yè)面的入口在“査看管理員列表”頁(yè)面的管理員列表中,添加“權(quán)限設(shè)置”列,并在該列中添加以下用于打開“權(quán)限設(shè)置”頁(yè)面的超鏈接代碼。<ahref="#"onClick="window.open('manager.do?action=managerModifyQuery&id=<%=ID%>','','width=292,height=175')">權(quán)限設(shè)置</a>從上面的URL地址中可以知道,設(shè)置管理員權(quán)限頁(yè)面所涉及的action的參數(shù)值為managerModify-Query,當(dāng)action=managerModifyQuery時(shí),會(huì)調(diào)用查詢指定管理員權(quán)限信息的方法managerModifyQuery(),具體代碼如下:if("managerModifyQuery".equals(action)){ managerModifyQuery(request,response);}在查詢指定管理員權(quán)限信息的方法managerModifyQuery()中,首先需要將接收到的表單信息保存到管理員實(shí)體類ManagerForm中;再調(diào)用ManagerDAO類中的query_update()方法,查詢出指定管理員權(quán)限信息:再將返回的査詢結(jié)果保存到HttpServletRequest的對(duì)象managerQueryif中。査詢指定管理員權(quán)限信息的方法managerModifyQuery()的具體代碼如下:privatevoidmanagerModifyQuery(HttpServletRequestrequest, HttpServletResponseresponse)throwsServletException,IOException{ ManagerFormmanagerForm=newManagerForm(); managerForm.setId(Integer.valueOf(request.getParameter("id")));//獲取并設(shè)置管理ID號(hào) request.setAttribute("managerQueryif",managerDAO .query_update(managerForm)); request.getRequestDispatcher("manager_Modify.jsp").forward(request, response); //轉(zhuǎn)到權(quán)限設(shè)置成功頁(yè)面 }從managerModifyQuery()中可以知道,查詢指定管理員權(quán)限信息使用的ManagerDAO類的方法是query_update()。在query_update()方法中,首先使用左連接從數(shù)據(jù)表tb_manager和tb_purview中查詢出符合條件的數(shù)據(jù),然后將查詢結(jié)果保存到Collection集合類中,并返回該集合類,query_update()方法的具體代碼如下:publicManagerFormquery_update(ManagerFormmanagerForm){ManagerFormmanagerForm1=null;Stringsql="selectm.*,p.sysset,p.readerset,p.bookset,p.borrowback,p.sysqueryfromtb_managermleftjointb_purviewponm.id=p.idwherem.id="+managerForm.getId()+"";ResultSetrs=conn.executeQuery(sql); //執(zhí)行查詢語(yǔ)句try{while(rs.next()){managerForm1=newManagerForm();managerForm1.setId(Integer.valueOf(rs.getString(1)));…managerForm1.setSysquery(rs.getInt(8));}}catch(SQLExceptionex){ ex.printStackTrace(); //輸出異常信息}finally{ conn.close(); //關(guān)閉數(shù)據(jù)庫(kù)連接}returnmanagerForm1;}設(shè)計(jì)權(quán)限設(shè)置頁(yè)面將Servlet控制類中managerModifyQuery()方法返回的査詢結(jié)果,顯示在設(shè)置管理員權(quán)限頁(yè)manager_Modify.jsp中。在manager_Modify.jsp中,通過request.getAttribute()方法獲取查詢結(jié)果,并將其顯示在相應(yīng)的表單元素中。權(quán)限設(shè)置頁(yè)面中所涉及的表單元素如表5-2所示。表5-2權(quán)限設(shè)置頁(yè)面所涉及的表單元素名稱元素類型重要屬性含義form1formmethod=”post”action=”manager?action=managerAdd”表單idhiddenvalue=”<%=ID%>”管理員編號(hào)nametextreadonly=”yes”value=”<%=name%>”管理員名稱syssetcheckboxvalue=”1”<%if(sysset==1){out.println(“checked”);%>系統(tǒng)設(shè)置readersetcheckboxvalue=”1”<%if(readerset==1){out.println(“checked”);%>讀者管理booksetcheckboxvalue=”1”<%if(bookset==1){out.println(“checked”);%>圖書管理borrowbackcheckboxvalue=”1”<%if(borrowback==1){out.println(“checked”);%>圖書借還sysquerycheckboxvalue=”1”<%if(sysquery==1){out.println(“checked”);%>系統(tǒng)查詢Buttonsubmitvalue=”保存”“保存”按鈕Submit2buttonvalue=”關(guān)閉”onClick=”window.close()”“關(guān)閉”按鈕修改管理員的Servlet控制類在權(quán)限設(shè)置頁(yè)面中設(shè)置管理員權(quán)限后,單擊"保存"按鈕,網(wǎng)頁(yè)會(huì)訪問一個(gè)URL,這個(gè)URL是manager?action=managerModify。從該URL地址中可以知道保存設(shè)置管理員權(quán)限信息涉及的action的參數(shù)值為managerModify,也就是當(dāng)action=managerModify時(shí),會(huì)調(diào)用保存設(shè)置管理員權(quán)限信息的方法managerModify(),具體代碼如下:if("managerModify".equals(action)){ managerModify(request,response);}在保存設(shè)置管理員權(quán)限信息的方法managerModify()中,首先需要將接收到的表單信息保存到管理員實(shí)體類ManagerForm中,然后調(diào)用ManagerDAO類中的update()方法,將設(shè)置的管理員權(quán)限信息保存到權(quán)限表tb_purview中,并將返回值保存到變量ret中,如果返回值為l,表示信息設(shè)置成功,將頁(yè)面重定向到設(shè)置信息成功頁(yè)面;否則,將錯(cuò)誤提示信息“修改管理員信息失敗!”保存到HttpServletRequest對(duì)象的error參數(shù)中,然后將頁(yè)面重定向到錯(cuò)誤提示信息頁(yè)面。保存設(shè)置管理員權(quán)限信息的方法managerModify()的具體代碼如下:privatevoidmanagerModify(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{ ManagerFormmanagerForm=newManagerForm(); managerForm.setId(Integer.parseInt(request.getParameter(“id”))); //獲取并設(shè)置管理員ID號(hào) managerForm.setName((request.getParameter(“name”))); //獲取并設(shè)置管理員名稱 managerForm.setPwd((request.getParameter(“pwd”))); //獲取并設(shè)置管理員密碼 managerForm.setSysset((request.getParameter(“sysset”)==null?0:Integer.parseInt(request.getParameter(“sysset”))); //獲取并設(shè)置系統(tǒng)設(shè)置權(quán)限 managerForm.setReaderset((request.getParameter(“readerset”)==null?0:Integer.parseInt(request.getParameter(“readerset”))); //獲取并設(shè)置讀者管理權(quán)限 managerForm.setBookset((request.getParameter(“bookset”)==null?0:Integer.parseInt(request.getParameter(“bookset”))); //獲取并設(shè)置圖書管理權(quán)限 managerForm.setBorrowback((request.getParameter(“borrowback”)==null?0:Integer.parseInt(request.getParameter(“borrowback”)));//獲取并設(shè)置圖書借還權(quán)限 managerForm.setSysquery((request.getParameter(“sysquery”)==null?0:Integer.parseInt(request.getParameter(“borrowback”))); //獲取并設(shè)置系統(tǒng)查詢權(quán)限 intret=managerDAO.update(managerForm); //調(diào)用設(shè)置管理員權(quán)限的方法 if(ret==0){ request.setAttribute("error","設(shè)置管理員權(quán)限失敗!"); //保存錯(cuò)誤提示信息到error參數(shù)中 returnmapping.findForward("error"); //轉(zhuǎn)到錯(cuò)誤提示頁(yè)面 }else{ returnmapping.findForward("managerModify"); //轉(zhuǎn)到權(quán)限設(shè)置成功頁(yè)面 } }編寫保存設(shè)置管理員權(quán)限信息的ManagerDAO類的方法從managerModify()方法中可以知道設(shè)置管理員權(quán)限時(shí)使用的ManagerDAO類的方法是update()。在update()方法中,首先從數(shù)據(jù)表tb_manager中查詢要設(shè)置權(quán)限的管理員是否已經(jīng)存在權(quán)限信息,如果是,則修改該管理員的權(quán)限信息;如果不是,則在管理員信息表中添加該管理員的權(quán)限信息,并將返回值賦給標(biāo)志變量,然后返回標(biāo)志變量。update()方法的具體代碼如下:publicintupdate(ManagerFormmanagerForm){Stringsql1="SELECT*FROMtb_purviewWHEREid="+managerForm.getId()+"";ResultSetrs=conn.executeQuery(sql1); //查詢要設(shè)置權(quán)限的管理員的權(quán)限信息Stringsql="";intfalg=0;try{ //捕捉異常信息if(rs.next()){ //當(dāng)已經(jīng)設(shè)置權(quán)限時(shí),執(zhí)行更新語(yǔ)句sql="Updatetb_purviewsetsysset="+managerForm.getSysset()+",readerset="+managerForm.getReaderset()+",bookset="+managerForm.getBookset()+",borrowback="+managerForm.getBorrowback()+",sysquery="+managerForm.getSysquery()+"whereid="+managerForm.getId()+"";}else{ //未設(shè)置權(quán)限時(shí),執(zhí)行插入語(yǔ)句sql="INSERTINTOtb_purviewvalues("+managerForm.getId()+","+managerForm.getSysset()+","+managerForm.getReaderset()+","+managerForm.getBookset()+","+managerForm.getBorrowback()+","+managerForm.getSysquery()+")";}falg=conn.executeUpdate(sql);}catch(SQLExceptionex){falg=0; //表示設(shè)置管理員權(quán)限失敗}finally{ conn.close(); //關(guān)閉數(shù)據(jù)庫(kù)連接}returnfalg;}刪除管理員的實(shí)現(xiàn)過程管理員登錄后,選擇“系統(tǒng)設(shè)置/管理員設(shè)置”命令,進(jìn)入到査看管理員列表頁(yè)面,在該頁(yè)面中,單擊指定管理員信息后面的“刪除”超鏈接,該管理員及其權(quán)限信息將被刪除。在査看管理員列表頁(yè)面中,添加以下用于刪除管理員信息的超鏈接代碼:<ahref="manager.do?action=managerDel&id=<%=ID%>">刪除</a>從上面的URL地址中,可以知道刪除管理員頁(yè)所涉及的action的參數(shù)值為managerDel,當(dāng)action=managerDel時(shí),會(huì)調(diào)用刪除管理員的方法managerDel(),具體代碼如下:if("managerDel".equals(action)){ managerDel(request,response);}在刪除管理員的方法managerDel()中,首先需要實(shí)例化ManagerForm類,并用獲得的ID參數(shù)的值重新設(shè)置該類的setld()方法,再調(diào)用ManagerDAO類中的delete()方法,刪除指定的管理員,并根據(jù)執(zhí)行結(jié)果將頁(yè)面轉(zhuǎn)到相應(yīng)頁(yè)面。刪除管理員的方法managerDel()的具體代碼如下: privateActionForwardmanagerDel(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{ ManagerFormmanagerForm=newManagerForm() managerForm.setId(Integer.valueOf(request.getParameter("id"))); //獲取并設(shè)置管理員ID號(hào) intret=managerDAO.delete(managerForm); //調(diào)用刪除信息的方法delete() if(ret==0){ request.setAttribute("error","刪除管理員信息失敗!"); //保存錯(cuò)誤提示信息到error參數(shù)中 request.getRequestDispatcher("error.jsp").forward(request,response); //轉(zhuǎn)到錯(cuò)誤提示頁(yè)面 }else{ request.getRequestDispatcher("manager_ok.jsp?para=3").forward(request,response); //轉(zhuǎn)到刪除管理員信息成功頁(yè)面 } }從managerDel()方法中可以知道刪除管理員使用的ManagerDAO類的方法是delete()。在delete()方法中,首先將管理員信息表tb_manager中符合條件的數(shù)據(jù)刪除,再將權(quán)限表tb_purview中的符合條件的數(shù)據(jù)刪除,最后返回執(zhí)行結(jié)果。delete()方法的具體代碼如下:publicintdelete(ManagerFormmanagerForm){ intflag=0; try{ //捕捉異常信息Stringsql="DELETEFROMtb_managerwhereid="+managerForm.getId()+"";flag=conn.executeUpdate(sql); //執(zhí)行刪除管理員信息的語(yǔ)句if(flag!=0){Stringsql1="DELETEFROMtb_purviewwhereid="+managerForm.getId()+"";conn.executeUpdate(sql1); //執(zhí)行刪除權(quán)限信息的語(yǔ)句}}catch(Exceptione){ System.out.println("刪除管理員信息時(shí)產(chǎn)生的錯(cuò)誤:"+e.getMessage()); //輸出錯(cuò)誤信息}finally{ conn.close(); //關(guān)閉數(shù)據(jù)庫(kù)連接}returnflag;}}至此就完成了管理員模塊中的添加管理員信息、管理員權(quán)限設(shè)置和管理員刪除。主界面UI系統(tǒng)主界面是登陸系統(tǒng)后第一個(gè)頁(yè)面,主要包括Banner信息欄、導(dǎo)航欄、排行榜和版權(quán)信息4部分。Banner信息欄用來放Logo信息和顯示目前登陸的管理員名稱(如圖5-4中“歡迎您!admin”),下部放置了滾動(dòng)條用來顯示近三天的天氣信息,實(shí)時(shí)獲取最新的天氣資訊。圖5-4主界面Banner信息欄導(dǎo)航欄在Banner信息欄下方,左側(cè)顯示的是當(dāng)前日期時(shí)間,右側(cè)分別為“首頁(yè)”、“系統(tǒng)設(shè)置”、“讀者管理”、“圖書管理”、“圖書借還”、“系統(tǒng)查詢”、“更改口令”、“突出系統(tǒng)”8個(gè)導(dǎo)航按鈕,分別對(duì)應(yīng)系統(tǒng)的不同功能。圖5-5主界面導(dǎo)航欄在導(dǎo)航欄下方就是圖書館借閱排行榜,在此顯示的是整個(gè)圖書館借閱量的排行情況,如圖5-6所示。圖5-6主頁(yè)面圖書館借閱排行榜在主頁(yè)面最下面就是版權(quán)信息部分,這是每個(gè)網(wǎng)站必須的。由于本網(wǎng)站還沒有部署在網(wǎng)絡(luò)上,并沒有備案信息。圖5-7主頁(yè)面版權(quán)信息主頁(yè)面的具體代碼將附在附錄中。

設(shè)計(jì)結(jié)論本系統(tǒng)主要使用JSP進(jìn)行網(wǎng)頁(yè)界面的設(shè)計(jì),采用Servlet和JavaBean進(jìn)行開發(fā)而成的,數(shù)據(jù)庫(kù)則是通過MySQL建立的。開始設(shè)計(jì)系統(tǒng)時(shí),主要是定義數(shù)據(jù)庫(kù),并初始化其中的數(shù)據(jù)。這項(xiàng)工作的技術(shù)性并不強(qiáng),只是簡(jiǎn)單的輸入各種數(shù)據(jù)。到了數(shù)據(jù)庫(kù)設(shè)計(jì)完成,進(jìn)入網(wǎng)絡(luò)頁(yè)面編程的時(shí)候,才是最為耗費(fèi)時(shí)間的工作。在這過程中,碰到的問題大都是語(yǔ)法問題,還有少部分則出現(xiàn)在與數(shù)據(jù)庫(kù)的連接訪問過程之中。比如數(shù)據(jù)庫(kù)在使用時(shí)更改了存放路徑,導(dǎo)致通過網(wǎng)頁(yè)無法正常訪問其中的數(shù)據(jù),這時(shí)只有在網(wǎng)頁(yè)代碼中對(duì)指定路徑的語(yǔ)句做出相應(yīng)的修改,才能使其正常訪問;還有就是使用SQL語(yǔ)句問題,雖然可以正常工作,但是存在一定的安全隱患,必須修改代碼來防范這個(gè)問題。在系統(tǒng)設(shè)計(jì)過程中,我得到了指導(dǎo)老師的細(xì)心指導(dǎo)和其他同學(xué)的熱心幫助,他們使我的開發(fā)進(jìn)度沒有出現(xiàn)停滯,讓我少走了不少?gòu)澛?。這也使我明白了一個(gè)道理,沒有人可以事無巨細(xì),全部做到?jīng)]有遺漏,總有些你能力無法企及的地方。相互交流才是解決這些問題的最佳方法。通過這次的畢業(yè)設(shè)計(jì),不僅提高了我解決問題的能力,更是鍛煉了我自己動(dòng)手編程能力,為我今后的發(fā)展提供了寶貴的實(shí)踐經(jīng)驗(yàn)。整個(gè)系統(tǒng)使用JSP技術(shù)來完成,在系統(tǒng)設(shè)計(jì)的時(shí)候合理的設(shè)計(jì)數(shù)據(jù)庫(kù)是系統(tǒng)的關(guān)鍵。還有就是在整個(gè)系統(tǒng)的設(shè)計(jì)過程中盡量使用英語(yǔ),避免大量使用中文來標(biāo)識(shí)文件名和變量名,這樣降低了系統(tǒng)程序的執(zhí)行效率。而且更可怕的是有些中文標(biāo)識(shí)和中文參數(shù)計(jì)算機(jī)并不認(rèn)識(shí)形成了亂碼,出現(xiàn)了許多致命的錯(cuò)誤了系統(tǒng)運(yùn)行異常??偟膩碚f,這次畢業(yè)設(shè)計(jì)起到了很大的效果,它是對(duì)我們整個(gè)大學(xué)生涯中所學(xué)到的知識(shí)的一次檢查,也對(duì)我們將來從事的工作有了一個(gè)新的認(rèn)識(shí)。我覺得設(shè)計(jì)得出的結(jié)果并不重要,最重要的是總結(jié)出來的經(jīng)驗(yàn)以及在制作過程中所學(xué)會(huì)的知識(shí)積累了很多相關(guān)的經(jīng)驗(yàn),增強(qiáng)了解決問題的能力。在以前的jsp學(xué)習(xí)中只是了解了很少一部分知識(shí)而已,這門技術(shù)是博大精深的,在此期間查閱了很多相關(guān)資料,了解到了更多的更加實(shí)用的知識(shí)。意識(shí)到了后臺(tái)數(shù)據(jù)庫(kù)sql的重要性,對(duì)jsp方面的編程思想有了進(jìn)一步的體會(huì)。由于時(shí)間有限所以本系統(tǒng)還有很多地方考慮的還不夠周全,有許多需要改進(jìn)的地方,所以在以后還要在jsp結(jié)合數(shù)據(jù)庫(kù)的開發(fā)上做更多的東西,把兩者更好的聯(lián)系在一起,其次就是對(duì)頁(yè)面的布局要更加清晰,更加符合習(xí)慣。由于作者的理論水平和時(shí)間有限,對(duì)于圖書館管理系統(tǒng)平臺(tái)的研發(fā)只是初步的探索與實(shí)踐,本論文所涉及項(xiàng)目研發(fā)尚有很多不完善與不成熟之處,以下是未來需要進(jìn)一步改善的幾個(gè)方面:軟件工程實(shí)踐、編碼規(guī)范與質(zhì)量該項(xiàng)目開發(fā)過程中,嚴(yán)格遵循了項(xiàng)目開發(fā)的必要工作規(guī)范和流程。但是,與軟件公司的項(xiàng)目管理標(biāo)準(zhǔn)和規(guī)范相比,畢業(yè)設(shè)計(jì)過程中仍有許多改進(jìn)之處,如:參照CMMI標(biāo)準(zhǔn),開發(fā)過程中資料應(yīng)更齊備,應(yīng)該遵循更嚴(yán)格的職業(yè)規(guī)范,養(yǎng)成符合軟件公司要求的職業(yè)素質(zhì);編碼質(zhì)量需要提高,應(yīng)該嚴(yán)格遵守相關(guān)設(shè)計(jì)和編碼規(guī)范等。系統(tǒng)的進(jìn)一步完善該項(xiàng)目的實(shí)際功能需求是與時(shí)俱進(jìn)的,隨著實(shí)際圖書館管理模式的不斷更新和提高,圖書館管理平臺(tái)將會(huì)不斷產(chǎn)生新的需求,這從技術(shù)和數(shù)據(jù)庫(kù)維護(hù)上帶來了新的挑戰(zhàn),如數(shù)據(jù)安全性和功能性設(shè)計(jì)等,都將在不同的時(shí)期得到不同的新要求。

致謝有人說:大學(xué)是人生的一本教科書。當(dāng)我踏著輕盈的步伐進(jìn)入遼寧建筑職業(yè)學(xué)院時(shí),我有幸讀了這本“教科書”。轉(zhuǎn)眼間三年快過去了,回首來時(shí)路,我感謝遼寧建筑職業(yè)學(xué)院對(duì)我的辛苦培育,讓我在大學(xué)這三年來學(xué)到很東西,當(dāng)然我特別要感謝信息工程系為我提供了良好的學(xué)習(xí)環(huán)境、感謝領(lǐng)導(dǎo)、老師們?nèi)陙韺?duì)我無微不至的關(guān)懷和指導(dǎo),讓我一路盤點(diǎn)收獲與經(jīng)驗(yàn)。不知不覺,畢業(yè)設(shè)計(jì)已經(jīng)馬上就要完成了,它的完成離不開老師的培養(yǎng)和孜孜不倦的教導(dǎo),在此要深深感謝我的指導(dǎo)老師王娜,感謝她長(zhǎng)久以來在學(xué)習(xí)上的指導(dǎo)和教誨,感謝同組同學(xué)真摯的幫助。正是有了老師這種嚴(yán)謹(jǐn)?shù)闹螌W(xué)作風(fēng),實(shí)事求是的探索精神以及忘我的奉獻(xiàn)精神,她的這種認(rèn)真負(fù)責(zé)的態(tài)度給予我的不僅僅是感動(dòng),更是一種鞭策,思考,激勵(lì)。畢業(yè)設(shè)計(jì)的這段日子給我留下了美好而深刻的印象,給我增添了一段美好的回憶。順利完成畢業(yè)設(shè)計(jì)是一個(gè)艱苦的過程,它的運(yùn)行即為將我們平時(shí)所學(xué)投入到了實(shí)戰(zhàn)演練中。通過本次畢業(yè)設(shè)計(jì),我認(rèn)識(shí)到,任何一個(gè)出色的軟件產(chǎn)品,都包含著辛勤的汗水,都是參與開發(fā)者的心血造就的。同時(shí)我也認(rèn)識(shí)到,當(dāng)我走向社會(huì)、走上工作崗位的時(shí)候,我應(yīng)當(dāng)以怎樣的心理來準(zhǔn)備面對(duì)工作的艱苦,并從中實(shí)現(xiàn)自己的價(jià)值。最后,要感謝各位評(píng)閱及答辯老師在百忙之中抽出時(shí)間對(duì)論文進(jìn)行審閱并參加答辯。因本人水平有限,所以畢業(yè)設(shè)計(jì)中肯定存在不少錯(cuò)誤和不足之處,歡迎廣大老師和同學(xué)批評(píng)指正,在此深表感謝。

參考文獻(xiàn)BruceEckel,《Java編程思想》,機(jī)械工業(yè)出版社,2003年10月王珊,薩師煊,《數(shù)據(jù)庫(kù)系統(tǒng)概論》(第四版),高等教育出版社,2006年5月Stephens,《數(shù)據(jù)庫(kù)設(shè)計(jì)》,機(jī)械工業(yè)出版社,2009年10月唐有明,吳華等,《JSP動(dòng)態(tài)網(wǎng)站開發(fā)》,清華大學(xué)出版社,2006年8月姜旭平等,《信息系統(tǒng)開發(fā)方法》,清華大學(xué)出版社,1996年張桂珠等,《Java面向?qū)ο蟪绦蛟O(shè)計(jì)》,北京郵電大學(xué)出版社,2003年朱少民,《軟件測(cè)試方法和技術(shù)》,清華大學(xué)出版社,2005年許卓群,《數(shù)據(jù)結(jié)構(gòu)》(計(jì)算機(jī)應(yīng)用),中央廣播電視大學(xué)出版社,2006年賽奎春,《JSP工程應(yīng)用與項(xiàng)目實(shí)踐》,機(jī)械工業(yè)出版社,2002年8月孫衛(wèi)琴,《基于MVC的JAVAWEB.設(shè)計(jì)與開發(fā)》,北京電子工業(yè)出版社,2005年6佟偉光等,《軟件測(cè)試技術(shù)》,人民郵電出版社,2005年

附錄系統(tǒng)主要代碼:代碼位置:/tsgglxt/WebRoot/banner.jsp<%@pagecontentType="text/html;charset=gb2312"%><%@pageimport="com.core.ChStr"%><%ChStrchStr=newChStr();Stringmanager=(String)session.getAttribute("manager");//驗(yàn)證用戶是否登錄if(manager==null||"".equals(manager)){ response.sendRedirect("login.jsp");}%><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"><tablewidth="778"border="0"align="center"cellpadding="0"cellspacing="0"><tr><tdheight="118"valign="top"background="Images/top_bg.gif"bgcolor="#EEEEEE"><tablewidth="100%"height="33"border="0"cellpadding="0"cellspacing="0"><tr><tdwidth="81%"height="10"></td><tdcolspan="2"></td></tr><tr><tdheight="20"> </td><tdwidth="10%"><ahref="#"onClick="window.location.reload();"class="word_dark">刷新頁(yè)面</a></td><tdwidth="9%"><ahref="#"onClick="myclose()"class="word_dark">關(guān)閉系統(tǒng)</a></td> <scriptlanguage="javascript"> functionmyclose(){ if(confirm("真的要關(guān)閉當(dāng)前窗口嗎?")){ window.close(); } } </script></tr></table><tablewidth="93%"height="79"border="0"cellpadding="0"cellspacing="0"><tr><tdheight="69"align="right"valign="bottom">當(dāng)前登錄用戶:<%=chStr.toChinese(manager)%></td></tr></table></td></tr></table>代碼位置:/tsgglxt/WebRoot/main.jsp<%@pagecontentType="text/html;charset=gb2312"language="java"%><%@pageimport="com.dao.BorrowDAO"%><%@pageimport="com.actionForm.BorrowForm"%><%@pageimport="java.util.*"%><%%><html><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"><head><title>圖書館管理系統(tǒng)</title><linkhref="CSS/style.css"rel="stylesheet"></head><bodyonLoad="clockon(bgclock)"><%@includefile="banner.jsp"%><%@includefile="navigation.jsp"%><%BorrowDAOborrowDAO=newBorrowDAO();Collectioncoll_book=(Collection)borrowDAO.bookBorrowSort();%><tablewidth="778"height="510"border="0"align="center"cellpadding="0"cellspacing="0"bgcolor="#FFFFFF"class="tableBorder_gray"><tr><tdalign="center"valign="top"style="padding:5px;"><tablewidth="100%"border="0"cellpadding="0"cellspacing="0"><tr><tdheight="20"align="right"valign="middle"class="word_orange">當(dāng)前位置:首頁(yè)>>> </td></tr><tr><tdvalign="top"><tablewidth="100%"border="0"cellspacing="0"cellpadding="0"><tr><tdheight="57"background="Images/main_booksort.gif"> </td></tr><tr><tdheight="72"valign="top"><tablewidth="100%"height="63"bor

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論