餐饮管理信息系统分析与设计.doc_第1页
餐饮管理信息系统分析与设计.doc_第2页
餐饮管理信息系统分析与设计.doc_第3页
餐饮管理信息系统分析与设计.doc_第4页
餐饮管理信息系统分析与设计.doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

酒店餐饮信息系统餐饮管理信息系统分析与设计一、开发背景 近年来,随着信息技术的迅速发展及管理理论的不断突破创新,管理信息系统也得到了飞速的发展,在人们的工作、生活与学习中扮演着越来越重要的角色。下面主要是以餐饮行业为切入点,重点探讨酒店餐馆信息系统。随着信息化的发展,信息系统不断提高着餐饮企业的管理效率,但是现有的信息系统只是对传统的点餐模式的“无纸化”办公,没有整合供应链与成本管理的思想。餐饮企业还处在厨师长的领导下的计划经济模式,整个菜系的管理由单纯的厨师长管辖。一个好的厨师长的去留关系到一个餐饮企业的命运,传统餐饮企业的扩张模式受到厨房体系的制约(火锅店除外)。究其原因,是没有对菜品实施标准化处理,没有对菜品生产流程标准化固定下来。因此,开发一个酒店餐馆信息系统是十分必要的,通过前台的菜品信息展示以及包厢展示,通过购物车的模式形成餐饮企业的电子商务平台,通过后台的库存系统,整合餐饮企业的供应链,提高其在信息化条件下的管理水平,对在现在激烈竞争的餐饮行业中求发展的餐饮企业来说,无疑是一个福音。我们通过对餐饮企业的菜品和菜料的标准化处理,大大压缩了企业的库存成本,提高餐饮企业的经济效益。二、系统分析本文开发的管理信息系统全称为酒店餐馆信息系统,作者主要负责此系统中的菜品信息与订餐管理模块,其中重点是物料分解模块的相关流程分析与开发。(一)系统概况1.系统简介订餐服务是酒店餐饮企业的一项日常工作,完成酒店餐饮企业订餐服务的订餐系统,作为酒店餐饮管理系统的一部分,将为酒店餐饮企业提高服务效率和质量,提高企业经济效益起到重要的作用。目前,我国餐饮业普遍采用的订餐工作方式是客户通过电话与餐厅联系,由餐厅工作人员通过参议企业内部的餐饮管理系统实施订餐工作。从一定程度上来讲,这种工作方式仍没有完全脱离手工式工作,工作效率低。同时,从客户订单需求角度考虑,客户希望在订餐前了解更多的有关信息,如餐厅能提供的菜的品种、各种菜的风味、菜的直观图片等,而这些信息仅仅从餐厅工作人员的电话中是不可能有全面的了解。这无疑给客户的订餐带来不便,同时也影响了餐厅的工作效率和企业的声誉。(二)可行性分析1.经济可行性对于高校来讲,在各项硬件购置以及软件系统的开发中不必要再追加过多资金,而只需要利用学校现有的资源就可以基本完成系统的开发实施工作。有实验室硬件环境的支持,有高校专业指导教师的帮助,以及对现实酒店的抽象。是这一系统的开发有了经济可行性。现代餐饮企业的不断发展,特别的中小餐饮企业的腾飞,为我们系统的开发提供了庞大的市场依托。2.技术可行性对于高校来说,其本身的工作的特殊性使得其对于信息技术的研究和应用一直走在各行业的前面。现代的数据库技术和网络技术趋于成熟,计算机管理在餐饮企业的管理业务过程中扮演着越来越重要的作用,特别是无线网络的发展,大大节约了管理成本。WEB开发语言的(如ASP、PHP、JSP等)发展为技术开发提供了参考开发工具。3.管理可行性现在酒店管理区域标准化,特别是星级标准的施行。有利于使系统建立在比较标准的管理体系基础上。特别是国外餐饮标准化企业(如麦当劳、肯德基等)在餐饮标准化上的探索和成功实施,为我们的开发提供的参考。(三)业务流程分析基于菜品信息与订单管理业务流程分析的基础上,本文进行了流程重构,以优化相关业务流程,提高信息系统运行效率。管理业务流程中,相关单据的传递尽量采用电子化的方式,努力避免使用纸质传递的方式。这一方面加快了信息传递的速度,另一方面也符合当前倡导的建设节约型社会的要求。一张单据的产生有其上一流程产生的单据为依据,各种单据相互联系,环环相扣,有助于检验或保证相关单据的真实性,有利于明确各个流程中相关责任人的责任,从而达到强化过程管理的目的。订单管理业务流程的处理过程是:顾客通过注册并登陆订餐网站的主页,选择喜欢的菜品放入购物车,在购物车里调整菜品的数量,然后通过点击提交,可以去收银台页面,生成菜品订单,后台生成菜料单。如图3-3-1所示。图2-1 业务流程图(四)数据流图1.第一层(顶层)数据流程第一层数据流程主要是管理员后台定义菜品和菜料信息。管理员从仓库领取菜料的信息,包括菜料编号和菜料名称,录入材料表。从厨房领取菜品的信息,包括菜品的编号、名称、价格、初始数量、图片、简介、所需要菜料的编号和数量。录入菜品表。这样在订餐的页面就可以显示菜品的信息,顾客就可以通过浏览订餐系统的网页,查看菜品的相关信息,自主选择所喜欢的菜品和数量,如图3-4-2所示。通过定义菜品与菜料的关系,就可以在顾客提交菜品订单的同时,将菜品分解为所需要的菜料传递给仓库,仓库就可以进行菜料的配货。这样的大大节省了菜品分解模块的时间。在相同的时间段内自动生成菜品订单和领料单。图2-4-2 第一层数据流程图2.第二层数据流程第二层数据流程主要在前台页面进行,顾客通过将菜品添加到购物车中,提交购物车里的菜品信息,就可以将这些被选择的菜品信息写入到订单里。同时将顾客登陆是的用户名以及顾客在订包厢系统里所预定的包厢的信息一同写入到订单里,生成订单的同时把订单号返回给顾客,顾客就可以凭借订单号,到指定的包厢和时间用餐了,如图3-4-3所示。为了限制过量的订餐,我们在菜品的数量上做了限制,当菜品表里菜料的数量为1的时候,就会在顾客点菜的时候提示顾客。通过这样的方式,可以让顾客所点的菜品都可以在规定的时间内生产出来。顾客在提交订单的同时,订单里的菜品所需要的菜料生成的领料单也传递到仓库,通过这种方式,仓库就可以及时为厨房的菜品生产提供菜料了。图2-4-3 第二层数据流程图3.第三层数据流程 第三层数据流程主要是在顾客提交订单的过程中进行。通过查询顾客订单中菜品的编号和数量,查看菜品表里每种菜品所需要的菜料的数量,然后乘以订单中菜品的数量,将所得到的菜料的编号和菜料的数量写入到领料表里。生成出库菜料的信息发送给仓库,这样就可以实现仓库将所需要的菜料发送给厨房,如图3-4-4所示。 图2-4-4 第三层数据流程图(五)数据字典1.数据项编号:I1名称:菜品编号简述:菜品的识别编号类型:字符型宽度:4位编号:I2名称:菜料编号简述:识别菜料的编号类型:字符型宽度:4位编号:I3名称:订单编号简述:订单的识别编号类型:字符型宽度:10位2.数据处理编号:P1名称:订餐输入:点菜单处理:汇总点菜单输出:订单编号:P2名称:才品分解输入:订单处理:把菜品分解成菜料输出:领料单编号:P3名称:菜料定义输入:菜料单处理:汇总菜料单输出:菜料清单编号:P4名称:菜品定义输入:菜品信息处理:绑定菜品与菜料的关系输出:菜品信息和所需要的菜料信息3.数据流编号:D1名称:点菜单简述:返回前台点菜信息组成:编号+名称来源:顾客去向:订餐处理模块编号:D2名称:订单简述:汇总的点餐表组成:编号+菜品+数量来源:订餐处理模块去向:菜品分解模块编号:D3名称:领料单简述:记录领取菜料的信息组成:菜料编号+菜料名称+菜料编号来源:菜品分解模块去向:仓库编号:D4名称:菜料单简述:管理员录入的菜料单组成:菜料编号+菜料名称来源:管理员去向:菜料处理模块编号:D5名称:菜品单简述:菜品的详细信息组成:编号+菜品名称+菜品详情+菜品大图+菜品小图+菜品价格来源:管理员去向:菜品处理模块编号:D6名称:菜料清单简述:菜料的详细信息组成:菜料的编号+菜料的名称+菜料的数量来源:菜料处理模块去向:菜料表编号:D7名称:菜品清单简述:绑定菜品与菜料的信息组成:菜品编号+菜品名称+菜料名称+菜料数量来源:菜品处理模块去向:菜品表编号:D8名称:出库单简述:领料表里的信息组成:菜料编号+菜料名称+菜料数量来源:领料表去向:仓库编号:D9名称:订单号简述:订单表里生成订单号码组成:订单号来源:订单表去向:顾客4.数据存储编号:F1名称:订单表简述:储存订单的信息组成:编号+订餐人+菜品+价格+订餐时间+包厢号+总价格关键字:编号+订餐人编号:F2名称:领料表简述:出库的信息组成:编号+出库菜品+出库菜品数量关键字:编号编号:F3名称:菜料表简述:配菜需要的菜料组成:编号+名称+检索码关键字:编号+检索码编号:F4名称:菜品表简述:所有菜品信息组成:编号+菜品名称+价格+简介+大图+小图+检索码关键字:编号+检索码5.外部实体编号:S1名称:顾客简述:订餐的发起者输入的数据流:点菜单输出的数据流:无编号:S2名称:管理员简述:更新菜品和管理订单的部门输入的数据流:菜品信息输出的数据流:无编号:S3名称:仓库简述:配送菜料的部门输入的数据流:无输出的数据流:出库单三、模块分析系统的主要结构如图3-1-1所示。图3-1-1 系统的主要模块四、系统设计1.概念结构设计概念结构设计的任务是在需求分析阶段产生的需求说明书的基础上,按照特定的方法把它们抽象为一个不依赖于任何具体机器的数据模型,即概念模型。概念模型使设计者的注意力能够从复杂的实现细节中解脱出来,而只集中在最重要的信息的组织结构和处理模式上。E-R图由三种符号组成,如图4-2-1所示。“实体”是现实世界中描述客观事物的概念。“属性”一般指试题具有的某种特性。“联系”可以分为两类:一类是实体没不得联系;另一类是实体之间的联系。图4-2-1 E-R图组成符号图4-2-2 全局E-R图为了简明图示,属性未在图中标出。各实体的属性分别为:顾客:(临时编号,IP地址)会员:(会员编号,会员名称,密码,电话,地址,邮箱)菜品:(菜品编号,菜品名称,数量,价格,简介)菜料:(菜料编号,菜料名称,检索码,数量)管理员:(管理员名称,密码)2.逻辑结构设计逻辑结构设计是将概念结构设计阶段完成的概念模型转换成能被选定的数据库管理系统支持的数据结构模型。数据模型由E-R模型转换而来。数据库的设计采用一库多表式设计。即设计了一个数据库。把每个独立的餐饮企业设计为独立的应用实体。采用这种设计的好处就是:符合餐饮企业餐饮供应链环节的处理及时迅速的特点,有利于在餐饮企业内部提高工作效率,降低成本。 表4-2 -1Cpb(菜品信息表)序号字段名称字段描述字段类型长度备注1Cpid菜品编号Varchar10非空,主键2Cpname菜品名称Varchar50非空3huiyuanjia会员价Numeric10非空4Shichangjia市场价Numeric10允许空5CPsp菜品小图Varchar50保存路径6Kucun菜品库存Varchar10默认值为1007Cplp菜品大图Varchar50保存路径8First一级分类Varchar10允许空9Second二级分类Varchar10允许空表4-2-1 Ddb(订单表)序号字段名称字段描述字段类型长度备注1ID自动编号Int4主键2UserName用户名nvarchar50非空3Tprice总价Numeric10非空4details特别说明Varchar50允许空5Useremail电子邮件nvarchar255非空6room包厢号Varchar10允许空表4-2-3 Clb(菜料表)序号字段名称字段描述字段类型长度备注1ID自动编号Int4主键2Cno菜料编码Varchar10非空3Cname菜料名称Varchar50非空4Amount数量Numeric8非空5Measurement计量单位Varchar10非空6Cpid关联菜品编号Varchar10非空表4-2-4 Lld(领料表)序号字段名称字段描述字段类型长度备注1Lld领料单编号Int4主键, 2Cno菜料编号Varchar10允许空3Cname菜品名称Varchar50允许空4Amount需求数量Varchar10允许空5Measurement计量单位Varchar10默认为g6Search检索码Varchar10菜料首字母7Room包厢号Varchar10可以空8Time订餐时间Datetime8非空9number菜料处理编码Numeric9默认为13.物理结构设计物理结构设计是在逻辑结构设计的基础上进一步设计数据存储模式的一些物理细节。物流结构设计通常分为两步:确定数据库的物理结构和评价物理结构。数据库的存放在非系统盘的高速存储硬盘中。数据采用顺序存放的放的方式,由一个数据库下设置多个表,这样可以提高检索的速度。这样的结构符合酒店餐馆信息系统的需求。五、系统开发(一)系统主要功能及界面1.登陆界面2.订餐页面图5-1 订餐页面2.预定管理页面图5-2 预定管理页面3.快餐外卖页面图5-3 快餐外卖页面4.餐饮快速开单界面六、主要程序代码public frmMain() InitializeComponent(); ArrayListView.Clear(); ArrayListView.Add(listViewHall); ArrayListView.Add(listViewGeneral); ArrayListView.Add(listViewLuxury); CurrentListView = (ListView)ArrayListView0; public void GetUpToDate() Used = CanUse = Book = StopUse = Dirty = 0; DataTable EatRoom = Program.DBOpertor.GetAllDataOfEatRoom(); EatRoomLab.Text = tabControl1.SelectedTab.Text; listViewHall.Clear(); listViewGeneral.Clear(); listViewLuxury.Clear(); int i, count = EatRoom.Rows.Count, EatRoomClass = 0; SumDeskAccount = count; for (i = 0; i count; i+) switch (EatRoom.Rowsi餐台状态.ToString() case 可供: EatRoomClass = 0; CanUse+; break; case 预订: EatRoomClass = 1; Book+; break; case 占用: EatRoomClass = 2; Used+; break; case 停用: EatRoomClass = 3; StopUse+; break; case 脏台: EatRoomClass = 4; Dirty+; break; switch (EatRoom.Rowsi房间类型.ToString() case 大厅: listViewHall.Items.Add(a, EatRoom.Rowsi餐台号.ToString(), EatRoomClass); break; case 普通包间: listViewGeneral.Items.Add(a, EatRoom.Rowsi餐台号.ToString(), EatRoomClass); break; case 豪华包间: listViewLuxury.Items.Add(a, EatRoom.Rowsi餐台号.ToString(), EatRoomClass); /MessageBox.Show( break; 餐台总数.Text = SumDeskAccount.ToString(); 当前占用.Text = Used.ToString(); 当前可供.Text = CanUse.ToString(); 当前预订.Text = Book.ToString(); 当前停用.Text = StopUse.ToString(); 上座率.Text = Math.Round(float)Used / (float)SumDeskAccount) * 100, 1) + %; private void frmMain_Load(object sender, EventArgs e) GetUpToDate(); Color col = Color.FromArgb(234, 244, 219); EatRoomLab.Parent = pictureBox; EatRoomLab.Location = new Point(30, 7); 最低消费.BackColor = col; 计费标准.BackColor = col; 进店时间.BackColor = col; 已用时间.BackColor = col; 消费金额.BackColor = col; 餐台总数.BackColor = col; 当前占用.BackColor = col; 当前可供.BackColor = col; 当前预订.BackColor = col; 当前停用.BackColor = col; 上座率.BackColor = col; private void frmMain_FormClosing(object sender, FormClosingEventArgs e) Program.DBOpertor.CloseConnection(); Environment.Exit(1); private void tabControl1_SelectedIndexChanged(object sender, EventArgs e) CurrentSelect = tabControl1.SelectedIndex; CurrentListView = (ListView)ArrayListViewCurrentSelect; EatRoomLab.Text = tabControl1.SelectedTab.Text; /MessageBox.Show(CurrentSelect.ToString(); private void 大图标ToolStripMenuItem_Click(object sender, EventArgs e) CurrentListView.View = View.LargeIcon; private void 小图标ToolStripMenuItem_Click(object sender, EventArgs e) CurrentListView.View = View.SmallIcon; private void 列表ToolStripMenuItem_Click(object sender, EventArgs e) CurrentListView.View = View.List; private void 详细信息ToolStripMenuItem_Click(object sender, EventArgs e) CurrentListView.View = View.Details; private void ListView_ItemActive(object sender, EventArgs e) ListViewItem p = CurrentListView.SelectedItems0; CurrentNo = p.Text; CurrentStatus = Program.DBOpertor.GetStatus(CurrentNo); / MessageBox.Show(status); if (CurrentStatus = 停用 | CurrentStatus = 脏台) MessageBox.Show(非可供状态); return; if (CurrentStatus = 可供 | CurrentStatus = 预订) new frmOpen(CurrentNo,true).Show(); else new frmAdd(CurrentNo, true).Show(); private void Reresh_Click(object sender, EventArgs e) private void GetCurrentSum(DataGridView g) /try CurrentSum = 0; for (int i = 0; i g.Rows.Count - 1; i+) CurrentSum += Convert.ToSingle(g.Rowsi.Cells金额.Value); / catch (Exception ex) MessageBox.Show(ex.Message); private void GetCount(DataGridView g) CurrentAccount = 0; for (int i = 0; i g.Rows.Count - 1; i+) if (!g.Rowsi.Cells金额.Value.ToString().Contains(-) CurrentAccount+; #region 计时间 private void GetMargin(DateTime t1) int shour, sminute; int year1, month1, day1, hour1, minute1; int year2, month2, day2, hour2, minute2; int y, m, d, h; DateTime t2; t2 = DateTime.Now; year1 = t1.Year; month1 = t1.Month; day1 = t1.Day; hour1 = t1.Hour; minute1 = t1.Minute; /second1=t1.Second; year2 = t2.Year; month2 = t2.Month; day2 = t2.Day; hour2 = t2.Hour; minute2 = t2.Minute; /second2=t2.Second; if (minute2 - minute1 0) hour2-; sminute = 60 - minute1 + minute2; else sminute = minute2 - minute1; y = year2 - year1; m = month2 - month1; d = day2 - day1; h = hour2 - hour1; shour = y * 12 * 30 * 24 + m * 30 * 24 + d * 24 + h; 已用时间.Text = shour + 小时 + sminute + 分; #endregion private void GetInfoFromEatRoomNo(string no) / MessageBox.Show(no); /if( InfoData = Program.DBOpertor.GetInfoFromEatRoomNo(no); DataTable InfoT = InfoData.Tables0; 最低消费.Text = InfoT.Rows0最低消费.ToString(); 计费标准.Text = InfoT.Rows0计费方式.ToString(); if (计费标准.Text.Equals(string.Empty) 计费标准.Text = 不计费标准; /MessageBox.Show(CurrentStatus); if (!CurrentStatus.Equals(占用) 进店时间.Text = ; 消费金额.Text = ; 已用时间.Text = ; return; / MessageBox.Show(CurrentStatus); DateTime.TryParse(InfoT.Rows0进店时间.ToString(), out InTime); 进店时间.Text = InTime.Hour + : + InTime.Minute + : + InTime.Second; 消费金额.Text = CurrentSum.ToString(); GetMargin(InTime); /MessageBox.Show(abc); private void ListView_SelectedIndexChanged(object sender, EventArgs e) try string no = CurrentListView.SelectedItems0.Text; CurrentNo = no; CurrentStatus = Program.DBOpertor.GetStatus(CurrentNo); t = Program.DBOpertor.GetEatInfo(CurrentNo); dataGridView.DataSource = t.Tables0.DefaultView; GetCurrentSum(dataGridView); GetCount(dataGridView); RoomNo.Text = CurrentNo + 餐台; Account.Text = 消费数量 + CurrentAccount.ToString(); Sum.Text = 消费总额 + CurrentSum.ToString(); GetInfoFromEatRoomNo(CurrentNo); catch (Exception ex) if (t != null) t.Tables0.Clear(); private void toolStripButton1_Click(object sender, EventArgs e) new frmManagement().Show(); private void toolStripButton2_Click(object sender, EventArgs e) try if (CurrentStatus != 占用) MessageBox.Show(请选择要结帐的餐台!); return; string no = CurrentListView.SelectedItems0.Text; DataSet t = Program.DBOpertor.GetEatInfo(no); new frmCheckOut(CurrentNo, CurrentSum,InTime.ToString().Show(); catch (Exception ex) MessageBox.Show(ex.Message); private void ThreadTimer_Tick(object sender, EventArgs e) Time.Text = DateTime.Now.ToString(); private void contextMenuStrip_Opening(object sender, CancelEventArgs e) try string no = CurrentListView.SelectedItems0.Text; if (CurrentStatus = 可供 | CurrentStatus = 预订) 结帐ToolStripMenuItem.Enabled = false; 增加消费ToolStripMenuItem.Enabled = false; 开单ToolStripMenuItem.Enabled = true; 修改登记ToolStripMenuItem.Enabled = false; 餐台状态ToolStripMenuItem.Enabled = true; 宾客预订ToolStripMenuItem.Enabled = true; else 结帐ToolStripMenuItem.Enabled = true; 增加消费ToolStripMenuItem.Enabled = true; 开单ToolStripMenuItem.Enabled = false; 修改登记ToolStripMenuItem.Enabled = true; 餐台状态ToolStripMenuItem.Enabled = true; 宾客预订ToolStripMenuItem.Enabled = true; catch (Exception ex) e.Cancel = true; private void 结帐ToolStripMenuItem_Click(object sender, EventArgs e) toolStripButton2_Click(sender, e); private void 增加消费ToolStripMenuItem_Click(object sender, EventArgs e) ListView_ItemActive(s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论