李傳鍇, 葉方超, 匡芳君
(溫州商學(xué)院 信息工程學(xué)院, 浙江 溫州 325035)
研究可知,現(xiàn)代酒店在管理上已全面采用了信息化、網(wǎng)絡(luò)化的工作方式[1]。目前,大多酒店管理系統(tǒng)均采用客戶與服務(wù)器(Client/Server,C/S)模式體系結(jié)構(gòu)[2],每個(gè)終端都需要安裝一個(gè)客戶端,對(duì)于不同操作系統(tǒng)就需要開發(fā)不同的版本,操作系統(tǒng)一旦升級(jí)還需要提供后續(xù)的技術(shù)支持。不僅如此,這一工作管理模式還存在可移植性差、可拓展性和可維護(hù)性仍屬欠佳等缺陷。因此,亟待研發(fā)一套功能完善且基于Web的酒店管理系統(tǒng)來有效降低維護(hù)和運(yùn)行成本[3],提高工作效率?;诖耍诒敬窝芯恐芯筒捎昧薆/S模式和MVC框架,利用JDBC與SQL Server數(shù)據(jù)庫[4]設(shè)計(jì)開發(fā)了酒店管理系統(tǒng),使其具有很強(qiáng)的靈活性和復(fù)用性。
JSP全稱為Java Server Pages,中文名叫Java服務(wù)器頁面,是一種動(dòng)態(tài)網(wǎng)頁開發(fā)技術(shù)。設(shè)計(jì)時(shí),使用JSP標(biāo)簽在HTML網(wǎng)頁中插入Java代碼,從而形成JSP文件。JSP將網(wǎng)頁邏輯與網(wǎng)頁設(shè)計(jì)的顯示分離,支持可重用的基于組件的設(shè)計(jì),使基于Web的應(yīng)用程序開發(fā)變得迅速和容易。
MVC[5]全名是Model View Controller,是模型(Model)-視圖(View)-控制器(Controller)的縮寫。這是一種軟件設(shè)計(jì)典范,即用一種業(yè)務(wù)邏輯、數(shù)據(jù)、界面顯示分離的方法組織代碼,將業(yè)務(wù)邏輯聚集到一個(gè)部件里面,在改良和個(gè)性化定制界面及用戶交互的同時(shí),不需要重新編寫業(yè)務(wù)邏輯。MVC技術(shù)的研發(fā)拓展重點(diǎn)就是用于映射傳統(tǒng)的輸入、處理和輸出功能在一個(gè)邏輯的圖形化用戶界面的結(jié)構(gòu)中。
本文研發(fā)的酒店管理系統(tǒng)分前臺(tái)和后臺(tái)。其中,前臺(tái)由客戶使用,后臺(tái)由酒店工作人員使用。所以前臺(tái)需要針對(duì)客戶做到界面美觀,且操作簡單、易懂。而后臺(tái)針對(duì)酒店工作人員,需要涉及到入住管理、客房管理、財(cái)務(wù)管理、用戶管理以及員工管理等一系列操作環(huán)節(jié),不僅要做到功能規(guī)劃完備,還要有利于系統(tǒng)維護(hù)人員日后的升級(jí)維護(hù),以保證系統(tǒng)的安全性、便利性、高效性等。
本文將客戶群體分為超級(jí)管理員(老板),一般管理員(酒店職員)和客戶(酒店顧客)3類。這3類用戶將在系統(tǒng)中以不同的權(quán)限進(jìn)行區(qū)分,并通過權(quán)限管理來限制其所能處置的操作,另外還設(shè)計(jì)有多終端適配、多瀏覽器適配,以適應(yīng)廣泛的用戶群體。系統(tǒng)功能模塊如圖1所示。由圖1可見,對(duì)于該系統(tǒng)的功能設(shè)計(jì)可得闡釋分析如下。
(1)客戶。要能實(shí)現(xiàn)賬戶注冊、登錄、賬戶信息修改、客房查詢、客房預(yù)定、取消預(yù)約、訂單管理等操作。
(2)一般管理員。要能實(shí)現(xiàn)對(duì)客房狀態(tài)管理、客房密碼管理、客戶入住、客戶退房、客戶換房、修改客戶信息,查詢客戶信息等操作。
(3)超級(jí)管理員。要能實(shí)現(xiàn)對(duì)酒店客房數(shù)量的增減、一般管理員的職位修改和增減、訂單查詢、財(cái)務(wù)管理等操作。
圖1 系統(tǒng)功能模塊圖
本系統(tǒng)包含的實(shí)體主要有:客戶、房間、訂單、員工、入住人等,下面將給出各實(shí)體間的E-R圖。實(shí)體關(guān)系圖如圖2所示。通過E-R圖可以梳理解讀各個(gè)實(shí)體之間的配屬關(guān)系。
圖2 酒店管理E-R圖
根據(jù)系統(tǒng)研發(fā)確定的需求和功能,設(shè)計(jì)得出該系統(tǒng)的10個(gè)關(guān)系。該研究內(nèi)容可做剖析論述如下。
(1)房間表。包括:房間號(hào)、房間密碼、房型、房價(jià)、狀態(tài)、特殊說明、入住時(shí)間、退房時(shí)間、可住人數(shù)。
(2)房間預(yù)定表。包括:房間號(hào)、預(yù)定入住時(shí)間、預(yù)定退房時(shí)間、狀態(tài)。
(3)預(yù)定表。包括:預(yù)定訂單號(hào)、預(yù)定房價(jià)、預(yù)定時(shí)間、入住人數(shù)、預(yù)定入住時(shí)間、預(yù)定退房時(shí)間、天數(shù)、預(yù)定人身份證號(hào)、手機(jī)號(hào)、預(yù)定人姓名、訂房數(shù)。
(4)入住人員表。包括:入住人身份證、入住人姓名、入住時(shí)間、房間號(hào)、入住人編號(hào)。
(5)訂單表。包括:訂單號(hào)、房費(fèi)、押金、商品消費(fèi)、結(jié)賬時(shí)間、實(shí)際入住天數(shù)、訂房數(shù)、經(jīng)手人、訂房人身份證號(hào)、訂房人手機(jī)號(hào)、訂房人姓名、入住時(shí)間、退房時(shí)間、入住人數(shù)。
(6)訂房表。包括:訂房編號(hào)、訂單號(hào)、房間號(hào)、房型。
(7)財(cái)務(wù)表。包括:訂單號(hào)、結(jié)賬時(shí)間、房間號(hào)、總金額、經(jīng)手人。
(8)客戶表。包括:賬號(hào)、密碼、姓名、年齡、性別、生日、郵箱、手機(jī)號(hào)、身份證號(hào)、積分、消費(fèi)金額、入住酒店次數(shù)、取消訂單次數(shù)、密保問題、密保問題答案。
(9)員工表。包括:賬號(hào)、密碼、姓名、性別、年齡、生日、郵箱、手機(jī)號(hào)、工資、職位、密保問題、密保問題答案。
(10)權(quán)限表。包括:賬號(hào)、權(quán)限。
點(diǎn)擊首頁的右上角即可登錄,登錄頁面如圖3所示。不論是管理員、或是客戶都在此頁面登錄,選擇專屬身份登錄即可。客戶登錄時(shí),在輸入正確賬號(hào)、密碼后會(huì)跳轉(zhuǎn)到首頁,而管理員登錄后會(huì)跳轉(zhuǎn)到后臺(tái)管理頁面,以展開各類不同的管理型操作。當(dāng)然,若是不存在該賬號(hào)或密碼錯(cuò)誤則會(huì)提示登錄錯(cuò)誤。若無賬號(hào),則點(diǎn)擊按鈕右上方的注冊按鈕,就可進(jìn)入注冊界面,所有填入的信息確認(rèn)合法通過后就將提示注冊成功。若忘記密碼,也可點(diǎn)擊忘記密碼將其找回,就是通過驗(yàn)證注冊時(shí)填入的密保預(yù)設(shè)問題來重置密碼。用戶也可在登錄后點(diǎn)擊右上角導(dǎo)航欄處的用戶名進(jìn)入個(gè)人中心,對(duì)個(gè)人信息進(jìn)行修改或完善。
圖3 登錄界面
用戶點(diǎn)擊導(dǎo)航欄的房間預(yù)定或者在首頁選擇入住時(shí)間和退房時(shí)間點(diǎn)擊查詢,就將進(jìn)入到房間預(yù)定的頁面,選擇房型后就將進(jìn)入到提交訂單頁面。如圖4所示,如果輸入預(yù)定房間數(shù)量,確定入住與退房時(shí)間,即會(huì)彈出訂單總價(jià),在核查預(yù)定人信息無誤并輸入入住人數(shù)后,就可提交訂單,若提示預(yù)定成功,則預(yù)定完成。用戶可在個(gè)人中心對(duì)訂單進(jìn)行查看或取消訂單操作。研發(fā)時(shí)可參考如下關(guān)鍵設(shè)計(jì)代碼。
public intInsetordertb(Ordertbordertb, inttype){
Connectionconn=getConn();
Stringsql= "{call reserve(?,?,?,?,?,?, ?,?,?)}";
introw= 0;
CallableStatementcstmt= null;
try {
cstmt=conn.prepareCall(sql);
cstmt.setString(1,ordertb.getOordernum());
cstmt.setInt(2,type);
cstmt.setInt(3,ordertb.getResnum());
cstmt.setString(4,ordertb.getOintime());
cstmt.setString(5,ordertb.getOouttime());
cstmt.setString(6,ordertb.getCustid());
cstmt.setString(7,ordertb.getCustphone());
cstmt.setString(8,ordertb.getCustname());
cstmt.setInt(9,ordertb.getRnum());
row=cstmt.executeUpdate();
}catch(SQLExceptione) {
e.printStackTrace();
} finally {
closeConn(conn,cstmt,null);
}
returnrow;
}
圖4 提交訂單界面
進(jìn)入后臺(tái)需要使用管理員登錄才能進(jìn)入。管理員有2種,一般管理員即是酒店員工,超級(jí)管理員即是老板。其中,當(dāng)一般管理員登錄后臺(tái)后,可調(diào)取房間和員工2種功能。此時(shí)若選擇員工功能,則能查詢、并修所有改客戶的基本信息。在房間功能內(nèi),將能查詢所有的房間信息,如圖5所示。具體包括:房間的預(yù)定情況,以及該房間的歷史訂單。而若選擇員工功能,則在辦理入住時(shí)可以登記入住人員的信息,修改房間狀態(tài)以及查詢相應(yīng)的房間密碼,并在客戶退房后設(shè)置修正房間密碼。而當(dāng)超級(jí)管理員登錄后臺(tái)后,將能全盤掌控員工、房間、財(cái)務(wù)中的所有操作。超級(jí)管理員在員工功能內(nèi),除了能查詢和修改客戶信息外,還能對(duì)一般管理員賬戶、即員工實(shí)施管理,能添加、刪除、修正一般管理員賬戶。在房間功能中,超級(jí)管理員還能對(duì)客房進(jìn)行增加和刪除。在財(cái)務(wù)功能中,超級(jí)管理員能查看、修改所有訂單信息,以及查看系統(tǒng)生成的統(tǒng)計(jì)報(bào)表。研發(fā)時(shí),可參考如下關(guān)鍵設(shè)計(jì)代碼。
圖5 房間查詢界面
public List
PreparedStatementpstmt= null;
Connectionconn=this.getConn();
List
try {
pstmt=conn.prepareCall("{callselect_password(?)}");
pstmt.setString(1,rid);
rs=pstmt.executeQuery();
while(rs.next()) {
Roomroom=newRoom();
room.setRid(rs.getString("rid"));
room.setRpwd(rs.getString("rpwd"));
passwordList.add(room);
}
}catch(SQLExceptione) {
e.printStackTrace();
}finally {
closeConn(conn,pstmt,rs);
}
returnpasswordList;
}
隨著酒店管理業(yè)務(wù)的現(xiàn)代化和電子商務(wù)的不斷進(jìn)步,利用計(jì)算機(jī)進(jìn)行酒店管理已成為時(shí)下酒店維系正常運(yùn)營的一個(gè)核心組成部分。本文研發(fā)設(shè)計(jì)的酒店管理系統(tǒng)經(jīng)過測試及試運(yùn)行,基本實(shí)現(xiàn)了需求分析中的全部功能。該系統(tǒng)運(yùn)行穩(wěn)定、安全、可靠,而且界面整潔美觀,還具有易操作、易維護(hù)的特點(diǎn),同時(shí)也是此類管理系統(tǒng)在Web端設(shè)計(jì)上的成功嘗試,由此也保證了移動(dòng)辦公的可行性。但在測試過程中也反映出一些不足,例如查詢訂單后的分類,房間狀態(tài)的自動(dòng)更新等等,需要進(jìn)一步改進(jìn)和完善。