畢業(yè)論文-酒店客房管理系統(tǒng)_第1頁(yè)
畢業(yè)論文-酒店客房管理系統(tǒng)_第2頁(yè)
畢業(yè)論文-酒店客房管理系統(tǒng)_第3頁(yè)
畢業(yè)論文-酒店客房管理系統(tǒng)_第4頁(yè)
畢業(yè)論文-酒店客房管理系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩50頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

太原理工大學(xué)畢業(yè)設(shè)計(jì)(論文)用紙緒論1.1課題研究的背景及意義如今酒店管理系統(tǒng)已經(jīng)成為一個(gè)酒店不可缺少的部分,它的功能對(duì)于企業(yè)的用戶和管理者來(lái)說(shuō)都是至關(guān)重要的,因此,酒店管理系統(tǒng)應(yīng)該能夠?yàn)橛脩籼峁┓奖愕姆?wù),充足的信息和快捷的查詢手段,以往人們一直使用傳統(tǒng)的人工方式管理,這種管理方式存在著許多缺點(diǎn),諸如效率低,保密性差等,而且時(shí)間一長(zhǎng),將產(chǎn)生大量的文件和數(shù)據(jù),這對(duì)于查找、更新和維護(hù)都帶來(lái)了不少的困難。隨著科學(xué)技術(shù)的不斷提高,計(jì)算機(jī)科學(xué)不斷發(fā)展,其強(qiáng)大的功能已經(jīng)被人們深刻認(rèn)識(shí),它已經(jīng)進(jìn)入了人類(lèi)社會(huì)的各個(gè)領(lǐng)域并發(fā)揮著越來(lái)越重要的作用。基于SSH的酒店管理系統(tǒng)實(shí)現(xiàn)了信息及人員的全過(guò)程追蹤和動(dòng)態(tài)管理,從而做到簡(jiǎn)化預(yù)定客房過(guò)程,優(yōu)化入住客房速度,改變以往排隊(duì)多、等候時(shí)間長(zhǎng)、秩序混亂的局面。同時(shí)酒店管理系統(tǒng)的實(shí)施也強(qiáng)化了酒店內(nèi)部管理,降低了員工的工作強(qiáng)度和時(shí)間,人為因素造成的漏現(xiàn)象可以解決,也加速了處理速度,減少用戶流程。酒店管理系統(tǒng)為管理者提供了收費(fèi)狀況和歷史記錄等許多有用的信息,也由于許多因素的影響:如提供的信息是否充足,數(shù)據(jù)的處理是否快捷等,使得繁瑣的管理在酒店運(yùn)營(yíng)中的地位越發(fā)重要,越來(lái)越多的人都在關(guān)心酒店管理的重要性問(wèn)題。本系統(tǒng)作為一個(gè)管理信息平臺(tái),在一定程度上便是適應(yīng)這樣的發(fā)展的需求。在信息高速發(fā)展的今天,使用快速有效的工具和設(shè)備是所有行業(yè)保持領(lǐng)先優(yōu)勢(shì)的必須手段,為了更好的對(duì)酒店業(yè)務(wù)進(jìn)行管理和協(xié)調(diào),所以使用酒店管理系統(tǒng)是對(duì)酒店和賓館有很多益處的,為了使系統(tǒng)能夠很好的適應(yīng)業(yè)務(wù)變化系統(tǒng)具有了良好的業(yè)務(wù)擴(kuò)展和業(yè)務(wù)定制能力,解決了用戶需求經(jīng)常變化軟件系統(tǒng)長(zhǎng)期難以定型的問(wèn)題,我對(duì)此進(jìn)行了一些相關(guān)調(diào)查并開(kāi)發(fā)實(shí)現(xiàn)了一個(gè)適用于中小型酒店和賓館的管理系統(tǒng)。信息化的今天,酒店管理系統(tǒng)的應(yīng)用,使高效率的酒店管理模式成為可能。通過(guò)本酒店客房管理系統(tǒng),酒店的相關(guān)工作人員可以提高自身的工作效率,并且通過(guò)歷史記錄和收費(fèi)紀(jì)錄能夠做好金錢(qián)的查詢和協(xié)調(diào)工作;通過(guò)本酒店客房管理系統(tǒng),酒店的決策者可以直接管理和運(yùn)營(yíng)相關(guān)的業(yè)務(wù),有效地發(fā)現(xiàn)和挖掘前景,及時(shí)與自己的上級(jí)、下屬、同行業(yè)單位進(jìn)行的溝通與交流,同心協(xié)作,積極為酒店事業(yè)的發(fā)展與決策貢獻(xiàn)力量。使酒店管理適應(yīng)時(shí)代的發(fā)展要求,大大提高了在大量服務(wù)機(jī)構(gòu)中的核心竟?fàn)幜?。使用酒店管理系統(tǒng)的意義:1.減少工作量,增加回頭率。很多使用電子鎖的賓館,如果沒(méi)有使用酒店客房管理系統(tǒng),全部手寫(xiě)記賬,那么老板每天都需要花大量時(shí)間進(jìn)行對(duì)賬查賬,每次前臺(tái)交接班也需要花費(fèi)大量時(shí)間進(jìn)行對(duì)賬交賬,如果使用了酒店客房管理系統(tǒng),那么所有賬目一目了然,每天總賬,交接班賬目,收支賬目,甚至每月的詳細(xì)賬目和總賬都清清楚楚。大大節(jié)約了時(shí)間,解放了老板,提高了效率。如果有酒店客房管理系統(tǒng),但是沒(méi)有和門(mén)鎖軟件進(jìn)行連接,那么每次客人入住和離店都需要使用兩個(gè)軟件同時(shí)進(jìn)行操作,增加了客人等待時(shí)間,降低了服務(wù)質(zhì)量,不利于在客人心中留下好印象,也就不能增加客人回頭率。兩個(gè)軟件進(jìn)行操作,誤操作概率大大增加,一不小心就在門(mén)鎖軟件上制一個(gè)房間的房卡,在管理軟件上收銀入賬到另一房間上。2.增加財(cái)務(wù)安全,減少管理漏洞。由于酒店客房管理系統(tǒng)和門(mén)鎖軟件用接口進(jìn)行了連接,在實(shí)際使用中,不使用門(mén)鎖軟件,只使用酒店客房管理系統(tǒng)進(jìn)行入住登記,收銀,制卡,客房商品入賬,前臺(tái)商品入賬,電話費(fèi)自動(dòng)入賬,賠償入賬,退房,結(jié)賬,客房和前臺(tái)商品的進(jìn)銷(xiāo)存管理,會(huì)員卡管理,協(xié)議單位管理,預(yù)訂房管理,遠(yuǎn)程賬目管理等等。在酒店客房管理系統(tǒng)中,實(shí)行的是先進(jìn)行收銀入賬,再進(jìn)行房卡制作的工作流程,并且如果不進(jìn)行收銀入賬,就不能進(jìn)行房卡制作,所有在軟件上的賬目和操作記錄都不能人工刪除,這樣的管理流程,做到了避免前臺(tái)人員私自截留房費(fèi)的可能,大大增加了老板的財(cái)務(wù)安全,減少了財(cái)務(wù)管理漏洞。在使用了酒店客房管理系統(tǒng)后,門(mén)鎖軟件的進(jìn)入密碼由老板保存,前臺(tái)人員不再使用門(mén)鎖軟件。1.2課題研究現(xiàn)狀國(guó)外的酒店管理系統(tǒng)最早是于70年代初發(fā)展起來(lái)的,到了80年代,國(guó)外的酒店管理系統(tǒng),如EECO(ElectronicEngineeringCO)、HIS(HotelInformationSystem)、CLS、Lodgistix等,整個(gè)模式已基本定型,技術(shù)較成熟,功能也較齊全。現(xiàn)在,國(guó)外酒店正向個(gè)性化方向發(fā)展,酒店按其經(jīng)營(yíng)方式可分為商務(wù)型酒店、長(zhǎng)住型酒店、度假型酒店等等;按其經(jīng)營(yíng)形式可分為獨(dú)立經(jīng)營(yíng)酒店、集團(tuán)經(jīng)營(yíng)酒店等。而且產(chǎn)生了一大批國(guó)際級(jí)的連鎖酒店,如希爾頓(HiltonHotelsCorp)、謝拉頓(SheratonCorp)、假日(HolidayCorp)、凱悅(HyattHotelCorp)等集團(tuán)公司的連鎖酒店。國(guó)內(nèi)的酒店計(jì)算機(jī)管理系統(tǒng)最早是在80年代初開(kāi)始的,從事該方面工作的有清華大學(xué)自動(dòng)化系的金國(guó)芬教授、西安交大和浙江省計(jì)算機(jī)技術(shù)研究所。到了80年代中后期,隨著國(guó)外酒店計(jì)算機(jī)系統(tǒng)和先進(jìn)管理技術(shù)的大規(guī)模引進(jìn),進(jìn)一步促進(jìn)了我國(guó)酒店管理技術(shù)的發(fā)展。國(guó)內(nèi)酒店管理系統(tǒng)正是在充分吸收國(guó)外管理系統(tǒng)的精華,結(jié)合國(guó)內(nèi)實(shí)際的情況下逐步發(fā)展成熟,到90年代初期形成了幾個(gè)較成熟的軟件系統(tǒng),同時(shí)產(chǎn)生了許多專(zhuān)職從事酒店計(jì)算機(jī)管理系統(tǒng)的公司。其中比較有影響的有杭州西歐Foxhis飯店管理系統(tǒng)、北京中軟好泰CSHIS管理系統(tǒng)、北京華儀飯店管理系統(tǒng)和廣州萬(wàn)迅千里馬飯店管理系統(tǒng)。到了21世紀(jì),隨著計(jì)算機(jī)在飯店中的普及應(yīng)用,以及計(jì)算機(jī)技術(shù)的不斷發(fā)展,酒店計(jì)算機(jī)系統(tǒng)的發(fā)展到了一個(gè)新的時(shí)期,新的系統(tǒng)平臺(tái)、新的軟件功能、新的系統(tǒng)特點(diǎn)及發(fā)展方向不斷涌現(xiàn)。2系統(tǒng)的開(kāi)發(fā)環(huán)境及技術(shù)簡(jiǎn)介2.1系統(tǒng)開(kāi)發(fā)環(huán)境2.1.1MyEclipse在開(kāi)發(fā)本平臺(tái)中所用到的開(kāi)發(fā)工具就是知名的Java項(xiàng)目開(kāi)發(fā)工具M(jìn)yEclipse。MyEclipse企業(yè)級(jí)工作平臺(tái)(MyEclipseEnterpriseWorkbench,簡(jiǎn)稱MyEclipse)是對(duì)EclipseIDE的一種擴(kuò)展,利用MyEclipse,我們可以進(jìn)行數(shù)據(jù)庫(kù)和J2EE項(xiàng)目的開(kāi)發(fā)、發(fā)布,以及在應(yīng)用程序服務(wù)器的整合中極大地提高系統(tǒng)的工作效率。MyEclipse是一個(gè)功能非常豐富的J2EE集成開(kāi)發(fā)環(huán)境,包括了完備的編碼、調(diào)試、測(cè)試和發(fā)布功能,完整支持HTML,Struts,JSP,CSS,Javascript,SQL,Hibernate。在結(jié)構(gòu)上,MyEclipse的特征可以被分為7類(lèi):J2EE模型,WEB開(kāi)發(fā)工具,EJB開(kāi)發(fā)工具,應(yīng)用程序服務(wù)器的連接器,J2EE項(xiàng)目部署服務(wù),數(shù)據(jù)庫(kù)服務(wù),MyEclipse整合幫助。對(duì)于以上每一種功能上的類(lèi)別,在Eclipse中都有相應(yīng)的功能部件,并通過(guò)一系列的插件來(lái)實(shí)現(xiàn)它們。MyEclipse結(jié)構(gòu)上的這種模塊化,可以讓我們?cè)诓挥绊懫渌K的情況下,對(duì)任一模塊進(jìn)行單獨(dú)的擴(kuò)展和升級(jí)。簡(jiǎn)單而言,MyEclipse是Eclipse的插件,也是一款功能強(qiáng)大的J2EE集成開(kāi)發(fā)環(huán)境,支持代碼編寫(xiě)、配置、測(cè)試以及除錯(cuò)。2.1.2數(shù)據(jù)庫(kù)簡(jiǎn)介數(shù)據(jù)庫(kù)使用的是MySQL開(kāi)源數(shù)據(jù)庫(kù)。MySQL的特性:使用C和C++編寫(xiě),并使用了多種編譯器進(jìn)行測(cè)試,保證源代碼的可移植性。支持AIX、FreeBSD、HP-UX、MacOS、OpenBSD、OS/2Wrap、Solaris、Windows等多種操作系統(tǒng)。為多種編程語(yǔ)言提供API。這些編程語(yǔ)言包括C、C++、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等。支持多線程充分利用CPU資源。優(yōu)化的SQL查詢算法,有效地提高查詢速度。既能夠作為一個(gè)單獨(dú)的應(yīng)用程序應(yīng)用在客戶端服務(wù)器網(wǎng)絡(luò)環(huán)境中,也能夠作為一個(gè)庫(kù)而嵌入到其他的軟件中提供多語(yǔ)言支持,常見(jiàn)的編碼如中文的GB2312、BIG5,日文的Shift_JIS等都可以用作數(shù)據(jù)表名和數(shù)據(jù)列名。提供TCP/IP、ODBC和JDBC等多種數(shù)據(jù)庫(kù)連接途徑。提供用于管理、檢查、優(yōu)化數(shù)據(jù)庫(kù)操作的管理工具??梢蕴幚?yè)碛猩锨f(wàn)條記錄的大型數(shù)據(jù)庫(kù)。MySQL的應(yīng)用:與其他的大型數(shù)據(jù)庫(kù)例如Oracle、DB2、SQLServer等相比,MySQL自有它的不足之處,如規(guī)模小、功能有限(MySQLCluster的功能和效率都相對(duì)比較差)等,但是這絲毫也沒(méi)有減少它受歡迎的程度。對(duì)于一般的個(gè)人使用者和中小型企業(yè)來(lái)說(shuō),MySQL提供的功能已經(jīng)綽綽有余,而且由于MySQL是開(kāi)放源碼軟件,因此可以大大降低總體成本。2.1.3TomcatTomcat很受廣大程序員的喜歡,因?yàn)樗\(yùn)行時(shí)占用的系統(tǒng)資源小,擴(kuò)展性好,支持負(fù)載平衡與郵件服務(wù)等開(kāi)發(fā)應(yīng)用系統(tǒng)常用的功能;而且它還在不斷的改進(jìn)和完善中,任何一個(gè)感興趣的程序員都可以更改它或在其中加入新的功能。Tomcat是一個(gè)輕量級(jí)應(yīng)用服務(wù)器,在中小型系統(tǒng)和并發(fā)訪問(wèn)用戶不是很多的場(chǎng)合下被普遍使用,是開(kāi)發(fā)和調(diào)試JSP程序的首選。對(duì)于一個(gè)初學(xué)者來(lái)說(shuō),可以這樣認(rèn)為,當(dāng)在一臺(tái)機(jī)器上配置好Apache服務(wù)器,可利用它響應(yīng)對(duì)HTML頁(yè)面的訪問(wèn)請(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頁(yè)面服務(wù),而Tomcat實(shí)際上運(yùn)行JSP頁(yè)面和Servlet。另外,Tomcat和IIS、Apache等Web服務(wù)器一樣,具有處理HTML頁(yè)面的功能,另外它還是一個(gè)Servlet和JSP容器,獨(dú)立的Servlet容器是Tomcat的默認(rèn)模式。2.2系統(tǒng)開(kāi)發(fā)的思想和技術(shù)2.2.1Java簡(jiǎn)介Java是由SunMicrosystems公司于1995年5月推出的Java程序設(shè)計(jì)語(yǔ)言和Java平臺(tái)的總稱,是一種簡(jiǎn)單的、面向?qū)ο蟮摹⒎植际降?、解釋型的、健壯安全的、結(jié)構(gòu)中立的、可移植的、性能優(yōu)異、多線程的動(dòng)態(tài)語(yǔ)言,很多軟件就是用這個(gè)開(kāi)發(fā)出來(lái)的。Java分為三個(gè)體系:JavaSE標(biāo)準(zhǔn)版,JavaEE企業(yè)版,JavaME微型版。Java的誕生是對(duì)傳統(tǒng)計(jì)算機(jī)模式的挑戰(zhàn),對(duì)計(jì)算機(jī)軟件開(kāi)發(fā)和軟件產(chǎn)業(yè)都產(chǎn)生了深遠(yuǎn)的影響,基于構(gòu)建開(kāi)發(fā)方法的崛起,引出了CORBA國(guó)際標(biāo)準(zhǔn)軟件體系結(jié)構(gòu)和多層應(yīng)用體系框架。在此基礎(chǔ)上形成了Java平臺(tái)和.NET平臺(tái)兩大派系,推動(dòng)了整個(gè)IT業(yè)的發(fā)展。對(duì)軟件產(chǎn)業(yè)和工業(yè)企業(yè)都產(chǎn)生了深遠(yuǎn)的影響,軟件從以開(kāi)發(fā)為中心轉(zhuǎn)到了以服務(wù)為中心。中間提供商,構(gòu)件提供商,服務(wù)器軟件以及咨詢服務(wù)商出現(xiàn)。企業(yè)必須重塑自我,B2B的電子商務(wù)將帶動(dòng)整個(gè)新經(jīng)濟(jì)市場(chǎng),使企業(yè)獲得新的價(jià)值,新的增長(zhǎng),新的商機(jī),新的管理。對(duì)軟件開(kāi)發(fā)帶來(lái)了新的革命,重視使用第三方構(gòu)件集成,利用平臺(tái)的基礎(chǔ)設(shè)施服務(wù),實(shí)現(xiàn)開(kāi)發(fā)各個(gè)階段的重要技術(shù),重視開(kāi)發(fā)團(tuán)隊(duì)的組織和文化理念,協(xié)作,創(chuàng)作,責(zé)任,誠(chéng)信是人才的基本素質(zhì)??傊壳耙钥吹搅薐ava對(duì)信息時(shí)代的重要性,未來(lái)還會(huì)不斷發(fā)展,Java在應(yīng)用方面將會(huì)有更廣闊的前景。Java語(yǔ)言的特點(diǎn):語(yǔ)言簡(jiǎn)單:Java丟棄了C++中很少使用的、很難理解的、令人迷惑的那些特性,并提供了自動(dòng)的廢料收集,使得程序員不必為內(nèi)存管理而擔(dān)憂;面向?qū)ο螅篔ava語(yǔ)言提供類(lèi)、接口和繼承等原語(yǔ),為了簡(jiǎn)單起見(jiàn),只支持類(lèi)之間的單繼承,但支持接口之間的多繼承,并支持類(lèi)與接口之間的實(shí)現(xiàn)機(jī)制;分布式語(yǔ)言:它提供了用于網(wǎng)絡(luò)應(yīng)用編程的類(lèi)庫(kù),包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(遠(yuǎn)程方法激活)機(jī)制也是開(kāi)發(fā)分布式應(yīng)用的重要手段;語(yǔ)言是可移植的:Java系統(tǒng)本身也具有很強(qiáng)的可移植性,Java編譯器是用Java實(shí)現(xiàn)的,Java的運(yùn)行環(huán)境是用ANSIC實(shí)現(xiàn)的;語(yǔ)言是多線程的:在Java語(yǔ)言中,線程是一種特殊的對(duì)象Thread類(lèi)已經(jīng)實(shí)現(xiàn)了Runnable接口,因此,任何一個(gè)線程均有它的run方法,而run方法中包含了線程所要運(yùn)行的代碼;異常處理機(jī)制:為了使Java程式更穩(wěn)定、更安全,Java引入了異常處理機(jī)制。能夠在程序中產(chǎn)生異常情況的地方,執(zhí)行相對(duì)應(yīng)的處理,不至于因突發(fā)或意外的錯(cuò)誤造成執(zhí)行中斷或是死機(jī)。Java編程是面向?qū)ο蟮?,使用它編程,可以幫助我們了解需求,定制功能更為?qiáng)大的軟件更好地為客戶服務(wù)。并且擁有語(yǔ)言動(dòng)態(tài),語(yǔ)言可移植語(yǔ)言可拓展、通用性強(qiáng)和易于擴(kuò)充等優(yōu)勢(shì)。Java主要針對(duì)企業(yè)級(jí)用戶,適合一些企業(yè)級(jí)的開(kāi)發(fā),可以開(kāi)發(fā)優(yōu)秀的企業(yè)級(jí)平臺(tái)的的程序、高效靈活的文件操作程序、高效靈活的數(shù)據(jù)庫(kù)操作程序??傊琖eb應(yīng)用、移動(dòng)設(shè)備、嵌入式設(shè)備、Linux客戶端管理工具等應(yīng)用方面,Java有不可比擬的功能。2.2.2JSP技術(shù)與MVC模式以及系統(tǒng)的基本框架本系統(tǒng)采用JSP技術(shù),基于MVC模式開(kāi)發(fā),使用SSH框架(Struts2、Spring、Hibernate)來(lái)加快系統(tǒng)的開(kāi)發(fā)速度。所謂的MVC模式是"Model-View-Controller"的縮寫(xiě),中文翻譯為"模式-視圖-控制器"。程序就是用Struts2和Hibernate這兩個(gè)框架來(lái)實(shí)現(xiàn)模型層和控制器這兩層,JSP實(shí)現(xiàn)視圖這一層。一般來(lái)說(shuō)程序就是在數(shù)據(jù)庫(kù)和頁(yè)面之間起橋梁作用的,JSP頁(yè)面請(qǐng)求先到Action,再到DAO,再回到Action,回到JSP頁(yè)面,Action主要處理來(lái)自頁(yè)面的請(qǐng)求,DAO主要是和數(shù)據(jù)庫(kù)的交互,Struts2主要用在Action,處理來(lái)自頁(yè)面的請(qǐng)求,處理完請(qǐng)求后跳轉(zhuǎn)回頁(yè)面。Hibernate主要用在DAO,包括對(duì)數(shù)據(jù)庫(kù)的增、刪、改、查的操作,Spring控制程序的流程。2.2.3SSH框架SSH框架是J2EE應(yīng)用中Struts2+Spring+Hibernate三大免費(fèi)開(kāi)源框架的結(jié)合使用,它可以看成工具,也是中間件。它是用來(lái)提高我們的開(kāi)發(fā)效率,提高我們軟件產(chǎn)品的可維護(hù)性、可擴(kuò)展性乃至敏捷性的。它們里面有很多優(yōu)秀的設(shè)計(jì)理念及模式應(yīng)用。比如,Struts屬于MVC框架,關(guān)鍵是要了解MVC的概念及大致原理;而Hibernate屬于ORM系統(tǒng),屬于持久層的解決方案,同樣需要對(duì)ORM的概念及原理有一個(gè)總體的了解。而Spring屬于應(yīng)用程序框架,其核心是IOC容器以及AOP,Spring中還集成了很多實(shí)用的東西,比如對(duì)JDBC的封裝、自己的MVC、對(duì)動(dòng)態(tài)語(yǔ)言的簡(jiǎn)捷訪問(wèn)等。如圖2.1所示。圖2.1SSH框架它由以下3個(gè)框架構(gòu)成:1.Struts2框架Struts2是Apache組織的一個(gè)開(kāi)放源碼項(xiàng)目。Struts2是一個(gè)比較好的MVC框架,提供了對(duì)開(kāi)發(fā)MVC系統(tǒng)的底層支持,它采用的主要技術(shù)是Servlet,JSP和Customtaglibrary。其基本構(gòu)成如圖2.2所示。Servlet/JSP容器JavaBeanEJB模型ActionActionJSP視圖ActionServlet控制器Struts.configxmlWeb服務(wù)器Servlet/JSP容器JavaBeanEJB模型ActionActionJSP視圖ActionServlet控制器Struts.configxmlWeb服務(wù)器瀏覽瀏覽器圖2.2Struts框架工作流程2.Spring框架Spring的核心是個(gè)輕量級(jí)(Lightweight)的容器(Container),它是實(shí)現(xiàn)IOC(InversionofControl)容器、非侵入性(Nointrusive)的框架,并提供AOP(Aspect-orientedprogramming)概念的實(shí)現(xiàn)方式,提供對(duì)持久層(Persistence)、事務(wù)(Transaction)的支持,提供MVCWeb框架的實(shí)現(xiàn),并對(duì)一些常用的企業(yè)服務(wù)API(ApplicationInterface)提供一致的模型封裝,是一個(gè)全方位的應(yīng)用程序框架(Applicationframework),除此之外,對(duì)于現(xiàn)存的各種框架(Struts、JSF、Hibernate等),Spring也提供了與它們相整合的方案。Spring框架由以下7個(gè)部分組成,如圖2.3所示。圖2.3Spring框架構(gòu)成3.Hibernate框架Hibernate是一個(gè)開(kāi)放源碼的ORM持久層框架。作為優(yōu)秀的持久層框架實(shí)現(xiàn),Hibernate框架提供了強(qiáng)大、高性能的對(duì)象到關(guān)系型數(shù)據(jù)庫(kù)的持久化服務(wù),開(kāi)發(fā)人員可以使用面向?qū)ο蟮脑O(shè)計(jì)進(jìn)行持久層開(kāi)發(fā)。簡(jiǎn)單的說(shuō),Hibernate只是一個(gè)將持久化類(lèi)與數(shù)據(jù)庫(kù)表相映射的工具,每個(gè)持久化類(lèi)實(shí)例均對(duì)應(yīng)于數(shù)據(jù)庫(kù)表中的一個(gè)數(shù)據(jù)行而已。用戶只需直接使用面向?qū)ο蟮姆椒ú僮鞔顺志没?lèi)實(shí)例,即可完成對(duì)數(shù)據(jù)庫(kù)表數(shù)據(jù)的插入、刪除、修改、讀取等操作,如圖2.4所示。圖2.4Hibernate框架 SSH框架的特點(diǎn):典型的J2EE三層結(jié)構(gòu),分為表現(xiàn)層、中間層(業(yè)務(wù)邏輯層)和數(shù)據(jù)服務(wù)層。三層體系將業(yè)務(wù)規(guī)則、數(shù)據(jù)訪問(wèn)及合法性校驗(yàn)等工作放在中間層處理??蛻舳瞬恢苯优c數(shù)據(jù)庫(kù)交互,而是通過(guò)組件與中間層建立連接,再由中間層與數(shù)據(jù)庫(kù)交互。表現(xiàn)層是傳統(tǒng)的JSP技術(shù),自1999年問(wèn)世以來(lái),經(jīng)過(guò)多年的發(fā)展,其廣泛的應(yīng)用和穩(wěn)定的表現(xiàn),為其作為表現(xiàn)層技術(shù)打下了堅(jiān)實(shí)的基礎(chǔ)。中間層采用的是流行的Spring+Hibernate,為了將控制層與業(yè)務(wù)邏輯層分離,又細(xì)分為以下幾種。Web層,就是MVC模式里面的Controller,負(fù)責(zé)控制業(yè)務(wù)邏輯層與表現(xiàn)層的交互,調(diào)用業(yè)務(wù)邏輯層,并將業(yè)務(wù)數(shù)據(jù)返回給表現(xiàn)層作組織表現(xiàn),該系統(tǒng)的MVC框架采用Struts。Service層(就是業(yè)務(wù)邏輯層),負(fù)責(zé)實(shí)現(xiàn)業(yè)務(wù)邏輯。業(yè)務(wù)邏輯層以DAO層為基礎(chǔ),通過(guò)對(duì)DAO組件的正面模式包裝,完成系統(tǒng)所要求的業(yè)務(wù)邏輯。DAO層,負(fù)責(zé)與持久化對(duì)象的交互。該層封裝了數(shù)據(jù)的增、刪、查、改的操作。PO,持久化對(duì)象。通過(guò)實(shí)體關(guān)系映射工具將關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)映射成對(duì)象,很方便地實(shí)現(xiàn)以面向?qū)ο蠓绞讲僮鲾?shù)據(jù)庫(kù),該系統(tǒng)采用Hibernate作為ORM框架。Spring的作用貫穿了整個(gè)中間層,將Web層、Service層、DAO層及PO無(wú)縫整合,其數(shù)據(jù)服務(wù)層用來(lái)存放數(shù)據(jù)。 SSH的工作流程:初始化COM庫(kù),引入ADO庫(kù)定義文件,用Connection對(duì)象連接數(shù)據(jù)庫(kù);利用建立好的連接,通過(guò)Connection,Command對(duì)象執(zhí)行SQL命令或利用Recordset對(duì)象取得結(jié)果記錄集進(jìn)行查詢處理,使用完畢后關(guān)閉連接釋放對(duì)象。ADO編程模型被設(shè)計(jì)成你只需集中完成兩項(xiàng)簡(jiǎn)單的任務(wù),即可完成對(duì)數(shù)據(jù)的絕大部分的操作:初始化COM庫(kù),引入ADO庫(kù)定義文件;用Connection對(duì)象連接數(shù)據(jù)庫(kù);利用建立好的連接,通過(guò)Connection、Command對(duì)象執(zhí)行命令;利用Recordset對(duì)象取得結(jié)果記錄集進(jìn)行查詢、處理;使用完畢后關(guān)閉連接釋放對(duì)象。2.3本章小結(jié)本章開(kāi)始介紹了系統(tǒng)開(kāi)發(fā)所涉及到的開(kāi)發(fā)工具,框架和數(shù)據(jù)庫(kù),并詳細(xì)介紹了相關(guān)信息,并根據(jù)這些深入研究,為程序?qū)崿F(xiàn)奠定了基礎(chǔ);對(duì)開(kāi)發(fā)這套管理系統(tǒng)的技術(shù)相關(guān)框架及主要開(kāi)發(fā)工具進(jìn)行了概要的介紹,通過(guò)需求分析后,考慮到客戶的各種具體要求,制定了系統(tǒng)的基本功能,確定了系統(tǒng)的用戶,及不同用戶的使用權(quán)限。方便管理員對(duì)相關(guān)環(huán)境的搭建及維護(hù)。3系統(tǒng)概要設(shè)計(jì)概要設(shè)計(jì)的主要任務(wù)是把系統(tǒng)擴(kuò)展用例圖轉(zhuǎn)換為軟件結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)。設(shè)計(jì)軟件結(jié)構(gòu)的具體任務(wù)是:將一個(gè)復(fù)雜系統(tǒng)按功能進(jìn)行模塊劃分、建立模塊的層次結(jié)構(gòu)及調(diào)用關(guān)系、確定模塊間的接口及人機(jī)界面等。數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)包括數(shù)據(jù)特征的描述、確定數(shù)據(jù)的結(jié)構(gòu)特性、以及數(shù)據(jù)庫(kù)的設(shè)計(jì)。顯然,概要設(shè)計(jì)建立的是目標(biāo)系統(tǒng)的邏輯模型,與計(jì)算機(jī)無(wú)關(guān)。酒店客房管理系統(tǒng)的開(kāi)發(fā)采用的是B/S的體系結(jié)構(gòu),B/S(Browser/Server)結(jié)構(gòu)即瀏覽器和服務(wù)器結(jié)構(gòu)。它是隨著Internet技術(shù)的興起,對(duì)C/S結(jié)構(gòu)的一種變化或者改進(jìn)的結(jié)構(gòu)。在這種結(jié)構(gòu)下,用戶工作界面是通過(guò)瀏覽器來(lái)實(shí)現(xiàn),極少部分事務(wù)邏輯在前端實(shí)現(xiàn),但是主要事務(wù)邏輯在服務(wù)器端實(shí)現(xiàn),形成所謂三層結(jié)構(gòu)。相對(duì)于C/S結(jié)構(gòu)屬于“胖”客戶端,需要在使用者電腦上安裝相應(yīng)的操作軟件來(lái)說(shuō),B/S結(jié)構(gòu)是屬于一種“瘦”客戶端,大多數(shù)或主要的業(yè)務(wù)邏輯都存在服務(wù)器端,因此,B/S結(jié)構(gòu)的系統(tǒng)不需要安裝客戶端軟件,它運(yùn)行在客戶端的瀏覽器之上,系統(tǒng)升級(jí)或維護(hù)時(shí)只需更新服務(wù)器端軟件即可,這樣就大大簡(jiǎn)化了客戶端電腦載荷,減輕了系統(tǒng)維護(hù)與升級(jí)的成本和工作量,降低了用戶的總體成本。B/S結(jié)構(gòu)系統(tǒng)的產(chǎn)生為系統(tǒng)面對(duì)無(wú)限未知用戶提供了可能。當(dāng)然,與C/S結(jié)構(gòu)相比,B/S結(jié)構(gòu)也存在著系統(tǒng)運(yùn)行速度較慢,訪問(wèn)系統(tǒng)的用戶不可控的弱點(diǎn)。以目前的技術(shù)看,它是一次性到位的開(kāi)發(fā),能實(shí)現(xiàn)不同的人員,從不同的地點(diǎn),以不同的接入方式(比如LAN,WAN,Internet/Intranet等)訪問(wèn)和操作共同的數(shù)據(jù)庫(kù);它能有效地保護(hù)數(shù)據(jù)平臺(tái)和管理訪問(wèn)權(quán)限,服務(wù)器數(shù)據(jù)庫(kù)也很安全。特別是在Java這樣的跨平臺(tái)語(yǔ)言出現(xiàn)之后,B/S架構(gòu)管理軟件更是方便、快捷、高效。目前,軟件系統(tǒng)的改進(jìn)和升級(jí)越來(lái)越頻繁,B/S架構(gòu)的產(chǎn)品明顯體現(xiàn)著更為方便的特性。對(duì)一個(gè)稍微大一點(diǎn)的單位來(lái)說(shuō),系統(tǒng)管理人員如果需要在幾百甚至上千部電腦之間來(lái)回奔跑,效率和工作量是可想而知的,但B/S架構(gòu)的軟件只需要管理服務(wù)器就行了,所有的客戶端只是瀏覽器,根本不需要做任何的維護(hù)。無(wú)論用戶的規(guī)模有多大,有多少分支機(jī)構(gòu)都不會(huì)增加任何維護(hù)升級(jí)的工作量,所有的操作只需要針對(duì)服務(wù)器進(jìn)行;如果是異地,只需要把服務(wù)器連接專(zhuān)網(wǎng)即可,實(shí)現(xiàn)遠(yuǎn)程維護(hù)、升級(jí)和共享。所以客戶機(jī)越來(lái)越“瘦”,而服務(wù)器越來(lái)越“胖”是將來(lái)信息化發(fā)展的主流方向。今后,軟件升級(jí)和維護(hù)會(huì)越來(lái)越容易,而使用起來(lái)會(huì)越來(lái)越簡(jiǎn)單,這對(duì)用戶人力、物力、時(shí)間、費(fèi)用的節(jié)省是顯而易見(jiàn)的,驚人的。因此,維護(hù)和升級(jí)革命的方式是“瘦”客戶機(jī),“胖”服務(wù)器。成本降低,選擇更多。現(xiàn)在的趨勢(shì)是凡使用B/S架構(gòu)的應(yīng)用管理軟件,只需安裝在Linux服務(wù)器上即可,而且安全性高。所以服務(wù)器操作系統(tǒng)的選擇是很多的,不管選用那種操作系統(tǒng)都可以讓大部分人使用windows作為桌面操作系統(tǒng)電腦不受影響,這就使的最流行免費(fèi)的Linux操作系統(tǒng)快速發(fā)展起來(lái),Linux除了操作系統(tǒng)是免費(fèi)的以外,連數(shù)據(jù)庫(kù)也是免費(fèi)的,這種選擇非常盛行。3.1總體功能模塊本系統(tǒng)分系統(tǒng)管理員和用戶2個(gè)用戶角色??偣δ軋D如圖3.1所示。圖3.1系統(tǒng)功能需求分析3.2系統(tǒng)管理員的功能模塊系統(tǒng)管理員的主要功能有用戶管理、客房分類(lèi)管理、客房信息管理、開(kāi)房管理、退房管理、開(kāi)房記錄查詢、預(yù)訂記錄查詢。系統(tǒng)管理員的功能圖如圖3.2所示。圖3.2系統(tǒng)管理員的功能圖3.3用戶功能模塊用戶主要功能有注冊(cè)登錄功能、客房預(yù)訂、預(yù)訂記錄查詢。用戶的功能圖如圖3.3所示。圖3.3用戶的功能圖3.4系統(tǒng)業(yè)務(wù)描述本系統(tǒng)分系統(tǒng)管理員和普通用戶2個(gè)用戶角色。系統(tǒng)管理員的主要功能有用戶管理、客房分類(lèi)管理、客房信息管理、開(kāi)房管理、退房管理、開(kāi)房記錄查詢、預(yù)訂記錄查詢;用戶主要功能有注冊(cè)登錄功能、客房預(yù)訂、預(yù)訂記錄查詢。用例圖如圖3.4所示。圖3.4系統(tǒng)用例圖3.5程序流程圖用戶注冊(cè)流程圖如圖3.5所示。圖3.5用戶注冊(cè)流程圖用戶登錄流程圖如圖3.6所示。圖3.6用戶登錄流程圖3.6本章小結(jié)考慮到客戶的各種具體要求,制定了系統(tǒng)的基本功能,確定了系統(tǒng)的用戶,及不同用戶的使用權(quán)限。為以后的系統(tǒng)開(kāi)發(fā)奠定了堅(jiān)實(shí)的基礎(chǔ)和理論依據(jù)。4系統(tǒng)詳細(xì)設(shè)計(jì)4.1系統(tǒng)和數(shù)據(jù)庫(kù)的配置系統(tǒng)按通用的B/S(瀏覽器、服務(wù)器)模式進(jìn)行設(shè)計(jì)。數(shù)據(jù)庫(kù)在一個(gè)信息管理系統(tǒng)中占有非常重要的地位,數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)的好壞將直接對(duì)應(yīng)用系統(tǒng)的效率,以及實(shí)現(xiàn)的效果產(chǎn)生影響。合理的數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)可以提高數(shù)據(jù)存儲(chǔ)的效率,保證數(shù)據(jù)的完整和一致。4.2概念模型設(shè)計(jì)概念模型設(shè)計(jì)的典型方法是用E-R圖方法,即用實(shí)體-聯(lián)系模型表示。E-R方法是用E-R圖來(lái)描述顯示世界,E-R圖包含三個(gè)基本成分:實(shí)體、聯(lián)系、屬性。它直觀易懂,能夠比較準(zhǔn)確地反映現(xiàn)實(shí)世界的信息聯(lián)系,從概念上表示一個(gè)數(shù)據(jù)庫(kù)的信息組織情況。本系統(tǒng)E-R圖如圖4.1所示。圖4.1系統(tǒng)E-R圖4.3數(shù)據(jù)庫(kù)的邏輯模型房間分類(lèi)表(主鍵、添加時(shí)間、房間狀態(tài)、房間價(jià)格、房間類(lèi)型)如圖4.2所示。主鍵主鍵添加時(shí)間房間價(jià)格房間類(lèi)型房間狀態(tài)房間分類(lèi)圖4.2房間分類(lèi)邏輯圖開(kāi)房信息表(主鍵、備注、身份證號(hào)、結(jié)賬狀態(tài)、客戶姓名、入住時(shí)間、入住天數(shù)、退房時(shí)間、消費(fèi)金額、押金、關(guān)聯(lián)客房的ID)如圖4.3所示。主鍵主鍵備注押金關(guān)聯(lián)客房的ID開(kāi)房信息圖4.3開(kāi)房信息邏輯圖客房信息表(主鍵、房間信息狀態(tài)、房間號(hào)、房間狀態(tài)、房間描述、關(guān)聯(lián)分類(lèi)的ID)如圖4.4所示。主鍵主鍵房間信息狀態(tài)房間描述關(guān)聯(lián)分類(lèi)的ID客房信息圖4.4客房信息邏輯圖用戶表(主鍵、添加時(shí)間、聯(lián)系方式、密碼、1表示管理員、真實(shí)姓名、用戶狀態(tài)、用戶名、性別)如圖4.5所示。主鍵主鍵添加時(shí)間用戶名性別用戶圖4.5用戶邏輯圖預(yù)定表(主鍵、備注、添加時(shí)間、聯(lián)系方式、真實(shí)姓名、性別、預(yù)定客戶身份證號(hào)碼、預(yù)定狀態(tài)、預(yù)定入住時(shí)間、關(guān)聯(lián)kefang的ID、關(guān)聯(lián)user的ID)如圖4.6所示。主鍵主鍵備注關(guān)聯(lián)kefang的ID關(guān)聯(lián)user的ID預(yù)定圖4.6預(yù)定邏輯圖4.4數(shù)據(jù)庫(kù)表結(jié)構(gòu) 房間分類(lèi)表用來(lái)保存系統(tǒng)所有客房類(lèi)型的基本信息。房間分類(lèi)表如表4.1所示:表4.1房間分類(lèi)表名稱類(lèi)型空默認(rèn)值備注idint(11)noauto_increment主鍵createtimedatetimeyes空添加時(shí)間deletestatusint(11)no0房間狀態(tài)jiagedoubleyes空房間價(jià)格leixingvarchar(255)yes空房間類(lèi)型 開(kāi)房信息表用來(lái)保存系統(tǒng)所有已入住客房的客戶的基本信息及該客戶的入住時(shí)間、入住天數(shù)退房時(shí)間和消費(fèi)金額,還有押金。 開(kāi)房信息表如表4.2所示:表4.2開(kāi)房信息表名稱類(lèi)型空默認(rèn)值備注idint(11)noauto_increment主鍵beizhuvarchar(255)yes空備注idcardvarchar(255)yes空身份證號(hào)jiezhangstatusvarchar(255)yes空結(jié)賬狀態(tài)kehunamevarchar(255)yes空客戶姓名ruzhutimedatetimeyes空入住時(shí)間tianshuint(11)yes空入住天數(shù)tuifangtimedatetimeyes空退房時(shí)間xiaofeidoubleyes空消費(fèi)金額yajindoubleyes空押金kefangidint(11)yes空關(guān)聯(lián)客房的ID客房信息表用來(lái)保存系統(tǒng)所有空房和已入住的客房的基本信息。 客房信息表如表4.3所示:表4.3客房信息表名稱類(lèi)型空默認(rèn)值備注idint(11)noauto_increment主鍵deletestatusint(11)no0房間信息狀態(tài)fangjianhaovarchar(255)yes空房間號(hào)fangjianstatusvarchar(255)yes空房間狀態(tài)miaoshuvarchar(255)yes空房間描述fenleiidint(11)yes空關(guān)聯(lián)分類(lèi)的ID 用戶表用來(lái)保存系統(tǒng)管理員添加的,或者普通用戶注冊(cè)的普通用戶的基本信息,以及系統(tǒng)管理員添加的管理員的基本信息。 用戶表如表4.4所示:表4.4用戶表名稱類(lèi)型空默認(rèn)值備注idint(11)noauto_increment主鍵createtimedatetimeyes空添加時(shí)間lianxifangshivarchar(255)yes空聯(lián)系方式passwordvarchar(255)yes空密碼roleint(11)no01表示管理員truenamevarchar(255)yes空真實(shí)姓名userlockint(11)no0用戶狀態(tài)usernamevarchar(255)yes空用戶名xingbievarchar(255)yes空性別 預(yù)定表如表4.5所示:表4.5預(yù)定表名稱類(lèi)型空默認(rèn)值備注idint(11)noauto_increment主鍵beizhuvarchar(255)yes空備注createtimedatetimeyes空添加時(shí)間lianxifangshivarchar(255)yes空聯(lián)系方式truenamevarchar(255)yes空真實(shí)姓名xingbievarchar(255)yes空性別yudingidcardvarchar(255)yes空預(yù)定客戶身份證號(hào)碼yudingstatusint(11)no0預(yù)定狀態(tài)yudingtimevarchar(255)yes空預(yù)定入住時(shí)間kefangidint(11)yes空關(guān)聯(lián)kefang的IDuseridint(11)yes空關(guān)聯(lián)user的ID4.5平臺(tái)數(shù)據(jù)表的設(shè)計(jì)根據(jù)平臺(tái)的需求分析和功能模塊的劃分,所涉及的實(shí)體有房間分類(lèi)、開(kāi)房信息、客房信息、用戶、預(yù)定。因此系統(tǒng)的定義數(shù)據(jù)庫(kù)主要包含5張表:房間分類(lèi)表t_fenlei,開(kāi)房信息表t_kaifang,客房信息表t_kefang,用戶表t_user,預(yù)定表t_yuding。房間分類(lèi)表t_fenlei如圖4.7所示。圖4.7房間分類(lèi)表建表的SQL語(yǔ)句為:CREATETABLE‘t_fenlei’(‘id’int(11)NOTNULLauto_incrementCOMMENT‘主鍵’,‘createtime’datetimedefaultNULLCOMMENT‘添加時(shí)間’,‘deletestatus’int(11)NOTNULLdefault‘0’COMMENT‘房間狀態(tài)0表示正常狀態(tài)1表示刪除狀態(tài)’,‘jiage’doubledefaultNULLCOMMENT‘房間價(jià)格’,‘leixing’varchar(255)defaultNULLCOMMENT‘房間類(lèi)型’,PRIMARYKEY(‘id’))ENGINE=InnoDBDEFAULTCHARSET=utf-8;開(kāi)房信息表t_kaifang如圖4.8所示。圖4.8開(kāi)房信息表建表語(yǔ)句為:CREATETABLE‘t_kaifang’(‘id’int(11)NOTNULLauto_incrementCOMMENT‘主鍵’,‘beizhu’varchar(255)defaultNULLCOMMENT‘備注’,‘idcard’varchar(255)defaultNULLCOMMENT‘身份證號(hào)’,‘jiezhangstatus’varchar(255)defaultNULLCOMMENT‘結(jié)賬狀態(tài)已結(jié)賬未結(jié)賬’,‘kehuname’varchar(255)defaultNULLCOMMENT‘客戶姓名’,‘ruzhutime’datetimedefaultNULLCOMMENT‘入住時(shí)間’,‘tianshu’int(11)NOTNULLdefault‘0’COMMENT‘入住天數(shù)’,‘tuifangtime’datetimedefaultNULLCOMMENT‘退房時(shí)間’,‘xiaofei’doubledefaultNULLCOMMENT‘消費(fèi)金額’,‘yajin’doubledefaultNULLCOMMENT‘押金’,‘kefangid’int(11)defaultNULLCOMMENT‘關(guān)聯(lián)客房的id,外鍵’,PRIMARYKEY(‘id’),KEY‘FKE682DF1CAFDBF4E2’(‘kefangid’),CONSTRAINT‘FKE682DF1CAFDBF4E2’FOREIGNKEY(‘kefangid’)REFERENCES‘t_kefang’(‘id’))ENGINE=InnoDBDEFAULTCHARSET=utf-8;客房信息表t_kefang如圖4.9所示。圖4.9客房信息表建表語(yǔ)句為:CREATETABLE‘t_kefang’(‘id’int(11)NOTNULLauto_incrementCOMMENT‘主鍵’,‘deletestatus’int(11)NOTNULLdefault‘0’COMMENT‘房間信息狀態(tài)0表示未刪除1表示刪除’,‘fangjianhao’varchar(255)defaultNULLCOMMENT‘房間號(hào)’,‘fangjianstatus’varchar(255)defaultNULLCOMMENT‘房間狀態(tài)空房開(kāi)房預(yù)訂’,‘miaoshu’varchar(255)defaultNULLCOMMENT‘房間描述’,‘fenleiid’int(11)defaultNULLCOMMENT‘關(guān)聯(lián)分類(lèi)的id,外鍵’,PRIMARYKEY(‘id’),KEY‘FK3932E659AE2F5C48’(‘fenleiid’),CONSTRAINT‘FK3932E659AE2F5C48’FOREIGNKEY(‘fenleiid’)REFERENCES‘t_fenlei’(‘id’))ENGINE=InnoDBDEFAULTCHARSET=utf-8;用戶表t_user如圖4.10所示。圖4.10用戶表建表語(yǔ)句為:CREATETABLE‘t_user’(‘id’int(11)NOTNULLauto_incrementCOMMENT‘主鍵’,‘createtime’datetimedefaultNULLCOMMENT‘添加時(shí)間’,‘lianxifangshi’varchar(255)defaultNULLCOMMENT‘聯(lián)系方式’,‘password’varchar(255)defaultNULLCOMMENT‘密碼’,‘role’int(11)NOTNULLdefault‘0’COMMENT‘1表示管理員’,‘truename’varchar(255)defaultNULLCOMMENT‘真實(shí)姓名’,‘userlock’int(11)NOTNULLdefault‘0’COMMENT‘用戶狀態(tài)0表示正常1表示刪除’,‘username’varchar(255)defaultNULLCOMMENT‘用戶名’,‘xingbie’varchar(255)defaultNULLCOMMENT‘性別男女’,PRIMARYKEY(‘id’))ENGINE=InnoDBAUTO_INCREMENT=2DEFAULTCHARSET=utf-8;預(yù)定表t_yuding如圖4.11所示。圖4.11預(yù)定表建表語(yǔ)句為:CREATETABLE‘t_yuding’(‘id’int(11)NOTNULLauto_incrementCOMMENT‘主鍵’,‘beizhu’varchar(255)defaultNULLCOMMENT‘備注’,‘createtime’datetimedefaultNULLCOMMENT‘添加時(shí)間’,‘lianxifangshi’varchar(255)defaultNULLCOMMENT‘聯(lián)系方式’,‘truename’varchar(255)defaultNULLCOMMENT‘真實(shí)姓名’,‘xingbie’varchar(255)defaultNULLCOMMENT‘性別’,‘yudingidcard’varchar(255)defaultNULLCOMMENT‘預(yù)定客戶身份證號(hào)碼’,‘yudingstatus’int(11)NOTNULLdefault‘0’COMMENT‘預(yù)定狀態(tài)0表示預(yù)定1表示取消預(yù)定’,‘yudingtime’varchar(255)defaultNULLCOMMENT‘預(yù)定入住時(shí)間’,‘kefangid’int(11)defaultNULLCOMMENT‘關(guān)聯(lián)kefang的id,外鍵’,‘userid’int(11)defaultNULLCOMMENT‘關(guān)聯(lián)user的id,外鍵’,PRIMARYKEY(‘id’),KEY‘FK51F76C65AFDBF4E2’(‘kefangid’),KEY‘FK51F76C657614FDC’(‘userid’),CONSTRAINT‘FK51F76C657614FDC’FOREIGNKEY(‘userid’)REFERENCES‘t_user’(‘id’),CONSTRAINT‘FK51F76C65AFDBF4E2’FOREIGNKEY(‘kefangid’)REFERENCES‘t_kefang’(‘id’))ENGINE=InnoDBDEFAULTCHARSET=utf-8;4.6本章小結(jié)本章詳細(xì)介紹了本系統(tǒng)使用的體系結(jié)構(gòu),使系統(tǒng)的體系架構(gòu)清晰明了。詳細(xì)劃分了用戶操作框架,細(xì)分了系統(tǒng)的各個(gè)功能模塊,并且對(duì)每個(gè)功能模塊的功能細(xì)分到底層,用來(lái)與后臺(tái)數(shù)據(jù)庫(kù)進(jìn)行連接,為下面的系統(tǒng)實(shí)現(xiàn)打下了堅(jiān)實(shí)基礎(chǔ)。5系統(tǒng)功能實(shí)現(xiàn)5.1系統(tǒng)的類(lèi)圖類(lèi)圖(ClassDiagram)是顯示了模型的靜態(tài)結(jié)構(gòu),特別是模型中存在的類(lèi)、類(lèi)的內(nèi)部結(jié)構(gòu)以及它們與其他類(lèi)的關(guān)系等。類(lèi)圖不顯示暫時(shí)性信息。類(lèi)圖由許多(靜態(tài))說(shuō)明性的模型元素(例如類(lèi)、包和它們之間的關(guān)系,這些元素和它們的內(nèi)容互相連接)組成。類(lèi)圖可以組織在(并且屬于)包中,僅顯示特定包中的相關(guān)內(nèi)容。類(lèi)圖是最常用的UML圖,顯示出類(lèi)、接口以及它們之間的靜態(tài)結(jié)構(gòu)和關(guān)系;它用于描述系統(tǒng)的結(jié)構(gòu)化設(shè)計(jì)。類(lèi)圖最基本的元素是類(lèi)或者接口。同其他的圖一樣,類(lèi)圖也可以包含注解和限制。類(lèi)圖中也可以包含包和子系統(tǒng),這兩者用來(lái)將元素的分組。有時(shí)候也可以將類(lèi)的實(shí)例放到類(lèi)圖中。5.1.1客房分類(lèi)Fenlei類(lèi)圖客房分類(lèi)類(lèi)圖如圖5.1所示。圖5.1Fenlei類(lèi)圖5.1.2開(kāi)房信息Kaifang類(lèi)圖開(kāi)房信息類(lèi)圖如圖5.2所示。圖5.2Kaifang類(lèi)圖5.1.3客房信息Kefang類(lèi)圖客房信息類(lèi)圖如圖5.3所示。圖5.3Kefang類(lèi)圖5.1.4用戶User類(lèi)圖用戶類(lèi)圖如圖5.4所示。圖5.4User類(lèi)圖5.1.5預(yù)定Yuding類(lèi)圖預(yù)定類(lèi)圖如圖5.5所示。圖5.5Yuding類(lèi)圖5.2程序的時(shí)序圖時(shí)序圖(SequenceDiagram),亦稱為序列圖或循序圖,是一種UML行為圖。它通過(guò)描述對(duì)象之間發(fā)送消息的時(shí)間順序顯示多個(gè)對(duì)象之間的動(dòng)態(tài)協(xié)作。它可以表示用例的行為順序,當(dāng)執(zhí)行一個(gè)用例行為時(shí),時(shí)序圖中的每條消息對(duì)應(yīng)了一個(gè)類(lèi)操作或狀態(tài)機(jī)中引起轉(zhuǎn)換的觸發(fā)事件。時(shí)序圖描述對(duì)象是如何交互的,并且將重點(diǎn)放在消息序列上。也就是說(shuō),描述消息是如何在對(duì)象間發(fā)送和接收的。時(shí)序圖有兩個(gè)坐標(biāo)軸:縱坐標(biāo)軸顯示時(shí)間,橫坐標(biāo)軸顯示對(duì)象。每一個(gè)對(duì)象的表示方法是:矩形框中寫(xiě)有對(duì)象或類(lèi)名,且名字下面有下劃線;同時(shí)有一條縱向的虛線表示對(duì)象在序列中的執(zhí)行情況(即發(fā)送和接收的消息對(duì)象的活動(dòng)),這條虛線稱為對(duì)象的生命線。對(duì)象間的通信用對(duì)象的生命線之間的水平的消息線來(lái)表示,消息線的箭頭說(shuō)明消息的類(lèi)型,如同步,異步或簡(jiǎn)單。瀏覽時(shí)序圖的方法是,從上到下查看對(duì)象間交換的消息,分析那些隨著時(shí)間的流逝而發(fā)生的消息交換。時(shí)序圖中的消息可以是信號(hào),操作調(diào)用或類(lèi)似于C++中的RPC(RemoteProcedureCall,遠(yuǎn)程過(guò)程調(diào)用)或Java中的RMI(RemoteMethodInvocation,遠(yuǎn)程方法調(diào)用)。當(dāng)對(duì)象接收到一個(gè)消息時(shí),該對(duì)象中的一項(xiàng)活動(dòng)就會(huì)啟動(dòng),我們把這一過(guò)程稱做激活(Activation)。激活會(huì)顯示控制焦點(diǎn),表明對(duì)象在某一個(gè)時(shí)間點(diǎn)開(kāi)始執(zhí)行。一個(gè)被激活的對(duì)象或者是執(zhí)行它自身的代碼,或者是等待另一個(gè)對(duì)象的返回(該被激活的對(duì)象已經(jīng)向另一個(gè)對(duì)象發(fā)送了消息)。在圖形上,激活被繪制為對(duì)象生命線上的一個(gè)瘦高矩形。消息可以用消息名及參數(shù)來(lái)標(biāo)識(shí)。消息還可帶有條件表達(dá)式,表示分支或決定是否發(fā)送消息。如果用于表示分支,則每個(gè)分支是相互排斥的,即在某一時(shí)刻僅可發(fā)送分支中的一個(gè)消息。消息也可以有順序號(hào),但是在時(shí)序圖中,消息的順序號(hào)很少使用,因?yàn)闀r(shí)序圖已經(jīng)將消息的順序顯式地表示出來(lái)了。5.2.1房間分類(lèi)模塊時(shí)序圖房間分類(lèi)模塊時(shí)序圖如圖5.6所示:圖5.6房間分類(lèi)模塊時(shí)序圖 從房間分類(lèi)模塊時(shí)序圖中可以看出,系統(tǒng)管理員通過(guò)JSP頁(yè)面發(fā)送請(qǐng)求,JSP頁(yè)面獲得響應(yīng),調(diào)用manageAction方法,再調(diào)用fenleiDao,通過(guò)連接后臺(tái)數(shù)據(jù)庫(kù)處理數(shù)據(jù),再回到DAO,回到Action,JSP頁(yè)面獲得響應(yīng),并提示相關(guān)信息。如系統(tǒng)管理員請(qǐng)求添加客房分類(lèi)信息,則響應(yīng)Action調(diào)用插入方法,通過(guò)DAO插入數(shù)據(jù)庫(kù)中相關(guān)數(shù)據(jù),數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)后返回DAO,再返回Action,頁(yè)面向系統(tǒng)管理員提示添加成功的信息;如系統(tǒng)管理員請(qǐng)求更新客房分類(lèi)信息,則響應(yīng)Action調(diào)用更新方法,通過(guò)DAO更新數(shù)據(jù)庫(kù)記錄,數(shù)據(jù)庫(kù)更新數(shù)據(jù)后返回DAO,再返回Action,頁(yè)面向系統(tǒng)管理員提示更新成功的信息;如系統(tǒng)管理員請(qǐng)求查看客房分類(lèi)信息,則響應(yīng)Action調(diào)用查詢方法,通過(guò)DAO查詢數(shù)據(jù)庫(kù)中的相關(guān)記錄,之后返回DAO,在返回Action,頁(yè)面跳轉(zhuǎn)至系統(tǒng)管理員要查看的相關(guān)信息;如系統(tǒng)管理員請(qǐng)求刪除客房分類(lèi)信息,則響應(yīng)Action調(diào)用刪除方法,通過(guò)DAO刪除數(shù)據(jù)庫(kù)中相關(guān)信息,之后返回DAO,返回Action,頁(yè)面向系統(tǒng)管理員提示刪除成功的信息。5.2.2開(kāi)房信息模塊時(shí)序圖開(kāi)房信息模塊時(shí)序圖如圖5.7所示:圖5.7開(kāi)房信息模塊時(shí)序圖 從開(kāi)房信息模塊時(shí)序圖中可以看出,系統(tǒng)管理員通過(guò)JSP頁(yè)面發(fā)送請(qǐng)求,JSP頁(yè)面獲得響應(yīng),調(diào)用manageAction方法,再調(diào)用kaifangDao,通過(guò)連接后臺(tái)數(shù)據(jù)庫(kù)處理數(shù)據(jù),再回到DAO,回到Action,JSP頁(yè)面獲得響應(yīng),并提示相關(guān)信息。如系統(tǒng)管理員請(qǐng)求添加開(kāi)房信息,則響應(yīng)Action調(diào)用插入方法,通過(guò)DAO插入數(shù)據(jù)庫(kù)中相關(guān)數(shù)據(jù),數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)后返回DAO,再返回Action,頁(yè)面向系統(tǒng)管理員提示添加成功的信息;如系統(tǒng)管理員請(qǐng)求更新開(kāi)房信息,則響應(yīng)Action調(diào)用更新方法,通過(guò)DAO更新數(shù)據(jù)庫(kù)記錄,數(shù)據(jù)庫(kù)更新數(shù)據(jù)后返回DAO,再返回Action,頁(yè)面向系統(tǒng)管理員提示更新成功的信息;如系統(tǒng)管理員請(qǐng)求查看開(kāi)房信息,則響應(yīng)Action調(diào)用查詢方法,通過(guò)DAO查詢數(shù)據(jù)庫(kù)中的相關(guān)記錄,之后返回DAO,在返回Action,頁(yè)面跳轉(zhuǎn)至系統(tǒng)管理員要查看的相關(guān)信息;如系統(tǒng)管理員請(qǐng)求刪除開(kāi)房信息,則響應(yīng)Action調(diào)用刪除方法,通過(guò)DAO刪除數(shù)據(jù)庫(kù)中相關(guān)信息,之后返回DAO,返回Action,頁(yè)面向系統(tǒng)管理員提示刪除成功的信息。5.2.3客房信息模塊時(shí)序圖客房信息模塊時(shí)序圖如圖5.8所示:圖5.8客房信息模塊時(shí)序圖 從客房信息模塊時(shí)序圖中可以看出,系統(tǒng)管理員通過(guò)JSP頁(yè)面發(fā)送請(qǐng)求,JSP頁(yè)面獲得響應(yīng),調(diào)用manageAction方法,再調(diào)用kefangDao,通過(guò)連接后臺(tái)數(shù)據(jù)庫(kù)處理數(shù)據(jù),再回到DAO,回到Action,JSP頁(yè)面獲得響應(yīng),并提示相關(guān)信息。如系統(tǒng)管理員請(qǐng)求添加客房信息,則響應(yīng)Action調(diào)用插入方法,通過(guò)DAO插入數(shù)據(jù)庫(kù)中相關(guān)數(shù)據(jù),數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)后返回DAO,再返回Action,頁(yè)面向系統(tǒng)管理員提示添加成功的信息;如系統(tǒng)管理員請(qǐng)求更新客房信息,則響應(yīng)Action調(diào)用更新方法,通過(guò)DAO更新數(shù)據(jù)庫(kù)記錄,數(shù)據(jù)庫(kù)更新數(shù)據(jù)后返回DAO,再返回Action,頁(yè)面向系統(tǒng)管理員提示更新成功的信息;如系統(tǒng)管理員請(qǐng)求查看客房信息,則響應(yīng)Action調(diào)用查詢方法,通過(guò)DAO查詢數(shù)據(jù)庫(kù)中的相關(guān)記錄,之后返回DAO,在返回Action,頁(yè)面跳轉(zhuǎn)至系統(tǒng)管理員要查看的相關(guān)信息;如系統(tǒng)管理員請(qǐng)求刪除客房信息,則響應(yīng)Action調(diào)用刪除方法,通過(guò)DAO刪除數(shù)據(jù)庫(kù)中相關(guān)信息,之后返回DAO,返回Action,頁(yè)面向系統(tǒng)管理員提示刪除成功的信息。5.2.4用戶模塊時(shí)序圖 系統(tǒng)管理員通過(guò)JSP頁(yè)面發(fā)送請(qǐng)求,JSP頁(yè)面獲得響應(yīng),調(diào)用manageAction方法,再調(diào)用userDao,通過(guò)連接后臺(tái)數(shù)據(jù)庫(kù)處理數(shù)據(jù),再回到DAO,回到Action,JSP頁(yè)面獲得響應(yīng),并提示相關(guān)信息。如系統(tǒng)管理員請(qǐng)求添加用戶信息,則響應(yīng)Action調(diào)用插入方法,通過(guò)DAO插入數(shù)據(jù)庫(kù)中相關(guān)數(shù)據(jù),數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)后返回DAO,再返回Action,頁(yè)面向系統(tǒng)管理員提示添加成功的信息;如系統(tǒng)管理員請(qǐng)求更新用戶信息,則響應(yīng)Action調(diào)用更新方法,通過(guò)DAO更新數(shù)據(jù)庫(kù)記錄,數(shù)據(jù)庫(kù)更新數(shù)據(jù)后返回DAO,再返回Action,頁(yè)面向系統(tǒng)管理員提示更新成功的信息;如系統(tǒng)管理員請(qǐng)求查看用戶的具體信息,則響應(yīng)Action調(diào)用查詢方法,通過(guò)DAO查詢數(shù)據(jù)庫(kù)中的相關(guān)記錄,之后返回DAO,在返回Action,頁(yè)面跳轉(zhuǎn)至系統(tǒng)管理員要查看的用戶相關(guān)信息;如系統(tǒng)管理員請(qǐng)求刪除用戶信息,則響應(yīng)Action調(diào)用刪除方法,通過(guò)DAO刪除數(shù)據(jù)庫(kù)中相關(guān)信息,之后返回DAO,返回Action,頁(yè)面向系統(tǒng)管理員提示刪除成功的信息。用戶模塊時(shí)序圖如圖5.9所示。圖5.9用戶模塊時(shí)序圖5.2.5預(yù)定模塊時(shí)序圖預(yù)定模塊時(shí)序圖如圖5.10所示:圖5.10預(yù)定模塊時(shí)序圖 從預(yù)定模塊時(shí)序圖中可以看出,系統(tǒng)管理員通過(guò)JSP頁(yè)面發(fā)送請(qǐng)求,JSP頁(yè)面獲得響應(yīng),調(diào)用manageAction方法,再調(diào)用yudingDao,通過(guò)連接后臺(tái)數(shù)據(jù)庫(kù)處理數(shù)據(jù),再回到DAO,回到Action,JSP頁(yè)面獲得響應(yīng),并提示相關(guān)信息。如系統(tǒng)管理員請(qǐng)求添加預(yù)定信息,則響應(yīng)Action調(diào)用插入方法,通過(guò)DAO插入數(shù)據(jù)庫(kù)中相關(guān)數(shù)據(jù),數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)后返回DAO,再返回Action,頁(yè)面向系統(tǒng)管理員提示添加成功的信息;如系統(tǒng)管理員請(qǐng)求更新預(yù)定信息,則響應(yīng)Action調(diào)用更新方法,通過(guò)DAO更新數(shù)據(jù)庫(kù)記錄,數(shù)據(jù)庫(kù)更新數(shù)據(jù)后返回DAO,再返回Action,頁(yè)面向系統(tǒng)管理員提示更新成功的信息;如系統(tǒng)管理員請(qǐng)求查看預(yù)定信息,則響應(yīng)Action調(diào)用查詢方法,通過(guò)DAO查詢數(shù)據(jù)庫(kù)中的相關(guān)記錄,之后返回DAO,在返回Action,頁(yè)面跳轉(zhuǎn)至系統(tǒng)管理員要查看的相關(guān)信息;如系統(tǒng)管理員請(qǐng)求刪除預(yù)定信息,則響應(yīng)Action調(diào)用刪除方法,通過(guò)DAO刪除數(shù)據(jù)庫(kù)中相關(guān)信息,之后返回DAO,返回Action,頁(yè)面向系統(tǒng)管理員提示刪除成功的信息。5.3系統(tǒng)功能實(shí)現(xiàn)的主要框架5.3.1SSH框架SSH框架就是Struts2,Spring,Hibernate的簡(jiǎn)稱,運(yùn)用3個(gè)框架的集成協(xié)作使用,可以有效的提高代碼編寫(xiě)的效率,從而有效的降低程序開(kāi)發(fā)的周期。5.3.2Hibernate配置文件org.hibernate.connection.ProxoolConnectionProvider在Hibernate的配置文件中:<propertyname="proxool.xml">proxool.xml</property>首先加載了連接池的一個(gè)配置,就是加載了數(shù)據(jù)庫(kù)的連接信息,<propertyname="show_sql">true</property><propertyname="format_sql">true</property>表示控制臺(tái)打印SQL語(yǔ)句,并格式化SQL語(yǔ)句<propertyname="dialect">org.hibernate.dialect.MySQLDialect</property>表示當(dāng)前數(shù)據(jù)庫(kù)的語(yǔ)言是MySQL <mappingclass="jiudian.model.User"/> <mappingclass="jiudian.model.Fenlei"/> <mappingclass="jiudian.model.Kefang"/>都表示當(dāng)前數(shù)據(jù)庫(kù)建立起來(lái)的表和類(lèi)之間的映射關(guān)系,比如<mappingclass="model.User"/>表示User類(lèi)和t_user表之間的建立起來(lái)的對(duì)應(yīng)關(guān)系,其他也都類(lèi)似。5.3.3Struts配置文件 <actionname="index"method="index"class="indexAction"><resultname="success">index.jsp</result></action> <actionname="method"class="manageAction"> <resulttype="dispatcher">${url}</result> <resultname="redirect"type="redirect">${url}</result> </action> <actionname="indexmethod"class="indexAction"> <resulttype="dispatcher">${url}</result> <resultname="redirect"type="redirect">${url}</result> </action>這是struts的配置文件,該文件的作用主要是起到來(lái)自JSP的請(qǐng)求的跳轉(zhuǎn)分配的作用.該struts配置文件是總的配置文件。5.3.4Spring配置文件 <beanid="userDao"class="jiudian.dao.impl.UserDaoImpl"> <propertyname="sessionFactory"><refbean="sessionFactory"/></property> </bean> <beanid="fenleiDao"class="jiudian.dao.impl.FenleiDaoImpl"> <propertyname="sessionFactory"><refbean="sessionFactory"/></property> </bean> <beanid="kefangDao"class="jiudian.dao.impl.KefangDaoImpl"> <propertyname="sessionFactory"><refbean="sessionFactory"/></property> </bean> <beanid="kaifangDao"class="jiudian.dao.impl.KaifangDaoImpl"> <propertyname="sessionFactory"><refbean="sessionFactory"/></property> </bean> <beanid="yudingDao"class="jiudian.dao.impl.YudingDaoImpl"> <propertyname="sessionFactory"><refbean="sessionFactory"/></property> </bean>本段代碼是把DAO實(shí)例化的代碼,通過(guò)spring的IOC模式 <beanid="manageAction"class="jiudian.action.ManageAction"scope="prototype"> <propertyname="userDao"><refbean="userDao"/></property> <propertyname="fenleiDao"><refbean="fenleiDao"/></property> <propertyname="kefangDao"><refbean="kefangDao"/></property> <propertyname="kaifangDao"><refbean="kaifangDao"/></property> <propertyname="yudingDao"><refbean="yudingDao"/></property> </bean>本段代碼是把ManageAction實(shí)例化的代碼,原理也是spring的IOC模式。Spring在本項(xiàng)目中主要用到了IOC的功能,就是把對(duì)象實(shí)例化。5.4系統(tǒng)功能實(shí)現(xiàn)的主要模塊5.4.1系統(tǒng)登錄頁(yè)面系統(tǒng)登錄頁(yè)面如圖5.11所示。 圖5.11系統(tǒng)登陸頁(yè)面圖登錄代碼://登錄請(qǐng)求 HttpServletRequestrequest=ServletActionContext.getRequest(); Stringusername=request.getParameter("username"); Stringpassword=request.getParameter("password"); Stringrole=request.getParameter("role"); Useruser=userDao.selectBean("whereusername='"+username +"'andpassword='"+password+"'androle="+role+"anduserlock=0"); if(user!=null){ HttpSessionsession=request.getSession(); session.setAttribute("user",user); this.setUrl("index.jsp"); return"redirect"; }else{ HttpServletResponseresponse=ServletActionContext.getResponse(); response.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); response .getWriter() .print("<scriptlanguage=javascript>alert('用戶名或者密碼錯(cuò)誤,或者是用戶不存在');window.location.href='login.jsp';</script>"); } returnnull;本段代碼是程序的登陸代碼,首先從獲取從頁(yè)面輸入的用戶名和密碼以及用戶角色,然后調(diào)用userDao.selectBean方法,從數(shù)據(jù)庫(kù)里取出該條記錄進(jìn)行判斷,如果該條記錄存在,則說(shuō)明用戶登陸成功,同時(shí)把用戶信息存在session里面方便調(diào)用,如果記錄為空,則跳轉(zhuǎn)到登陸頁(yè)面,同時(shí)提醒用戶錯(cuò)誤信息。5.4.2普通用戶注冊(cè)頁(yè)面普通用戶注冊(cè)頁(yè)面如圖5.12所示。 圖5.12普通用戶注冊(cè)頁(yè)面圖代碼如下://用戶注冊(cè)操作Userbean=userDao.selectBean("whereusername='"+username+"'anduserlock=0");if(bean==null){ bean=newUser(); bean.setUsername(username); bean.setCreatetime(newDate()); bean.setLianxifangshi(lianxifangshi); bean.setPassword(password); bean.setRole(0); bean.setTruename(truename); bean.setXingbie(xingbie); userDao.insertBean(bean); response .getWriter() .print("<script language=javascript>alert(‘恭喜,用戶注冊(cè)成功!返回登錄界面!’);window.location.href='login.jsp';</script>");}else{ response .getWriter() .print("<scriptlanguage=javascript>alert('操作失敗,該用戶名已經(jīng)存在,請(qǐng)?jiān)俅巫?cè)');window.location.href='login.jsp';</script>");本段代碼是程序的注冊(cè)代碼,首先從頁(yè)面中獲取注冊(cè)的信息,同時(shí)新建一個(gè)User對(duì)象,把從頁(yè)面獲取的信息都寫(xiě)在User對(duì)象里面。同時(shí)在插入到數(shù)據(jù)庫(kù)之前先調(diào)用userDao.selectBean("whereusername='"+username+"'anduserlock=0");方法,驗(yàn)證下該用戶名在數(shù)據(jù)庫(kù)中是否存在,如果不存在,則調(diào)用userDao.insertBean(bean);方法,把該條記錄寫(xiě)入數(shù)據(jù)庫(kù);如果該條記錄存在,則返回到注冊(cè)頁(yè)面,同時(shí)提醒用戶該用戶名已經(jīng)存在,請(qǐng)重新注冊(cè)。5.4.3系統(tǒng)管理員登錄頁(yè)面系統(tǒng)管理員登錄頁(yè)面如圖5.13所示:圖5.13系統(tǒng)管理員登錄頁(yè)面圖該頁(yè)面是系統(tǒng)管理員角色登錄后的頁(yè)面效果。系統(tǒng)管理員的主要功能有用戶管理、客房分類(lèi)管理、客房信息管理、開(kāi)房管理、退房管理、開(kāi)房記錄查詢、預(yù)訂記錄查詢。5.4.4普通用戶登錄頁(yè)面普通用戶登錄頁(yè)面如圖5.14所示:圖5.14普通用戶登錄頁(yè)面圖該頁(yè)面是普通用戶登錄后的效果,用戶主要功能有注冊(cè)登錄功能、客房預(yù)訂、預(yù)訂記錄查詢。5.4.5客房信息管理頁(yè)面客房信息管理頁(yè)面如圖5.15所示。圖5.15客房信息管理頁(yè)面圖代碼如下://客房信息管理列表 request.setAttribute("leixinglist",fenleiDao.selectBeanList(0,9999,"wheredeletestatus=0")); if(fangjianhao!=null&&!"".equals(fangjianhao)){ sb.append("fangjianhaolike'%"+fangjianhao+"%'"); sb.append("and"); request.setAttribute("fangjianhao",fangjianhao); } if(leixing!=null&&!"".equals(leixing)){ sb.append("fenlei.leixinglike'%"+leixing+"%'"); sb.append("and"); request.setAttribute("leixing",leixing); } if(request.getParameter("pagenum")!=null){ currentpage=Integer.parseInt(request.getParameter("pagenum")); } inttotal=kefangDao.selectBeanCount(where.replaceAll("orderbyiddesc","")); request.setAttribute("list",kefangDao.selectBeanList((current1) request.setAttribute("pagerinfo",Pager.getPagerNormal(total,pagesize, currentpage,"method!kefanglist","共有"+total+"條記錄")); request.setAttribute("url","method!kefanglist"); request.setAttribute("url2","method!kefang"); request.setAttribute("title","客房信息管理"); this.setUrl("kefang/kefanglist.jsp");實(shí)現(xiàn)客房信息管理,首先通過(guò)Stringfangjianhao=request.getParameter("fangjianhao");和Stringleixing=request.getParameter("leixing");這2句代碼從頁(yè)面獲取查詢的選項(xiàng),然后通過(guò)if(fangjianhao!=nul&&!"".equals(fangjianhao))和if(leixing!=null&&!"".equals(leixing))這2句條件語(yǔ)句分別判斷下這個(gè)值是否為空,當(dāng)不為空時(shí)則通過(guò)StringBuffer來(lái)疊加組裝查詢的SQL語(yǔ)句,最后當(dāng)SQL語(yǔ)句組裝好了之后,通過(guò)kefangDao.selectBeanList方法來(lái)調(diào)用數(shù)據(jù)庫(kù)的查詢方法來(lái)查到符合條件的記錄,再通過(guò)request.setAttribute方法把查詢到的記錄傳到顯示的頁(yè)面。同時(shí)通過(guò)this.setUrl("kefang/kefanglist.jsp");方法指定傳回到具體指定的是哪個(gè)JSP頁(yè)面。通過(guò)這樣實(shí)現(xiàn)對(duì)數(shù)據(jù)查詢功能的實(shí)現(xiàn),同時(shí)在該頁(yè)面定義了對(duì)客房信息的增加,修改,刪除等操作。5.4.6用戶管理頁(yè)面用戶管理頁(yè)面如圖5.16所示。圖5.16用戶管理頁(yè)面圖用戶管理頁(yè)面是系統(tǒng)管理員角色登錄系統(tǒng)后,點(diǎn)擊用戶管理看到的界面。在用戶管理模塊下,系統(tǒng)管理員可以實(shí)現(xiàn)添加新用戶、按照用戶名查詢用戶的具體信息,以及對(duì)用戶的查看、修改和刪除操作。5.4.7客房分類(lèi)管理頁(yè)面客房分類(lèi)管理頁(yè)面如圖5.17所示。圖5.17客房分類(lèi)管理頁(yè)面圖客房分類(lèi)管理界面是系統(tǒng)管理員角色登錄系統(tǒng)后,點(diǎn)擊客房分類(lèi)管理看到的界面。在客房分類(lèi)管理模塊,系統(tǒng)管理員可以實(shí)現(xiàn)添加新客房分類(lèi)、根據(jù)房間類(lèi)型快速查詢房間類(lèi)型下所有房間的具體信息,也可以對(duì)具體的房間進(jìn)行查看、修改和刪除的操作。5.4.8開(kāi)房管理頁(yè)面開(kāi)房管理頁(yè)面圖是系統(tǒng)管理員角色登錄系統(tǒng)后,點(diǎn)擊開(kāi)房管理看到的界面。在開(kāi)房管理模塊,系統(tǒng)管理員可以通過(guò)輸入房間編號(hào),或輸入房間狀態(tài)(空房或已入?。?,也可以根據(jù)房間類(lèi)型快速查詢客房的具體信息,也可以對(duì)客房進(jìn)行是否入住的查詢,若房間是空房,則可以查看客房的具體信息,可以進(jìn)行開(kāi)房操作;若房間已入住,則可以查看客房是何時(shí)被入住的信息。開(kāi)房管理頁(yè)面如圖5.18所示。圖5.18開(kāi)房管理頁(yè)面圖5.4.9普通用戶客房預(yù)定頁(yè)面普通用戶客房預(yù)定頁(yè)面如圖5.19所示。圖5.19普通用戶客房預(yù)定頁(yè)面圖普通用戶客房預(yù)定頁(yè)面是普通用戶角色登錄系統(tǒng)后,點(diǎn)擊客房預(yù)定看到的界面。在普通用戶客房預(yù)定模塊,普通用戶可以通過(guò)輸入房間編號(hào),或者根據(jù)房間類(lèi)型快速查詢客房的信息,也可以對(duì)房間狀態(tài)是“空房”的客房進(jìn)行查看和預(yù)定操作。5.5本章小結(jié)本章對(duì)整個(gè)管理系統(tǒng)進(jìn)行全面的開(kāi)發(fā)和編碼,根據(jù)之前的準(zhǔn)備對(duì)各個(gè)模塊進(jìn)行了編碼,實(shí)現(xiàn)了各模塊的功能,并建立了數(shù)據(jù)庫(kù)的數(shù)據(jù)表,對(duì)數(shù)據(jù)庫(kù)進(jìn)行連接。6系統(tǒng)測(cè)試軟件測(cè)試是軟件質(zhì)量管理中最直接實(shí)際的行動(dòng)。軟件測(cè)試是有組織性、步驟性和計(jì)劃性的。軟件測(cè)試的種類(lèi)可以根據(jù)測(cè)試形態(tài)、測(cè)試技術(shù)及測(cè)試模式來(lái)進(jìn)行劃分。就測(cè)試模式而言,測(cè)試方法可分為兩種:白盒測(cè)試和黑盒測(cè)試。這兩種方法的測(cè)試方向是不同的,白盒測(cè)試以測(cè)試的深度為主,而黑盒測(cè)試是以測(cè)試的廣度為主。白盒測(cè)試:又稱結(jié)構(gòu)測(cè)試,透明盒測(cè)試、邏輯驅(qū)動(dòng)測(cè)試或基于代碼的測(cè)試。白盒測(cè)試是一種測(cè)試用例設(shè)計(jì)方法,盒子指的是被測(cè)試的軟件,嚴(yán)格來(lái)說(shuō)白盒測(cè)試有兩大方面:數(shù)據(jù)流程和控制流程。數(shù)據(jù)流程就是測(cè)試資料進(jìn)出系統(tǒng)的程序所經(jīng)過(guò)的流程,控制流程就是測(cè)試程序在執(zhí)行過(guò)程中每個(gè)階段的流程??刂屏鞒堂嬗幸韵滤狞c(diǎn):1.語(yǔ)句覆蓋:每一個(gè)程序句述都被執(zhí)行到;2.分支覆蓋:每一個(gè)程序的進(jìn)出點(diǎn)都至少被執(zhí)行過(guò)一次;3.條件覆蓋:分支覆蓋再加上所有判斷情況都至少被執(zhí)行過(guò)一次;4.條件組合覆蓋:不同的組合的判斷情況都至少被執(zhí)行過(guò)一次。黑盒測(cè)試:又稱為功能測(cè)試或數(shù)據(jù)驅(qū)動(dòng)測(cè)試,測(cè)試人員并不需要對(duì)軟件的結(jié)構(gòu)有深層的了解,測(cè)試重點(diǎn)在于軟件的功能。為了控制黑盒測(cè)試的執(zhí)行,測(cè)試人員必須按照測(cè)試用例逐一進(jìn)行,所以測(cè)試用例設(shè)計(jì)的好壞會(huì)直接影響到測(cè)試結(jié)果。所謂的測(cè)試用例就是將軟件測(cè)試的行為活動(dòng),做一個(gè)科學(xué)化的組織歸納。而設(shè)計(jì)軟件測(cè)試用例的目的,是為了能將軟件測(cè)試的行為轉(zhuǎn)換為可管理的模式?;跁r(shí)間因素的考慮,軟件測(cè)試行為必須能夠加以量化,才能進(jìn)一步讓管

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論