JSP基于WEB的圖書館借閱系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)(源代碼+論文)
JSP基于WEB的圖書館借閱系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)(源代碼+論文),JSP,基于,WEB,圖書館,借閱,系統(tǒng),設(shè)計(jì),實(shí)現(xiàn),源代碼,論文
分類號(hào):TP311.1 U D C:D10621-408-(2007) 6014-0
密 級(jí):公 開 編 號(hào):2003215042
成都信息工程學(xué)院
學(xué)位論文
基于WEB的圖書館借閱系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
論文作者姓名:
歐翼
申請(qǐng)學(xué)位專業(yè):
網(wǎng)絡(luò)工程
申請(qǐng)學(xué)位類別:
工學(xué)學(xué)士
指導(dǎo)教師姓名(職稱):
楊上金(副研究員)
論文提交日期:
2007年06月10日
基于WEB的圖書館借閱系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
摘 要
隨著電腦、手機(jī)等信息工具的普及,人們能更加完善、快捷地處理信息數(shù)據(jù)。在圖書館的日常運(yùn)作中,由于圖書借閱和用戶查詢次數(shù)繁多,需要進(jìn)行繁雜的信息數(shù)據(jù)管理。
為了能更高效、快捷、穩(wěn)定地管理圖書館的數(shù)據(jù)信息,本文設(shè)計(jì)并實(shí)現(xiàn)了一套基于Web的圖書管理借閱系統(tǒng)。系統(tǒng)采用Browser/Server運(yùn)行模式,基于JAVA開發(fā)平臺(tái),并使用SQL Server作為后臺(tái)數(shù)據(jù)庫系統(tǒng)。系統(tǒng)主要實(shí)現(xiàn)了以下幾個(gè)功能:查詢圖書、借還圖書、圖書管理、讀者信息管理,讀者留言、公告欄等。讀者只需要通過瀏覽器訪問本系統(tǒng),就可以輕松實(shí)現(xiàn)圖書查詢、圖書借還等操作。同樣,圖書管理員也可以使用本系統(tǒng)方便快捷地完成圖書館的信息數(shù)據(jù)管理工作。另外,由于手機(jī)使用的普及,本系統(tǒng)中還新加入了WAP查詢功能,借助于無線網(wǎng)絡(luò),讀者可以通過使用手機(jī),更加方便、快捷地完成圖書查詢的工作,這為讀者帶來了更多便捷。
關(guān)鍵詞:圖書管理系統(tǒng);WAP;JSP
Design and Implementation of Library Management System Based on WEB
Abstract
With the information tools becoming so popular, such as computer and cell phone etc, people can handle the information data more perfectly and rapidly. In the daily library operation, as book-borrowed and the ones searched being so frequently, the library has to deal with a great many complicated data.
For the data management more efficiently, fast and reliably, the thesis designs and implements a library management system which is based on Web. On the Java platform, the system adopts the Browser/Server model, which takes SQL Server as a database server. The system mainly carry out the following functions: searching for borrowing and returning, book management, reader information management, reads’ messages, and the library bulletin. While the readers interview the system through the browser, they can easily search for a book or borrow and return a book etc. Simultaneously, the assistant is able to control the library information datum. In addition, the system is still added a searching function based WAP, by which the readers can search for a book more conveniently and rapidly, by means of wireless network. Such a function brings the readers a great deal convenience.
Key words: Library Management System; WAP; JSP
目 錄
論文總頁數(shù):22頁
1 引 言 1
1.1 課題背景 1
1.2 課題研究意義 1
2 需求分析 1
2.1 應(yīng)用需求分析 1
2.2 設(shè)計(jì)模式 2
2.3 開發(fā)環(huán)境 3
2.4 開發(fā)工具 3
3 系統(tǒng)總體設(shè)計(jì) 4
3.1 系統(tǒng)概要 4
3.2 功能模塊構(gòu)成 5
3.3 功能流程圖 5
3.3.1 查詢功能流程圖 5
3.3.2 借還圖書功能流程圖 6
3.4 數(shù)據(jù)庫設(shè)計(jì) 6
3.4.1 數(shù)據(jù)庫概要 6
3.4.2 數(shù)據(jù)庫邏輯設(shè)計(jì) 6
3.4.3 數(shù)據(jù)庫之間關(guān)聯(lián)設(shè)計(jì) 8
4 系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn) 9
4.1 發(fā)布首頁公告功能模塊 11
4.2 留言板功能模塊 12
4.2.1 發(fā)布留言模塊 13
4.2.2 回復(fù)留言模塊 14
4.3 系統(tǒng)管理員登錄功能模塊 14
4.4 圖書查詢功能模塊 15
4.4.1 前臺(tái)圖書查詢 15
4.4.2 后臺(tái)所有圖書查詢 16
4.4.3 WAP查詢 17
4.5 其余功能模塊 18
5 測(cè)試 19
結(jié) 論 19
參考文獻(xiàn) 20
致 謝 21
聲 明 22
1 引 言
1.1 課題背景
當(dāng)今時(shí)代是飛速發(fā)展的信息時(shí)代,計(jì)算機(jī)與信息處理技術(shù)日漸成熟。隨著Internet和計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的蓬勃發(fā)展,Web技術(shù)得到了迅猛地發(fā)展。在科學(xué)技術(shù)高速發(fā)展的今天,信息技術(shù)已經(jīng)滲透到社會(huì)發(fā)展的每一個(gè)領(lǐng)域,而計(jì)算機(jī)技術(shù)為工作提供了方便性、高效性、靈活性及安全性,尤其Web技術(shù)的高速發(fā)展將計(jì)算機(jī)的應(yīng)用提升到另一個(gè)層次。而圖書館作為一種信息資源的集散地,圖書和用戶借閱資料繁多,包含很多的信息數(shù)據(jù)的管理,利用計(jì)算機(jī)來管理復(fù)雜的信息,能夠充分發(fā)揮計(jì)算機(jī)的優(yōu)越性。
1.2 課題研究意義
盡管有的圖書館有圖書管理系統(tǒng),但是僅僅限于圖書管理員使用,屬于單機(jī)系統(tǒng),對(duì)于Internet服務(wù)幾乎沒有,更不用說是WAP等服務(wù)。這樣的圖書管理系統(tǒng)根本沒有發(fā)揮它的效力,資源閑置比較突出。
基于這此問題,有必要建立一個(gè)圖書管理系統(tǒng)有效的支持WEB和WAP的服務(wù),以使圖書管理工作規(guī)范化,系統(tǒng)化,程序化,提高信息處理的速度和準(zhǔn)確性,并且能通過Internet能夠及時(shí)、準(zhǔn)確修改圖書情況。
本系統(tǒng)的設(shè)計(jì)主要有效的支持WEB訪問和WAP訪問,使得資源利用最大化用戶只需要通過瀏覽器或者手機(jī)WAP訪問就可以實(shí)現(xiàn)操作,操作簡(jiǎn)單靈活。
2 需求分析
2.1 應(yīng)用需求分析
圖書管理系統(tǒng)需要滿足來自兩方面的需求,分別是圖書借閱者和圖書館工作人員。圖書借閱者的需求是查詢圖書館所存的圖書;圖書館工作人員對(duì)圖書借閱者的借閱及還書要求進(jìn)行操作,同時(shí)形成借書或還書操作,有修改圖書借閱者借書和還書記錄的權(quán)限,實(shí)現(xiàn)對(duì)圖書信息、借閱者信息、總體借閱情況信息的管理和統(tǒng)計(jì)、工作人員和管理人員信息查看及維護(hù)。圖書館管理員可以瀏覽、查詢、添加、刪除、修改、統(tǒng)計(jì)圖書的基本信息;瀏覽、查詢、統(tǒng)計(jì)、添加、刪除和修改圖書借閱者的基本信息,瀏覽、查詢、統(tǒng)計(jì)圖書館的借閱信息,發(fā)布公告,回復(fù)留言,以下就是本系統(tǒng)實(shí)現(xiàn)的功能。
1.設(shè)計(jì)不同用戶的操作權(quán)限和登陸方法
2.對(duì)所有用戶開放的圖書查詢
3.查詢及統(tǒng)計(jì)各種信息
4.維護(hù)圖書信息
5.維護(hù)工作人員和管理員信息
6.維護(hù)借閱者信息
7.處理信息的完整性
8.實(shí)現(xiàn)WAP手機(jī)網(wǎng)上圖書查詢
2.2 設(shè)計(jì)模式
設(shè)計(jì)模式是面向?qū)ο蟮某绦蛟O(shè)計(jì)人員用來解決編程問題的一種形式化表示。本系統(tǒng)開發(fā)采用目前一種目前廣泛流行的軟件設(shè)計(jì)模式MVC。MVC(Model-View - Controller)應(yīng)用程序結(jié)構(gòu)被用來分析分布式應(yīng)用程序的特征。這種抽象結(jié)構(gòu)能有助于將應(yīng)用程序分割成若干邏輯部件,使程序設(shè)計(jì)變得更加容易。把一個(gè)應(yīng)用的輸入、處理、輸出流程按照Model、View、Controller的方式進(jìn)行分離,這樣一個(gè)應(yīng)用被分成三個(gè)層——模型層、視圖層、控制層。
圖1 MVC模式
MVC模式的出現(xiàn),很好的解決了傳統(tǒng)開發(fā)WEB應(yīng)用方式中存在的問題。M代表模型(Model),包含完成任務(wù)所需要的所有的行為和數(shù)據(jù);V代表視圖(View)界面,顯示模型提供的數(shù)據(jù);C代表控制器(Controller),它將模型映射到界面中,處理用戶的輸入并響應(yīng)請(qǐng)求。其模型關(guān)系如圖所示。在MVC模式中,三層各盡其職、相對(duì)獨(dú)立,各層內(nèi)部的改變不會(huì)影響到其它層,從而降低了數(shù)據(jù)表達(dá)、數(shù)據(jù)描述和應(yīng)用操作的耦合度,也能更好的實(shí)現(xiàn)開發(fā)中的分工,加快工程進(jìn)度。
2.3 開發(fā)環(huán)境
表1 開發(fā)環(huán)境
種別
軟件
版本
OS
Windows
2000
DB
My-sql
WebServer
JDK
1.4.0
Tomcat
4.0.6
瀏覽器
Internet Explorer
6.0以上
MySQL:
MySQL是一個(gè)多用戶、多線程的SQL數(shù)據(jù)庫,是一個(gè)客戶機(jī)/服務(wù)器結(jié)構(gòu)的應(yīng)用,它由一個(gè)服務(wù)器守護(hù)程序mysqld和很多不同的客戶程序和庫組成。MySQL的快速和靈活性足以滿足一個(gè)網(wǎng)站的信息管理工作。 因?yàn)樵S可證的靈活,任何人都可以以任何目的免費(fèi)使用,修改,和分發(fā) PostgreSQL,不管是私用,商用,還是學(xué)術(shù)研究使用。命令執(zhí)行速度快,也許是現(xiàn)今最快的;簡(jiǎn)單有效的用戶特權(quán)系統(tǒng)。MySQL使用完全免費(fèi),使得其運(yùn)用范圍更加廣泛。
TOMCAT:
Tomcat服務(wù)器是Apache Group Jakarta小組開發(fā)的一個(gè)免費(fèi)服務(wù)器軟件,適合于嵌入Apache中使用,而且,它的源代碼可以免費(fèi)獲得,你可以自由地對(duì)它進(jìn)行擴(kuò)充。Tomcat服務(wù)器的兼容性很好,如WebLogic服務(wù)器采用其為Web服務(wù)器引擎,Jbuilder將其作為標(biāo)準(zhǔn)的測(cè)試服務(wù)器,Sun公司也將其作為JSP技術(shù)應(yīng)用的示例服務(wù)器。但是Tomcat服務(wù)器有眾多大軟件公司的支持,而且服務(wù)器的性能穩(wěn)定,其發(fā)展前景很好。
2.4 開發(fā)工具
Eclipse是一個(gè)非常優(yōu)秀的集成開發(fā)環(huán)境,它旨在簡(jiǎn)化用于多操作系統(tǒng)軟件工具的開發(fā)過程,可以用于管理多種開發(fā)任務(wù),其中包括測(cè)試、性能調(diào)整以及程序調(diào)試等,而且還可以集成來自多個(gè)供應(yīng)商的第三方應(yīng)用程序開發(fā)工具。通過集成大量的插件,Eclipse的功能可以不斷擴(kuò)展,以支持各種不同的應(yīng)用。
Eclipse平臺(tái)是一個(gè)成熟的、精心設(shè)計(jì)的、可擴(kuò)展的體系結(jié)構(gòu),其組成結(jié)構(gòu)如圖所示用 Eclipse開發(fā)的插件,可以適應(yīng)多平臺(tái)的需要 , 且具有良好的可擴(kuò)展性和靈活性。
Eclipse 是一個(gè)開放源代碼的、基于 Java 的可擴(kuò)展開發(fā)平臺(tái)。就其本身而言,它只是一個(gè)框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。幸運(yùn)的是,Eclipse 附帶了一個(gè)標(biāo)準(zhǔn)的插件集,包括 Java 開發(fā)工具(Java Development Tools,JDT)。
雖然大多數(shù)用戶很樂于將 Eclipse 當(dāng)作 Java IDE 來使用,但 Eclipse 的目標(biāo)不僅限于此。Eclipse 還包括插件開發(fā)環(huán)境(Plug-in Development Enviro nment,PDE),這個(gè)組件主要針對(duì)希望擴(kuò)展 Eclipse 的軟件開發(fā)人員,因?yàn)樗试S他們構(gòu)建與 Eclipse 環(huán)境無縫集成的工具。由于 Eclipse 中的每樣?xùn)|西都是插件,對(duì)于給 Eclipse 提供插件,以及給用戶提供一致和統(tǒng)一的集成開發(fā)環(huán)境而言,所有工具開發(fā)人員都具有同等的發(fā)揮場(chǎng)所。
3 系統(tǒng)總體設(shè)計(jì)
3.1 系統(tǒng)概要
本圖書管理系統(tǒng)總體上分為前臺(tái)頁面顯示和后臺(tái)管理。前臺(tái)頁面(即本書圖書管理系統(tǒng)的首頁)實(shí)現(xiàn)了公告的顯示圖書查詢,留言建議三大功能。而后臺(tái)的頁面則集成了圖書管理中所需的功能和錄入新書到庫,辦公圖書,借還手續(xù),查詢圖書等等。平時(shí)圖書管理人員的工作都是在后臺(tái)中完成的。前臺(tái)是為了師生顯示的。師生們可以看到圖書管理人員發(fā)布的最新公告信息;并可以查詢自己感興趣的圖書,也可以給學(xué)校的圖書管理人員留言提議。相對(duì)應(yīng)的后臺(tái)是針對(duì)學(xué)校圖書管理人員,后臺(tái)的頁面都加密,如果不正常登錄是進(jìn)入不了后臺(tái)管理頁面的,后臺(tái)功能具體包括:發(fā)布首頁公告,添加新書到庫等等。
3.2 功能模塊構(gòu)成
圖2 功能結(jié)構(gòu)圖
3.3 功能流程圖
3.3.1 查詢功能流程圖
WEB頁面前臺(tái)查詢界面
接收查詢條件,從數(shù)據(jù)庫查詢匹配信息
返回結(jié)果,在WEB頁面顯示
提交查詢條件
WAP查詢界面
接收查詢條件,從數(shù)據(jù)庫查詢匹配信息
返回結(jié)果,在WAP頁面顯示
提交查詢條件
圖3 基于WEB和WAP的查詢流程圖
3.3.2 借還圖書功能流程圖
圖4 借還書流程圖
3.4 數(shù)據(jù)庫設(shè)計(jì)
3.4.1 數(shù)據(jù)庫概要
考慮該系統(tǒng)的定位與現(xiàn)有技術(shù)力量,系統(tǒng)采用MY-SQL作為系統(tǒng)的后臺(tái)數(shù)據(jù)庫開發(fā)環(huán)境,數(shù)據(jù)庫命名標(biāo)準(zhǔn)與規(guī)范均采用英文單詞標(biāo)寫,以便日后對(duì)其維護(hù)修改.
3.4.2 數(shù)據(jù)庫邏輯設(shè)計(jì)
表2所示為管理員表(admin),記錄了系統(tǒng)用戶的角色和密碼,判斷是否允許其登錄管理員界面。
表2 admin數(shù)據(jù)庫
列名
數(shù)據(jù)類型
長(zhǎng)度
id(PK)
Int
11
Username
Varchar
20
Password
Varchar
20
表3所示為留言信息表(guestbook),記錄了游客用戶姓名,發(fā)表的留言信息,發(fā)表時(shí)間和管理員回復(fù)信息,其作用就是實(shí)現(xiàn)留言板功能。
表3 guest數(shù)據(jù)庫
列名
數(shù)據(jù)類型
長(zhǎng)度
id(PK)
Int
11
Nickname
Varchar
50
Content
Mediumtext
NO
Yourtime
Datatime
NO
Reply
Varchar
50
表4所示為首頁公告表(notice),記錄了發(fā)布信息和發(fā)布時(shí)間,其作用就是支持公告欄的功能實(shí)現(xiàn)。
表4 notice數(shù)據(jù)庫
列名
數(shù)據(jù)類型
長(zhǎng)度
id(PK)
Int
11
Content
Mediumtext
NO
Createtime
Datatime
NO
表5所示為圖書信息表(book),記錄了圖書書名,書號(hào),圖書類型,總量。其作用就是保存錄入到庫的圖書資料,以便借閱和查詢。
表5 book數(shù)據(jù)庫
列名
數(shù)據(jù)類型
長(zhǎng)度
Id
Int
11
Title
Varchar
100
bookID(PK)
Varchar
40
Type
Varchar
40
Quantity
Int
11
表6所示為用戶借閱圖書信息表(borrowbook),記錄了借閱證號(hào),借書開始日期,結(jié)束日期,書號(hào)。實(shí)現(xiàn)本系統(tǒng)核心功能-借書,還書的數(shù)據(jù)庫應(yīng)用。
表6 borrowbook數(shù)據(jù)庫
列名
數(shù)據(jù)類型
長(zhǎng)度
Id(PK)
Int
11
BorrowID
Varchar
20
BeginTime
Datetime
NO
EndTime
Datetime
NO
BookID
Int
40
表7所示為借書證用戶信息表(user),記錄了借書人姓名,性別,年齡,所在院系和所借書的書號(hào)。實(shí)現(xiàn)其程序主體的數(shù)據(jù)庫調(diào)用。
表7 uesr數(shù)據(jù)庫
列名
數(shù)據(jù)類型
長(zhǎng)度
Id(PK)
Int
11
Name
Varchar
20
Sex
Char
2
Age
Int
11
Department
Varchar
20
BorrowID
Varchar
20
3.4.3 數(shù)據(jù)庫之間關(guān)聯(lián)設(shè)計(jì)
這個(gè)圖書管理系統(tǒng)是基于MySQL設(shè)計(jì)的,然后通過在JSP中向數(shù)據(jù)庫發(fā)送相應(yīng)的SQL指令,從而實(shí)現(xiàn)對(duì)圖書的全面管理..對(duì)于數(shù)據(jù)庫設(shè)計(jì)這一流程中,最重要的一步是對(duì)user表、book表、borrowBook表三張表的設(shè)計(jì)以及它們之間的關(guān)系.這是這個(gè)圖書管理系統(tǒng)中的一個(gè)關(guān)鍵技術(shù),以下就是數(shù)據(jù)庫關(guān)聯(lián)圖
圖5數(shù)據(jù)庫關(guān)系
4 系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)
JavaBean技術(shù)是一種基于Java的組件技術(shù),JavaBean組件可以用來執(zhí)行復(fù)雜的計(jì)算任務(wù),或負(fù)責(zé)與數(shù)據(jù)庫的交互以及數(shù)據(jù)的提取等,是解決代碼重用問題的一種策略。
為了創(chuàng)建和使用Java軟件組件,JavaBean被實(shí)現(xiàn)為一種獨(dú)立于平臺(tái)和結(jié)構(gòu)的應(yīng)用程序接口,它的實(shí)現(xiàn)可以忽略內(nèi)部的結(jié)構(gòu)及細(xì)節(jié)問題,只需要定義其外部的特征及對(duì)外功能就行。其中,屬性、方法和事件三種接口可以獨(dú)立對(duì)外進(jìn)行開發(fā)。
JavaBean的實(shí)質(zhì)就是一個(gè).class文件,也可以成為類文件。JavaBean以binary格式保存,可以保護(hù)Java源代碼不容易被他人抄襲。
下面是本系統(tǒng)中主要的JavaBean。
select函數(shù)功能:查詢數(shù)據(jù)
public int select(String sql){ int k=-10;
this.init(this.getConn());
try
{
k=0;
rs=stmt.executeQuery(sql);
if (rs.next())
{
k=k+1;
}
}
catch (Exception e)
{
k=-1;
System.out.println("select():"+e.getMessage());
this.close();
}
this.close();
return k;
}
update函數(shù)功能:更新\刪除\插入 數(shù)據(jù)
public int update(String sql){
int k=-10;
this.init(this.getConn());
try
{
k=0;
k=stmt.executeUpdate(sql);
}
catch (Exception e)
{
k=-1;
System.out.println("update():"+e.getMessage());
}
this.close();
return k;
}
chStr函數(shù)功能:解決亂碼
Java的內(nèi)核和class文件是基于unicode的,這使Java程序具有良好的跨平臺(tái)性,但也帶來了一些中文亂碼問題的麻煩。原因主要有兩方面,Java文件本身編譯時(shí)產(chǎn)生的亂碼問題和Java程序與其他媒介交互產(chǎn)生的亂碼問題。JSP以Java為基礎(chǔ),自然也繼承了Java所遇到的中文亂碼問題。
但在使用數(shù)據(jù)庫時(shí),有些Driver會(huì)將從數(shù)據(jù)庫中讀出的中文自動(dòng)的轉(zhuǎn)換成Unicode,而有些不會(huì),如果Driver做過轉(zhuǎn)換而系統(tǒng)又再做一次,就會(huì)出現(xiàn)問題,從數(shù)據(jù)庫中讀出的中文字符不會(huì)正確顯示,而是出現(xiàn)“??”。
而且,在表單提交或是URL傳參數(shù)值時(shí)依然是按照Web容器在內(nèi)部默認(rèn)的字符編碼格式ISO 8859-1來進(jìn)行處理的。同時(shí),幾乎所有的瀏覽器在傳遞參數(shù)時(shí)都是默認(rèn)以UTF-8的方式來傳遞參數(shù)的。所以,雖然在java源文件在出入口的地方指定了正確的編碼方式,但其在容器內(nèi)部運(yùn)行是還是以ISO 8859-1來處理的,這樣導(dǎo)致在提交的表單中若有中文字符,在存入數(shù)據(jù)庫時(shí)使用的是ISO 8859-1,而本系統(tǒng)使用的My SQL數(shù)據(jù)庫默認(rèn)使用的是GBK編碼,這樣導(dǎo)致的結(jié)果就是存到數(shù)據(jù)庫的數(shù)據(jù)因編碼不同而出現(xiàn)亂碼現(xiàn)象 。
調(diào)用字符編碼轉(zhuǎn)換Bean中的方法,對(duì)字符編碼進(jìn)行強(qiáng)制轉(zhuǎn)換,使存放到數(shù)據(jù)庫的數(shù)據(jù)編碼格式與數(shù)據(jù)庫的內(nèi)部編碼格式統(tǒng)一,解決了向數(shù)據(jù)庫中插入中文字符、將從數(shù)據(jù)庫中讀取的數(shù)據(jù)正確的顯示的問題,所以做了一個(gè)方法放在bean里面,代碼如下
public String chStr(String str){
try
{
byte[] temp=str.getBytes("ISO8859-1");
String temp2=new String(temp);
return temp2;
}catch(Exception e){System.out.println("chStr():"+e.getMessage());}
return "null";
}
4.1 發(fā)布首頁公告功能模塊
圖6首頁發(fā)布功能界面
在后臺(tái)管理中能自由發(fā)布首頁公告信息,來通知各種事情,其條目以滾動(dòng)的形式來表現(xiàn)。
該功能的實(shí)現(xiàn)由admin_addnotice.jsp和admin_addnotice_post.jsp文件實(shí)現(xiàn)。
在admin_addnotice.jsp中主要是發(fā)布界面的編寫和傳輸notice內(nèi)容,本功能的核心程序放在admin_addnotice_post.jsp中,負(fù)責(zé)存儲(chǔ)內(nèi)容到數(shù)據(jù)庫和錯(cuò)誤提示。
在admin_addnotice_post.jsp中關(guān)鍵代碼如下:
//從request獲取名為"content"的參數(shù)值
String content=request.getParameter("content");
//解決中文亂碼問題
String tcontent=addbook.chStr(content);
//合成SQL語句,將content的值傳入,作用為更新公告表
String sql="update notice set content='"+content+"',createtime=DEFAULT where id=1";
//申明一個(gè)int的變量temp
int temp=-2;
//如SQL執(zhí)行成功,temp>0,否則執(zhí)行失敗
temp=notice.update(sql);
4.2 留言板功能模塊
留言板功能模塊分為發(fā)布模塊和回復(fù)模塊。發(fā)布模塊在前臺(tái)完成,可以讓任何人留言,而回復(fù)模塊在后臺(tái)使用只允許管理員查看回復(fù)。
4.2.1 發(fā)布留言模塊
圖7 發(fā)布留言界面
本功能所有文件放在guest目錄下面,包含了guestbook_index.jsp,guestbook_postmessage.jsp,guestbook_save.jsp,guestbook_show.jsp,guestbook_viewmessage.jsp這5個(gè)文件,分別實(shí)現(xiàn)了留言板各個(gè)功能。
其主要代碼在guestbook_postmessage.jsp中.
//從request獲取名為"username"的參數(shù)值
String username=request.getParameter("username");
//從request獲取名為"content"的參數(shù)值
String content=request.getParameter("content");
//合成SQL語句,將username,content的值傳入nickname,content表中,作用為將留言板內(nèi)容放入數(shù)據(jù)庫中
String.sql="insert into guestbook (nickname,content) values('"+username+"','"+content+"')";
//判斷語句,如果username為空或者錯(cuò)誤,content為空或者錯(cuò)誤的時(shí)候。
if(username==null||username.equals("")||content==null||content.equals(""))
{
else{
int temp=-2;
//如SQL執(zhí)行成功,temp>0,否則執(zhí)行失敗
temp=guestbook.update(sql);
%>
//返回錯(cuò)誤信息errorpage.jsp,顯示“請(qǐng)檢查你的輸入.請(qǐng)確保你輸入的信息的正確性!”錯(cuò)誤信息文字以提示。
else{
session.setAttribute("error","請(qǐng)檢查你的輸入.請(qǐng)確保你輸入的信息的正確性!");
response.sendRedirect("../errorpage.jsp");
} }
%>
4.2.2 回復(fù)留言模塊
本功能主要是用于回復(fù)留言,由admin_guestbook_reply.jsp實(shí)現(xiàn).其實(shí)現(xiàn)方法與前面類似,不在累述。
4.3 系統(tǒng)管理員登錄功能模塊
圖8 管理員登錄界面
本功能涉及到圖書管理操作的jsp文件,為了方便全部把它們放在admin目錄里面,并且通過session防止非法登錄.把這個(gè)功能提取出來,單獨(dú)作為一個(gè)jsp文件,然后include到需要加密的jsp文件頭部.這樣如果非法用戶直接提交后臺(tái)URL,系統(tǒng)會(huì)將非法用戶直接轉(zhuǎn)到前臺(tái)首頁
本功能由admin_login.jsp和admin_logincheck.jsp實(shí)現(xiàn)
其主要代碼是在admin_logincheck.jsp中,如下
<%
//從request獲取名為"username"的參數(shù)值
String username=request.getParameter("username");
//從request獲取名為"password"的參數(shù)值
String password=request.getParameter("password");
//如果username為空或者錯(cuò)誤,以及password為空或者錯(cuò)誤。
if(username==null||username.equals("")||password==null||password.equals(""))
else{
//將username賦值到tusername,password賦值到tpassword
String tusername=logincheck.chStr(username);
String tpassword=logincheck.chStr(password);
//搜索數(shù)據(jù)庫中tusername和其對(duì)應(yīng)的tpassword字段。
String sql="select * from admin where username='"+tusername+"' and password='"+tpassword+"'";
int temp=-2;
temp=logincheck.select(sql);
if(temp>0){
//表明驗(yàn)證成功,進(jìn)入admin_index.jsp,并將用戶定格為登錄用戶。
session.setAttribute("name",tusername);
response.sendRedirect("admin_index.jsp");
}else{
//驗(yàn)證失敗,返回錯(cuò)誤提示信息,并返回errorpage.jsp頁面。
session.setAttribute("error","請(qǐng)檢查你的用戶名和密碼!");
response.sendRedirect("../errorpage.jsp");
}}
%>
4.4 圖書查詢功能模塊
在前臺(tái)允許所有用戶對(duì)圖書館里面的書籍進(jìn)行查詢,返回內(nèi)容包含書名,編號(hào),分類和庫存幾個(gè)方面。
總的來說該功能是本系統(tǒng)最重要的核心功能之一。
4.4.1 前臺(tái)圖書查詢
圖9Web圖書查詢界面
圖10 查詢結(jié)果界面
圖9為前臺(tái)查詢界面,圖10為顯示界面主要是實(shí)現(xiàn)對(duì)圖書的查詢,內(nèi)容包括書名,圖書編號(hào),分類,庫存量。
分別由searchbook.jsp和實(shí)現(xiàn)
其主要代碼在功能代碼在searchbook_post.jsp下,
查詢功能代碼:
<%
String sql="";
//解決中文亂碼
String keyword=request.getParameter("keyword");
String tkeyword=search.chStr(keyword);
//獲取參數(shù)名稱
String keytype=request.getParameter("type");
//如果按書名進(jìn)行查詢
if(keytype.equals("booktitle")){sql="select * from book where title like '%"+tkeyword+"%'";}
//如果按書號(hào)進(jìn)行查詢
else if(keytype.equals("bookid")){sql="select * from book where bookID like '%"+tkeyword+"%'";}
int temp=search.select(sql);
Connection conn=search.getConn();
Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery(sql);
//表單顯示處理功能代碼:
while(rs.next()){
String booktitle=rs.getString(2);
String bookid=rs.getString(3);
String booktype=rs.getString(4);
int quantity=rs.getInt(5);
id++;
if(color=="#CCCCCC"){color="#999999";}
else{color="#CCCCCC";}
%>
4.4.2 后臺(tái)所有圖書查詢
在后臺(tái)運(yùn)行中,除了前臺(tái)所擁有的查詢外,還提供直接查詢并允許對(duì)其修改和刪除,其界面由admin_viewallbooks.jsp顯示,而修改,刪除由其他文件實(shí)現(xiàn),其實(shí)現(xiàn)方法類似前臺(tái)查詢不在累述。
4.4.3 WAP查詢
圖11 WAP圖書查詢界面
Winwap是Slobtrot網(wǎng)站提供的WAP仿真工具。它完美的支持WML 1.0和1.1??梢詫ML頁面保存為HTML頁面。Winwap因此也成為了目前WAP網(wǎng)站開發(fā)人員使用最廣泛的模擬器。
圖9則是用Winwap模擬器打開的WAP圖書查詢界面。
其功能主要由wapresult來實(shí)現(xiàn),里面功能大多可參照以上的查詢功能實(shí)現(xiàn)。
其主要代碼如下
<%
//設(shè)置返回類型為WML
response.setContentType("text/vnd.wap.wml");
String result="";
if(request.getParameter("bookid")!=null){
String bookid=request.getParameter("bookid");
String sql="select * from book where bookid='"+bookid+"'";
Connection conn=guestreply.getConn();
Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()){
result+=rs.getString("title")+" Bookid:"+rs.getString("bookID")+" count:"+rs.getString("quantity")+"";
}
}
if(request.getParameter("bookname")!=null){
String bookname=request.getParameter("bookname");
String sql="select * from book where title='"+bookname+"'";
Connection conn=guestreply.getConn();
Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()){
result+=rs.getString("title")+" Bookid:"+rs.getString("bookID")+" count:"+rs.getString("quantity")+"";
}
}
%>
4.5 其余功能模塊
其余功能模塊實(shí)現(xiàn)方法同上面雷同,就不在詳細(xì)分析代碼,只簡(jiǎn)單敘述。
借還手續(xù)功能模塊包含了借書功能模塊,還書功能模塊,借閱信息功能模塊,借書證管理功能模塊。借還手續(xù)功能模塊是另一個(gè)核心功能模塊。借書功能模塊通過輸入借書證號(hào)和圖書編號(hào)實(shí)現(xiàn)借書功能admin_borrowbook.jsp和admin_borrowbook_post.jsp文件實(shí)現(xiàn)。其主要功能在admin_borrowbook_post.jsp中實(shí)現(xiàn)。還書功能模塊主要實(shí)現(xiàn)對(duì)圖書的重新入庫和清理所借圖書人借書項(xiàng)目包含admin_returnbook.jsp,admin_returnbook_post.jsp和admin_returnbook_post_post.jsp三個(gè)文件。閱信息功能模塊為查詢所有借閱書籍的同學(xué)和其借閱的圖書,主要由admin_viewallborrows.jsp實(shí)現(xiàn)。
新開借書證功能模塊本功能主要實(shí)現(xiàn)借書證的重新開啟,包含admin_addnewuser.jsp,admin_addnewuser_post.jsp。修改借書證信息主要實(shí)現(xiàn)修改借書的情況,包括包含admin_changeuser.jsp和admin_changeuser_post.jsp兩個(gè)文件
管理圖書功能模塊主要用于對(duì)圖書的管理,其包括錄入新書功能模塊和修改,刪除圖書功能模塊,未歸還圖書查詢功能模塊。錄入新書功能模塊主要將圖書錄入,并添加其數(shù)量,名稱,類別的功能由admin_addnewbook.jsp和admin_addnewbook_post.jsp兩個(gè)文件實(shí)現(xiàn)。修改,刪除圖書功能模塊主要是修改刪除圖書的信息。由admin_changebook.jsp和admin_changebook_post.jsp實(shí)現(xiàn)。
用戶信息管理功能模塊是本系統(tǒng)后臺(tái)最為重要的一部分,包括所有用戶查詢功能模塊,搜索用戶功能模塊,管理員列表功能模塊,添加管理員功能模塊,修改密碼功能模塊。所有用戶查詢功能模塊本功能作用是實(shí)現(xiàn)對(duì)用戶信息查詢,包括姓名,性別,年齡,系別,借書證號(hào)由admin_viewallusers.jsp實(shí)現(xiàn)搜索用戶功能模塊本功就是通過輸入借書證號(hào)搜尋所查找的用戶。由searchuser.jsp和searchuser_post.jsp文件實(shí)現(xiàn)用戶功能模塊主要是對(duì)用戶的所有信息進(jìn)行修改并保存由admin_changeuser.jsp和admin_changeuser_post.jsp實(shí)現(xiàn)。管理員列表功能模塊主要是查詢所有管理員。由admin_viewalladmins.jsp實(shí)現(xiàn)。添加管理員功能模塊就是添加管理員,包括登錄名和密碼由admin_addadmin.jsp和admin_addadmin_post.jsp實(shí)現(xiàn)。修改管理員密碼功能模塊本功能主要是對(duì)管理員密碼修改由changepwd.jsp和admin_changepwd_post.jsp實(shí)現(xiàn)。
5 測(cè)試
本系統(tǒng)測(cè)試環(huán)境:MySQL5.0,TOMCAT5.016/Weblogic8.0,Winwap,在WIN2000/XP下均測(cè)試通過.測(cè)試結(jié)果完全符合預(yù)期目標(biāo)。但有部分BUG,現(xiàn)問題和解決方法總結(jié)如下:
1.中文信息提交時(shí)為亂碼。
解決方法:將頁面編碼設(shè)置為GB2312,同時(shí)在服務(wù)器端將request編碼也設(shè)置為GB2312
2.頁面采用2個(gè)frame,在超鏈接的時(shí)候往往不能鏈接到目標(biāo)frame上。
解決方法:在超鏈接的后面添加target="目標(biāo)框架"。
最終經(jīng)過詳細(xì)功能測(cè)試和代碼修正后,本系統(tǒng)完全實(shí)現(xiàn)借書與還書的手續(xù)操作與對(duì)圖書和人員的管理功能。其系統(tǒng)界面簡(jiǎn)單、易用,其查詢功能模塊支持模糊查詢和WAP查詢功能使得系統(tǒng)更加強(qiáng)大。
結(jié) 論
本文提出的基于WEB的圖書管理系統(tǒng)完成了借書,還書,查詢圖書,管理借書證和管理員帳戶設(shè)置等主要功能,本系統(tǒng)是基于B/S模式,其后臺(tái)部分完全實(shí)現(xiàn)借書與還書的手續(xù)操作與對(duì)圖書和人員的管理功能,系統(tǒng)界面簡(jiǎn)單、易用,任何人都可以在短時(shí)間內(nèi)學(xué)會(huì)使用該系統(tǒng),在前臺(tái)部分,創(chuàng)新設(shè)計(jì)的WAP圖書查詢部分,不僅大大方便了同學(xué)們查詢圖書,而且使得系統(tǒng)多樣化,多元化,具有有很強(qiáng)的擴(kuò)展性。
在技術(shù)方面,通過此項(xiàng)目的開發(fā),本人對(duì)基于Browser/Server即瀏覽器/服務(wù)器模式的多層體系結(jié)構(gòu)的JSP技術(shù)有了一定的實(shí)戰(zhàn)經(jīng)驗(yàn),同時(shí)對(duì)JavaBean的使用有了深刻的理解。將不同復(fù)雜的數(shù)據(jù)庫操作劃分為獨(dú)立的模塊封裝于Bean中,提高了系統(tǒng)的安全性和可移植性。
對(duì)于不足之處在于管理員權(quán)限沒有細(xì)分,有條件的話可以采用給予角色的分配方法來分配權(quán)限。WAP部分功能相對(duì)于簡(jiǎn)單,可以繼續(xù)加入留言板,圖書續(xù)借,公告等實(shí)用功能。
參考文獻(xiàn)
[1] 林上杰,林康司. JSP 2.0技術(shù)手冊(cè)[M]. 北京: 電子工業(yè)出版社,2005。
[2] 汪孝宜,劉中兵. JSP數(shù)據(jù)庫開發(fā)實(shí)例精粹[M]. 北京:機(jī)械工業(yè)出版社,2001。
[3] 楊仁毅. DreamweaverMX2004自學(xué)手冊(cè)[M]. 成都: 四川電子音像出版中心,2004。
[4] 方睿,刁仁宏.網(wǎng)絡(luò)數(shù)據(jù)庫原理及應(yīng)用[M]. 成都: 四川大學(xué)出版社,2005。
[5] 陳明. 實(shí)用軟件工程基礎(chǔ)[M]. 北京: 清華大學(xué)出版社,2002。
[6] 耿祥義,張躍平. JAVA2實(shí)用教程[M]. 北京: 清華大學(xué)出版社,2006。
[7]張海藩.軟件工程導(dǎo)論[M].北京:北京清華大學(xué)出版社,2003。
第 22 頁 共 27 頁
致 謝
本文是在揚(yáng)上金老師的熱情關(guān)心和指導(dǎo)下完成的,他淵博的知識(shí)和嚴(yán)謹(jǐn)?shù)闹螌W(xué)作風(fēng)使我受益匪淺,對(duì)順利完成本課題起到了極大的作用。在此向他表示我最衷心的感謝!
在論文完成過程中,本人還得到了索望老師和劉應(yīng)嘉同學(xué)的熱心幫助,本人向他們表示深深的謝意!
最后向在百忙之中評(píng)審本文的各位專家、老師表示衷心的感謝!
作者簡(jiǎn)介:
姓 名:歐翼 性別:男
出生年月:1984年7月 民族:漢
E-mail:wing.oe@163.com
聲 明
本論文的工作是 2007年2月至2007年6月在成都信息工程學(xué)院網(wǎng)絡(luò)工程系完成的。文中除了特別加以標(biāo)注地方外,不包含他人已經(jīng)發(fā)表或撰寫過的研究成果,也不包含為獲得成都信息工程學(xué)院或其他教學(xué)機(jī)構(gòu)的學(xué)位或證書而使用過的材料。除非另有說明,本文的工作是原始性工作。
關(guān)于學(xué)位論文使用權(quán)和研究成果知識(shí)產(chǎn)權(quán)的說明:
本人完全了解成都信息工程學(xué)院有關(guān)保管使用學(xué)位論文的規(guī)定,其中包括:
(1)學(xué)校有權(quán)保管并向有關(guān)部門遞交學(xué)位論文的原件與復(fù)印件。
(2)學(xué)??梢圆捎糜坝 ⒖s印或其他復(fù)制方式保存學(xué)位論文。
(3)學(xué)校可以學(xué)術(shù)交流為目的復(fù)制、贈(zèng)送和交換學(xué)位論文。
(4)學(xué)??稍试S學(xué)位論文被查閱或借閱。
(5)學(xué)??梢怨紝W(xué)位論文的全部或部分內(nèi)容(保密學(xué)位論文在解密后遵守此規(guī)定)。
除非另有科研合同和其他法律文書的制約,本論文的科研成果屬于成都信息工程學(xué)院。
特此聲明!
作者簽名:
年 月 日
收藏