大型数据库 课程设计报告 餐饮管理系统.docx
《大型数据库 课程设计报告 餐饮管理系统.docx》由会员分享,可在线阅读,更多相关《大型数据库 课程设计报告 餐饮管理系统.docx(41页珍藏版)》请在冰豆网上搜索。
大型数据库课程设计报告餐饮管理系统
数学与计算机学院
课程设计说明书
课程名称:
大型数据库-课程设计
课程代码:
8424141
题目:
餐饮管理系统
年级/专业/班:
计算机科学与技术
学生姓名:
xx
学 号:
xxxxxxxxxxxxxxxxx
开始时间:
2012年6月10日
完成时间:
2012年6月17日
课程设计成绩:
学习态度及平时成绩(30)
技术水平与实际能力(20)
创新(5)
说明书(计算书、图纸、分析报告)撰写质量(45)
总分(100)
指导教师签名:
年月日
《大型数据库》课程设计任务书
学院名称:
数学与计算机学院课程代码:
__8424141________
专业:
计算机科学与技术年级:
2007
一、设计题目
餐饮管理系统(C/S)
二、主要内容
系统概述:
通过对学生在饭店的消费流程进行分析,完成具有食品原料管理、菜单管理、点菜管理、消费结算、按日(按月)结算、员工管理、餐厅管理等相关功能的小型数据库管理应用系统。
本系统要求采用C/S模式。
基本要求:
1、完成进人员、餐厅、食品价目表的维护
2、完成消费表的生成,并计算消费折扣。
3、按人员、时间、餐厅统计计算消费总额
4、按食品类别、时间、餐厅统计计算消费总额
5、完成用户管理功能
6、完成数据备份与恢复功能
本题目所需的知识点:
E-R关系图;数据库表设计,数据库表维护等。
三、具体要求及应提交的材料
1、完成系统的需求分析:
包含功能需求、数据需求、性能需求等。
2、完成系统设计:
包含系统概要设计(软件结构图)及详细设计(画出流程图)。
3、测试:
编写合适的测试用例完成系统的测试工作并分析结果。
4、完成后应上交的材料:
课程设计说明书:
包含封面、任务书、说明书(说明书见后面模板)。
包括系统设计目的要求,类的层次图(包括类成员列表)、设计思路,系统功能模块图、参考资料、程序清单、设计心得总结等。
对照自己设计的完成情况认真书写。
软件源程序光盘。
四、主要技术路线提示
根据系统功能要求,可以将问题解决分为以下步骤:
(1)分析系统中的各个实体之间的关系及其属性和行为;
(2)根据问题描述,设计系统的类层次;
(3)完成类层次中各个类的描述(包括属性和方法);
(4)完成类中各个成员函数的定义;
(5)完成系统的模块组装、调试;
五、进度安排
课程设计共两周(16、17周)进行,其进度时间大致分配如下:
(1)需求分析,系统菜单设计、类的层次设计(2天)
(2)类的定义,各个类中属性、方法的声明(1天)
(3)类的实现,各个类中成员函数的定义(3天)
(4)程序主框架,程序的模块链接、调试(2天)
(5)课程设计报告的书写(1天)
(6)提问验收(1天)
六、推荐参考资料
[1]杨树林.C#程序设计与案例教程[M].清华大学出版社.2007
[2]马骏.C#网络应用编程基础[M].人民邮电出版社.2010
[3]陈克力等.SQLServer2005编程基础[M].清华大学出版社.2008
指导教师签名日期年月日
系主任审核日期年月日
摘要
随着我国市场经济的快速发展,各行业都呈现出生机勃勃的发展景象,其中餐饮业的发展尤为突出。
近两年来已呈现出高速发展的态势。
但在快速发展的同时,餐饮业在日常经营管理中仍普遍采用手工管理方式,整体科技含量低。
随着餐饮企业规模和数量的不断增长,手工管理模式无论是在工作效率、人员成本还是提供决策信息方面都已难以适应现代化经营管理的要求,因此制约了整个餐饮业的规模化发展和整体服务水平的提升。
有效的管理成为了一个难题,为能有效的解决这些问题提高企业的经济效益,在这些中小型饭店中采用工作流技术,结合饭店绿色管理内容,实施计算机管理信息系统不视为一条有效的解决途径。
本论文主要针对中小型饭店餐饮管理中的一些问题,将其与计算机信息管理系统结合起来,实现中小型饭店管理信息计算机化、系统化,将中小型饭店管理中的工作流转化成比较科学化、规范化的业务流程,使管理基础数据更加准确化,管理人员摆脱了事务性工作,转而从事管理专业工作,为经营决策提供了快捷和强大的数据支持。
把计算机用于餐饮企业管理,可在很大程度上提高管理者分析和决策的科学性,提高经营管职水平,带来更多的顾客,使企业取得更好的经济效益。
关键词:
计算机信息管理系统中小型饭店餐饮管理
1引言
1.1问题的提出
民以食为天,随着人民生活水平的提高,餐饮业在服务行业中占有越来越重要的地位。
努力在当前餐饮行业日趋激烈的竞争中脱颖而出,已成为每位餐饮业经营者所追求的目标。
经过多年发展,餐饮管理已经逐渐由定性管理,进入到重视定量管理的科学阶段。
众所周知,在定量管理的具体实现方法和手段方面,最有效的工具就是电脑管理。
传统的手工操作管理存在着许多无法避免的问题,该系统将能大大的降低许多问题,减轻人力与物力。
1.2网络化
网络化就是通过计算机的网络来实现不同区域的不同用户来实现对报刊的订阅,这样也便于管理者对报刊的管理,显得更加方便。
1.3任务与分析
本软件能在很大程度上解决中小型餐厅的消费管理,方便对顾客的消费进行管理,本系统运行时能在主菜单上看到当前的桌台情况——是否被占用,能很好分配顾客的用餐,顾客点菜时能很好的进行记录,有方便的结账功能,直接计算出找零,本系统还能对桌台信息进行管理,方便以后的增加与减少桌台,同时也能方便的对服务人员的信息进行管理,有系统数据库备份功能,防止系统在死机的情况下丢失大量重要信息。
2需求分析
2.1用户功能
2.1.1用户登录模块
该模块主要用于实现验证用户是否合法,只有合法用户才能有权登录,只有登录成功情况下才能进入系统功能主界面,并且在登录的同时能验证登录人员的管理权限,根据权限显示其能管理范围。
2.1.2桌台信息管理模块
该模块主要用于管理桌台的信息,可以设置桌台名称,桌台位置,桌台占用所需要加钱。
2.1.3服务员信息管理模块
该模块主要用于方便对服务人员的信息进行管理
2.1.4修改密码模块
该模块主要用于实现对登录人员的密码进行管理,长时间不更换密码是不安全的,增加此模块能增加系统的安全性。
2.1.5开台模块
该模块主要用于实现对顾客进行开台,已经占用的桌台不能被再次分配,方便分配未占用的桌台给顾客
2.1.6取消开台模块
该模块主要用于实现对已经开台的桌台进行取消开台。
2.1.7消费查询模块
该模块主要用于实现客户能够查询自己已消费清单情况,进行核对自己的消费。
2.1.8结账模块
该模块主要用于实现对客户的消费进行自动汇总,显示消费金额,能进行找零计算。
2.1.9数据库管理模块
该模块主要用于实现对系统数据库的备份,防止系统在死机的情况下丢失大量重要信息。
2.2管理员功能
2.2.1增加报刊功能
管理员在后台对餐饮各类进行添加,添加时需要填写的信息包括餐饮的食材、名称、价格等。
2.2.2修改功能
管理员对已经存在的餐饮的信息进行修改,包括餐饮的食材、名称、价格等,但不能修改餐饮的编号,在这是因为以餐饮的编号作为主键进行的查找要修改的餐饮信息。
2.2.3删除功能
管理员在后台对已经存在的报刊进行删除,操作为直接输入要删除的餐饮的编号,后台自动的查找到这个餐饮,再从数据库中的餐饮信息表中彻底的删除该类餐饮的所有信息。
2.2.4查看用户订阅信息
管理员登录后,可对报刊的征订情况进行查询,包括每个用户订餐的类型、数量和应付额。
2.3数据分析——概念模型分析
需求分析阶段主要有两个方面的任务:
分析用户的数据要求和分析用户的处理要求。
通过以上分析,我们已经基本了解了用户对处理的要求,接下来需要的工作是分析用户对数据的要求。
为了把用户的数据清晰明确地表达出来,系统分析员通常建立一个概念性的数学模型。
概念性模型是一种面向问题的数学模型,是按用户的观点来对数据和信息建模。
最常用的表示概念性数据模型的方法是实体-联系方法(Entity-RelationshipApproach)。
这种方法用E-R图描述现实世界中的实体,而不涉及这些实体在系统中的实现方法,该方法又称为E-R模型,E-R图中共用三种符号:
实体、属性和联系。
通常实体用矩形来表示,属性用椭圆或圆角矩形来表示,联系用菱形来表示。
联系有分为一对一、一对多和多对多三种类型。
3总体设计
3.1系统业务流程分析
餐饮管理系统的业务流程图如图3.1所示。
图3.1餐饮管理系统的业务流程图
3.2系统功能结构
系统功能结构图如图3.2所示。
4详细设计
4.1数据库设计
本系统采用SQLServer2005作为后台数据库,数据库名称为restaurantManage,其中包含5张数据表。
下面分别介绍:
4.1.1数据表概要说明
为了对本系统后台数据库中的数据表有一个更清晰的认识,在此设计了一个数据表树形结构图,该结构图包括系统所有数据表,如图4.1所示。
图4.1数据表树状结构图
4.1.2部分数据表E-R图
本里中规化出的实体主要有菜品信息实体、顾客点菜信息实体、桌台信息实体、用户登录信息实体和服务员信息实体。
其中部分实体的E-R图如下所示。
图4.2用户表实体E-R图
图4.3菜品信息实体E-R图
图4.4桌台信息实体E-R图
图4.5员工信息实体E-R图
图4.6顾客点菜信息实体E-R图
4.1.3数据表的结构
(1)food表(菜品信息表)
表food用于保存菜品的基本信息,该表的结构如图4.7所示。
图4.7菜品信息表
(2)guestfood表(顾客点菜信息表)
表guestfood用于保存顾客点菜的详细信息,该表的结构如图4.8所示。
图4.8顾客点菜信息表
(3)room表(桌台信息表)
表room用于保存桌台的一些有关信息,该表的结构如图4.9所示。
图4.9桌台信息表
(4)userlogin表(登录人员信息表)
表userlogin用于保存登录用户基本信息,表的结构如图4.10所示。
图4.10登录用户信息表
(5)waiter表(餐厅服务人员信息表)
表waiter用于保存餐厅服务人员的一些基本信息,表的结构如图4.11所示。
图4.11餐厅服务人员信息表
4.2系统主要功能模块设计与实现
4.2.1系统登录模块的设计与实现
系统登录主要用于对进入餐饮管理系统的用户进行安全性检查,以防止非法用户进入该系统。
在登录时,只有合法的用户,才可以进入该系统。
系统登录窗体如图4.12所示。
图4.12系统登录
代码设计
单击【确定】按钮,程序执行判断用户输入的用户名和密码是否正确,如果正确,则成功登录餐饮管理系统,并将用户名、用户使用权限、用户登陆时间传到主窗体中,同时分别使用Names、power、Times全局变量进行接受。
否则,弹出“用户名或密码错误”信息提示。
【确定】按钮的Click事件代码如下:
privatevoidbtnSure_Click(objectsender,EventArgse)
{
if(txtUserName.Text=="")//判断用户名是否为空
{
MessageBox.Show("用户名不能为空","警告",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
else
{
if(txtPwd.Text=="")//判断密码是否为空
{
MessageBox.Show("请输入密码","警告",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
else//用户名及密码不为空的情况下执行如下代码
{
SqlConnectionconn=connectToDatabase.restaurantManagementConn();
conn.Open();
SqlCommandcmd=newSqlCommand("selectcount(*)fromUserLoginwhereUserName='"+txtUserName.Text+"'andUserPwd='"+txtPwd.Text+"'",conn);
inti=Convert.ToInt32(cmd.ExecuteScalar());
if(i>0)
{
cmd=newSqlCommand("select*fromUserLoginwhereUserName='"+txtUserName.Text+"'",conn);
SqlDataReadersdr=cmd.ExecuteReader();
sdr.Read();
stringUserPower=sdr["Power"].ToString().Trim();
conn.Close();
formMainmain=newformMain();
main.power=UserPower;
main.Names=txtUserName.Text;
main.Times=DateTime.Now.ToShortDateString();
main.Show();
this.Hide();
}
else
{
MessageBox.Show("用户名或密码错误");
}
}
}
}
4.2.2主窗体的设计与实现
在正确验证用户的用户名和密码以后,就显示出餐饮管理系统的主窗体。
主窗体主要用于显示系统所具有的功能,例如菜单栏里显示了基础信息、辅助工具、系统设置、退出系统、系统维护等几个功能模块。
用户可以选择相应的按钮对应的子功能对系统进行不同的操作,餐饮管理系统的主窗体如图4.13所示。
图4.13主窗体
主窗体实现的几个重要功能实现代码如下:
//接收从login窗体传来的信息,以下四个定义的变量是以后代码用到的全局变量
publicstringpower;
publicstringNames;
publicstringTimes;
privateSqlDataReadersdr;
//以下是窗体加载时执行的代码
privatevoidformMain_Load(objectsender,EventArgse)
{
StatusLabeUser.Text=Names;
StatusLabeLoginTime.Text=Times;
switch(power)
{
case"0":
StatusLabePower.Text="超级管理员";break;
case"1":
StatusLabePower.Text="经理";
TSMenuItemSystemMaintenance.Enabled=false;
break;
}
}
privatevoidformMain_Activated(objectsender,EventArgse)//窗体激发时执行如下代码
{
lvDesk.Items.Clear();
SqlConnectionconn=connectToDatabase.restaurantManagementConn();
conn.Open();
SqlCommandcmd=newSqlCommand("select*fromRoom",conn);
sdr=cmd.ExecuteReader();
while(sdr.Read())
{
stringstatus=sdr["RoomStatus"].ToString().Trim();
AddItems(status);//根据桌台使用与否,选择图片显示桌子是否在被用中
}
conn.Close();
}
privatevoidAddItems(stringstatus)
{
if(status=="使用")
{
lvDesk.Items.Add(sdr["RoomName"].ToString(),1);
}
else
{
lvDesk.Items.Add(sdr["RoomName"].ToString(),0);
}
}
//右键中单击开台会执行如下代码
privatevoid开台ToolStripMenuItem_Click(objectsender,EventArgse){
if(lvDesk.SelectedItems.Count!
=0)
{
stringnames=lvDesk.SelectedItems[0].SubItems[0].Text;
formOpenfrm=newformOpen();
frm.name=names;
frm.ShowDialog();
}
else
{
MessageBox.Show("请选择一个桌台进行开台");
}
}
//右键中单击取消开台会执行如下代码
privatevoid取消开台ToolStripMenuItem_Click(objectsender,EventArgse){
if(lvDesk.SelectedItems.Count!
=0)
{
stringnames=lvDesk.SelectedItems[0].SubItems[0].Text;
SqlConnectionconn=connectToDatabase.restaurantManagementConn();
conn.Open();
SqlCommandcmd=newSqlCommand("updateRoomsetRoomStatus='待用',Num=0
WhereRoomName='"+names+"'",conn);
cmd.ExecuteNonQuery();
cmd=newSqlCommand("deletefromGuestFoodwhereDiningTable='"+names+"'",conn);
cmd.ExecuteNonQuery();
conn.Close();
formMain_Activated(sender,e);
}
else
{
MessageBox.Show("请选择桌台");
}
}
其他右键功能代码在源代码中,代码设计思想和开台代码类似。
//单击listview控件中的一项内容时会执行如下代码,这里我们将listview的name定义为lvDesk
privatevoidlvDesk_Click(objectsender,EventArgse)
{
stringnames=lvDesk.SelectedItems[0].SubItems[0].Text;
SqlConnectionconn=connectToDatabase.restaurantManagementConn();
conn.Open();
SqlCommandcmd=newSqlCommand("select*fromRoomwhereRoomName='"+names+"'",
conn);
SqlDataReadersdr=cmd.ExecuteReader();
sdr.Read();
stringstatus=sdr["RoomStatus"].ToString().Trim();//将选中桌台的状态信息提取出来
sdr.Close();
if(status=="使用")
{
this.contextMenuStrip1.Items[0].Enabled=false;
this.contextMenuStrip1.Items[1].Enabled=true;
this.contextMenuStrip1.Items[3].Enabled=true;
this.contextMenuStrip1.Items[5].Enabled=true;
this.contextMenuStrip1.Items[6].Enabled=true;
}
if(status=="待用")
{
this.contextMenuStrip1.Items[0].Enabled=true;
this.contextMenuStrip1.Items[1].Enabled=false;
this.contextMenuStrip1.Items[3].Enabled=false;
this.contextMenuStrip1.Items[5].Enabled=false;
this.contextMenuStrip1.Items[6].Enabled=false;
}
conn.Close();
}
//双击listview控件中的一项内容时会执行如下代码
privatevoidlvDesk_DoubleClick(objectsender,EventArgse){
deskInfodesk=newdeskInfo();
desk.tableName=lvDesk.SelectedItems[0].SubItems[0].Text;
desk.ShowDialog();
}
//单击menustrip控件中基础信息下的桌台信息管理按钮会执行如下代码
privatevoidTSMenuItemTableInfo_Click(objectsender,EventArgse)
{
deskInfoManagementdesk=newdeskInfoManagement();
desk.ShowDialog();
}
menustrip控件中的其他按钮的代码设计思路与上面的单击menustrip控件中基础信息下的桌台信息管理按钮类似都是初始化一个相应窗体的对象,显示窗体。
注:
其他代码详见系统设计文档。
4.2.3右键菜单中的几个重要功能的介绍
右键菜单功能中顾客可以选择开台,取消开台,点菜,查询消费记录以及结账,下