餐饮管理系统.docx
- 文档编号:28000684
- 上传时间:2023-07-07
- 格式:DOCX
- 页数:78
- 大小:2.47MB
餐饮管理系统.docx
《餐饮管理系统.docx》由会员分享,可在线阅读,更多相关《餐饮管理系统.docx(78页珍藏版)》请在冰豆网上搜索。
餐饮管理系统
餐饮管理系统
餐饮管理系统是一个饮食产业不可缺少的部分,它的内容对企业的决策者和管理者都至关重要,所以餐饮管理系统应该能够为用户提供充足的信息和快捷的查询手段。
但一直以来人们使用的餐饮管理系统均是以人为主体的,需要很多的人力、物力、财力,且效率不是很高,在系统运营时也可能产生人为的失误,以致餐饮管理工作既繁琐而且不利于分析企业的经营状况。
作为计算机应用的一部分,使用计算机对餐饮信息进行管理,具有人工管理所无法比拟的优点。
例如统计结账快速、安全保密性好、可靠性高、存储量大、寿命长、成本低等。
这些优点能够极大地提高餐饮管理的效率,增强企业的竞争力,同时也是企业的科学化、正规化管理,与世界接轨的重要条件。
通过阅读本章,读者可以学习到:
●验证不同权限登录用户的方法
●使用ListView控件制作桌台显示
●使用MenuStrip控件制作系统菜单栏
●使用ContextMenuStrip控件制作桌台右键菜单
●开发餐饮管理系统的具体流程
1开发背景
近几年来,计算机网络、分布技术日趋成熟,随着科技的发展,餐饮业的竞争也越来越激烈。
想在这样竞争激烈的环境下生存,那么就必须运用科学的管理思想与先进的管理方法,使点餐与管理一体化。
这样不仅提高了工作效率,也避免了以前手工作业的麻烦,从而使管理者能够准确、有效地管理餐饮。
因此,餐饮业的管理者更希望从科学的管理中取得竞争的优势,在竞争激烈的商业市场中取胜。
2需求分析
随着餐饮业的不断发展,餐饮管理系统的内容对于餐饮业的决策者和管理者来说都非常重要。
本系统主要包括桌台显示、消费查询、人事档案及权限等几大部分,本系统具有良好的用户接口,使用方便。
具有完善的查询,对维护系统起到辅助决策的作用,能及时、方便、灵活地进行查询、修改、删除等维护性操作。
餐饮管理系统有足够的存储容量,满足酒店每日营业的变动,另外,对于操作用户有一定的管理,并对用户的权限有一定的设置。
3系统设计
3.1系统目标
本系统属于小型的餐饮管理系统,可以有效地对中小型餐厅消费进行管理。
本系统应达到以下目标:
●系统采用人机交互的方式,界面美观友好,信息查询灵活、方便,数据存储安全可靠。
●实现对餐厅顾客开台、点菜/加菜、账目查询和结账等操作。
●对用户输入的数据进行严格的数据检验,尽可能地避免人为错误。
●实现对消费账目自动结算。
●实现对消费的历史记录进行查询,支持模糊查询。
●系统应最大限度地实现易维护性和易操作性。
3.2系统功能结构
餐饮管理系统功能结构如图1所示。
图1系统功能结构图
3.3系统预览
餐饮管理系统由多个窗体组成,下面仅列出几个典型窗体,其他窗体参见光盘中的源程序。
主窗体模块运行结果如图2所示,主要功能是链接系统功能菜单、显示所有桌台和显示系统当前状态。
点菜模块运行结果如图3所示,主要功能是为顾客点菜。
开台模块运行效果如图4所示,主要功能是实现对指定的桌台进行开台操作。
结账模块运行效果如图5所示,主要功能是对指定的桌台进行结账操作,同时,清空结账桌台的所有消费信息。
3.4业务流程图
餐饮管理系统的业务流程图如图6所示。
3.5程序运行环境
餐饮管理系统在运行中的具体运行环境如下。
●系统开发平台:
MicrosoftVisualStudio2008。
●系统开发语言:
C#。
●数据库管理系统:
MicrosoftSQLServer2005。
●运行平台:
WindowsXP(SP2)/Windows2000(SP4)/WindowsServer2003(SP1)。
●运行环境:
Microsoft.NETFrameworkSDKv2.0。
●分辨率:
最佳效果1024×768像素。
3.6数据库设计
在开发餐饮管理系统之前,分析了该系统的数据量。
由于系统管理餐饮方面的数据较多,商品信息、消费信息以及账目清单会占用较大的空间,因此选择MicrosoftSQLServer2000数据库存储这些信息,数据库命名为db_MrCy,在数据库中创建了6个数据表用于存储不同的信息,如图7所示。
说明:
MicrosoftSQLServer2000数据库的创建过程在第5章已经做过介绍,此处不再赘述。
3.7数据库概念设计
餐饮管理系统的数据库主要用于存储餐饮管理系统中的数据,由于餐饮管理系统的数据量很大,所以选择了MicrosoftSQLServer2000数据库,数据库中建立一个商品信息表,用于存储所有的商品信息。
商品信息实体E-R图如图8所示。
由于商品的种类很多,因此需要对商品进行分类,这样就可以对商品分门别类地进行储存,在查询时可以根据商品类别进行查询。
在数据库中建立一个商品类别信息表,用于存储商品的所有类别信息。
商品类别信息实体E-R图如图9所示。
当顾客进行消费时,顾客会根据自己的需求消费不同的商品,系统将顾客消费的所有信息存储到数据表中,以便顾客结账时查询,在数据库中建立一个顾客消费信息表用于存储顾客的消费记录。
顾客消费信息实体E-R图如图10所示。
餐厅中会有多个桌台供顾客选择,每个桌台会有不同的信息。
例如,大厅-01号桌台被顾客使用,顾客人数为5人等,方便操作员对桌台的操作,在数据库中建立一个桌台信息表用于存储所有桌台的详细信息。
桌台信息实体E-R图如图11所示。
为了对系统进行不同的管理,需要为系统建立管理用户。
这些用户通过登录模块登录系统,登录成功之后会根据不同的权限对不同的功能模块进行管理,在数据库中建立一个用户信息表,用于存储登录用户信息。
用户信息实体E-R图如图12所示。
在餐饮行业中,餐厅服务员起着极其重要的作用,但是由于服务人员数目众多,如果不进行相应的信息记录,可能管理起来会非常困难。
因此,需要对服务人员的详细信息进行记录。
在数据库中建立一个职员信息表用于存储所有服务人员的信息。
职员信息实体E-R图如图13所示。
3.8数据库逻辑结构设计
根据设计好的E-R图在数据库中创建各表,系统数据库中各表的结构如下。
tb_food(商品信息表)
tb_food用于保存所有商品信息,该表的结构如表1所示。
表1商品信息表
字段名
数据类型
长度
主键
描述
ID
int
4
是
系统编号
foodty
char
10
否
类别编号
foodnum
char
10
否
商品代号
foodname
varchar
50
否
商品名称
foodprice
decimal
9
否
商品价格
tb_foodtype(商品类别信息表)
表tb_foodtype用于保存商品类别信息,该表的结构如表2所
表2商品类别信息表
字段名
数据类型
长度
主键
描述
ID
int
4
是
系统编号
Foodtype
varchar
50
否
商品类别名称
tb_GuestFood(顾客消费信息表)
表tb_GuestFood用于保存顾客的消费信息,该表结构如表3所示。
表3顾客消费信息表
字段名
数据类型
长度
主键
描述
ID
int
4
是
系统编号
foodnum
char
10
否
商品代号
foodname
varchar
50
否
商品名称
foodsum
char
10
否
消费数量
foodallprice
decimal
9
否
商品价格
waitername
varchar
50
否
操作员姓名
beizhu
varchar
50
否
备注
zhuotai
char
10
否
消费桌台
datatime
varchar
50
否
消费时间
tb_Room(桌台信息表)
表tb_Room用于保存所有桌台信息,该表结构如表4所示。
表4桌台信息表
字段名
数据类型
长度
主键
描述
ID
int
4
是
系统编号
RoomName
char
10
否
桌台名称
RoomJC
char
10
否
桌台简称
RoomBJF
decimal
9
否
桌台包间费
RoomWZ
char
10
否
桌台位置
RoomZT
char
10
否
桌台状态
RoomType
char
10
否
桌台类型
RoomBZ
varchar
50
否
桌台备注
RoomQT
varchar
50
否
桌台其他信息
GuestName
varchar
50
否
顾客姓名
zhangdanDate
varchar
50
否
开台时间
Num
int
4
否
顾客人数
WaiterName
varchar
50
否
操作员姓名
tb_User(用户信息表)
表tb_User用于保存所有系统用户信息,该表结构如表5所示。
表5用户信息表
字段名
数据类型
长度
主键
描述
ID
int
4
是
系统编号
UserName
varchar
50
否
用户登录名
UserPwd
varchar
50
否
用户登录密码
power
char
10
否
用户权限
tb_Waiter(职员信息表)
表tb_Waiter用于保存所有职员信息,该表结构如表6所示。
表6职员信息表
字段名
数据类型
长度
主键
描述
ID
int
4
是
系统编号
WaiterName
varchar
50
否
职员姓名
CardNum
varchar
50
否
身份证号码
WaiterNum
char
10
否
职员编号
Sex
char
10
否
性别
Age
char
10
否
年龄
Tel
varchar
50
否
电话
3.9文件夹组织结构
每个项目都会有相应的文件夹组织结构,如果项目中窗体数量很多,可以将所有的窗体及资源放在不同的文件夹中。
如果项目中窗体不是很多,可以将图片、公共类或者程序资源文件放在相应的文件夹中,而窗体可以直接放在项目根目录下。
餐饮管理系统就是按照后者的文件夹组织结构排列的,如图14所示。
4登录模块设计
4.1登录模块概述
为了使系统的安全性得到保障,大多数系统都开发登录模块。
只有通过登录模块,才能对登录用户进行验证,只有系统的合法用户才可以进入系统的主界面。
这也是设计管理系统软件之前必须考虑的问题,整个登录模块的实现过程非常简单,相信读者会很快掌握。
登录模块运行结果如图15所示。
4.2登录模块技术分析
运行本系统的登录模块,用户只需输入用户名和密码,单击“登录”按钮进行验证。
登录模块以登录的用户名和密码作为搜索条件,在数据库中进行查询。
使用SqlDataReader对象的HasRows属性判断登录用户名和密码是否正确,下面介绍SqlDataReader对象的HasRows属性。
HasRows属性
获取一个值,该值指示SqlDataReader是否包含一行或多行。
语法如下:
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);
}
登录模块验证的方法有很多,除了本章登录模块的验证方法外,还可以使用第2章登录模块的验证方法,第2章是通过COUNT聚合函数进行验证的,具体参看第2章登录模块设计中的内容。
4.3登录模块实现过程
本模块使用的数据表:
tb_User
登录模块的具体实现步骤如下:
(1)新建一个Windows窗体,命名为frmLogin.cs,主要用于实现系统的登录功能。
该窗体用到的主要控件如表7所示
表7登录窗体用到的主要控件
字段名
控件ID
主要属性设置
用途
txtName
无
输入登录用户名
txtPwd
PasswordChar属性设置为*
输入登录用户密码
btnSubmit
Text属性设置为“登录”
登录
btnConcel
Text属性设置为“取消”
取消
(2)由于餐饮系统使用MicrosoftSQLServer2000作为后台数据库,因此先要引用命名空间,以便在程序中操作数据库。
关键代码如下:
usingSystem.Data.SqlClient
(3)单击“登录”按钮之后,登录模块首先判断是否输入了用户名和密码,如果没有输入用户名和密码将弹出提示框,提示用户输入登录系统的用户名和密码;如果输入了用户名和密码,系统将判断输入的用户名和密码是否正确。
关键代码如下:
例程01代码位置:
光盘\TM\06\MrCy\frmLogin.cs
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.ToShortDateString();
main.Show();//打开主窗体
this.Hide();//隐藏当前登录窗体
}
else
{
MessageBox.Show("用户名或密码错误");//弹出提示信息
}
}
}
}
(4)当输入用户名和密码之后,还可以按Enter键登录系统,实现的原理是:
在输入密码的文本框的KeyPress事件下,判断是否按了Enter键,如果按了Enter键就会激发“登录”按钮的Click事件。
关键代码如下:
例程02代码位置:
光盘\TM\06\MrCy\frmLogin.cs
privatevoidtxtPwd_KeyPress(objectsender,KeyPressEventArgse)
{
if(e.KeyChar==13)//判断是否按下Enter键
{
btnSubmit_Click(sender,e);//调用“登录”按钮的Click事件
}
}
(5)单击“取消”按钮,退出系统登录。
关键代码如下:
例程03代码位置:
光盘\TM\06\MrCy\frmLogin.cs
privatevoidbtnConcel_Click(objectsender,EventArgse)
{
if(MessageBox.Show("确定退出系统吗?
","提示",MessageBoxButtons.OKCancel,Messan.Asterisk)==DialogResult.OK)
{
Application.Exit();//退出系统
}
}
5主窗体模块设计
5.1主窗体模块概述
在餐饮系统中主窗体模块是由3部分组成的。
第一部分是位于主窗体模块上端的系统菜单,主要实现链接系统功能菜单。
第二部分是位于主窗体模块中间的桌台显示,主要用于显示餐厅中所有的桌台情况,包括桌台是否已使用、已使用桌台的客人数量等信息,方便了用户对桌台的管理。
第三部分是位于主窗体模块下端的状态栏,主要用于显示系统当前状态信息。
主窗体模块运行结果如图16所示。
双击某个桌台,弹出“桌台基本信息”窗体,用于显示此桌台的详细信息,如图17所示。
在某个桌台上单击鼠标右键,在弹出的快捷菜单中用户可以选择“开台”、“取消开台”、“点/加菜”、“消费查询”和“结账”命令,如图18所示。
5.2主窗体模块技术分析
开发主窗体模块中的桌台显示时,主要是通过ListView控件实现的,系统首先从数据库中检索出每个桌台的状态,然后根据不同的状态通过ListView控件的Items属性中的Add方法向控件中添加项目集合,下面进行详细介绍。
(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();
}
(2)Add方法
功能:
将项添加到具有指定文本和图像的集合。
语法如下:
publicvirtualListViewItemAdd(stringtext,intimageIndex)
参数说明:
text:
项的文本。
imageIndex:
要为该项显示的图像的索引。
返回值:
已添加到集合中的ListViewItem。
例如,在本模块中向控件中添加项集合。
关键代码如下:
lvDesk.Items.Add(sdr["RoomName"].ToString(),1);
另外,在桌台显示中使用ContextMenuStrip控件实现右键弹出菜单。
ContextMenuStrip控件提供了与某个控件关联的快捷菜单,如图19所示。
其使用方法如下:
(1)双击工具栏中的ContextMenuStrip控件将其添加到Form窗体中。
(2)为ContextMenuStrip控件添加菜单项。
(3)设置控件或窗体的ContextMenu属性为contextMenuStrip1,运行程序,在窗体或者控件上单击鼠标右键,将出现相应的右键菜单。
5.3主窗体实现过程
本模块使用的数据表:
tb_Room、tb_Waiter、tb_User
主窗体模块的具体实现步骤如下:
(1)新建一个Windows窗体,命名为frmMain.cs,主要用于实现系统的菜单栏、桌台显示和显示系统状态的功能。
该窗体用到的主要控件如表8所示。
表8主窗体中用到的主要控件
字段名
控件ID
主要属性设置
用途
menuStrip1
Items属性中添加7个MenuItem项
实现窗体中的菜单
statusStrip1
Items属性中添加8个StatusLabel项
实现系统的状态栏
imageList1
Images属性中添加两个成员
显示代表桌台状态的图片
contextMenuStrip1
Items属性中添加5个MenuItem项
实现右键菜单
lvDesk
无
显示所有桌台
(2)首先创建4个公共变量,方便程序调用。
关键代码如下:
例程04代码位置:
光盘\TM\06\MrCy\frmMain.cs
publicSqlDataReadersdr;
publicstringpower;
publicstringNames;
publicstringTimes;
(3)在窗体加载时,首先判断
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 餐饮 管理 系统