数据库课程设计餐饮管理系统.docx
《数据库课程设计餐饮管理系统.docx》由会员分享,可在线阅读,更多相关《数据库课程设计餐饮管理系统.docx(16页珍藏版)》请在冰豆网上搜索。
![数据库课程设计餐饮管理系统.docx](https://file1.bdocx.com/fileroot1/2023-1/21/f2ce457c-eca7-49d8-9819-90fbe527d9c9/f2ce457c-eca7-49d8-9819-90fbe527d9c91.gif)
数据库课程设计餐饮管理系统
目录
绪论2
开发背景2
技术要求与设计方法2
第一章需求分析3
第二章总体设计4
第三章数据库设计5
3.1概念结构设计5
3.2逻辑结构设计6
第四章详细设计7
4.1财务管理7
4.2餐桌管理8
4.3食品管理9
4.4优惠卡管理11
第五章编码测试12
设计总结16
学习体会17
致谢18
参考文献19
绪论
开发背景
随着人民生活水平和生活方式的转变,餐饮业具有巨大的投资市场,被称为中国的黄金产业,但同样也应看到,餐饮业不仅面临着巨大的发展机遇,也面临着前所未有的挑战和考验。
这些挑战主要来源于以下几方面:
1.人才的专业化程度不够导致内功不足:
因餐饮业门坎较低,中国的大多数餐饮企业的老板是从小店发展起来的,家族式管理的居多,还没有发展到聘请职业经理人,许多还是“人治”,并没有一套现代企业制度和监督管理体制,所以从观念意识、经营思想和管理水平还有待专业化。
2.变能力差,缺乏先进的信息工具:
现在的餐饮市场火爆,许多以前做电子、房地产等其他行业的老板都凭借雄厚的资金实力挤进餐饮市场,争先恐后的上规模、上档次、比菜品、比服务、拼价格,使餐饮市场竞争激烈,但是许多餐饮企业缺乏对市场的应变能力和灵敏的信息工具,在现今网络经济的时代,许多餐饮企业还处在手工及半手工状态。
因此,设计一个餐饮管理系统,就显得越来越重要了。
技术要求与设计方法
系统前台使用vc++6.0设计,通过目前较流行的ADO与数据库连接,后台使用功能强大的MicrosoftSqlSever2000完成,对系统的安全性和灵活性都有很好的支持。
本系统设计简单明了,该餐饮管理系统能支持不同类型,不同权限的用户都有一定的操作权限,管理员有全部管理权限,比如:
修改员工工资,增加菜单菜品,营业额查询分析。
整个管理系统采用统一的窗体风格,功能导航简介明了,方便用户进行操作;人性化的界面设计,时用户感到一种操作的温馨;另外,数据库采用企业级的SQLServer2000做后台支持,并进新安全备份,保证了餐饮管理系统的可靠性与维护性;管理员同时管理员可以赋予用户一定的操作权限,方便管理
本系统只是一个简单的餐饮管理系统,涉及到的操作简单,但基本可以满足一个小型餐饮企业的管理需要。
第一章
需求分析
建立餐饮管理系统,首先要对该系统进行必要的需求分析,经分析,该管理系统需包括以下的信息:
日始日结:
设定每个营业日的开始和结束
酒菜设置:
按类别(酒水饮料、凉菜、热菜主食、包桌、服务用品等)设置酒菜数据
营业分析:
对营业数据进行统计分析、打印报表
销售分析:
营业总况、收入金额
点单查询:
查询所有历史点单
操作员管理:
管理操作员信息,并设置系统操作权限和最低折扣值
帐单查询:
查询所有已结帐单
财务查询:
查询各类单据和消费情况
工资管理:
员工工资的查询、修改、录入
餐桌管理:
餐桌类型及数量的删除、添加、修改
菜品管理:
菜品名称、类别及售价的添加、删除、修改的管理
零售品管理:
零售品名称、进价、及卖价的添加、修改、删除操作
优惠卡管理:
优惠卡的发行及管理
第二章总体设计
该餐饮管理系统的总的结构图如下:
图2.1系统的总体结构图
该餐饮系统设计的目标就是将传统的纸质餐饮管理转变为电子系统管理,整个系统需要完成的功能有前台营业、营业设置、财务查询、营业分析、系统管理。
前台营业:
可以开台点菜、加菜、退菜换桌。
营业设置:
包括酒菜设置和房台设置两部分。
财务查询:
可以进行账单查询、挂账查询、订单查询。
营业分析:
提供销售分析、房台分析、酒菜分析、业绩分析等功能。
系统管理:
包括员工管理和挂账管理用户管理等操作。
第三章数据库设计
3.1概念结构设计
经需求分析,可以知道餐饮管理系统的主要功能,并以此画出ER图。
整个ER图的所表述是这样的:
一个顾客可以实现多次预定,但一次预定只能针
对一个顾客;一个预定可以有多个预定内容,但一个预定内容只能对应一个预定;一位顾客某时只能在一个台位消费,每个台位有服务员;每位顾客每次消费形成一张费用单,一张费用单对应一个顾客(付账);付账通过收银员,有多种方式;对于特殊的结账方式需要挂账人,而挂账对应挂账明细,管理员可以通过管账明细就行结账。
同时,由于系统支持预定,由收银员接受预定,形成订单,为订单预定台位。
因此,餐饮管理系统的ER图如下
图3-1餐饮管理系统总的E-R图
3.2逻辑结构设计
数据库的建设具体来说就是建立系统的各种表,同时设置表的主键和外键。
现在需要将上面的数据库概念转化为SQLsever2000数据库系统支持的实际数据模型,也就是数据库的逻辑结构。
在逻辑结构设计阶段,通过把概念结构设计的ER图转换为关系模式,得到如下关系模式及属性:
注:
带下划线的为主码。
点单(ID,消费单号,酒菜编号,菜的数量)
订单(编号,定单人,身份证号,餐桌号,定金,联系电话,日期,时间,备注);其中餐桌号为外键。
餐桌表(餐桌号,种类,状态,容量,服务员号);
其中服务员号为外键,来自员工表。
挂帐人信息表(编号,挂帐人名,身份证,联系电话,联系地址,注册时间);
另外,还有一张电脑用户表(操作员表)如下:
操作员表(用户名,用户密码,用户权限,员工编号);其中员工编号为外键。
第四章详细设计
4.1财务管理
该模块实现的功能是对财务的管理。
通过该模块,可以方便的查询到今日的营业额,历史营业额,以及员工的工资。
该模块共有三部分,如下:
今日营业额查询,可以清楚的了解到营业额主要有三部分组成:
现金、支票、刷卡。
以及每一部分的具体数额,同时进行当天的账务结算,可以有效地减轻管理人员的负担。
图4-1今日营业额图
历史营业额查询,可以方便的查询到以往每一天的营业额,该部分是对今日营业额的补充与扩充。
图4-2营业额查询图
该部分是对员工工资的具体操作,通过输入员工姓名或者直接点击员工的编号,可以方便的查询到员工工资的具体情况:
如员工的姓名、编号、基本工资、职务工资、总工资,也可以对员工基本工资和职务工资进行进行修改。
该界面虽然简单,但可实现功能齐全,可以满足一般小型企业对员工工资修改的需求。
图4-3工资管理图
4.2餐桌管理
本模块实现的功能是对餐桌的管理,及时了解餐桌的状况。
通过对餐桌类型、最大进餐人数、餐桌状态的管理,可以及时的了解餐桌的使用情况,方便管理。
同时,该模块可以方便的进行删除,修改,添加操作,亦可进行预订。
图4-4餐桌管理图
4.3食品管理
该模块的主要功能是为了实现对食品及零售品的管理。
通过该模块,可以一目了然的看到各种食品及零售品的详细信息。
同时,通过对该模块的修改、删除、添加可以方便增加菜肴,修改售价等操作。
通过给模块,可以减轻管理人员的负担。
图4-5食品管理图
该界面亦属于食品管理部分,与菜品管理界面一样,能显示各种零售品的数量种类等具体信息,同时,可以对其进行修改、删除、添加等操作,与其他界面不同的是,该界面增加了刷新操作,可以刷新界面,及时显示零售品的具体信息,这符合一般餐饮企业任务的需求。
图4-6零售品管理界面
4.4优惠卡管理
该模块主要是为了实现对优惠卡的管理,通过添加、删除、修改,方便对优惠卡的管理
图4-7优惠卡管理
该部分设计界面简单,往往一个界面可以进行删除、修改、添加等操作。
该部分操作容易,易于上手,对于一般餐饮企业操作人员来说,都能胜任。
同时,该界面功能齐全,充分考虑到一般餐饮企业实际操作过程所遇到的各种问题,方便管理人员解决各种问题。
于此同时,该部分设计有一些小在瑕疵,该部分将在设计总结中出现。
第五章编码测试
营业额查询.该模块编码如下:
//Yyecx.cpp:
implementationfile
//#include"stdafx.h"
#include"cyglxt.h"
#include"Yyecx.h"
#include"ADOConn.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
//CYyecxdialog
CYyecx:
:
CYyecx(CWnd*pParent/*=NULL*/)
:
CJieMian(pParent)
{//{{AFX_DATA_INIT(CYyecx)
//NOTE:
theClassWizardwilladdmemberinitializationhere
//}}AFX_DATA_INIT}
voidCYyecx:
:
DoDataExchange(CDataExchange*pDX)
{CDialog:
:
DoDataExchange(pDX);
//{{AFX_DATA_MAP(CYyecx)
DDX_Control(pDX,IDC_BUTTON3,m_QUEDING);
DDX_Control(pDX,IDC_BUTTON2,m_XSQB);
DDX_Control(pDX,IDC_BUTTON1,m_CHAXUN);
DDX_Control(pDX,IDC_DATETIMEPICKER1,m_time);
DDX_Control(pDX,IDC_LIST1,m_YYE);
//}}AFX_DATA_MAP}
BEGIN_MESSAGE_MAP(CYyecx,CDialog)
//{{AFX_MSG_MAP(CYyecx)
ON_BN_CLICKED(IDC_BUTTON1,OnChaXun)
ON_WM_CTLCOLOR()
ON_WM_PAINT()
ON_WM_NCLBUTTONDOWN()
ON_WM_SYSCOMMAND()
ON_WM_NCMOUSEMOVE()
ON_BN_CLICKED(IDC_BUTTON2,OnButton2)
ON_BN_CLICKED(IDC_BUTTON3,OnButton3)
ON_WM_SETCURSOR()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
//CYyecxmessagehandlers
voidCYyecx:
:
OnChaXun()
{CStringtime;
_variant_tvar;
m_time.GetWindowText(time);
ADOConnrst;
CStringssql;
ssql.Format("SELECT*FROMYyeWHERE时间='%s'",time);
_RecordsetPtrm_pRecordset;
m_pRecordset=rst.GetRecordSet((_bstr_t)ssql);
if(m_pRecordset->adoEOF)
{MessageBox("没有关于此日期的记录","餐饮管理系统");
return;}
m_YYE.DeleteAllItems();
var=m_pRecordset->GetCollect("时间");
if(var.vt!
=VT_NULL)
ssql=(LPCSTR)_bstr_t(var);
m_YYE.InsertItem(0,ssql.GetBuffer(50));
var=m_pRecordset->GetCollect("营业额");
if(var.vt!
=VT_NULL)
ssql=(LPCSTR)_bstr_t(var);
m_YYE.SetItemText(0,1,ssql.GetBuffer(50));
var=m_pRecordset->GetCollect("现金");
if(var.vt!
=VT_NULL)
ssql=(LPCSTR)_bstr_t(var);
m_YYE.SetItemText(0,2,ssql.GetBuffer(50));
var=m_pRecordset->GetCollect("支票");
if(var.vt!
=VT_NULL)
ssql=(LPCSTR)_bstr_t(var);
m_YYE.SetItemText(0,3,ssql.GetBuffer(50));
var=m_pRecordset->GetCollect("刷卡");
if(var.vt!
=VT_NULL)
ssql=(LPCSTR)_bstr_t(var);
m_YYE.SetItemText(0,4,ssql.GetBuffer(50));
rst.ExitConnect();}
HBRUSHCYyecx:
:
OnCtlColor(CDC*pDC,CWnd*pWnd,UINTnCtlColor)
{HBRUSHhbr=CDialog:
:
OnCtlColor(pDC,pWnd,nCtlColor);
switch(nCtlColor){
caseCTLCOLOR_EDIT:
caseCTLCOLOR_STATIC:
caseCTLCOLOR_DLG:
caseCTLCOLOR_LISTBOX:
caseCTLCOLOR_MSGBOX:
caseCTLCOLOR_SCROLLBAR:
pDC->SetBkMode(TRANSPARENT);
HBRUSHB=CreateSolidBrush(RGB(234,243,148));
return(HBRUSH)B;
returnCDialog:
:
OnCtlColor(pDC,pWnd,nCtlColor);}}
voidCYyecx:
:
OnPaint()
{CJieMian:
:
OnPaint();}
voidCYyecx:
:
OnNcLButtonDown(UINTnHitTest,CPointpoint)
{//TODO:
Addyourmessagehandlercodehereand/orcalldefault
CJieMian:
:
OnNcLButtonDown(nHitTest,point);}
voidCYyecx:
:
OnSysCommand(UINTnID,LPARAMlParam)
{//TODO:
Addyourmessagehandlercodehereand/orcalldefault
CJieMian:
:
OnSysCommand(nID,lParam);}
BOOLCYyecx:
:
OnInitDialog()
{CDialog:
:
OnInitDialog();
m_QUEDING.LoadBitmaps(IDB_QUEDING);
m_QUEDING.SizeToContent();
m_XSQB.LoadBitmaps(IDB_XSQB);
m_XSQB.SizeToContent();
m_CHAXUN.LoadBitmaps(IDB_CHAXUN);
m_CHAXUN.SizeToContent();
m_YYE.SetTextColor(RGB(0,255,255));
m_YYE.SetTextBkColor(RGB(140,180,20));
m_YYE.SetBkColor(RGB(175,190,0));
m_YYE.InsertColumn(0,"时间",LVCFMT_LEFT,90);
m_YYE.InsertColumn(1,"营业额(元)",LVCFMT_LEFT,80);
m_YYE.InsertColumn(2,"现金(元)",LVCFMT_LEFT,80);
m_YYE.InsertColumn(3,"支票(元)",LVCFMT_LEFT,80);
m_YYE.InsertColumn(4,"刷卡(元)",LVCFMT_LEFT,80);
m_YYE.ModifyStyle(0,LVS_REPORT|LVS_SHOWSELALWAYS|LVS_SINGLESEL);
m_YYE.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_HEADERDRAGDROP);
shuaxin();
returnTRUE;//returnTRUEunlessyousetthefocustoacontrol
//EXCEPTION:
OCXPropertyPagesshouldreturnFALSE}
voidCYyecx:
:
shuaxin()
{m_YYE.DeleteAllItems();
ADOConnrst;
rst.OnInitADOConn();
rst.Open("select*fromYye",adCmdText);
intrecordcount=rst.GetRecordCount();
intii;
for(ii=1;ii<=recordcount;ii++)
{m_YYE.InsertItem(ii-1,"");
m_YYE.SetItemText(ii-1,0,rst.GetFieldValue("时间"));
m_YYE.SetItemText(ii-1,1,rst.GetFieldValue("营业额"));
m_YYE.SetItemText(ii-1,2,rst.GetFieldValue("现金"));
m_YYE.SetItemText(ii-1,3,rst.GetFieldValue("支票"));
m_YYE.SetItemText(ii-1,4,rst.GetFieldValue("刷卡"));
rst.Move(ii);}
rst.ExitConnect();}
voidCYyecx:
:
OnNcMouseMove(UINTnHitTest,CPointpoint)
{//TODO:
Addyourmessagehandlercodehereand/orcalldefault
CJieMian:
:
OnNcMouseMove(nHitTest,point);}
voidCYyecx:
:
OnButton2()
{//TODO:
Addyourcontrolnotificationhandlercodehere
shuaxin();}
voidCYyecx:
:
OnButton3()
{//TODO:
Addyourcontrolnotificationhandlercodehere
CDialog:
:
OnOK();}
BOOLCYyecx:
:
OnSetCursor(CWnd*pWnd,UINTnHitTest,UINTmessage)
{if(pWnd==GetDlgItem(IDC_BUTTON1)||pWnd==GetDlgItem(IDC_BUTTON2)||pWnd==GetDlgItem(IDC_BUTTON3))
{SetCursor(LoadCursor(NULL,IDC_HAND));
returnTRUE;}
returnCDialog:
:
OnSetCursor(pWnd,nHitTest,message);}
运行后如下:
经测试后,发现,该模块可以很流畅的运行,同时,界面中的“查询显示全部确定”操作都能方便的进行。
运行整个系统改系统运行流畅,操作简单,界面管理容易,能胜任一般餐饮企业的工作要求。
设计总结
该餐饮管理系统是基于SQLsever2000和visuac++6.0环境实现的。
该系统总共分为五大模块,可以实现前台营业、营业设置、财务查询、营业分析、系统管理等功能。
运行该模块,输入管理员账号与密码,进入该系统的界面。
可以进入财务管理界面,该界面设计简单,但功能齐全,不仅可以查看当天的营业额及各种支付情况,也可以查询近期一段时间内的营业情况;同时可以方便的进行员工的工资管理。
点击进入餐桌管理界面,可以清晰的看到餐桌的编号、类型、状态、最大进餐人数等一系列的信息。
同时该系统可以方便的进行食品级优惠卡管理。
在食品管理界面,我们不仅可以清楚的看到各种菜系,同时可以详细的为各种菜品进行分类,如熟食类,小吃类。
除此之外,还有香烟等零售品。
在优惠卡管理界面,能详细的标明优惠卡的种类、编号、折扣率等信息,同时可以对优惠卡进行修改、删除、增加操作。
该部分随简单,但可操作性较高。
基本上可以满足一个餐饮企业的需要。
该系统设计新颖,功能齐全;但是由于水平有限,一些技术无法实现导致一些功能无法完成,也有一些不足之处,如:
用户可以随意修改工人的工资,系统财务部分过于复杂,结算方式中刷卡问题无法彻底解决,系统管理员赋予用户的权限这个问题无法彻底结果,管理员与用户权限相同的问题。
学习体会
终于完成了这份工程,心终于可以歇歇了。
当再次回头看看这份课程设计时,感慨万千。
这是一个充实自己的过程,每一天做的事儿就是做程序,翻阅相关书籍,网上XX,起初根本不知道怎么会事儿,后来才知道设计数据库真是一个相当复杂的过程。
你一开始告诉我们要提前做,我们还感觉时间挺长,可是后来才知道你是对的,时间真的过的很快,而我们还毫无进展,那时真是一个着急。
慢慢的静下心来,慢慢摸索,才逐渐有了思路。
这是一个团队的工作,大家一起探讨问题,一起解决问题,在这当中我们学到了团队带来的乐趣以及团队带来的效应。
我们不断找错,改错,不断改进,最终改进到这样的地步,时间仓促,难免有不妥之处,还望老师指点。
最后,很感激学校给了我们这次动手实践的机会,让我们学生有了一个共同学习,增长见识,开拓视野的机会。
也感谢老师们对我们无私忘我的指导,我会以这次课程设计作为对自己的激励,继续学习。
毕竟学习就是一个justdoit的过程。
致谢
该系统的成功开发,不仅仅是我们开发者的功劳,我们要感谢在该系统的开发设计期间,给予我们帮助的王红艺老师、宋晓莉老师以及同学的帮助。
没有他们的帮助我们要完成该设计将会面临很大的挑战。
同时感谢组长周峰同学的支持,给我们了很大的鼓励,作为一个团队,我们锻炼了团队的精神。
宋老师悉心的给予我指导,耐心的给我修改格式,很是感谢。
在此我向那些曾经给予我们帮助的老师、同学致以崇高的谢意。
参考文献
[1]王珊等.数据库系统概论.高等教育出版社,2006
[2]谭浩强