餐饮管理系统设计毕业设计.docx
《餐饮管理系统设计毕业设计.docx》由会员分享,可在线阅读,更多相关《餐饮管理系统设计毕业设计.docx(27页珍藏版)》请在冰豆网上搜索。
![餐饮管理系统设计毕业设计.docx](https://file1.bdocx.com/fileroot1/2023-7/11/51149ad5-1776-4339-9aa0-85fc25985388/51149ad5-1776-4339-9aa0-85fc259853881.gif)
餐饮管理系统设计毕业设计
第1章餐饮管理系统背景
1.1研究背景
近几年来,计算机网络、分布技术日趋成熟,随着科技的发展,餐饮业的竞争也越来越激烈。
想在这样竞争激烈的环境下生存,那么就必须运用科学的管理思想与先进的管理方法,使点餐与管理一体化。
这样不仅提高了工作效率,也避免了以前手工作业的麻烦,从而使管理者能够准确、有效地管理餐饮。
因此,餐饮业的管理者更希望从科学的管理中取得竞争的优势,在竞争激烈的商业市场中取胜。
随着社会的发展,人们生活水平的提高,生活方式的变化和东西方饮食文化的融合渗透,餐饮业类别的内涵和外延都发生了巨大的变化[1]。
随着餐饮业的不断发展,餐饮管理系统的内容对于餐饮业的决策者和管理者来说都非常重要。
本系统主要包括桌台显示、消费查询、结账等几大部分。
具有完善的查询,能及时、方便、灵活地进行查询、修改、删除等维护性操作。
满足餐厅每日营业的变动,另外,对于操作用户有一定的管理,并对用户的权限有一定的设置。
图1—1餐饮管理的过程
1.2基于C#开发餐饮管理系统的目标
本系统属于小型的餐饮管理系统,可以有效地对中小型餐厅消费进行管理。
本系统应达到以下目标:
1.系统采用人机交互的方式,界面美观友好,信息查询灵活、方便,数据存储安全可靠。
2.实现对餐厅顾客开台、点菜/加菜、账目查询和结账等操作。
3.对用户输入的数据进行严格的数据检验,尽可能地避免人为错误。
4.实现对消费账目自动结算。
5.实现对消费的历史记录进行查询,支持模糊查询。
6.系统应最大限度地实现易维护性和易操作性。
1.3技术线路
1.调查法
首先对小说网站的设计的现状进行调查、采访和咨询,整理相关的信息和资料,通过这些数据和材料,调查系统需要提供的功能,使得开发的系统更具针对性,能更好的为小说网站的设计服务。
2.文献法
大量阅读关于小说网站的设计和各项技术研究方面的文献,归纳、整理寻找系统需要使用的方法和方式,得出本系统将要做出的突破,找到理论依据,借鉴各项系统,取其理论精华,为撰写论文和整体系统实现提供充沛的资料。
3.比较法
除了从小说网站的设计中寻找资料外也找到大量前人设计的小说网站的设计,寻找它们的相似点及各自的特色,推陈出新,得到该系统的设计目标和设计原则。
4.分析法
分析当前小说网站的设计现状存在的问题和不足,提出设置小说网站的设计,通过信息化方式制定交易流程,同时采用C#窗体设计为根本。
第2章需求分析
2.1可行性分析
技术可行性:
随着技术的发张,计算机的配置越来,有足够的空间可以安装运行平台、数据库和各类编程工具,在编程环境上提供了可靠的支持;在编程人员方面,可以运用以前所学的各种开发软件的计算机知识和管理知识,加上不断的学习,为系统的开发提供了必要的技术保障。
社会可行性:
本系统满足了餐饮业管理者对信息管理化的要求,降低了管理中需要的人力、物力、财力。
系统应用C#+SQL2005技术,实现了一套集桌台显示、开台、点餐和结账四大核心功能的一款餐饮管理系统软件
2.2计算机软硬件配置和开发平台
1.计算机系统硬件配置
主板:
IntelHM65
CPU:
Corei5-2450M
内存:
4GB
硬盘:
东芝MQ01ABD050
显卡:
英特尔IntelGMA3100显卡
声卡:
集成RealtekALC8838声卡
网卡:
集成AR8132百兆网卡
2.计算机系统软件配置
操作系统:
Win7Professional
安装软件:
MicrosoftOffice2010
AdobeAcrobat10.0Professional
InternetExplorer8.0
VS2010+SQL2005
3.编程环境与工具
本系统采用Win7Professional作为操作系统平台。
本系统在开发时选用了稳定性较强的Win7Professional和C#作为开发语言,同时选项用了SQLServer2005数据库,由于这些软件产品都是Microsoft公司的产品,因此彼此之间的兼容性较好,开发出的应用系统稳定性较高。
VS2010具有可视化的开发环境,可以快速完成系统的开发,内部集成的数据访问通道,使得可以轻松方便的对数据库进行管理。
数据库采用MicrosoftSQLServer2005,要据我们的系统要求,采用它完全可适合我们的工作需求,并且它所支持的类型十分丰富,维护简便,费用比较低,对使用人员的素质要求不是很高,容易升级。
第3章系统的体系结构
3.1系统的功能结构
图3—1餐饮管理体统的功能结构
3.2系统功能预览及业务流程
餐饮管理系统由多个窗体组成,下面仅列出几个典型窗体。
主窗体模块运行结果如图3—1所示,主要功能是链接系统功能菜单、显示所有桌台和显示系统当前状态。
点菜模块运行结果如图3—2所示,主要功能是为顾客点菜。
开台模块运行效果如图3—3所示,主要功能是实现对指定的桌台进行开台操作。
结账模块运行效果如图3—4所示,功能是对指定的桌台进行结账操作,同时,清空结账桌台的所有消费信息。
图3—1主窗体模块运行结果 图3—2点菜模块运行结果
图3—3开台模块运行结果 图3—4结账模块运行结果
餐饮管理系统的业务流程图如图3—5所示。
图3—5餐饮管理系统流程图
3.3数据库的选择与设计
SQLServer2005是Microsoft公司推出的基于Client/Server模式的新一代大型关系数据库管理系统[2]。
它功能强大、操作简便,广泛应用于数据库后台系统。
它在电子商务、数据仓库和数据库解决方案等应用中起着重要的核心作用。
在开发餐饮管理系统之前,分析了该系统的数据量。
由于系统管理餐饮方面的数据较多,商品信息、消费信息以及账目清单会占用较大的空间,因此选择MicrosoftSQLServer数据库存储这些信息,数据库命名为db_MrCy,在数据库中创建了6个数据表用于存储不同的信息。
图3—6数据库设计
1.数据库概念设计
餐饮管理系统的数据库主要用于存储餐饮管理系统中的数据,由于餐饮管理系统的数据量很大,所以选择了MicrosoftSQLServer数据库,数据库中建立一个商品信息表,用于存储所有的商品信息。
商品信息实体E—R图如图3—7所示。
由于商品的种类很多,因此需要对商品进行分类,这样就可以对商品分门别类地进行储存,在查询时可以根据商品类别进行查询。
在数据库中建立一个商品类别信息表,用于存储商品的所有类别信息。
商品类别信息实体E—R图3—8如图所示。
图3—7商品信息实体E—R图图3—8商品类别信息实体E—R图
当顾客进行消费时,顾客会根据自己的需求消费不同的商品,系统将顾客消费的所有信息存储到数据表中,以便顾客结账时查询,在数据库中建立一个顾客消费信息表用于存储顾客的消费记录。
顾客消费信息实体E—R图如图3—9所示。
餐厅中会有多个桌台供顾客选择,每个桌台会有不同的信息。
例如,大厅—01号桌台被顾客使用,顾客人数为5人等,方便操作员对桌台的操作,在数据库中建立一个桌台信息表用于存储所有桌台的详细信息。
桌台信息实体E—R图如图所示。
为了对系统进行不同的管理,需要为系统建立管理用户。
这些用户通过登录模块登录系统,登录成功之后会根据不同的权限对不同的功能模块进行管理,在数据库中建立一个用户信息表,用于存储登录用户信息。
用户信息实体E—R图如图3—11所示。
图3—9顾客消费信息实体E—R图图3—10桌台信息实体E—R图
在餐饮行业中,餐厅服务员起着极其重要的作用,但是由于服务人员数目众多,如果不进行相应的信息记录,可能管理起来会非常困难。
因此,需要对服务人员的详细信息进行记录。
在数据库中建立一个职员信息表用于存储所有服务人员的信息。
职员信息实体E—R图如图3—12所示
图3—11用户信息实体E—R图图3—12职员信息实体E—R图
第4章系统详细设计与实现
4.1登陆模块技术及实现过程
为了使系统的安全性得到保障,大多数系统都开发登录模块。
只有通过登录模块,才能对登录用户进行验证,只有系统的合法用户才可以进入系统的主界面。
这也是设计管理系统软件之前必须考虑的问题,整个登录模块的实现过程非常简单。
登录模块运行结果如图4—1所示,关键代码见附录。
图4—1餐饮管理系统的登陆页面
运行本系统的登录模块,用户只需输入用户名和密码,单击“登录”按钮进行验证。
登录模块以登录的用户名和密码作为搜索条件,在数据库中进行查询。
使用SqlDataReader对象的HasRows属性判断登录用户名和密码是否正确,下面介绍SqlDataReader对象的HasRows属性。
HasRows属性获取一个值,该值指示SqlDataReader是否包含一行或多行[3]。
语法如下:
publicoverrideboolHasRows{get;}
属性值:
如果SqlDataReader包含一行或多行,则为true;否则为false。
例如,验证登录用户名和密码是否正确,可以通过以下代码实现:
SqlConnectionconn=BaseClass.DBConn.CyCon();
conn.Open();
SqlCommandcmd=newSqlCommand("select*fromtb_UserwhereUserName='"+txtName.Text+"'andUserPwd='"
+txtPwd.Text+"'",conn);
SqlDataReadersdr=cmd.ExecuteReader();
sdr.Read();
if(sdr.HasRows)
{
MessageBox.Show("登录成功","警告",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
4.2主窗体设计
在餐饮系统中主窗体模块是由3部分组成的。
第一部分是位于主窗体模块上端的系统菜单,主要实现链接系统功能菜单。
第二部分是位于主窗体模块中间的桌台显示,主要用于显示餐厅中所有的桌台情况,包括桌台是否已使用、已使用桌台的客人数量等信息,方便了用户对桌台的管理。
第三部分是位于主窗体模块下端的状态栏,主要用于显示系统当前状态信息。
主窗体模块运行结果如图4—2所示。
图4—2主窗体界面
双击某个桌台,弹出“桌台基本信息”窗体,用于显示此桌台的详细信息,如图4—3所示。
在某个桌台上单击鼠标右键,在弹出的快捷菜单中用户可以选择“开台”、“取消开台”、“点/加菜”、“消费查询”和“结账”命令,如图4—4所示。
图4—3桌台基本信息界面图4—4右击事件
开发主窗体模块中的桌台显示时,主要是通过ListView控件实现的,系统首先从数据库中检索出每个桌台的状态,然后根据不同的状态通过ListView控件的Items属性中的Add方法向控件中添加项目集合[4],下面进行详细介绍。
(1)Items属性
功能:
此属性获取包含控件中所有项的集合。
语法如下:
publicListViewItemCollectionItems{get;}
属性值:
ListView.ListViewItemCollection包含ListView控件中所有的项。
例如:
privatevoidbutton9_Click(objectsender,EventArgse)
{
SqlConnectioncon=newSqlConnection("server=.;uid=sa;pwd=;database=zhy");//链接数据库
con.Open();//打开数据库
stringstr="select*fromstudentwhereid='"+strid+"'";//建立SQL语句
SqlCommandcom=newSqlCommand(str,con);//执行SQL语句
SqlDataReaderdr=com.ExecuteReader();//创建SqlDataReader对象
while(dr.Read())
{
ListViewItemlt=newListViewItem(dr.GetValue(0).ToString());
lt.SubItems.Add(dr.GetValue
(1).ToString());
lt.SubItems.Add(dr.GetValue
(2).ToString());
this.listView1.Items.Add(lt);//添加项目
}
dr.Close();
con.Close();
}
4.3开台模块设计及部分代码
在某个桌台上选择其右键菜单中的“开台”命令,将根据该桌台的名称弹出相应的“开台单”窗体,在“开台单”窗体中用户可以对桌台编号、账单日期、顾客名称、用餐人数、服务员和备注进行录入或更改如图4—5所示。
数据录入或修改完毕后,单击“保存”按钮完成开台单的操作[5]。
在开发此模块时,主要用到了数据库的更新技术,下面进行详细介绍。
图4—5开台单界面
代码[6]
privatevoidfrmOpen_Load(objectsender,EventArgse)
{
conn=BaseClass.DBConn.CyCon();//数据库连接
conn.Open();//打开连接
SqlCommandcmd=newSqlCommand("select*fromtb_Room",conn);
SqlDataReadersdr=cmd.ExecuteReader();
while(sdr.Read())
{
cbNum.Items.Add(sdr["RoomName"].ToString().Trim());//显示所有桌台信息
}
cbNum.SelectedItem=name.Trim();//设置选中项
sdr.Close();
cmd=newSqlCommand("select*fromtb_Waiter",conn);
sdr=cmd.ExecuteReader();
while(sdr.Read())
{cbWaiter.Items.Add(sdr["WaiterName"].ToString().Trim());//显示所有职员信息
}
cbWaiter.SelectedIndex=0;//设置选中第一项
sdr.Close();
4.4点菜模块设计及部分代码
为顾客选定好桌台,并且开台之后,会根据顾客的需要点菜或购买茶水烟酒之类的消费品,在点菜模块中会显示餐厅特有的一些菜系,用户可以对不同的菜系进行选择。
点菜模块运行结果如图4—6所示。
关键代码见附录。
图4—6点餐界面
4.5结账模块设计及部分代码
本系统的结账模块,首先从数据库中将顾客消费的所有项目检索出来显示到DataGridView控件上[7],以方便管理员校对消费金额,然后通过程序计算后将顾客消费的总额显示出来,当顾客结账时,输入顾客支付的金额,会出现相应的余额,以方便管理员为顾客退还余额。
结账模块运行结果如图4—7所示。
图4—7结账模块运行界面
第5章系统测试
5.1系统测试计划
在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程[8]。
目前测试文档关于测试的内容主要是测试的时间计划。
而这种时间划分也是非常粗略的,而且没有依据。
目前只是按照个人直观、经验等方法来判断测试时间。
因此,这类测试计划的随意性太大,粒度太粗,不便于管理。
目前的测试是为了测试而测试,没有规划性。
如果已经知道了产品已具有的功能,可以通过测试检验是否每个功能都能正常使用。
5.2系统测试工具
它的任务是尽可能彻底地检查出程序中的错误,提高软件系统的可靠性,其目的是检验系"做得怎样"。
部分测试类型是可以用测试工具来实现的。
比如:
边界测试、非法测试、功能测试、性能测试等。
但自一般来讲,测试自动化在整个测试过程中只能占到30%左右。
但测试人员对测试工具不熟悉,目前只能先以手工测试为主,继续探讨自动化测试的可操作性。
黑盒测试:
测试方法主要有等价类划分、边值分析、因—果图、错误推测等,主要用于软件确认测试。
黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。
“黑盒”法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。
“黑盒”法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。
白盒测试:
“白盒”法是穷举路径测试,在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。
它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。
“白盒”法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。
在任何软件系统的开发过程中,尤其是在进行大型软件系统的开发中,任何一个编程人员都不可避免地会产生错误。
为了尽可能地发现并改正系统设计中的错误,减少错误造成的损失,保证系统开发的质量,需要进行系统的测试。
5.3系统测试效果
1.根据上面的系统入口测试用例,其测试效果。
登录时,比如输入用户名和密码否则提示请输入用户名,假如用户名和密码输入为空或者错误一样给出提示。
如图5—1、5—2所示。
图5—1登录不输入
图5—2登录输入错误的用户名密码
2.修改密码是输入不能为空,而且旧密码输入必须正确,否则给出提示,如果不知道旧密码,便无法修改密码,这样是避免有人盗取他人的账号,并且2次输入的新密码必须一致,这样能够让用户确认好新密码,不易让用户想的密码与键盘输入不一致,而给用户带来不便,如图5—3至5—5所示。
图5—3密码修改页面图5—4密码输入不一致页面
图5—5密码修改为空运行页面
结论
餐饮管理系统是餐饮企业不可缺少的一部分,但一直以来人们使用的餐饮管理系统均是以人为主体,需要很多的人力、物力和财力等,而且效率不是很高,有时甚至应为某些人为地原因造成很大的损失,以致餐饮管理工作既繁琐又不利于分析企业的经营状况,作为计算机应用的一部分,使用计算机对餐饮信息进行管理,具有人工管理所无法比拟的优点。
所以鉴于此,采用当前流行的应用程序开发技术,充分发挥计算机的优势,让更多的餐饮企业管理者体会到这种快捷的处理方式,处理流程上更加合理,极大地减轻了管理人员以及餐饮服务人员的工作强度。
所以这套餐饮管理系统系统是适应发展的需要的。
餐饮管理系统的设计成功,无疑为中小型餐饮企业管理提供方便,同时服务人员的工作量也减轻不少。
统计结账快速、安全保密性好、可靠性高、存储量大、寿命长、成本低等。
这些优点能够极大地提高餐饮管理的效率,增强企业的竞争力,同时也是企业的科学化、正规化管理,与世界接轨的重要条件。
参考文献
[1]王成福,中国餐饮业的发展现状及趋势分析[J],江苏商论,2007,(6):
35-36
[2]刘辉,零基础SQLServer2005[M],机械工业出版社,(2007):
51-56
[3]王路,VisualC#2005开发技术实例讲解[M],北京:
电子工业出版,(2005):
176-182
[4]梁冰,吕双,王小科,C#程序开发范例宝典(第2版)[M],北京:
人民邮电出版社,(2009):
16-169
[5]孙维煜,C#案例开发[M],北京:
中国水利水电出版社,(2005):
392-398
[6]郑宇军,C#2.0程序设计教程[M],北京:
清华大学出版社,(2008):
42-44
[7]孙卫琴,C#网络编程精解[M],北京:
电子工业出版社,(2007):
56-60
[8]张小松,软件测试[M],北京:
机械工业出版社,(2006):
42-58
附录
1.登陆模块代码
privatevoidbtnSubmit_Click(objectsender,EventArgse)
{
if(txtName.Text=="")//判断用户名是否为空
{
MessageBox.Show("请输入用户名","警告",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
else
{
if(txtPwd.Text=="")//判断密码是否为空
{
MessageBox.Show("请输入密码","警告",MessageBoxButtons.OK,Messan.Warning);
}
else
{
SqlConnectionconn=BaseClass.DBConn.CyCon();//连接数据库
conn.Open();//打开数据库
SqlCommandcmd=newSqlCommand("select*fromtb_UserwhereUserName='"+txtName.Text+"'
andUserPwd='"+txtPwd.Text+"'",conn);
SqlDataReadersdr=cmd.ExecuteReader();//创建SqlDataReader对象
sdr.Read();//读取
if(sdr.HasRows)//验证用户名和密码
{
sdr.Close();
cmd=newSqlCommand("select*fromtb_UserwhereUserName='"+txtName.Text+"'",conn);
SqlDataReadersdr1=cmd.ExecuteReader();
sdr1.Read();
stringUserPower=sdr1["power"].ToString().Trim();
conn.Close();//关闭链接
frmMainmain=newfrmMain();
main.power=UserPower;
main.Names=txtName.Text;
main.Times=DateTime.Now.ToShortDateS