APP下载

基于C#的酒店餐饮业务管理系统的设计与实现

2011-02-20徐炳文

陕西科技大学学报 2011年1期
关键词:点菜结账菜品

徐炳文

(广东岭南职业技术学院电子信息工程学院, 广东 广州 510663)

0 前 言

随着全球经济一体化的不断深入,酒店餐饮业的客源更加丰富多样化,市场和渠道也更加广阔.与此同时,酒店餐饮业面临着日趋激烈的竞争环境和不断攀升的客户期望,迫使业内人士不断通过扩大业务、提高服务质量、降低生产成本和提升客户满意度来增强核心竞争力.其中最有效的手段之一就是应用先进的信息化技术去变革传统意义上的竞争方式和经营管理模式来赢得发展优势.因此,近年来市场对餐饮管理信息系统提出了越来越多的需求,使得开发酒店餐饮管理信息系统成为软件开发的热点领域[1].基于此,作者提出了一个基于C#的酒店餐饮业务系统的设计与实现方案.

1 酒店餐饮业务系统的分析与总体设计

1.1 系统平台网络结构的设计

开发酒店餐饮管理系统涉及到酒店餐饮企业的各个单位、部门以及网络互联技术等.因此,建设该系统是一个复杂的工程,然而一旦运转起来,它所带来的企业效益无疑是巨大的.该系统以餐饮业务为基础,突出酒店餐饮业的前台服务的管理,重视经营业务数据的分析,从专业的角度努力为餐饮企业管理者提供科学有效的管理.该系统开发完成后应该具有前台为顾客提供酒店餐饮服务,后台提供对酒店餐饮企业业务的管理等功能.此外,系统还可以设置自动服务功能,顾客可以智能获取菜品信息以及自动结账.通过对这些需求功能的分析,得出组成该系统的平台网络结构图如图1所示.

图1 酒店餐饮业务系统平台网络结构图

1.2 系统架构的设计

系统架构设计主要是根据系统的总体目标和功能将整个系统合理划分成若干个功能模块,定义各个模块的内部结构等.系统平台网络图只是粗略地描述了一个酒店餐饮业务系统的体系结构及其硬件环境.构成该系统各模块实现起来比较复杂,在软件设计和实现时按自顶向下、逐步细化的方法将整体功能主要划分为前台服务模块、后台服务模块、辅助工具模块、系统管理模块等模块[2-4].整个系统的功能结构总体框架如图2所示.

图2 酒店餐饮业务系统功能结构总体框架图

前台服务模块包括菜谱信息、台桌信息、服务员信息、智能获取菜品以及自动结账功能.开台点菜是酒店餐饮服务管理系统最常用的功能,所以在开发设计时要设计得更加人性化和智能化.自动结账是辅助人工手动结账,使顾客消费后结账更加方便快捷.台桌信息向顾客提供可用的台桌信息,因为顾客在消费时首先要有空闲可用的台桌供开台,才能为顾客点菜与结账等,所以台桌信息管理在整个系统中非常重要.智能获取菜品是辅助点菜功能,顾客可以根据系统提供的菜品信息自己点菜.

图3 系统前台服务模块流程图

后台服务模块包括菜品信息管理、台桌信息管理、服务员信息管理和结账报表管理.菜品信息管理可根据季节时菜供应情况增删修改菜谱信息供顾客选择;台桌信息管理可根据实际需要增删修改台桌信息供顾客开台;服务员信息除了管理正常为顾客服务外,还根据服务员变更情况增删修改服务员信息;结账报表是管理系统不可缺少的一部分,因为酒店餐饮管理系统从某种角度来讲也是一种记账式软件,一个记账式软件如果连结账报表的功能都没有,就好比一头老虎失去了眼睛,所以对于酒店餐饮管理信息系统结账报表管理是不可缺少的部分.

辅助工具模块是为方便用户操作而设计的,包括日历、计算器和记事本.系统管理模块包括账号权限管理、系统锁定设置、系统备份和系统恢复等.

2 酒店餐饮业务系统的具体设计与实现

2.1 前台服务模块设计

前台服务模块与后台服务模块是本系统的核心模块,前台服务模块主要面向系统使用者提供各种信息与功能服务操作,包括的子模块有:菜谱信息、台桌信息、服务员信息、智能获取菜品以及自动结账功能等.后台服务模块主要是前台服务模块的支撑.考虑系统开发环境与开发工具的特点,在这里只对本系统最为核心的前台服务模块进行处理过程设计.结合酒店餐饮业务系统需求,按照软件工程方法自顶向下逐步细化,得到本系统前台服务模块的流程图如图3所示.

服务员登录进入系统,当有顾客前来消费时,输入顾客人数查询系统尚未使用的空台桌信息,如果有空台桌,则进入开台管理模块选择开台桌号,如果为顾客进行了开台则进入点菜管理模块,向顾客展示菜品信息并点菜,服务员与顾客确认点菜信息后菜单通过后台服务网络传回厨房打印服务器和收银台打印服务器,顾客消费完后到收银台付费结账.

2.2 系统开台管理模块的实现

开台管理是酒店餐饮业务系统的核心功能模块之一,在整个系统中是非常重要的.当有顾客前来消费时,楼层服务员首先要查看是否还有空余的台桌信息,如果没有空余的台桌信息,那么顾客还想消费的话就需要等待;如果查询到有空余的台桌信息,那么就可以为顾客选择台桌号进行开台服务.只有开台后才能为顾客提供点菜服务与结账服务.在开台管理模块实现时,需要注意两方面的技术:一是选择开台必须是空闲的台桌,因此要求连接服务器后台数据库进行查询;二是必须有顾客来消费时才能开台,因此要求顾客人数为大于0的整数,否则会产生乱开台,造成系统台桌信息管理混乱.开台管理模块主要部分实现如下:

public SqlConnection conn;

private void formOpentable_Db(object sender,EventArgs e){ //查询获取台桌信息

while(srd.Read( )) {

cbTable.Items.Add(sdr[″TableName″].ToString( ).Trim( )); //获取台桌信息

}

while(srd.Read( )) {

cbServer.Items.Add(sdr[″ServerName″].ToString( ).Trim( ));} //获取服务员信息

}

private void txtNum_KeyPress(object sender, KeyPressEventArgs e){ //必须为整数

if((e.KeyChar!=8&&!char.IsDigit(e.KeyChar))&&e.KeyChar!=13){

MessageBox.Show(″输入的数必须是整数!″);

e.Handled=true;}

private void btnSave_Click(object sender, EventArgs e){ //数据不能为空且大于0

if(txtNum.Text= =″ ″||Convert.ToInt32(txtNum.Text)<=0) {

MessageBox.Show(″请输入顾客人数! ″); }

}

2.3 系统点菜管理模块的实现

点菜管理是酒店餐饮业务系统另一核心功能模块,负责为顾客点菜与管理系统的菜品信息.点菜管理模块的功能主要由3部分来构成:菜品类别的选择、顾客点菜所需要的信息操作部分、显示为顾客已经点过的菜品信息记录.

图4 点菜管理模块主窗体界面

点菜管理模块在实现上需要注意4点:一是只有为顾客开台后才能点菜;二是所点的菜品必须是是系统所提供的菜品类别;三是顾客消费的菜品数量必须是大于等于1的整数;四是保证点菜窗体在点菜时连接后台数据库畅通且读取菜品信息正确.

点菜管理模块的实现窗体界面主要由4个区域来提供点菜管理功能:菜品类别、点菜信息、显示已经点过的菜品信息和保存区域.菜品类别以树型目录形式展开各菜系所提供的菜品类别信息,点菜时只需要从菜系展开中点击所需要的菜就可以自动在点菜信息区域中显示,如果需要的份数不只1份,可以手工更改份数,选上了某一菜品后就会在已经点的菜品信息记录中显示出来,防止点菜错误.点菜管理模块主要部分实现如图4所示.

2.4 系统结账模块的实现

结账管理模块完成的功能主要是在顾客消费结束后对消费项目清单进行消费总额统计.顾客的消费清单来自于点菜模块,而点菜的清单信息是绑定于台桌号,这些数据都通过开台管理、点菜管理存储在服务器后台数据库中,因此结账时首先需要连接后台数据库,从数据库中检索出顾客消费的所有项目清单,然后通过程序统计出顾客消费总额,当结账输入顾客支付金额后会计算出找零余额.

结账管理在实现上需要注意4点:一是保证结账项目是顾客消费的项目;二是打折系数只能是系统设定的系数;三是结账时顾客支付的金额必须大于或等于顾客消费的总金额;四是输入顾客支付的金额后能够自动计算出找零余额.

保证结账项目是顾客消费的项目主要通过两方面的技术来实现:一是点菜信息绑定于顾客开台的台桌信息,二是在检索统计顾客消费项目的同时将消费清单列举显示于结账窗体界面中.为防止操作员乱输入打折系数产生结账统计错误,打折系数通过系统设定,在开发实现时利用TreeView控件来提供打折系数.

结账管理模块的主要部分实现如下:

private void formCheckOut_Load(object sender,EventArgs e){

this.Text=CheckTableName+″结账″; //设置结账界面窗体名称

groupBox1.Text= ″当前台桌-″+CheckTableName;

SqlConnection conn=BaseClass.DBConn.RestaurantsCon( ); //建立数据库的连接

SqlDataAdapter sda=new SqlDataAdapter (″select disheName, DisheSum, DisheAllprice, TableName, Datetime from Customerconsumer_info where TableName = ′″+CheckTableName+″′″, conn); //查询顾客消费项目

DataSet ds=new DataSet( );

sda.Fill(ds);

dataGridVRecord.DataSource=ds.Tables[0]; //显示指定台桌消费的项目清单

conn.Open( ); //建立数据库的连接,创建SqlCommand对象

SqlCommand cmd = new SqlCommand ( ″select sum( disheallprice ) from Customerconsumer_info where TableName=′″+CheckTableName+″′″, conn);

SumPrice =Convert.ToString(cmd.ExcuteSelectTable( )); //计算顾客消费总金额

}

2.5 系统灾难数据恢复的实现

计算机应用系统在运行过程中常常会遇到意外事故的发生,比如正当顾客消费时遇到突然断电或者计算机意外重启,如果开发系统没有采取必要的措施来保护数据信息,势必会当再次进入系统时后原来正在消费还没有结账的顾客信息受到破坏.要保证这些消费记录信息在发生意外后重启计算机进入系统时都保持不变,经过分析设计,我们开发系统时在数据库中针对每个台桌都设计了一个用于标识此台桌当前状态的字段:“*”状态表示当前该台桌已经开台正在使用,“0”状态表示该台桌没有被使用,即“待用”状态.每次进入系统时,都会从数据库中检索出每一个台桌的状态,然后根据原来标识的状态为每一个台桌添加数据库信息,保证消费数据的正确性.主要部分实现如下:

private void AddItems(string state) {

if(state= = ″运行中″) {

lvDesk.Items.Add(srd[″TableName″].Tostring( ),*); //当前使用的台桌标*状态

}

else {

lvDesk.Items.Add(srd[″TableName″].Tostring( ),0);} //不使用的台桌标0状态

}

3 系统主窗体界面的实现

系统登录成功后进入系统的主窗体界面,系统主窗体界面主要由上端菜单栏、台桌显示区域与系统状态栏3部分构成.菜单栏提供需求分析所要求的所有功能命令,实现链接系统功能菜单.台桌区域显示已经使用与待用的所有的台桌信息,双击台桌就会弹出台桌基本信息:台桌编号、台桌名称、台桌费用、台桌位置、台桌状态与台桌类型等;右键单击台桌会弹出台桌管理下拉菜单:开台、撤销开台、点/加菜、消费查询、结账等.由于主窗体显示的台桌比较多,为了让服务员一目了然哪些台桌是使用状态,哪些台桌是待用状态,在实现时利用了ListView控件技术为每个台桌做了标识:“*”表示该台桌是使用状态,“0”表示该台桌是待用状态.有了这个状态标识,服务员使用主窗体界面为顾客进行开台管理、点菜管理、结账管理等功能操作就更加方便了.系统主窗体界面实现如图5所示.

图5 系统主窗体界面

4 结束语

本系统通过功能测试与性能测试,各方面均达到了需求分析的预计要求,而且运行正确稳定.本系统的成功实现,丰富了软件系统开发的构架周期理论,提出了一些改进方法,解决了酒店餐饮业务管理系统灾难数据恢复等技术问题,使开发的系统不仅仅实现了计算机辅助手工操作的流程,而是建立在网络化的各大功能模块的集成化、智能化的应用上.本系统在商业市场的其它类似应用十分广泛,值得进行改造推广.

参考文献

[1] 王玉时 于晓明. 用.Net Remoting技术实现酒店管理系统友情查询功能[J]. 陕西科技大学学报(自然科学版),2008,26(2):110-113.

[2] 何义钊. 中国餐饮业科学常效管理的成功方法——“六T实务”介绍[J]. 国际商业技术, 2008,(2): 36-39.

[3] 黄 威,邵伟民,刘学仁.基于Web Services的商业智能系统研究与设计[J]. 计算机工程与设计,2009,(11):2 702-2 706.

[4] 谢晓园, 徐宝文, 史 亮,等. 面向路径覆盖的演化测试用例生成技术[J]. 软件学报, 2009,(12):3 117-3 136.

猜你喜欢

点菜结账菜品
点菜
团膳菜品质量管理存在的问题及完善策略
会点菜的人,混得不会太差
迷惑菜品又来了
结账
假蒟叶系列菜品的开发利用现状
疯狂编辑部之点菜风波
结账
先结账,再冬眠
结账