圖書管理系統(tǒng)計(jì)算機(jī)專業(yè)畢業(yè)論文
畢業(yè)設(shè)計(jì)(論文) 題 目: 圖書管理系統(tǒng) 學(xué) 院: 計(jì)算機(jī)科學(xué)與工程學(xué)院 專 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) 學(xué)生姓名: 學(xué) 號(hào): 20091216 指導(dǎo)教師: 目 錄1 引言31.1 圖書管理的現(xiàn)狀31.2 現(xiàn)有圖書管理系統(tǒng)的概述41.3 選題的目的、意義41.4 圖書管理系統(tǒng)的可行性分析51.5 系統(tǒng)開發(fā)運(yùn)行環(huán)境5第二章 本系統(tǒng)開發(fā)相關(guān)技術(shù)介紹62.1 java62.2 MySql82.3 Struts292.4Hibernate102.5C/S結(jié)構(gòu)102.6 Web服務(wù)器12第三章 系統(tǒng)總體設(shè)計(jì)分析123.1 系統(tǒng)需求分析123.2 系統(tǒng)實(shí)現(xiàn)的目標(biāo)133.3 系統(tǒng)功能模塊設(shè)計(jì)133.4 系統(tǒng)功能結(jié)構(gòu)圖133.5 系統(tǒng)流程圖16第四章 數(shù)據(jù)總體結(jié)構(gòu)設(shè)計(jì)174.1 數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計(jì)174.2 數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計(jì)184.3 圖書管理系統(tǒng)的系統(tǒng)E-R圖204.4 數(shù)據(jù)表設(shè)計(jì)21第五章 圖書管理系統(tǒng)詳細(xì)設(shè)計(jì)235.1 系統(tǒng)流程分析235.2 主要模塊的運(yùn)行235.2.1 登陸界面235.2.2 圖書信息管理模塊245.2.3 圖書借還信息模塊255.3 系統(tǒng)開發(fā)的遇到的相關(guān)問題及解決265.3.1 圖書管理系統(tǒng)索引265.3.2 如何驗(yàn)證輸入的字符串265.3.3 自動(dòng)計(jì)算圖書歸還日期275.3.4 系統(tǒng)登陸驗(yàn)證碼的實(shí)現(xiàn)27第六章 結(jié)論306.1 主要研究?jī)?nèi)容及成果316.2 今后進(jìn)一步研究方向31參考文獻(xiàn)31學(xué)校圖書管理系統(tǒng)的開發(fā)摘 要當(dāng)今時(shí)代是飛速發(fā)展的信息時(shí)代。在各行各業(yè)中離不開信息處理,這正是計(jì)算機(jī)被廣泛應(yīng)用于信息管理系統(tǒng)的環(huán)境。計(jì)算機(jī)的最大好處在于利用它能夠進(jìn)行信息管理。使用計(jì)算機(jī)進(jìn)行信息控制,不僅提高了工作效率,而且大大的提高了其安全性。由于信息技術(shù)的發(fā)展,許多行業(yè)在經(jīng)營(yíng)管理過程中對(duì)計(jì)算機(jī)技術(shù)的依賴程度也不斷增強(qiáng)。在對(duì)JSP語言,SQL Server2005數(shù)據(jù)庫技術(shù)以及當(dāng)今社會(huì)的圖書管理系統(tǒng)的需求進(jìn)行了較深入的學(xué)習(xí)和調(diào)查的基礎(chǔ)上,設(shè)計(jì)出了該圖書管理系統(tǒng),該系統(tǒng)主要實(shí)現(xiàn)了圖書管理,用戶信息及管理信息的管理同時(shí)在書籍信息管理中還包括圖書的更新,書籍的過戶和監(jiān)督卡管理等功能。本論文主要闡述了書籍管理系統(tǒng)的需求分析,功能模塊劃分,數(shù)據(jù)庫模式分析,并具此設(shè)計(jì)了基于c/S模式的數(shù)據(jù)庫結(jié)構(gòu)和JSP程序.關(guān)鍵詞:JSP, SQL Server2000, ODBC, JavaBean1 引言隨著計(jì)算機(jī)及網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,Internet/Intranet應(yīng)用在全球范圍內(nèi)日益普及,當(dāng)今社會(huì)正快速向信息化社會(huì)前進(jìn),信息系統(tǒng)的作用也越來越大。圖書館在正常運(yùn)營(yíng)中總是面對(duì)大量的讀者信息,書籍信息以及由兩者相互作用產(chǎn)生的借書信息,還書信息。因此圖書管理信息化是發(fā)展的必然趨勢(shì)。用結(jié)構(gòu)化系統(tǒng)分析與設(shè)計(jì)的方法,建立一套有效的圖書信息管理系統(tǒng),可以減輕工作,將工作科學(xué)化、規(guī)范化,提高了圖書館信息管理的工作質(zhì)量因此根據(jù)圖書館目前實(shí)際的管理情況開發(fā)一套圖書管理系統(tǒng)是十分必要的。1.1 圖書管理的現(xiàn)狀一直以來人們使用傳統(tǒng)的人工方式管理圖書館的日常工作,對(duì)于圖書館的借書和還書過程,想必大家都已很熟悉。在計(jì)算機(jī)尚未在圖書管理系統(tǒng)廣泛使用之前,借書和還書過程主要依靠手工。一個(gè)最典型的手工處理還書過程就是:讀者將要借的書和借閱證交給工作人員,工作人員將每本書上附帶的描述書的信息的卡片和讀者的借閱證放在一個(gè)小格欄里,并在借閱證和每本書貼的借閱條上填寫借閱信息。這樣借書過程就完成了。還書時(shí),讀者將要還的書交給工作人員,工作人員根據(jù)圖書信息找到相應(yīng)的書卡和借閱證,并填好相應(yīng)的還書信息,這樣還書過程就完成了。隨著近年來信息技術(shù)及計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的不斷發(fā)展, 圖書館也先從傳統(tǒng)的圖書館發(fā)展到自動(dòng)化圖書館,再發(fā)展到今天的數(shù)字圖書館,這些變化使得圖書館的形象越來越現(xiàn)代化,人們查找資料也更加方便。對(duì)于一些小圖書館和一些圖書室來說,由于工作人員比較少,長(zhǎng)期以來,作為圖書館的主要工作圖書借閱一直未能很好地開展。在平常的圖書借閱工作中, 由于大部分讀者不熟悉圖書館藏書,且對(duì)圖書排架分類的不了解,往往花費(fèi)很長(zhǎng)時(shí)間才能找到其所需的書。為提高管理效率,更好地為讀者服務(wù),利用已有的辦公局域網(wǎng)絡(luò)條件,將館藏書籍做成基于WEB的查詢系統(tǒng),實(shí)現(xiàn)圖書在一個(gè)單位的網(wǎng)絡(luò)內(nèi)甚至Internet上查詢,可使圖書查詢和借閱變得更加方便快捷,從而使圖書室的工作效率得到明顯提高。傳統(tǒng)的圖書管理模式其最大的特點(diǎn)是手工;首先要把買來的圖書資料登記到資料本上,再給每本書分類貼上標(biāo)簽及制作和標(biāo)簽相對(duì)應(yīng)的圖書分類卡片,最后把圖書分類卡片按類別分別放置在文件柜里。對(duì)于有學(xué)生(教師)證的學(xué)生(教師)來說還要對(duì)他們資料作一定的記錄。并且在人們來借書的時(shí)候,首先持證件者要去存放圖書分類卡片的文件柜里查找想借的書是否在架,如果卡片存在,再按照?qǐng)D書分類卡片在相應(yīng)的書架上找到需要的圖書,然后登記持證件者的借還書時(shí)間和在書簽條上寫下借還書記錄,之后把借書證留在那里;還書的時(shí)候,相對(duì)應(yīng)的消去出借記錄;這樣做起來比較麻煩,比較費(fèi)時(shí)間。傳統(tǒng)圖書管理的特點(diǎn)是一直以來,中小型書店、中小學(xué)的小型圖書館及各高校圖書館和資料室使用傳統(tǒng)的人工方式管理圖書檔案、會(huì)員檔案。這種管理方式存在著諸多缺點(diǎn),如:手續(xù)繁瑣、工作量大、效率低下、出錯(cuò)率高等,同時(shí)給對(duì)大量資料的查詢、更新及維護(hù)都帶來不少困難。1.2 現(xiàn)有圖書管理系統(tǒng)的概述在試用了一些個(gè)圖書管理系統(tǒng)和查閱了大量相關(guān)資料文獻(xiàn)的基礎(chǔ)上,發(fā)現(xiàn)那些系統(tǒng)在幾個(gè)方面已經(jīng)不符合時(shí)代的要求,由于設(shè)計(jì)人員及其所用的工具的不同,有Visual Basic6.0、Visual ForPro6.0、Power Builder等,再加上這些圖書管理系統(tǒng)設(shè)計(jì)的時(shí)間也不一樣,所用具體場(chǎng)合也有區(qū)別,因此在功能上除了圖書資料管理所需的基本功能之外也有所不同。經(jīng)過比較總結(jié)他們都實(shí)現(xiàn)了以下圖書管理的基本功能:1、圖書檢索模塊:是圖書管理系統(tǒng)的重要模塊之一,是讀者快速查詢圖書的途徑。2、圖書管理模塊:是圖書管理員操作模塊,讀者是無權(quán)進(jìn)入的。本模塊由借出圖書登記、歸還圖書登記和續(xù)借圖書登記子模塊構(gòu)成。3、數(shù)據(jù)維護(hù)模塊:是由圖書管理員控制的模塊,它由增加、修改和刪除讀者,增加、修改刪除圖書,瀏覽修改讀者、瀏覽修改圖書等程序組成。 4、數(shù)據(jù)統(tǒng)計(jì)模塊:由讀者統(tǒng)計(jì)、圖書統(tǒng)計(jì)、借出圖書分類統(tǒng)計(jì)、到期末歸還圖書讀者統(tǒng)計(jì)幾部分組成。這些系統(tǒng)解決了以前的那種管理方式所存在著的諸如手續(xù)繁瑣、工作量大、效率低下、出錯(cuò)率高等缺點(diǎn),設(shè)計(jì)出的系統(tǒng)能使讀者快速檢索到自己喜愛的書,圖書管理員能減輕工作量。但是鑒于開發(fā)工具和開發(fā)當(dāng)時(shí)的科技發(fā)展水平所限,再加上歷史發(fā)展到今天,人們的生活環(huán)境已經(jīng)發(fā)生了改變,大家對(duì)于圖書查詢這方面的要求也更高。比如在一個(gè)局域網(wǎng)內(nèi),大家希望能在本臺(tái)電腦上就能查找自己想要的圖書,而不用跑到圖書館或圖書室里去用那里的電腦查詢,這就需要一個(gè)網(wǎng)絡(luò)化的聯(lián)機(jī)查詢系統(tǒng)。1.3 選題的目的意義隨著社會(huì)的進(jìn)步,信息技術(shù)的廣泛應(yīng)用,數(shù)字化管理的優(yōu)勢(shì)日趨顯著。針對(duì)中小型圖書館或圖書室管理落后的情況,設(shè)計(jì)實(shí)現(xiàn)一個(gè)圖書信息管理系統(tǒng),通過與計(jì)算機(jī)的結(jié)合使用對(duì)中小型圖書館或圖書室的各種圖書信息進(jìn)行管理可以給管理員和用戶帶來以下不同的方便:檢索迅速、查找方便、可靠性高、存儲(chǔ)量大、保密性好、壽命長(zhǎng)、成本低等。這些優(yōu)點(diǎn)能夠極大地提高工作效率,也是圖書館等部門管理科學(xué)化、正規(guī)化的重要標(biāo)志之一。而且計(jì)算機(jī)管理的成本不斷降低。因此,開發(fā)一套這樣的中小型圖書管理軟件已經(jīng)很有必要,并且實(shí)現(xiàn)研究服務(wù)于實(shí)踐的原則。1.4 圖書管理系統(tǒng)可行性分析本次畢業(yè)設(shè)計(jì)題目:“圖書管理系統(tǒng)開發(fā)”主要目的是利用數(shù)據(jù)庫軟件編制一個(gè)管理軟件,用以實(shí)現(xiàn)圖書、讀者以及日常工作等多項(xiàng)管理;同時(shí)對(duì)整個(gè)系統(tǒng)的分析、設(shè)計(jì)過程給出一個(gè)完整論證。圖書管理系統(tǒng)是一種基于集中統(tǒng)一規(guī)劃的數(shù)據(jù)庫數(shù)據(jù)管理新模式。在對(duì)圖書、讀者的管理,其實(shí)是對(duì)圖書、讀者數(shù)據(jù)的管理。本系統(tǒng)的建成無疑會(huì)為管理者對(duì)圖書管理系統(tǒng)提供極大的幫助。本系統(tǒng)的設(shè)計(jì)主要從以下幾方面做起:系統(tǒng)業(yè)務(wù)流程分析、系統(tǒng)的功能設(shè)計(jì)、系統(tǒng)的數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì)等。作這些工作需對(duì)數(shù)據(jù)庫知識(shí)有足夠認(rèn)識(shí),并深入的了解Java的使用和管理系統(tǒng)的相關(guān)知識(shí)。在信息時(shí)代的今天,人類需要對(duì)在政治、經(jīng)濟(jì)、軍事、文化、科研、教育等領(lǐng)域產(chǎn)生的大量信息進(jìn)行管理,并對(duì)數(shù)據(jù)進(jìn)行加工處理,數(shù)據(jù)庫技術(shù)則是信息管理與數(shù)據(jù)處理的先進(jìn)技術(shù)。隨著信息量的不斷增加,作為計(jì)算機(jī)的三大主要應(yīng)用(科學(xué)計(jì)算、過程控制和數(shù)據(jù)處理)之一的數(shù)據(jù)處理,已迅速上升為計(jì)算機(jī)應(yīng)用的主要方面,數(shù)據(jù)庫技術(shù)則成為人們?nèi)粘I钪刑幚頂?shù)據(jù)不可缺少的有力工具,并且現(xiàn)代的信息管理系統(tǒng)幾乎都以數(shù)據(jù)庫技術(shù)作為核心。現(xiàn)在大多數(shù)的圖書管理方式為手工處理,重復(fù)勞動(dòng)多,勞動(dòng)強(qiáng)度大,而且容易出錯(cuò),新系統(tǒng)的使用能否可以很好的解決這些問題要看系統(tǒng)的可行性,可行性研究的目的是用最小的代價(jià)在盡可能短的時(shí)間內(nèi)確定問題是否能夠解決。系統(tǒng)的可行性分析有以下幾個(gè)方面:(1)技術(shù)可行性:處理速度快、準(zhǔn)確通過權(quán)限的設(shè)置,數(shù)據(jù)的安全性好、方便查詢、借閱管理等。 (2)經(jīng)濟(jì)可行性:系統(tǒng)建設(shè)不需要很大的投入、可縮減人力投入。(3)運(yùn)行上可行性:本系統(tǒng)作為一個(gè)小型的圖書館信息管理系統(tǒng),所耗費(fèi)的資源非常的小。 (4)從各種社會(huì)因素可行性分析:可降低工作人員工作強(qiáng)度,提高效率,會(huì)得到學(xué)校工作人員的一致同意的。綜上所述通過可行性分析認(rèn)為新系統(tǒng)的開發(fā)方案切實(shí)可行,可進(jìn)行開發(fā)。1.5 系統(tǒng)開發(fā)運(yùn)行環(huán)境 系統(tǒng)開發(fā)環(huán)境:MyEclipse Java Enterprise7.0系統(tǒng)開發(fā)語言:Java運(yùn)行平臺(tái):Windows 7數(shù)據(jù)庫:sql server 2005Web服務(wù)器: Tomcat6.0第二章 本系統(tǒng)開發(fā)相關(guān)技術(shù)介紹2.1 javaJava已用動(dòng)態(tài)的交互應(yīng)用軟件使Web栩栩如生。它使開發(fā)人員具有編寫一次到處運(yùn)行TM”的巨大能力。而且,借助其JavaAPI及其編程語言上的Java虛擬機(jī),它已產(chǎn)生一種分布信息的嶄新模式。這種模式叫做Java企業(yè)計(jì)算,正在幫助各企業(yè)以各種不同的方法取得競(jìng)爭(zhēng)優(yōu)勢(shì)。網(wǎng)管和控制已大大簡(jiǎn)化。軟件分配基本上是免費(fèi)的,而且立即可實(shí)現(xiàn)。電子貿(mào)易已獲得。占有成本大幅度降低。信息和應(yīng)用軟件到處可存取。Java建立在簡(jiǎn)單的前提基礎(chǔ)上,即所有微處理器都應(yīng)講同一種語言所有內(nèi)部采用芯片的產(chǎn)品都應(yīng)能一起工作,無縫而方便地共享信息。它已經(jīng)改變企業(yè)和個(gè)人同Internet大交道的方式。現(xiàn)在,它正在對(duì)消費(fèi)類產(chǎn)品產(chǎn)生明顯的影響,而且從總體上更加深刻地影響企業(yè)計(jì)算。借助Java,您可自由自在地使用您已擁有的硬件和軟件。這是因?yàn)镴ava是獨(dú)立于平臺(tái)的。它還可使您超越企業(yè)計(jì)算,使應(yīng)用軟件在便攜式計(jì)算機(jī)、信息亭、電視、蜂窩電話和其他大量設(shè)備上運(yùn)行。全世界的公司都已發(fā)現(xiàn)Java數(shù)不勝數(shù)的用途。所有用途可從其無可比擬的能力,即提高可靠性、安全性和簡(jiǎn)化各種不同計(jì)算產(chǎn)品和環(huán)境的能力中受益非淺,而且節(jié)省的時(shí)間和費(fèi)用十分可觀。Java無處不在。它已擁有幾百萬個(gè)用戶,其發(fā)展速度要快于在它以前的其他任何一種計(jì)算機(jī)產(chǎn)品。它可位于任何地方,而且能到處運(yùn)行。Java正在迅速被用做傳播信息的事實(shí)上標(biāo)準(zhǔn),這是因?yàn)樗瓤山o企業(yè),也可給最終用戶帶來似乎數(shù)不清的好處。Java的特點(diǎn): 1、Java語言是簡(jiǎn)單的。Java語言的語法與C語言和C+語言很接近,使得大多數(shù)程序員很容易學(xué)習(xí)和使用Java。另一方面,Java丟棄了C+ 中很少使用的、很難理解的、令人迷惑的那些特性,如操作符重載、多繼承、自動(dòng)的強(qiáng)制類型轉(zhuǎn)換。特別地,Java語言不使用指針,并提供了自動(dòng)的廢料收集,使得程序員不必為內(nèi)存管理而擔(dān)憂。 2、Java語言是一個(gè)面向?qū)ο蟮?。Java語言提供類、接口和繼承等原語,為了簡(jiǎn)單起見,只支持類之間的單繼承,但支持接口之間的多繼承,并支持類與接口之間的實(shí)現(xiàn)機(jī)制(關(guān)鍵字為implements)。Java語言全面支持動(dòng)態(tài)綁定,而C+ 語言只對(duì)虛函數(shù)使用動(dòng)態(tài)綁定??傊琂ava語言是一個(gè)純的面向?qū)ο蟪绦蛟O(shè)計(jì)語言。 3、Java語言是分布式的。Java語言支持Internet應(yīng)用的開發(fā),在基本的Java應(yīng)用編程接口中有一個(gè)網(wǎng)絡(luò)應(yīng)用編程接口(java net),它提供了用于網(wǎng)絡(luò)應(yīng)用編程的類庫,包括URL、URLConnection、Socket、 ServerSocket等。Java的RMI(遠(yuǎn)程方法激活)機(jī)制也是開發(fā)分布式應(yīng)用的重要手段。 4、Java語言是健壯的。Java的強(qiáng)類型機(jī)制、異常處理、廢料的自動(dòng)收集等是Java程序健壯性的重要保證。對(duì)指針的丟棄是Java的明智選擇。Java的安全檢查機(jī)制使得Java更具健壯性。 5、Java語言是安全的。Java通常被用在網(wǎng)絡(luò)環(huán)境中,為此,Java提供了一個(gè)安全機(jī)制以防惡意代碼的攻擊。除了Java語言具有的許多安全特性以外,Java對(duì)通過網(wǎng)絡(luò)下載的類具有一個(gè)安全防范機(jī)制(類ClassLoader),如分配不同的名字空間以防替代本地的同名類、字節(jié)代碼檢查,并提供安全管理機(jī)制(類SecurityManager)讓Java應(yīng)用設(shè)置安全哨兵。 6、Java語言是體系結(jié)構(gòu)中立的。Java程序(后綴為java的文件)在Java平臺(tái)上被編譯為體系結(jié)構(gòu)中立的字節(jié)碼格式(后綴為class的文件), 然后可以在實(shí)現(xiàn)這個(gè)Java平臺(tái)的任何系統(tǒng)中運(yùn)行。這種途徑適合于異構(gòu)的網(wǎng)絡(luò)環(huán)境和軟件的分發(fā)。 7、Java語言是可移植的。這種可移植性來源于體系結(jié)構(gòu)中立性,另外,Java還嚴(yán)格規(guī)定了各個(gè)基本數(shù)據(jù)類型的長(zhǎng)度。Java系統(tǒng)本身也具有很強(qiáng)的可移植性,Java編譯器是用Java實(shí)現(xiàn)的,Java的運(yùn)行環(huán)境是用ANSI C實(shí)現(xiàn)的。 8、Java語言是解釋型的。如前所述,Java程序在Java平臺(tái)上被編譯為字節(jié)碼格式, 然后可以在實(shí)現(xiàn)這個(gè)Java平臺(tái)的任何系統(tǒng)中運(yùn)行。在運(yùn)行時(shí),Java平臺(tái)中的Java解釋器對(duì)這些字節(jié)碼進(jìn)行解釋執(zhí)行,執(zhí)行過程中需要的類在聯(lián)接階段被載入到運(yùn)行環(huán)境中。 9、Java是高性能的。與那些解釋型的高級(jí)腳本語言相比,Java的確是高性能的。事實(shí)上,Java的運(yùn)行速度隨著JIT(Just-In-Time)編譯器技術(shù)的發(fā)展越來越接近于C+。 10、Java語言是多線程的。在Java語言中,線程是一種特殊的對(duì)象,它必須由Thread類或其子(孫)類來創(chuàng)建。通常有兩種方法來創(chuàng)建線程:其一,使用型構(gòu)為Thread(Runnable) 的構(gòu)造子將一個(gè)實(shí)現(xiàn)了Runnable接口的對(duì)象包裝成一個(gè)線程,其二,從Thread類派生出子類并重寫run方法,使用該子類創(chuàng)建的對(duì)象即為線程。值得注意的是Thread類已經(jīng)實(shí)現(xiàn)了Runnable接口,因此,任何一個(gè)線程均有它的run方法,而run方法中包含了線程所要運(yùn)行的代碼。線程的活動(dòng)由一組方法來控制。 Java語言支持多個(gè)線程的同時(shí)執(zhí)行,并提供多線程之間的同步機(jī)制(關(guān)鍵字為synchronized)。 11、Java語言是動(dòng)態(tài)的。Java語言的設(shè)計(jì)目標(biāo)之一是適應(yīng)于動(dòng)態(tài)變化的環(huán)境。Java程序需要的類能夠動(dòng)態(tài)地被載入到運(yùn)行環(huán)境,也可以通過網(wǎng)絡(luò)來載入所需要的類。這也有利于軟件的升級(jí)。另外,Java中的類有一個(gè)運(yùn)行時(shí)刻的表示,能進(jìn)行運(yùn)行時(shí)刻的類型檢查。 Java語言的優(yōu)良特性使得Java應(yīng)用具有無比的健壯性和可靠性,這也減少了應(yīng)用系統(tǒng)的維護(hù)費(fèi)用。Java對(duì)對(duì)象技術(shù)的全面支持和Java平臺(tái)內(nèi)嵌的API能縮短應(yīng)用系統(tǒng)的開發(fā)時(shí)間并降低成本。Java的編譯一次,到處可運(yùn)行的特性使得它能夠提供一個(gè)隨處可用的開放結(jié)構(gòu)和在多平臺(tái)之間傳遞信息的低成本方式。特別是Java企業(yè)應(yīng)用編程接口(Java Enterprise APIs)為企業(yè)計(jì)算及電子商務(wù)應(yīng)用系統(tǒng)提供了有關(guān)技術(shù)和豐富的類庫。2.2 MySql MySQL是一個(gè)小型關(guān)系型數(shù)據(jù)庫管理系統(tǒng),開發(fā)者為瑞典MySQL AB公司。在2008年1月16號(hào)被Sun公司收購(gòu)。而2009年,SUN又被Oracle收購(gòu).對(duì)于Mysql的前途,沒有任何人抱樂觀的態(tài)度.目前MySQL被廣泛地應(yīng)用在Internet上的中小型網(wǎng)站中。由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點(diǎn),許多中小型網(wǎng)站為了降低網(wǎng)站總體擁有成本而選擇了MySQL作為網(wǎng)站數(shù)據(jù)庫。MySQL的官方網(wǎng)站的網(wǎng)址是:MySQL最初的開發(fā)者的意圖是用mSQL和他們自己的快速低級(jí)例程(ISAM)去連接表格。不管怎樣,在經(jīng)過一些測(cè)試后,開發(fā)者得出結(jié)論:mSQL并沒有他們需要的那么快和靈活。這導(dǎo)致了一個(gè)使用幾乎和mSQL一樣的API接口的用于他們的數(shù)據(jù)庫的新的SQL接口的產(chǎn)生,這樣,這個(gè)API被設(shè)計(jì)成允許為用于mSQL而寫的第三方代碼更容易移植到MySQL。MySql 特性: 1.使用C和C+編寫,并使用了多種編譯器進(jìn)行測(cè)試,保證源代碼的可移植性 2.支持AIX、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、OpenBSD、OS/2 Wrap、Solaris、Windows等多種操作系統(tǒng) 3.為多種編程語言提供了API。這些編程語言包括C、C+、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。 4.支持多線程,充分利用CPU資源 5.優(yōu)化的SQL查詢算法,有效地提高查詢速度 6.既能夠作為一個(gè)單獨(dú)的應(yīng)用程序應(yīng)用在客戶端服務(wù)器網(wǎng)絡(luò)環(huán)境中,也能夠作為一個(gè)庫而嵌入到其他的軟件中提供多語言支持,常見的編碼如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作數(shù)據(jù)表名和數(shù)據(jù)列名 7.提供TCP/IP、ODBC和JDBC等多種數(shù)據(jù)庫連接途徑 8.提供用于管理、檢查、優(yōu)化數(shù)據(jù)庫操作的管理工具 9.可以處理擁有上千萬條記錄的大型數(shù)據(jù)庫 MySql 應(yīng)用: 與其他的大型數(shù)據(jù)庫例如Oracle、DB2、SQL Server等相比,MySQL自有它的不足之處,如規(guī)模小、功能有限(MySQL Cluster的功能和效率都相對(duì)比較差)等,但是這絲毫也沒有減少它受歡迎的程度。對(duì)于一般的個(gè)人使用者和中小型企業(yè)來說,MySQL提供的功能已經(jīng)綽綽有余,而且由于MySQL是開放源碼軟件,因此可以大大降低總體擁有成本。 目前Internet上流行的網(wǎng)站構(gòu)架方式是LAMP(Linux+Apache+MySQL+PHP),即使用Linux作為操作系統(tǒng),Apache作為Web服務(wù)器,MySQL作為數(shù)據(jù)庫,PHP作為服務(wù)器端腳本解釋器。由于這四個(gè)軟件都是免費(fèi)或開放源碼軟件(FLOSS),因此使用這種方式不用花一分錢就可以建立起一個(gè)穩(wěn)定、免費(fèi)的網(wǎng)站系統(tǒng)。2.3 Struts2 struts是開源軟件。使用Struts的目的是為了幫助我們減少在運(yùn)用MVC設(shè)計(jì)模型來開發(fā)Web應(yīng)用的時(shí)間。如果我們想混合使用Servlets和JSP的優(yōu)點(diǎn)來建立可擴(kuò)展的應(yīng)用,struts是一個(gè)不錯(cuò)的選擇。 運(yùn)行流程:服務(wù)器啟動(dòng)后,根據(jù)web.xml加載ActionServlet讀取struts-config.xml文件內(nèi)容到內(nèi)存。 以登錄為例:第一次進(jìn)login.jsp會(huì)先實(shí)例化Form、把默認(rèn)值(String默認(rèn)為空字符串,整形默認(rèn)為0)賦給表單元素。 輸入用戶名密碼提交表單、提交到action屬性的login.do,通ActionServlet讀struts-config.xml文件找到 action下的path屬性找到.do,通過name屬性找form-beans中的form-bean的name屬性得到ActionForm的包名類名,先實(shí)例化form,把表單的值填充給form,調(diào)用form的validate方法驗(yàn)證、ActionErrors返回null表示驗(yàn)證通過,否則失敗返回input指定的頁面.驗(yàn)證通過會(huì)實(shí)例化Action,執(zhí)行Action的excute方法。2.4 HibernateHibernate是一個(gè)開放源代碼的對(duì)象關(guān)系映射框架,它對(duì)JDBC進(jìn)行了非常輕量級(jí)的對(duì)象封裝,使得Java程序員可以隨心所欲的使用對(duì)象編程思維來操縱數(shù)據(jù)庫。 Hibernate可以應(yīng)用在任何使用JDBC的場(chǎng)合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應(yīng)用中使用,最具革命意義的是,Hibernate可以在應(yīng)用EJB的J2EE架構(gòu)中取代CMP,完成數(shù)據(jù)持久化的重任。實(shí)際應(yīng)用:Session接口負(fù)責(zé)執(zhí)行被持久化對(duì)象的CRUD操作(CRUD的任務(wù)是完成與數(shù)據(jù)庫的交流,包含了很多常見的SQL語句)。SessionFactory接口負(fù)責(zé)初始化Hibernate。它充當(dāng)數(shù)據(jù)存儲(chǔ)源的代理,并負(fù)責(zé)創(chuàng)建Session對(duì)象。Configuration接口負(fù)責(zé)配置并啟動(dòng)Hibernate,創(chuàng)建SessionFactory對(duì)象。Transaction接口負(fù)責(zé)事務(wù)相關(guān)的操作,也可以設(shè)計(jì)編寫自己的底層事務(wù)處理代碼。2.5 C/S結(jié)構(gòu) C/S 結(jié)構(gòu),即大家熟知的客戶機(jī)和服務(wù)器結(jié)構(gòu)。它是軟件系統(tǒng)體系結(jié)構(gòu),通過它可以充分利用兩端硬件環(huán)境的優(yōu)勢(shì),將任務(wù)合理分配到Client端和Server端來實(shí)現(xiàn),降低了系統(tǒng)的通訊開銷。目前大多數(shù)應(yīng)用軟件系統(tǒng)都是Client/Server形式的兩層結(jié)構(gòu),由于現(xiàn)在的軟件應(yīng)用系統(tǒng)正在向分布式的Web應(yīng)用發(fā)展,Web和Client/Server 應(yīng)用都可以進(jìn)行同樣的業(yè)務(wù)處理,應(yīng)用不同的模塊共享邏輯組件;因此,內(nèi)部的和外部的用戶都可以訪問新的和現(xiàn)有的應(yīng)用系統(tǒng),通過現(xiàn)有應(yīng)用系統(tǒng)中的邏輯可以擴(kuò)展出新的應(yīng)用系統(tǒng)。這也就是目前應(yīng)用系統(tǒng)的發(fā)展方向。 C/S結(jié)構(gòu)的優(yōu)點(diǎn): C/S結(jié)構(gòu)的優(yōu)點(diǎn)是能充分發(fā)揮客戶端的處理能力,很多工作可以在客戶端處理后再提交給服務(wù)器。對(duì)應(yīng)的優(yōu)點(diǎn)就是客戶端響應(yīng)速度快。缺點(diǎn)主要有以下幾個(gè): (1)只適用于局域網(wǎng)。而隨著互聯(lián)網(wǎng)的飛速發(fā)展,移動(dòng)辦公和分布式辦公越來越普及,這需要我們的系統(tǒng)具有擴(kuò)展性。這種方式遠(yuǎn)程訪問需要專門的技術(shù),同時(shí)要對(duì)系統(tǒng)進(jìn)行專門的設(shè)計(jì)來處理分布式的數(shù)據(jù)。 (2)客戶端需要安裝專用的客戶端軟件。首先涉及到安裝的工作量,其次任何一臺(tái)電腦出問題,如病毒、硬件損壞,都需要進(jìn)行安裝或維護(hù)。特別是有很多分部或?qū)Yu店的情況,不是工作量的問題,而是路程的問題。還有,系統(tǒng)軟件升級(jí)時(shí),每一臺(tái)客戶機(jī)需要重新安裝,其維護(hù)和升級(jí)成本非常高。 (3)對(duì)客戶端的操作系統(tǒng)一般也會(huì)有限制??赡苓m應(yīng)于Win98, 但不能用于win2000或Windows XP。或者不適用于微軟新的操作系統(tǒng)等等,更不用說Linux、nix等。 C/S架構(gòu)軟件的優(yōu)勢(shì)與劣勢(shì):(1)應(yīng)用服務(wù)器運(yùn)行數(shù)據(jù)負(fù)荷較輕。最簡(jiǎn)單的C/S體系結(jié)構(gòu)的數(shù)據(jù)庫應(yīng)用由兩部分組成,即客戶應(yīng)用程序和數(shù)據(jù)庫服務(wù)器程序。二者可分別稱為前臺(tái)程序與后臺(tái)程序。運(yùn)行數(shù)據(jù)庫服務(wù)器程序的機(jī)器,也稱為應(yīng)用服務(wù)器。一旦服務(wù)器程序被啟動(dòng),就隨時(shí)等待響應(yīng)客戶程序發(fā)來的請(qǐng)求;客戶應(yīng)用程序運(yùn)行在用戶自己的電腦上,對(duì)應(yīng)于數(shù)據(jù)庫服務(wù)器,可稱為客戶電腦,當(dāng)需要對(duì)數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行任何操作時(shí),客戶程序就自動(dòng)地尋找服務(wù)器程序,并向其發(fā)出請(qǐng)求,服務(wù)器程序根據(jù)預(yù)定的規(guī)則作出應(yīng)答,送回結(jié)果,應(yīng)用服務(wù)器運(yùn)行數(shù)據(jù)負(fù)荷較輕。 (2)數(shù)據(jù)的儲(chǔ)存管理功能較為透明。在數(shù)據(jù)庫應(yīng)用中,數(shù)據(jù)的儲(chǔ)存管理功能,是由服務(wù)器程序和客戶應(yīng)用程序分別獨(dú)立進(jìn)行的,前臺(tái)應(yīng)用可以違反的規(guī)則,并且通常把那些不同的運(yùn)行數(shù)據(jù),在服務(wù)器程序中不集中實(shí)現(xiàn),例如訪問者的權(quán)限,編號(hào)可以重復(fù)、必須有客戶才能建立定單這樣的規(guī)則。所有這些,對(duì)于工作在前臺(tái)程序上的最終用戶,是“透明”的,他們無須過問背后的過程,就可以完成自己的一切工作。在客戶服務(wù)器架構(gòu)的應(yīng)用中,前臺(tái)程序不是非?!笆菪 保闊┑氖虑槎冀唤o了服務(wù)器和網(wǎng)絡(luò)。在C/S體系的下,數(shù)據(jù)庫不能真正成為公共、專業(yè)化的倉(cāng)庫,它受到獨(dú)立的專門管理。 (3)C/S架構(gòu)的劣勢(shì)是高昂的維護(hù)成本且投資大。首先,采用C/S架構(gòu),要選擇適當(dāng)?shù)臄?shù)據(jù)庫平臺(tái)來實(shí)現(xiàn)數(shù)據(jù)庫數(shù)據(jù)的真正“統(tǒng)一”,使分布于兩地的數(shù)據(jù)同步完全交由數(shù)據(jù)庫系統(tǒng)去管理,但邏輯上兩地的操作者要直接訪問同一個(gè)數(shù)據(jù)庫才能有效實(shí)現(xiàn),有這樣一些問題,如果需要建立“實(shí)時(shí)”的數(shù)據(jù)同步,就必須在兩地間建立實(shí)時(shí)的通訊連接,保持兩地的數(shù)據(jù)庫服務(wù)器在線運(yùn)行,網(wǎng)絡(luò)管理工作人員既要對(duì)服務(wù)器維護(hù)管理,又要對(duì)客戶端維護(hù)和管理,這需要高昂的投資和復(fù)雜的技術(shù)支持,維護(hù)成本很高,維護(hù)任務(wù)量大。 其次,傳統(tǒng)的C/S結(jié)構(gòu)的軟件需要針對(duì)不同的操作系統(tǒng)系統(tǒng)開發(fā)不同版本的軟件,由于產(chǎn)品的更新?lián)Q代十分快,代價(jià)高和低效率已經(jīng)不適應(yīng)工作需要。在JAVA這樣的跨平臺(tái)語言出現(xiàn)之后,B/S架構(gòu)更是猛烈沖擊C/S,并對(duì)其形成威脅和挑戰(zhàn)。2.6 Web服務(wù)器Tomcat是Apache 軟件基金會(huì)(Apache Software Foundation)的Jakarta 項(xiàng)目中的一個(gè)核心項(xiàng)目,由Apache、Sun 和其他一些公司及個(gè)人共同開發(fā)而成。由于有了Sun 的參與和支持,最新的Servlet 和JSP 規(guī)范總是能在Tomcat 中得到體現(xiàn),Tomcat 5 支持最新的Servlet 2.4 和JSP 2.0 規(guī)范。因?yàn)門omcat 技術(shù)先進(jìn)、性能穩(wěn)定,而且免費(fèi),因而深受Java 愛好者的喜愛并得到了部分軟件開發(fā)商的認(rèn)可,成為目前比較流行的Web 應(yīng)用服務(wù)器。目前最新版本是6.0。 Tomcat 很受廣大程序員的喜歡,因?yàn)樗\(yùn)行時(shí)占用的系統(tǒng)資源小,擴(kuò)展性好,支持負(fù)載平衡與郵件服務(wù)等開發(fā)應(yīng)用系統(tǒng)常用的功能;而且它還在不斷的改進(jìn)和完善中,任何一個(gè)感興趣的程序員都可以更改它或在其中加入新的功能。 Tomcat是一個(gè)小型的輕量級(jí)應(yīng)用服務(wù)器,在中小型系統(tǒng)和并發(fā)訪問用戶不是很多的場(chǎng)合下被普遍使用,是開發(fā)和調(diào)試JSP 程序的首選。對(duì)于一個(gè)初學(xué)者來說,可以這樣認(rèn)為,當(dāng)在一臺(tái)機(jī)器上配置好Apache 服務(wù)器,可利用它響應(yīng)對(duì)HTML 頁面的訪問請(qǐng)求。實(shí)際上Tomcat 部分是Apache 服務(wù)器的擴(kuò)展,但它是獨(dú)立運(yùn)行的,所以當(dāng)你運(yùn)行tomcat 時(shí),它實(shí)際上作為一個(gè)與Apache 獨(dú)立的進(jìn)程單獨(dú)運(yùn)行的。 這里的訣竅是,當(dāng)配置正確時(shí),Apache 為HTML頁面服務(wù),而Tomcat 實(shí)際上運(yùn)行JSP 頁面和Servlet。另外,Tomcat和IIS、Apache等Web服務(wù)器一樣,具有處理HTML頁面的功能,另外它還是一個(gè)Servlet和JSP容器,獨(dú)立的Servlet容器是Tomcat的默認(rèn)模式。不過,Tomcat處理靜態(tài)HTML的能力不如Apache服務(wù)器。3 系統(tǒng)總體設(shè)計(jì)分析3.1 系統(tǒng)需求分析隨著互聯(lián)網(wǎng)的爆炸性發(fā)展,人們?cè)絹碓搅?xí)慣于利用網(wǎng)絡(luò)來實(shí)現(xiàn)所需的服務(wù),網(wǎng)絡(luò)已深深影響到人們生活的各個(gè)方面。另外,傳統(tǒng)的圖書館不能滿足一部分現(xiàn)代人的需要,而電子閱覽室,由于其不受時(shí)間與空間的限制同時(shí)又具有傳統(tǒng)圖書館的大部分功能,能夠滿足各類用戶的常規(guī)與特殊需求,而且其方便快捷,實(shí)現(xiàn)技術(shù)又比較成熟,因此受到當(dāng)代人的喜愛。該系統(tǒng)主要分為兩部分:讀者部分和管理員部分。為了方便讀者查找自己感興趣的主題進(jìn)行閱讀,要將圖書按照內(nèi)容進(jìn)行分類。讀者可以按照類別進(jìn)行查找,逐級(jí)瀏覽、可以查看自己的信息。本系統(tǒng)還可對(duì)用戶的賬號(hào)和書目的閱讀權(quán)限進(jìn)行管理。管理員需要給用戶分配用戶名和密碼,及設(shè)定用戶的級(jí)別,還為用戶提供圖書的排行榜讓用戶能知道那些圖書受到大家的歡迎。3.2 系統(tǒng)實(shí)現(xiàn)的目標(biāo) 學(xué)校圖書管理系統(tǒng)的開發(fā)主要要實(shí)現(xiàn)的目標(biāo)有以下幾個(gè)方面:(1)界面設(shè)計(jì)友好、美觀。(2)數(shù)據(jù)存儲(chǔ)安全、可靠。(3)信息分類清晰、準(zhǔn)確。(4)強(qiáng)大的查詢功能,保證數(shù)據(jù)查詢的靈活性。(5)實(shí)現(xiàn)對(duì)圖書借閱和歸還過程的全程數(shù)據(jù)信息跟蹤。(6)提供圖書借閱排行榜,為圖書管理員提供了真實(shí)的數(shù)據(jù)信息。(7)提供靈活、方便的權(quán)限設(shè)置功能,使整個(gè)系統(tǒng)的管理分工明確。(8)具有易維護(hù)性和易操作性。3.3 系統(tǒng)功能模塊設(shè)計(jì)(1)系統(tǒng)設(shè)置模塊:添加刪除管理員、設(shè)置管理員的權(quán)限、說明圖書存放書架信息添加刪除書架信息。(2)讀者管理模塊:添加刪除不同類型的讀者及注明可借圖書的數(shù)量、添加刪除讀者的檔案。(3)圖書管理模塊:添加刪除不同類型的的圖書及注明圖書可借的天數(shù)庫存數(shù)量、添加刪除圖書的檔案。(4)圖書借還模塊:可查詢讀者借閱和歸還圖書的信息及圖書的現(xiàn)有庫存量。(5) 系統(tǒng)查詢模塊:可根據(jù)不同的條件(條形碼、書名、類別、作者、書架、出版社)查詢讀者需要的圖書、讀者可根據(jù)不同的條件(圖書條形碼、圖書名稱、讀者編號(hào)、讀者名字、到期時(shí)間)查詢自己借閱圖書信息。(6)排行榜模塊:可以讓讀者知道圖書借閱的排行榜及讀者借閱的排行榜。3.4 系統(tǒng)功能結(jié)構(gòu)圖 根據(jù)圖書管理系統(tǒng)的實(shí)際需求,可以將圖書管理系統(tǒng)劃分為系統(tǒng)設(shè)置、圖書管理、讀者管理、圖書借還、系統(tǒng)查詢、排行榜6個(gè)部分各個(gè)部分的具體功能的系統(tǒng)功能結(jié)構(gòu)圖如圖3-1所示。圖書管理系統(tǒng)系統(tǒng)設(shè)置 管理員設(shè)置 書架設(shè)置讀者管理排行榜圖書管理圖書借還系統(tǒng)查詢讀者類型管理圖書借閱排行榜讀者借閱排行榜圖書借閱查詢圖書檔案查詢 圖書歸還 圖書借閱圖書檔案管理圖書類型管理讀者檔案管理圖3-1 系統(tǒng)功能結(jié)構(gòu)圖(1)圖書借閱系統(tǒng)完成用戶的借書過程其數(shù)據(jù)流圖如圖3-2所示。圖3-2 借閱系統(tǒng)的數(shù)據(jù)流圖(2)還書系統(tǒng)完成圖書的歸還過程其數(shù)據(jù)流圖如圖3-3所示。圖3-3 歸還系統(tǒng)的數(shù)據(jù)流圖 (3)圖書檔案管理系統(tǒng)為用戶提供圖書檔案信息其數(shù)據(jù)流圖如圖3-4所示。3-4 圖書檔案管理數(shù)據(jù)流圖(4)讀者檔案系統(tǒng)用于記錄讀者的詳細(xì)信息其數(shù)據(jù)流圖如圖3-5所示。圖3-5 讀者檔案管理數(shù)據(jù)流圖3.5 系統(tǒng)流程圖圖書管理系統(tǒng)的流程是用戶先輸入自己的帳號(hào)密碼及系統(tǒng)顯示的驗(yàn)證碼進(jìn)入系統(tǒng)如有一項(xiàng)不符合則不能進(jìn)入系統(tǒng),成功登陸系統(tǒng)后系統(tǒng)根劇登陸的帳號(hào)信息從數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行對(duì)比判斷是讀者還是管理員,如果是讀者則能進(jìn)行信息查詢,及修改自己的相關(guān)信息,查詢到自己所需要的圖書就能通過管理員進(jìn)行借閱圖書、歸還圖書也是通過管理員完成的。如果不是讀者而是管理員,那管理員可以進(jìn)行相關(guān)信息的查詢、添加刪除圖書及讀者的所有信息、設(shè)置相應(yīng)的權(quán)限、為圖書更新排行榜的信息、以及完成讀者的圖書借閱與歸還。圖書管理系統(tǒng)的系統(tǒng)流程圖如圖3-6所示。登陸系統(tǒng)是否登陸判斷身份管理員讀者圖書歸還圖書借閱信息查詢排行榜信息圖書信息讀者信息否圖3-6 圖書管理系統(tǒng)的流程圖4 數(shù)據(jù)總體結(jié)構(gòu)設(shè)計(jì)4.1 數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計(jì)數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計(jì)是在需求分析的基礎(chǔ)上,設(shè)計(jì)出能夠滿足用戶需求的各種實(shí)體,以及它們之間的關(guān)系,為后面的邏輯結(jié)構(gòu)設(shè)計(jì)打下基礎(chǔ)。這個(gè)階段不用考慮所采用的數(shù)據(jù)庫管理系統(tǒng)、操作系統(tǒng)類型、機(jī)器類型等問題。這階段可用的工具很多。用的最多的是E-R圖(Entity-Relation,實(shí)體-關(guān)系圖),另外還有許多計(jì)算機(jī)輔助工具(Computer Aided Software Engineering, CASE)可以幫助進(jìn)行設(shè)計(jì)。本系統(tǒng)采用了E-R圖的方法進(jìn)行數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計(jì)。E-R圖是描述數(shù)據(jù)實(shí)體關(guān)系的一種直觀描述工具。這種圖中有:(1)實(shí)體:用方框表示,方框內(nèi)為實(shí)體的名稱。(2)實(shí)體的各種屬性:用橢圓表示,橢圓內(nèi)為屬性名稱。使用線段將其和響應(yīng)的實(shí)體連接起來。 (3)實(shí)體之間的聯(lián)系:用菱形表示,菱形內(nèi)為聯(lián)系的名稱。實(shí)體和實(shí)體之間的聯(lián)系較多,比較常見的聯(lián)系有l(wèi):1,l:N和M:N這三種。4.2 數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計(jì)概念結(jié)構(gòu)是獨(dú)立于實(shí)際數(shù)據(jù)模型的信息結(jié)構(gòu),必須將其轉(zhuǎn)化為邏輯結(jié)構(gòu)后才能進(jìn)行數(shù)據(jù)庫應(yīng)用的設(shè)計(jì)。也就是要將概念上的結(jié)構(gòu)轉(zhuǎn)化為數(shù)據(jù)庫系統(tǒng)所支持的實(shí)際數(shù)據(jù)模型。 第一種轉(zhuǎn)化是將實(shí)體轉(zhuǎn)化為關(guān)系表。這種轉(zhuǎn)化較簡(jiǎn)單,需要將實(shí)體的屬性定義為表的屬性即可。 第二種轉(zhuǎn)化是聯(lián)系的轉(zhuǎn)化。即將各個(gè)實(shí)體之間的聯(lián)系轉(zhuǎn)化為表格之間的關(guān)系,如外部鍵的定義。 在上面工作的基礎(chǔ)上歸納出人員管理數(shù)據(jù)庫表格的組成之間的聯(lián)系等等。該數(shù)據(jù)庫系統(tǒng)具有以下方面的特點(diǎn): 結(jié)構(gòu)合理,對(duì)一個(gè)人員建立多條記錄。 所建立的數(shù)據(jù)冗余度小,獨(dú)立性強(qiáng)。 建檔、修改、查詢、統(tǒng)計(jì)快速而準(zhǔn)確。保密性好、可靠性好。 圖書管理系統(tǒng)中要有圖書,圖書是圖書管理系統(tǒng)中密不可分的部分,因此要?jiǎng)?chuàng)建一圖書信息實(shí)體,用來保存圖書的詳細(xì)信息。圖書信息實(shí)體屬性圖如圖4-1所 圖4-1 圖書信息實(shí)體屬圖 讀者是圖書管理系統(tǒng)重要組成部分,這里創(chuàng)建了一個(gè)讀者信息實(shí)體,用來存儲(chǔ)讀者的詳細(xì)信息。讀者信息實(shí)體E-R圖如圖4.2所示。圖4-2 讀者信息實(shí)體屬性圖圖書的借閱和歸還是圖書管理系統(tǒng)中的一項(xiàng)重要的環(huán)節(jié),開發(fā)圖書管理系統(tǒng)就是為了方便讀者對(duì)圖書的借閱和歸還,因此要建立一個(gè)圖書借還實(shí)體,用來保存讀者對(duì)圖書的借閱和歸還的詳細(xì)信息。圖書的借閱和歸還實(shí)體屬性圖如圖4-3所示。圖4-3 讀者借還實(shí)體屬性圖圖書管理系統(tǒng)為了增加系統(tǒng)的安全性,管理員只有在系統(tǒng)登陸模塊驗(yàn)證通過后才能進(jìn)入管理員的操作界面,因此套在數(shù)據(jù)庫中創(chuàng)建一個(gè)存放登錄用戶信息的管理員實(shí)體。管理員實(shí)體屬性圖如圖4-4所示。圖4-4 管理員實(shí)體屬性圖4.3 圖書管理系統(tǒng)的系統(tǒng)E-R圖圖書管理系統(tǒng)的系統(tǒng)E-R圖如圖4-5所示。讀者圖書管理員管理管理借還還書時(shí)間借書時(shí)間刪除類型條形碼修改密碼修改名稱編號(hào)類型編號(hào)添加添加刪除圖4-5 圖書管理系統(tǒng)的系統(tǒng)E-R圖4.4 數(shù)據(jù)表設(shè)計(jì)本系統(tǒng)使用的數(shù)據(jù)庫管理系統(tǒng)為MySQL5.0。數(shù)據(jù)庫中的表有管理員信息表、圖書信息表、讀者信息表、管理員權(quán)限表、圖書借閱歸還表等。圖書管理員基本信息表tb_admin,如表4-6所示。字段名數(shù)據(jù)類型長(zhǎng)度主鍵描述idvarchar50是管理員編號(hào)namevarchar50否管理員名稱pwdvarchar30否密碼 表4-6 tb_admin(管理員)表 讀者詳細(xì)信息表tb_reader,如表4-7所示。字段名數(shù)據(jù)類型長(zhǎng)度主鍵描述idvarchar30是讀者編號(hào)namevarchar50否讀者名稱sexchar4否性別typevarchar50否讀者類型 birthday smalldatetime4否生日paperTypevarchar20否證件類型paperNumvarchar30否證件號(hào)碼telvarchar20否電話emailvarchar50否E-mailcreateDatesmalldatetime4否注冊(cè)日期opervarchar30否操作員remarktext16否備注borrownumint4否 借閱次數(shù) 表4-7 tb_reader(讀者信息)表圖書詳細(xì)信息表tb_bookkifo,如表4-8所示。字段名數(shù)據(jù)類型長(zhǎng)度主鍵描述Bookcodevarchar30是圖書條形碼booknamevarchar50否圖書名稱typevarchar50否圖書類型autorvarchar50否作者translatorvarchar50否譯者pubnamevarchar100否出版社pricemoney8否價(jià)格pageint4否頁碼bcasevarchar50否書架storagebigint8否 存儲(chǔ)數(shù)量inTimesmalldatetime4否入館時(shí)間opervarchar30否操作員borrownumint4否被借次數(shù)表4-8 tb_bookkifo(圖書信息)表圖書借閱和歸還信息表tb_borrowandback,如表4-9所示。字段名數(shù)據(jù)類型長(zhǎng)度主鍵描述idvarchar30是借書編號(hào)readidvarchar20否讀者編號(hào)bookcodevarchar30否圖書條形碼borrowTimesmalldatetime4否借書時(shí)間ygbackTimesmalldatetime4否應(yīng)該還書時(shí)間sjbackTimesmalldatetime4否實(shí)際還書時(shí)間borrowopervarchar30否借書操作backopervarchar30否還書操作isbackbit1否 是否歸還 表4-9 tb_borrowandback(圖書借閱和歸還信息)表權(quán)限信息表tb_purview,如表4-10所示。字段名數(shù)據(jù)類型長(zhǎng)度主鍵描述idvarchar50是用戶編號(hào)sysetbit1否系統(tǒng)設(shè)置readsetbit1否讀者管理booksetbit1否圖書管理borrowbackbit1否圖書借還syaquerybit1否系統(tǒng)查詢表4-10 tb_purview(權(quán)限信息)表5 圖書管理系統(tǒng)詳細(xì)設(shè)計(jì)5.1 系統(tǒng)流程分析根據(jù)開發(fā)圖書管理系統(tǒng)的需求分析,本系統(tǒng)設(shè)計(jì)了三種用戶,分別為系統(tǒng)管理員、教師和學(xué)生。系統(tǒng)要求有系統(tǒng)管理員用戶,我們?cè)O(shè)定系統(tǒng)管理員,當(dāng)系統(tǒng)管理員使用帳戶登錄后,需要查看有關(guān)圖書的一系列的信息,管理員可以通過系統(tǒng)導(dǎo)航菜單進(jìn)入讀者管理界面、圖書管理界面、圖書借還界面、系統(tǒng)查詢界面、排行榜界面,在讀者界面中,管理員添加和修改學(xué)生或教師信息、用戶可以查看自己信息,在圖書管理界面管理員可以添加和修改圖書信息、用戶可查看圖書,在圖書借還界面完成讀者借書還書的操作,系統(tǒng)查詢界面管理員可以查看借出去的圖書信息及庫存的信息、用戶可以查找自己的所需的圖書,排行榜界面主要是可以讓用戶知道哪些圖書受到讀者的喜愛。讀者(老師和學(xué)生)使用讀者帳號(hào)登陸系統(tǒng)后,可以查詢自己所需要的圖書的信息、也可以查詢自己個(gè)人的基本信息及圖書的借還信息,還能查看排行榜的信息。讀者的借書和還書過程是通過管理員完成的。5.2 主要模塊的運(yùn)行5.2.1 登陸界面當(dāng)用戶輸入用戶名、密碼,系統(tǒng)自動(dòng)將輸入的信息和相關(guān)數(shù)據(jù)表中的內(nèi)容進(jìn)行比較,如果該用戶輸入的內(nèi)容和數(shù)據(jù)表中的內(nèi)容相符,則通過驗(yàn)證,此次登錄成功;否則登錄失敗。比較的過程是由瀏覽器將指令,數(shù)據(jù)發(fā)送到Web服務(wù)器,Web服務(wù)器通過對(duì)數(shù)據(jù)庫進(jìn)行查詢將結(jié)果返回到瀏覽器,從而端顯示成功的消息,用戶只有成功登陸系統(tǒng)后才能進(jìn)行一系列的操作,如下圖5-1所示。 5-1 圖書管理系統(tǒng)登陸界面5.2.2 圖書信息管理模塊圖書信息管理模塊主要分為查看圖書信息頁面和添加修改圖書信息頁面,用戶可以在查看圖書信息頁面查看圖書的基本信息,管理員也可以看這些信息,并且可以通過單擊“添加圖書信息”這個(gè)超級(jí)鏈接或集合列表中的“詳情”超級(jí)鏈接轉(zhuǎn)到添加或刪除圖書信息界面,并在該頁中添家或修改圖書信息,如圖5-2與5-3所示。圖5-2 查看圖書信息界面5-3 添家或修改圖書信息界面圖書信息管理模塊的實(shí)現(xiàn),主要是使用了Hibernate框架操作數(shù)據(jù)庫技術(shù)。Hibernate,通過對(duì)jdbc進(jìn)行封裝,對(duì) java類和關(guān)系數(shù)據(jù)庫進(jìn)行mapping,實(shí)現(xiàn)了對(duì)關(guān)系數(shù)據(jù)庫的面向?qū)ο蠓绞降牟僮?,改變了傳統(tǒng)的jdbc + sql操作數(shù)據(jù)的方式,從而使開發(fā)人員可以話更多精力進(jìn)行對(duì)象方面的開發(fā)。其優(yōu)點(diǎn)并不只是簡(jiǎn)化了數(shù)據(jù)庫操作,更有價(jià)值的是對(duì)不同的數(shù)據(jù)庫提供了統(tǒng)一操作的接口,使應(yīng)用程序的跨數(shù)據(jù)庫開發(fā)成為可能。5.2.3 圖書借還信息模塊圖書借還管理模塊主要分為圖書借閱頁面和圖書歸還頁面,用戶可以在通過這個(gè)模塊查看圖書的借閱和歸還信息。管理員可以在圖書通過這個(gè)模塊來完成讀者借和還書的操作,如圖5-4與5-5所示。圖5-4 圖書的借閱管理圖5-5 圖書歸還管理5.3 系統(tǒng)開發(fā)的遇到的相關(guān)問題及解決5.3.1 圖書管理系統(tǒng)索引 圖書管理系統(tǒng)開發(fā)中存在大量的數(shù)據(jù)和信息檢索,怎樣更好的檢索數(shù)據(jù)和信息操作是保證檢索速度的提高和數(shù)據(jù)的分頁顯示,主要考慮了以下幾個(gè)方面:(1)設(shè)計(jì)邏輯結(jié)構(gòu)時(shí)充分考慮冗余量和可處理性兩方面的要求,在接受冗余量的提下,盡量減少表的連接操作。(2)關(guān)系的大小對(duì)查詢的影響也是很大的,因此為了提高數(shù)據(jù)庫的查詢速度,減小系的大小和數(shù)據(jù)量也是必要的。(3)建立合理的索引結(jié)構(gòu)。索引相當(dāng)于一個(gè)映射機(jī)構(gòu),將鍵值轉(zhuǎn)換成相對(duì)應(yīng)的記錄地址,形成索引文件。索引設(shè)計(jì)是數(shù)據(jù)庫物理設(shè)計(jì)的基本問題,也是較困難的問題,建立索引可以極大地提高系統(tǒng)的查詢速度,但是同時(shí)做Insert、Update、Delete操作時(shí)會(huì)降低速度,因?yàn)樽鲞@些操作的同時(shí)需要更新索引,所以不能對(duì)數(shù)據(jù)庫中所有的表都建立索引。比如滿足下列條件之一的不易建立索引:不出現(xiàn)或很少出現(xiàn)的屬性或表、屬性分布嚴(yán)重不均的屬性、經(jīng)常更新的屬性或表、過長(zhǎng)的屬性、太小的表等。滿足下列條件之一的可以考慮建立索引:主鍵和外鍵都建立索引、對(duì)于以讀為主或只讀的表,只要需要,且存儲(chǔ)空間允許,可以減少連接開銷、對(duì)于等值查詢(即查詢條件以等號(hào)為比較符),最好建立索引、對(duì)查詢范圍(即查詢條件>,<,為比較符),最好建立索引、有些查詢可以由檢索直接得到結(jié)果,不必訪問數(shù)據(jù)塊。根據(jù)實(shí)際需要,讀者信息表,圖書信息表,圖書借還信息表,權(quán)限信息,管理員信息表等都建立索引,合理使用緩沖區(qū)。5.3.2 如何驗(yàn)證輸入的字符串在圖書管理系統(tǒng)的開發(fā)過程中,需要對(duì)一些輸入的字符串進(jìn)行驗(yàn)證,例如金額、電話號(hào)碼、E-mail等,由于許多模塊都需要用到這些驗(yàn)證,因此可以將其寫入到一個(gè)公共JS腳本中然后在其他的頁面中直接調(diào)用即可。JS中對(duì)字符串進(jìn)行驗(yàn)證時(shí),十分的方便快捷,減少服務(wù)器與客戶端交互的過程,在客戶端輕松的解決,要使用正則表達(dá)式驗(yàn)證輸入的字符串,如驗(yàn)證輸入的字符串是否為E-mail的地址格式的實(shí)現(xiàn)方法。代碼如下:驗(yàn)證輸入為Emailif(formname.email.value!=formname.email.value.match(/w +w +.w. +$/) alert("您的電子郵件格式錯(cuò)誤!"); formname.email.focus(); return false; 5.3.3 自動(dòng)計(jì)算圖書歸還日期在圖書管理系統(tǒng)運(yùn)行中會(huì)常常遇到這樣的問題:在借閱圖書時(shí),需要自動(dòng)計(jì)算圖書的歸還日期,而這個(gè)日期又不是固定不變的,它是需要根據(jù)系統(tǒng)日期和數(shù)據(jù)表中保存的各類圖書的最多借閱天數(shù)來計(jì)算的,即圖書歸還日期=“系統(tǒng)日期”+“最多借閱天數(shù)”。因此本系統(tǒng)是這樣解決問題的:首先獲取系統(tǒng)時(shí)間,然后從數(shù)據(jù)表中查詢出該類圖書最多借閱天數(shù),最后計(jì)算歸還日期。計(jì)算方法如下:首先取出所借圖書的最多借閱天數(shù),然后根據(jù)圖書的最多借閱天數(shù),使用getMaxDay()方法返回一個(gè)int值,最后使用當(dāng)前時(shí)間與先返回的Timespan時(shí)間間隔相加。自動(dòng)計(jì)算圖書歸還日期的關(guān)鍵代碼如下:/獲得當(dāng)前日期SimpleDateFormat time=new SimpleDateFormat("yyyy-MM-dd");Calendar c = Calendar.getInstance();/獲得最多借閱天數(shù)int days = getMaxDay();/增加圖書借閱天數(shù)c.add(Calendar.DAY_OF_MONTH, days);/獲得圖書歸還日期String borrowandbackmanage = time.format(c.getTime();5.3.4 系統(tǒng)登陸驗(yàn)證碼的實(shí)現(xiàn)在學(xué)校圖書管理系統(tǒng)的開發(fā)過程中,怎么樣防止某些人利用某些惡意的軟件對(duì)圖書管理系統(tǒng)進(jìn)行惡意的登陸來攻擊系統(tǒng),增加圖書管理系統(tǒng)的安全性是一個(gè)重要的問題。在圖書管理系統(tǒng)的登陸模塊中加入一個(gè)驗(yàn)證碼的功能,即用戶除了要輸入帳號(hào)和密碼還要輸入系統(tǒng)為用戶提供的驗(yàn)證碼。驗(yàn)證碼可以很好的解決了怎樣防止惡意用戶利用惡意軟件對(duì)系統(tǒng)頁面的瘋狂提交、以及暴力破解密碼進(jìn)行登陸的問題。因此,設(shè)置一個(gè)隨機(jī)函數(shù)在數(shù)字09和英文字母AZ中隨機(jī)抽取四個(gè),在用戶打開登陸界面的時(shí)候,系統(tǒng)通過隨機(jī)生成器隨機(jī)生成4個(gè)數(shù)字或字母或數(shù)字加字母存放在緩存內(nèi),并出現(xiàn)在界面上順序是隨機(jī)的,當(dāng)用戶登陸時(shí)輸入的驗(yàn)證碼要與緩存中的進(jìn)行對(duì)比符合就進(jìn)入,不符合就不能登陸。系統(tǒng)在提供驗(yàn)證碼時(shí)候要加入一些干擾的條件的,不過這些人的肉眼是很容易分辨,但機(jī)器人程序不能分辨,很好的防止某人利用機(jī)器人程序?qū)ο到y(tǒng)的惡意操作增加了系統(tǒng)的安全性。驗(yàn)證碼實(shí)現(xiàn)的關(guān)鍵代碼如下:<input name="rand" type="text" style="width:40px; height:20px;" onkeydown="if(event.keyCode=13)MM_submit();" /> <img src="image.jsp" border="1" align="absmidd