《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于JSP的酒店客房管理系統(tǒng)設(shè)計與實現(xiàn)
基于JSP的酒店客房管理系統(tǒng)設(shè)計與實現(xiàn)
張 標(biāo)
(廣州工商職業(yè)技術(shù)學(xué)院 計算機科學(xué)與工程系,廣東 廣州 510850)
摘要: 針對C/S結(jié)構(gòu)的酒店客房管理系統(tǒng)存在的不足,使用JSP+JavaBean開發(fā)模式、Tomcat 作為Web服務(wù)器、SQL Server 2000作為后臺數(shù)據(jù)庫,開發(fā)出了B/S結(jié)構(gòu)的酒店客房管理系統(tǒng)。從實際運行效果看,該系統(tǒng)能減少軟件的開發(fā)與維護(hù)成本及酒店用戶的使用成本,體現(xiàn)了較好的擴展性、健壯性、穩(wěn)定性,提高了酒店客房管理的效率。
Abstract:
Key words :

摘  要: 針對C/S結(jié)構(gòu)的酒店客房管理系統(tǒng)存在的不足,使用JSP+JavaBean開發(fā)模式、Tomcat 作為Web服務(wù)器、SQL Server 2000作為后臺數(shù)據(jù)庫,開發(fā)出了B/S結(jié)構(gòu)的酒店客房管理系統(tǒng)。從實際運行效果看,該系統(tǒng)能減少軟件的開發(fā)與維護(hù)成本及酒店用戶的使用成本,體現(xiàn)了較好的擴展性、健壯性、穩(wěn)定性,提高了酒店客房管理的效率。
關(guān)鍵詞: 酒店客房管理系統(tǒng);JSP;SQL Server 2000;Tomcat;B/S

    酒店是服務(wù)與銷售同步的一類企業(yè)。因此,給住店客人提供方便快捷的服務(wù)、降低自己的營業(yè)成本是各個酒店追求的目標(biāo)。一般來說,酒店主要是靠出租房間及以此產(chǎn)生的各種消費作為收入來源。所以,酒店客房部的管理水平直接影響到整個酒店的經(jīng)濟效益。
    目前,酒店客房管理系統(tǒng)架構(gòu)上大多是C/S結(jié)構(gòu),所使用的主要有MS Visual Studio.NET系列、Delphi、Java及其相應(yīng)的開發(fā)技術(shù)。無論采用哪種開發(fā)技術(shù),對于C/S結(jié)構(gòu)的酒店客房管理系統(tǒng),都存在一個問題,即若要在一臺電腦上能夠運行它,必須安裝相應(yīng)的軟件,對主機的硬件配置上都有不同程度地特別要求。使得軟件的開發(fā)和維護(hù)成本、酒店用戶的使用成本都較高。本文以開發(fā)一個實例的方式,詳細(xì)講解了采用SQL Server 2000作為后臺數(shù)據(jù)庫,基于JSP技術(shù)開發(fā)出一個B/S結(jié)構(gòu)的酒店客房管理系統(tǒng)的系統(tǒng)設(shè)計與編程實現(xiàn)過程。
1系統(tǒng)設(shè)計
1.1角色的功能劃分

    依據(jù)需求規(guī)格說明書,將系統(tǒng)分為4個職責(zé)明確、分工合理的角色:管理員、前臺接待崗、前臺收銀崗、財務(wù)崗。每種角色都可以修改自己的登錄密碼、查看自己的登錄日志、瀏覽當(dāng)前房態(tài)。下面主要介紹各個角色各自的典型功能。
 管理員職責(zé):證件類別(默認(rèn)是身份證)、現(xiàn)金幣種(默認(rèn)是人民幣)、付款方式(默認(rèn)是現(xiàn)金)、房間種類、房間消費商品及其價格(例如零食、飲料等,在本系統(tǒng)中稱為“房間消費商品”)、酒店提供的收費性服務(wù)項目(例如電話費、清潔費等,在本系統(tǒng)中稱為“房間消費雜項”)、前臺各崗位工作人員等基本數(shù)據(jù)的添加、修改、刪除;每種房間種類的默認(rèn)房價、為催交按金而設(shè)定的最小余額的修改;刪除誤輸入的信息。
 前臺接待崗職責(zé)為客人入住登記、預(yù)訂房間、無消費直接退房、轉(zhuǎn)房、房態(tài)轉(zhuǎn)換、客人資料錄入與查詢、隨時打印在住客人報表等。
 前臺收銀崗職責(zé):領(lǐng)取按金單、收取按金、添加房間消費、轉(zhuǎn)賬、結(jié)賬、打印各種財務(wù)報表、當(dāng)班清轉(zhuǎn)、核數(shù)過租、日結(jié)等方面。
 財務(wù)崗職責(zé)主要就是強調(diào)從財務(wù)的角度查看各種財務(wù)報表,并以此對前臺收銀崗人員上交的各種財務(wù)報表進(jìn)行賬目核實。
 從上述角色的職責(zé)功能劃分看,財務(wù)崗是前臺收銀崗的一個“子集”,故而本文重點介紹其余3種角色。管理員一般由前臺主管或經(jīng)理擔(dān)任。財務(wù)崗人員主要是核對前臺收銀崗上交的各種財務(wù)報表,所以一般只需設(shè)置一個賬號即可。接待崗人員不接觸和“錢”相關(guān)的操作、視圖。收銀崗人員不負(fù)責(zé)房間狀態(tài)的手工修改、客人房間的分配。但在實踐中,酒店用戶可根據(jù)自身情況,進(jìn)行靈活設(shè)置與調(diào)整。例如,對于規(guī)模較小的酒店,可將一個前臺員工同時分配一個接待崗賬號和一個收銀崗賬號。對于規(guī)模較大的酒店,可讓有接待崗和收銀崗賬號的人互不相交,只有二者合作才能完成客人入住手續(xù),即:接待崗人員為一客人分配好房間及其房價后,將房號告知收銀崗人員(客人登記時,接待崗人員可以根據(jù)當(dāng)時工作的閑忙狀況,可暫時先只輸入客人的姓名,等閑點時再補充錄入客人的其他信息);然后收銀崗人員根據(jù)房號(該房的房態(tài)是“待交按金”)和收取客人按金時所開的按金單票據(jù)信息,正式確認(rèn)客人入住。系統(tǒng)中的角色與主要實體之間的聯(lián)系,見圖1所示。

    圖1中①主要是刪除房間有誤的消費、調(diào)整房租。對其說明如下:
    (1) 對于由前臺收銀崗人員對某房間誤輸?shù)南M項目(商品和雜項),他們只能采取用抵消的方法(即輸入相應(yīng)的負(fù)數(shù)),以保證該房間消費總額的正確性。這樣,在打出的結(jié)賬單、流水賬報表里都會出現(xiàn)因用于抵消的“負(fù)數(shù)”,而造成“冗余”記錄。在本系統(tǒng)中,只有管理員才能刪除有誤的房間消費項目。
  (2) 在核數(shù)過租時,未發(fā)現(xiàn)在住房的房價有什么錯誤,但當(dāng)發(fā)現(xiàn)時已經(jīng)因為日結(jié)而由系統(tǒng)自動新加了一天的房租(數(shù)目是日結(jié)前設(shè)置的房價)。在本系統(tǒng)中,只有管理員才能修改在住房的房租。
1.2房態(tài)轉(zhuǎn)換
 從圖1中可以看出,整個客房管理系統(tǒng)的運作基本上都是圍繞著房間而展開的,為了保持接待崗和收銀崗在合作辦理客人入住時的同步性,在房態(tài)中新設(shè)了“待交按金”狀態(tài)。具體的房態(tài)轉(zhuǎn)換如圖2所示。


    對圖2中的①、②、③分別說明如下:
?、偈轻槍哟龒徣藛T在客人入住登記選擇房間時,有可能發(fā)生選錯房號的情況。此時,接待崗人員只需按“取消入住登記”即可。
 ②是針對雖然客人交了相應(yīng)按金,辦完了入住手續(xù),但因自身的一些原因,要退房離店,此時經(jīng)確認(rèn)還未產(chǎn)生任何消費。這種情況下的退房,雖比較少見,但確實是存在的。如果此時由收銀崗人員正常結(jié)賬退房,則會在結(jié)賬單流水賬報表里顯示出結(jié)果(總消費為零)。而假如由接待崗人員辦理“無消費直接退房”,就可以從數(shù)據(jù)庫中直接將本次入住事件的所有相關(guān)數(shù)據(jù)徹底清除。在結(jié)賬單流水賬報表里就不會出現(xiàn)這些“無實際意義、冗余”的數(shù)據(jù)。
?、凼轻槍υ陬A(yù)訂事件發(fā)生時,空房較為緊張的情況下,維護(hù)酒店利益、盡可能提高開房率,使“臟房”的房間也可成為“預(yù)訂房”。在系統(tǒng)中會提示優(yōu)先清理已被預(yù)訂了的臟房。
1.3 房租零頭收取
 為監(jiān)督收銀崗員工的結(jié)賬工作,在上交的財務(wù)報表中,凡涉及到客人房租消費的,除了列出一個結(jié)賬單對應(yīng)房間的房租總額外,還進(jìn)一步將房租的“整數(shù)”、“零頭”分開列出,以方便經(jīng)理、財務(wù)人員核對賬務(wù)。所謂“整數(shù)”即經(jīng)過日結(jié),由系統(tǒng)自動形成的房租,一般是房價的正整數(shù)倍。所謂“零頭”即收銀崗人員根據(jù)客人結(jié)賬退房時,離店時間與規(guī)定的中午12點整點退房的這個時間差而產(chǎn)生的房租。為減少工作量、提高結(jié)賬速度,將其默認(rèn)為零。依據(jù)經(jīng)驗,欲結(jié)賬離店的客人一般都會在中午12點之前退房,這時零頭部分默認(rèn)即可;對于少量的超過12點結(jié)賬退房的情況,則收銀崗人員根據(jù)酒店事先制定好的超時收費規(guī)定以及和客人達(dá)成的約定,手工輸入超時部分的房租。
1.4 有序打印財務(wù)報表
 收銀崗人員打印的報表分為當(dāng)班營業(yè)報表(付款方式統(tǒng)計表、實收匯總表、結(jié)賬單流水賬明細(xì)表)、全天營業(yè)報表(和當(dāng)班營業(yè)報表類似)、按金單報表(匯總表、明細(xì)表)、在住客人消費報表(匯總表、明細(xì)表)。
 因酒店的客房部是24小時營業(yè),所以一般將前臺工作人員分為早、中、晚3個班次,輪流上班。早班和中班交接班時都是先打印當(dāng)班營業(yè)報表,然后當(dāng)班清轉(zhuǎn)、退出系統(tǒng),下一班人員登錄。較復(fù)雜的是晚班以及晚班與早班之間工作的交接。在晚班期間,臨近夜里12點時,進(jìn)行“核數(shù)過租”,查看所有在住房的房價、按金等是否有誤。如發(fā)現(xiàn)有誤,及時修改(這項工作主要以剛開出的房間為主)。次日早上6點左右,打印當(dāng)班營業(yè)報表、當(dāng)班清轉(zhuǎn)、打印全天營業(yè)報表、日結(jié)、打印在住客人消費的報表。至約下班前15分鐘,進(jìn)行當(dāng)班清轉(zhuǎn)、退出系統(tǒng),早班人員登錄。
2 數(shù)據(jù)庫設(shè)計
 在數(shù)據(jù)庫設(shè)計時,整體上綜合考慮兩方面因素:關(guān)系型數(shù)據(jù)庫規(guī)范化理論和表的連接操作對讀寫數(shù)據(jù)庫性能的影響,將數(shù)據(jù)庫設(shè)計成滿足3NF[1]。具體在每個表的每個字段上:字段名稱采取“簡潔而有意義”的原則;字段的類型和長度采取“節(jié)約夠用、適當(dāng)留有余地以便于擴展”的原則。
 在SQL Server 2000中共建了22個表:管理員表、用戶表、證件種類表、現(xiàn)金種類表、付款方式表、房間表、房態(tài)名稱表、按金催交的最小余額表、按金使用情況表、房間消費商品表、房間消費雜項表、房間維修記錄表、房種默認(rèn)價格表、日結(jié)記錄表、轉(zhuǎn)房記錄表、轉(zhuǎn)賬記錄表、客人信息表、客人-按金表、客人-房間表、房間-消費匯總表、房間-消費商品明細(xì)表、房間-消費雜項明細(xì)表。限于篇幅,本文只介紹兩個典型的表及其字段的功能說明。
    (1)客人-房間表crooms的表結(jié)構(gòu),如表1所示。


    關(guān)于字段oldflag取值(在其余表中與此相同):零表示該客人是在住客人;為正整數(shù)時表示該客人已離店(本系統(tǒng)中稱為歷史客人)。如果一個客人在一天之內(nèi)多次入住、離店,其最大值即表示了該客人在當(dāng)日的離店次數(shù)。為保持?jǐn)?shù)據(jù)庫中數(shù)據(jù)的一致性和完整性約束,在日結(jié)清理數(shù)據(jù)時,針對該客人的消費記錄、住店記錄等數(shù)據(jù)采取的處理方法如下:
 假如該客人還是在住客人(存在oldflag字段值為零的情況),則刪除oldflag字段值非零的消費記錄、住店記錄。
 假如該客人是歷史客人,則先查詢出與此客人相關(guān)的oldflag字段上的最大值(設(shè)為X),然后刪除oldflag≤X的消費記錄、oldflag<X的住店記錄,最后將余下的住店記錄中的oldflag字段值復(fù)位為1。
 (2) 房間-消費匯總表rctotal的表結(jié)構(gòu),如表2所示。


3 系統(tǒng)實現(xiàn)
    為客人提供快捷的服務(wù)、為酒店用戶提供人性化的操作界面是本系統(tǒng)的設(shè)計目標(biāo)。在系統(tǒng)實現(xiàn)時,采用酒店行業(yè)的術(shù)語、按照酒店用戶的使用習(xí)慣,提高界面的友好性。
 根據(jù)作者的項目實踐經(jīng)驗,酒店一般都是在服務(wù)臺用一個Hub集線器將若干主機連接起來形成一個局域網(wǎng)。在該局域網(wǎng)內(nèi)使用客房管理系統(tǒng)。若無特別需要,基本是不需連接Internet的。在這種環(huán)境下,軟件架構(gòu)采用B/S、C/S均可。但酒店客房部的營業(yè)活動具有較為明顯的“旺季和淡季”。采用B/S結(jié)構(gòu)開發(fā),酒店用戶可根據(jù)需要,基本不受限制地自行增添、更換非服務(wù)器主機(對這些主機,在硬件上無特別要求)。
 基于成本、安全性、可擴展性3個因素進(jìn)行考慮,本系統(tǒng)的架構(gòu)是B/S結(jié)構(gòu),具體采用JSP為開發(fā)技術(shù)(選用“JSP+JavaBean”模式)、Tomcat為Web服務(wù)器、SQL Server 2000為后臺數(shù)據(jù)庫。
 在“JSP+JavaBean”模式下[2],將與數(shù)據(jù)庫連接池相關(guān)的操作、讀寫數(shù)據(jù)庫的操作、需經(jīng)常使用的數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行的操作分別定義成一個類。考慮到某個功能可能需要用到上述建立的多個類,而JSP動作元素中的<jsp:useBean>標(biāo)簽每次只能創(chuàng)建一個Bean實例。為避免出現(xiàn)JSP頁面中多次重復(fù)使用<jsp:useBean>標(biāo)簽的情況,在開發(fā)時單獨建立一個JSP文件,在該JSP文件中,用若干條<jsp:useBean>標(biāo)簽將上述類的實例一起創(chuàng)建好。這樣就可以在各個JSP頁面中僅用一條JSP指令元素中的include指令即可透明地讀寫數(shù)據(jù)庫,也便于修改和統(tǒng)一管理。
 各個角色經(jīng)統(tǒng)一的登錄頁面成功登錄后,界面均是一個被拆分為常見的“左窄右寬型”的框架集,其中左側(cè)是功能選擇區(qū),右側(cè)是具體操作區(qū)。
 本系統(tǒng)實現(xiàn)了一對一的個性化服務(wù),已被地跨廣東省佛山和江門兩市的柏麗酒店連鎖集團的八家分店使用,現(xiàn)在已經(jīng)進(jìn)入穩(wěn)定運行期。從運行效果看,本系統(tǒng)體現(xiàn)了較好的擴展性、健壯性和穩(wěn)定性。
參考文獻(xiàn)  
[1] 王能斌.數(shù)據(jù)庫系統(tǒng)教程(第2版)(上冊)[M].北京:電子工業(yè)出版社,2008.
[2] 劉曉華,張健,周慧貞.JSP應(yīng)用開發(fā)詳解(第三版)[M].北京:電子工業(yè)出版社,2007.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。