基于JSP技術(shù)的酒店客房管理系統(tǒng)設(shè)計與實現(xiàn)
摘 要: 本系統(tǒng)應(yīng)用JSP技術(shù),運用WindowsXP平臺,使用JAVA編程語言和SQL Server 2005數(shù)據(jù)庫,采用B/S模式開發(fā)設(shè)計完成。系統(tǒng)分為前臺和后臺管理,前臺主要實現(xiàn)客戶的瀏覽信息、預(yù)定客房等功能,后臺是管理員管理信息的平臺,主要是管理員對客房、客戶的信息的管理(包括添加、修改、刪除、查詢)。針對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)了較好的擴(kuò)展性、健壯性、穩(wěn)定性,提高了酒店客房管理的效率。
計算機技術(shù)發(fā)展至今已走過了半個多世紀(jì)之久,現(xiàn)在各個階層、各個領(lǐng)域都使用著計算機,在這個快節(jié)奏的時代中它已經(jīng)成為了社會生活的必需品。它的出現(xiàn)是現(xiàn)代社會進(jìn)步,科技發(fā)展的標(biāo)志。同時現(xiàn)代化的酒店組織龐大,信息量大。為了要提高效率,降低成本我們需要借助計算機來進(jìn)行現(xiàn)代化的信息管理,設(shè)計一個酒店客房管理系統(tǒng)。
酒店是服務(wù)與銷售同步的一類企業(yè)。因此,給住店客人提供方便快捷的服務(wù)、降低自己的營業(yè)成本是各個酒店追求的目標(biāo)。一般來說,酒店主要是靠出租房間及以此產(chǎn)生的各種消費作為收入來源。所以,酒店客房部的管理水平直接影響到整個酒店的經(jīng)濟(jì)效益。
隨著賓館酒店業(yè)競爭的加劇,賓館之間客源的爭奪越來越激烈,賓館需要使用更有效的信息化手段,拓展經(jīng)營空間,降低運營成本,提高管理和決策效率。傳統(tǒng)的賓館酒店計算機管理系統(tǒng)主要包括前臺管理系統(tǒng)和后臺管理系統(tǒng)兩大部分,基本包含了賓館主要業(yè)務(wù)部門,初步實現(xiàn)了對顧客服務(wù)和進(jìn)行財務(wù)核算所需要的各個功能。但傳統(tǒng)的賓館酒店管理系統(tǒng)基于財務(wù)管理為主線的設(shè)計理念,無法滿足賓館酒店全面信息化管理的需要。
現(xiàn)代賓館酒店業(yè)迅速發(fā)展,新的管理觀念與模式層出不窮。賓客客房管理系統(tǒng)亦隨著賓館管理理念的發(fā)展而發(fā)展。賓館客房管理系統(tǒng)依照國家星級賓館標(biāo)準(zhǔn)化業(yè)務(wù)程序,采用了先進(jìn)的數(shù)據(jù)庫理論,多媒體技術(shù),軟件工程理念等,從基層,中層,高層三個管理者層次為切入點,以成本分析,預(yù)測,控制為主線,形成一套上下貫通,操作便捷的酒店系統(tǒng)解決方案,科學(xué)地將賓館各種日常業(yè)務(wù)完美的結(jié)合在一起,為管理及決策提供了強有力的支持。其對客人個性化服務(wù)及全面徹底的信息化,使企業(yè)電算化管理水平提升到一個新的更高層次。提供大量豐富的基于企業(yè)管理經(jīng)營過程中實際的數(shù)據(jù)。
目前,酒店客房管理系統(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é):證件類別、現(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ù)房號和收取客人按金時所開的按金單票據(jù)信息,正式確認(rèn)客人入住。系統(tǒng)中的角色與主要實體之間的聯(lián)系,見圖1所示。
圖1中①主要是刪除房間有誤的消費、調(diào)整房租。對其說明如下:
?。?) 對于由前臺收銀崗人員對某房間誤輸?shù)南M項目,他們只能采取用抵消的方法(即輸入相應(yīng)的負(fù)數(shù)),以保證該房間消費總額的正確性。這樣,在打出的結(jié)賬單、流水賬報表里都會出現(xiàn)因用于抵消的“負(fù)數(shù)”,而造成“冗余”記錄。在本系統(tǒng)中,只有管理員才能刪除有誤的房間消費項目。
?。?) 在核數(shù)過租時,未發(fā)現(xiàn)在住房的房價有什么錯誤,但當(dāng)發(fā)現(xiàn)時已經(jīng)因為日結(jié)而由系統(tǒng)自動新加了一天的房租。在本系統(tǒng)中,只有管理員才能修改在住房的房租。[!--empirenews.page--]
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ù)訂了的臟房。
[!--empirenews.page--]
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è)報表、按金單報表、在住客人消費報表。
因酒店的客房部是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)留有余地以便于擴(kuò)展”的原則。
頁面設(shè)計及相關(guān)代碼分析
賓館客房管理系統(tǒng)的頁面由五部分組成:
●賓館客房管理系統(tǒng)登陸界面的設(shè)計
●客房管理管理頁面的設(shè)計
●客房經(jīng)營管理頁面的設(shè)計
●客戶信息查詢頁面的設(shè)計
●員工信息管理頁面的設(shè)計
1.賓館客房管理系統(tǒng)登陸界面的設(shè)計
系統(tǒng)共分兩類用戶:酒店管理員和前臺服務(wù)員
當(dāng)用戶進(jìn)入賓館客房管理系統(tǒng)登陸界面后,首先需要進(jìn)行身份驗證,系統(tǒng)在驗證通過后,將使用UserType變量記錄其用戶類型,并根據(jù)用戶類型確定用戶的使用權(quán)限。賓館客房管理
在SQL Server 2000中共建了22個表:管理員表、用戶表、證件種類表、現(xiàn)金種類表、付款方式表、房間表、房態(tài)名稱表、按金催交的最小余額表、按金使用情況表、房間消費商品表、房間消費雜項表、房間維修記錄表、房種默認(rèn)價格表、日結(jié)記錄表、轉(zhuǎn)房記錄表、轉(zhuǎn)賬記錄表、客人信息表、客人-按金表、客人-房間表、房間-消費匯總表、房間-消費商品明細(xì)表、房間-消費雜項明細(xì)表。限于篇幅,本文只介紹兩個典型的表及其字段的功能說明。[!--empirenews.page--]
?。?)客人-房間表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ù)采取的處理方法如下:
假如該客人是歷史客人,則先查詢出與此客人相關(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ù)器主機。
基于成本、安全性、可擴(kuò)展性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ù),已被地跨廣東省佛山和江門兩市的柏麗酒店連鎖集團(tuán)的八家分店使用,現(xiàn)在已經(jīng)進(jìn)入穩(wěn)定運行期。從運行效果看,本系統(tǒng)體現(xiàn)了更加系統(tǒng)化、規(guī)范化、自動化,實現(xiàn)操作簡便、靈活性強、安全性好等特點,更為廣大客戶提供了方便的信息查詢平臺。