饭店点菜系统详细设计说明书(共34页)_第1页
饭店点菜系统详细设计说明书(共34页)_第2页
饭店点菜系统详细设计说明书(共34页)_第3页
饭店点菜系统详细设计说明书(共34页)_第4页
饭店点菜系统详细设计说明书(共34页)_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

1、精选优质文档-倾情为你奉上软件工程详细设计说明书文档饭店点餐管理系统的分析与设计学院名称信电工程学院专业名称计算机科学与技术所属学期 2015-2016(一)小组名单班级学号姓名13计卓陈尧13计卓韩洁13计卓刘蕊13计卓邓辉任课教师王小磊 2015年12月24日目录F.1 引言F.1.1 编写目的在前一阶段概要设计说明书中,已解决了实现该系统需求的程序模块设计问题。包括如何把该系统划分为若干个模块、决定各个模块之间的接口、模块之间传递的信息,以及数据结构、数据结构的设计等。在以下详细设计报告中将对本阶段中对系统所做的所有详细设计进行说明。在本阶段中,确定应该如何具体的实现所要求的系统,从而在

2、编码阶段可以把这个描述直接翻译成用具体的程序语言书写的程序。主要工作有:根据在需求分析说明书中所描述的功能、流程,并依照概要设计说明书所确定的处理流程、总体结构和运行模块设计,设计完成程序系统的结构,完成制菜统筹模块、点菜管理模块、评价管理模块的程序描述,其中包括各模块的设计说明、程序描述、功能、性能、输入、输出、算法、流程逻辑、接口等。本说明书的预期读者为系统设计人员、软件开发人员、软件测试人员和项目评审人员。F.1.2 背景为了更好的满足广大消费者的多元化消费需求和不同层次的消费水平,提高饭店的服务管理质量,提高饭店工作人员的工作效率,我开发小组在多方面考察、分析、研究现有饭店点菜管理系统

3、的基础之上,以提高消费者的满意程度及商家的服务水平和市场竞争力为目标,致力于开发出一套可视化程度高、功能全面、集分析管理于一体的饭店点餐系统。F.1.3 定义SQL Server:系统服务器所使用的数据库管理系统。SQL:一种用于访问查询数据库的语言事务流:数据进入模块后可能有多种路径进行处理主键:数据库表中的关键域,值互不相同外部主键:数据库表中与其他表主键关联的域Vs2013:Microsoft Visual Studio(简称VS)是美国的开发工具包系列产品。 C#:C#是发布的一种面向对象的、运行于之上的高级程序设计语言。F.1.4 参考资料百度文库F.2 程序系统的结构F.2.1 制

4、菜统筹1.菜品提示功能厨师:下一道菜品学徒:下一道菜所需的食材种类和分量顾客:菜品正在制作2.制菜的统筹功能算法:通过客人点菜的时间可以优先做菜,有和这道菜一样的菜就可以一块做,然后再通过算法显示下一道菜,前一个桌号总比下一个桌号多一道菜。该功能实现了制菜的统筹合理安排制菜顺序。同时将正在制作的菜状态设置为不可退。还能提示下一道菜的菜名和具体信息,给厨师的下手准备食材。3.无食材提示当一道菜的食材不够用了会提示客户退菜或者换一道菜以及服务员,并自动从菜单中删除这道菜顾客根据提示退换菜。F.2.2 推送新菜1.新菜录入厨师新研制的菜肴的食材种类和分量详细的录入系统,储存在新菜菜单中。2.评分机制

5、根据一周顾客的评分,若低于所有菜品的平均分则删除这道新菜,若高于平均分则加入菜单中。F.2.3 点菜服务1.顾客点菜(1)桌号的输入顾客进入饭店之后选择座位坐下,通过扫描二维码在系统中先录入自己的桌号以方便点菜。(2)口味的选择与菜色推荐顾客进入系统之后,可以根据自己的偏好选择酸甜辛辣,淡咸之类的口味,从而系统自动进行推荐菜色,如以前顾客品尝过后评分较高的菜色或者该口味本饭店的招牌菜之类的菜色,同时,系统还可以自动推荐其他口味的评分较高的菜色以供顾客选择。(3)点菜与写备注顾客确定了自己所点的菜色之后,可以在系统上进行确认点菜,在点菜的同时,可以对自己所点的菜写入相应备注,如需要多一点辣味或者

6、少加某样调料等等来满足自己的需求。(4)生成菜单与提交制菜统筹系统顾客点完菜之后,系统自动生成桌号+菜色+备注的菜单并将其提交至制菜统筹系统。2.顾客退菜和催菜(1)退菜顾客在提交了菜单之后,如果想退菜,在系统中找到自己所点菜,如果厨师正在做这道菜,那么便无法进行退菜,如果厨师还没有做到这道菜,便可以从自己的菜单中删除这道菜,那么相应的制菜统筹系统中也会删除这道菜。(2)催菜顾客点菜之后,在等待的过程中,可以在系统中点催菜按钮,以此来催促厨师加快制作速度。F.2.4 会员服务1.注册会员顾客可以通过系统中的注册会员按钮进入注册会员选项,然后填写注册会员需要写明的各项具体信息提交给系统,系统从自

7、身数据库中判断,某些不能重复的项目如手机号码等如和数据库重复冲突了则不能通过,并且提示顾客重新确认自己所填写的信息,而填写完成并且通过之后,则进入会员缴纳相应的会员费部分,缴纳会员费之后则正式成为饭店会员,同时系统为该客户分配唯一的会员号码,并以此作为识别会员身份的凭证。2.会员服务会员登录系统之后,便可以在其他任何地方都可以打电话预约座位和提前点菜,到饭店之后只需在预留的座位上等待直至菜品上桌,或者到饭店在进行点菜也可以。点完菜之后,可以为会员提供相应的打折措施,消费500元以内打9折,500到1000元打8.5折,1000元以上打8折,与此同时还可以进行积分措施,消费多少则积相应的分数,到

8、了一定程度后,每100分可以兑换5元现金券或者相应小礼品。F.2.5 评价1.判断顾客是否已经付款2.如果没付款等待付款,如果付款显示评论界面3.系统给出非常好,很好,一般,很差四个选项给顾客选择,顾客可以根据服务态度,菜色,就餐环境等进行评价,评价完成后在顾客评价界面显示4.顾客评价完成后,系统根据算法显示饭菜的好评率,并赠送相应的奖励给客户5.经理登录系统可以查看顾客的评论以便进行调整,然后辩论其真实性再把评论反馈给相关人员,相关人员根据评论作出相应的调整F.2.6 账单管理1.顾客提出付款信息2.收银员收到消费清单后和顾客进行付款等操作,操作成功后,确定金额并打出清单3.收银员向经理报告

9、日收益,经理核实并确定4.经理对厨房对外采购支出信息,饭店税收支出信息,员工信息支出统计,再根据月收益形成饭店支出表,最后算出饭店的日收益F.2.7 菜单管理菜单管理系统有四个终端,按身份登录不同的身份进入的界面不一样。(1)顾客、服务员终端主要满足如下功能: 1顾客可以在各个类别(特色菜、招牌菜、优惠菜、套餐)下选择自己中意的菜,并查看该菜的介绍,评价,所需时间,还可以选择口味(拉框),如没有,可以在备注里填写。2顾客可以在总价这项里查询,增添和删除菜,也可以看到自己的消费金额。3顾客在消费完毕后,可以留下自己的意见和建议。4服务员可以帮顾客点菜。5顾客或服务员点菜完毕后,系统会自动将菜单传

10、送到制菜统筹子系统。(2)配菜员终端主要满足如下功能:1接收制菜统筹子系统分配的需要的配菜的菜名、份数。2如果菜所需材料没有了,配菜员通过终端选中菜后面的红×(菜单管理系统自动通知服务员终端,服务员再去向顾客解释并询问顾客是否换菜,同时从当天菜单中删除,以免后面顾客继续点)。(3)管理员终端主要满足如下功能:1根据统计系统反馈的数据,修改菜单、类别。2根据统计系统反馈的数据,及时跟员工协调。3将每天的打折信息更新。4反馈客户的意见及建议。5为员工分配相应的权限。F.3 制菜统筹设计说明F.3.1 程序描述现如今大部分饭店之中厨师制菜通常需要一个传菜员来提示他该做哪道菜,提示服务员应该

11、将菜送到哪张桌。不仅时间上和人力物力上都造成了极大的浪费,而且传菜员一旦出错,会造成顾客等待时间过长的不愉快体验,从而给饭店造成损失。所以我们的制菜统筹子系统之中将传菜员的职能转交由计算机来执行,通过算法智能的统筹。计算机不用担心出错,因而顾客的体验都会比较好。不仅如此,制菜统筹系统还充分利用了厨师的一个下手。F.3.2 功能制菜统筹子系统:a. 提示厨师正在制作的菜品和下一道菜品,同时提示学徒下一道菜所需的食材种类和分量。还有提示顾客菜品正在制作。b. 通过客人点菜的时间可以优先做菜,有和这道菜一样的菜就可以一块做,然后再通过算法显示下一道菜,前一个桌号总比下一个桌号多一道菜该功能实现了制菜

12、的统筹合理安排制菜顺序。c. 将正在制作的菜状态设置为不可退。d. 提示下一道菜的菜名和具体信息。e. 提示客户退菜或者换一道菜。F.3.3 性能计算时间<20s;传送时间<3s;F.3.4 输入项 菜单信息 菜名(Dish)-类型:String 份数(number)-类型:Int 桌号(TableNumber)-类型:Int 备注(Remarks)-类型:String 时间(Time)-类型:time; 是否完成(IsFinish)-类型:boolean ;默认:falseF.3.5 输出项配菜名(DishesName)-类型:String配菜份数(DishesNumber)-类

13、型:int即将烧的菜(SoonDish)-类型:String 备注(Remarks)-类型:String*号桌(num)-类型:intF.3.6 算法每个点菜单用结构体存放,并添加时间、是否制作完成字段N个点菜单存放在结构体中使用for循环遍历计算出即将需要做的菜 Count()/统计需做菜的份数 int N=5; int j = 10; int i=1; string NO = "0" SqlDataReader dr;/用于读取数据流 while(i<=N) string cmd = "Select Count(making) From Table Wh

14、ere making='1' and Table_NO='" + i + "'"/统计需做菜的份数SQL语句 dr = help.DataRead(cmd);/执行SQL语句 dr.Read();/读数据 NO = dr0.ToString(); dr.Close();/关闭读取流 string cmd2 = " update Tabe_use Set UP ='" +NO+ "'where Table_NO='" + i + "'"/更新桌

15、子使用情况 j = help.DataWrite(cmd2);/执行SQL语句 i+; string cmd3 = "Select table_NO From Tabe_use where UP=(Select min(UP) From Tabe_use) and use_ing='1'"/SQL语句 SqlDataReader dr = help.DataRead(cmd3); if (dr.Read()/判断数据流是否为空 string cmd = "Select * from Table where making='0' an

16、d making_time!='0'and table_NO='" + dr0.ToString() + "'"/查询未做的菜 dr.Close();/关闭读取流 dr = help.DataRead(cmd);/执行SQL语句 dr.Read(); dr.Close(); cmd = "Select Count(dish_names) From Table where dish_names='" + label2.Text + "'"/SQL语句 SqlDataReader

17、drNum2 = help.DataRead(cmd); drNum2.Read();/数据流 label2.Text = label2.Text + "数量:" + drNum20.ToString();/将需做菜的份数传送到配菜员的显示屏上 drNum2.Close(); else dr.Close(); string cmd2 = "select*from Table where making='0' and making_time!='0'"/SQL语句 SqlDataReader dr2 = help.DataR

18、ead(cmd2); if (dr2.Read()/判断数据流中是否有数据 label2.Text = dr22.ToString(); dr2.Close(); cmd2 = "Select Count(dish_names) From Table where dish_names='" + label2.Text + "'" SqlDataReader drNum2 = help.DataRead(cmd2); drNum2.Read(); label2.Text = label2.Text + "数量:" + d

19、rNum20.ToString();/将数量传送到厨师显示屏上 drNum2.Close(); else dr2.Close(); label2.Text = "没有下一道菜了" F.3.7 流程逻辑F.3.8 接口本模块与其它相关模块间平行方式连接。F.3.9 存储分配Check_list数据表,作用是描述订餐的信息Check_list表序号字段名数据类型是否主键意义1Table_NOVarchar(50)Yes桌号2Dish_namesVarchar(50)No菜名3PriceDecimal(18,0)No价格Garnish数据表,作用是描述配菜的信息Garnish表序

20、号字段名数据类型是否主键意义1Garnish_NumberVarchar(50)Yes配菜号2Dish_namesVarchar(50)No菜名3Food_NameVarchar(50)No食材名4Garnish_AmountfloatNo数量Menu数据表,作用是描述菜单的信息Menu表序号字段名数据类型是否主键意义1Dish_namesVarchar(50)Yes菜名2PrcieDecimal(18,0)No价格3Making_timeVarchar(50)No制作时间4PictureimageNo图片MenuList数据表,作用是描述菜单类别的信息MenuList表序号字段名数据类型是否

21、主键意义1CidintYes菜号2Dish_namesChar(20)No菜名3pcidintNo类别Stock数据表,作用是描述库存的信息Stock表序号字段名数据类型是否主键意义1Food_NameVarchar(50)Yes食材名2Stock_amountfloatNo库存量3Stock_priceDeciamal(18,0)No价格F.3.10 注释设计a、加在模块首部的注释; b、加在各分枝点处的注释;c、对各变量的功能、范围、缺省条件等所加的注释;d、对使用的逻辑所加的注释等。F.3.11 限制条件制菜统筹设计计算机的性能必须足够的强悍,可以在高峰期快速的计算。F.3.12 测试计

22、划测试模块测试功能测试指标制菜智能统筹菜品提示功能在数据库中存在待制作的菜品时可以给出正确的提示:厨师当前制作菜品菜名和份数、学徒下一道待制作菜品的配菜信息制菜的统筹功能能够将数据库中存在的待制作的菜品进行智能的安排制作顺序,取代配菜员的工作无食材提示厨师能够通过这个功能向客人发出当前菜品无食材的提示,同时会从菜单中暂时删去这道菜新菜录入能够将新的菜色信息录入到菜单中,并显示出来评分机制对新菜的评分并能够计算平均分F.3.13 尚未解决的问题无F.4 点菜管理模块程序F.4.1 程序描述该模块程序主要实现为顾客展示、推荐以及介绍菜品和实现顾客对菜品的点菜、退菜和催菜操作。顾客只有在输入桌号之后

23、才能点菜,点菜之后才能进行结账和评价 F.4.2 功能1.开桌:顾客输入自己的桌号。该桌号唯一不可与其他人重复,若重复则给出相应提示。桌号的位数由饭店规模决定默认为两位数,如:01、02。确认桌号后不可修改,如有添桌请求需要用另一台设备另外开桌。2点菜:顾客可以根据需要选择自己喜欢的口味,系统筛选对应口味的菜色同时推送本店特色菜品。界面展示菜名、菜品图片和价格,顾客选择喜欢的菜色可以查看详细介绍,并提交份数。生成点菜信息,在顾客点菜结束后展示,进行最后确认,确认后提交制菜统筹系统。3.退菜:顾客可以退去自己已点的,未上并且未在制作的菜。若在制作或者已上,则提示相关错误。否则从后厨数据库中删去,

24、提示操作成功。4.催菜:顾客可以对已点菜品进行催促,催促会提示后厨加快速度,规定同一小时内后厨只会收到两次催促。但顾客可以尽情催促,单不会传到后厨。F.4.3 性能检索业务响应时间<2s;运行响应时间<1s;付款响应时间<10s;。F.4.4 输入项桌号(Table_NO)类型:String;输入方式:手动输入;输入数量:1;口味(Flavor)类型:String;输入方式:选择;输入数量03;菜名(Dish_names)类型:String;输入方式:选择;输入数量>0;份数(Amount)类型:int;输入方式:选择;输入数量>0;F.4.5 输出项给出对每个输

25、出项的我,包括名称、标识、数据的类型昨格式,数据值的有效范围,输出的形式数量和频度,输出媒体,对输出图形及符号的说明,安全保密条件等。成功提示类型:弹窗输出;输出频率:触发输出1次;错误提示类型:弹窗输出;输出频率:触发输出1次菜品信息类型:界面输出;输出频率:一直输出,触发停止F.4.6 算法使用while()语句判断一小时内接受催促的次数。使用if()判断失误操作。使用if()判断退菜。数据的输入输出与sql数据库链接等基本算法通过输入桌号来记录点餐桌号button1_Click Class.tableNO = textBox1.Text; FrmCustomer fc = new Frm

26、Customer(); fc.Show(); this.Hide(); 开始点菜,这里点的菜同步更新到服务员的菜单表,也实现了退菜的功能,如果菜正在制作就无法退,若还是要求退需要叫服务员来操作 FrmCustomer_Load this.Text = Class.tableNO.ToString()+"号桌" /*显示菜单*/ string connStr = "Data Source=yao-pc;Initial Catalog=item;Integrated Security=True"与数据建立连接 string str2 = "Sele

27、ct*from MenuList"/读取菜单 SqlDataAdapter da = new SqlDataAdapter(str2, conn); DataSet ds = new DataSet();/将数据库读取到的数据放到Dataset da.Fill(ds);/利用dataset的fill方法填充到表格中 nodes(this.treeView1.Nodes, ds, 0); int i = 1; string cmd = "Select*from Table where Table_NO='" + Class.tableNO.ToString(

28、) + "'"/sql语句 SqlDataReader dr = help.DataRead(cmd); while (dr.Read()/循环遍历数据流 string ID = i.ToString();/保存Id号 string dish_names = dr"dish_names".ToString();/保存菜名 string price = dr"price".ToString();/保存价格 string making_time = dr"making_time".ToString();/保存制

29、作时间 ListViewItem lvi = new ListViewItem(); /首先创建一个ListView项item lvi.Text = ID; /该项的文本 lvi.SubItems.AddRange(new string dish_names, price, making_time ); /添加该项的子项,也就是第2,3,4列的值 listView1.Items.Add(lvi); /最后把创建的项加到ListView控件的项中 i+; dr.Close(); /*创立TreeView结点*/ nodes(TreeNodeCollection tnode, DataSet ds

30、, int d) DataView dview = new DataView(ds.Tables0); dview.RowFilter = "pcid='" + d + "'"/循环遍历 foreach (DataRowView row in dview) TreeNode node = new TreeNode(); node.Text = row"dish_names".ToString(); tnode.Add(node); nodes(node.Nodes, ds, Int32.Parse(row"c

31、id".ToString(); /退菜操作button4_Click(object sender, EventArgs e) /*退订一道菜与数据库同步*/ string cmd = "" if (listView1.SelectedItems.Count > 0) cmd="Select*FromTable where Table_NO='" + Class.tableNO.ToString() + "' and dish_names='" + labName.Text + "

32、9;"/SQL语句 SqlDataReader dr= help.DataRead(cmd); dr.Read(); if ("1" = dr4.ToString()/判断菜是否正在制作 dr.Close(); MessageBox.Show("厨师正在制作,请稍等 若依然要退菜,请叫服务员"); Else/菜未开始制作,执行退菜相关操作 dr.Close(); cmd = "Delete from Table where Table_NO='" + Class.tableNO.ToString() + "

33、' and dish_names='" + labName.Text + "'" int i = help.DataWrite(cmd); listView1.SelectedItems0.Remove(); treeView1_NodeMouseClick if (e.Node.Parent = null) else string cmd = "Select * From Menu " + "Where dish_names='" + e.Node.Text + "'&qu

34、ot;/获取配菜信息 SqlDataReader dr = help.DataReadPicture(cmd);/执行SQL语句并生成包含数据对象的实例 dr.Read(); labName.Text = e.Node.Text; labPrice.Text = dr1.ToString(); labTime.Text = dr2.ToString(); label1.Text = "价格:" label3.Text = "元" label4.Text = "制作时间约为" F.4.7 流程逻辑F.4.8 接口本模块与其它相关模块间根

35、据桌号和菜名平行方式连接。F.4.9 存储分配无特别存储分配的需要。Check_list数据表,作用是描述订餐的信息Check_list表序号字段名数据类型是否主键意义1Table_NOVarchar(50)Yes桌号2Dish_namesVarchar(50)No菜名3PriceDecimal(18,0)No价格Menu数据表,作用是描述菜单的信息Menu表序号字段名数据类型是否主键意义1Dish_namesVarchar(50)Yes菜名2PrcieDecimal(18,0)No价格3Making_timeVarchar(50)No制作时间4PictureimageNo图片Table数据表

36、,作用是描述桌子的信息Table表序号字段名数据类型是否主键意义1IDintYes就餐号2Table_noVarchar(50)No桌号3Dish_namesVarchar(50)No菜名4Order_timedatetimeNo订餐时间5makingInt No制作6pricefloatNo图片7Making_timeVarchar(50)No制作时间F.4.10 注释设计a、在模块首部注释说明模块名称; b、在各分枝点处注释各个分支的作用;c、各变量的功能、范围、缺省条件等必须加上注释;d、对使用的逻辑所加上必要的注释。F.4.11 限制条件顾客必须已经登陆该软件,而且在一个网速良好的环境

37、下。F.4.12 测试计划测试模块测试功能测试指标点菜服务桌号录入能够判断桌号的逻辑和重复点菜与写备注能够点菜并写备注生成点菜表生成点菜表与提交制菜统筹系统生成的点菜表能在后厨显示出来退菜能够判断制菜状态,若能退菜则从点表中删去这一道菜催菜能够发送通知至后厨,后厨能够一小时只接受三次F.4.13 尚未解决的问题无F.5 评价管理模块程序F.5.1 程序描述对于一个饭店管理系统来说,大家可能觉得评价系统对于整个饭店管理系统并不是那么重要,但是如果想象淘宝,就觉得很重要,一个评价可以让客人得到一个很好的反馈,同时也可以让更多的用户可以对这个饭店可以有个一定的了解,比如:服务态度,饭店环境,菜色味道,以及价格等都可以进行客观的了解。这个评价系统可以对用户的好评率进行统计计算,对于进行差评的用户反馈给经理,经理可以对用户的评价进行一定的核实,然后进行相应的调整。这个评价管

温馨提示

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

评论

0/150

提交评论