圖書網(wǎng)上查詢系統(tǒng)_第1頁
圖書網(wǎng)上查詢系統(tǒng)_第2頁
圖書網(wǎng)上查詢系統(tǒng)_第3頁
圖書網(wǎng)上查詢系統(tǒng)_第4頁
圖書網(wǎng)上查詢系統(tǒng)_第5頁
已閱讀5頁,還剩28頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

圖書網(wǎng)上查詢系統(tǒng)摘要隨著Internet的飛速發(fā)展,網(wǎng)絡(luò)得到廣泛而深入的應(yīng)用。如電子商務(wù),它改變了傳統(tǒng)的商務(wù)模式,把傳統(tǒng)的商業(yè)活動搬到網(wǎng)絡(luò)上,人們可以在足不出戶的情況下完成商務(wù)活動。這使得在網(wǎng)上實現(xiàn)圖書查詢與交易成為可能。本文采用的是目前Internet上開發(fā)WEB應(yīng)用程序時使用得最熱門的編程語言Java,采用JSP技術(shù),結(jié)合MySQL數(shù)據(jù)庫存取技術(shù),應(yīng)用SSH(Struts+Spring+Hibernate)框架,設(shè)計一個圖書網(wǎng)上查詢系統(tǒng)。該系統(tǒng)可以實現(xiàn)從瀏覽、分類和查詢,到用戶自己的添加、修改、刪除,還有管理員管理的功能等。本系統(tǒng)界面簡單直觀,易于操作和使用,交互性強。關(guān)鍵字:Java;JSP;MySQL;SSH;信息查詢系統(tǒng)

BooksOnlineInquirySystemABSTRACTWiththedevelopmentofInternet,thenetworkgetsextensiveanddeepapplication.Suchase-commerce,itchangesthetraditionalcommercialmode,movesthetraditionalbusinessactivitytothenetwork,peoplecanfinishthecommercialactivityunderthehome-confinedsituation.Thismakeonthenetrealizingbooksinquirewithtransactionbecomingpossible.Thispaperdesignsaweblibraryofinformationinquirysystem.ItusestheJAVAprogramminglanguagewhichisthehottestprogramminglanguageforWEBdevelopmentonInternet,usingJSPtechnology,combiningMySQLdatastockandfetchtechnology,applyingSSH(Struts+Spring+Hibernate)framework.Thissystemrealizesfrombrowse,classification,andqueryintotheusersthemselvesadd,modifyanddelete,andanadministratorsystem,etc.Thissystemhassimpleandintuitionisticinterface,andeasytooperatingandusing,andhasstronginteractivity.Keywords:Java;Jsp;MySQL;SSH;Informationinquirysystem

目錄摘要 iABSTRACT ii第一章緒論 -1-1.1課題開發(fā)背景 -1-1.1.1電子商務(wù)背景 -1-網(wǎng)上書店背景 -1-1.1.3應(yīng)用技術(shù)背景 -2-1.2課題開發(fā)目標及目的 -2-第二章相關(guān)技術(shù)介紹 -4-2.1JavaServerPage簡介 -4-2.2MySQL簡介 -4-2.3SSH簡介 -5-2.3.1Struts -5-2.3.2Spring -6-2.3.3Hibernate -7-第三章系統(tǒng)設(shè)計 -9-3.1基本需求 -9-3.2模塊設(shè)計 -9-3.3系統(tǒng)整體架構(gòu) -10-3.3.1系統(tǒng)結(jié)構(gòu) -10-3.3.2開發(fā)環(huán)境 -12-第四章詳細設(shè)計與實現(xiàn) -14-4.1模塊實現(xiàn) -14-4.2數(shù)據(jù)庫設(shè)計 -18-4.3系統(tǒng)實現(xiàn)問題及解決方法 -19-第五章系統(tǒng)運行說明 -21-第六章系統(tǒng)測試 -26-結(jié)束語 -27-致謝 -28-參考文獻 -29-第一章緒論1.1課題開發(fā)背景如今的社會,隨著網(wǎng)絡(luò)技術(shù)的深入發(fā)展,網(wǎng)絡(luò)的普及面越來越廣,其在很多新的領(lǐng)域得到應(yīng)用,如電子商務(wù)系統(tǒng),通過這個系統(tǒng),人們可以把很多商務(wù)活動搬到網(wǎng)絡(luò)上來,這樣人們就可以在足不出戶的情況下完成商務(wù)活動。網(wǎng)上書店就是這樣的一個電子商務(wù)系統(tǒng),其有著很多優(yōu)點,如沒有區(qū)域限制、選擇面廣、價格便宜、交易方便等,因此網(wǎng)上書店有發(fā)展的必要,也有發(fā)展的基礎(chǔ)。1.1.1電子商務(wù)背景電子商務(wù)是指在Internet上進行的商務(wù)活動,其主要功能包括了網(wǎng)上的廣告宣傳、咨詢服務(wù)、在線訂購、在線支付、電子帳戶、意見征詢、交易等商務(wù)活動。電子商務(wù)可以分為俠義電子商務(wù)和廣義電子商務(wù)兩種,俠義的電子商務(wù)就是電子交易,主要是指利用Web提供的通信手段在網(wǎng)上進行的交易。而廣義的電子商務(wù)包括電子交易在內(nèi)的利用Web進行的全部商業(yè)活動,如市場分析、客戶聯(lián)系、物資調(diào)配等等,也叫做電子商業(yè)。這些商務(wù)活動可以發(fā)生于公司內(nèi)部、公司與公司之間以及公司與客戶之間。如今,我們可以注意到電子商務(wù)中存在的“重電子、輕商務(wù)”的傾向。然而,網(wǎng)站只不過是電子商務(wù)的后臺支撐,電子商務(wù)真正最重要的是“商務(wù)”。另一方面,網(wǎng)上購物已經(jīng)完全取代了電子商務(wù)的概念。事實上,它只是電子商務(wù)的一小部分,而完整的電子商務(wù)過程則是一切利用現(xiàn)代信息技術(shù)的商業(yè)活動的電子化過程。在中國,電子商務(wù)未來將呈現(xiàn)如下發(fā)展趨勢[1]:(1)電子商務(wù)的深度將進一步拓展。(2)中國電子商務(wù)將面臨嚴峻挑戰(zhàn)。(3)電子商務(wù)網(wǎng)站將會出現(xiàn)兼并熱潮。(4)行業(yè)電子商務(wù)將成為下一代電子商務(wù)發(fā)展主流。1.1.2網(wǎng)上書店背景現(xiàn)在網(wǎng)上流行的網(wǎng)上書店,必備商品管理、配送管理、支付管理、訂單管理、會員管理、查詢統(tǒng)計等功能,另外還有文章、圖片、上傳、下載、廣告、論壇等網(wǎng)站功能。普通用戶進入網(wǎng)站,可以根據(jù)自己的要求查找書籍等資料,查看各種圖書信息等,注冊為會員后,可以進行圖書交易,通過網(wǎng)上支付或匯款,購買自己滿意的圖書,或與各用戶進行交流。這一系列操作,都是在足不出戶的情況下發(fā)生的,給愛學習的人們帶來了極大的方便。科技的不斷發(fā)展,圖書的不斷更新,傳統(tǒng)的圖書銷售方式已有些不適合,有些學生想找老書、舊書卻找不到,而每年丟掉的圖書不計其數(shù),這是浪費資源。本課題是一個類似于網(wǎng)上書店系統(tǒng)的,題目是圖書網(wǎng)上查詢系統(tǒng),但是如題目所說,與現(xiàn)在流行的網(wǎng)上書店不同的是,沒有購買之類的功能,只提供區(qū)域內(nèi)查詢哪里有自己想要的圖書等等功能。在大學里,每學期開始,同學們的新書有的是集體訂購的,有的是向?qū)W長借或買的,或是向舊書攤買的,一個很明顯的現(xiàn)象就是學生關(guān)系面窄,有的借不到書,本系統(tǒng)提供給廣大學生一個平臺,在上面可以找到想要的書,而且不局限于自己學校,同時也不會耽誤學習時間,一切可在網(wǎng)上交流或同學私底下聯(lián)系。1.1.3應(yīng)用技術(shù)背景本課題雖然不是很新穎,但是涉及到JSP語言,數(shù)據(jù)庫用MySQL,通過SSH框架來進行設(shè)計,即Struts+Spring+Hibernate,或者說Spring整合Struts、Hibernate開發(fā)。JSP技術(shù),是用java開發(fā)應(yīng)用的基本技術(shù),是現(xiàn)今比較流行的一種動態(tài)網(wǎng)頁技術(shù)標準,該技術(shù)具有健壯的存儲管理和安全性,世界上一些大的電子商務(wù)解決方案提供商都采用JSP/Servlet。因為該系統(tǒng)的數(shù)據(jù)庫存儲需求不大,操作也不復(fù)雜,所以數(shù)據(jù)庫采用MySQL。又因為大學期間學過,所以這里就采用jsp、MySQL來做設(shè)計。整個設(shè)計的技術(shù)難點就在于SSH框架的搭建使用,這是以前從沒接觸過的,在查閱了大量資料后,發(fā)現(xiàn)采用SSH是一個很好的框架,開發(fā)效率高,系統(tǒng)脈絡(luò)清晰,可以很好的把握系統(tǒng)各部分之間的聯(lián)系,對于開發(fā)及后期的維護有著莫大的好處。雖然對于初學者而言,這打亂了以前編寫網(wǎng)頁的習慣,但是現(xiàn)在足夠就行,所以我選擇了這個技術(shù)。1.2課題開發(fā)目標及目的本課題的開發(fā),旨在通過圖書網(wǎng)上查詢系統(tǒng),幫助同學們在網(wǎng)上搜索查詢自己所需要的書,各個學校之間的同學也可以互相交流手頭上空余的圖書,從而節(jié)省資源。最終的系統(tǒng),希望能實現(xiàn)圖書的詳細查詢,通過用戶的注冊,然后公開部分信息,使其他用戶能在線了解圖書所有者的信息,然后互相聯(lián)系,確定是否交易等等。在開發(fā)本系統(tǒng)的同時,我們自己也能夠加深JSP技術(shù)的了解、提高Java的編寫能力,學習到了SSH的搭建使用及思想,對MyEclipse這個開發(fā)工具的操作也將會更加熟練。而且自己本身也會對一個項目的開發(fā)過程有一定的了解,學會處理事情的方法,這對畢業(yè)后步入社會工作也會有一定的幫助。

第二章相關(guān)技術(shù)介紹2.1JavaServerPage簡介JavaServerPage(簡稱為JSP)是由Sun公司在Java語言上開發(fā)出來的一種動態(tài)網(wǎng)頁制作技術(shù),其是JAVA技術(shù)的一部分。它提供了一種建立動態(tài)網(wǎng)頁的簡單方法,并為開發(fā)人員提供了一個Server端框架,基于這個框架,開發(fā)人員可以綜合使用HTML,XML,JAVA語言以及其他腳本語言,靈活,快速地創(chuàng)建和維護動態(tài)網(wǎng)頁,特別是目前的商業(yè)系統(tǒng)。JSP作為JavaTM技術(shù)的一部分,其能夠快速的開發(fā)出基于所有Web服務(wù)器和應(yīng)用服務(wù)器環(huán)境,獨立于平臺的應(yīng)用程序,而且具有非常強的可伸縮性。同時,JSP把用戶界面從系統(tǒng)內(nèi)容中分離開來,使得設(shè)計人員能夠在不改變底層動態(tài)內(nèi)容的前提下改變網(wǎng)頁布局。JSP頁面被編譯成servlets,并可能調(diào)用JavaBeans組件(beans)或EnterpriseJavaBeans組件(企業(yè)beans),以便在服務(wù)器端處理,因此,JSP技術(shù)在構(gòu)建可升級的基于web的應(yīng)用程序時扮演了重要角色。JSP頁面并不局限于任何特定的平臺或web服務(wù)器上。JSP規(guī)范在業(yè)界有著廣泛的適應(yīng)性。[2]本課題中,HTML語言及部分javascript語句構(gòu)成了網(wǎng)頁,網(wǎng)頁中還用到struts標簽中的html、bean等標簽庫及JSP的jstl/core標簽庫,使用這些標簽庫,大大的減少了腳本的使用,提高了效率。2.2MySQL簡介MySQL[3]最初的開發(fā)者的目的是用mSQL和他們自己的快速低級例程(ISAM)去連接表格。在經(jīng)過一些測試后,開發(fā)者得出結(jié)論:mSQL并沒有他們需要的那么快和靈活。這促使了一個使用幾乎和mSQL一樣的API接口的用于他們的數(shù)據(jù)庫的新的SQL接口的產(chǎn)生,這樣,這個API被設(shè)計成允許為用于mSQL而寫的第三方代碼更容易移植到MySQL。MySQL作為一個小型關(guān)系型數(shù)據(jù)庫管理系統(tǒng),目前其被廣泛地應(yīng)用在Internet上的中小型網(wǎng)站中。由于其具有體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,許多中小型網(wǎng)站為了降低網(wǎng)站總體擁有成本而選擇了MySQL作為網(wǎng)站數(shù)據(jù)庫。與其他的大型數(shù)據(jù)庫例如Oracle、DB2、SQLServer等相比,MySQL也有自己的不足之處,如規(guī)模小、功能有限(MySQLCluster的功能和效率都相對比較差)等,但是這些不足絲毫也沒有減少它受歡迎的程度。對于一般的個人使用者和中小型企業(yè)來說,MySQL提供的功能已經(jīng)綽綽有余,而且由于MySQL是開放源碼軟件,因此可以大大降低總體擁有成本。本課題所需的是一個小型數(shù)據(jù)庫,所以用MySQL正好。相對于其它數(shù)據(jù)庫而言,MySQL更加容易操作。2.3SSH簡介SSH在J2EE項目中表示了3種框架,既Struts+Spring+Hibernate2.3.1Struts要了解Struts框架,必須先了解MVC設(shè)計模式,Struts技術(shù)就是基于MVC設(shè)計模式的。MVC設(shè)計模式起源于Smalltalk語言,它由模型(model),視圖(view),控制器(模型封裝應(yīng)用程序狀態(tài)響應(yīng)狀態(tài)查詢應(yīng)用程序功能通知視圖改變視圖解釋模型模型封裝應(yīng)用程序狀態(tài)響應(yīng)狀態(tài)查詢應(yīng)用程序功能通知視圖改變視圖解釋模型模型更新請求發(fā)送用戶輸入給控制器允許控制器選擇視圖控制器定義應(yīng)用程序行為用戶動作映射成模型更新選擇響應(yīng)的視圖狀態(tài)查詢狀態(tài)改變通知改變視圖選擇狀態(tài)查詢圖2-1MVC結(jié)構(gòu)圖其中的三個概念如下[6]:模型(model):應(yīng)用程序的主體部分,表示業(yè)務(wù)數(shù)據(jù)或業(yè)務(wù)邏輯。視圖(view):用戶界面相關(guān)的部分,是用戶看到并與之交互的界面??刂破?controller):定義對用戶的輸入執(zhí)行相關(guān)操作的接口,它用來操作模型和數(shù)據(jù)對象。Struts實現(xiàn)的MVC結(jié)構(gòu)如下圖所示:(2)請求(2)請求用戶Struts框架總控制器(ActionServlet)業(yè)務(wù)功能控制器(Action)業(yè)務(wù)功能類(JavaBean/EJB)視圖(JSP)模型(ActionForm)(1)初始化(8)響應(yīng)(5)調(diào)用后臺業(yè)務(wù)功能類完成商業(yè)邏輯(7)轉(zhuǎn)換請求到目標響應(yīng)對象(6)返回目標響應(yīng)對象(4)把請求轉(zhuǎn)換到具體Action處理(3)填充FormBean圖2-2Struts實現(xiàn)的MVC框架下面介紹一下Struts的工作流程:服務(wù)器啟動時就會加載并初始化ActionServlet,ActionServlet讀取文件中的配置信息存放到各種配置對象中。以登錄為例,第一次打開會先實例化loginFrom,把默認值賦給表單元素。輸入用戶名和密碼,然后提交表單到action屬性的login.do,在文件匹配action下的path屬性找到,通過name屬性找form-beans中的form-bean的name屬性得到ActionForm的包名類名LoginForm,先實例化form,把表單的值username、pwd填充給form,調(diào)用form的validate方法驗證,ActionErrors返回null表單驗證通過,否則失敗返回input指定的頁面,驗證通過會實例化Action,執(zhí)行Action的execute方法。2.3.2SpringSpring[7]是一個開源框架,它是為了解決企業(yè)應(yīng)用開發(fā)的復(fù)雜性而創(chuàng)建的。Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限于服務(wù)器端的開發(fā)。從簡單性、可測試性和松耦合的角度而言,任何Java應(yīng)用都可以從Spring中受益?!裟康模航鉀Q企業(yè)應(yīng)用開發(fā)的復(fù)雜性◆功能:使用基本的JavaBean代替EJB,并提供了更多的企業(yè)應(yīng)用功能◆范圍:任何Java應(yīng)用簡單來說,Spring是一個輕量級的控制反轉(zhuǎn)(IoC)和面向切面(AOP)的容器框架?!糨p量——從大小與開銷兩方面來說,Spring都是輕量的。完整的Spring框架可以在一個大小只有1MB多的JAR文件里發(fā)布。同時Spring所需的處理開銷也是非常小的。另外,Spring是非侵入式的:典型的特點,Spring應(yīng)用中的對象不依賴于Spring的特定類?!艨刂品崔D(zhuǎn)——Spring通過一種稱作控制反轉(zhuǎn)(IoC)的技術(shù)促進了松耦合。當應(yīng)用了IoC,一個對象依賴的其它對象會通過被動的方式傳遞進來,而不是這個對象自己創(chuàng)建或者查找依賴對象。你可以認為IoC與JNDI相反——不是對象從容器中查找依賴,而是容器在對象初始化時不等對象請求就主動將依賴傳遞給它。◆面向切面——Spring提供了面向切面編程的豐富支持,允許通過分離應(yīng)用的業(yè)務(wù)邏輯與系統(tǒng)級服務(wù)(例如審計(auditing)和事務(wù)(transaction)管理)進行內(nèi)聚性的開發(fā)。應(yīng)用對象只實現(xiàn)它們應(yīng)該做的——完成業(yè)務(wù)邏輯——僅此而已。它們并不負責(甚至是意識)其它的系統(tǒng)級關(guān)注點,例如日志或事務(wù)支持?!羧萜鳌猄pring包含并管理應(yīng)用對象的配置和生命周期,它就像一種容器,你可以配置你的每個bean如何被創(chuàng)建——基于一個可配置原型(prototype),你的bean可以創(chuàng)建一個單獨的實例或者每次需要時都生成一個新的實例——以及它們是如何相互關(guān)聯(lián)的。然而,Spring不應(yīng)該被混同于傳統(tǒng)的重量級的EJB容器,它們經(jīng)常是龐大與笨重的,難以使用?!艨蚣堋猄pring可以通過簡單的組件配置、組合成為復(fù)雜的應(yīng)用。在Spring中,應(yīng)用對象被聲明式地組合,典型地是在一個XML文件里。Spring也提供了很多基礎(chǔ)功能,如事務(wù)管理、持久化框架集成等等。所有Spring的這些特征使你能夠編寫更干凈、更可管理、并且更易于測試的代碼。它們也為Spring中的各種模塊提供了基礎(chǔ)支持。2.3.3HibernateHibernate[8]是一個開放源代碼的對象關(guān)系映射框架,它對JDBC進行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數(shù)據(jù)庫。Hibernate在任何使用JDBC的場合都可以應(yīng)用,它不僅可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應(yīng)用中使用,最重要的意義是,Hibernate可以在應(yīng)用EJB的J2EE架構(gòu)中取代CMP,完成數(shù)據(jù)持久化的重任。Hibernate一共有5個核心接口,它們分別為:Session、SessionFactory、Transaction、Query和Configuration。在任何開發(fā)中都會用到這5個核心接口。通過這些接口,既可以對持久化對象進行存取,還能夠進行事務(wù)控制。下面分別介紹這五個核心接口。·Session接口:Session接口的作用是負責執(zhí)行被持久化對象的CRUD操作。但需要注意的是,Session對象是非線程安全的。同時,Hibernate的session與JSP應(yīng)用中的Session也有所不同。Session一般指的是Hibernate中的session,而以后會將Sesion對象稱為用戶session。·SessionFactory接口:SessionFactory接口負責初始化Hibernate。它的作用是充當數(shù)據(jù)存儲源的代理和負責創(chuàng)建Session對象。這里用到了工廠模式。但要注意的是,由于在一般情況下,一個項目通常只需要一個SessionFactory就夠,當需要操作多個數(shù)據(jù)庫時,可以為每個數(shù)據(jù)庫指定一個SessionFactory,因此SessionFactory并不是輕量級的,?!onfiguration接口:Configuration接口負責配置并啟動Hibernate,創(chuàng)建SessionFactory對象。在Hibernate啟動過程中,Configuration類的實例先是定位映射文檔位置、讀取配置,然后再創(chuàng)建SessionFactory對象?!ransaction接口:Transaction接口負責事務(wù)相關(guān)的操作。它不是必須的,是可選的,開發(fā)人員可以設(shè)計編寫自己的底層事務(wù)處理代碼?!uery和Criteria接口:Query和Criteria接口負責執(zhí)行各種數(shù)據(jù)庫查詢。它可以使用兩種表達方式,它們分別是HQL語言或SQL語句。

第三章系統(tǒng)設(shè)計3.1基本需求圖書網(wǎng)上查詢系統(tǒng)主要是實現(xiàn)網(wǎng)上搜索圖書功能的系統(tǒng)。通過調(diào)查要處理的對象,明確了用戶的需求,在這里我們需要了解用戶有什么樣的具體要求。1.圖書瀏覽:用戶進入網(wǎng)站后,不用注冊也可以瀏覽所有的圖書,用戶注冊登錄后,可瀏覽自己的圖書。2.圖書詳情:隨意查看某本圖書的詳細信息。3.圖書搜索:用戶進入網(wǎng)站后,不用注冊就可以搜索自己想要的圖書。4.用戶注冊登錄:用戶為了能在網(wǎng)站上進行更多的操作,需注冊為會員并登錄。5.修改個人信息:用戶登錄后,可對注冊的信息進行修改完善。6.添加個人圖書:用戶登錄后,可添加自己的圖書,提交到網(wǎng)站供別人查詢。7.修改刪除圖書:用戶登錄后,可修改已添加圖書的信息,或刪除。8.查看圖書所屬:用戶進入網(wǎng)站后,可查看圖書所屬者的具體信息。9.管理員后臺登錄管理。3.2模塊設(shè)計根據(jù)需求分析與設(shè)計目標,結(jié)合實際情況,本系統(tǒng)功能模塊設(shè)計分為如下幾個模塊:1.導航菜單該頁面是一個單獨的頁面,其它頁面直接引用該頁面,實現(xiàn)了與其它模塊的鏈接,注冊用戶登錄后還可以獲得其它操作權(quán)限。2.首頁在這里顯示最新上傳更新的8本圖書的一些基本信息,還有模糊分類查詢、分類分頁查詢等功能。3.用戶管理該模塊實現(xiàn)了用戶的注冊、登錄、查看修改信息。4.圖書管理該模塊實現(xiàn)了圖書的瀏覽、查詢。瀏覽可按類分頁瀏覽,查詢可按不同條件查詢,有模糊查詢也有精確查詢,查詢結(jié)果分頁瀏覽。用戶登錄后,還可以對自己的圖書進行管理,包括瀏覽、增加、修改、刪除圖書。5.圖書詳細信息不管有沒有用戶登錄,都能從圖書瀏覽處直接調(diào)用該模塊,查看圖書詳細信息。6.后臺管理管理員通過特定帳號登錄后臺進行管理,包括所有的信息管理。3.3系統(tǒng)整體架構(gòu)3.3.1系統(tǒng)結(jié)構(gòu)圖書網(wǎng)上查詢系統(tǒng)圖書網(wǎng)上查詢系統(tǒng)用戶管理圖書管理后臺管理用戶注冊用戶登錄修改信息圖書瀏覽圖書查詢圖書詳細信息圖書管理會員管理用戶圖書管理圖3-1系統(tǒng)結(jié)構(gòu)圖數(shù)據(jù)流圖:是一種描述軟件系統(tǒng)邏輯模型的圖形符號。這種圖形表示即可以從本質(zhì)上描述計算機軟件系統(tǒng)的工作情況,又適合非計算機專業(yè)人員學習和掌握,在需求分析中是一種很好的交流和表達工具。帶箭頭的線表示數(shù)據(jù)流,其中箭頭表示了數(shù)據(jù)的流動方向。圓框表示對數(shù)據(jù)的加工。方框表示數(shù)據(jù)的起點和終點。部分數(shù)據(jù)流圖:用戶注冊信息用戶注冊信息圖書網(wǎng)上查詢系統(tǒng)圖書網(wǎng)上查詢系統(tǒng)用戶登陸信息用戶登陸信息系統(tǒng)圖書瀏覽信息系統(tǒng)圖書瀏覽信息圖書查詢信息圖書查詢信息用戶信息修改信息用戶信息修改信息圖書信息修改信息圖書信息修改信息圖3-2圖書網(wǎng)上查詢系統(tǒng)數(shù)據(jù)流圖用戶基本用戶基本信息文件注冊處理用戶信息處理用戶信息處理修改信息修改信息圖3-3用戶基本信息處理數(shù)據(jù)流圖書籍總覽書籍總覽書名(模糊)查詢書名(模糊)查詢作者查詢作者查詢圖書查詢處理圖書查詢處理出版社查詢出版社查詢所有者查詢所有者查詢ISBN查詢ISBN查詢圖3-4書籍查詢處理數(shù)據(jù)流圖管管理員信息文件瀏覽圖書添加圖書添加圖書修改圖書修改圖書刪除圖書刪除圖書管理員登陸管理員登陸瀏覽用戶瀏覽用戶添加用戶添加用戶刪除用戶刪除用戶圖3-5管理員管理數(shù)據(jù)流圖3.3.2開發(fā)環(huán)境1.軟件環(huán)境(1)服務(wù)器端: 操作系統(tǒng):WindowsXP及其以上版本。安裝好JDK1.6.0_13并配置好環(huán)境變量。(注意不要把JDK安裝在中文目錄下,否則可能會不能識別JDK路徑)變量名:JAVA_HOME變量值:JDK安裝路徑\變量名:path變量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;變量名:classpath變量值:; 數(shù)據(jù)庫環(huán)境:MySQL5.1及其以上版本,及數(shù)據(jù)庫連接驅(qū)動包,數(shù)據(jù)庫界面操作用SQLyogEnt。其它軟件:MyEclipse6及其以上版本,服務(wù)器用MyEclipse自帶的Tomcat。(2)客戶端: 操作系統(tǒng):Windows98及其以上版本,建議使用WindowsXP。2.硬件環(huán)境(1)服務(wù)器端: 處理器:建議使用Pentium42.0MHz及以上處理器。 內(nèi)存:256MBRAM建議使用512MBRAM及其以上容量。 硬盤空間:安裝驅(qū)動器上要求300MB以上可用空間,建議有100MB的硬盤剩余空間。(2)客戶端:無特殊要求,能保證正常上網(wǎng)即可。

第四章詳細設(shè)計與實現(xiàn)4.1模塊實現(xiàn)判斷用戶是否登錄登錄用戶,提供一下鏈接:首頁index.do、圖書瀏覽booklist.do、我的圖書mybooklist.do、個人信息edituser.jsp、注銷logout.jsp,其中提交給我的圖書的請求中,包括了登錄用戶的用戶名`username`,來確定是哪個用戶的圖書大體代碼如下:try{ List<Userinfo>user=manager.findUserByUsername(username);//根據(jù)用戶名查詢對應(yīng)記錄 userinfo=(Userinfo)user.get(0);//獲取取得記錄中的第一條,并定義為userinfor; Stringpwd=userinfo.getPwd();//從userinfor中間表中獲取pwd; if(password.equals(pwd)) { request.getSession(true).setAttribute("loginedUser",userinfo); returnmapping.findForward("success"); } if(!password.equals(pwd)) { request.setAttribute("error","e_pwd"); } } catch(Exceptione){ //捕獲異常,若用戶名獲取不到,則返回登錄頁面; request.setAttribute("error","e_user"); }returnmapping.findForward("failed");提供分類查詢標簽,跳轉(zhuǎn)不同查詢結(jié)果頁面提供圖片鏈接,如百度、卓越網(wǎng)等顯示最新上傳的8本圖書的信息,在打開主頁前,就提交了index.do至IndexAction.java,查詢結(jié)果返回顯示至主頁查看圖書的詳細信息,點擊圖書圖片或圖書名,發(fā)出請求book.do?id=${books.id}至BookAction.java,在彈出窗口中瀏覽結(jié)果;點擊所屬者名字,發(fā)出請求userinfo.do至UserinfoAction.java,在彈出窗口中瀏覽圖書所屬者信息 List<Bookinfo>booklist=bmanager.findAll(); List<Bookinfo>books=booklist.subList(0,8);//獲取最新的幾本圖書列表 request.setAttribute("books",books);//保存圖書列表 returnmapping.findForward("success");3.用戶管理詳細設(shè)計及描述用戶注冊register.jsp:提交用戶基本信息表單,發(fā)送請求register.do至RegisterAction.java;重置所有已填信息為空;返回按鈕返回主頁Userinfouserinfo=newUserinfo(); List<Userinfo>users=manager.findUserByUsername(userForm.getUsername());//根據(jù)用戶名查詢對應(yīng)記錄 userinfo=(Userinfo)users.get(0);request.setAttribute("error","e_user1");//返回該用戶已存在if(manager.save(user)){//保存用戶注冊信息 request.setAttribute("result","success"); returnmapping.findForward("success");} else{ request.setAttribute("error","用戶信息添加失?。?);}用戶登錄login.jsp:提交用戶的用戶名密碼表單,發(fā)送請求login.do至LoginAction.java;返回按鈕返回首頁;提供鏈接跳轉(zhuǎn)至注冊頁面List<Userinfo>user=manager.findUserByUsername(username);//根據(jù)用戶名查詢對應(yīng)記錄 userinfo=(Userinfo)user.get(0);//獲取取得記錄中的第一條,并定義為userinfor; Stringpwd=userinfo.getPwd();//從userinfor中間表中獲取pwd; if(password.equals(pwd)){ request.getSession(true).setAttribute("loginedUser",userinfo); returnmapping.findForward("success"); } if(!password.equals(pwd)){ request.setAttribute("error","e_pwd");}用戶信息修改edituser.jsp:用戶登錄后將用戶信息存入session中,直接從session中讀取logineduser信息,顯示給用戶看;信息修改后,提交用戶信息表單,發(fā)送請求edituser.do至EdituserAction.java;返回按鈕返回上一步操作頁面if(manager.update(user)){//更新用戶信息 request.setAttribute("result","suc"); request.getSession(true).setAttribute("loginedUser",user); returnmapping.findForward("success"); }else{ request.setAttribute("error","e_editu");}4.圖書管理詳細設(shè)計及描述//分析當前頁碼 StringpageString=request.getParameter("page"); if(pageString==null||pageString.length()==0){ pageString="1"; } intcurrentPage=0; try{ currentPage=Integer.parseInt(pageString);//當前頁碼 }catch(Exceptione){} intpageSize=5;//每頁顯示的數(shù)據(jù)數(shù) //讀取數(shù)據(jù) List<Bookinfo>books=bmanager.findPagedAll(currentPage,pageSize); request.setAttribute("books",books);//保存用戶列表 request.setAttribute("totalPage",bmanager.getTotalPage(pageSize));//保存總頁數(shù) request.setAttribute("totalCount",bmanager.getTotalCount());//保存記錄總數(shù) request.setAttribute("currentPage",currentPage);//保存當前頁碼returnmapping.findForward("success");Stringsel=request.getParameter("select"); Stringsn=request.getParameter("searchname"); sn=newString(sn.getBytes("ISO-8859-1"),"UTF-8"); List<Bookinfo>booklist=null; switch(sel.toCharArray()[0]){ case'w':booklist=bmanager.findByWriter(sn); break; case'p':booklist=bmanager.findByPublisher(sn); break; case'o':booklist=bmanager.findByOwner(sn); break; case'i':booklist=bmanager.findByIsbn(sn); break; default:booklist=bmanager.findBookByBookname(sn); break;}我的圖書瀏覽mybooklist.jsp:返回mybooklist.do的結(jié)果,分頁顯示我的圖書,每頁最多顯示5本;查看圖書的詳細信息,點擊圖書圖片或圖書名,發(fā)出請求book.do?id=${books.id}至BookAction.java,在彈出窗口中瀏覽結(jié)果;提供添加新書的鏈接至addbook.jsp;提供刪除圖書鏈接,提交deletebook.do及要刪除的圖書id至DeletebookAction.java,結(jié)果返回該頁增加圖書addbook.jsp:提交圖書基本信息表單,發(fā)送請求addbook.do至AddbookAction.java;點擊“瀏覽”選擇要上傳的圖書封面圖片的路徑,點擊添加發(fā)送請求至upload.jsp,上傳成功返回該頁;填寫完圖書信息表單,提交請求addbook.do至AddbookAction.java;返回按鈕返回我的圖書頁面if(bmanager.save(newbook)){//保存新增圖書的信息 request.getSession(true).setAttribute("book",newbook); request.setAttribute("result","suc"); returnmapping.findForward("success"); }else{ request.setAttribute("error","e_addbook");}if(bmanager.update(book)){//更新圖書信息 request.getSession(true).setAttribute("book",book); request.setAttribute("result","suc"); returnmapping.findForward("success"); }else{ request.setAttribute("error","e_editbook");}返回book.do的結(jié)果,顯示前一步所要看的圖書的詳細信息;修改按鈕跳轉(zhuǎn)至修改頁面editbook.jsp;關(guān)閉按鈕關(guān)閉該窗口Bookinfobook=newBookinfo(); book=(Bookinfo)bmanager.findById(Integer.parseInt(request.getParameter("id"))); if(book==null){ request.setAttribute("error","e_bookid"); returnmapping.findForward("failed"); } if(request.getParameter("name")!=null){ request.setAttribute("name",request.getParameter("name")); } request.getSession(true).setAttribute("book",book);returnmapping.findForward("success");4.2數(shù)據(jù)庫設(shè)計本系統(tǒng)的數(shù)據(jù)庫book包含2個表bookinfo、userinfo: bookinfo表:存放圖書的基本信息,包含了圖書編號(id)、圖書名(bookname)、所屬者(owner)、標準編號(isbn)、作者(writer)、出版社(publisher)、簡介(intro)、價格(price)、剩余數(shù)量(remaining)、封面圖片(picture)、上傳日期(date)這些字段。 userinfo表:存放用戶的基本信息,包含了用戶編號(id)、用戶名(username)、密碼(pwd)、學校(school)、院系(department)、專業(yè)(speciality)、(phone)、地址(address)、(postcode)、郵箱(email)這些字段。數(shù)據(jù)庫表格設(shè)計如下:表4-1圖書基本信息表bookinfo字段名數(shù)據(jù)類型長度默認主鍵非Null無符號自動遞增補零idint101111booknamechar1281ownerchar451isbnchar641writerchar451publisherchar641introtextpricedecimal6,21remainingsmallint200000111picturechar32datedatetime0000-00-0000:00:001建表代碼如下:bookinfoCREATETABLE`bookinfo`(`id`int(10)unsignedNOTNULLAUTO_INCREMENT,`bookname`char(128)NOTNULL,`owner`char(45)NOTNULL,`isbn`char(64)NOTNULL,`writer`char(45)NOTNULL,`publisher`char(64)NOTNULL,`intro`text,`price`decimal(6,2)NOTNULLDEFAULT'0.00',`remaining`smallint(5)unsignedzerofillNOTNULLDEFAULT'00000',`picture`char(32)DEFAULTNULL,`date`datetimeNOTNULLDEFAULT'0000-00-0000:00:00',PRIMARYKEY(`id`))ENGINE=InnoDBAUTO_INCREMENT=75DEFAULTCHARSET=utf8表4-2用戶基本信息表userinfo字段名數(shù)據(jù)類型長度默認主鍵非Null無符號自動遞增補零idint101111usernamevarchar201pwdvarchar201schoolvarchar501departmentvarchar50specialityvarchar50phonevarchar121addressvarchar501postcodevarchar61emailvarchar32建表代碼如下:userinfoCREATETABLE`userinfo`(`id`int(10)unsignedNOTNULLAUTO_INCREMENT,`username`varchar(15)NOTNULL,`pwd`varchar(32)NOTNULL,`school`varchar(50)NOTNULL,`department`varchar(50)DEFAULTNULL,`speciality`varchar(50)DEFAULTNULL,`phone`varchar(12)NOTNULL,`address`varchar(50)NOTNULL,`postcode`varchar(6)NOTNULL,`email`varchar(32)NOTNULL,PRIMARYKEY(`id`))ENGINE=InnoDBAUTO_INCREMENT=9DEFAULTCHARSET=utf84.3系統(tǒng)實現(xiàn)問題及解決方法在圖書網(wǎng)上查詢系統(tǒng)實現(xiàn)過程中,不斷遇到各種各樣的技術(shù)難點,從搭建系統(tǒng)工作環(huán)境到系統(tǒng)運行測試,以下講述一些已解決或有待解決的問題。1.環(huán)境搭建問題系統(tǒng)開發(fā)使用MyEclipse,數(shù)據(jù)庫使用MySql,這兩個在安裝配置時都沒什么問題。服務(wù)器剛開始使用的是Tomcat5.5.0,但是初步測試時總是運行不起來,就改用MyEclipse內(nèi)置的Tomcat6了。2.分頁顯示技術(shù)難點 查詢系統(tǒng)里,肯定有大量的顯示結(jié)果的地方,這就需要用到分頁顯示的方法,本系統(tǒng)里使用的是Struts整合了Hibernate的分頁方法。分頁的基本思路簡單如下幾點:(1)頁面URL要加page=?這個請求參數(shù) (2)intcurrentPage=Integer.parseInt(request.getParameter(“page”));//后臺獲取當前頁碼。currentPage變量表示當前顯示的是第幾頁。 (3)每頁顯示的數(shù)據(jù)數(shù)量intpageSize=5; (4)先從數(shù)據(jù)庫獲得總記錄數(shù)totalRecordCount,然后計算出總頁數(shù) inttotalPageCount=((totalCount+pageSize)-1)/pageSize; 還要確??傢摂?shù)最少為1 if(totalPageCount==0){totalPageCount=1;} (5)表示層顯示分頁代碼 下一頁.do?page=${currentPage+1} 上一頁.do?page=${current1} 為了避免跳轉(zhuǎn)到第-1頁或者比最大頁數(shù)還大的那頁,加上判斷 <c:iftest=”${currentPage>1}”>上一頁的鏈接</c:if> <c:iftest=”${currentpage<=1}”>上一頁</c:if> (6)后臺的DAO或者業(yè)務(wù)層 publicintgetTotalCount(){………..} publicListfindPagedAll(intcurrentPage,intpageSize){……….} publicintgetTotalPage(intpageSize){………..}3.頁面顯示時的問題 比如說圖書瀏覽時,下拉瀏覽到了頁面底部,然后點擊某本圖書查看詳細信息,在關(guān)閉彈出窗口后,原頁面的跳轉(zhuǎn)問題。如

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論