当前位置:文档之家› 餐饮管理系统(1)界面图+源代码

餐饮管理系统(1)界面图+源代码

餐饮管理系统1、前言在餐饮业务竞争越来越激烈的今天,如何提高服务质量,其管理能力显的越来越重要。

尤其是对一些大的餐饮店,餐饮店内部服务项目越多,管理难度越大,既要处理前台又要处理后台的工作,所以一个好的管理系统可以提高酒店的管理水平也可以大幅度提高酒店服务水平。

1.1目的随着当今社会信息化的日新月异的发展,计算机应用已经渗透到日常工作的许多方面无论是其自身还是所发挥的作用,计算机都标志着一种高科技、高效率和高水平。

为了企业创先进、争一流,为了企业的发展一套好的系统必不可少.现在餐饮业发展速度飞快,要想在激烈的社会竞争有一席之地,好的服务是最基本的保障,此次开发的餐饮管理系统就是针对现代化社会管理和要求,在服务上提高自己的效率,使自己的公司立于不败之地.1.2定义餐饮管理系统,SQL,E-R图1.3 参考资料《数据库应用系统开发技术》朱如龙刘焰机械出版社2004年8月《VC++与SQL2000开发技术》汪晓平钟军人民邮电出版社2004年8月2、系统设计2.1系统目标设计餐饮管理系统的主要目标是实现对酒店内部各种管理的电子化、自动化,提高各个模块之间的办公效率,为高质量餐饮服务提供保证。

2.2开发设计思想餐厅系统是按照国内餐饮行业最新要求开发的全心概念的信息管理系统。

该系统将餐厅收银、往来帐务结算及销售情况统计工作在单计算机或网络系统中完成。

主要特点包括:*代码菜谱编制,方便统计,方便输入;*开单、改单、结算、打印、用户界面方便友好;*系统专设往来账、内部账,结算方式灵活多样,结算消息详尽;*系统可同前台系统衔接,查询客人信贷情况,往前台客人帐户转账;*报表真实,实用性强,如:收银报表汇总收银、支票、信用卡、转帐等情况;菜肴销售报表汇总各种菜肴的日、月销售量;员工销售统计表,可打印值台人员销售业绩核实报表提供依据。

*账务系统共讷讷感的完整性。

一旦该系统正式运行,餐厅每日的营业账和全部往来客户的账务操作结算都将依靠计算机,该系统面对当前餐厅餐饮业各种负复杂的结算要求应具有很强的应变能力。

为此本系统为适应拥护的要求,设计了完整的转帐功能。

*帐务系统的可扩充性。

由于餐厅业务的扩展,势必要求帐务结算系统随之扩展,在不修改程序的前提下,本系统可在相当可观的范围内,由用户扩展其营业项目和结算手段。

*帐务操作数据的可校验性。

本系统提供了多种方便的查询,校核和统计功能,共帐务操作人员和专职人员自校对帐务数据。

如当班收银员下班的时候直接统计当班期间的输单、收银情况。

为餐饮企业管理人员提供及时准确的经营状况和帐务信贷系统情况。

餐厅系统需要完成的功能有以下几点:*定餐管理:定餐修改、定餐取消、定金处理、定餐统计、定餐查询、定餐报表。

*收款管理:立帐、校费明细录入、特色菜自定义、追加消费、消费修改、消费取消、加位、更改台号、折扣设定、消费服务设定、帐单打印、现付结算和房帐转录。

*交班管理:统计当班数据、为下班操作做准备、当班帐务流水报表。

*系统报表:餐饮销售分析报表、每菜销售统计报表、营业收入报表、每菜销售统计日报表和当班特色菜报表。

*系统维护:餐厅代码设定、餐台号码以及贵宾房设定特色分类设定、特色编码设定、折扣设定、货币设定、服务费率设定、营业统计项目设定、成本统计项目设定、使用者权限维护、系统备份、系统恢复。

*餐饮成本核算:成本统计项目设定、成本管理。

2.3系统功能模块设计在系统功能分析的基础上,考虑Visual C++的编程特点,得到如下面功能模块图。

图1-1为餐厅系统餐饮系统的功能模块图。

餐饮系统功能图由上面的餐饮系统的功能分析,可以看出一个餐饮管理系统是一个复杂的系统工程,涉及到系统的各个方面。

由于篇幅的问题就不具体的介绍了。

3、数据库设计在数据库系统开始设计的时候应该尽量考虑全面,尤其应该仔细考虑用户的各种需求,避免浪费不必要的人力和物力。

3.1数据库需求分析在仔细调查餐饮日产管理过程的基础上,得到本系统所处理的数据流程图如图1-2所示。

餐饮管理数据流程图针对本市里,通过对餐饮系统管理系统的内容和数据流程分析,设计的数据项和数据结构如下。

*菜谱信息。

包括的数据项有菜谱号、名称、所属价格、种类、描述等。

*值班员信息。

包括数据项有值班员的姓名和口令。

*荣誉客户信息。

包括的数据项有客户号、客户姓名、年龄、性别、职称、联系电话、工作单位等。

*定餐信息。

包括的数据项有客户号、桌号、结算日期、打折情况和总计等。

有了上面的数据结构、数据项和数据流程,就能进行下面的数据库设计。

3.2数据库概念设计本实例根据上面的设计规划出的实体有:菜谱实体、值班员实体、客户实体、定餐实体和结算实体。

各个实体具体的描叙E-R图及其之间的关系描述如下。

图1-3为菜谱实体E-R图。

菜谱实体E-R图图1-4为值班员实体E-R图值班员实体E-R图图1-5为客户实体E-R图客户实体E-R图图1-6为订餐信息实体E-R图订餐信息实体E-R 图图1-7为结算信息实体E-R 图实体和实体之间的关系E-R 图如图1-8所示实体之间的关系E-R3.3数据库逻辑结构设计在 上面的实体以及实际实体之间关系的基础上,形成数据库中表格以及各个表格之间的关系。

餐饮管理系统数据库中各个表格的设计结果如下面的几个表格所示。

每个表格表示在数据库中的一个表表1-1为值班员ZSP表1-2为菜谱信息表CP表1-3为荣誉客户信息表KH表1-3 荣誉客户信息表KH表1-4为定餐信息表表1-4 定餐信息表表1-5为结算信息表JS3.4数据字典数据项数据项描述={数据项名,数据项含义说明,别名,数据类型,长度,取值范围,取值含义,与其他数据项的逻辑关系}菜谱信息数据项描述荣誉客户信息数据项描述订餐信息数据项描述用户数据结构描述3.5 数据库物理结构设计数据库物理设计指确定数据库在物理设备上的存储结构与存取方法。

确定数据库的物理结构:是否聚集存储,如何建立索引,数据的存放位置,确定系统配置等。

介于本系统数据库的简单性,我们没有采用聚集存储之类的结构设计。

4、功能模块设计4.1 设计登录和口令管理模块在未登录时,主对话框中的按钮,除了“登录”“退出”“帮助”“关于”等项,全是不可用的。

为达到这一效果,在CRMSDlg::OnInitDialog()中加入如下代码:GetDlgItem(IDC_BTN_UPDPWD)->EnableWindow(FALSE);GetDlgItem(IDC_BTN_DC)->EnableWindow(FALSE);GetDlgItem(IDC_BTN_JS)->EnableWindow(FALSE);GetDlgItem(IDC_BTN_KH)->EnableWindow(FALSE);GetDlgItem(IDC_BTN_CP)->EnableWindow(FALSE);GetDlgItem(IDC_BTN_ZBY)->EnableWindow(FALSE);GetDlgItem(IDC_BTN_VIEWDC)->EnableWindow(FALSE);然后在资源编辑器加入如图所示的登录对话框。

主对话框的事件处理函数CRMSDlg::OnBtnLogin()的代码如下,它来处理登陆事务。

若成功,则使所有的按钮变为可用,示意登录成功。

void CRMSDlg::OnBtnLogin(){CDlgLogin dlg;dlg.DoModal();try{CString sql_;sql_.Format("SELECT ZBY_NAME FROM ZBY WHERE ZBY_NAME='%s' AND ZBY_PSWD='%s'",dlg.m_name, dlg.m_pswd);_bstr_t sql = sql_;_RecordsetPtr pRst;pRst = m_DBCnt->Execute(sql, NULL, adCmdText);if (!pRst->adoEOF){MessageBox("登录成功!");GetDlgItem(IDC_BTN_UPDPWD)->EnableWindow(TRUE);GetDlgItem(IDC_BTN_DC)->EnableWindow(TRUE);GetDlgItem(IDC_BTN_JS)->EnableWindow(TRUE);GetDlgItem(IDC_BTN_KH)->EnableWindow(TRUE);GetDlgItem(IDC_BTN_CP)->EnableWindow(TRUE);GetDlgItem(IDC_BTN_ZBY)->EnableWindow(TRUE);GetDlgItem(IDC_BTN_VIEWDC)->EnableWindow(TRUE);} else{MessageBox("登录失败!");}pRst->Close();}catch(_com_error& e){AfxMessageBox(e.ErrorMessage());return;}}void CRMSDlg::OnBtnUpdpwd(){CDlgUpdPwd dlg;dlg.DoModal();if (dlg.m_newpswd!=dlg.m_newpswd2){MessageBox("两次输入新密码不一致!");return;}下面是一段SQL语句:sql_format(“SELECT ZBY NAME FORM ZBY WHERE ZBY NAME+’%s’”“AND ZBY_PSWD=’%s’”dlg.m_name,dlg.m_pswd);这里并没有取出ZBY表中的所有字段(ZBY_NAME和ZBY_PSWD),然后把密码字段和用户的输入作比较来决定登录的与否;而是只取出了值班员名字(ZBY_NAME),密码的校验放在数据库服务器端进行。

这主要是基于安全考虑。

如果没有确实的需要,就竟量不从数据库里取用户密码这种敏感数据。

虽然这只是一个细节,但是很多安全漏洞都是又对这种细节的忽视应起的。

登录成功后可以单击“修改口令”按钮激活“修改口令”界面如图所示。

这部分事务的处理代码和登录处理类时,只是更为繁琐。

所以只给代码,void CRMSDlg::OnBtnUpdpwd(){CDlgUpdPwd dlg;dlg.DoModal();if (dlg.m_newpswd!=dlg.m_newpswd2){MessageBox("两次输入新密码不一致!");return;}try{CString sql_;sql_.Format("SELECT ZBY_NAME FROM ZBY WHERE ZBY_NAME='%s' AND ZBY_PSWD='%s'",dlg.m_name, dlg.m_oldpswd);_bstr_t sql = sql_;_RecordsetPtr pRst;pRst = m_DBCnt->Execute(sql, NULL, adCmdText);if (pRst->adoEOF){MessageBox("密码错误!");pRst->Close();return;}pRst->Close();sql_.Format("Update ZBY SET ZBY_PSWD='%s' WHERE ZBY_NAME='%s'",dlg.m_newpswd, dlg.m_name);sql = sql_;m_DBCnt->Execute(sql, NULL, adCmdText);MessageBox("修改密码成功!");}catch(_com_error& e){AfxMessageBox(e.ErrorMessage());return;}}4.2设计值班员管理模块下面开始设计值班员表(ZBY0的管理界面。

相关主题