餐饮管理系统1界面图+源代码.docx

上传人:b****7 文档编号:23921456 上传时间:2023-05-22 格式:DOCX 页数:36 大小:182.37KB
下载 相关 举报
餐饮管理系统1界面图+源代码.docx_第1页
第1页 / 共36页
餐饮管理系统1界面图+源代码.docx_第2页
第2页 / 共36页
餐饮管理系统1界面图+源代码.docx_第3页
第3页 / 共36页
餐饮管理系统1界面图+源代码.docx_第4页
第4页 / 共36页
餐饮管理系统1界面图+源代码.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

餐饮管理系统1界面图+源代码.docx

《餐饮管理系统1界面图+源代码.docx》由会员分享,可在线阅读,更多相关《餐饮管理系统1界面图+源代码.docx(36页珍藏版)》请在冰豆网上搜索。

餐饮管理系统1界面图+源代码.docx

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

餐饮管理系统

1、前言

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

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

1.1目的

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

为了企业创先进、争一流,为了企业的发展一套好的系统必不可少.现在餐饮业发展速度飞快,要想在激烈的社会竞争有一席之地,好的服务是最基本的保障,此次开发的餐饮管理系统就是针对现代化社会管理和要求,在服务上提高自己的效率,使自己的公司立于不败之地.

1.2定义

餐饮管理系统,SQL,E-R图

1.3参考资料

《数据库应用系统开发技术》朱如龙刘焰机械出版社2004年8月

《VC++与SQL2000开发技术》汪晓平钟军人民邮电出版社2004年8月

2、系统设计

2.1系统目标设计

餐饮管理系统的主要目标是实现对酒店内部各种管理的电子化、自动化,提高各个模块之间的办公效率,为高质量餐饮服务提供保证。

2.2开发设计思想

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

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

主要特点包括:

*代码菜谱编制,方便统计,方便输入;

*开单、改单、结算、打印、用户界面方便友好;

*系统专设往来账、内部账,结算方式灵活多样,结算消息详尽;

*系统可同前台系统衔接,查询客人信贷情况,往前台客人帐户转账;

*报表真实,实用性强,如:

收银报表汇总收银、支票、信用卡、转帐等情况;菜肴销售报表汇总各种菜肴的日、月销售量;员工销售统计表,可打印值台人员销售业绩核实报表提供依据。

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

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

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

*帐务系统的可扩充性。

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

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

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

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

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

餐厅系统需要完成的功能有以下几点:

*定餐管理:

定餐修改、定餐取消、定金处理、定餐统计、定餐查询、定餐报表。

*收款管理:

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

*交班管理:

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

*系统报表:

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

*系统维护:

餐厅代码设定、餐台号码以及贵宾房设定

特色分类设定、特色编码设定、折扣设定、货币设定、服务费率设定、营业统计项目设定、成本统计项目设定、使用者权限维护、系统备份、系统恢复。

*餐饮成本核算:

成本统计项目设定、成本管理。

2.3系统功能模块设计

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

图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-R

3.3数据库逻辑结构设计

在上面的实体以及实际实体之间关系的基础上,形成数据库中表格以及各个表格之间的关系。

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

每个表格表示在数据库中的一个表

表1-1为值班员ZSP

表1-1值班员表ZSP

列名

数据类型

可否为空

说明

ZSP_NAME

VARCHAR2(20)

NOTNULL

值班员(主键)

ZSP_PSWD

VARCHAR2(10)

NOTNULL

口令

表1-2为菜谱信息表CP

表1-2菜谱信息表CP

列名

数据类型

可否为空

说明

CP_NO

VARCHAR2(10)

NOTNULL

菜谱号(主键)

CP_NAME

VARCHAR2(20)

NULL

菜名称

CP_KIND

VARCHAR2(20)

NULL

种类

CP_PRICE

NUMBER(10)

NULL

价格

CP_DETAIL

VARCHAR2(50)

NULL

描述

表1-3为荣誉客户信息表KH

表1-3荣誉客户信息表KH

列名

数据类型

可否为空

说明

KH_NO

VARCHAR2(10)

NOTNULL

客户号(主键)

KH_NAME

VARCHAR2(20)

NULL

姓名

KH_GENDER

VARCHAR2

(2)

NULL

性别

KH_YEAR

NUMBER(3)

NULL

年龄

KH_JOB

VARCHAR2(20)

NULL

职务

KH_TEL

VARCHAR2(20)

NULL

联系电话

KH_COMPANY

VARCHAR2(20)

NULL

工作单位

表1-4为定餐信息表

表1-4定餐信息表

列名

数据类型

可否为空

说明

DC_DESK

VARCHAR2(20)

NOTNULL

桌号(主键)

CP_NO

VARCHAR2(10)

NOTNULL

菜名号(主键)

CP_NAME

VARCHAR2(20)

NULL

菜名称

DC_NUMBER

NUMBER(3)

NULL

数量

DC_DATE

DATE

NULL

定餐日期末(主键

表1-5为结算信息表JS

表1-5结算信息表JS

列名

数据类型

可否为空

说明

KH_NO

VARCHAR2(20)

NOTNULL

客户号(主键)

DC_DESK

VARCHAR2(20)

NULL

桌号

JS_DZ

NUMBER(3

NULL

打折情况

TOTAL

NUMBER(5)

NULL

总计

JS_DATE

DATE

NOTNULL

日期

usemaster

GO%droptheexistdatabase

ifexists(select*fromdbo.sysdatabaseswherename='RMS')

dropdatabaseRMS

GO

createdatabaseRMS%createdatabase

GO

useRMS

GO%dropexisttables

ifexists(select*fromdbo.sysobjectswhereid=object_id(N'READERS')

andOBJECTPROPERTY(id,N'IsUserTable')=1)

droptableCP

GO

ifexists(select*fromdbo.sysobjectswhereid=object_id(N'POPEDOM')

andOBJECTPROPERTY(id,N'IsUserTable')=1)

droptableZBY

GO

ifexists(select*fromdbo.sysobjectswhereid=object_id(N'BOOKS')

andOBJECTPROPERTY(id,N'IsUserTable')=1)

droptableKH

GO

ifexists(select*fromdbo.sysobjectswhereid=object_id(N'BOOKREADERS')

andOBJECTPROPERTY(id,N'IsUserTable')=1)

droptableDC

GO

ifexists(select*fromdbo.sysobjectswhereid=object_id(N'MANAGERS')

andOBJECTPROPERTY(id,N'IsUserTable')=1)

droptableJS

GO

CREATETABLE“JD”.CP

CP_NOVARCHAR2(10)NOTNULL,

CP_NAMEVARCHAR2(20)NULL,

CP_KINDVARCHAR(10)NULL,

CP_PRICENUMBER(10)NULL,

CP_DETAILVARCHAR2(50)NULL,

CONSTRAINTCP_NO_PKPRIMARYKEY(CP_NO)

TABLESPACE”USER_DATA”;

CREATETABLE“JD”.ZBY

ZBY_NAMEVARCHAR2(20)NULL,

ZBY_PSWDVARCHAR2(10)NULL,

CONSTRAINTZBY_NAME_PKPRIMARYKEY(ZBY_NAME)

TABLESPACE”USER_DATA”;

CREATETABLE“JD”.KH

KH_NOVARCHAR2(10)NOTNULL,

KH_NAMEVARCHAR2(20)NULL,

KH_GENDERVARCHAR2

(2)NULL,

KH_YEARVARCHAR(3)NULL,

KH_JOBVARCHAR2(20)NULL,

KH_TELVARCHAR2(20)NULL,

KH_COMPANYVARCHAR2(20)NULL,

CONSTRAINTKH_NO_PKPRIMARYKEY(KH_NO)

TABLESPACE”USER_DATA”;

CREATETABLE“JD”.DC

DC_DESKVARCHAR2(10)NOTNULL,

CP_NOVARCHAR2(10)NOTNULL,

CP_NAMEVARCHAR2(20)NULL,

DC_NUMBERNUMBER(3)NULL,

DC_DATEDATENOTNULL,

CONSTRAINTDC_PK

PRIMARYKEY(DC_DESK,CP_NO,DC_DATE)

TABLESPACE”USER_DATA”;

CREATETABLE“JD”.JS

KH_NOVARCHAR2(20)NOTNULL,

DC_DESKVARCHAR2(20)NULL,

JS_DZNUMBER(3)NULL,

TOTALNUMBER(5)NULL,

JS_DATEDATENOTNULL,

CONSTRAINTJS_PK

PRIMARYKEY(KH_NO,JS_DATE)

TABLESPACE”USER_DATA”;

3.4数据字典

数据项

数据项描述={数据项名,数据项含义说明,别名,数据类型,

长度,取值范围,取值含义,与其他数据项的逻辑关系}

 

值班员数据项描述

数据项

含义说明

别名

类型

长度

可否为空

取值含义

与其它数据项的逻辑关系

用户名

唯一标识

名字

Char

20

NOTNULL

密码

varChar

10

NOTNULL

权限

管理权力

Varchar

50

NOTNULL

菜谱信息数据项描述

数据项

含义说明

别名

数据类型

长度

可否为空

取值含义

与其它数据项

的逻辑关系

菜谱编号

唯一标识

名字

Varchar

20

NOTNULL

菜名称

varChar

20

NOTNULL

种类

Varchar

20

NULL

价格

Number

10

NULL

描述

Varchar

50

NULL

荣誉客户信息数据项描述

数据项

含义说明

别名

数据类型

长度

可否为空

取值含义

与其它数据项

的逻辑关系

客户号

唯一标识

名字

Varchar

10

NOTNULL

姓名

Varchar

20

NULL

性别

Varchar

2

NULL

年龄

Number

3

NULL

职务

Vachar

0

NULL

联系电话

Vachar

20

NULL

工作单位

Vachar

20

NULL

订餐信息数据项描述

数据项

含义说明

别名

数据类型

长度

可否为空

取值含义

与其它数据项

的逻辑关系

桌号

唯一标识

Varchar

20

NOTNULL

菜谱号

唯一标识

varChar

10

NOTNULL

菜名称

Varchar

20

NULL

数量

Number

3

NULL

订餐日期

唯一标识

Date

NULL

 

结算信息数据项描述

数据项

含义说明

别名

数据类型

长度

可否为空

取值含义

与其它数据项

的逻辑关系

客户号

唯一标识

Varchar

20

NOTNULL

桌号

varChar

20

NULL

打折情况

Varchar

3

NULL

总计

Number

5

NULL

日期

Date

NOTNULL

用户数据结构描述

数据结构名

用户

含义说明

定义了一个用户的所有有关的信息

组成

姓名、性别、客户号、年龄、联系电话、工作单位等

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()的代码如下,它来处理登陆事务。

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

voidCRMSDlg:

:

OnBtnLogin()

{

CDlgLogindlg;

dlg.DoModal();

try

{

CStringsql_;

sql_.Format("SELECTZBY_NAMEFROMZBYWHEREZBY_NAME='%s'ANDZBY_PSWD='%s'",

dlg.m_name,dlg.m_pswd);

_bstr_tsql=sql_;

_RecordsetPtrpRst;

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;

}

}

voidCRMSDlg:

:

OnBtnUpdpwd()

{

CDlgUpdPwddlg;

dlg.DoModal();

if(dlg.m_newpswd!

=dlg.m_newpswd2)

{

MessageBox("两次输入新密码不一致!

");

return;

}

下面是一段SQL语句:

sql_format(“SELECTZBYNAMEFORMZBYWHEREZBYNAME+’%s’”

“ANDZBY_PSWD=’%s’”dlg.m_name,dlg.m_pswd);

这里并没有取出ZBY表中的所有字段(ZBY_NAME和ZBY_PSWD),然后把密码字段和用户的输入作比较来决定登录的与否;而是只取出了值班员名字(ZBY_NAME),密码的校验放在数据库服务器端进行。

这主要是基于安全考虑。

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

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

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

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

所以只给代码,

voidCRMSDlg:

:

OnBtnUpdpwd()

{

CDlgUpdPwddlg;

dlg.DoModal();

if(dlg.m_newpswd!

=dlg.m_newpswd2)

{

MessageBox("两次输入新密码不一致!

");

return;

}

try

{

CStringsql_;

sql_.Format("SELECTZBY_NAMEFROMZBYWHEREZBY_NAME='%s'ANDZBY_PSWD='%s'",

dlg.m_name,dlg.m_oldpswd);

_bstr_tsql=sql_;

_RecordsetPtrpRst;

pRst=m_DBCnt->Execute(sql,NULL,adCmdText);

if(pRst->adoEOF)

{

MessageBox("密码错误!

");

pRst->Close();

return;

}

pRst->Close();

sql_.Format("UpdateZBYSETZBY_PSWD='%s'WHEREZBY_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的管理界面。

在资源编辑器中加入一个对话框,用ClassWizard为这个对话框生成一个类,名为CDlgViewZBY.在CRMSDlg的按钮事件处理函数中加入这样的代码来激活这个对话框。

voidCRMSDlg:

:

OnBtnZby()

{

CDlgViewZBYdlg;

ShowWindow(SW_HIDE);

dlg.DoModal();

ShowWindow(SW_SHOW);

}

这个模块,我们采用ADO的ActiveX控件来实现对数据库表格的管理。

 

4.3设计菜谱管理模块

不同的用户需要不同界面每个窗口都需要和数据库连接,这一浪费了资源,也降低了系统性能,所以好的用户需要一个好的菜谱管理模块。

此对话框设计如下图所示。

这里用一个列表控件显示读取的数据记录。

在C

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 院校资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1