




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
PAGExx大學(xué)畢業(yè)設(shè)計(論文)旅游網(wǎng)站設(shè)計專業(yè):計算機科學(xué)與技術(shù)班級:姓名:目錄引言 31需求分析 61.1設(shè)計目標(biāo) 61.2用戶特點 71.3運行環(huán)境 71.4可行性研究 71.4.1技術(shù)可行性 71.4.2經(jīng)濟(jì)可行性 82技術(shù)選擇 92.1數(shù)據(jù)庫技術(shù) 92.2開發(fā)環(huán)境 102.3前臺技術(shù) 102.4框架技術(shù) 113系統(tǒng)概要設(shè)計 153.1系統(tǒng)結(jié)構(gòu) 153.1.1網(wǎng)站總體結(jié)構(gòu) 153.1.2系統(tǒng)功能結(jié)構(gòu) 153.1.3用戶權(quán)限分系統(tǒng)功能結(jié)構(gòu) 163.1.4管理員權(quán)限分系統(tǒng)功能結(jié)構(gòu) 163.2系統(tǒng)用例 173.2.1普通用戶用例 183.2.2會員用戶用例 183.2.3系統(tǒng)管理員用例 193.3數(shù)據(jù)庫設(shè)計 203.3.1數(shù)據(jù)庫設(shè)計概述 203.3.2數(shù)據(jù)庫需求分析 213.3.3數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計 223.3.4數(shù)據(jù)庫物理結(jié)構(gòu)設(shè)計 233.3.5數(shù)據(jù)庫的完整性和安全性 294系統(tǒng)詳細(xì)設(shè)計 304.1數(shù)據(jù)庫連接 304.2系統(tǒng)具體實現(xiàn) 314.2.1用戶權(quán)限分系統(tǒng) 314.2.2管理員權(quán)限分系統(tǒng) 435海軍旅游網(wǎng)的測試 535.1系統(tǒng)測試 535.1.1單元測試 545.1.2集成測試和確認(rèn)測試 545.1.3系統(tǒng)測試 545.2數(shù)據(jù)跟蹤實例 545.2.1用戶注冊 545.2.2用戶登錄 545.3綜合測試 55結(jié)論 56致謝 58參考文獻(xiàn) 59附錄源程序清單 60PAGE82沈陽大學(xué)畢業(yè)設(shè)計(論文)No.摘要隨著旅游行業(yè)的不斷發(fā)展,各家旅游行業(yè)之間的競爭日益激烈,旅游部門所需的信息量越來越大,業(yè)務(wù)操作中涉及的各種線路情況、客戶情況以及旅游協(xié)作部門的情況越來越復(fù)雜多變。而除了一些個別地區(qū)已采用了旅游網(wǎng)站,一般通常是以原始的手工方式處理/交流信息。但是工作人員若僅靠手工方式處理大量資料,很可能帶來出錯率的增長以及大量資源的浪費和閑置等問題。因此,只有加強對旅游信息資源的整合、統(tǒng)一管理,才能使旅游部門更加合理、高效地運轉(zhuǎn)。本文是根據(jù)旅游行業(yè)的這種現(xiàn)狀,提出解決問題的一個可行性方法:采用現(xiàn)代化統(tǒng)一的計算機網(wǎng)絡(luò)系統(tǒng),實現(xiàn)了旅游管理的網(wǎng)絡(luò)化,各類信息有序地進(jìn)行存儲,同時采用了權(quán)限認(rèn)證的方式,只有經(jīng)過了系統(tǒng)權(quán)限認(rèn)證之后,方可進(jìn)入系統(tǒng)主控界面,進(jìn)行信息管理,在線預(yù)訂等功能的使用。實現(xiàn)了各種業(yè)務(wù)系統(tǒng)的數(shù)據(jù)集成和信息集成,對旅行社各類信息、資源進(jìn)行協(xié)同集中管理。利用JSP技術(shù)建立動態(tài)網(wǎng)站,實現(xiàn)旅游信息快速發(fā)布及接受游客的網(wǎng)上預(yù)訂。關(guān)鍵字:旅游信息;網(wǎng)絡(luò);旅游網(wǎng)站AbstractWiththesteadygrowthoftourismindustry,traveldepartmentsarenowfacingtoughcompetitionbetweeneachother.Variousinformationateachstageoftheprocessarecomingup,suchasaccountspaymentstatus,clientrequestandfeedbackfromcontractingparties,andsoon.Andtheinformationvolumeisevergrowingandbecomingmoresophisticated.Mostdepartmentsusuallyhandletheseinformationmanuallyleavesbigroomforomissionanderrors,andquiteapartofresourcesmightnotbeutilizedefficiently.Therefore,acomputerizedsystemshallbedevelopedtobetterintegratetheinformationandutilizetheresources.ThissystemisallaboutsuchaTourismWeb.Informationofallkindsarestoredautomaticallyinaorderlyway,andusersgothroughanrecognitionprocedure,thoseapproveduserenterintothemainboardtomakereservationonline,manageinformationetc.TourismWebmadeitpossibletointegrateandutilizevarioustourisminformation/datatobetterusetheresourcesoftravelagency.Furthermore,tourisminformationcanbeknownquicklyandtouristscanbookthroughtheinternetbyusingJSPtoestablishaTourismweb.Keywords:informationoftourism;network;TourismWeb引言旅游業(yè)具有“無煙產(chǎn)業(yè)”和“永遠(yuǎn)的朝陽產(chǎn)業(yè)”的美稱,它已經(jīng)和石油業(yè)、汽車業(yè)并列為世界三大產(chǎn)業(yè);根據(jù)統(tǒng)計,它每年產(chǎn)出4.7萬億美金的收入,直接或間接地為2億700萬人提供了就業(yè)機會,并支持著數(shù)以萬計的企業(yè)的發(fā)展。改革開放以來,我國的旅游業(yè)有了非常迅速的發(fā)展,但是比較而言,我國國內(nèi)旅游業(yè)發(fā)展的廣度深度都遠(yuǎn)遠(yuǎn)不能適應(yīng)經(jīng)濟(jì)發(fā)展和人民生活水平提高的需要。隨著市場經(jīng)濟(jì)的發(fā)展和人民收入水平的進(jìn)一步提高,人民對旅游消費的需求將進(jìn)一步上升,國內(nèi)旅游業(yè)在國民經(jīng)濟(jì)中的地位和作用越來越重要。但我國旅游產(chǎn)業(yè)仍然基礎(chǔ)薄弱,管理手段滯后,信息化程度低,企業(yè)效益較差。旅游行政管理部門存在管理方式落后,缺乏信息化管理手段,信息溝通渠道不通暢等問題.,面對困難和挑戰(zhàn),我國旅游業(yè)必須轉(zhuǎn)變觀念,創(chuàng)新思維,以信息化建設(shè)為突破口和新手段,整合各種資源,從而實現(xiàn)整個行業(yè)的新跨越。加強旅游信息化建設(shè),可以提高各級管理部門的工作效率和管理水平,精簡辦事程序,降低工作成本,加大宣傳力度,加快信息傳播速度,提高信息實效性;另一方面可以通過開展電子商務(wù),滿足游客的個性化需求,提高旅游服務(wù)質(zhì)量,改變旅游企業(yè)傳統(tǒng)經(jīng)營模式,降低成本,增加效益,從而提高整個旅游產(chǎn)業(yè)素質(zhì),旅游實現(xiàn)信息化,將會進(jìn)一步壯大旅游支柱產(chǎn)業(yè),提升旅游產(chǎn)業(yè)整體信息化水平,優(yōu)化產(chǎn)業(yè)結(jié)構(gòu)和資源配置,完善產(chǎn)業(yè)鏈,進(jìn)而帶動眾多相關(guān)產(chǎn)業(yè)發(fā)展,拉動內(nèi)需,擴(kuò)大就業(yè),增加外匯收入,對經(jīng)濟(jì)發(fā)展起到積極的推動作用。現(xiàn)階段,我國的一些旅游部門在信息化方面做的工作和其投入較少,對自身的發(fā)展起到了制約作用,可以通過建立旅游網(wǎng)站來宣傳本地的風(fēng)土人情,對信息進(jìn)行網(wǎng)絡(luò)化、信息化管理,提高自身競爭能力。目前有許多中型的旅游管理部門仍依靠原始的人工方式采用電子文檔、電子表格等(例如Word、Excel,或者簡單的Access)來對旅游信息進(jìn)行管理,大部分旅行社也無自己的旅游網(wǎng)站,無法在現(xiàn)在這個網(wǎng)絡(luò)時代接受客戶的網(wǎng)上預(yù)訂。隨著業(yè)務(wù)的不斷擴(kuò)展,旅行社業(yè)務(wù)操作中涉及的各種收費情況、客戶情況以及旅游線路情況越來越復(fù)雜,業(yè)務(wù)操作人員若僅靠手工方式處理處理大量資料,則遺漏信息的現(xiàn)象更容易發(fā)生,同時也可能帶來出錯率的增長以及大量資源的浪費和閑置等問題。因此,只有加強對旅游部門信息資源的整合、統(tǒng)一管理,才能使行業(yè)更加合理、高效地運轉(zhuǎn)?,F(xiàn)行的旅游信息管理模式的問題主要體現(xiàn)在如下幾個方面:(1)各類旅游信息查詢速度慢,工作強度大。旅游信息中牽涉到游客資料、導(dǎo)游信息、費用、線路、景點、酒店等等大量的資料,用人工方式進(jìn)行整理匯總時,速度慢、工作繁瑣、易出錯。(2)各類資源之間調(diào)配難度大。由于信息面廣,信息量大,因此要對其中某些資源進(jìn)行統(tǒng)一管理、調(diào)配是需要花費大量的人工。(3)相當(dāng)一部分資源缺少一定的保護(hù),處于不安全的狀態(tài),許多信息容易泄露。(4)對于客戶的服務(wù)要求反應(yīng)慢?;谏厦娴脑?,對于客戶提出的服務(wù)要求,勢必不能做出快捷的反應(yīng)。(5)缺少服務(wù)質(zhì)量反饋的統(tǒng)一管理。面對旅游市場的巨大潛力,旅游休閑類網(wǎng)站應(yīng)積極行動,采取相應(yīng)的發(fā)展對策。如改變營銷觀念,提高服務(wù)質(zhì)量,加強交易的安全性等。旅游網(wǎng)站數(shù)量巨大,發(fā)展的趨勢將是走向收購合并。從發(fā)展的角度來說,旅游網(wǎng)站必須作好三個結(jié)合:一是資金、資源、技術(shù)和市場的結(jié)合,尤其是網(wǎng)站資源與市場的結(jié)合還很不夠;二是國際與國內(nèi)的結(jié)合,借助國際資金和技術(shù),啟動國內(nèi)市場,整合國內(nèi)資源;三是電子網(wǎng)絡(luò)和經(jīng)營網(wǎng)絡(luò)的結(jié)合,要向緊密化結(jié)合發(fā)展。未來的工作是使這三個方面結(jié)合起來,加大網(wǎng)絡(luò)技術(shù)對旅游發(fā)展的影響,更加充分地體現(xiàn)旅游在網(wǎng)絡(luò)文化中的優(yōu)勢。1需求分析1.1設(shè)計目標(biāo)該系統(tǒng)主要建立一個完整的旅游網(wǎng)站,突出旅游特點,有美觀的界面設(shè)計。其主要功能如下:普通用戶:用戶可以對各種旅游資源信息進(jìn)行綜合查詢,如:按照多種符合條件對旅游線路信息進(jìn)行查詢、景點信息查詢、旅館信息查詢、旅游團(tuán)信息查詢、旅游方式信息查詢等。用戶登錄系統(tǒng)后,可以對旅游線路的檢索結(jié)果進(jìn)行選定,確定所屬旅游團(tuán),然后對旅游團(tuán)進(jìn)行預(yù)訂。預(yù)訂步驟完成后,可以瀏覽預(yù)訂結(jié)果,即所生成的訂單。當(dāng)然,也可以取消預(yù)訂,即刪除自己的訂單。系統(tǒng)管理員:管理人員登錄系統(tǒng)后,將各種煩瑣的管理工作通過網(wǎng)站來管理,用最少的人力和物力提高管理水平,方便發(fā)布各種旅游信息,處理游客所遇到的各種問題,及時了解游客對旅游管理部門的意見,通過數(shù)據(jù)分析可以了解游客的基本情況和不同時期游客的變化情況,提前做出必要的準(zhǔn)備工作。管理人員通過系統(tǒng)處理各個事務(wù),使前臺的操作方便簡單,突出旅游特點,具有美觀的界面設(shè)計,保證網(wǎng)站安全穩(wěn)定的運行。管理員對信息的管理主要包括:景點信息管理、旅游線路信息管理、旅游團(tuán)信息管理、旅館信息管理、旅游團(tuán)票務(wù)統(tǒng)計以及登錄口令管理。管理員也可以根據(jù)各景點、各條旅游線路的游客關(guān)注度來動態(tài)添加旅游線路以及旅游團(tuán),從而滿足不同游客對各地旅游景點以及旅游路線的需求。1.2用戶特點旅游網(wǎng)站主要是用于旅游管理部門和旅游公司,對旅游信息進(jìn)行發(fā)布和修改以及加強與游客之間的交流。本系統(tǒng)的用戶十分廣泛,對用戶的技術(shù)要求是:熟悉計算機基本操作,熟悉Internet相關(guān)操作。1.3運行環(huán)境 硬件需求:奔騰3以上CPU,256M以上內(nèi)存,10G以上剩余硬盤空間 操作系統(tǒng):Windows98/2000/XP/Vista 運行環(huán)境:IE6.0或者以上版本 數(shù)據(jù)庫:MySQL5.1 服務(wù)器:Tomcat6.0或者以上版本1.4可行性研究采用現(xiàn)代化統(tǒng)一的計算機信息網(wǎng)站系統(tǒng),能夠有效幫助旅游企業(yè)優(yōu)化旅游行業(yè)TQC,使其在行業(yè)內(nèi)處于優(yōu)勢地位,并相對長期地保持這種戰(zhàn)略優(yōu)勢。1.4.1技術(shù)可行性技術(shù)上的可行性分析主要分析技術(shù)條件能否順利完成開發(fā)工作,軟、硬件能否滿足需要。本系統(tǒng)采用JSP開發(fā)出友好美觀的人機界面,便于用戶理解、操作。數(shù)據(jù)庫管理系統(tǒng)采用MySQL,它能夠處理大量數(shù)據(jù),同時保持?jǐn)?shù)據(jù)的完整性、安全性。因此本系統(tǒng)的開發(fā)平臺已成熟可行。硬件方面,在科技飛速發(fā)展的今天,硬件更新速度越來越快,容量越來越大,可靠性越來越高,價格越來越便宜,因此硬件平臺也能夠滿足本系統(tǒng)所需。1.4.2經(jīng)濟(jì)可行性計算機技術(shù)發(fā)展異常迅猛的根本原因在于計算機的應(yīng)用促進(jìn)了社會經(jīng)濟(jì)的發(fā)展,給社會帶來了巨大經(jīng)濟(jì)效益。因此基于計算機系統(tǒng)的成本-效益分析是可行性研究的重要內(nèi)容[5]。依照目前的發(fā)展現(xiàn)狀,無論對從成本還是從效益角度,開發(fā)一個這樣的旅游網(wǎng)站在經(jīng)濟(jì)上是可行的。2技術(shù)選擇2.1數(shù)據(jù)庫技術(shù)數(shù)據(jù)庫是數(shù)據(jù)管理的最新技術(shù),是計算機科學(xué)的重要分支。今天,信息資源已成為各個部門的重要財富和資源。建立一個滿足各級部門信息處理要求的行之有效的信息系統(tǒng)也成為一個企業(yè)或組織生存和發(fā)展的重要條件。因此,作為信息系統(tǒng)核心和基礎(chǔ)的數(shù)據(jù)庫技術(shù)得到越來越廣泛的應(yīng)用,從小型單項事務(wù)處理系統(tǒng)到大型信息系統(tǒng),越來越多的應(yīng)用領(lǐng)域采用數(shù)據(jù)庫存儲和處理他們的信息資源[2]。計算機領(lǐng)域中其他新興技術(shù)的發(fā)展對數(shù)據(jù)庫技術(shù)產(chǎn)生了重大影響。數(shù)據(jù)庫技術(shù)和其他計算機技術(shù)的互相結(jié)合,互相深透,使數(shù)據(jù)庫中新的技術(shù)內(nèi)容層出不窮。數(shù)據(jù)庫的許多概念,技術(shù)內(nèi)容,應(yīng)用領(lǐng)域,甚至某些原理都有了重大的發(fā)展和變化。建立和實現(xiàn)了一系列新型數(shù)據(jù)庫系統(tǒng),如分布式數(shù)據(jù)庫系統(tǒng),并行數(shù)據(jù)庫系統(tǒng),知識庫系統(tǒng),多媒體數(shù)據(jù)庫系統(tǒng)等。它們共同構(gòu)成了數(shù)據(jù)庫系統(tǒng)大家族,使數(shù)據(jù)庫技術(shù)不斷地涌現(xiàn)新的研究方向。本系統(tǒng)選用MySQL5.1數(shù)據(jù)庫,原因在于MySQL關(guān)系型數(shù)據(jù)庫使用系統(tǒng)核心提供的多線程機制提供完全的多線程運行模式,并提供了面向C、C++、Java等編程語言的編程接口,支持多種字段類型并且提供了完整的操作符支持查詢中的SELECT和WHERE操作[2]。而且MySQL是開放源代碼的,因此任何人都可以在GeneralPublicLicense的許可下下載并根據(jù)個性化的需要對其進(jìn)行修改。MySQL因為其速度、可靠性和適應(yīng)性而備受關(guān)注。大多數(shù)人都認(rèn)為在數(shù)據(jù)量不是十分龐大的情況下,MySQL是管理內(nèi)容最好的選擇。2.2開發(fā)環(huán)境本系統(tǒng)采用當(dāng)今流行的Java語言進(jìn)行程序的開發(fā)。Java是面向?qū)ο蟮恼Z言,因此它擁有著所有面向?qū)ο蟮奶攸c:封裝、繼承、多態(tài)和抽象[7]。這使得Java的編程思想要比其他面向過程的語言更加符合人類正常的思維方式。而且,它是跨平臺的,不受操作系統(tǒng)環(huán)境的約束。在Java出現(xiàn)以前,Internet上的信息內(nèi)容都是一些乏味死板的HTML文檔。這對于那些迷戀于Web瀏覽的人們來說簡直不可容忍。他們迫切希望能在Web中看到一些交互式的內(nèi)容,開發(fā)人員也極希望能夠在Web上創(chuàng)建一類無需考慮軟硬件平臺就可以執(zhí)行的應(yīng)用程序,當(dāng)然這些程序還要有極大的安全保障。對于用戶的這種要求,傳統(tǒng)的編程語言顯得無能為力。SUN的工程師敏銳地察覺到了這一點,從1994年起,他們開始將OAK技術(shù)應(yīng)用于Web上,并且開發(fā)出了HotJava的第一個版本[3]。當(dāng)SUN公司1995年正式以Java這個名字推出的時候,幾乎所有的Web開發(fā)人員都心生感嘆:噢,這正是我想要的!于是Java成了一顆耀眼的明星,丑小鴨一下了變成了白天鵝。另外,Java擁有著強大的開源項目,如三大框架:Struts、Hibernate和Spring框架。這些技術(shù)給Java帶來了項目開發(fā)的強大技術(shù)支持[8]。而以上三種框架也在此畢業(yè)設(shè)計中有了一個比較清晰的體現(xiàn)。 開發(fā)工具:MyEclipse6.6 應(yīng)用服務(wù)器:Tomcat6.0 數(shù)據(jù)庫:MySQL5.12.3前臺技術(shù)在本系統(tǒng)中,使用JSP作為前臺的表示層,與用戶進(jìn)行交互。JSP(JavaServerPages)技術(shù)是由Sun公司發(fā)布的用于開發(fā)動態(tài)Web應(yīng)用的一項技術(shù)。它以其簡單易學(xué)、跨平臺的特性,在眾多動態(tài)Web應(yīng)用程序設(shè)計語言中異軍突起,在短短幾年中已經(jīng)形成了一套完整的規(guī)范,并廣泛地應(yīng)用于電子商務(wù)等各個領(lǐng)域中。在國內(nèi),JSP現(xiàn)在也得到了比較廣泛的重視,得到了很好的發(fā)展,越來越多的動態(tài)網(wǎng)站開始采用JSP技術(shù)[4]。用JSP開發(fā)的Web應(yīng)用是跨平臺的,即能在Linux下運行,也能在其他操作系統(tǒng)上運行。JSP技術(shù)使用Java編程語言編寫類XML的tags和scriptlets,來封裝產(chǎn)生動態(tài)網(wǎng)頁的處理邏輯。網(wǎng)頁還能通過tags和scriptlets訪問存在于服務(wù)端的資源的應(yīng)用邏輯。JSP將網(wǎng)頁邏輯與網(wǎng)頁設(shè)計和顯示分離,支持可重用的基于組件的設(shè)計,使基于Web的應(yīng)用程序的開發(fā)變得迅速和容易[6]。JSP頁面由HTML代碼和嵌入其中的Java代碼所組成。服務(wù)器在頁面被客戶端請求以后對這些Java代碼進(jìn)行處理,然后將生成的HTML頁面返回給客戶端的瀏覽器。JavaServlet是JSP的技術(shù)基礎(chǔ),而且大型的Web應(yīng)用程序的開發(fā)需要JavaServlet和JSP配合才能完成。JSP具備了Java技術(shù)的簡單易用,完全的面向?qū)ο?,具有平臺無關(guān)性且安全可靠,主要面向因特網(wǎng)的所有特點。自JSP推出后,眾多大公司都支持JSP技術(shù)的服務(wù)器,如IBM、Oracle、BEA公司等,所以JSP迅速成為商業(yè)應(yīng)用的服務(wù)器端語言。2.4框架技術(shù)在本系統(tǒng)中,我使用了當(dāng)今比較流行的三大框架HSS,即Hibernate、Struts和Spring框架,并將它們整合使用。在此系統(tǒng)中,充分運用了MVC設(shè)計模式,其中,M層由Hibernate框架實現(xiàn)、V層由Struts框架實現(xiàn)、C層由Spring框架實現(xiàn)。首先在持久層(Model層),我認(rèn)為選擇Hibernate框架是再合適不過的了。Hibernate是一種Java語言下的對象關(guān)系映射解決方案。它是一種自由、開源的軟件。它用來把對象模型表示的對象映射到基于SQL的關(guān)系模型結(jié)構(gòu)中去,為面向?qū)ο蟮念I(lǐng)域模型到傳統(tǒng)的關(guān)系型數(shù)據(jù)庫的映射,提供了一個使用方便的框架。Hibernate的核心是ORM,即對象關(guān)系模型,這使得對數(shù)據(jù)庫的操作更加符合Java語言的特點,開發(fā)人員只需通過對對象的操作就可完成對后臺數(shù)據(jù)庫的增刪改查[10]。Hibernate的設(shè)計目標(biāo)是將軟件開發(fā)人員從大量相同的數(shù)據(jù)持久層相關(guān)編程工作中解放出來[1]。無論是從設(shè)計草案還是從一個遺留數(shù)據(jù)庫開始,開發(fā)人員都可以采用Hibernate。其次在視圖層(View層),采用了Struts1.3技術(shù)。Struts框架的推出,不僅極大地簡化了當(dāng)時的J2EEWeb服務(wù)器端開發(fā)技術(shù)中的JSP和Servlet編程實現(xiàn),而且也保證了應(yīng)用系統(tǒng)是基于MVC架構(gòu)而開發(fā)實現(xiàn)的;它不僅簡化了J2EEWeb編程模型并提供了一種快速高效的構(gòu)建Web應(yīng)用程序的方法,同時它還產(chǎn)生了一個龐大的開源技術(shù)社區(qū)——Struts框架自從誕生之日起,就獲得了ApacheJakarta開源社區(qū)的普遍關(guān)注。其優(yōu)點在于:它是開源框架,Struts是Apache軟件基金會資助的一個為開發(fā)基于MVC模式的Web應(yīng)用而設(shè)計的一個開源框架。Struts框架中的各種組件都是標(biāo)準(zhǔn)的J2EEWeb組件:它利用Servlet、JavaBean和JSP、定制標(biāo)簽庫等Web組件以及XML等方面的技術(shù)來實現(xiàn)構(gòu)建Web應(yīng)用系統(tǒng)[9]。它同時也是基于MVC模式的Web應(yīng)用最經(jīng)典的框架:作為一個日漸成熟的優(yōu)秀框架技術(shù)(目前已經(jīng)為Struts2.0版),Struts框架在構(gòu)建基于MVC模式的J2EEWeb應(yīng)用系統(tǒng)有許多技術(shù)方面的優(yōu)勢。因此,Struts框架是目前J2EE技術(shù)平臺中最成熟、應(yīng)用最廣泛的開源MVCWeb框架,它為JavaWeb應(yīng)用系統(tǒng)的開發(fā)者提供了一個結(jié)構(gòu)清晰、功能豐富的開發(fā)平臺;同時ApacheJakarta開源社區(qū)中有關(guān)Struts的技術(shù)資料文檔非常豐富,這將方便讀者的學(xué)習(xí)和應(yīng)用。最后在控制層(Controller層),應(yīng)用了Spring2.5技術(shù)。使用Spring框架的理由真是太多了,因為它存在太多的優(yōu)點了,這也是我喜歡此框架的原因所在。其主要優(yōu)點歸納如下:方便解耦,簡化開發(fā):通過Spring提供的IoC容器,我們可以將對象之間的依賴關(guān)系交由Spring進(jìn)行控制,避免硬編碼所造成的過度程序耦合。有了Spring,用戶不必再為單實例模式類、屬性文件解析等這些很底層的需求編寫代碼,可以更專注于上層的應(yīng)用。AOP編程的支持:通過Spring提供的AOP功能,方便進(jìn)行面向切面的編程,許多不容易用傳統(tǒng)OOP實現(xiàn)的功能可以通過AOP輕松應(yīng)付。聲明式事務(wù)的支持:在Spring中,我們可以從單調(diào)煩悶的事務(wù)管理代碼中解脫出來,通過聲明式方式靈活地進(jìn)行事務(wù)的管理,提高開發(fā)效率和質(zhì)量。方便程序的測試:可以用非容器依賴的編程方式進(jìn)行幾乎所有的測試工作,在Spring里,測試不再是昂貴的操作,而是隨手可做的事情。方便集成各種優(yōu)秀框架:Spring不排斥各種優(yōu)秀的開源框架,相反,Spring可以降低各種框架的使用難度,Spring提供了對各種優(yōu)秀框架(如Struts,Hibernate)的直接支持。Spring對很多難用的JavaEEAPI(如JDBC,JavaMail,遠(yuǎn)程調(diào)用等)提供了一個薄薄的封裝層,通過Spring的簡易封裝,這些JavaEEAPI的使用難度大為降低。3系統(tǒng)概要設(shè)計3.1系統(tǒng)結(jié)構(gòu)3.1.1網(wǎng)站總體結(jié)構(gòu)本網(wǎng)站的開發(fā)過程中采用的是B/S(Browser/Server)結(jié)構(gòu),即瀏覽器/服務(wù)器。它以訪問數(shù)據(jù)服務(wù)器為中心,HTTP協(xié)議為傳輸協(xié)議,客戶端通過瀏覽器(Browser)訪問Web服務(wù)器和數(shù)據(jù)庫服務(wù)器。此結(jié)構(gòu)與C/S(Client/Server)結(jié)構(gòu)相比,存在著無需安裝客戶端軟件的優(yōu)勢,這樣對系統(tǒng)的軟硬件要求不是很高,只需通過操作系統(tǒng)自帶的瀏覽器便可訪問服務(wù)器,十分方便快捷。其總體設(shè)計結(jié)構(gòu)圖如圖1所示。圖SEQ圖\*ARABIC1網(wǎng)站總體設(shè)計結(jié)構(gòu)圖3.1.2系統(tǒng)功能結(jié)構(gòu)該系統(tǒng)主要由兩大分系統(tǒng)組成:用戶權(quán)限分系統(tǒng)和管理員權(quán)限分系統(tǒng)。在用戶權(quán)限分系統(tǒng)中,主要實現(xiàn)游客對旅游信息的查詢以及旅游團(tuán)的申報,當(dāng)然,只有注冊用戶(會員)才可以預(yù)訂旅游團(tuán)。在管理員權(quán)限分系統(tǒng)中,主要實現(xiàn)對各種旅游資源信息進(jìn)行全方面的管理和相應(yīng)的統(tǒng)計功能。系統(tǒng)總體功能結(jié)構(gòu)圖如圖2所示。圖SEQ圖\*ARABIC2總體功能結(jié)構(gòu)圖3.1.3用戶權(quán)限分系統(tǒng)功能結(jié)構(gòu)用戶權(quán)限分系統(tǒng)主要由以下模塊組成:用戶登錄注冊模塊、分區(qū)熱門線路展示模塊、各地區(qū)旅游線路、景點查詢模塊、優(yōu)惠線路查詢模塊、旅游線路預(yù)訂、退訂模塊、訂單查看模塊等。該分系統(tǒng)功能結(jié)構(gòu)圖如圖3所示。圖SEQ圖\*ARABIC3用戶權(quán)限分系統(tǒng)功能結(jié)構(gòu)圖3.1.4管理員權(quán)限分系統(tǒng)功能結(jié)構(gòu)管理員權(quán)限子系統(tǒng)主要包括以下模塊:景點管理模塊、旅館管理模塊、旅游團(tuán)管理模塊、旅游線路管理模塊以及票務(wù)統(tǒng)計模塊和口令更改模塊。該分系統(tǒng)功能結(jié)構(gòu)圖如圖4所示。圖SEQ圖\*ARABIC4管理員權(quán)限分系統(tǒng)功能結(jié)構(gòu)圖3.2系統(tǒng)用例在此系統(tǒng)中,一共有三種用戶:普通用戶、會員用戶和系統(tǒng)管理員。根據(jù)用戶權(quán)限的不同,其所具有的操作也不盡相同。普通用戶只能在系統(tǒng)中對各種旅游資源信息進(jìn)行全方面的查詢或者瀏覽;會員用戶則可以預(yù)訂旅游團(tuán),參加適合自己的旅游團(tuán)并最終生成相應(yīng)的訂單,并對自己的訂單進(jìn)行管理,一個會員用戶可以進(jìn)行多人多次的預(yù)訂操作;系統(tǒng)管理員則是最高權(quán)限擁有者,除了擁有其他用戶的操作權(quán)限外,還可以對各種旅游資源信息和票務(wù)信息進(jìn)行全面的管理,并實時對后臺數(shù)據(jù)進(jìn)行增刪改查。3.2.1普通用戶用例在此系統(tǒng)中,普通用戶的權(quán)限是最低的,他所擁有的用例包括:國內(nèi)旅游查詢用例、亞洲旅游查詢用例、歐洲旅游查詢用例、非洲旅游查詢用例、澳洲旅游查詢用例、總體線路查詢用例、優(yōu)惠線路查詢用例、推薦線路查詢用例和用戶注冊用例。其用例圖如圖5所示。圖SEQ圖\*ARABIC5用戶權(quán)限子系統(tǒng)用例圖3.2.2會員用戶用例在此系統(tǒng)中,會員用戶的權(quán)限凌駕于普通用戶的權(quán)限之上,他具有普通用戶所具有的所有用例。除此之外,他所特有的用例包括:個人訂單管理用例、旅游團(tuán)預(yù)訂與退訂用例以及會員登錄用例。其用例圖如圖6所示。圖SEQ圖\*ARABIC6會員用戶用例圖3.2.3系統(tǒng)管理員用例在此系統(tǒng)中,管理員權(quán)限主要用于對后臺數(shù)據(jù)庫的管理,當(dāng)然他也具有會員用戶以及普通用戶所具有的所有權(quán)限。管理員權(quán)限所特有的用例包括:景點信息管理用例、旅館信息管理用例、旅游線路信息管理用例、旅游團(tuán)信息管理用例、票務(wù)統(tǒng)計用例以及口令更改用例。其用例圖如圖7所示。圖SEQ圖\*ARABIC7系統(tǒng)管理員用例圖3.3數(shù)據(jù)庫設(shè)計3.3.1數(shù)據(jù)庫設(shè)計概述數(shù)據(jù)庫是數(shù)據(jù)管理的最新技術(shù)。十多年來數(shù)據(jù)庫管理系統(tǒng)已從專用的應(yīng)用程序發(fā)展成為通用的系統(tǒng)軟件。由于數(shù)據(jù)庫具有數(shù)據(jù)結(jié)構(gòu)化,最低冗余度,較高的程序與數(shù)據(jù)獨立性,易于擴(kuò)充,易于編制應(yīng)用程序等優(yōu)點,較大的信息系統(tǒng)都是建立在數(shù)據(jù)庫設(shè)計之上的。因此不僅大型計算機及中小型計算機,甚至微型機都配有數(shù)據(jù)庫管理系統(tǒng)。數(shù)據(jù)庫系統(tǒng)的出現(xiàn)使信息系統(tǒng)從以加工數(shù)據(jù)的程序為中心轉(zhuǎn)向圍繞共享的數(shù)據(jù)庫為中心的新階段。這樣既便于數(shù)據(jù)的集中管理,又有利于應(yīng)用程序的研制和維護(hù),提高了數(shù)據(jù)的利用性和相容性,提高了決策的可靠性。目前,數(shù)據(jù)庫已經(jīng)成為現(xiàn)代信息系統(tǒng)不可分割的重要組成部分。數(shù)據(jù)庫技術(shù)也是計算機領(lǐng)域中發(fā)展最快的技術(shù)之一。數(shù)據(jù)庫設(shè)計是把現(xiàn)實世界的實體模型與需求轉(zhuǎn)換成數(shù)據(jù)庫的模型的過程,它是建立數(shù)據(jù)庫應(yīng)用系統(tǒng)的核心問題。數(shù)據(jù)庫及其應(yīng)用的性能都建立在良好的數(shù)據(jù)庫設(shè)計的基礎(chǔ)之上,數(shù)據(jù)庫的數(shù)據(jù)是一切操作的基礎(chǔ),如果數(shù)據(jù)庫設(shè)計不好,那么其它一切用于提高數(shù)據(jù)庫性能的方法收效都是有限的。數(shù)據(jù)庫設(shè)計的關(guān)鍵是如何使設(shè)計的數(shù)據(jù)庫能合理地存儲用戶的數(shù)據(jù),方便用戶進(jìn)行數(shù)據(jù)處理。設(shè)計數(shù)據(jù)庫必須遵循一定的規(guī)則,在關(guān)系型數(shù)據(jù)庫中,這種規(guī)則就是范式,范式是符合某一種級別的關(guān)系模式的集合。一般人們設(shè)計數(shù)據(jù)庫遵循第三范式。即數(shù)據(jù)庫表中不包含已在其他表中包含的非主關(guān)鍵字信息。采用范式減少了數(shù)據(jù)冗余,節(jié)約了存儲空間,同時加快了增、刪、改的速度。3.3.2數(shù)據(jù)庫需求分析該系統(tǒng)中包含了十分全面的旅游資源信息,供游客進(jìn)行瀏覽與查詢。根據(jù)各類旅游信息的總結(jié)與歸納,本系統(tǒng)中所包含的信息為:用戶信息、旅客信息、申報人信息、導(dǎo)游信息、出發(fā)地信息、景點信息、旅館信息、旅游線路信息、旅游方式信息、旅游團(tuán)信息、團(tuán)類型信息以及折扣信息??蓪⑦@些信息抽象為下列系統(tǒng)所需要的數(shù)據(jù)項和數(shù)據(jù)結(jié)構(gòu):(1)用戶信息(用戶編號,用戶名,性別,出生日期,聯(lián)系方式,電子郵件,登錄密碼,權(quán)限,姓名,宅電)(2)旅客信息(旅客編號,姓名,性別,聯(lián)系方式,身份證號)(3)申報人信息(申報人編號,姓名,性別,聯(lián)系方式,成人數(shù)量,兒童數(shù)量,電子郵件,總價格)(4)導(dǎo)游信息(導(dǎo)游編號,導(dǎo)游姓名,聯(lián)系方式,狀態(tài))(5)出發(fā)地信息(出發(fā)地編號,出發(fā)地名稱,所在?。?)景點信息(景點編號,景點名稱,所在國家,所屬洲,景點描述,關(guān)注度,相關(guān)圖片)(7)旅館信息(旅館編號,旅館名稱,聯(lián)系人,聯(lián)系方式,價格,星級)(8)旅游線路信息(線路編號,線路名稱,旅游天數(shù),關(guān)注度,所在州,參考價格,相關(guān)圖片)(9)旅游方式信息(編號,交通工具,所屬公司)(10)旅游團(tuán)信息(團(tuán)編號,聯(lián)系人,聯(lián)系方式,承載人數(shù),出發(fā)日期,已參加人數(shù),價格)(11)團(tuán)類型信息(類型編號,類型名稱,類型描述)(12)折扣信息(折扣編號,折扣方式)3.3.3數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計概念結(jié)構(gòu)設(shè)計是數(shù)據(jù)庫設(shè)計的核心。概念結(jié)構(gòu)獨立于數(shù)據(jù)庫的邏輯結(jié)構(gòu),也獨立與所使用的具體的數(shù)據(jù)庫管理系統(tǒng)。概念模型(E-R模型)的組成元素有:實體、屬性、聯(lián)系,E-R模型用E-R圖表示。實體是用戶工作環(huán)境中所涉及的事務(wù),屬性是對實體特征的描述。(1)模型中的實體相當(dāng)于一個實體集、一個表。實體用矩形框表示,實體名稱標(biāo)注在矩形框內(nèi)。用菱形表示實體間的聯(lián)系,菱形框內(nèi)寫上聯(lián)系名,用無向邊把菱形分別與有關(guān)實體相連接,在無向邊旁標(biāo)上聯(lián)系的類型。(2)屬性是實體的性質(zhì)。用橢圓框表示,與實體之間用一條線相連,表的主碼是關(guān)鍵屬性。(3)各子系統(tǒng)模塊中主鍵相同的字段之間存在著相互關(guān)聯(lián)的關(guān)系。(4)在程序中實現(xiàn)對他們的完整性和一致性控制。E-R模型的組成元素有:實體、屬性、聯(lián)系。E-R模型用E-R圖來表示。實體是用戶工作環(huán)境中所涉及的事物,屬性是對實體特征的描述。本系統(tǒng)所有實體所組成的E-R圖如圖8所示。圖SEQ圖\*ARABIC8系統(tǒng)實體E-R圖3.3.4數(shù)據(jù)庫物理結(jié)構(gòu)設(shè)計根據(jù)上面E-R圖中的實體以及實體間的關(guān)聯(lián),得出了十三張數(shù)據(jù)庫表,這些表將存放在travel數(shù)據(jù)庫中。下面是各個表的物理結(jié)構(gòu):用戶信息表:該表中的字段為用戶編號、用戶名、性別、出生日期、聯(lián)系方式、電子郵件、登錄密碼、權(quán)限、姓名以及宅電,其表結(jié)構(gòu)如表1所示。表SEQ表\*ARABIC1用戶信息表字段名稱數(shù)據(jù)類型Null主/外鍵描述userIDINTEGERN主鍵用戶編號UsernameVARCHAR(20)N用戶名SexVARCHAR(2)N性別BirthdayDATEY出生日期TelVARCHAR(11)N聯(lián)系方式EmailVARCHAR(20)N電子郵件PasswordVARCHAR(20)N登錄密碼RightsINTEGERN權(quán)限NameVARCHAR(45)Y姓名PhoneVARCHAR(45)Y宅電旅客信息表:該表中的字段為旅客編號、姓名、性別、聯(lián)系方式、身份證號以及申報人編號,其中,申報人編號為該表與申報人信息表所建立的外鍵。其表結(jié)構(gòu)如表2所示。表SEQ表\*ARABIC2旅客信息表字段名稱數(shù)據(jù)類型Null主/外鍵描述IDINTEGERN主鍵旅客編號NameVARCHAR(20)N姓名SexVARCHAR(2)N性別TelVARCHAR(11)Y聯(lián)系方式cardIDVARCHAR(18)Y身份證號teamuserIDINTEGERN外鍵申報人編號申報人信息表:該表中的字段為申報人編號、姓名、性別、聯(lián)系方式、成人數(shù)量、兒童數(shù)量、電子郵件、總價格、旅游團(tuán)編號以及用戶編號。其中,旅游團(tuán)編號為該表與旅游團(tuán)信息表所建立的外鍵,用戶編號則是該表與用戶信息表所建立的外鍵。其表結(jié)構(gòu)如表3所示。表SEQ表\*ARABIC3申報人信息表字段名稱數(shù)據(jù)類型Null主/外鍵描述IDINTEGERN主鍵申報人編號NameVARCHAR(20)N姓名SexVARCHAR(2)N性別TelVARCHAR(11)N聯(lián)系方式MannumINTEGERN成人數(shù)量ChildnumINTEGERN兒童數(shù)量EmailVARCHAR(45)N電子郵件PriceDOUBLEN總價格teamIDINTEGERN外鍵旅游團(tuán)編號userIDINTEGERN外鍵用戶編號導(dǎo)游信息表:該表中的字段為導(dǎo)游編號、導(dǎo)游姓名、聯(lián)系方式以及狀態(tài)。其中,狀態(tài)字段標(biāo)識該導(dǎo)游是否已被規(guī)劃到相應(yīng)的旅游團(tuán)中。其表結(jié)構(gòu)如表4所示。表SEQ表\*ARABIC4導(dǎo)游信息表字段名稱數(shù)據(jù)類型Null主/外鍵描述IDINTEGERN主鍵導(dǎo)游編號NameVARCHAR(20)N導(dǎo)游姓名TelVARCHAR(11)N聯(lián)系方式stateINTEGERN狀態(tài)出發(fā)地信息表:該表中的字段為出發(fā)地編號、出發(fā)地名稱以及所在省份。其表結(jié)構(gòu)如表5所示。表SEQ表\*ARABIC5出發(fā)地信息表字段名稱數(shù)據(jù)類型Null主/外鍵描述IDINTEGERN主鍵出發(fā)地編號NameVARCHAR(20)N出發(fā)地名稱PrivinceVARCHAR(20)N所在省景點信息表:該表中的字段為景點編號、景點名稱、所在國家、所屬洲、景點描述、關(guān)注度以及相關(guān)圖片。其中,其關(guān)注度字段會隨著報名人數(shù)的增加而增加,相關(guān)圖片字段所存儲的是該景點的象征性圖片的所在路徑。其表結(jié)構(gòu)如表6所示。表SEQ表\*ARABIC6景點信息表字段名稱數(shù)據(jù)類型Null主/外鍵描述IDINTEGERN主鍵景點編號NameVARCHAR(20)N景點名稱CountryVARCHAR(20)N所在國家StateVARCHAR(20)N所在洲D(zhuǎn)escriptionVARCHAR(45)N景點描述HotINTEGERN關(guān)注度ImgVARCHAR(200)N相關(guān)圖片旅館信息表:該表中的字段為旅館編號、旅館名稱、聯(lián)系人、聯(lián)系方式、價格、星級和景點編號。其中,景點編號字段為該表與景點信息表所建立的外鍵。其表結(jié)構(gòu)如表7所示。表SEQ表\*ARABIC7旅館信息表字段名稱數(shù)據(jù)類型Null主/外鍵描述IDINTEGERN主鍵旅館編號NameVARCHAR(20)N旅館名稱BossVARCHAR(20)N聯(lián)系人TelVARCHAR(11)N聯(lián)系方式PriceDOUBLEN價格LevelVARCHAR(20)N星級viewIDINTEGERN外鍵景點編號旅游線路信息表:該表中的字段為線路編號、線路名稱、旅游天數(shù)、關(guān)注度、所在州、參考價格、相關(guān)圖片、旅游方式編號、出發(fā)地編號以及折扣編號。其中,關(guān)注度字段會隨著選擇該路線的游客數(shù)量的增加而增加;相關(guān)圖片字段將保存該路線的象征性圖片的所在路徑。旅游方式編號字段為該表與旅游方式信息表所建立的外鍵;出發(fā)地編號為該表與出發(fā)地信息表所建立的外鍵;折扣編號為該表與折扣信息表所建立的外鍵。其表結(jié)構(gòu)如表8所示。表SEQ表\*ARABIC8旅游線路信息表字段名稱數(shù)據(jù)類型Null主/外鍵描述IdINTEGERN主鍵線路編號NameVARCHAR(200)N線路名稱EndtimeINTEGERN旅游天數(shù)HotINTEGERN關(guān)注度StateVARCHAR(45)N所在洲PriceDOUBLEN參考價格ImgVARCHAR(200)N相關(guān)圖片trafficIDINTEGERN外鍵旅游方式編號sendplaceIDINTEGERN外鍵出發(fā)地編號discountedINTEGERN外鍵折扣編號旅游方式信息表:該表中的字段為旅游方式編號、交通類型以及所屬公司。其表結(jié)構(gòu)如表9所示。表SEQ表\*ARABIC9旅游方式信息表字段名稱數(shù)據(jù)類型Null主/外鍵描述IDINTEGERN主鍵旅游工具編號TypeVARCHAR(20)N交通類型CompanyVARCHAR(20)N所屬公司旅游團(tuán)信息表:該表中的字段為旅游團(tuán)編號、聯(lián)系人、聯(lián)系方式、承載人數(shù)、出發(fā)日期、已參加人數(shù)、價格、線路編號、導(dǎo)游編號、旅館編號以及類型編號。其中,線路編號為該表與旅游線路信息表所建立的外鍵;導(dǎo)游編號為該表與導(dǎo)游信息表所建立的外鍵;旅館編號為該表與旅館信息表所建立的外鍵;類型編號為該表與團(tuán)類型信息表所建立的外鍵。其表結(jié)構(gòu)如表10所示。表SEQ表\*ARABIC10旅游團(tuán)信息表字段名稱數(shù)據(jù)類型Null主/外鍵描述IDINTEGERN主鍵旅游團(tuán)編號BossVARCHAR(20)N聯(lián)系人TelVARCHAR(11)N聯(lián)系方式TotalINTEGERN承載人數(shù)SendtimeDATEN出發(fā)日期NumINTEGERN已參加人數(shù)PriceDOUBLEN價格trafficlineIDINTEGERN外鍵線路編號guideIDINTEGERN外鍵導(dǎo)游編號hotelIDINTEGERN外鍵旅館編號teamtypeIDINTEGERN外鍵類型編號團(tuán)類型信息表:該表中的字段為旅游團(tuán)類型編號、旅游團(tuán)類型以及類型描述。其表結(jié)構(gòu)如表11所示。表SEQ表\*ARABIC11團(tuán)類型信息表字段名稱數(shù)據(jù)類型Null主/外鍵描述IDINTEGERN主鍵旅游團(tuán)類型編號typeVARCHAR(45)N旅游團(tuán)類型DescriptionVARCHAR(45)N類型描述折扣信息表:該表中的字段為折扣編號以及折扣方式。其表結(jié)構(gòu)如表12所示。表SEQ表\*ARABIC12折扣信息表字段名稱數(shù)據(jù)類型Null主/外鍵描述IDINTEGERN主鍵折扣編號DiscountVARCHAR(45)N折扣方式景點線路信息表:該表中的字段為景點線路編號、線路編號以及景點編號。此表為景點信息表與旅游線路信息表因存在多對多聯(lián)系而派生出來的中間表。其中,線路編號為該表與旅游線路信息表所建立的外鍵;景點編號為該表與景點信息表所建立的外鍵。其表結(jié)構(gòu)如表13所示。表SEQ表\*ARABIC13景點路線信息表字段名稱數(shù)據(jù)類型Null主/外鍵描述IDINTEGERN主鍵旅程編號trafficlineIDINTEGERN外鍵線路編號viewIDINTEGERN外鍵景點編號3.3.5數(shù)據(jù)庫的完整性和安全性數(shù)據(jù)庫的完整性是指數(shù)據(jù)的正確性和相容性。數(shù)據(jù)庫管理系統(tǒng)(DBMS)用一定的機制來檢查數(shù)據(jù)庫中的數(shù)據(jù)是否滿足規(guī)定的條件——完整性約束條件,數(shù)據(jù)的約束條件是語義的體現(xiàn),將作為模式的一部分存入數(shù)據(jù)庫中。本系統(tǒng)中定義了表與表之間的聯(lián)系及表中各字段屬性約束有助于實現(xiàn)有助于完整性。數(shù)據(jù)庫的安全性是指保護(hù)數(shù)據(jù)庫以防止不合法的使用所造成的數(shù)據(jù)泄漏、更改或破壞。在數(shù)據(jù)庫系統(tǒng)中,大量的數(shù)據(jù)集中存放,而且為許多用戶直接共享,是寶貴的信息資源,系統(tǒng)的安全保護(hù)措施就顯得更為重要,它可以保護(hù)數(shù)據(jù)庫防止惡意的破壞和非法的存取。在系統(tǒng)中,用戶通過瀏覽器打開本站首頁后,必須經(jīng)過注冊登錄,方可對本站景點進(jìn)行瀏覽、查看、檢索等操作。用戶注冊的用戶名是唯一的,密碼通過加密。在用戶登錄,必須輸入用戶名和密碼,并通過數(shù)據(jù)庫的驗證,同時對用戶的權(quán)限進(jìn)行驗證,防止非法用戶和未授權(quán)用戶對本站進(jìn)行非法訪問和操作,保證本站的安全。4系統(tǒng)詳細(xì)設(shè)計4.1數(shù)據(jù)庫連接數(shù)據(jù)庫連接是一種關(guān)鍵的有限的昂貴的資源,這一點在多用戶的網(wǎng)頁應(yīng)用程序中體現(xiàn)得尤為突出。對數(shù)據(jù)庫連接的管理能顯著影響到整個應(yīng)用程序的伸縮性和健壯性,影響到程序的性能指標(biāo)。出于對以上問題的考慮,我才使用了數(shù)據(jù)庫連接池。數(shù)據(jù)庫連接池負(fù)責(zé)分配、管理和釋放數(shù)據(jù)庫連接,它允許應(yīng)用程序重復(fù)使用一個現(xiàn)有的數(shù)據(jù)庫連接,而再不是重新建立一個;釋放空閑時間超過最大空閑時間的數(shù)據(jù)庫連接來避免因為沒有釋放數(shù)據(jù)庫連接而引起的數(shù)據(jù)庫連接遺漏。這項技術(shù)能明顯提高對數(shù)據(jù)庫操作的性能。數(shù)據(jù)庫連接池在初始化時將創(chuàng)建一定數(shù)量的數(shù)據(jù)庫連接放到連接池中,這些數(shù)據(jù)庫連接的數(shù)量是由最小數(shù)據(jù)庫連接數(shù)來設(shè)定的。無論這些數(shù)據(jù)庫連接是否被使用,連接池都將一直保證至少擁有這么多的連接數(shù)量。連接池的最大數(shù)據(jù)庫連接數(shù)量限定了這個連接池能占有的最大連接數(shù),當(dāng)應(yīng)用程序向連接池請求的連接數(shù)超過最大連接數(shù)量時,這些請求將被加入到等待隊列中。我將數(shù)據(jù)庫連接池的相關(guān)配置參數(shù)交給Spring配置文件(applicationContext.xml)進(jìn)行統(tǒng)一的管理,其數(shù)據(jù)源設(shè)置的相關(guān)代碼如下:<beanid="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <!--指定連接數(shù)據(jù)庫的驅(qū)動--> <propertyname="driverClass"value="com.mysql.jdbc.Driver"/> <!--指定連接數(shù)據(jù)庫的URL--> <propertyname="jdbcUrl"value="jdbc:mysql://localhost/travel"/> <!--指定連接數(shù)據(jù)庫的用戶名--> <propertyname="user"value="root"/> <!--指定連接數(shù)據(jù)庫的密碼--> <propertyname="password"value="mysql"/> <!--指定連接數(shù)據(jù)庫連接池的最大連接數(shù)--> <propertyname="maxPoolSize"value="40"/> <!--指定連接數(shù)據(jù)庫連接池的最小連接數(shù)--> <propertyname="minPoolSize"value="1"/> <!--指定連接數(shù)據(jù)庫連接池的初始化連接數(shù)--> <propertyname="initialPoolSize"value="1"/> <!--指定連接數(shù)據(jù)庫連接池的連接的最大空閑時間--> <propertyname="maxIdleTime"value="20"/></bean>4.2系統(tǒng)具體實現(xiàn)4.2.1用戶權(quán)限分系統(tǒng)在此系統(tǒng)中,共有六個功能,它們分別是用戶登錄注冊功能、分區(qū)熱門線路展示功能、各地區(qū)旅游線路景點查詢功能、優(yōu)惠線路查詢功能、綜合線路查詢功能、旅游線路預(yù)訂模塊和訂單管理功能。其中,查詢功能是不需要注冊便可以使用的;但是,線路預(yù)訂和訂單管理則只有會員用戶才擁有操作權(quán)限。當(dāng)然,可以通過注冊來成為網(wǎng)站的會員。(1)用戶登錄注冊功能在此功能中,會員用戶可以通過登錄系統(tǒng)來獲取相關(guān)權(quán)限,從而進(jìn)行普通用戶無法進(jìn)行的操作,比如預(yù)訂旅游團(tuán)和訂單管理。對于非會員用戶,可以通過注冊個人信息來成為本網(wǎng)站的會員。用戶只需在首頁選擇“注冊”按鈕來進(jìn)入注冊用戶頁面,在頁面中輸入正確合理的個人信息便可以完成注冊操作。注冊頁面如圖9所示。圖SEQ圖\*ARABIC9注冊頁面其部分代碼如下:Useruser=newUser();user.setUsername(username);user.setSex(sex);user.setTel(tel);user.setEmail(email);user.setPassword(password);user.setRights(0);user.setName(name);user.setPhone(phone);user.setBirthday(birthday);if(mgr.saveUser(user)){ returnmapping.findForward("registersuccess");}else{ request.setAttribute("mes","注冊失敗");}(2)分區(qū)熱門線路展示功能當(dāng)用戶進(jìn)入網(wǎng)站首頁時,網(wǎng)站會自動展示出各個分區(qū)的排列在前五名的最熱門旅游線路。其中,會將首名熱門線路附上該線路標(biāo)志性圖片。并且會給出這些線路的線路名稱、出發(fā)地點與參考價格。如果鼠標(biāo)移動到線路名稱正上方,頁面會立即彈出關(guān)于該條旅游線路的所有旅游團(tuán)信息,其中包括旅游團(tuán)的出發(fā)時間以及實際價格信息。在此功能中,分區(qū)熱門線路包括歐洲線路、美洲線路、澳洲線路、亞洲線路、非洲線路以及國內(nèi)線路。其部分頁面如圖10所示。圖SEQ圖\*ARABIC10分區(qū)熱門線路頁面其部分代碼如下:List<Sendplace>sendPlaces=mgrsp.searchAll();session.setAttribute("sendplace",sendPlaces);List<Trafficline>trafficlines=mgrtl.searchByHotLimit(0,20,"");session.setAttribute("hottrafficline",trafficlines);List<Trafficline>europetls=mgrtl.searchByHotLimit(0,5,"歐洲");request.setAttribute("europetl",europetls.get(0));europetls.remove(0);request.setAttribute("europetls",europetls);List<Trafficline>americatls=mgrtl.searchByHotLimit(0,5,"美洲");request.setAttribute("americatl",americatls.get(0));americatls.remove(0);request.setAttribute("americatls",americatls);(3)各地區(qū)旅游線路景點查詢功能在首頁中,用戶可以根據(jù)頁面導(dǎo)航中的超鏈接選擇不同地區(qū)的旅游線路、景點查詢功能。其導(dǎo)航欄如圖11所示。圖SEQ圖\*ARABIC11頁面導(dǎo)航欄這些地區(qū)包括國內(nèi)旅游查詢、亞洲旅游查詢、歐洲旅游查詢、美洲旅游查詢、非洲旅游查詢和澳洲旅游查詢。當(dāng)進(jìn)入某一個地區(qū)的旅游查詢頁面時,系統(tǒng)會自動以圖文方式列出該地區(qū)的推薦線路列表、熱門景點以及熱門旅游國家;并以表格的形式列出該地區(qū)的所有線路列表,而且在網(wǎng)頁的右側(cè)附有以出發(fā)地與目的地作為查詢條件的當(dāng)前地區(qū)線路查詢功能供用戶使用。其中,澳洲旅游查詢頁面如圖12所示。圖SEQ圖\*ARABIC12澳洲旅游查詢頁面其部分代碼如下:request.setAttribute("chinatrafficlines",mgr.searchByState("澳洲"));request.setAttribute("hotchinatrafficline",mgr.searchByHotLimitState(0,6,"澳洲",2));request.setAttribute("views",mgrv.searchByState("澳洲"));request.setAttribute("hotviews",mgrv.getHotViews(2,10,"澳洲"));returnmapping.findForward("australiatravel");(4)優(yōu)惠線路查詢功能在頁面導(dǎo)航欄中,單擊優(yōu)惠線路超鏈接便可以進(jìn)入優(yōu)惠線路查詢頁面。在此頁面中,系統(tǒng)會自動列出所有優(yōu)惠旅游線路,并在后面的查看并預(yù)訂超鏈接中給出折扣的描述。在此頁面的左側(cè),羅列的是本網(wǎng)站前十大熱門旅游線路。其頁面如圖13所示。圖SEQ圖\*ARABIC13優(yōu)惠路線查詢頁面其部分代碼如下所示:List<Trafficline>hottrafficlines=mgr.searchHotTrafficlineTen(10);List<Trafficline>distrafficlines=mgr.searchByDiscount();request.setAttribute("hottrafficlines",hottrafficlines);request.setAttribute("distrafficlines",distrafficlines);returnmapping.findForward("showdiscounttl");(5)綜合線路查詢功能在登錄網(wǎng)站首頁后,可以按照一些符合條件對本網(wǎng)站內(nèi)所有的旅游線路進(jìn)行查詢。這些查詢條件包括:出發(fā)地、目的地所在州、國家、所屬景點、線路價格范圍以及線路名稱。此處使用了Ajax技術(shù)實現(xiàn)了表單聯(lián)動,使得存在關(guān)聯(lián)的查詢條件之間進(jìn)行動態(tài)顯示。此處查詢功能的部分頁面如圖14所示。圖SEQ圖\*ARABIC14綜合線路查詢頁面其實,此處只是綜合線路查詢功能的入口處,當(dāng)選擇并輸入查詢條件后,單擊“查詢”按鈕才會真正進(jìn)入該功能的相關(guān)網(wǎng)頁。此網(wǎng)頁總共有兩種數(shù)據(jù)信息,第一種便是按照剛剛輸入的條件得出的查詢結(jié)果,第二種數(shù)據(jù)是本網(wǎng)站推薦的前20大最受歡迎的旅游線路。該網(wǎng)頁的部分頁面如圖15所示。圖SEQ圖\*ARABIC15綜合查詢頁面其部分代碼如下:publicList<Trafficline>searchBySendplace(Integersendplace,Stringname,Stringstate){ Queryquery=session.createQuery("fromTrafficlinetlwheretl.sendplace=?andlike?andtl.state like?andtl.teams.size>0"); query.setInteger(0,sendplace); query.setString(1,"%"+name+"%"); query.setString(2,"%"+state+"%"); List<Trafficline>trafficlines=query.list(); returntrafficlines;}(6)旅游線路預(yù)訂功能此功能主要是提供給會員旅游線路的預(yù)訂功能。如果會員已經(jīng)憑借自己的用戶名和密碼登錄該系統(tǒng)了,便可以直接進(jìn)行旅游線路的預(yù)訂操作頁面。若在非登錄的狀態(tài)下進(jìn)行旅游線路的預(yù)訂操作,則必須要通過網(wǎng)站的身份校驗。此時,當(dāng)用戶單擊要預(yù)訂的旅游線路時,會彈出身份校驗頁面,如圖16所示。圖SEQ圖\*ARABIC16身份驗證界面其部分代碼如下所示:publicUsersearchUserByUsernamePassword(Stringusername,Stringpassword){ //TODOAuto-generatedmethodstub Sessionsession=this.getSession(); Queryquery=session.createQuery("fromUseruwhereu.usernamelike?andpasswordlike?"); query.setString(0,username); query.setString(1,password); Useruser=(User)query.setMaxResults(1).uniqueResult(); returnuser;}通過身份驗證后,便會進(jìn)入出團(tuán)計劃頁面。在此頁面中,可以獲得關(guān)于所選路線的詳細(xì)信息,包括該路線的名稱、所經(jīng)過的所有景點(線路介紹)、費用包含和這條線路上的所有人數(shù)未滿的旅游團(tuán)的詳細(xì)信息。用戶可以根據(jù)自身的情況選擇適合自己的旅游團(tuán),并填寫成人數(shù)量以及兒童數(shù)量(2-12歲),其中,對于兒童可有八折優(yōu)惠。其部分頁面如圖17所示。圖SEQ圖\*ARABIC17出團(tuán)計劃頁面其部分代碼如下所示:Teamuserteamuser=newTeamuser();teamuser.setMannum(mannum);teamuser.setChildnum(childnum);Teamteam=mgr.searchTeamByID(teamID);if(team.getNum()+mannum+childnum>team.getTotal()){ request.setAttribute("team","team"); returnmapping.getInputForward();}teamuser.setTeam(team);session.setAttribute("teamuser",teamuser);用戶需要填寫完整的信息,如果信息填寫有誤,會出現(xiàn)相應(yīng)的錯誤提示。單擊“下一步”按鈕,進(jìn)入到生成訂單頁面,在此頁面中會顯示出所選擇的旅游團(tuán),并給出相關(guān)旅游服務(wù)條款的聲明,必須閱讀并同意條款中的內(nèi)容方可完成操作。在此網(wǎng)頁中必須輸入聯(lián)系人信息和客人信息,其中“*”號為必填項。其部分頁面如圖18所示。圖SEQ圖\*ARABIC18信息填寫頁面其部分代碼如下所示:if(mgrtu.saveTeamUser(tu)){ mgrt.updateTeam(team); Trafficlinetrafficline=(Trafficline)session.getAttribute("trafficlineid"); trafficline.setHot(trafficline.getHot()+1); mgrtl.updateTrafficline(trafficline); session.setAttribute("guests",guests); returnmapping.findForward("jointeamsuccess");}else{ request.setAttribute("mes","對不起,預(yù)訂失敗"); returnmapping.getInputForward();}如果對自己選擇的旅游團(tuán)不是很滿意,可以單擊“上一步”按鈕返回出團(tuán)計劃頁面,重新選擇旅游團(tuán)。單擊“下一步”按鈕,便會進(jìn)入線路訂單明細(xì)頁面。在此頁面中,會顯示出基于該用戶所選擇和所輸入信息的訂單,其部分頁面如圖19所示。圖SEQ圖\*ARABIC19訂單明細(xì)頁面其部分代碼如下:Trafficlinetrafficline=mgr.searchByID(id);Set<Team>teams=trafficline.getTeams();Iterator<Team>ts=teams.iterator();inttotal=0;inttickets=0;while(ts.hasNext()){ Teamteam=ts.next(); total+=team.getTotal(); tickets+=team.getNum();}request.setAttribute("trafficline",trafficline);request.setAttribute("total",total);request.setAttribute("tickets",tickets);returnmapping.findForward("ticket");在此網(wǎng)頁中,單擊“查詢酒店”按鈕可以得到相應(yīng)的旅館信息,如圖20所示。圖SEQ圖\*ARABIC20查詢旅館頁面其部分代碼如下所示:publicActionForwardexecute(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse){ HotelSearchFormhotelSearchForm=(HotelSearchForm)form; Stringteamid=request.getParameter("tid"); intteamID=Integer.parseInt(teamid); Teamteam=mgr.searchTeamByID(teamID); Hotelhotel=team.getHotel(); request.setAttribute("hotel",hotel); returnmapping.getInputForward();}(7)訂單管理功能此功能只對會員用戶開發(fā),只有會員用戶才能進(jìn)行旅游團(tuán)的預(yù)訂,并生成訂單。會員登錄系統(tǒng)后,會在其用戶名的后面顯示出訂單記錄超鏈接。單擊鏈接,便可以進(jìn)入訂單管理功能即訂單記錄頁面。在此頁面中,會以分頁顯示的形式列出該會員的所有訂單記錄,且每頁顯示一張訂單。該頁面與線路訂單明細(xì)頁面相同,只是多出了分頁導(dǎo)航鏈接和“取消預(yù)訂”按鈕。單擊“取消預(yù)訂”按鈕,便可以刪除當(dāng)前頁的訂單,從而取消與此訂單對應(yīng)的旅游團(tuán)預(yù)訂操作。4.2.2管理員權(quán)限分系統(tǒng)在此分系統(tǒng)中,共有六個功能,它們分別是景點管理功能、旅館管理功能、旅游團(tuán)管理功能、旅游線路管理功能、票務(wù)統(tǒng)計功能和口令管理功能。這些功能提供了管理員對旅游資源信息進(jìn)行全方面的管理與規(guī)劃,管理員可以根據(jù)票務(wù)統(tǒng)計信息、熱門信息分析出旅游愛好者當(dāng)前的需求,從而動態(tài)更新旅游資源信息來滿足廣大游客的游玩需要。當(dāng)以管理員的用戶名和密碼登錄系統(tǒng)時,便會進(jìn)入管理員權(quán)限分系統(tǒng),其主頁是以該網(wǎng)站前十大最受歡迎的旅游線路排名信息為主的,并且可以隨時按照旅游線路的編號和名稱進(jìn)行查詢,來了解特定旅游線路的詳細(xì)信息,該網(wǎng)頁如圖21所示。圖SEQ圖\*ARABIC21管理員主頁面其部分代碼如下所示:publicActionForwardexecute(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse){ //TODOAuto-generatedmethodstub HttpSessionsession=request.getSession(); HotTrafficlineSearchFormhotTrafficlineSearchForm=newHotTrafficlineSearchForm(); hotTrafficlineSearchForm.setSelect("name"); List<Trafficline>trafficlines=mgr.searchHotTrafficlineTen(10); request.setAttribute("pages",1); request.setAttribute("countpage",1); request.setAttribute("hottrafficlines",trafficlines); session.setAttribute("hotTrafficlineSearchForm",hotTrafficlineSearchForm); returnmapping.findForward("admin");}在該頁面中,單擊查看詳情,便可以瀏覽當(dāng)前線路的詳細(xì)信息,包括此線路所經(jīng)過的所有旅游景點、所建立的旅游團(tuán)等信息,其部分頁面如圖22所示。圖SEQ圖\*ARABIC22線路詳細(xì)信息頁面其部分頁面如下所示:publicActionForwardexecute(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse){ //TODOAuto-generatedmethodstub Stringtlid=request.getParameter("id"); intid=Integer.parseInt(tlid); Trafficlinetrafficline=mgr.searchByID(id); request.setAttribute("trafficline",trafficline);returnmapping.findForward("trafficlineinfo");} (1)景點管理功能在導(dǎo)航欄中單擊景點管理超鏈接,管理員便可以進(jì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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 兒童跟骨骨折護(hù)理
- 煩躁病人護(hù)理
- 二零二五年度標(biāo)前協(xié)議書-港口設(shè)施建設(shè)
- 二零二五版中式快餐加盟連鎖經(jīng)營合同模板
- 二零二五年鍋爐安裝與設(shè)備性能保證合同
- 二零二五年度電子商務(wù)反擔(dān)保股權(quán)質(zhì)押服務(wù)合同
- 二零二五年度新型高強度鋼筋采購供應(yīng)合作協(xié)議
- 2025承租房租賃合同范本:精裝修合租公寓租賃細(xì)則
- 2025版二手空調(diào)銷售渠道建設(shè)與市場推廣合同
- 二零二五年度高端商務(wù)車輛租賃服務(wù)合同書
- 2025呂梁學(xué)院教師招聘考試試題
- 初創(chuàng)科技公司管理制度
- 借道施工安全協(xié)議書
- 火災(zāi)應(yīng)急預(yù)案評審結(jié)論(3篇)
- 煙道安裝安全協(xié)議書
- 遼寧省大連沙河口區(qū)六校聯(lián)考2025屆物理八下期末監(jiān)測試題含解析
- 急危重癥護(hù)理學(xué)練習(xí)題(含答案解析)
- 氣管切開患者的管理和康復(fù)治療意見解讀
- 一類醫(yī)療器械、二類醫(yī)療器械質(zhì)量手冊
- 上海音樂學(xué)院b級樂理試卷及答案
- 2025榆林能源集團(tuán)有限公司招聘工作人員(473人)筆試參考題庫附帶答案詳解
評論
0/150
提交評論