您好,欢迎来到爱go旅游网。
搜索
您的当前位置:首页小型餐饮管理系统-数据库设计报告

小型餐饮管理系统-数据库设计报告

来源:爱go旅游网
 . .

第一章 设计任务与要求

目的及意义:

此小型餐饮业管理系统的设计主要是为了方便管理,对于各个进出账目,支出和收入的管理便于系统化,在每月汇总计算中分析运营趋势和餐馆的发展方向进行一定的规划。通过各个月的盈利进行对比,分析那种方式更适合餐馆的有利运营和更好地服务顾客。实现对餐馆内部各种管理的电子化、自动化,提高各个模块之间的办公效率,为高质量餐馆服务提供保证。 任务:

1.能够实现对该系统进行管理的人员的权限; 2.使餐馆能够及时并灵活的对菜品品种其价位等进行管理;

3.为餐馆提供从客户点餐到结算等一系列操作的服务,使之能简单易行、方便、 清楚地进行管理

word教育资料

. .

第二章 系统功能分析

一.功能需求:餐饮管理系统中主要包括对以下几种管理:账单管理,财务管理,订餐管理,菜品管理,系统管理。

(1)系统管理:系统管理包括用户名和密码,主要用于用户登陆界面登陆和查询。 (2)账单管理:账单管理包括账单号和餐台,每一个餐台对应一个一个账单号,通过餐台号的记录来对对应的餐台进行记账管理,即就是记录每一个餐台的消费金额。账单管理是财务管理的一个小分支,是服务于财务管理的。

(3)财务管理:包括账单号,时间和账目。账目用于记录账单号的消费金额及时间,以便用于结算和汇总。每日的结算要通过对每个餐台号的消费金额汇总来记录,然后由每日的结算汇总得出每月的结算。帐务系统功能的完整性。一旦该系统正式运行,餐厅每日营业帐和全部往来客户帐务的操作结算都将依靠计算机,该系统面对当前餐饮业各种复杂的结算要求应具有很强的应变能力。

(4)订餐管理:订餐管理仅包括单价。订餐管理是便于顾客订餐和账单管理时对各

个菜品消费金额的记录,这样便于账单管理和财务汇总。

(5)菜品管理:菜品管理包括菜名,菜品类别和菜品品种。菜品管理便于顾客点菜和记录各个餐台的消费记账,菜品品种也便于餐馆的食材采购。

二. 数据需求:账单管理中账单号是主键,每一个餐台对应一个账单号。财务管理

word教育资料

. .

中账单号是主键,每一个账单号都有对应的时间和账目记录。订餐管理中单价就是主键。菜品管理中菜名是主键。系统管理中用户名是主键。

三. 性能需求:该餐饮系统操作简单方便可适应各类中小型餐馆。

第三章 系统功能模块设计

一. 在该系统功能分析的基础上,考虑PowerBuilder程序编制的特点,得到如下功能模块图。

小型餐饮业管理系统 系统管理 账单管理 菜品管理 订餐管理 财务管理 用户管理 密码管理 账单号管理 餐台管理 订单查询 菜名管理 菜品管理 菜价管理 类别管理 餐台点餐管理 账目时间管理 每日账目管理

图1 系统功能模块图

二. 数据库设计

word教育资料

. .

1. 概念结构设计

账单管理账单号餐台...账单订餐联系菜品管理菜名单价菜品类别菜品品种点菜...账单财务联系财务管理时间账目...系统管理用户名密码...订餐管理菜名单价...

2. 逻辑结构设计

ZHANGDAGLZHANGDAN_NUMBERnumericZHANGDAN_CANTAInumericFK_CAIWUGL_RELATION__ZHANGDAGZHANGDAN_NUMBER = ZHANGDAN_NUMBERCAIWUGLZHANGDAN_NUMBERnumericCAIWU_TIMEtimestampCAIWU_AMOUNTFK_RELATION_RELATION__ZHANGDAGZHANGDAN_NUMBER = ZHANGDAN_NUMBERXTGLUSERNAMEchar(20)PASSWORDchar(8)RELATION_418ZHANGDAN_NUMBERnumericCPGL_NAMEchar(20)CPGL_DANJIAintegerCAIPINGLFK_RELATION_RELATION__CAIPINGLCPGL_NAME = CPGL_NAMECPGL_DANJIA = CPGL_DANJIACPGL_NAMECPGL_DANJIACPGL_LEIBIECPGL_PINGZHONGCPGL_DIANCAIchar(20)integerchar(8)char(8)integer 3. 数据库实施

1) 数据库及表结构的创建

设本系统使用的数据库名为小型餐饮业管理系统,根据已设计的关系模式及各模式的完整性要求,现在就可以在SQL Server 6.x数据库系统中实现这些逻辑结构。 下面是创建基本表的SQL语句:

/* ============================================================ */ /* Table: CAIPINGL */

word教育资料

. .

/* ============================================================ */ create table CAIPINGL (

CPGL_NAME char(20) not null, CPGL_DANJIA integer not null, CPGL_LEIBIE char(8) null , CPGL_PINGZHONG char(8) null , CPGL_DIANCAI integer null ,

constraint PK_CAIPINGL primary key (CPGL_NAME, CPGL_DANJIA) ) go

/* ============================================================ */ /* Table: XTGL */ /* ============================================================ */ create table XTGL (

USERNAME char(20) not null, PASSWORD char(8) not null, constraint PK_XTGL primary key (USERNAME, PASSWORD) ) go

/* ============================================================ */ /* Table: ZHANGDAGL */ /* ============================================================ */ create table ZHANGDAGL (

ZHANGDAN_NUMBER numeric not null, ZHANGDAN_CANTAI numeric null , CAI_ZHANGDAN_NUMBER numeric null , constraint PK_ZHANGDAGL primary key (ZHANGDAN_NUMBER) ) go

/* ============================================================ */ /* Index: RELATION_383_FK */ /* ============================================================ */ create index RELATION_383_FK on ZHANGDAGL (CAI_ZHANGDAN_NUMBER) go

/* ============================================================ */ /* Table: CAIWUGL */ /* ============================================================ */ create table CAIWUGL (

ZHANGDAN_NUMBER numeric not null, CAIWU_TIME timestamp null , CAIWU_AMOUNT char(10) null ,

word教育资料

. .

constraint PK_CAIWUGL primary key (ZHANGDAN_NUMBER) ) go

/* ============================================================ */ /* Table: DINGCANGL */ /* ============================================================ */ create table DINGCANGL (

ZHANGDAN_NUMBER numeric not null, DCGL_NAME char(20) not null, DCGL_DANJIA int not null,

constraint PK_DINGCANGL primary key (ZHANGDAN_NUMBER, DCGL_NAME, DCGL_DANJIA) ) go

/* ============================================================ */ /* Index: RELATION_451_FK */ /* ============================================================ */ create index RELATION_451_FK on DINGCANGL (ZHANGDAN_NUMBER) go

建立相关触发器,执行级联删除

* ============================================================ */ /* Database name: MODEL_1 */ /* DBMS name: Microsoft SQL Server 6.x */ /* Created on: 2010-1-21 18:15 */ /* ============================================================ */

/* Insert trigger \"ti_caiwugl\" for table \"CAIWUGL\" */ create trigger ti_caiwugl on CAIWUGL for insert as begin

declare

@numrows int, @numnull int, @errno int,

@errmsg varchar(255)

select @numrows = @@rowcount if @numrows = 0 return

/* Parent \"ZHANGDAGL\" must exist when inserting a child in \"CAIWUGL\" */ if update(ZHANGDAN_NUMBER) begin

if (select count(*)

from ZHANGDAGL t1, inserted t2

where t1.ZHANGDAN_NUMBER = t2.ZHANGDAN_NUMBER) != @numrows

word教育资料

. .

begin

select @errno = 30002,

@errmsg = 'Parent does not exist in \"ZHANGDAGL\". Cannot create child in \"CAIWUGL\".'

goto error end end

return

/* Errors handling */ error:

raiserror @errno @errmsg rollback transaction end go

/* Update trigger \"tu_caiwugl\" for table \"CAIWUGL\" */ create trigger tu_caiwugl on CAIWUGL for update as begin

declare

@numrows int, @numnull int, @errno int,

@errmsg varchar(255)

select @numrows = @@rowcount if @numrows = 0 return

/* Parent \"ZHANGDAGL\" must exist when updating a child in \"CAIWUGL\" */ if update(ZHANGDAN_NUMBER) begin

if (select count(*)

from ZHANGDAGL t1, inserted t2

where t1.ZHANGDAN_NUMBER = t2.ZHANGDAN_NUMBER) != @numrows begin

select @errno = 30003,

@errmsg = '\"ZHANGDAGL\" does not exist. Cannot modify child in \"CAIWUGL\".' goto error end end

/* Modify parent code of \"CAIWUGL\" for all children in \"ZHANGDAGL\" */ if update(ZHANGDAN_NUMBER) begin

update ZHANGDAGL

set CAI_ZHANGDAN_NUMBER = i1.ZHANGDAN_NUMBER

word教育资料

. .

from ZHANGDAGL t2, inserted i1, deleted d1

where t2.CAI_ZHANGDAN_NUMBER = d1.ZHANGDAN_NUMBER and (i1.ZHANGDAN_NUMBER != d1.ZHANGDAN_NUMBER) end

return

/* Errors handling */ error:

raiserror @errno @errmsg rollback transaction end go

/* Delete trigger \"td_caiwugl\" for table \"CAIWUGL\" */ create trigger td_caiwugl on CAIWUGL for delete as begin

declare

@numrows int, @errno int,

@errmsg varchar(255)

select @numrows = @@rowcount if @numrows = 0 return

/* Delete all children in \"ZHANGDAGL\" */ delete ZHANGDAGL

from ZHANGDAGL t2, deleted t1

where t2.CAI_ZHANGDAN_NUMBER = t1.ZHANGDAN_NUMBER

return

/* Errors handling */ error:

raiserror @errno @errmsg rollback transaction end go

/* Insert trigger \"ti_dingcangl\" for table \"DINGCANGL\" */ create trigger ti_dingcangl on DINGCANGL for insert as begin

declare

@numrows int, @numnull int, @errno int,

@errmsg varchar(255)

word教育资料

. .

select @numrows = @@rowcount if @numrows = 0 return

/* Parent \"ZHANGDAGL\" must exist when inserting a child in \"DINGCANGL\" */ if update(ZHANGDAN_NUMBER) begin

if (select count(*)

from ZHANGDAGL t1, inserted t2

where t1.ZHANGDAN_NUMBER = t2.ZHANGDAN_NUMBER) != @numrows begin

select @errno = 30002,

@errmsg = 'Parent does not exist in \"ZHANGDAGL\". Cannot create child in \"DINGCANGL\".'

goto error end end

return

/* Errors handling */ error:

raiserror @errno @errmsg rollback transaction end go

/* Update trigger \"tu_dingcangl\" for table \"DINGCANGL\" */ create trigger tu_dingcangl on DINGCANGL for update as begin

declare

@numrows int, @numnull int, @errno int,

@errmsg varchar(255)

select @numrows = @@rowcount if @numrows = 0 return

/* Parent \"ZHANGDAGL\" must exist when updating a child in \"DINGCANGL\" */ if update(ZHANGDAN_NUMBER) begin

if (select count(*)

from ZHANGDAGL t1, inserted t2

where t1.ZHANGDAN_NUMBER = t2.ZHANGDAN_NUMBER) != @numrows

word教育资料

. .

begin

select @errno = 30003,

@errmsg = '\"ZHANGDAGL\" does not exist. Cannot modify child in \"DINGCANGL\".' goto error end end

return

/* Errors handling */ error:

raiserror @errno @errmsg rollback transaction end go

/* Insert trigger \"ti_zhangdagl\" for table \"ZHANGDAGL\" */ create trigger ti_zhangdagl on ZHANGDAGL for insert as begin

declare

@numrows int, @numnull int, @errno int,

@errmsg varchar(255)

select @numrows = @@rowcount if @numrows = 0 return

/* Parent \"CAIWUGL\" must exist when inserting a child in \"ZHANGDAGL\" */ if update(CAI_ZHANGDAN_NUMBER) begin

select @numnull = (select count(*) from inserted

where CAI_ZHANGDAN_NUMBER is null) if @numnull != @numrows if (select count(*)

from CAIWUGL t1, inserted t2

where t1.ZHANGDAN_NUMBER = t2.CAI_ZHANGDAN_NUMBER) != @numrows - @numnull begin

select @errno = 30002,

@errmsg = 'Parent does not exist in \"CAIWUGL\". Cannot create child in \"ZHANGDAGL\".'

goto error end end

return

word教育资料

. .

/* Errors handling */ error:

raiserror @errno @errmsg rollback transaction end go

/* Update trigger \"tu_zhangdagl\" for table \"ZHANGDAGL\" */ create trigger tu_zhangdagl on ZHANGDAGL for update as begin

declare

@numrows int, @numnull int, @errno int,

@errmsg varchar(255)

select @numrows = @@rowcount if @numrows = 0 return

/* Parent \"CAIWUGL\" must exist when updating a child in \"ZHANGDAGL\" */ if update(CAI_ZHANGDAN_NUMBER) begin

select @numnull = (select count(*) from inserted

where CAI_ZHANGDAN_NUMBER is null) if @numnull != @numrows if (select count(*)

from CAIWUGL t1, inserted t2

where t1.ZHANGDAN_NUMBER = t2.CAI_ZHANGDAN_NUMBER) != @numrows - @numnull begin

select @errno = 30003,

@errmsg = '\"CAIWUGL\" does not exist. Cannot modify child in \"ZHANGDAGL\".' goto error end end

/* Modify parent code of \"ZHANGDAGL\" for all children in \"CAIWUGL\" */ if update(ZHANGDAN_NUMBER) begin

update CAIWUGL

set ZHANGDAN_NUMBER = i1.ZHANGDAN_NUMBER from CAIWUGL t2, inserted i1, deleted d1 where t2.ZHANGDAN_NUMBER = d1.ZHANGDAN_NUMBER and (i1.ZHANGDAN_NUMBER != d1.ZHANGDAN_NUMBER) end

word教育资料

. .

/* Modify parent code of \"ZHANGDAGL\" for all children in \"DINGCANGL\" */ if update(ZHANGDAN_NUMBER) begin

update DINGCANGL

set ZHANGDAN_NUMBER = i1.ZHANGDAN_NUMBER from DINGCANGL t2, inserted i1, deleted d1 where t2.ZHANGDAN_NUMBER = d1.ZHANGDAN_NUMBER and (i1.ZHANGDAN_NUMBER != d1.ZHANGDAN_NUMBER) end

return

/* Errors handling */ error:

raiserror @errno @errmsg rollback transaction end go

/* Delete trigger \"td_zhangdagl\" for table \"ZHANGDAGL\" */ create trigger td_zhangdagl on ZHANGDAGL for delete as begin

declare

@numrows int, @errno int,

@errmsg varchar(255)

select @numrows = @@rowcount if @numrows = 0 return

/* Delete all children in \"CAIWUGL\" */ delete CAIWUGL

from CAIWUGL t2, deleted t1

where t2.ZHANGDAN_NUMBER = t1.ZHANGDAN_NUMBER

/* Delete all children in \"DINGCANGL\" */ delete DINGCANGL

from DINGCANGL t2, deleted t1

where t2.ZHANGDAN_NUMBER = t1.ZHANGDAN_NUMBER

return

/* Errors handling */ error:

raiserror @errno @errmsg rollback transaction end

word教育资料

. .

go

2) 数据库前台的设计

根据数据库的设计,该餐饮业管理系统可以分成四个子模块:

 订餐管理 根据客户的点菜单,采用checkbox从已有菜品中选定菜品,并记录。  菜品管理 用户可以根据餐馆现行情况动态管理菜品,可以对菜品进行品种、类别的分类,并可以即时调整菜价;对菜品的调整,如添加删除,会级联添加和删除订餐管理中菜单一栏中的内容。

 账单管理 用户根据现餐馆内的用餐情况对各餐台进行管理,同时可以查询客户的点餐情况。

 财务管理 记录餐馆的营业情况,按时间、账单号进行管理,同时可用于客户结账。

第四章 运行结果与测试

一. 系统运行 1. 系统登录界面

word教育资料

. .

用户输入已注册过的用户名和密码,非法用户不得进入系统。 2. 总系统界面

用户根据需要对系统选择相应功能,进行模块化管理。 3. 账单管理系统界面

word教育资料

. .

一个账单号对应一个客户,通过账单号对各个客户的消费进行管理,可进行添加删除操作,并可对各个客户的消费情况进行查询。 4. 订餐管理系统

word教育资料

. .

用户依据客户的点菜单,以打勾方式,从右边的菜单框中选择菜品输入到左边订餐框中,从而对客户的消费进行记录。 5. 菜品管理管理系统

用户根据需要可即时调整菜品的菜名、品种、类别、单价,同时可以进行查询当前菜品情况。 6. 财务管理系统

word教育资料

. .

记录各个客户的消费时间(结账时间)、账单号、账目,方便日后进行财务统计,和核对;可进行添加、删除、查询操作。 二. 调试中出现的问题说明与解决

1. 在做订餐管理系统时,出现订餐结果无法输入到数据库的现象。经检查发现是主键设置出现问题,修改后系统正常运行。

2. 做账目管理系统时,时间属性无法输入,经检查,是在概念模型设置时所选择的格式不当导致SQL语句生成出现问题,修改后系统正常运行。

word教育资料

参考资料:

《数据库原理与应用》 作者:高荣芳

《PowerBuilder数据库开发技术》word教育资料

. .

作者:陈佳友

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务