《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計應(yīng)用 > 基于C/S結(jié)構(gòu)的小型餐飲管理系統(tǒng)設(shè)計與實現(xiàn)
基于C/S結(jié)構(gòu)的小型餐飲管理系統(tǒng)設(shè)計與實現(xiàn)
來源:微型機與應(yīng)用2013年第22期
王新宇
(南京旅游職業(yè)學(xué)院, 江蘇 南京211100)
摘要: 為使酒店管理(信息工程)專業(yè)的學(xué)生掌握設(shè)計和實現(xiàn)旅游信息管理系統(tǒng)的方法,對酒店餐飲管理工作的業(yè)務(wù)流程進(jìn)行了分析,并在此基礎(chǔ)上設(shè)計了可供學(xué)生在管理信息系統(tǒng)設(shè)計課程中使用的餐飲管理系統(tǒng)設(shè)計方案。通過教學(xué)實踐證明,該小型餐飲管理系統(tǒng)完全可以滿足教學(xué)需求,并且具有一定的實用價值,可以在中小型酒店餐飲部使用。
Abstract:
Key words :

摘  要: 為使酒店管理(信息工程)專業(yè)的學(xué)生掌握設(shè)計和實現(xiàn)旅游信息管理系統(tǒng)的方法,對酒店餐飲管理工作的業(yè)務(wù)流程進(jìn)行了分析,并在此基礎(chǔ)上設(shè)計了可供學(xué)生在管理信息系統(tǒng)設(shè)計課程中使用的餐飲管理系統(tǒng)設(shè)計方案。通過教學(xué)實踐證明,該小型餐飲管理系統(tǒng)完全可以滿足教學(xué)需求,并且具有一定的實用價值,可以在中小型酒店餐飲部使用。
關(guān)鍵詞:餐飲信息管理系統(tǒng);C/S模式;酒店信息管理

    現(xiàn)代酒店是指向各類旅游者提供食、宿、行、娛、購等綜合服務(wù),具有涉外性質(zhì)的商業(yè)性的公共場所。餐飲部是酒店組織機構(gòu)中的重要組成部分。餐飲部經(jīng)營點多,管轄范圍廣,分工細(xì),員工人數(shù)多(約占酒店員工的三分之一),人員文化程度和年齡層次差異大。要將這樣一個復(fù)雜的部門管理好,必須建立合理有效的組織網(wǎng)絡(luò),并進(jìn)行科學(xué)分工,明確職責(zé),使各部門人員各司其職,以保證餐飲部的正常運轉(zhuǎn)[1]。餐飲管理系統(tǒng)是餐飲部不可缺少的部分,它對酒店及餐飲部的管理者都至關(guān)重要。
    酒店管理信息系統(tǒng)一直是我院酒店信息管理專業(yè)學(xué)生的核心課程之一,但在這門課的項目實踐過程中,只是讓學(xué)生熟練使用某種酒店信息管理軟件,其主要原因是成品酒店管理軟件不可能提供源代碼,故無法在代碼的基礎(chǔ)上進(jìn)行講解,而只能講解一些軟件設(shè)計基本理論,課程比較枯燥。對于酒店信息管理專業(yè)的學(xué)生來說,如果只是停留在簡單的軟件應(yīng)用層次上,對于學(xué)生能力的培養(yǎng)顯然是不夠的,這個專業(yè)要求學(xué)生具備一定的軟件開發(fā)能力,另外,學(xué)生在修完高級程序設(shè)計和數(shù)據(jù)庫應(yīng)用的課程后,也需要結(jié)合一個實際的小型信息管理系統(tǒng),在源代碼的基礎(chǔ)上,對照源程序進(jìn)行項目課程的實踐學(xué)習(xí)。為此,本文對酒店餐飲管理工作的業(yè)務(wù)流程進(jìn)行了分析,在此基礎(chǔ)上,設(shè)計了可供學(xué)生在管理信息系統(tǒng)設(shè)計課程中使用的餐飲管理系統(tǒng)設(shè)計方案。通過教學(xué)實踐證明,該小型餐飲管理系統(tǒng)完全可以滿足教學(xué)需求,并且具有一定的實用價值,可以在中小型酒店餐飲部使用。
    目前軟件開發(fā)的體系結(jié)構(gòu)主要為C/S模式和B/S模式。在C/S模式中,客戶機與服務(wù)器相連,客戶端執(zhí)行前臺操作任務(wù),負(fù)責(zé)用戶交互、采集用戶錄入數(shù)據(jù)以及將數(shù)據(jù)傳遞給服務(wù)器;而服務(wù)器負(fù)責(zé)接收客戶端傳來的數(shù)據(jù),并對數(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)用程序都放在一個服務(wù)器上,便于管理和維護(hù),軟件升級也十分方便,但缺點是它們不能提供豐富的用戶交互功能,對于一些非常復(fù)雜的“重型”應(yīng)用程序,用B/S模式有些不方便,一般傾向于用C/S模式。根據(jù)餐飲管理業(yè)務(wù)的特點,本系統(tǒng)采用了C/S模式。
1 系統(tǒng)功能設(shè)計
    (1)桌臺基本信息
    該模塊用于設(shè)置、保存所有桌臺的信息,包括桌臺名稱、桌臺位置、桌臺狀態(tài)、桌臺類型等信息。
    (2)桌臺狀態(tài)
    該模塊實際上顯示的是餐飲桌態(tài)圖(類似于酒店客房部的“房態(tài)圖”[3-4]),可以使用餐廳平面布局圖的形式顯示桌態(tài),操作員根據(jù)不同的圖標(biāo)狀態(tài),可以觀察到某桌是否可用,確定可用后,即可直接在圖上選定餐桌進(jìn)行開臺作業(yè),如圖1所示。

    (4)點單
    如圖3所示,在開臺結(jié)束后進(jìn)行“點單”操作,操作員記錄客人所需的菜名和數(shù)量,然后保存到數(shù)據(jù)庫,相關(guān)數(shù)據(jù)供結(jié)賬時使用。
    (5)結(jié)帳
 圖4為客人就餐結(jié)束后結(jié)賬的設(shè)計界面。收銀員列出清單供客人核對,客人確認(rèn)后,錄入支付的金額,計算所付款是否需要找零,提示找零數(shù)量。

    (6)職員信息
    該模塊可以輸入和查詢桌臺服務(wù)生的基本情況,主要包括員工代碼、姓名、性別、聯(lián)系電話等基本信息。
    (7)消費查詢
    主要為客人提供消費查詢,并可打印出消費清單。
    (8)菜肴設(shè)置
    該模塊用于增加、設(shè)置、保存所有可提供的菜肴信息。
    (9)系統(tǒng)設(shè)置
    設(shè)置系統(tǒng)用戶的不同權(quán)限、備份數(shù)據(jù)庫等。
    (10)報表
    提供營業(yè)收入日報表(部門)、營業(yè)收入?yún)R總表、營業(yè)收入?yún)R總明細(xì)表、營業(yè)明細(xì)表(組)、繳款明細(xì)表(班)、繳款匯總表、日客流量分析表、日營業(yè)報表、當(dāng)日交款表、賬項明細(xì)表、各站點收銀報表、營業(yè)匯總表、成本分析報表、折扣一覽表等,供主管核對。
2 數(shù)據(jù)庫管理系統(tǒng)的選擇
   在開發(fā)管理信息系統(tǒng)的應(yīng)用程序時,對數(shù)據(jù)庫的操作是必不可少的,所以先要選擇一個合適的數(shù)據(jù)庫管理系統(tǒng)產(chǎn)品。對于學(xué)校來說,選用的數(shù)據(jù)庫最好是免費的,這樣可以節(jié)約學(xué)校的經(jīng)費。本系統(tǒng)選用了MySQL作為數(shù)據(jù)庫,MySQL是使用最廣泛的開源數(shù)據(jù)庫系統(tǒng),其突出的優(yōu)點包括[3,5]:
 (1)適用面廣,可在多種操作系統(tǒng)上運行。
 (2)性能優(yōu)異,運行穩(wěn)定。使用MySQL的成功案例很多,另外MySQL對硬件性能的要求也不苛刻,完全可以在一般的教師機上運行。
 (3)性價比高。MySQL是一個開源軟件產(chǎn)品,一般非商業(yè)項目使用MySQL數(shù)據(jù)庫,均可以免費使用。
3 前臺開發(fā)語言
    前臺開發(fā)工具選用微軟的C#,選用C#的原因主要有[2,5-6]:
    (1)C#是一種相當(dāng)新的編程語言,吸取了C++、JAVA等語言的優(yōu)點,并擯棄了它們的缺點,是微軟多年來最重要的新技術(shù)之一,不但可以開發(fā)C/S模式的程序,也可以方便地開發(fā)B/S模式的程序[7]。
    (2)近年來,開源開發(fā)環(huán)境MonoDevlop可以很方便地把C#從Windows下移植到Linux等平臺,實現(xiàn)了跨平臺應(yīng)用。今后如有需要,該餐飲管理系統(tǒng)可以移植到Linux平臺。
    (3)本酒店信息專業(yè)的高級程序設(shè)計課程采用C#
語言作為教學(xué)語言,通過一個學(xué)期的學(xué)習(xí),學(xué)生可以用C#編寫一些簡單的程序,在掌握了C#語言的基礎(chǔ)上,使用C#作為前臺開發(fā)工具可以節(jié)省學(xué)習(xí)的時間。
    (4)從經(jīng)濟方面考慮,因為微軟為使用C#的學(xué)生們提供學(xué)習(xí)版的C#(Visual C# Express),可以免費使用,另外,MonoDevlop和SharpDevlop也可以免費獲得,這樣可以節(jié)約一大筆經(jīng)費,同時還可以使用正版的開發(fā)軟件,既經(jīng)濟又實惠。
4 關(guān)鍵技術(shù)
4.1 樹型菜單的實現(xiàn)

     設(shè)數(shù)據(jù)庫有兩張表:tb_dishbaseinfo(菜肴基本信息表)和tb_dishtype(菜肴類型表),分別如表1、表2所示。
    其中,表2中的DishTypeName字段,可以是冷盤、鍋仔、湯羹、飲料、酒等名稱。


  算法思想是:
  (1)先執(zhí)行SQL語句,讀取菜肴基本信息表和菜肴類型表,通過內(nèi)連接,得到菜肴編號、菜肴名稱、菜肴類型名稱,并將數(shù)據(jù)放入數(shù)據(jù)集,供前臺程序處理。
     (2)生成一個樹節(jié)點,先令其為空,用于顯示菜肴信息的控件為TreeView控件(命名為tvfood)。然后對從數(shù)據(jù)庫中讀取的數(shù)據(jù)集進(jìn)行循環(huán)處理:判斷當(dāng)前的菜肴類型,如果tvfood樹節(jié)點中沒有該類型,則新添加一個根節(jié)點(菜肴類型),并在新的根節(jié)點下增加子節(jié)點(菜肴名稱);如有該類型,則無需建立新根節(jié)點,直接在當(dāng)前根節(jié)點下增加子節(jié)點。
    樹型菜單實現(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 存儲過程
 前臺程序訪問數(shù)據(jù)庫時,如果是簡單的業(yè)務(wù)操作,盡量利用一條SQL語句完成;如果是需要多條SQL語句的比較復(fù)雜的業(yè)務(wù)操作,一般認(rèn)為要通過MySQL的存儲過程來完成,以提高效率[3,5]。存儲過程SP(Stored Procedure)是由一些直接存儲和執(zhí)行的定制過程或函數(shù)組成,有了存儲過程就可以實現(xiàn)復(fù)雜的SQL操作,從而可以完成單條(或少量幾條)SQL語句無法完成的業(yè)務(wù)操作。存儲過程集中完成多條SQL語句,在數(shù)據(jù)庫端直接執(zhí)行完成,可以節(jié)省數(shù)據(jù)在網(wǎng)絡(luò)上反復(fù)傳輸?shù)臅r間,從而獲得更快的速度,提高業(yè)務(wù)處理效率。另外,存儲過程可以實現(xiàn)數(shù)據(jù)庫回滾等操作,提高了數(shù)據(jù)的安全性和程序的健壯性。餐飲管理系統(tǒng)中有不少復(fù)雜的業(yè)務(wù),有些操作在失敗的情況下需要進(jìn)行回滾操作,故本系統(tǒng)在數(shù)據(jù)庫設(shè)計時引入存儲過程。
    例如,清空當(dāng)天的營業(yè)數(shù)據(jù),并將其復(fù)制到歷史表的存儲過程代碼如下:
    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ù)小型餐飲店的實際情況,從教學(xué)的需要出發(fā),設(shè)計并實現(xiàn)了基于C/S架構(gòu)的餐飲管理系統(tǒng)。整個系統(tǒng)實現(xiàn)了餐飲業(yè)務(wù)流程過程中的基本功能,達(dá)到設(shè)計目的。結(jié)合源代碼講解旅游管理信息系統(tǒng),提高了學(xué)生的學(xué)習(xí)興趣;學(xué)生自己動手編程,又進(jìn)一步鍛煉了編程能力。投入課堂教學(xué)4年以來,教學(xué)效果良好。
    如今平板電腦等移動設(shè)備逐漸用于前臺點菜,而本文中的餐飲管理系統(tǒng)不支持移動設(shè)備,所以,今后需要進(jìn)一步研究在本系統(tǒng)中增加移動設(shè)備遠(yuǎn)程點菜的功能。
參考文獻(xiàn)
[1] 郭敏文.餐飲部運行與管理[M].北京:旅游教育出版社,2005.
[2] NAGEL C, EVJEN B, GLYNN J. C#高級編程[M].李銘,譯.北京:清華大學(xué)出版社,2006.
[3] 王新宇,陳婕. 基于工作過程的“旅游管理軟件開發(fā)技術(shù)”課程教學(xué)設(shè)計——以“小型客房管理系統(tǒng)”學(xué)習(xí)情境
設(shè)計為例[J].電子商務(wù),2012(7):78-80.
[4] 陳婕. 酒店管理信息系統(tǒng)中“房態(tài)圖”的設(shè)計和實現(xiàn)[J].軟件導(dǎo)刊,2011,10(11):122-124.
[5] KOFLER M. MySQL 5權(quán)威指南[M].北京:人民郵電出版社,2008.
[6] 唐政.C#項目開發(fā)全程實錄[M]. 北京:清華大學(xué)出版社,2008.
[7] 李丹,曹小佳.電子病歷信息管理系統(tǒng)的設(shè)計與實現(xiàn)[J].微型機與應(yīng)用, 2013,32(1):11-13.

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