摘 要: 為使酒店管理(信息工程)專業(yè)的學(xué)生掌握設(shè)計(jì)和實(shí)現(xiàn)旅游信息管理系統(tǒng)的方法,對(duì)酒店餐飲管理工作的業(yè)務(wù)流程進(jìn)行了分析,并在此基礎(chǔ)上設(shè)計(jì)了可供學(xué)生在管理信息系統(tǒng)設(shè)計(jì)課程中使用的餐飲管理系統(tǒng)設(shè)計(jì)方案。通過教學(xué)實(shí)踐證明,該小型餐飲管理系統(tǒng)完全可以滿足教學(xué)需求,并且具有一定的實(shí)用價(jià)值,可以在中小型酒店餐飲部使用。
關(guān)鍵詞:餐飲信息管理系統(tǒng);C/S模式;酒店信息管理
現(xiàn)代酒店是指向各類旅游者提供食、宿、行、娛、購(gòu)等綜合服務(wù),具有涉外性質(zhì)的商業(yè)性的公共場(chǎng)所。餐飲部是酒店組織機(jī)構(gòu)中的重要組成部分。餐飲部經(jīng)營(yíng)點(diǎn)多,管轄范圍廣,分工細(xì),員工人數(shù)多(約占酒店員工的三分之一),人員文化程度和年齡層次差異大。要將這樣一個(gè)復(fù)雜的部門管理好,必須建立合理有效的組織網(wǎng)絡(luò),并進(jìn)行科學(xué)分工,明確職責(zé),使各部門人員各司其職,以保證餐飲部的正常運(yùn)轉(zhuǎn)[1]。餐飲管理系統(tǒng)是餐飲部不可缺少的部分,它對(duì)酒店及餐飲部的管理者都至關(guān)重要。
酒店管理信息系統(tǒng)一直是我院酒店信息管理專業(yè)學(xué)生的核心課程之一,但在這門課的項(xiàng)目實(shí)踐過程中,只是讓學(xué)生熟練使用某種酒店信息管理軟件,其主要原因是成品酒店管理軟件不可能提供源代碼,故無法在代碼的基礎(chǔ)上進(jìn)行講解,而只能講解一些軟件設(shè)計(jì)基本理論,課程比較枯燥。對(duì)于酒店信息管理專業(yè)的學(xué)生來說,如果只是停留在簡(jiǎn)單的軟件應(yīng)用層次上,對(duì)于學(xué)生能力的培養(yǎng)顯然是不夠的,這個(gè)專業(yè)要求學(xué)生具備一定的軟件開發(fā)能力,另外,學(xué)生在修完高級(jí)程序設(shè)計(jì)和數(shù)據(jù)庫應(yīng)用的課程后,也需要結(jié)合一個(gè)實(shí)際的小型信息管理系統(tǒng),在源代碼的基礎(chǔ)上,對(duì)照源程序進(jìn)行項(xiàng)目課程的實(shí)踐學(xué)習(xí)。為此,本文對(duì)酒店餐飲管理工作的業(yè)務(wù)流程進(jìn)行了分析,在此基礎(chǔ)上,設(shè)計(jì)了可供學(xué)生在管理信息系統(tǒng)設(shè)計(jì)課程中使用的餐飲管理系統(tǒng)設(shè)計(jì)方案。通過教學(xué)實(shí)踐證明,該小型餐飲管理系統(tǒng)完全可以滿足教學(xué)需求,并且具有一定的實(shí)用價(jià)值,可以在中小型酒店餐飲部使用。
目前軟件開發(fā)的體系結(jié)構(gòu)主要為C/S模式和B/S模式。在C/S模式中,客戶機(jī)與服務(wù)器相連,客戶端執(zhí)行前臺(tái)操作任務(wù),負(fù)責(zé)用戶交互、采集用戶錄入數(shù)據(jù)以及將數(shù)據(jù)傳遞給服務(wù)器;而服務(wù)器負(fù)責(zé)接收客戶端傳來的數(shù)據(jù),并對(duì)數(shù)據(jù)進(jìn)行處理,訪問數(shù)據(jù)庫,處理客戶端的操作要求。在B/S模式中,用瀏覽器代替了客戶端程序,與傳統(tǒng)的C/S 模式不同,瀏覽器不直接與數(shù)據(jù)庫相連,而是增加了中間層,瀏覽器通過中間層服務(wù)器與數(shù)據(jù)庫服務(wù)器相連。
基于B/S模式的應(yīng)用程序在過去幾年非常流行[2-3],因其把所有的應(yīng)用程序都放在一個(gè)服務(wù)器上,便于管理和維護(hù),軟件升級(jí)也十分方便,但缺點(diǎn)是它們不能提供豐富的用戶交互功能,對(duì)于一些非常復(fù)雜的“重型”應(yīng)用程序,用B/S模式有些不方便,一般傾向于用C/S模式。根據(jù)餐飲管理業(yè)務(wù)的特點(diǎn),本系統(tǒng)采用了C/S模式。
1 系統(tǒng)功能設(shè)計(jì)
(1)桌臺(tái)基本信息
該模塊用于設(shè)置、保存所有桌臺(tái)的信息,包括桌臺(tái)名稱、桌臺(tái)位置、桌臺(tái)狀態(tài)、桌臺(tái)類型等信息。
(2)桌臺(tái)狀態(tài)
該模塊實(shí)際上顯示的是餐飲桌態(tài)圖(類似于酒店客房部的“房態(tài)圖”[3-4]),可以使用餐廳平面布局圖的形式顯示桌態(tài),操作員根據(jù)不同的圖標(biāo)狀態(tài),可以觀察到某桌是否可用,確定可用后,即可直接在圖上選定餐桌進(jìn)行開臺(tái)作業(yè),如圖1所示。
(4)點(diǎn)單
如圖3所示,在開臺(tái)結(jié)束后進(jìn)行“點(diǎn)單”操作,操作員記錄客人所需的菜名和數(shù)量,然后保存到數(shù)據(jù)庫,相關(guān)數(shù)據(jù)供結(jié)賬時(shí)使用。
(5)結(jié)帳
圖4為客人就餐結(jié)束后結(jié)賬的設(shè)計(jì)界面。收銀員列出清單供客人核對(duì),客人確認(rèn)后,錄入支付的金額,計(jì)算所付款是否需要找零,提示找零數(shù)量。
(6)職員信息
該模塊可以輸入和查詢桌臺(tái)服務(wù)生的基本情況,主要包括員工代碼、姓名、性別、聯(lián)系電話等基本信息。
(7)消費(fèi)查詢
主要為客人提供消費(fèi)查詢,并可打印出消費(fèi)清單。
(8)菜肴設(shè)置
該模塊用于增加、設(shè)置、保存所有可提供的菜肴信息。
(9)系統(tǒng)設(shè)置
設(shè)置系統(tǒng)用戶的不同權(quán)限、備份數(shù)據(jù)庫等。
(10)報(bào)表
提供營(yíng)業(yè)收入日?qǐng)?bào)表(部門)、營(yíng)業(yè)收入?yún)R總表、營(yíng)業(yè)收入?yún)R總明細(xì)表、營(yíng)業(yè)明細(xì)表(組)、繳款明細(xì)表(班)、繳款匯總表、日客流量分析表、日營(yíng)業(yè)報(bào)表、當(dāng)日交款表、賬項(xiàng)明細(xì)表、各站點(diǎn)收銀報(bào)表、營(yíng)業(yè)匯總表、成本分析報(bào)表、折扣一覽表等,供主管核對(duì)。
2 數(shù)據(jù)庫管理系統(tǒng)的選擇
在開發(fā)管理信息系統(tǒng)的應(yīng)用程序時(shí),對(duì)數(shù)據(jù)庫的操作是必不可少的,所以先要選擇一個(gè)合適的數(shù)據(jù)庫管理系統(tǒng)產(chǎn)品。對(duì)于學(xué)校來說,選用的數(shù)據(jù)庫最好是免費(fèi)的,這樣可以節(jié)約學(xué)校的經(jīng)費(fèi)。本系統(tǒng)選用了MySQL作為數(shù)據(jù)庫,MySQL是使用最廣泛的開源數(shù)據(jù)庫系統(tǒng),其突出的優(yōu)點(diǎn)包括[3,5]:
(1)適用面廣,可在多種操作系統(tǒng)上運(yùn)行。
(2)性能優(yōu)異,運(yùn)行穩(wěn)定。使用MySQL的成功案例很多,另外MySQL對(duì)硬件性能的要求也不苛刻,完全可以在一般的教師機(jī)上運(yùn)行。
(3)性價(jià)比高。MySQL是一個(gè)開源軟件產(chǎn)品,一般非商業(yè)項(xiàng)目使用MySQL數(shù)據(jù)庫,均可以免費(fèi)使用。
3 前臺(tái)開發(fā)語言
前臺(tái)開發(fā)工具選用微軟的C#,選用C#的原因主要有[2,5-6]:
(1)C#是一種相當(dāng)新的編程語言,吸取了C++、JAVA等語言的優(yōu)點(diǎn),并擯棄了它們的缺點(diǎn),是微軟多年來最重要的新技術(shù)之一,不但可以開發(fā)C/S模式的程序,也可以方便地開發(fā)B/S模式的程序[7]。
(2)近年來,開源開發(fā)環(huán)境MonoDevlop可以很方便地把C#從Windows下移植到Linux等平臺(tái),實(shí)現(xiàn)了跨平臺(tái)應(yīng)用。今后如有需要,該餐飲管理系統(tǒng)可以移植到Linux平臺(tái)。
(3)本酒店信息專業(yè)的高級(jí)程序設(shè)計(jì)課程采用C#
語言作為教學(xué)語言,通過一個(gè)學(xué)期的學(xué)習(xí),學(xué)生可以用C#編寫一些簡(jiǎn)單的程序,在掌握了C#語言的基礎(chǔ)上,使用C#作為前臺(tái)開發(fā)工具可以節(jié)省學(xué)習(xí)的時(shí)間。
(4)從經(jīng)濟(jì)方面考慮,因?yàn)槲④洖槭褂肅#的學(xué)生們提供學(xué)習(xí)版的C#(Visual C# Express),可以免費(fèi)使用,另外,MonoDevlop和SharpDevlop也可以免費(fèi)獲得,這樣可以節(jié)約一大筆經(jīng)費(fèi),同時(shí)還可以使用正版的開發(fā)軟件,既經(jīng)濟(jì)又實(shí)惠。
4 關(guān)鍵技術(shù)
4.1 樹型菜單的實(shí)現(xiàn)
設(shè)數(shù)據(jù)庫有兩張表:tb_dishbaseinfo(菜肴基本信息表)和tb_dishtype(菜肴類型表),分別如表1、表2所示。
其中,表2中的DishTypeName字段,可以是冷盤、鍋?zhàn)小嬃稀⒕频让Q。
算法思想是:
(1)先執(zhí)行SQL語句,讀取菜肴基本信息表和菜肴類型表,通過內(nèi)連接,得到菜肴編號(hào)、菜肴名稱、菜肴類型名稱,并將數(shù)據(jù)放入數(shù)據(jù)集,供前臺(tái)程序處理。
(2)生成一個(gè)樹節(jié)點(diǎn),先令其為空,用于顯示菜肴信息的控件為TreeView控件(命名為tvfood)。然后對(duì)從數(shù)據(jù)庫中讀取的數(shù)據(jù)集進(jìn)行循環(huán)處理:判斷當(dāng)前的菜肴類型,如果tvfood樹節(jié)點(diǎn)中沒有該類型,則新添加一個(gè)根節(jié)點(diǎn)(菜肴類型),并在新的根節(jié)點(diǎn)下增加子節(jié)點(diǎn)(菜肴名稱);如有該類型,則無需建立新根節(jié)點(diǎn),直接在當(dāng)前根節(jié)點(diǎn)下增加子節(jié)點(diǎn)。
樹型菜單實(shí)現(xiàn)代碼如下:
string sqlstr = "select tb_dishbaseinfo.dishid,tb_dishbaseinfo.dishname,"+
"tb_dishtype.dishtypename"+
" from tb_dishbaseinfo join tb_dishtype on tb_dishbaseinfo.dishtypeID"+
"=tb_dishtype.dishtypeid";
string temp="";
TreeNode newnode=null;
tvfood.Nodes.Clear();
MySqlConnection conn =MySqlCon();
conn.Open();
MySqlCommand cmd = new MySqlCommand(sqlstr,conn);
MySqlDataReader rdb = cmd.ExecuteReader();
while(rdb.Read()){
if(temp!=rdb["dishtypename"].ToString()){
temp=rdb["dishtypename"].ToString();
newnode = tvfood.Nodes.Add(temp);
newnode.Nodes.Add(rdb["dishID"].ToString(),rdb
["dishname"].ToString());
}
else
newnode.Nodes.Add(rdb["dishID"].ToString(), rdb
["dishname"].ToString());
}
cmd.Dispose();
rdb.Dispose();
conn.Dispose();
4.2 存儲(chǔ)過程
前臺(tái)程序訪問數(shù)據(jù)庫時(shí),如果是簡(jiǎn)單的業(yè)務(wù)操作,盡量利用一條SQL語句完成;如果是需要多條SQL語句的比較復(fù)雜的業(yè)務(wù)操作,一般認(rèn)為要通過MySQL的存儲(chǔ)過程來完成,以提高效率[3,5]。存儲(chǔ)過程SP(Stored Procedure)是由一些直接存儲(chǔ)和執(zhí)行的定制過程或函數(shù)組成,有了存儲(chǔ)過程就可以實(shí)現(xiàn)復(fù)雜的SQL操作,從而可以完成單條(或少量幾條)SQL語句無法完成的業(yè)務(wù)操作。存儲(chǔ)過程集中完成多條SQL語句,在數(shù)據(jù)庫端直接執(zhí)行完成,可以節(jié)省數(shù)據(jù)在網(wǎng)絡(luò)上反復(fù)傳輸?shù)臅r(shí)間,從而獲得更快的速度,提高業(yè)務(wù)處理效率。另外,存儲(chǔ)過程可以實(shí)現(xiàn)數(shù)據(jù)庫回滾等操作,提高了數(shù)據(jù)的安全性和程序的健壯性。餐飲管理系統(tǒng)中有不少?gòu)?fù)雜的業(yè)務(wù),有些操作在失敗的情況下需要進(jìn)行回滾操作,故本系統(tǒng)在數(shù)據(jù)庫設(shè)計(jì)時(shí)引入存儲(chǔ)過程。
例如,清空當(dāng)天的營(yíng)業(yè)數(shù)據(jù),并將其復(fù)制到歷史表的存儲(chǔ)過程代碼如下:
CREATE DEFINER=′root′@′localhost′PROCEDURE
′SP_Clear′(out v_msg varchar(1))
BEGIN
declare v_error integer default 0;
declare continue handler for sqlexception set v_error=1;
set autocommit = 0;
start transaction;
insert into tb_history_bill select * from tb_bill;
delete from tb_bill;
if v_error = 1 then
rollback;
else
commit;
end if;
set autocommit = 1;
END;
本文根據(jù)小型餐飲店的實(shí)際情況,從教學(xué)的需要出發(fā),設(shè)計(jì)并實(shí)現(xiàn)了基于C/S架構(gòu)的餐飲管理系統(tǒng)。整個(gè)系統(tǒng)實(shí)現(xiàn)了餐飲業(yè)務(wù)流程過程中的基本功能,達(dá)到設(shè)計(jì)目的。結(jié)合源代碼講解旅游管理信息系統(tǒng),提高了學(xué)生的學(xué)習(xí)興趣;學(xué)生自己動(dòng)手編程,又進(jìn)一步鍛煉了編程能力。投入課堂教學(xué)4年以來,教學(xué)效果良好。
如今平板電腦等移動(dòng)設(shè)備逐漸用于前臺(tái)點(diǎn)菜,而本文中的餐飲管理系統(tǒng)不支持移動(dòng)設(shè)備,所以,今后需要進(jìn)一步研究在本系統(tǒng)中增加移動(dòng)設(shè)備遠(yuǎn)程點(diǎn)菜的功能。
參考文獻(xiàn)
[1] 郭敏文.餐飲部運(yùn)行與管理[M].北京:旅游教育出版社,2005.
[2] NAGEL C, EVJEN B, GLYNN J. C#高級(jí)編程[M].李銘,譯.北京:清華大學(xué)出版社,2006.
[3] 王新宇,陳婕. 基于工作過程的“旅游管理軟件開發(fā)技術(shù)”課程教學(xué)設(shè)計(jì)——以“小型客房管理系統(tǒng)”學(xué)習(xí)情境
設(shè)計(jì)為例[J].電子商務(wù),2012(7):78-80.
[4] 陳婕. 酒店管理信息系統(tǒng)中“房態(tài)圖”的設(shè)計(jì)和實(shí)現(xiàn)[J].軟件導(dǎo)刊,2011,10(11):122-124.
[5] KOFLER M. MySQL 5權(quán)威指南[M].北京:人民郵電出版社,2008.
[6] 唐政.C#項(xiàng)目開發(fā)全程實(shí)錄[M]. 北京:清華大學(xué)出版社,2008.
[7] 李丹,曹小佳.電子病歷信息管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].微型機(jī)與應(yīng)用, 2013,32(1):11-13.