版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件工程详细设计说明书文档饭店点餐管理系统的分析与设计学院名称信电工程学院专业名称计算机科学与技术所属学期2015-2016(一)小组名单班级学号姓名13计卓20130501214陈尧13计卓20130501106韩洁13计卓20130501323刘蕊13计卓20130501339邓辉任课教师王小磊2015年12月24日目录TOC\o"1-2"\h\u282F.1引言 710382F.1.1编写目的 723875F.1.2背景 714881F.1.3定义 732261F.1.4参考资料 8149F.2程序系统的结构 813596F.2.1制菜统筹 911789F.2.2推送新菜 1124093F.2.3点菜服务 118697F.2.4会员服务 1211312F.2.5评价 1222101F.2.6账单管理 1324314F.2.7菜单管理 1319327F.3制菜统筹设计说明 1424445F.3.1程序描述 144111F.3.2功能 143370F.3.3性能 1511285F.3.4输入项 151166F.3.5输出项 1513226F.3.6算法 1613359F.3.7流程逻辑 188896F.3.8接口 1931135F.3.9存储分配 207372F.3.10注释设计 227022F.3.11限制条件 2226820F.3.12测试计划 2218751F.3.13尚未解决的问题 238645F.4点菜管理模块程序 2328676F.4.1程序描述 2327849F.4.2功能 2313087F.4.3性能 254250F.4.4输入项 2529541F.4.5输出项 2529501F.4.6算法 2618219F.4.7流程逻辑 30655F.4.8接口 3016142F.4.9存储分配 308480F.4.10注释设计 3119145F.4.11限制条件 3223461F.4.12测试计划 323064F.4.13尚未解决的问题 3227897F.5评价管理模块程序 3225589F.5.1程序描述 338503F.5.2功能 3329248F.5.3性能 3422117F.5.4输入项 343884F.5.5输出项 3413412F.5.6算法 356276F.5.7流程逻辑 3527009F.5.8接口 3521603F.5.9存储分配 3610381F.5.10注释设计 362994F.5.11限制条件 3632741F.5.12测试计划 3625753F.5.13尚未解决的问题 37F.1引言F.1.1编写目的在前一阶段《概要设计说明书》中,已解决了实现该系统需求的程序模块设计问题。包括如何把该系统划分为若干个模块、决定各个模块之间的接口、模块之间传递的信息,以及数据结构、数据结构的设计等。在以下详细设计报告中将对本阶段中对系统所做的所有详细设计进行说明。在本阶段中,确定应该如何具体的实现所要求的系统,从而在编码阶段可以把这个描述直接翻译成用具体的程序语言书写的程序。主要工作有:根据在《需求分析说明书》中所描述的功能、流程,并依照《概要设计说明书》所确定的处理流程、总体结构和运行模块设计,设计完成程序系统的结构,完成制菜统筹模块、点菜管理模块、评价管理模块的程序描述,其中包括各模块的设计说明、程序描述、功能、性能、输入、输出、算法、流程逻辑、接口等。本说明书的预期读者为系统设计人员、软件开发人员、软件测试人员和项目评审人员。F.1.2背景为了更好的满足广大消费者的多元化消费需求和不同层次的消费水平,提高饭店的服务管理质量,提高饭店工作人员的工作效率,我开发小组在多方面考察、分析、研究现有饭店点菜管理系统的基础之上,以提高消费者的满意程度及商家的服务水平和市场竞争力为目标,致力于开发出一套可视化程度高、功能全面、集分析管理于一体的饭店点餐系统。F.1.3定义SQLServer:系统服务器所使用的数据库管理系统。SQL:一种用于访问查询数据库的语言事务流:数据进入模块后可能有多种路径进行处理主键:数据库表中的关键域,值互不相同外部主键:数据库表中与其他表主键关联的域Vs2013:MicrosoftVisualStudio(简称VS)是美国微软公司的开发工具包系列产品。C#:C#是微软公司发布的一种面向对象的、运行于.NETFramework之上的高级程序设计语言。F.1.4参考资料《百度文库》F.2程序系统的结构F.2.1制菜统筹1.菜品提示功能厨师:下一道菜品学徒:下一道菜所需的食材种类和分量顾客:菜品正在制作2.制菜的统筹功能算法:通过客人点菜的时间可以优先做菜,有和这道菜一样的菜就可以一块做,然后再通过算法显示下一道菜,前一个桌号总比下一个桌号多一道菜。该功能实现了制菜的统筹合理安排制菜顺序。同时将正在制作的菜状态设置为不可退。还能提示下一道菜的菜名和具体信息,给厨师的下手准备食材。3.无食材提示当一道菜的食材不够用了会提示客户退菜或者换一道菜以及服务员,并自动从菜单中删除这道菜顾客根据提示退换菜。F.2.2推送新菜1.新菜录入厨师新研制的菜肴的食材种类和分量详细的录入系统,储存在新菜菜单中。2.评分机制根据一周顾客的评分,若低于所有菜品的平均分则删除这道新菜,若高于平均分则加入菜单中。F.2.3点菜服务1.顾客点菜(1)桌号的输入顾客进入饭店之后选择座位坐下,通过扫描二维码在系统中先录入自己的桌号以方便点菜。(2)口味的选择与菜色推荐顾客进入系统之后,可以根据自己的偏好选择酸甜辛辣,淡咸之类的口味,从而系统自动进行推荐菜色,如以前顾客品尝过后评分较高的菜色或者该口味本饭店的招牌菜之类的菜色,同时,系统还可以自动推荐其他口味的评分较高的菜色以供顾客选择。(3)点菜与写备注顾客确定了自己所点的菜色之后,可以在系统上进行确认点菜,在点菜的同时,可以对自己所点的菜写入相应备注,如需要多一点辣味或者少加某样调料等等来满足自己的需求。(4)生成菜单与提交制菜统筹系统顾客点完菜之后,系统自动生成桌号+菜色+备注的菜单并将其提交至制菜统筹系统。2.顾客退菜和催菜(1)退菜顾客在提交了菜单之后,如果想退菜,在系统中找到自己所点菜,如果厨师正在做这道菜,那么便无法进行退菜,如果厨师还没有做到这道菜,便可以从自己的菜单中删除这道菜,那么相应的制菜统筹系统中也会删除这道菜。(2)催菜顾客点菜之后,在等待的过程中,可以在系统中点催菜按钮,以此来催促厨师加快制作速度。F.2.4会员服务1.注册会员顾客可以通过系统中的注册会员按钮进入注册会员选项,然后填写注册会员需要写明的各项具体信息提交给系统,系统从自身数据库中判断,某些不能重复的项目如手机号码等如和数据库重复冲突了则不能通过,并且提示顾客重新确认自己所填写的信息,而填写完成并且通过之后,则进入会员缴纳相应的会员费部分,缴纳会员费之后则正式成为饭店会员,同时系统为该客户分配唯一的会员号码,并以此作为识别会员身份的凭证。2.会员服务会员登录系统之后,便可以在其他任何地方都可以打电话预约座位和提前点菜,到饭店之后只需在预留的座位上等待直至菜品上桌,或者到饭店在进行点菜也可以。点完菜之后,可以为会员提供相应的打折措施,消费500元以内打9折,500到1000元打8.5折,1000元以上打8折,与此同时还可以进行积分措施,消费多少则积相应的分数,到了一定程度后,每100分可以兑换5元现金券或者相应小礼品。F.2.5评价1.判断顾客是否已经付款2.如果没付款等待付款,如果付款显示评论界面3.系统给出非常好,很好,一般,很差四个选项给顾客选择,顾客可以根据服务态度,菜色,就餐环境等进行评价,评价完成后在顾客评价界面显示4.顾客评价完成后,系统根据算法显示饭菜的好评率,并赠送相应的奖励给客户5.经理登录系统可以查看顾客的评论以便进行调整,然后辩论其真实性再把评论反馈给相关人员,相关人员根据评论作出相应的调整F.2.6账单管理1.顾客提出付款信息2.收银员收到消费清单后和顾客进行付款等操作,操作成功后,确定金额并打出清单3.收银员向经理报告日收益,经理核实并确定4.经理对厨房对外采购支出信息,饭店税收支出信息,员工信息支出统计,再根据月收益形成饭店支出表,最后算出饭店的日收益F.2.7菜单管理菜单管理系统有四个终端,按身份登录不同的身份进入的界面不一样。(1)顾客、服务员终端主要满足如下功能:1.顾客可以在各个类别(特色菜、招牌菜、优惠菜、套餐)下选择自己中意的菜,并查看该菜的介绍,评价,所需时间,还可以选择口味(拉框),如没有,可以在备注里填写。2.顾客可以在总价这项里查询,增添和删除菜,也可以看到自己的消费金额。3.顾客在消费完毕后,可以留下自己的意见和建议。4.服务员可以帮顾客点菜。5.顾客或服务员点菜完毕后,系统会自动将菜单传送到制菜统筹子系统。(2)配菜员终端主要满足如下功能:1.接收制菜统筹子系统分配的需要的配菜的菜名、份数。2.如果菜所需材料没有了,配菜员通过终端选中菜后面的红×(菜单管理系统自动通知服务员终端,服务员再去向顾客解释并询问顾客是否换菜,同时从当天菜单中删除,以免后面顾客继续点)。(3)管理员终端主要满足如下功能:1.根据统计系统反馈的数据,修改菜单、类别。2.根据统计系统反馈的数据,及时跟员工协调。3.将每天的打折信息更新。4.反馈客户的意见及建议。5.为员工分配相应的权限。F.3制菜统筹设计说明F.3.1程序描述现如今大部分饭店之中厨师制菜通常需要一个传菜员来提示他该做哪道菜,提示服务员应该将菜送到哪张桌。不仅时间上和人力物力上都造成了极大的浪费,而且传菜员一旦出错,会造成顾客等待时间过长的不愉快体验,从而给饭店造成损失。所以我们的制菜统筹子系统之中将传菜员的职能转交由计算机来执行,通过算法智能的统筹。计算机不用担心出错,因而顾客的体验都会比较好。不仅如此,制菜统筹系统还充分利用了厨师的一个下手。F.3.2功能制菜统筹子系统:提示厨师正在制作的菜品和下一道菜品,同时提示学徒下一道菜所需的食材种类和分量。还有提示顾客菜品正在制作。通过客人点菜的时间可以优先做菜,有和这道菜一样的菜就可以一块做,然后再通过算法显示下一道菜,前一个桌号总比下一个桌号多一道菜该功能实现了制菜的统筹合理安排制菜顺序。将正在制作的菜状态设置为不可退。提示下一道菜的菜名和具体信息。提示客户退菜或者换一道菜。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)类型:int即将烧的菜(SoonDish)类型:String备注(Remarks)类型:String*号桌(num)类型:intF.3.6算法每个点菜单用结构体存放,并添加时间、是否制作完成字段N个点菜单存放在结构体中使用for循环遍历计算出即将需要做的菜Count()//统计需做菜的份数{intN=5;intj=10;inti=1;stringNO="0";SqlDataReaderdr;//用于读取数据流while(i<=N){stringcmd="SelectCount(making)From[Table]Wheremaking='1'andTable_NO='"+i+"'";//统计需做菜的份数SQL语句dr=help.DataRead(cmd);//执行SQL语句dr.Read();//读数据NO=dr[0].ToString();dr.Close();//关闭读取流stringcmd2="updateTabe_useSetUP='"+NO+"'whereTable_NO='"+i+"'";//更新桌子使用情况j=help.DataWrite(cmd2);//执行SQL语句i++;}}stringcmd3="Selecttable_NOFromTabe_usewhereUP=(Selectmin(UP)FromTabe_use)anduse_ing='1'";//SQL语句SqlDataReaderdr=help.DataRead(cmd3);if(dr.Read())//判断数据流是否为空{stringcmd="Select*from[Table]wheremaking='0'andmaking_time!='0'andtable_NO='"+dr[0].ToString()+"'";//查询未做的菜dr.Close();//关闭读取流dr=help.DataRead(cmd);//执行SQL语句dr.Read();dr.Close();cmd="SelectCount(dish_names)From[Table]wheredish_names='"+label2.Text+"'";//SQL语句SqlDataReaderdrNum2=help.DataRead(cmd);drNum2.Read();//数据流label2.Text=label2.Text+"数量:"+drNum2[0].ToString();//将需做菜的份数传送到配菜员的显示屏上drNum2.Close();}else{dr.Close();stringcmd2="select*from[Table]wheremaking='0'andmaking_time!='0'";//SQL语句SqlDataReaderdr2=help.DataRead(cmd2);if(dr2.Read())//判断数据流中是否有数据{label2.Text=dr2[2].ToString();dr2.Close();cmd2="SelectCount(dish_names)From[Table]wheredish_names='"+label2.Text+"'";SqlDataReaderdrNum2=help.DataRead(cmd2);drNum2.Read();label2.Text=label2.Text+"数量:"+drNum2[0].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表序号字段名数据类型是否主键意义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表序号字段名数据类型是否主键意义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测试计划测试模块测试功能测试指标制菜智能统筹菜品提示功能在数据库中存在待制作的菜品时可以给出正确的提示:厨师当前制作菜品菜名和份数、学徒下一道待制作菜品的配菜信息制菜的统筹功能能够将数据库中存在的待制作的菜品进行智能的安排制作顺序,取代配菜员的工作无食材提示厨师能够通过这个功能向客人发出当前菜品无食材的提示,同时会从菜单中暂时删去这道菜新菜录入能够将新的菜色信息录入到菜单中,并显示出来评分机制对新菜的评分并能够计算平均分F.3.13尚未解决的问题无F.4点菜管理模块程序F.4.1程序描述该模块程序主要实现为顾客展示、推荐以及介绍菜品和实现顾客对菜品的点菜、退菜和催菜操作。顾客只有在输入桌号之后才能点菜,点菜之后才能进行结账和评价F.4.2功能1.开桌:顾客输入自己的桌号。该桌号唯一不可与其他人重复,若重复则给出相应提示。桌号的位数由饭店规模决定默认为两位数,如:01、02。确认桌号后不可修改,如有添桌请求需要用另一台设备另外开桌。2点菜:顾客可以根据需要选择自己喜欢的口味,系统筛选对应口味的菜色同时推送本店特色菜品。界面展示菜名、菜品图片和价格,顾客选择喜欢的菜色可以查看详细介绍,并提交份数。生成点菜信息,在顾客点菜结束后展示,进行最后确认,确认后提交制菜统筹系统。3.退菜:顾客可以退去自己已点的,未上并且未在制作的菜。若在制作或者已上,则提示相关错误。否则从后厨数据库中删去,提示操作成功。4.催菜:顾客可以对已点菜品进行催促,催促会提示后厨加快速度,规定同一小时内后厨只会收到两次催促。但顾客可以尽情催促,单不会传到后厨。F.4.3性能检索业务响应时间<2s;运行响应时间<1s;付款响应时间<10s;。F.4.4输入项桌号(Table_NO)——类型:String;输入方式:手动输入;输入数量:1;口味(Flavor)——类型:String;输入方式:选择;输入数量0~3;菜名(Dish_names)——类型:String;输入方式:选择;输入数量>0;份数(Amount)——类型:int;输入方式:选择;输入数量>0;F.4.5输出项给出对每个输出项的我,包括名称、标识、数据的类型昨格式,数据值的有效范围,输出的形式数量和频度,输出媒体,对输出图形及符号的说明,安全保密条件等。成功提示——类型:弹窗输出;输出频率:触发输出1次;错误提示——类型:弹窗输出;输出频率:触发输出1次菜品信息——类型:界面输出;输出频率:一直输出,触发停止F.4.6算法使用while()语句判断一小时内接受催促的次数。使用if()判断失误操作。使用if()判断退菜。数据的输入输出与sql数据库链接等基本算法通过输入桌号来记录点餐桌号button1_Click{Class.tableNO=textBox1.Text;FrmCustomerfc=newFrmCustomer();fc.Show();this.Hide();}开始点菜,这里点的菜同步更新到服务员的菜单表,也实现了退菜的功能,如果菜正在制作就无法退,若还是要求退需要叫服务员来操作FrmCustomer_Load{this.Text=Class.tableNO.ToString()+"号桌";/*显示菜单*/stringconnStr="DataSource=yao-pc;InitialCatalog=item;IntegratedSecurity=True";与数据建立连接stringstr2="Select*fromMenuList";//读取菜单SqlDataAdapterda=newSqlDataAdapter(str2,conn);DataSetds=newDataSet();//将数据库读取到的数据放到Datasetda.Fill(ds);//利用dataset的fill方法填充到表格中nodes(this.treeView1.Nodes,ds,0);inti=1;stringcmd="Select*from[Table]whereTable_NO='"+Class.tableNO.ToString()+"'";//sql语句SqlDataReaderdr=help.DataRead(cmd);while(dr.Read())//循环遍历数据流{stringID=i.ToString();//保存Id号stringdish_names=dr["dish_names"].ToString();//保存菜名stringprice=dr["price"].ToString();//保存价格stringmaking_time=dr["making_time"].ToString();//保存制作时间ListViewItemlvi=newListViewItem();//首先创建一个ListView项itemlvi.Text=ID;//该项的文本lvi.SubItems.AddRange(newstring[]{dish_names,price,making_time});//添加该项的子项,,也就是第2,3,4列的值listView1.Items.Add(lvi);//最后把创建的项加到ListView控件的项中i++;}dr.Close();}/*创立TreeView结点*/nodes(TreeNodeCollectiontnode,DataSetds,intd){DataViewdview=newDataView(ds.Tables[0]);dview.RowFilter="pcid='"+d+"'";//循环遍历foreach(DataRowViewrowindview){TreeNodenode=newTreeNode();node.Text=row["dish_names"].ToString();tnode.Add(node);nodes(node.Nodes,ds,Int32.Parse(row["cid"].ToString()));}}//退菜操作button4_Click(objectsender,EventArgse){/*退订一道菜与数据库同步*/stringcmd="";if(listView1.SelectedItems.Count>0){cmd="Select*From[Table]whereTable_NO='"+Class.tableNO.ToString()+"'anddish_names='"+labName.Text+"'";//SQL语句SqlDataReaderdr=help.DataRead(cmd);dr.Read();if("1"==dr[4].ToString())//判断菜是否正在制作{dr.Close();MessageBox.Show("厨师正在制作,请稍等若依然要退菜,请叫服务员");}Else//菜未开始制作,执行退菜相关操作{dr.Close();cmd="Deletefrom[Table]whereTable_NO='"+Class.tableNO.ToString()+"'anddish_names='"+labName.Text+"'";inti=help.DataWrite(cmd);listView1.SelectedItems[0].Remove();}}}treeView1_NodeMouseClick{if(e.Node.Parent==null){}else{stringcmd="Select*FromMenu"+"Wheredish_names='"+e.Node.Text+"'";//获取配菜信息SqlDataReaderdr=help.DataReadPicture(cmd);//执行SQL语句并生成包含数据对象的实例dr.Read();labName.Text=e.Node.Text;labPrice.Text=dr[1].ToString();labTime.Text=dr[2].ToString();label1.Text="价格:";label3.Text="元";label4.Text="制作时间约为"}}F.4.7流程逻辑F.4.8接口本模块与其它相关模块间根据桌号和菜名平行方式连接。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数据表,作用是描述桌子的信息Table表序号字段名数据类型是否主键意义1IDintYes就餐号2Table_noVarchar(50)No桌号3Dish_namesVarchar(50)No菜名4Order_timedatetimeNo订餐时间5makingIntNo制作6pricefloatNo图片7Making_timeVarchar(50)No制作时间F.4.10注释设计a、在模块首部注释说明模块名称;b、在各分枝点处注释各个分支的作用;c、各变量的功能、范围、缺省条件等必须加上
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理第一教育课件
- 新能源汽车三电系统培训教材
- 防爆设备专项检查活动方案
- 关于艾滋病问题
- 小学四年级数学几百几十数乘以一位数综合监控模拟题大全附答案
- 体育课前准备活动
- 为公司的企业文化建设进行问卷调查
- 中餐点餐培训课件
- 《通货膨胀与紧缩》课件
- 世界艾滋病日主题宣传日
- 广东省佛山市南海区2024-2025学年六年级上学期11月期中语文试题
- 北京市丰台区2024-2025学年高二上学期11月期中考试生物试题 含解析
- 2024美团外卖服务合同范本
- 选择性必修第一册人教A版2024-2025学年上学期期中高二数学模拟测试卷含答案
- 年度电驱动石油深井钻机市场分析及竞争策略分析报告
- GB/T 20898-2024浸水服
- 房地产销售岗位招聘笔试题及解答(某大型国企)2024年
- 非遗漆扇扇子科普宣传
- GB/T 15822.1-2024无损检测磁粉检测第1部分:总则
- QC080000培训资料课件
- 1.2 点线传情-造型元素之点线面 课件-高中美术人美版(2019)选择性必修1 绘画
评论
0/150
提交评论