餐饮信息管理系统设计及实现.docx
《餐饮信息管理系统设计及实现.docx》由会员分享,可在线阅读,更多相关《餐饮信息管理系统设计及实现.docx(37页珍藏版)》请在冰豆网上搜索。
餐饮信息管理系统设计及实现
第一章餐饮信息管理系统的开发背景
1.1开发背景
传统的餐饮管理现在已经很难应对当今社会对餐饮业的管理要求,它及现在的基于计算机技术发展起来的餐饮信息管理系统对比,有以下几大不同:
便捷性方面:
传统的人工对餐饮信息进行管理,如:
顾客信息管理,菜单信息管理和订餐信息的管理,都是很繁琐的过程,其中的任何一步过程都要浪费大量的时间,而随着计算机技术的发展,这些原本繁琐的问题都会变得轻而易举。
安全性方面:
传统的纸质记录方式查询起来很麻烦,而且保密性很差,并且容易磨损丢失,对于会员余额的管理是非常不利的。
但如果采用的是电子文档的方式进行数据的保存,这一切都变得非常简便,你可以方便的对数据信息进行备份查询,并且数据的安全性可以得到最大程度的保证。
准确性方面:
传统的人工记账容易出错,如果采用这种方式来处理现在的含有打折信息的消费结算会使得工作量很大,如果计算出错将严重影响自己的声誉。
而如果使用软件系统,这些问题都将不会出现,计算机的错误率几乎为零。
鉴于以上传统的人工管理方式的种种缺陷,我设计了方便中小级别餐饮企业使用的应用程序,通过它,管理者可以基本解决以上所遇到的种种问题,并且更加科学的对老客户进行打折,而且添加了主顾权限的不同设计使得它更加方便雇主对雇员的管理及监督。
第二章系统定义及系统需求
2.1系统定义
计算机技术产生以后,迅速在管理领域得到了广泛的应用。
20世纪60年代,美国经营管理协会及其事业部第一次提出了建立管理信息系统的设想,即建立一个有效的信息系统,使得各级管理部门都能了解本单位的一切有关经营活动,为各级决策人员提供所需要的信息。
对于信息管理系统的定义,目前还没有一个统一的认识。
由于餐饮管理系统是基于C/S模式,本文更倾向于采纳下述定义:
餐饮信息管理系统是通过对整个餐饮服务流程的管理,实现业务的整体优化,提高企业运行控制和外部交易过程的效率的管理工具。
2.2系统需求分析
现在的管理系统不仅要有漂亮的用户界面,更要有严谨的规划,注重每一个细小的环节。
这样才能使得在电子交易时避免不必要错误发生。
本系统的设计及实施迎合了二十一世纪经济高速发展、人们的生活节奏日益加快以及现代餐饮业越来越发达和便捷这一现状。
它将极大地方便食客的就餐,同时也有利于我们的管理和服务。
同时,我们的餐饮信息管理系统还能帮助餐厅降低错误率,扩大营业范围,增加知名度等。
为了使系统更加人性化,便于管理员管理,此系统的用户将分为两种类型,一个是针对员工的餐饮管理系统,另一个是针对管理员(店主)的餐饮管理系统。
员工使用本餐饮信息管理系统应可以实现以下功能:
1.添加修改查询客户会员信息(修改客户信息需客户确认)
2.查询菜单
3.添加查询预定信息,为老顾客打折
4.客户可以在自己的会员账户里充值
5.顾客可以用现金买单也可以从会员账户里扣取
管理员使用本餐饮信息管理系统应可以实现以下功能:
1.添加修改查询客户会员信息(修改客户信息需客户确认)
2.添加修改查询菜单信息,最好能看到菜品图片
3.添加查询预定信息,为老顾客打折
4.客户可以在自己的会员账户里充值
5.顾客可以用现金买单也可以从会员账户里扣取
6.设定具体的打折方法
7.添加职员信息,权限也可以定为管理员。
8.可以查询使用者的现金收款金额
除了实现以上功能外,本系统还需要方便用户地使用,使得用户可以很快地熟练掌握,从而可以让用户快速的投入工作。
并且要避免逻辑错误的出现。
第三章系统总体设计
3.1系统功能模块的划分
根据以上需求,餐饮信息管理系统功能被划分为以下模块,如图3.1所示:
图3.1餐饮信息管理系统功能模块图
系统登录退出模块:
本模块是被用于用户登录,注销和退出。
模块根据用户的不同类型赋予用户不同的管理权限。
低等级的用户不可访问高等级用户的个别功能,而高等级用户可以使用低等级用户的所有系统功能。
客户信息管理模块:
本模块将餐饮企业松散的客户资源加以整合,通过标准化的管理操作,将客户资料加以收集。
用户使用本模块可以方便的查询客户的所有资料和客户消费信息。
并且特意添加了图像模块,使得用户的图像信息加以保留,方便使用者的查询和记忆,当客户再次光临时,服务人员可以直接认出客户,这将使得客户感到无微不至的关怀,提升餐厅的品牌形象。
客户的资料变更需经客户的确认,以避免出现因失误操作导致的客户信息流失。
菜单信息管理模块:
本模块将餐厅的菜品信息通过标准化的管理操作加以整合,使得菜品的价格、配料、功效和图片可以完全呈现在客户面前,使得客户可以方便地选择自己想要的食物。
本模块的分权限设计将限制普通员工对菜单信息加以修改,以防止菜单价格被恶意修改,以此保证餐厅正常可靠的运营。
订餐信息管理模块:
通过订餐模块使得传统餐饮订餐过程变得轻松方便,订餐信息管理模块会在客户订餐的同时核对客户所预定的餐桌的使用情况,避免传统订餐易出现的预定重合问题。
并且本模块在客户订餐的同时会给出已预定的菜品价格,帮助客户开心合理地消费。
模块中包含的打折服务是本模块的一大特色。
它将参考客户以往的消费情况和管理员设定的折扣程度对客户进行打折服务。
而不是传统餐饮打折中的没有规律和凭据以询。
后台的厨房通过本系统可以清楚地知道客户预定的菜品,这样就节省了大量用于菜品核对的时间,提高了厨房的效率,缩短了厨房上菜的时间。
减少了不必要的人力物力财力资源的消耗,降低餐厅的运营成本,使餐厅以更好性价比服务于消费者,消费者可以得到更好的消费体验。
充值结算管理模块:
通过此模块,用户可以方便的为客户提供充值结算服务,充值收取的现金将会计入用户的收款现金中,便于管理员结算时核对收款金额。
结算方式分为两种,一种是现金结算,一种是账户余额结算,现金结算的收款金额会计入用户的收款现金,而账户余额结算的金额会从客户的账户里扣除。
折扣信息管理模块:
本模块只限于管理员使用,通过它可以设定为客户打折时用到的折扣程度
员工信息管理模块:
本模块只限于管理员使用,管理员使用它,可以添加删除用户。
用户类型分为店长(管理员)和职员。
管理员删除用户时,如果要删除的是普通职员,系统将直接执行命令,如果要删除的是管理员账户,系统会先查看剩下的管理员账户数量,最少保留一个管理员账户,以便下次的登录。
如果删除的用户是管理员本人,则在删除账户后,系统将会要求使用者重新登录。
3.2管理员权限模块划分
管理员权限划分如图3.2所示:
图3.2店长权限模块图
管理员使用本系统将能使用系统的所有功能。
3.3员工权限模块划分
员工权限划分如图3.3所示:
图3.3雇员权限模块图
员工使用本系统可以使用除了菜单信息编辑、折扣信息管理模块和员工信息管理模块之外的所有功能。
3.4系统流程分析
系统流程分析如图3.4所示:
图3.4系统流程分析
流程图简介:
员工登录系统后为客户添加基本信息,客户可以根据需要在开通的账户里充值(增加用户的收款金额)。
客户通过餐饮信息管理系统进行订餐(老用户在此环节中可能会享受打折服务)。
客户用完餐后来到服务台买单,用户可以选择使用现金或者从用户余额里扣除,支付成功会增加客户的已消费金额。
若余额不足,系统将会提示,那么客户只能使用现金支付。
使用现金支付的话会增加用户的收款金额。
管理员登录的话可以使用员工的所有功能,而且可以设定为客户打折的折扣程度和添加菜单,以及管理员工账户。
3.5数据库设计
3.5.1数据库规划
根据以上模块划分图分析,针对餐饮信息管理系统,分别对用户、客户、食谱、预定、折扣这几个实体进行详细的调研和分析。
数据库的设计采用一库多表式设计。
即设计了一个数据库。
把每个使用到的独立的对象设计为独立的应用实体。
3.5.2E-R图
图3.5用户E-R图
主要存储一些用户信息,如用户的账号、密码和类型地点等等,主要用于用户登录,添加客户和添加预定时会使用到用户信息。
图3.6客户E-R图
主要存储一些客户信息,如客户的账号、密码、联系方式和消费情况等等,主要用于客户订餐、充值和结算,使用于添加预定。
图3.7食谱E-R图
主要存储一些食谱信息,如食谱的名称、价格和照片等等,主要用于客户订餐,使用于添加预定。
图3.8预定E-R图
主要存储一些预定信息,如客户的账号、预定的时间、桌号和菜单等等,主要用于记录客户的预定信息,会使用到用户、客户、菜单和折扣信息。
图3.9折扣E-R图
存储管理员(店主)设定的打折信息,用来计算打折后的应付金额,使用在添加预定时打折。
3.5.3数据表的设计
1、user(用户表)
表3.1user
序号
字段名称
字段描述
字段类型
长度
备注
1
user_id
用户编号
char
20
不允许空
2
Pwd
用户密码
char
20
不允许空
3
Style
用户类型
nchar
20
不允许空
4
Id
用户身份证号
char
20
不允许空
5
Name
用户姓名
char
20
不允许空
6
Tel
用户电话
Char
20
不允许空
7
Money
收款金额
money
允许空
用户表主要用于存储一些用户信息,如用户的账号、密码和类型地点等等,主要用于用户登录,添加客户和添加预定时会使用到用户信息来记录经手的用户,字段money用于记录用户的收款金额,便于结算时对收款现金的核对。
2、customer(客户表)
表3.2customer
序号
字段名称
字段描述
字段类型
长度
备注
1
Name
客户姓名
char
20
不允许空
2
Id
客户编号
nchar
20
不允许空
3
Address
客户地址
char
50
不允许空
4
Birthday
客户生日
nchar
20
不允许空
5
Pwd
客户密码
nchar
20
不允许空
6
Addtime
添加时间
nchar
20
不允许空
7
Money
账户余额
money
不允许空
8
usedmoney
已用金额
money
不允许空
9
Photo
客户照片
image
允许空
10
Tel
客户电话
nchar
20
允许空
11
mobilephone
客户手机
nchar
20
不允许空
12
Userid
用户编号
nchar
10
不允许空
客户表主要用于存储一些客户信息,如客户的账号、密码、联系方式和消费情况等等,主要用于客户订餐、充值和结算,字段money用于储存账户余额,在使用充值和账户余额支付时会使用到它。
字段usedmoney用于记录客户的消费情况,为客户打折时会使用到它。
3、food(食谱表)
表3.3food
序号
字段名称
字段描述
字段类型
长度
备注
1
Name
食谱名称
nchar
20
不允许空
2
Price
价格
money
不允许空
3
Photo
食谱照片
image
允许空
4
Efficacy
食谱功效
nchar
50
允许空
5
Formula
食谱配料
nchar
50
允许空
食谱表主要用于存储一些食谱信息,如食谱的名称、价格和照片等等,主要用于客户订餐,使用于添加预定。
字段Price记录的是食物的价格。
当客户预定餐点时,系统使用它来算费用。
4、YuDing(预定表)
表3.4YuDing
序号
字段名称
字段描述
字段类型
长度
备注
1
Tableid
桌号
nchar
10
不允许空
2
Date
日期
nchar
20
不允许空
3
Time
时间
nchar
10
不允许空
4
Name
客户姓名
nchar
10
不允许空
5
customerid
客户身份证号
nchar
10
不允许空
6
Userid
用户编号
nchar
10
不允许空
7
Food
预定餐点
nvarchar
MAX
不允许空
8
Money
消费金额
money
不允许空
预定表主要用于存储一些预定信息,如客户的账号、预定的时间、桌号和菜单等等,主要用于记录客户的预定信息,会使用到用户、客户、菜单和折扣信息。
当系统预定餐点时,会从其他各表中调出需要的信息,经过计算和处理后,将最终信息储存到YuDing表,该表和其它各表都有紧密的联系。
5、discount(折扣表)
表3.5discount
序号
字段名称
字段描述
字段类型
长度
备注
1
usedmoney
已消费金额
char
10
不允许空
2
Discount
折扣程度
char
10
不允许空
折扣表用于存储管理员(店主)设定的打折信息,用来计算打折后的应付金额,使用在添加预定时打折。
当客户预定餐点时,打折服务的折扣程度就是参照该表。
第四章系统详细设计
4.1数据库
4.1.1数据库的链接
为了便于用户使用和维护,我们将及数据库的连接,单独写出来并进行编译,这样系统在新的环境使用时,只需改动一处数据库连接代码,即可立即使用,连接关键代码如下:
PublicSharedconstrAsString="DataSource=WWW-3C702F2C1C8\SQLEXPRESS;InitialCatalog=dcdatebase;IntegratedSecurity=True"
其中PublicSharedconstrAsString="DataSource=WWW-3C702F2C1C8\SQLEXPRESS;InitialCatalog=dcdatebase;IntegratedSecurity=True"是数据库连接语句,是计算机名。
4.1.2Is_SQL_Cmd方法
方法Is_SQL_Cmd是判断数据是否存在,当系统登录和添加客户需要验证数据库中是否存在提交的数据时会用到它。
其主要代码如下:
PublicFunctionIs_SQL_Cmd(ByValcmdstrAsString)AsBoolean
SqlConn=NewSqlConnection(constr)
SqlConn.Open()
SqlCmd=NewSqlCommand(cmdstr,SqlConn)
Try
SqlDr=SqlCmd.ExecuteReader()
IfSqlDr.HasRowsThen
ReturnTrue
Else
ReturnFalse
EndIf
CatchexAsException
ReturnFalse
Finally
SqlConn.Close()
EndTry
EndFunction
4.1.3SQL_Ada方法
方法SQL_Ada是为了查询数据库,并将查询到的结果存放在内存中的datatable表中,餐饮信息管理系统中使用到的组件DataGridView再从datatable表中得到数据。
PublicFunctionSQL_Ada(ByValadastrAsString)AsDataTable
SqlConn=NewSqlConnection(constr)
SqlConn.Open()
SqlAda=NewSqlDataAdapter(adastr,SqlConn)
ds=NewDataSet
Try
SqlAda.Fill(ds)
Returnds.Tables(0)
CatchexAsException
ReturnNewDataTable
Finally
SqlConn.Close()
EndTry
EndFunction
4.1.4ExecCmd过程
ExecCmd是为系统中的添加、删除、修改服务,系统里的客户、菜单、折扣和员工的添加、删除和修改都用到了该过程。
PublicSubExecCmd(ByValcmdstrAsString)
SqlConn=NewSqlConnection(constr)
SqlConn.Open()
SqlCmd=NewSqlCommand(cmdstr,SqlConn)
SqlCmd.ExecuteNonQuery()
EndSub
4.2系统的登录及注销
4.2.1用户登陆模块的实现
图4.1用户登录
用户登陆模块是防止非法用户登陆的第一道防线,通过它可以保护后台数据库的安全性,当用户要进行系统操作时,首先要进入的就是身份验证界面,只有在密码正确的情况下才能进行以后的操作,如果输入的密码不正确,则不能进行登录对系统进行操作。
如果用户以职员的身份进入系统,则只能进行顾客信息管理、菜单信息查询、预定信息管理和充值结算管理,而菜单信息管理、折扣设定、员工管理这些功能将被屏蔽,如果用户以管理员(店长)身份登录,系统的所有功能都将可以使用。
以下是“登录”按钮的代码:
cmdstr="select*from[user]where[user_id]='"+TextBox1.Text+"'and[pwd]='"+TextBox2.Text+"'and[style]='"+ComboBox1.Text+"'"
Try
Ifsqlobject.Is_SQL_Cmd(cmdstr)Then
main.m_Login=True
......//类似部分省略
Me.Close()
Else
MsgBox("请填写正确的用户名、密码和用户类型!
")
EndIf
CatchexAsException
main.OPErr.WriteErr(ex)
EndTry
系统先进行数据库操作,判断是否存在用户名、用户密码和用户类型完全符合要求的数据,如果存在,则说明用户可以登录,同时把登录的用户类型和用户名告诉需要用到用户类型和用户名数据的模块如系统主界面、充值模块和买单模块等等。
4.2.2用户注销模块的实现
用户注销模块的代码如下:
PrivateSub注销ToolStripMenuItem_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)Handles注销ToolStripMenuItem.Click
Me.m_style=""
Me.m_Login=False
ForEachChildFormAsFormInMe.MdiChildren
ChildForm.Close()
Next
main_Load(sender,e)
Login.Show()
Me.ToolStripStatusLabel1.Text="登录"
EndSub
用户通过本模块可以注销系统,系统恢复到登录前画面,这样就可以防止在用户离开后,系统数据被人恶意修改。
4.3客户信息管理
4.3.1客户信息的添加
图4.2客户的添加
当用户点击添加按钮时,系统执行以下代码:
CmdStr="SELECTidFROM[customer]whereid='"+TextBox2.Text+"'"
IfTextBox2.Text=""Then//身份证不为空
MsgBox("请输入身份证号")
TextBox2.Focus()
ElseIfsqlobject.Is_SQL_Cmd(CmdStr)Then//检查是否已注册
MsgBox("该客户已经存在")
TextBox2.Focus()
......//中间还有很多类似的验证
Else
CmdStr="insertintocustomer(name,id,address,birthday,pwd,addtime,money,usedmoney,tel,mobilephone,userid)VALUES('"+TextBox1.Text+"','"+TextBox2.Text+"','"+TextBox3.Text+"','"+DateTimePicker1.Value.ToString+"','"+TextBox6.Text+"','"+Now+"','"+"0"+"','"+"0"+"','"+TextBox4.Text+"','"+TextBox5.Text+"','"+user+"')"
Try
sqlobject.ExecCmd(CmdStr)//添加客户
MsgBox("添加成功")//添加成功提示
=""//复位空格
......
CatchexAsException
main.OPErr.WriteErr(ex)
EndTry
EndIf
EndSub
在添加用户前,系统进行了详细的表单验证,包括验证要提交的客户是否已经存在,用户两次输入的密码是否一样,以及联系方式不为空等等。
使用insert语句将通过验证的表格中的数据提交到数据库。
菜单信息添加模块及本模块的原理类似,以下不再阐述。
4.3.2图像的处理
如果用户在上面添加客户信息时,添加了图像信息,那么系统就会执行以下命令:
If<>""Then//图像存在的话,添加图像
DimimgstreemAsNew(,,)
Dimimgbyte(imgstreem.Length)AsByte
imgstreem.Read(imgbyte,0,imgstreem.Length)
imgstreem.Close()
DimsqlcmdAsNewSystem.Data.SqlClient.SqlCommand
DimsqlconnAsNewSystem.Data.SqlClient.SqlConnection(SQL_Conn.constr)
CmdStr="updatecustomersetphoto=@imagewhereid='"+TextBox2.Text+"'"
sqlcmd.Parameters.Add("@image",SqlDbType.Image)
sqlcmd.Parameters("@image").Value=imgbyte
sqlcmd.Connection=sqlconn
sqlcmd.CommandText=CmdStr
Try
sqlconn.Open()
sqlcmd.ExecuteNonQuery()
sqlconn.Close()
CatchexAsException
main.OPErr.WriteErr(ex)
EndTry
EndIf
如果用户提交了客户的相片,相片将会被转化为二进制