第一章设计任务与要求目的及意义:此小型餐饮业管理系统的设计主要是为了方便管理,对于各个进出账目,支出和收入的管理便于系统化,在每月汇总计算中分析运营趋势和餐馆的发展方向进行一定的规划。通过各个月的盈利进行对比,分析那种方式更适合餐馆的有利运营和更好地服务顾客。实现对餐馆内部各种管理的电子化、自动化,提高各个模块之间的办公效率,为高质量餐馆服务提供保证。任务:1.能够实现对该系统进行管理的人员的权限限制;2.使餐馆能够及时并灵活的对菜品品种其价位等进行管理;3.为餐馆提供从客户点餐到结算等一系列操作的服务,使之能简单易行、方便、清楚地进行管理第二章系统功能分析一.功能需求:餐饮管理系统中主要包括对以下几种管理:账单管理,财务管理,订餐管理,菜品管理,系统管理。(1)系统管理:系统管理包括用户名和密码,主要用于用户登陆界面登陆和查询。(2)账单管理:账单管理包括账单号和餐台,每一个餐台对应一个一个账单号,通过餐台号的记录来对对应的餐台进行记账管理,即就是记录每一个餐台的消费金额。账单管理是财务管理的一个小分支,是服务于财务管理的。(3)财务管理:包括账单号,时间和账目。账目用于记录账单号的消费金额及时间,以便用于结算和汇总。每日的结算要通过对每个餐台号的消费金额汇总来记录,然后由每日的结算汇总得出每月的结算。帐务系统功能的完整性。一旦该系统正式运行,餐厅每日营业帐和全部往来客户帐务的操作结算都将依靠计算机,该系统面对当前餐饮业各种复杂的结算要求应具有很强的应变能力。(4)订餐管理:订餐管理仅包括单价。订餐管理是便于顾客订餐和账单管理时对各个菜品消费金额的记录,这样便于账单管理和财务汇总。(5)菜品管理:菜品管理包括菜名,菜品类别和菜品品种。菜品管理便于顾客点菜和记录各个餐台的消费记账,菜品品种也便于餐馆的食材采购。二.数据需求:账单管理中账单号是主键,每一个餐台对应一个账单号。财务管理中账单号是主键,每一个账单号都有对应的时间和账目记录。订餐管理中单价就是主键。菜品管理中菜名是主键。系统管理中用户名是主键。三.性能需求:该餐饮系统操作简单方便可适应各类中小型餐馆。第三章系统功能模块设计一.在该系统功能分析的基础上,考虑PowerBuilder程序编制的特点,得到如下功能模块图。图1系统功能模块图二.数据库设计1.概念结构设计小型餐饮业管理系统系统管理账单管理订餐管理财务管理菜品管理用户管理密码管理账单号管理餐台管理订单查询餐台点餐管理每日账目管理账目时间管理菜名管理菜品管理菜价管理类别管理账单财务联系账单订餐联系菜品管理菜名单价菜品类别菜品品种点菜...MM财务管理时间账目...系统管理用户名密码...MM账单管理账单号餐台...M订餐管理菜名单价...MM2.逻辑结构设计FK_CAIWUGL_RELATION__ZHANGDAGZHANGDAN_NUMBER=ZHANGDAN_NUMBERFK_RELATION_RELATION__ZHANGDAGZHANGDAN_NUMBER=ZHANGDAN_NUMBERFK_RELATION_RELATION__CAIPINGLCPGL_NAME=CPGL_NAMECPGL_DANJIA=CPGL_DANJIACAIPINGLCPGL_NAMECPGL_DANJIACPGL_LEIBIECPGL_PINGZHONGCPGL_DIANCAIchar(20)integerchar(8)char(8)integerCAIWUGLZHANGDAN_NUMBERCAIWU_TIMECAIWU_AMOUNTnumerictimestampundefinedXTGLUSERNAMEPASSWORDchar(20)char(8)ZHANGDAGLZHANGDAN_NUMBERZHANGDAN_CANTAInumericnumericRELATION_418ZHANGDAN_NUMBERCPGL_NAMECPGL_DANJIAnumericchar(20)integer3.数据库实施1)数据库及表结构的创建设本系统使用的数据库名为小型餐饮业管理系统,根据已设计的关系模式及各模式的完整性要求,现在就可以在SQLServer6.x数据库系统中实现这些逻辑结构。下面是创建基本表的SQL语句:/*============================================================*//*Table:CAIPINGL*//*============================================================*/createtableCAIPINGL(CPGL_NAMEchar(20)notnull,CPGL_DANJIAintegernotnull,CPGL_LEIBIEchar(8)null,CPGL_PINGZHONGchar(8)null,CPGL_DIANCAIintegernull,constraintPK_CAIPINGLprimarykey(CPGL_NAME,CPGL_DANJIA))go/*============================================================*//*Table:XTGL*//*============================================================*/createtableXTGL(USERNAMEchar(20)notnull,PASSWORDchar(8)notnull,constraintPK_XTGLprimarykey(USERNAME,PASSWORD))go/*============================================================*//*Table:ZHANGDAGL*//*============================================================*/createtableZHANGDAGL(ZHANGDAN_NUMBERnumericnotnull,ZHANGDAN_CANTAInumericnull,CAI_ZHANGDAN_NUMBERnumericnull,constraintPK_ZHANGDAGLprimarykey(ZHANGDAN_NUMBER))go/*============================================================*//*Index:RELATION_383_FK*//*============================================================*/createindexRELATION_383_FKonZHANGDAGL(CAI_ZHANGDAN_NUMBER)go/*============================================================*//*Table:CAIWUGL*//*============================================================*/createtableCAIWUGL(ZHANGDAN_NUMBERnumericnotnull,CAIWU_TIMEtimestampnull,CAIWU_AMOUNTchar(10)null,constraintPK_CAIWUGLprimarykey(ZHANGDAN_NUMBER))go/*============================================================*//*Table:DINGCANGL*//*============================================================*/createtableDINGCANGL(ZHANGDAN_NUMBERnumericnotnull,DCGL_NAMEchar(20)notnull,DCGL_DANJIAintnotnull,constraintPK_DINGCANGLprimarykey(ZHANGDAN_NUMBER,DCGL_NAME,DCGL_DANJIA))go/*============================================================*//*Index:RELATION_451_FK*//*============================================================*/createindexRELATION_451_FKonDINGCANGL(ZHANGDAN_NUMBER)go建立相关触发器,执行级联删除*============================================================*//*Databasename:MODEL_1*//*DBMSname:MicrosoftSQLServer6.x*//*Createdon:2010-1-2118:15*//*============================================================*//*Inserttriggerti_caiwuglfortableCAIWUGL*/createtriggerti_caiwuglonCAIWUGLforinsertasbegindeclare@numrowsint,@numnullint,@errnoint,@errmsgvarchar(255)select@numrows=@@rowcountif@numrows=0return/*ParentZHANGDAGLmustexistwheninsertingachildinCAIWUGL*/ifupdate(ZHANGDAN_NUMBER)beginif(selectcount(*)fromZHANGDAGLt1,insertedt2wheret1.ZHANGDAN_NUMBER=t2.ZHANGDAN_NUMBER)!=@numrowsbeginselect@errno=30002,@errmsg='ParentdoesnotexistinZHANGDAGL.CannotcreatechildinCAIWUGL.'gotoerrorendendreturn/*Errorshandling*/error:raiserror@errno@errmsgrollbacktransactionendgo/*Updatetriggertu_caiwuglfortableCAIWUGL*/createtriggertu_caiwuglonCAIWUGLforupdateasbegindeclare@numrowsint,@numnullint,@errnoint,@errmsgvarchar(255)select@numrows=@@rowcountif@numrows=0return/*ParentZHANGDAGLmustexistwhenupdatingachildinCAIWUGL*/ifupdate(ZHANGDAN_NUMBER)beginif(selectcount(*)fromZHANGDAGLt1,insertedt2wheret1.ZHANGDAN_NUMBER=t2.ZHANGDAN_NUMBER)!=@numrowsbeginselect@errno=30003,@errmsg='ZHANGDAGLdoesnotexist.CannotmodifychildinCAIWUGL.'gotoerrorendend