




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
-1-第一章緒論1.1課題背景、目的及意義1.1.1課題背景隨著社會(huì)的發(fā)展,人們對(duì)知識(shí)的需求也不斷地增長(zhǎng)。在這種形勢(shì)下,書籍就漸漸地成為人們獲取并增長(zhǎng)知識(shí)的主要途徑,而圖書就自然而然地在人們的生活中占據(jù)了一定的位置,如何科學(xué)地管理圖書不但關(guān)系到讀者求知的方便程度,也關(guān)系到圖書的發(fā)展,因此,開發(fā)一套完善的圖書管理系統(tǒng)就必不可少了,本文介紹了在Windows7及Java、JSP、SQL、MyEclipse環(huán)境下采用“自上而下地總體規(guī)劃,自下而上地應(yīng)用開發(fā)”的策略開發(fā)本系統(tǒng)的詳細(xì)過程,提出實(shí)現(xiàn)圖書信息管理、資源共享的基本目標(biāo),從而推動(dòng)邁向數(shù)字化圖書的步伐,并闡述系統(tǒng)結(jié)構(gòu)設(shè)計(jì)和功能設(shè)計(jì),從圖書的入庫(kù)登記到查詢?yōu)g覽,從借書證發(fā)放到圖書的借閱,形成了一個(gè)整體自動(dòng)化管理模式,從軟件工程的角度進(jìn)行了科學(xué)而嚴(yán)謹(jǐn)?shù)年U述。圖書作為一種信息資源的集散地,圖書和用戶借閱資料繁多,包含很多的信息數(shù)據(jù)的管理,現(xiàn)今,有很多的圖書都是初步開始使用,甚至尚未使用計(jì)算機(jī)進(jìn)行信息管理。根據(jù)調(diào)查得知,他們以前對(duì)信息管理的主要方式是基于文本、表格等紙介質(zhì)的手工處理,對(duì)于圖書借閱情況(如借書天數(shù)、超過限定借書時(shí)間的天數(shù))的統(tǒng)計(jì)和核實(shí)等往往采用對(duì)借書卡的人工檢查進(jìn)行,對(duì)借閱者的借閱權(quán)限、以及借閱天數(shù)等用人工計(jì)算、手抄進(jìn)行。數(shù)據(jù)信息處理工作量大,容易出錯(cuò);由于數(shù)據(jù)繁多,容易丟失,且不易查找??偟膩碚f,缺乏系統(tǒng),規(guī)范的信息管理手段。盡管有的圖書有計(jì)算機(jī),但是尚未用于信息管理,沒有發(fā)揮它的效力,資源閑置比較突出,這就是圖書管理系統(tǒng)的開發(fā)的基本環(huán)境。1.1.2課題目的和意義在各行各業(yè)競(jìng)爭(zhēng)日益激烈的今天,提高工作效率和工作質(zhì)量是每個(gè)企業(yè)必須面臨并且必須解決的重大課題。有了《基于JAVA的圖書管理系統(tǒng)》就不需要客戶到書城手工查詢需要的圖書,而只需在自家的電腦前輸入查詢條件,或通過類別查詢,快速而準(zhǔn)確的找到需要的圖書,大大加快了查詢速度?!痘贘AVA的圖書管理系統(tǒng)》不僅可以大量減少人力、物力,降低了成本,而且突破了時(shí)間和空間的限制,使得圖書交易活動(dòng)可以在任何時(shí)間、任何地點(diǎn)進(jìn)行,實(shí)現(xiàn)24小時(shí)營(yíng)業(yè),不需要營(yíng)業(yè)員,圖書管理系統(tǒng)可以被設(shè)置成一個(gè)自動(dòng)售貨機(jī)。同時(shí),《基于JAVA的圖書管理系統(tǒng)》更容易開拓全球市場(chǎng)從而大大提高了效率,對(duì)推動(dòng)《基于JAVA的圖書管理系統(tǒng)》未來的發(fā)展有著一定的實(shí)際意義。鑒于互聯(lián)網(wǎng)的優(yōu)勢(shì)以及對(duì)國(guó)內(nèi)外相關(guān)圖書管理系統(tǒng)網(wǎng)站現(xiàn)狀的研究分析,我決定以基于Web的《基于JAVA的圖書管理系統(tǒng)》開發(fā)作為我的畢業(yè)設(shè)計(jì)主題。立足于設(shè)計(jì)一個(gè)在網(wǎng)絡(luò)平臺(tái)上運(yùn)行的集購(gòu)物、確認(rèn)和配送等功能于一體的圖書管理系統(tǒng),以小小的力量推動(dòng)中國(guó)互聯(lián)網(wǎng)的發(fā)展。1.2國(guó)內(nèi)外研究現(xiàn)狀1.2.1國(guó)外的研究現(xiàn)狀網(wǎng)上售書這是信息社會(huì)發(fā)展的必然要求。國(guó)際互聯(lián)網(wǎng)的開通,為信息社會(huì)的飛速發(fā)展創(chuàng)造了條件。在美、日等信息化程度較高的國(guó)家和地區(qū),網(wǎng)上圖書銷售發(fā)展速度迅猛。據(jù)InternetWorldStatS的統(tǒng)計(jì),今天的互聯(lián)網(wǎng)有17億用戶。而目前的全球人口為67億,到2020年毫無疑問會(huì)有更多的人使用互聯(lián)網(wǎng)。美國(guó)國(guó)家科學(xué)基金會(huì)預(yù)計(jì),到那時(shí)互聯(lián)網(wǎng)的用戶數(shù)量將接近50億。網(wǎng)民隊(duì)伍的迅速擴(kuò)充,無疑為網(wǎng)上售書的發(fā)展提供了巨大的市場(chǎng)空間。加上圖書因其具有標(biāo)識(shí)清晰、規(guī)格統(tǒng)一、特征容易描述、同種商品個(gè)體之間無差異等特性而能成為發(fā)展電子商務(wù)的最為理想的商品類型。因此,網(wǎng)上售書成為各國(guó)發(fā)展電子商務(wù)的首選目標(biāo),國(guó)際互聯(lián)網(wǎng)開通后,各國(guó)電子商務(wù)網(wǎng)站很大一部分都是網(wǎng)上書店。只要網(wǎng)絡(luò)發(fā)展沒有停止,網(wǎng)上售書的發(fā)展就不會(huì)停止。1.2.2國(guó)內(nèi)的研究現(xiàn)狀近年來,隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,網(wǎng)絡(luò)技術(shù)應(yīng)用已經(jīng)相當(dāng)普及,使得在線借閱成為現(xiàn)實(shí),各種各樣的網(wǎng)上圖書銷售系統(tǒng)層出不窮,國(guó)內(nèi)各大圖書商都在創(chuàng)建自己的計(jì)算機(jī)網(wǎng)上電子商務(wù)系統(tǒng)。隨著科學(xué)技術(shù)的飛速發(fā)展,Internet這個(gè)昔日少數(shù)科學(xué)家接觸和使用的科研工具已經(jīng)成了普通百姓都可以觸及的大眾型媒體傳播手段。第二章可行性分析2.1社會(huì)可行性隨著計(jì)算機(jī)技術(shù)的發(fā)展和網(wǎng)絡(luò)人口的增加,網(wǎng)絡(luò)世界也越來越廣博,越來越豐富,網(wǎng)上售書已經(jīng)成為網(wǎng)上的一股潮流。相信要不了太長(zhǎng)有時(shí)間,顧客就可以在網(wǎng)絡(luò)世界上獲得他們?cè)诂F(xiàn)實(shí)世界上可以獲得的任何圖書。《基于JAVA的圖書管理系統(tǒng)》系統(tǒng)主要目的是進(jìn)行網(wǎng)上售書,并且嚴(yán)格按照國(guó)家法律法規(guī)來進(jìn)行研究和實(shí)踐,并無法律和政策方面的限制。2.2技術(shù)可行性本系統(tǒng)采用的是JSP、Servlet和MySQL開發(fā),WindowsXPProfessional操作系統(tǒng),用Dreamweaver進(jìn)行前臺(tái)網(wǎng)頁界面設(shè)計(jì)、采用JDBC方式與后臺(tái)數(shù)據(jù)庫(kù)進(jìn)行連接,完成數(shù)據(jù)的添加、修改、刪除、查詢等功能。由于JSP、Servlet功能強(qiáng)大,而MySQL靈活易維護(hù)在開發(fā)方面具有方便快捷、使用靈活的特點(diǎn),以及目前的廣泛實(shí)際應(yīng)用,因此使用JSP、Servlet、MySQL是開發(fā)輕平臺(tái)的最佳組合從而說明本系統(tǒng)在技術(shù)方面可行。硬件方面,科技飛速發(fā)展的今天,硬件更新的速度越來越快,容量越來越大,可靠性越來越高,價(jià)格越來越低,其硬件平臺(tái)完全能滿足此系統(tǒng)的需要。2.3操作可行性目前,大多數(shù)計(jì)算機(jī)都能運(yùn)行該系統(tǒng),該系統(tǒng)的安裝、調(diào)試、運(yùn)行不會(huì)改變?cè)?jì)算機(jī)系統(tǒng)的設(shè)置和布局,并且系統(tǒng)界面簡(jiǎn)單,提示信息完整,由相關(guān)人員指導(dǎo)便能夠方便的操作此軟件。2.4系統(tǒng)的技術(shù)介紹2.4.1JavaScriptJavaScript是一種基于對(duì)象和事件驅(qū)動(dòng)并具有相對(duì)安全性的客戶端腳本語言。同時(shí)也是一種廣泛用于客戶端Web開發(fā)的腳本語言,常用來給HTML網(wǎng)頁添加動(dòng)態(tài)功能,比如響應(yīng)用戶的各種操作。它最初由網(wǎng)景公司(Netscape)的BrendanEich設(shè)計(jì),是一種動(dòng)態(tài)、弱類型、基于原型的語言,內(nèi)置支持類。JavaScript語言與Java語言在語法上比較相似,但隨著對(duì)JavaScript的深入了解后你會(huì)發(fā)現(xiàn),它們說到底是兩種語言!2.4.2JQueryJQuery是一個(gè)兼容多瀏覽器的JavaScript框架,核心理念是writeless,domore(寫得更少,做得更多)。jQuery在2006年1月由美國(guó)人JohnResig在紐約的barcamp發(fā)布,吸引了來自世界各地的眾多JavaScript高手加入,由DaveMethvin率領(lǐng)團(tuán)隊(duì)進(jìn)行開發(fā)。如今,JQuery已經(jīng)成為最流行的JavaScript框架,在世界前10000個(gè)訪問最多的網(wǎng)站中,有超過55%在使用JQuery。JQuery是免費(fèi)、開源的,使用MIT許可協(xié)議。JQuery的語法設(shè)計(jì)可以使開發(fā)者更加便捷,例如操作文檔對(duì)象、選擇DOM元素、制作動(dòng)畫效果、事件處理、使用Ajax以及其他功能。除此以外,JQuery提供API讓開發(fā)者編寫插件。其模塊化的使用方式使開發(fā)者可以很輕松的開發(fā)出功能強(qiáng)大的靜態(tài)或動(dòng)態(tài)網(wǎng)頁。2.4.3MySQLMySQL是一個(gè)開放源碼的小型關(guān)聯(lián)式數(shù)據(jù)庫(kù)管理系統(tǒng),開發(fā)者為瑞典MySQLAB公司。MySQL被廣泛地應(yīng)用在Internet上的中小型網(wǎng)站中。由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點(diǎn),許多中小型網(wǎng)站為了降低網(wǎng)站總體擁有成本而選擇了MySQL作為網(wǎng)站數(shù)據(jù)庫(kù)。自從Oracle公司收購(gòu)了MySQL后不久,就發(fā)行了MySQL的企業(yè)版(不再免費(fèi))!2.4.4MVCMVC即模型-視圖-控制器,是XeroxPARC在八十年代為編程語言Smalltalk-80發(fā)明的一種軟件設(shè)計(jì)模式,至今已被廣泛使用。最近幾年被推薦為Sun公司J2EE平臺(tái)的設(shè)計(jì)模式,并且受到越來越多的使用ColdFusion和PHP的開發(fā)者的歡迎。MVC是一種設(shè)計(jì)模式,它強(qiáng)制性的使應(yīng)用程序的輸入、處理和輸出分開。使用MVC應(yīng)用程序被分成三個(gè)核心部件:模型、視圖、控制器。它們各自處理自己的任務(wù)。(1)模型模型表示企業(yè)數(shù)據(jù)和業(yè)務(wù)規(guī)則。在MVC的三個(gè)部件中,模型擁有最多的處理任務(wù)。例如它可能用象EJBs和ColdFusionComponents這樣的構(gòu)件對(duì)象來處理數(shù)據(jù)庫(kù)。被模型返回的數(shù)據(jù)是中立的,就是說模型與數(shù)據(jù)格式無關(guān),這樣一個(gè)模型能為多個(gè)視圖提供數(shù)據(jù)。由于應(yīng)用于模型的代碼只需寫一次就可以被多個(gè)視圖重用,所以減少了代碼的重復(fù)性。(2)視圖視圖是用戶看到并與之交互的界面。對(duì)老式的Web應(yīng)用程序來說,視圖就是由HTML元素組成的界面,在新式的Web應(yīng)用程序中,HTML依舊在視圖中扮演著重要的角色,但一些新的技術(shù)已層出不窮,它們包括MacromediaFlash和象XHTML,XML/XSL,WML等一些標(biāo)識(shí)語言和Webservices.如何處理應(yīng)用程序的界面變得越來越有挑戰(zhàn)性。MVC一個(gè)大的好處是它能為你的應(yīng)用程序處理很多不同的視圖。在視圖中其實(shí)沒有真正的處理發(fā)生,不管這些數(shù)據(jù)是聯(lián)機(jī)存儲(chǔ)的還是一個(gè)雇員列表,作為視圖來講,它只是作為一種輸出數(shù)據(jù)并允許用戶操縱的方式。(3)控制器控制器接受用戶的輸入并調(diào)用模型和視圖去完成用戶的需求。所以當(dāng)單擊Web頁面中的超鏈接和發(fā)送HTML表單時(shí),控制器本身不輸出任何東西和做任何的處理。它只是接收請(qǐng)求并決定調(diào)用哪個(gè)模型構(gòu)件去處理請(qǐng)求,然后確定用哪個(gè)視圖來顯示模型處理返回的數(shù)據(jù)。綜上所述,MVC的處理過程是首先控制器接收用戶的請(qǐng)求,并決定應(yīng)該調(diào)用哪個(gè)模型來進(jìn)行處理,然后模型用業(yè)務(wù)邏輯來處理用戶的請(qǐng)求并返回?cái)?shù)據(jù),最后控制器用相應(yīng)的視圖格式化模型返回的數(shù)據(jù),并通過表示層呈現(xiàn)給用戶。2.4.5JDBCJDBC(JavaDataBaseConnectivity,java數(shù)據(jù)庫(kù)連接)是一種用于執(zhí)行SQL語句的JavaAPI,可以為多種關(guān)系數(shù)據(jù)庫(kù)提供統(tǒng)一訪問,它由一組用Java語言編寫的類和接口組成。JDBC為工具/數(shù)據(jù)庫(kù)開發(fā)人員提供了一個(gè)標(biāo)準(zhǔn)的API,據(jù)此可以構(gòu)建更高級(jí)的工具和接口,使數(shù)據(jù)庫(kù)開發(fā)人員能夠用純JavaAPI編寫數(shù)據(jù)庫(kù)應(yīng)用程序,同時(shí),JDBC也是個(gè)商標(biāo)名。有了JDBC,向各種關(guān)系數(shù)據(jù)發(fā)送SQL語句就是一件很容易的事。換言之,有了JDBCAPI,就不必為訪問Sybase數(shù)據(jù)庫(kù)專門寫一個(gè)程序,為訪問Oracle數(shù)據(jù)庫(kù)又專門寫一個(gè)程序,或?yàn)樵L問Informix數(shù)據(jù)庫(kù)又編寫另一個(gè)程序等等,程序員只需用JDBCAPI寫一個(gè)程序就夠了,它可向相應(yīng)數(shù)據(jù)庫(kù)發(fā)送SQL調(diào)用。同時(shí),將Java語言和JDBC結(jié)合起來使程序員不必為不同的平臺(tái)編寫不同的應(yīng)用程序,只須寫一遍程序就可以讓它在任何平臺(tái)上運(yùn)行,這也是Java語言“編寫一次,處處運(yùn)行”的優(yōu)勢(shì)。2.4.6DbutilsCommonDbutils是操作數(shù)據(jù)庫(kù)的組件,對(duì)傳統(tǒng)操作數(shù)據(jù)庫(kù)的類進(jìn)行二次封裝,可以把結(jié)果集轉(zhuǎn)化成List。傳統(tǒng)操作數(shù)據(jù)庫(kù)的類指的是JDBC(javadatabaseconnectivity:java數(shù)據(jù)庫(kù)連接,java的數(shù)據(jù)庫(kù)操作的基礎(chǔ)API。)。Dbutils是java編程中的數(shù)據(jù)庫(kù)操作實(shí)用工具,小巧簡(jiǎn)單實(shí)用,特色:1.對(duì)于數(shù)據(jù)表的讀操作,他可以把結(jié)果轉(zhuǎn)換成List,Array,Set等java集合,便于程序員操作;2.對(duì)于數(shù)據(jù)表的寫操作,也變得很簡(jiǎn)單(只需寫sql語句)3.可以使用數(shù)據(jù)源,使用JNDI,數(shù)據(jù)庫(kù)連接池等技術(shù)來優(yōu)化性能--重用已經(jīng)構(gòu)建好的數(shù)據(jù)庫(kù)連接對(duì)象,而不像php,asp那樣,費(fèi)時(shí)費(fèi)力的不斷重復(fù)的構(gòu)建和重構(gòu)這樣的對(duì)象。2.4.7C3P0C3P0是一個(gè)開源的JDBC連接池,它實(shí)現(xiàn)了數(shù)據(jù)源和JNDI綁定,支持JDBC3規(guī)范和JDBC2的標(biāo)準(zhǔn)擴(kuò)展。目前使用它的開源項(xiàng)目有Hibernate,Spring等。2.5系統(tǒng)開發(fā)平臺(tái)及運(yùn)行環(huán)境2.5.1系統(tǒng)開發(fā)平臺(tái)系統(tǒng)的開發(fā)是在Tomcat環(huán)境下進(jìn)行的。Tomcat是一個(gè)免費(fèi)的開源的Servlet容器,它是Apache基金會(huì)的Jakarta項(xiàng)目中的一個(gè)核心項(xiàng)目,由Apache,Sun和其它一些公司及個(gè)人共同開發(fā)而成。由于有了Sun的參與和支持,最新的Servlet和Jsp規(guī)范總能在Tomcat中得到體現(xiàn)。Tomcat被JavaWorld雜志的編輯選為2001年度最具創(chuàng)新的Java產(chǎn)品,可見其在業(yè)界的地位。Tomcat的環(huán)境主要有以下幾方面技術(shù)優(yōu)勢(shì):1.Tomcat中的應(yīng)用程序是一個(gè)WAR(WebArchive)文件。WAR是Sun提出的一種Web應(yīng)用程序格式,與JAR類似,也是許多文件的一個(gè)壓縮包。2.在Tomcat中,應(yīng)用程序的部署很簡(jiǎn)單,你只需將你的WAR放到Tomcat的webapp目錄下,Tomcat會(huì)自動(dòng)檢測(cè)到這個(gè)文件,并將其解壓。3.Tomcat不僅僅是一個(gè)Servlet容器,它也具有傳統(tǒng)的Web服務(wù)器的功能:處理html頁面。4.Tomcat也可以與其它一些軟件集成起來實(shí)現(xiàn)更多的功能。2.5.2運(yùn)行環(huán)境操作系統(tǒng):WindowsXP以上版本。服務(wù)器軟件:Tomcat6.0以上版本。瀏覽器:IE、FireFox、GoogleChrome等。第三章需求分析3.1系統(tǒng)功能模塊概述和分析《基于JAVA的圖書管理系統(tǒng)》模型是典型的企業(yè)級(jí)開發(fā)實(shí)踐中最為普遍的企業(yè)對(duì)客戶(B2C)模式,主要包括:學(xué)生注冊(cè)、用戶登陸、搜索查詢、讀者借書、讀者還書、用戶退出等基本功能。此外,本系統(tǒng)也將實(shí)現(xiàn)圖書管理的后端操作,包括圖書入庫(kù)、圖書刪除、借圖書預(yù)約單的處理等功能。本系統(tǒng)基于JAVAEE技術(shù),在系統(tǒng)的設(shè)計(jì)與開發(fā)過程中嚴(yán)格遵守軟件工程的規(guī)范,運(yùn)用軟件設(shè)計(jì)模式,從而減少系統(tǒng)模塊間的耦合,力求做到系統(tǒng)的穩(wěn)定性、可重用性和可擴(kuò)充性?!痘贘AVA的圖書管理系統(tǒng)》主要功能如下:前臺(tái)(學(xué)生借閱)部分:用戶管理:學(xué)生注冊(cè)、登錄、激活、退出、修改密碼;分類顯示:顯示所有1級(jí)和2級(jí)分類;圖書顯示:按分類查詢圖書、通過關(guān)鍵字搜索圖書、高級(jí)搜索圖書、查看某本圖書的詳細(xì)等;借書單管理:向借書單中添加圖書、修改借書單中圖書數(shù)量、刪除借書單中圖書、我的借書單;圖書預(yù)約單管理:通過借書單中圖書生成圖書預(yù)約單、查看我的圖書預(yù)約單、查看某個(gè)圖書預(yù)約單的詳細(xì)、取消圖書預(yù)約單。(2)后臺(tái)(管理員管理)部分:管理員:管理員登錄;分類管理:查看所有分類、添加1級(jí)分類、添加2級(jí)分類、修改1級(jí)分類、修改2級(jí)分類、刪除1級(jí)分類、刪除2級(jí)分類;圖書管理:按分類搜索圖書、高級(jí)搜索圖書、添加新圖書、查看圖書詳細(xì)信息、編輯圖書、刪除圖書;圖書預(yù)約單管理:按狀態(tài)搜索圖書預(yù)約單、查看圖書預(yù)約單詳細(xì)信息、取消圖書預(yù)約單、確認(rèn)借出;3.2系統(tǒng)功能模塊設(shè)計(jì)根據(jù)系統(tǒng)功能分析,可以畫出系統(tǒng)的功能模塊圖。前臺(tái):用戶借書功能圖圖3.2.1用戶借書功能后臺(tái):管理員功能圖:圖3.2.2管理員功能3.3數(shù)據(jù)庫(kù)分析信息系統(tǒng)的主要任務(wù)是通過大量數(shù)據(jù)獲得管理所需要的信息,這就要求系統(tǒng)本身能夠存儲(chǔ)和管理大量的數(shù)據(jù),而這一功能的實(shí)現(xiàn)必須借助大型數(shù)據(jù)庫(kù)系統(tǒng)。本系統(tǒng)的開發(fā)選擇MySQL作為后臺(tái)數(shù)據(jù)庫(kù)開發(fā)工具。1.概念模型設(shè)計(jì)概念模型用于信息世界的建模,與具體的DBMS無關(guān)。為了把現(xiàn)實(shí)世界中的具體事物抽象、組織為某一DBMS支持的數(shù)據(jù)模型。人們常常首先將現(xiàn)實(shí)世界抽象為信息世界,然后再將信息世界轉(zhuǎn)換為機(jī)器世界。也就是說,首先把現(xiàn)實(shí)世界中的客觀對(duì)象抽象為某一種信息結(jié)構(gòu),這種信息結(jié)構(gòu)并不依賴于具體的計(jì)算機(jī)系統(tǒng)和具體的DBMS,而是概念級(jí)的模型,然后再把模型轉(zhuǎn)換為計(jì)算機(jī)上某一個(gè)DBMS支持的數(shù)據(jù)模型。實(shí)際上,概念模型是現(xiàn)實(shí)世界到機(jī)器世界的一個(gè)中間層次。信息世界中包含的基本概念有實(shí)體和聯(lián)系。(1)實(shí)體(entity)客觀存在并可相互區(qū)別的事物稱為實(shí)體。實(shí)體可以是具體的人、事、物,也可以是抽象的概念或聯(lián)系。例如,一個(gè)學(xué)生、一門課、一個(gè)供應(yīng)商、一個(gè)部門、一本書、一位讀者等都是實(shí)體。(2)聯(lián)系(relationship)在現(xiàn)實(shí)世界中,事物內(nèi)部以及事物之間是有聯(lián)系的,這些聯(lián)系在信息世界中反映為實(shí)體內(nèi)部的聯(lián)系和實(shí)體之間的聯(lián)系。實(shí)體內(nèi)部的聯(lián)系通常是組成實(shí)體的各屬性之間的聯(lián)系。兩個(gè)實(shí)體型之間的聯(lián)系可以分為3類,一對(duì)一聯(lián)系,(1:1);一對(duì)多聯(lián)系(1:n);多對(duì)多聯(lián)系(m:n)。概念模型是對(duì)信息世界建模,所以概念模型應(yīng)該能夠方便、準(zhǔn)確地表示信息世界中的常用概念。概念模型的表示方法很多,其中最為常用的是P.P.S.Chen于1976年提出的實(shí)體,聯(lián)系方法(Entity-RelationshipApproach)簡(jiǎn)記為E-R表示法)。該方法用E-R圖來描述現(xiàn)實(shí)世界的概念模型,稱為實(shí)體-聯(lián)系模型,簡(jiǎn)稱E-R模型。根據(jù)數(shù)據(jù)流程分析,繪制圖書管理系統(tǒng)的全局E-R模型如圖所示。圖3.3.1數(shù)據(jù)庫(kù)概念模型E-R圖2.數(shù)據(jù)庫(kù)表設(shè)計(jì)數(shù)據(jù)庫(kù)表設(shè)計(jì)主要是把概念結(jié)構(gòu)設(shè)計(jì)時(shí)設(shè)計(jì)好的基本E-R圖轉(zhuǎn)換為與選用DBMS產(chǎn)品所支持的數(shù)據(jù)模型相符合的邏輯結(jié)構(gòu)。它包括數(shù)據(jù)項(xiàng)、記錄及記錄間的聯(lián)系、安全性和一致性約束等等。導(dǎo)出的邏輯結(jié)構(gòu)是否與概念模式一致,從功能和性能上是否滿足用戶的要求,要進(jìn)行模式評(píng)價(jià)。本系統(tǒng)數(shù)據(jù)庫(kù)表如下:(1)讀者信息表(t_user)讀者信息表主要用于存儲(chǔ)讀者信息,主要字段有姓名、性別、年齡、住址、聯(lián)系方式、借書證號(hào)等信息。表3.3.1讀者信息表(t_user)字段名稱數(shù)據(jù)類型主鍵是否空說明uidchar(32)YN主鍵loginnamevarchar(50)NN登錄名loginpassvarchar(50)NN登錄密碼emailvarchar(50)NN郵箱地址statusbooleanNN是否激活activationCodechar(64)NN激活碼(唯一)圖書類別信息表(t_catelog)圖書類別信息表主要用于存放圖書類別的信息,主要字段包括:ID,類別名稱等。表3.3.2圖書類別信息表(t_catelog)字段名稱數(shù)據(jù)類型主鍵是否空說明cidchar(32)YN主鍵cnamevarchar(50)NN分類名稱pidchar(32)NY父分類IDdescvarchar(100)NY分類描述orderByintNY序號(hào),用來排序圖書信息表t_book圖書信息表主要用于存儲(chǔ)圖書信息,主要字段有ID、圖書名稱、出版社、出版日期、ISBN號(hào)、類別ID等。表3.3.3圖書信息表(t_book)字段名稱數(shù)據(jù)類型主鍵是否空說明bidchar(32)YN主鍵bnamevarchar(200)NN書圖名稱authorvarchar(50)NY作者pricedecimal(8,2)NY定價(jià)currPricedecimal(8,2)NY當(dāng)前價(jià)discountdecimal(3,1)NY折扣pressvarchar(100)NY出版社publishtimechar(10)NY出版時(shí)間editionintNY版次pageNumintNY頁數(shù)wordNumintNY字?jǐn)?shù)printtimechar(10)NY印刷時(shí)間booksizeintNY開本papervarchar(50)NY紙質(zhì)cidchar(32)NY所屬分類IDimage_wvarchar(100)NY大圖路徑image_bvarchar(100)NY小圖路徑orderByintNY序號(hào),用來排序借閱信息表t_cartitem讀者信息表主要用于存讀者借閱圖書的信息,主要字段有ID、圖書ID、讀者ID、借閱數(shù)量等。表3.3.4借閱信息表(t_jieyue)字段名稱數(shù)據(jù)類型主鍵是否空說明cartItemIdchar(32)YN主鍵quantityintYN數(shù)量bidchar(32)YN圖書IDuidchar(32)YN用戶IDorderyByintYN序號(hào),用來排序(5)管理員信息表t_admin管理員信息表主要用于系統(tǒng)管理員的信息,主要字段包括:編號(hào)、登陸賬號(hào)、登陸密碼。表3.3.5管理員信息表(t_admin)字段名稱數(shù)據(jù)類型主鍵是否空說明adminIdchar(32)YN主鍵adminnamevarchar(50)YN管理員名稱adminpwdvarchar(50)YN管理員密碼第四章《基于JAVA的圖書管理系統(tǒng)》前臺(tái)設(shè)計(jì)與實(shí)現(xiàn)《基于JAVA的圖書管理系統(tǒng)》的整個(gè)前臺(tái)部分是供用戶瀏覽、挑選圖書的部分,一個(gè)好的網(wǎng)站的前臺(tái)部分一定非常精美,非常有條理,因此,前臺(tái)的設(shè)計(jì)主要把握3點(diǎn):簡(jiǎn)明扼要、條理清晰、層次分明。下面將一一介紹我的《基于JAVA的圖書管理系統(tǒng)》系統(tǒng)的前臺(tái)部分的實(shí)現(xiàn)。4.1首頁設(shè)計(jì)首頁模塊包括3個(gè)主要的部分,采用內(nèi)嵌框架技術(shù)。位置分別為上、左、中。上部的實(shí)現(xiàn)上部包含兩大部分內(nèi)容:網(wǎng)站標(biāo)題、菜單。菜單部分就是一系列的超鏈接,用戶在未登錄時(shí)看到的是“登錄”和“注冊(cè)”鏈 接;在登錄后看到的是“我的借書單”、“我的圖書預(yù)約單”、“修改密碼”、“退出”超鏈接,以及當(dāng)前用戶名稱。左部的實(shí)現(xiàn)左部顯示所有分類,包含所有1級(jí)、2級(jí)分類。左部使用了Javascript的Q6Menu組件來完成顯示所有分類。當(dāng)用戶點(diǎn)擊某個(gè)1級(jí)分類名稱時(shí)會(huì)展示當(dāng)前1級(jí)分類的所有2級(jí)分類。中部的實(shí)現(xiàn)中部是網(wǎng)站的骨干,點(diǎn)擊任何超鏈接都會(huì)在中部顯示。默認(rèn)使用純文本顯示歡迎。圖4.1.1首頁4.2用戶模塊注冊(cè)用戶是構(gòu)成網(wǎng)站主體的一個(gè)重要組成部分,網(wǎng)站設(shè)置注冊(cè)用戶的目的之一在于方便網(wǎng)站信息的管理。4.2.1用戶注冊(cè)用戶在登錄之前需要先進(jìn)行注冊(cè),在首頁中點(diǎn)擊“注冊(cè)”鏈接就可以到達(dá)注冊(cè)頁面。表單校驗(yàn):注冊(cè)頁面使用JQuery對(duì)用戶輸入的數(shù)據(jù)進(jìn)行校驗(yàn),包括用戶名、登錄密碼、密碼確認(rèn)、Email、驗(yàn)證碼等的驗(yàn)證。用戶名:不能為空,長(zhǎng)度必須在2~15之間,不能是已注冊(cè)過的;登錄密碼:不能為空,長(zhǎng)度必須在2~15之間;確認(rèn)密碼:不能為空,必須與登錄密碼相同;Email:不能為空,必須是正確的Email格式,不能是注冊(cè)過的Email;驗(yàn)證碼:不能為空,必須與圖片上的驗(yàn)證碼相同。表單校驗(yàn)中,用戶名是否被注冊(cè)過、Email是否被注冊(cè)過、驗(yàn)證碼是否正確這三項(xiàng)都需要請(qǐng)求服務(wù)器,所以這里使用的是JQuery的ajax()來完成對(duì)服務(wù)器的訪問。激活:當(dāng)用戶注冊(cè)成功后還需要激活成功后才能登錄。在注冊(cè)成功后,系統(tǒng)給用戶的郵箱發(fā)送一份激活郵件。當(dāng)用戶登錄自己的郵箱后,在激活郵件中點(diǎn)擊激活鏈接完成激活后,才可以去登錄。圖4.2.1注冊(cè)頁面4.2.2用戶登錄在首頁點(diǎn)擊“登錄”鏈接就可以來到登錄頁面。要想使用本系統(tǒng),必須先登陸到系統(tǒng)中,在登陸頁面,首先將從前臺(tái)頁面提交的用戶名和密碼進(jìn)行接受,之后在后臺(tái)進(jìn)行處理,按照用戶名在數(shù)據(jù)庫(kù)中進(jìn)行查詢?nèi)绻榈皆撚脩魟t將該用戶的權(quán)限和密碼全都取出來分別賦給兩個(gè)字符串變量,判斷從數(shù)據(jù)庫(kù)中讀出的密碼與登錄時(shí)輸入的密碼是否配比上,若兩個(gè)密碼相同則根據(jù)權(quán)限的值進(jìn)入相應(yīng)的頁面,否則輸出密碼錯(cuò)誤。表單驗(yàn)證戶名:不能為空,長(zhǎng)度必須在2~15之間,不能是已注冊(cè)過的;登錄密碼:不能為空,長(zhǎng)度必須在2~15之間;驗(yàn)證碼:不能為空,必須與圖片上的驗(yàn)證碼相同。登錄表單校驗(yàn)使用的JQuery完成,其中用戶名是否存在,以及驗(yàn)證碼是否正確需要使用JQuery的ajax()向服務(wù)器發(fā)送異步請(qǐng)求。2.登錄成功用戶登錄成功后,會(huì)回到首頁。這時(shí)在首頁會(huì)顯示當(dāng)前用戶的名稱,以及“我的借書單”、“我的圖書預(yù)約單”、“修改密碼”、“退出”鏈接。也就是說,這幾個(gè)功能只能登錄用戶才能使用,而游客是無法使用的。圖4.2.2登錄頁面4.2.3修改當(dāng)前用戶密碼用戶在登錄成功后,點(diǎn)擊修改密碼鏈接就會(huì)到達(dá)修改密碼頁面。1.表單校驗(yàn)原密碼:不能為空,長(zhǎng)度必須在2~15之間,是否與數(shù)據(jù)庫(kù)中原始密碼相同;新密碼:不能為空,長(zhǎng)度必須在2~15之間;確認(rèn)密碼:不能為空,必須與新密碼相同;驗(yàn)證碼:不能為空,是否與隨機(jī)驗(yàn)證碼相同。表單校驗(yàn)使用JQuery完成。其中原密碼和驗(yàn)證碼是否正確,需要異步訪問服務(wù)器,這里使用的是JQuery的ajax()完成的。圖4.2.3修改密碼界面4.2.4退出當(dāng)用戶登錄后,點(diǎn)擊退出鏈接可以完成退出。退出成功后會(huì)到達(dá)登錄頁面!4.3圖書模塊4.3.1圖書列表在首頁左部點(diǎn)擊某個(gè)2級(jí)分類,會(huì)在首頁的中部顯示圖書列表頁面。圖書列表使用分頁顯示??梢栽趫D書列表上方輸入關(guān)鍵字進(jìn)行搜索。圖4.3.1圖書分類4.3.2圖書詳細(xì)點(diǎn)擊某本圖書,會(huì)到達(dá)圖書詳細(xì)頁面。頁面會(huì)顯示圖書的相關(guān)信息,比如圖書名稱、出版社、出版時(shí)間、版次、頁數(shù)、字?jǐn)?shù)以及圖書圖片等內(nèi)容。圖4.3.2圖書詳情4.3.3高級(jí)搜索在圖書列表頁面點(diǎn)擊高級(jí)搜索到達(dá)搜索頁面。高級(jí)搜索有三個(gè)條件:書名、作者、出版社,三個(gè)條件的關(guān)系是并列的,就是輸入幾個(gè)條件,或者哪幾個(gè)條件搭配,都可以搜索到想要的書籍。而且三個(gè)條件都是模糊查詢。4.4借書單借書單使用數(shù)據(jù)庫(kù)來保存數(shù)據(jù),也就是說添加到借書單中的圖書,不會(huì)因?yàn)殛P(guān)閉瀏覽器,或者是關(guān)閉電腦而消失。而且修改數(shù)量,是通過異步請(qǐng)求來操作數(shù)據(jù)庫(kù)的。4.4.1添加圖書到借書單在圖書詳細(xì)頁面,給出數(shù)量,然后點(diǎn)擊“借閱”就可以把圖書添加到借書單中,并且會(huì)到達(dá)借書單列表頁面。4.4.2我的借書單也可以在首頁上部點(diǎn)擊“我的借書單”鏈接查詢借書單。借書單列表頁面會(huì)顯示所有車中所有條目,每個(gè)條目會(huì)顯示圖書圖片、圖書名稱、圖書當(dāng)前價(jià)、數(shù)量,以及小計(jì)。4.4.3修改條目數(shù)量在借書單列表頁面中,點(diǎn)擊某個(gè)條目上的數(shù)量來完成修改數(shù)量。這項(xiàng)操作會(huì)修改底層數(shù)據(jù)庫(kù)。所以這里需要使用JQuery的異步處理訪問服務(wù)器,完成對(duì)數(shù)據(jù)庫(kù)表的修改。當(dāng)數(shù)量為1時(shí),如果把數(shù)量減1,會(huì)彈出確認(rèn)對(duì)話框,提示是否刪除該條目。4.4.4刪除條目在借書單列表頁面中,點(diǎn)擊某個(gè)條目后面的“刪除”鏈接會(huì)刪除當(dāng)前條目。也可以勾選N個(gè)條目,然后點(diǎn)擊“批量刪除”鏈接,完成一次刪除多個(gè)條目。4.5圖書預(yù)約單模塊對(duì)圖書預(yù)約單的操作,對(duì)應(yīng)數(shù)據(jù)庫(kù)中的兩張表,即圖書預(yù)約單表和圖書預(yù)約單條目表(t_order和t_orderitem)。而且圖書預(yù)約單模塊的功能比較多:1.生成圖書預(yù)約單:通過借書單中勾選的條目來生成圖書預(yù)約單;2.我的圖書預(yù)約單:顯示當(dāng)前用戶的所有圖書預(yù)約單,每個(gè)圖書預(yù)約單所包含的圖書預(yù)約單條目也需要顯示;3.圖書預(yù)約單確認(rèn):使用易寶的第三方確認(rèn)平臺(tái)完成,對(duì)“在線確認(rèn)”的理解也是一個(gè)挑戰(zhàn);4.圖書預(yù)約單詳細(xì):顯示指定的某個(gè)圖書預(yù)約單;5.圖書預(yù)約單取消和圖書預(yù)約單的確認(rèn)收貨:這兩個(gè)功能都是對(duì)圖書預(yù)約單狀態(tài)的修改。4.5.1選中條目,準(zhǔn)備生成圖書預(yù)約單在借書單列表頁面中,勾選要借閱的條目,然后點(diǎn)擊“結(jié)算”按鈕,完成選中條目,準(zhǔn)備生成圖書預(yù)約單,這會(huì)到達(dá)圖書預(yù)約單準(zhǔn)備頁面。4.5.2生成圖書預(yù)約單在圖書預(yù)約單準(zhǔn)備頁面,輸入收貨地址,然后點(diǎn)擊“提交圖書預(yù)約單”按鈕,完成下單(生成圖書預(yù)約單)。這時(shí)會(huì)到達(dá)“下單成功”頁面。這時(shí)圖書預(yù)約單已經(jīng)生成,但狀態(tài)為“未確認(rèn)借閱”。可以在“下單成功”頁面點(diǎn)擊“確認(rèn)”按鈕到達(dá)“確認(rèn)”頁面。4.5.3圖書預(yù)約單列表在首頁上部點(diǎn)擊“我的圖書預(yù)約單”鏈接,就會(huì)到達(dá)圖書預(yù)約單列表頁面。該頁面會(huì)顯示當(dāng)前用戶的所有圖書預(yù)約單信息。該頁使用分頁顯示圖書預(yù)約單!圖4.5.1圖書預(yù)約單4.5.4確認(rèn)頁面在“下單成功”頁面,或者“圖書預(yù)約單列表”頁面中點(diǎn)擊“確認(rèn)”按鈕都可以到達(dá)“確認(rèn)”頁面。第五章《基于JAVA的圖書管理系統(tǒng)》后臺(tái)設(shè)計(jì)與實(shí)現(xiàn)書城后臺(tái)的設(shè)計(jì)是為管理員方便管理系統(tǒng)而設(shè)計(jì)的,其中包括分類管理、圖書管理,以及圖書預(yù)約單管理。5.1管理員登錄后臺(tái)管理員登錄頁面,登錄成功后到達(dá)后臺(tái)主頁。圖5.1.1管理員登錄5.2后臺(tái)主頁管理員登錄成功后,到達(dá)主頁。主頁是框架頁,由上、下兩部分構(gòu)成。上部顯示標(biāo)題和菜單,分別為:“退出”、“分類管理”、“圖書管理”、“圖書預(yù)約單管理”,以及當(dāng)前用戶名稱;中部默認(rèn)顯示歡迎圖片,當(dāng)點(diǎn)擊上部鏈接后,都在中部顯示。圖5.2.1后臺(tái)主頁5.3分類管理5.3.1分類列表當(dāng)點(diǎn)擊首頁上部的“分類管理”鏈接到達(dá)分類列表頁面。圖5.3.1管理員圖書分類列表5.3.2添加分類在分類列表頁面中有“添加一級(jí)分類”鏈接,點(diǎn)擊該鏈接直接“添加一級(jí)分類頁面”。列表中每個(gè)一級(jí)分類后面都存在“添加二級(jí)分類”鏈接,添加可以到達(dá)“添加二級(jí)分類頁面”。圖5.3.2添加1級(jí)分類圖5.3.3添加2級(jí)分類添加二級(jí)分類需要指定父分類。5.3.3修改分類在分類列表中,每個(gè)一級(jí)分類,以及二級(jí)分類后都存在“修改”鏈接。點(diǎn)擊一級(jí)分類后的“修改”鏈接進(jìn)入“修改一級(jí)分類頁面”;點(diǎn)擊二級(jí)分類后的“修改”鏈接進(jìn)入“修改二級(jí)分類頁面”。圖5.3.4修改一級(jí)分類圖5.3.5修改二級(jí)分類5.3.4刪除分類在分類列表中,每個(gè)一級(jí)分類,以及二級(jí)分類后都存在“刪除”鏈接。點(diǎn)擊一級(jí)分類后的“刪除”鏈接完成刪除一級(jí)分類;點(diǎn)擊二級(jí)分類后的“刪除”完成刪除二級(jí)分類。注意,如果一級(jí)分類下存在子分類,那么不能刪除。注意,如果二級(jí)分類下存在圖書,那么不能刪除。5.4圖書管理后臺(tái)圖書管理這一部分,很多地方都與前臺(tái)的圖書操作相同,例如:分頁顯示所有圖書、按分類查詢圖書、高級(jí)查詢圖書、查看圖書詳細(xì)信息。后臺(tái)圖書管理還包括前臺(tái)所沒有的功能,例如:添加新圖書、編輯和刪除圖書。5.4.1圖書列表頁面圖書列表頁面分為兩個(gè)部分:左部:顯示所有分類,與前臺(tái)是相同的,用來通過指定分類來查詢圖書;中部:默認(rèn)顯示“添加圖書”和“高級(jí)查詢”兩項(xiàng)功能,當(dāng)管理員點(diǎn)擊某一分類后,中部顯示圖書列表。圖5.4.1管理員界面的圖書列表5.4.2添加圖書點(diǎn)擊“圖書管理”鏈接后,在中部會(huì)出現(xiàn)“添加圖書”鏈接,點(diǎn)擊后會(huì)進(jìn)入添加圖書表單頁面。表單使用了JQuery進(jìn)行校驗(yàn),如果校驗(yàn)無誤,添加圖書會(huì)成功!圖5.4.2管理員添加圖書5.4.3高級(jí)搜索點(diǎn)擊“圖書管理”鏈接后,在中部會(huì)出現(xiàn)“高級(jí)搜索”鏈接,點(diǎn)擊后會(huì)進(jìn)入高級(jí)搜索表單頁面。這個(gè)高級(jí)搜索與前臺(tái)是相同的,只需要在表單中輸入條件后搜索,即可在圖書列表中顯示結(jié)果。5.4.4圖書詳細(xì)在圖書列表中點(diǎn)擊某一本圖書后會(huì)進(jìn)入圖書詳細(xì)頁面。這里顯示的圖書詳細(xì)頁面與前臺(tái)是相同的,多了“編輯和刪除”功能。圖書詳細(xì)頁面上方有一個(gè)名為“編輯或刪除”的復(fù)選框,如果管理員勾選它,那么頁面會(huì)顯示表單,并多出兩個(gè)按鈕:“編輯”和“刪除”。圖5.4.3管理員編輯圖書詳情5.5圖書預(yù)約單管理5.5.1圖書預(yù)約單列表點(diǎn)擊“圖書預(yù)約單管理”鏈接會(huì)到達(dá)圖書預(yù)約單列表頁面。該頁面會(huì)分頁顯示所有圖書預(yù)約單!圖書預(yù)約單列表頁面上包含按狀態(tài)查詢的鏈接,分別為:未確認(rèn)借閱、已確認(rèn)借閱、已發(fā)貨、交易成功、已取消,管理員可以點(diǎn)擊這幾個(gè)鏈接按狀態(tài)查詢顯示圖書預(yù)約單。圖5.5.1管理員預(yù)約單列表5.5.2圖書預(yù)約單詳細(xì)在圖書預(yù)約單列表頁面中,點(diǎn)擊某個(gè)圖書預(yù)約單后面的:查看、取消、發(fā)貨鏈接會(huì)進(jìn)入到圖書預(yù)約單詳細(xì)頁面。圖書預(yù)約單詳細(xì)頁面會(huì)顯示當(dāng)前圖書預(yù)約單的信息,而且會(huì)根據(jù)點(diǎn)擊的鏈接顯示不同的按鈕。點(diǎn)擊發(fā)貨或取消按鈕完成相應(yīng)操作即可。圖5.5.1管理員處理預(yù)約單第六章系統(tǒng)測(cè)試6.1測(cè)試的目的與目標(biāo)在此系統(tǒng)進(jìn)行初步實(shí)現(xiàn)之后,開始進(jìn)行對(duì)系統(tǒng)進(jìn)行測(cè)試,找出系統(tǒng)中存在的Bug,通過測(cè)試,用提交的Bug報(bào)告來為以后軟件的改進(jìn)提供標(biāo)準(zhǔn)和參考,能夠在以后的系統(tǒng)改進(jìn)中找到依據(jù)。測(cè)試后的軟件各模塊基本功能可以順利進(jìn)行,盡可能的提高軟件的健壯性。6.2測(cè)試方法從是否關(guān)心軟件內(nèi)部結(jié)構(gòu)和具體實(shí)現(xiàn)的角度劃分:黑盒測(cè)試和白盒測(cè)試;從是否執(zhí)行程序的角度:靜態(tài)測(cè)試和動(dòng)態(tài)測(cè)試;從軟件開發(fā)的過程按階段劃分有:?jiǎn)卧獪y(cè)試、集成測(cè)試、確認(rèn)測(cè)試、系統(tǒng)測(cè)試、驗(yàn)收測(cè)試、回歸測(cè)試、Alpha測(cè)試、Beta測(cè)試;單元測(cè)試又稱模塊測(cè)試,是針對(duì)軟件設(shè)計(jì)的最小單位─程序模塊(這里所說的程序模塊在Java中一個(gè)模塊就是一個(gè)方法),進(jìn)行正確性檢驗(yàn)的測(cè)試工作。其目的在于發(fā)現(xiàn)各模塊內(nèi)部可能存在的各種差錯(cuò)。單元測(cè)試需要從程序的內(nèi)部結(jié)構(gòu)出發(fā)設(shè)計(jì)測(cè)試用例。多個(gè)模塊可以平行地獨(dú)立進(jìn)行單元測(cè)試。集成測(cè)試(組裝測(cè)試、聯(lián)合測(cè)試),通常在單元測(cè)試的基礎(chǔ)上,需要將所有模塊按照設(shè)計(jì)要求組裝成為系統(tǒng)。這時(shí)需要考慮的問題是:在把各個(gè)模塊連接起來的時(shí)候,穿越模塊接口的數(shù)據(jù)是否會(huì)丟失;一個(gè)模塊的功能是否會(huì)對(duì)另一個(gè)模塊的功能產(chǎn)生不利的影響;各個(gè)子功能組合起來,能否達(dá)到預(yù)期要求的父功能;全局?jǐn)?shù)據(jù)結(jié)構(gòu)是否有問題;單個(gè)模塊的誤差累積起來,是否會(huì)放大,從而達(dá)到不能接受的程度。確認(rèn)測(cè)試(ValidationTesting),確認(rèn)測(cè)試又稱有效性測(cè)試。任務(wù)是驗(yàn)證軟件的功能和性能及其它特性是否與用戶的要求一致。對(duì)軟件的功能和性能要求在軟件需求規(guī)格說明書中已經(jīng)明確規(guī)定。它包含的信息就是軟件確認(rèn)測(cè)試的基礎(chǔ)。系統(tǒng)測(cè)試(SystemTesting),是將通過確認(rèn)測(cè)試的軟件,作為整個(gè)基于計(jì)算機(jī)系統(tǒng)的一個(gè)元素,與計(jì)算機(jī)硬件、外設(shè)、某些支持軟件、數(shù)據(jù)和人員等其它系統(tǒng)元素結(jié)合在一起,在實(shí)際運(yùn)行環(huán)境下,對(duì)計(jì)算機(jī)系統(tǒng)進(jìn)行一系列的組裝測(cè)試和確認(rèn)測(cè)試。系統(tǒng)測(cè)試的目的在于通過與系統(tǒng)的需求定義作比較,發(fā)現(xiàn)軟件與系統(tǒng)的定義不符合或與之矛盾的地方。驗(yàn)收測(cè)試(AcceptanceTesting),在通過了系統(tǒng)的有效性測(cè)試及軟件配置審查之后,就應(yīng)開始系統(tǒng)的驗(yàn)收測(cè)試。驗(yàn)收測(cè)試是以用戶為主的測(cè)試,軟件開發(fā)人員和QA(質(zhì)量保證)人員也應(yīng)參加。由用戶參加設(shè)計(jì)測(cè)試用例,使用生產(chǎn)中的實(shí)際數(shù)據(jù)進(jìn)行測(cè)試。6.3測(cè)試用例由于功能模塊較多,測(cè)試內(nèi)容篇幅較長(zhǎng),所以在本論文中只介紹登入系統(tǒng)的測(cè)試用例,表6.1是本系統(tǒng)會(huì)員登入的測(cè)試表,從測(cè)試的結(jié)果來看與期望結(jié)果完全相同。表6.3.1登入系統(tǒng)測(cè)試用例功能特性用戶登錄驗(yàn)證測(cè)試目的驗(yàn)證是否輸入合法的信息測(cè)試數(shù)據(jù)用戶名稱:1111密碼:1111測(cè)試內(nèi)容操作描述數(shù)據(jù)期望結(jié)果實(shí)際結(jié)果測(cè)試狀態(tài)1輸入用戶姓名,按“登陸”按鈕。用戶姓名:1111,密碼為空顯示警告信息“用戶名或密碼誤!”顯示警告信息“用戶名或密碼誤!”與期望結(jié)果相同2輸入密碼,按“登陸”按鈕。用戶名為空,密碼:1111顯示警告信息“用戶名或密碼誤!”顯示警告信息“用戶名或密碼誤!”與期望結(jié)果相同3輸入用戶姓名和密碼,按“登陸”按鈕。用戶姓名:1,密碼:1顯示警告信息“用戶名或密碼誤!”顯示警告信息“用戶名或密碼誤”與期望結(jié)果相同4輸入用戶姓名和密碼,按“登陸”按鈕。用戶名:1111,密碼:1111正確登入到會(huì)員操作界面正確登入到會(huì)員操作界面與期望結(jié)果相同6.4測(cè)試結(jié)論把開始的代碼寫得越好,它出現(xiàn)的錯(cuò)誤也就越少,你也就越能相信所做過的測(cè)試是徹底的。系統(tǒng)化測(cè)試以一種有序方式設(shè)法探測(cè)潛在的麻煩位置。同樣,毛病最可能出現(xiàn)在邊界,這可以通過手工的或者程序的方式檢查。自動(dòng)進(jìn)行測(cè)試是最理想的,用得越多越好,因?yàn)闄C(jī)器不會(huì)犯錯(cuò)誤、不會(huì)疲勞、不會(huì)用臆想某此實(shí)際無法工作的東西能行來欺騙自己?;貧w測(cè)試檢查一個(gè)程序是否能產(chǎn)生與它們過去相同的輸出。在做了小改變之后就測(cè)試是一種好技術(shù),能幫助我們將出現(xiàn)問題的范圍局部化,因?yàn)樾聠栴}一般就出現(xiàn)在新代碼里面。測(cè)試和排錯(cuò)常常被說成是一個(gè)階段,實(shí)際上它們根本不是同一件事。簡(jiǎn)單地說,排錯(cuò)是在你已經(jīng)知道程序有問題時(shí)要做的事情。而測(cè)試則是在你在認(rèn)為程序能工作的情況下,排錯(cuò)是在你已經(jīng)知道程序有問題時(shí)要做的事情。而測(cè)試則是在你在認(rèn)為程序能工作的情況下,為設(shè)法打敗它而進(jìn)行的一整套確定的系統(tǒng)化的試驗(yàn)。EdsgerDijkstra有一個(gè)非常有名的說法:測(cè)試能夠說明程序中有錯(cuò)誤,但卻不能說明其中沒有錯(cuò)誤。他的希望是,程序可以通過某種構(gòu)造過程正確地做出來,這樣就不再會(huì)有錯(cuò)誤了,因此測(cè)試也就不必要了。這確實(shí)是個(gè)美好生活的目標(biāo),但是,對(duì)今天的實(shí)際程序而言,這仍然還只是一個(gè)理想。所以應(yīng)該集中精力討論如何測(cè)試,如何才能夠更快地發(fā)現(xiàn)程序錯(cuò)誤,如何才可以使得工作更有成效、效率更高。第七章結(jié)論通過開發(fā)《基于JAVA的圖書管理系統(tǒng)》,我較全面的掌握了JAVA的基本知識(shí)和編程技巧,并在開發(fā)過程中我的JAVA開發(fā)能力得到了進(jìn)一步的提高。如:更進(jìn)一步的深入了解MVC設(shè)計(jì)模式,軟件三層框架;SQL語言的使用。在開發(fā)過程中我學(xué)到了一些經(jīng)驗(yàn):系統(tǒng)分析的好壞將決定著的系統(tǒng)開發(fā)成功與否,一份好分析設(shè)計(jì)將是成功開發(fā)主要因素。我們?cè)谥珠_發(fā)之前不要急于編程,先應(yīng)有較長(zhǎng)的時(shí)間去把分析做好,做好數(shù)據(jù)庫(kù)設(shè)計(jì)工作,寫出相關(guān)的開發(fā)文檔等。然后再開始編寫程序代碼,這樣做到每寫一步代碼心底有數(shù),有條不絮。當(dāng)然也有些還需待繼續(xù)深入地方如:控件的應(yīng)用等。此外,我還覺得,我個(gè)人在這次設(shè)計(jì)中走了很多彎路。主要是因?yàn)槠綍r(shí)很少接觸軟件開發(fā)工作,在應(yīng)用方面缺乏經(jīng)驗(yàn),以后還需要更多的努力。對(duì)我來說,這次設(shè)計(jì)的本身所產(chǎn)生的影響,還遠(yuǎn)遠(yuǎn)沒有結(jié)束,我從本次畢業(yè)設(shè)計(jì)中學(xué)到了許多課本上沒有的知識(shí)。通過自己的學(xué)習(xí)和努力;通過老師的指導(dǎo)和教育,使我不僅僅在知識(shí)水平和解決實(shí)際問題的能力上有了很大的提高。還從思想的深處體會(huì)到,要把自己的所學(xué)變成現(xiàn)實(shí)時(shí)所將面對(duì)的種種難題。系統(tǒng)不免有錯(cuò)誤和待改進(jìn)之處,真誠(chéng)歡迎各位師長(zhǎng)、同行提出寶貴意見。參考文獻(xiàn)[1] 張孝祥.Java就業(yè)培訓(xùn)教程(附盤).清華大學(xué),2007[2] 石志國(guó),薛為民,董潔.JSP應(yīng)用教程.北京:清華大學(xué)出版社.北京交通大學(xué)出版社,2004[3] 李曙光.JSP開發(fā)實(shí)例完全剖析.北京:中國(guó)電力出版社,2006[4] 楊易.JSP高級(jí)程序設(shè)計(jì).人民郵電出版社,2006[5] VivekChopra.JSP高級(jí)程序設(shè)計(jì).機(jī)械工業(yè)出版社,2001[6] 申吉紅,廖學(xué)峰,余健.JSP課程設(shè)計(jì)案例精編.北京:清華大學(xué)出版社,2007[7] 盧瀟.軟件工程.北京:清華大學(xué)出版社,2005[8] 薩師煊,王姍.數(shù)據(jù)庫(kù)系統(tǒng)概論.北京:高等教育出版社,2000[9] 馬運(yùn)濤.Eclipse精要與高級(jí)開發(fā)技術(shù).北京:電子工業(yè)出版社,2003[10]PaulJPerroneetal,張志偉,譚郁松,et.J2EE構(gòu)建企業(yè)系統(tǒng)[M].北京:清華大學(xué)出版社,2001[11]ChuckCavaness.ProgrammingJakartaStruts,2002[12]BruceShive.ResearchDirectioninObject-OrientedProgramming,2002[13]MiaoH.K.McDermidJ.A.andTonyIan,ProvingtheexistenceoftheinitialstateinZspecification,ChineseJournalofAdvancedSoftwareResearch,2003[14]ApacheSoftware.TheStrutsUser'sGuide.http://Jakarta.A/struts.致謝 從征題到定稿,為期將近半年的畢業(yè)設(shè)計(jì)即將結(jié)束。在此期間,我最要感謝我的指導(dǎo)老師——張光勝老師和王亞娟老師。從征題開始,他給了我一份詳細(xì)的任務(wù)書,對(duì)我的畢業(yè)設(shè)計(jì)提出了基本的要求和合理的進(jìn)度安排,還提供了很好的參考文獻(xiàn),使我在做畢業(yè)設(shè)計(jì)的時(shí)候少走了很多的彎路。在寫開題報(bào)告的時(shí)候,對(duì)我的文獻(xiàn)綜述和英文翻譯提出了寶貴的意見。到最后的初稿,她認(rèn)真地閱讀我的初稿,用紅色字體標(biāo)注需要修改的地方,并提出修改的意見,使我能最后順利地定稿。如果沒有她嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度和專業(yè)的知識(shí),精心地指導(dǎo)我,我的畢業(yè)設(shè)計(jì)就不能順利地完成。 最后,再次感謝所有在我做畢業(yè)設(shè)計(jì)時(shí)給予我?guī)椭娜?,包括我的家人和朋友。附錄Ⅰ:查詢功能重要代碼:publicclassAdminBookServletextendsBaseServlet{ privateBookServicebookService=newBookService(); privateCategoryServicecategoryService=newCategoryService(); /* *獲取當(dāng)前頁碼 */ privateintgetPageCode(HttpServletRequestreq){ StringpageCode=req.getParameter("pc"); if(pageCode==null) return1; try{ returnInteger.parseInt(pageCode); }catch(RuntimeExceptione){ return1; } } /* *獲取請(qǐng)求的url,但去除pc參數(shù) */ privateStringgetUrl(HttpServletRequestreq){ Stringurl=req.getRequestURI()+"?"+req.getQueryString(); intfromIndex=url.lastIndexOf("&pc="); if(fromIndex==-1) returnurl; inttoIndex=url.indexOf("&",fromIndex+1); if(toIndex==-1) returnurl.substring(0,fromIndex); returnurl.substring(0,fromIndex)+url.substring(toIndex); } /** *按分類查詢圖書(分頁) *@paramrequest *@paramresponse *@return *@throwsServletException *@throwsIOException */ publicStringfindByCategory(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ /* *1.獲取當(dāng)前頁碼 */ intpc=getPageCode(request); /* *2.使用BookService查詢,得到PageBean */ Stringcid=request.getParameter("cid"); PageBean<Book>pb=bookService.findByCategory(cid,pc); /* *3.獲取url,設(shè)置給PageBean */ Stringurl=getUrl(request); pb.setUrl(url); /* *4.把PageBean保存到request,轉(zhuǎn)發(fā)到/jsps/book/list.jsp */ request.setAttribute("pb",pb); return"f:/adminjsps/admin/book/list.jsp"; } /** *按作者查詢 *@paramrequest *@paramresponse *@return *@throwsServletException *@throwsIOException */ publicStringfindByAuthor(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ /* *1.獲取當(dāng)前頁碼 */ intpc=getPageCode(request); /* *2.使用BookService查詢,得到PageBean */ Stringauthor=request.getParameter("author"); PageBean<Book>pb=bookService.findByAuthor(author,pc); /* *3.獲取url,設(shè)置給PageBean */ Stringurl=getUrl(request); pb.setUrl(url); /* *4.把PageBean保存到request,轉(zhuǎn)發(fā)到/jsps/book/list.jsp */ request.setAttribute("pb",pb); return"f:/adminjsps/admin/book/list.jsp"; } /** *按出版社查詢 *@paramrequest *@paramresponse *@return *@throwsServletException *@throwsIOException */ publicStringfindByPress(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ /* *1.獲取當(dāng)前頁碼 */ intpc=getPageCode(request); /* *2.使用BookService查詢,得到PageBean */ Stringpress=request.getParameter("press"); PageBean<Book>pb=bookService.findByPress(press,pc); /* *3.獲取url,設(shè)置給PageBean */ Stringurl=getUrl(request); pb.setUrl(url); /* *4.把PageBean保存到request,轉(zhuǎn)發(fā)到/jsps/book/list.jsp */ request.setAttribute("pb",pb); return"f:/adminjsps/admin/book/list.jsp"; } /** *多條件組合查詢 *@paramrequest *@paramresponse *@return *@throwsServletException *@throwsIOException */ publicStringfindByCombination(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ /* *1.獲取當(dāng)前頁碼 */ intpc=getPageCode(request); /* *2.使用BookService查詢,得到PageBean */ Bookbook=CommonUtils.toBean(request.getParameterMap(),Book.class); PageBean<Book>pb=bookService.findByCombination(book,pc); /* *3.獲取url,設(shè)置給PageBean */ Stringurl=getUrl(request); pb.setUrl(url); /* *4.把PageBean保存到request,轉(zhuǎn)發(fā)到/jsps/book/list.jsp */ request.setAttribute("pb",pb); return"f:/adminjsps/admin/book/list.jsp"; } /** *加載圖書 *@paramrequest *@paramresponse *@return *@throwsServletException *@throwsIOException */ publicStringload(HttpServletRequestreq,HttpServletResponsereps) throwsServletException,IOException{ /* *1.獲取bid,通過bid加載book,保存到request中 */ Stringbid=req.getParameter("bid"); Bookbook=bookService.load(bid); req.setAttribute("book",book); /* *2.獲取所有1級(jí)分類,保存到request中 */ req.setAttribute("parents",categoryService.findParents()); /* *3.獲取當(dāng)前圖書所屬1級(jí)分類下的所有2級(jí)分類 */ //獲取當(dāng)前圖書所屬1級(jí)分類cid Stringpid=book.getCategory().getParent().getCid(); req.setAttribute("children",categoryService.findChildren(pid)); return"f:/adminjsps/admin/book/desc.jsp"; }購(gòu)物車增刪改查重要代碼:publicclassCartItemService{ privateCartItemDaocartItemDao=newCartItemDao(); /** *我的購(gòu)物車 *@paramuid *@return */ publicList<CartItem>myCart(Stringuid){ try{ returncartItemDao.findByUser(uid); }catch(SQLExceptione){ thrownewRuntimeException(e); } } /** *添加購(gòu)物車條目 *@paramcartItem */ publicvoidadd(CartItemcartItem){ try{ /* *查詢這個(gè)條目是否已經(jīng)存在,如果存在,那么就合并條目,而不是添加條目 */ JdbcUtils.beginTransaction(); CartItem_cartItem=cartItemDao.findByUserAndBook( cartItem.getOwner().getUid(),cartItem.getBook().getBid()); if(_cartItem==null){//如果原來不存在這一條目,那么添加條目 cartItemDao.add(cartItem); }else{//如果原來存在這一條目,那么把原條目和新條目的數(shù)量合并,然后修改條目數(shù)量 intquantity=cartItem.getQuantity()+_cartItem.getQuantity(); cartItemDao.updateQuantity(_cartItem.getCartItemId(),quantity); } JdbcUmitTransaction(); }catch(SQLExceptione){ try{ JdbcUtils.rollbackTransaction(); }catch(SQLExceptione1){ thrownewRuntimeException(e1); } thrownewRuntimeException(e); } } /** *批量刪除條目 *@paramcartItemIds */ publicvoiddeleteBatch(StringcartItemIds){ try{ cartItemDao.deleteBatch(cartItemIds); }catch(SQLExceptione){ thrownewRuntimeException(e); } } /** *修改條目數(shù)量 *@paramcartItemId *@paramquantity */ publicvoidupdateQuantity(StringcartItemId,intquantity){ try{ cartItemDao.updateQuantity(cartItemId,quantity); }catch(SQLExceptione){ thrownewRuntimeException(e); } } /** *加載CartItem *@paramcartItemId *@return */ publicCartItemload(StringcartItemId){ try{ returncartItemDao.load(cartItemId); }catch(SQLExceptione){ thrownewRuntimeException(e); } } /** *加載多個(gè)條目 *@paramcartItemIds *@return */ publicList<CartItem>loadCartItems(StringcartItemIds){ try{ returncartItemDao.loadCartItems(cartItemIds); }catch(SQLExceptione){ thrownewRuntimeException(e); } }}基于C8051F單片機(jī)直流電動(dòng)機(jī)反饋控制系統(tǒng)的設(shè)計(jì)與研究基于單片機(jī)的嵌入式Web服務(wù)器的研究MOTOROLA單片機(jī)MC68HC(8)05PV8/A內(nèi)嵌EEPROM的工藝和制程方法及對(duì)良率的影響研究基于模糊控制的電阻釬焊單片機(jī)溫度控制系統(tǒng)的研制基于MCS-51系列單片機(jī)的通用控制模塊的研究基于單片機(jī)實(shí)現(xiàn)的供暖系統(tǒng)最佳啟停自校正(STR)調(diào)節(jié)器單片機(jī)控制的二級(jí)倒立擺系統(tǒng)的研究基于增強(qiáng)型51系列單片機(jī)的TCP/IP協(xié)議棧的實(shí)現(xiàn)基于單片機(jī)的蓄電池自動(dòng)監(jiān)測(cè)系統(tǒng)基于32位嵌入式單片機(jī)系統(tǒng)的圖像采集與處理技術(shù)的研究基于單片機(jī)的作物營(yíng)養(yǎng)診斷專家系統(tǒng)的研究基于單片機(jī)的交流伺服電機(jī)運(yùn)動(dòng)控制系統(tǒng)研究與開發(fā)基于單片機(jī)的泵管內(nèi)壁硬度測(cè)試儀的研制基于單片機(jī)的自動(dòng)找平控制系統(tǒng)研究基于C8051F040單片機(jī)的嵌入式系統(tǒng)開發(fā)基于單片機(jī)的液壓動(dòng)力系統(tǒng)狀態(tài)監(jiān)測(cè)儀開發(fā)模糊Smith智能控制方法的研究及其單片機(jī)實(shí)現(xiàn)一種基于單片機(jī)的軸快流CO〈,2〉激光器的手持控制面板的研制基于雙單片機(jī)沖床數(shù)控系統(tǒng)
溫馨提示
- 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. 人人文庫(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年高壓液壓柱塞泵馬達(dá)項(xiàng)目發(fā)展計(jì)劃
- 2025年度新能源材料研發(fā)保密與共享合同
- 2025年度綠色建筑項(xiàng)目財(cái)產(chǎn)贈(zèng)與合同
- 2025年(半)干式煙氣脫硫成套設(shè)備項(xiàng)目建議書
- 2025年度出境領(lǐng)隊(duì)帶團(tuán)操作規(guī)范合同范本
- 水務(wù)生態(tài)保護(hù)規(guī)劃計(jì)劃
- 2025年食品分離機(jī)械項(xiàng)目合作計(jì)劃書
- 持續(xù)改進(jìn)教學(xué)工作的機(jī)制計(jì)劃
- 高危行業(yè)的安全防控計(jì)劃
- 合理安排急診排班的重要性計(jì)劃
- 華住酒店管理制度
- 《婚姻家庭糾紛調(diào)解》課件
- 教育科學(xué)與兒童心理學(xué)
- 2022高速公路隧道工程施工管理標(biāo)準(zhǔn)化手冊(cè)
- 雨水花園設(shè)計(jì)
- 年智慧水廠大數(shù)據(jù)信息化建設(shè)和應(yīng)用方案
- 光伏電纜橋架敷設(shè)施工方案
- 文山-硯山天然氣支線管道工程項(xiàng)目環(huán)境影響報(bào)告書
- 新選供應(yīng)商初期考察表模板
- 工人工資結(jié)清證明范本
- 《煤礦安全規(guī)程》安全生產(chǎn)月考試題庫(kù)
評(píng)論
0/150
提交評(píng)論