饭店点餐管理系统的分析与设计.docx
- 文档编号:14443894
- 上传时间:2023-06-23
- 格式:DOCX
- 页数:31
- 大小:336.02KB
饭店点餐管理系统的分析与设计.docx
《饭店点餐管理系统的分析与设计.docx》由会员分享,可在线阅读,更多相关《饭店点餐管理系统的分析与设计.docx(31页珍藏版)》请在冰点文库上搜索。
饭店点餐管理系统的分析与设计
软件工程详细设计说明书文档
饭店点餐管理系统的分析与设计
学院名称
信电工程学院
专业名称
计算机科学与技术
所属学期
2015-2016
(一)
小组名单
班级
学号
姓名
任课教师
2015年12月24日
F.1引言
F.1.1编写目的
在前一阶段《概要设计说明书》中,已解决了实现该系统需求的程序模块设计问题。
包括如何把该系统划分为若干个模块、决定各个模块之间的接口、模块之间传递的信息,以及数据结构、数据结构的设计等。
在以下详细设计报告中将对本阶段中对系统所做的所有详细设计进行说明。
在本阶段中,确定应该如何具体的实现所要求的系统,从而在编码阶段可以把这个描述直接翻译成用具体的程序语言书写的程序。
主要工作有:
根据在《需求分析说明书》中所描述的功能、流程,并依照《概要设计说明书》所确定的处理流程、总体结构和运行模块设计,设计完成程序系统的结构,完成制菜统筹模块、点菜管理模块、评价管理模块的程序描述,其中包括各模块的设计说明、程序描述、功能、性能、输入、输出、算法、流程逻辑、接口等。
本说明书的预期读者为系统设计人员、软件开发人员、软件测试人员和项目评审人员。
F.1.2背景
为了更好的满足广大消费者的多元化消费需求和不同层次的消费水平,提高饭店的服务管理质量,提高饭店工作人员的工作效率,我开发小组在多方面考察、分析、研究现有饭店点菜管理系统的基础之上,以提高消费者的满意程度及商家的服务水平和市场竞争力为目标,致力于开发出一套可视化程度高、功能全面、集分析管理于一体的饭店点餐系统。
F.1.3定义
SQLServer:
系统服务器所使用的数据库管理系统。
SQL:
一种用于访问查询数据库的语言
事务流:
数据进入模块后可能有多种路径进行处理
主键:
数据库表中的关键域,值互不相同
外部主键:
数据库表中与其他表主键关联的域
Vs2013:
MicrosoftVisualStudio(简称VS)是美国微软公司的开发工具包系列产品。
C#:
C#是微软公司发布的一种面向对象的、运行于.NETFramework之上的高级程序设计语言。
F.1.4参考资料
《XX文库》
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功能
制菜统筹子系统:
a.提示厨师正在制作的菜品和下一道菜品,同时提示学徒下一道菜所需的食材种类和分量。
还有提示顾客菜品正在制作。
b.通过客人点菜的时间可以优先做菜,有和这道菜一样的菜就可以一块做,然后再通过算法显示下一道菜,前一个桌号总比下一个桌号多一道菜该功能实现了制菜的统筹合理安排制菜顺序。
c.将正在制作的菜状态设置为不可退。
d.提示下一道菜的菜名和具体信息。
e.提示客户退菜或者换一道菜。
F.3.3性能
计算时间<20s;
传送时间<3s;
F.3.4输入项
菜单信息
菜名(Dish)----类型:
String
份数(number)----类型:
Int
桌号(TableNumber)----类型:
Int
备注(Remarks)----类型:
String
时间(Time)----类型:
time;
是否完成(IsFinish)----类型:
boolean;默认:
false
F.3.5输出项
配菜名(DishesName)----类型:
String
配菜份数(DishesNumber)----类型:
int
即将烧的菜(SoonDish)----类型:
String
备注(Remarks)----类型:
String
*号桌(num)----类型:
int
F.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表
序号
字段名
数据类型
是否主键
意义
1
Table_NO
Varchar(50)
Yes
桌号
2
Dish_names
Varchar(50)
No
菜名
3
Price
Decimal(18,0)
No
价格
Garnish数据表,作用是描述配菜的信息
Garnish表
序号
字段名
数据类型
是否主键
意义
1
Garnish_Number
Varchar(50)
Yes
配菜号
2
Dish_names
Varchar(50)
No
菜名
3
Food_Name
Varchar(50)
No
食材名
4
Garnish_Amount
float
No
数量
Menu数据表,作用是描述菜单的信息
Menu表
序号
字段名
数据类型
是否主键
意义
1
Dish_names
Varchar(50)
Yes
菜名
2
Prcie
Decimal(18,0)
No
价格
3
Making_time
Varchar(50)
No
制作时间
4
Picture
image
No
图片
MenuList数据表,作用是描述菜单类别的信息
MenuList表
序号
字段名
数据类型
是否主键
意义
1
Cid
int
Yes
菜号
2
Dish_names
Char(20)
No
菜名
3
pcid
int
No
类别
Stock数据表,作用是描述库存的信息
Stock表
序号
字段名
数据类型
是否主键
意义
1
Food_Name
Varchar(50)
Yes
食材名
2
Stock_amount
float
No
库存量
3
Stock_price
Deciamal(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();//将数据库读取到的数据放到Dataset
da.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项item
lvi.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语句
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 饭店 管理 系统 分析 设计