小型餐饮管理系统-数据库设计报告
“农家乐”餐饮管理系统的设计与实现

“农家乐”餐饮管理系统的设计与实现餐饮管理系统在现代的餐饮行业中起到了至关重要的作用,可以提高餐饮企业的管理效率,提升用户体验,减少运营成本。
针对“农家乐”餐饮管理系统,本文将从需求分析、系统设计和实现三个方面介绍其设计与实现。
首先,需求分析是系统设计的关键步骤。
对于“农家乐”餐饮管理系统,我们需要考虑以下几个方面的需求。
1.点餐系统:顾客通过系统进行点餐,选择菜品、数量和口味要求,并可以自由定制菜品。
2.会员管理:系统可以记录顾客的点餐记录和消费情况,提供会员注册、积分兑换等功能。
3.库存管理:系统可以根据菜品销售情况实时更新库存,并提供库存预警功能,帮助餐厅管理者进行采购决策。
4.订单管理:系统可以自动生成订单,并进行订单跟踪和统计。
5.财务管理:系统可以对餐厅的财务情况进行分析和统计,并生成财务报表。
6.员工管理:系统可以记录员工的工作情况、考勤和工资等信息。
基于以上需求,我们可以进行系统设计。
首先,我们可以采用客户端-服务器架构,将系统分为前台和后台两个部分。
前台提供给顾客使用,包括点餐功能、会员管理和订单查询等;后台提供给餐厅管理者使用,包括库存管理、财务管理和员工管理等。
在系统实现方面,我们可以使用Java语言开发前后台,数据库可采用MySQL。
前台可以采用网页或移动端应用的形式展示给顾客使用,后台则采用桌面应用或网页的形式提供给餐厅管理者使用。
在点餐功能的实现上,顾客可以通过前台界面选择菜品、数量和口味要求,并添加到购物车中。
购物车可以显示当前所选菜品和总价,并可继续添加或删除菜品。
当顾客完成点菜后,可以点击结算按钮,系统将生成订单,并将订单信息发送给后台。
对于会员管理功能,我们可以提供会员注册、登录和积分兑换等功能。
顾客可以通过前台界面进行会员注册,并在登录后享受会员优惠。
积分兑换可以根据顾客的消费金额进行比例兑换,系统会自动扣除顾客所使用的积分。
库存管理功能可以实时更新菜品的库存情况,并根据设置的库存预警值提醒餐厅管理者进行库存采购。
小型餐饮管理系统数据库设计报告

小型餐饮管理系统数据库设计报告小型餐饮管理系统数据库设计报告一、设计目的本文旨在设计一款小型餐饮管理系统,以方便餐饮行业从业人员快速、有效地管理餐饮业务,并向消费者提供更加便捷、优质的服务。
二、需求分析1.菜品管理:能够对菜品进行添加、修改、删除、查询等操作,能够查询菜品的名称、价格、描述、图片等信息。
2.订单管理:能够对订单进行添加、修改、删除、查询等操作,能够查询订单的编号、日期、金额、状态等信息,支持订单的打印和导出。
3.顾客管理:能够对顾客信息进行添加、修改、删除、查询等操作,能够查询顾客的姓名、电话、地址等信息。
4.员工管理:能够对员工信息进行添加、修改、删除、查询等操作,能够查询员工的姓名、职位、联系方式等信息。
5.库存管理:能够对库存进行添加、修改、删除、查询等操作,能够查询库存的物品名称、数量、价格等信息。
6.报表管理:能够生成餐饮业务相关的报表,如菜品销售报表、营业额报表、订餐排行榜等。
7.用户管理:具有不同用户权限,管理员、员工和顾客可以登录系统,但是拥有不同的操作权限。
三、概念设计1. 菜品表:存储菜品信息,包括菜品编号、名称、价格、描述、图片等属性。
2. 订单表:存储订单信息,包括订单编号、日期、总金额、状态等属性。
3. 顾客表:存储顾客信息,包括顾客编号、姓名、电话、地址等属性。
4. 员工表:存储员工信息,包括员工编号、姓名、性别、职位等属性。
5. 库存表:存储库存信息,包括物品编号、物品名称、库存量、价格等属性。
6. 用户表:存储用户信息,包括用户编号、用户名、密码、邮箱等属性。
7. 角色表:存储角色信息,包括角色编号、角色名称等属性。
8. 权限表:存储权限信息,包括权限编号、权限名称等属性。
四、逻辑设计1. 创建菜品表:CREATE TABLE dish ( dish_id INT NOT NULLAUTO_INCREMENT COMMENT '菜品id', dish_name VARCHAR(255) NOT NULL COMMENT '菜品名称', dish_price DECIMAL(10,2) NOT NULL COMMENT '菜品价格',dish_description TEXT COMMENT '菜品描述', dish_image VARCHAR(255) COMMENT '菜品图片', PRIMARY KEY(dish_id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='菜品表';2. 创建订单表:CREATE TABLE order ( order_id INT NOT NULLAUTO_INCREMENT COMMENT '订单id', order_date TIMESTAMP NOT NULL COMMENT '订单日期', order_amount DECIMAL(10,2) NOT NULL COMMENT '订单金额',order_status TINYINT NOT NULL COMMENT '订单状态',primary key(order_id)) ENGINE=InnoDB DEFAULTCHARSET=utf8mb4 COMMENT='订单表';3. 创建顾客表:CREATE TABLE customer ( customer_id INT NOT NULL AUTO_INCREMENT COMMENT '顾客id', customer_name VARCHAR(255) NOT NULL COMMENT '顾客姓名',customer_phone VARCHAR(255) NOT NULL COMMENT '顾客电话', customer_address VARCHAR(255) COMMENT '顾客地址', primary key(customer_id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='顾客表';CREATE TABLE employee ( employee_id INT NOT NULL AUTO_INCREMENT COMMENT '员工id', employee_name VARCHAR(255) NOT NULL COMMENT '员工姓名',employee_sex VARCHAR(255) NOT NULL COMMENT '员工性别', employee_position VARCHAR(255) NOT NULL COMMENT '员工职位', primary key(employee_id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='员工表';5. 创建库存表:CREATE TABLE inventory ( inventory_id INT NOT NULL AUTO_INCREMENT COMMENT '库存id', inventory_name VARCHAR(255) NOT NULL COMMENT '库存物品名称', inventory_quantity INT NOT NULL COMMENT '库存数量', inventory_price DECIMAL(10,2) NOT NULL COMMENT '库存价格', primary key(inventory_id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='库存表';6. 创建用户表:CREATE TABLE user ( user_id INT NOT NULLAUTO_INCREMENT COMMENT '用户id', user_name VARCHAR(255) NOT NULL COMMENT '用户名',user_password VARCHAR(255) NOT NULL COMMENT '密码', user_email VARCHAR(255) COMMENT '邮箱', primarykey(user_id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';CREATE TABLE role ( role_id INT NOT NULLAUTO_INCREMENT COMMENT '角色id', role_name VARCHAR(255) NOT NULL COMMENT '角色名称', primary key(role_id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色表';8. 创建权限表:CREATE TABLE permission ( permission_id INT NOT NULL AUTO_INCREMENT COMMENT '权限id', permission_name VARCHAR(255) NOT NULL COMMENT '权限名称', primary key(permission_id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='权限表';五、物理设计本系统采用MySQL数据库,采用InnoDB引擎,使用UTF-8字符集。
餐饮管理系统的设计与实现

餐饮管理系统的设计与实现餐饮管理系统是一种重要的信息管理系统,它可以协助餐厅或餐饮企业实现对餐饮业务的整合和提高营业效率。
本文将从需求分析、系统设计、功能实现等方面对餐饮管理系统的设计与实现进行探讨。
一、需求分析餐饮管理系统的主要任务是协助餐饮企业进行业务管理,包括订单管理、菜品管理、库存管理、财务管理等多个方面。
因此,餐饮管理系统应该具备以下的基本需求:1.订单管理:能自动记录订单信息,包括订单号、顾客信息、菜品信息、订单时间、订单金额等;2.菜品管理:能新增、修改、删除菜品信息,包括菜品名称、价格、原料等;3.库存管理:能自动统计库存情况,对菜品库存进行控制,防止库存过多或过少;4.财务管理:能够自动统计每日、每周、每月的盈利情况,提供财务管理报表;5.顾客管理:能够记录顾客信息,包括顾客姓名、电话、地址等,对顾客进行管理。
二、系统设计餐饮管理系统的设计,包括数据库设计、前端设计和后端设计。
1.数据库设计餐饮管理系统的数据库应该包括如下表:(1)菜品表:包括菜品ID、菜品名称、菜品价格、菜品分类、菜品图片等;(2)订单表:包括订单ID、顾客ID、订单状态、订单金额、下单时间等;(3)库存表:包括库存ID、菜品ID、库存数量等;(4)顾客表:包括顾客ID、顾客姓名、顾客电话、顾客地址等;2.前端设计餐饮管理系统的前端设计应该符合用户体验和视觉美学。
(1)首页应该包括系统的基本功能,如菜品管理、订单管理、库存管理、财务管理等。
(2)菜品管理页面应该包括新增、修改、删除菜品等基本功能。
(3)订单管理页面应该包括订单查询、订单处理等基本功能。
(4)库存管理页面应该包括库存查询、库存调整、库存报废等基本功能。
3.后端设计餐饮管理系统的后端设计应该采用MVC架构,保证程序的可扩展性、可维护性。
(1)数据库连接:使用Java的JDBC技术连接数据库。
(2)控制层:使用Spring MVC框架搭建控制层,处理请求和响应。
餐厅管理点餐系统数据库-(1)

餐厅管理点餐系统数据库-(1)餐厅点餐记账数据库设计专业:姓名:学号:目录1、大作业概述 (4)2.需求分析 (4)(1)行业现状 (4)(2)系统介绍 (4)(3)用户需求分析 (4)(4)数据字典 (5)3、概念结构设计 (6)4、逻辑结构设计 (9)5、物理结构设计 (10)6、视图 (18)7、应用设计 (19)8、总结 (21)9附表 (22)1、大作业概述(1)数据库作业要求:包括6个方面:需求分析,概念结构,逻辑设计,视图,应用设计,总结(2)自己独立完成,不可百度网上资料。
2.需求分析(1)行业现状我国今年来经济不断发展,人们物质生活水平逐步提高,人们对生活质量的要求也越来越高,享受真正自动化、人性化的服务成为了人们追求高质量生活的重要内容。
在大多数的餐饮场所点菜、查看菜谱等是人工完成的,速度慢,效率低,极易出错,造成人力物力的极大浪费。
然而随着我国市场经济的快速发展,酒店餐饮点菜系统成为酒店提升服务档次,提高办公效率,提高竞争力的关键因素之餐饮业要想跟上发展形势,餐馆点餐的信息化进程也要加快脚步。
(2)系统介绍餐饮点菜系统拥有方便、快捷、效率高、掌控能力强等特点,所以,本系统是针对餐饮行业的点菜而开发的一个系统。
开发本系统的总体任务是实现点菜、结帐、查询、统计、设置的功能,(3)用户需求分析本系统的总目标是为用户提供迅速、高效的服务,减免手工处理的繁琐与误差,及时、准确地反映餐厅的工作情况、经营情况,从而提高餐厅的服务质量,获得更好的经济效益。
其具体目标包括:1)快速完成顾客的点餐。
2)准确无误地记录顾客的每笔消费记录。
3)实时、快速、准确地提供最新餐单。
4)方便查询顾客消费情况。
(4)数据字典1)数据项⑵数据结构3、概念结构设计概念结构设计是将分析得到的用户需求抽象为概念模型的过程,即在需求分析的基础上,设计出能够满足用户需求的各种实体以及它们之间的相互关系的模型。
概念结构的主要特点是能真实、充分地反映现实世界,易于理解,易于更改,易于向关系、网状、层次等各种数据模型转换。
餐馆信息管理系统实验报告_可行性报告分析

餐馆信息管理系统实验报告_可行性报告分析武夷学院实验报告课程名称:_管理信息系统______ 项目名称:__可行性研究_________一、实验准备:1。
1 编写目的计算机技术的飞速发展,使我们的生活变得越来越“智能化”,“简单化”。
计算机几乎已经遍布了我们生活的每一个角落,帮助我们更加高效,快速的解决工作与问题。
随着我国市场经济的快速发展,餐饮业的发展日新月异,近两年来已呈现出高速发展的态势。
但在快速发展的同时,餐饮业在日常经营管理中仍普遍采用手工管理方式,整体科技含量低.随着餐饮企业规模和数量的不断增长,手工管理模式无论是在工作效率、人员成本还是提供决策信息方面都已难以适应现代化经营管理的要求,因此制约了整个餐饮业的规模化发展和整体服务水平的提升.有效的管理成为了一个难题,为能有效的解决这些问题提高企业的经济效益,在这些中小型饭店中采用工作流技术,结合饭店绿色管理内容,实施计算机管理信息系统视为一条有效的解决途径。
1。
2 背景名称:餐饮管理系统开发人员:用户:餐饮楼、饭店数据库设计采用软件:Microsoft Office 2010开发单位:开发环境:Windows 71.3定义RMS:Restaurant Management System,餐饮管理系统.1。
4 参考资料1.《软件产品开发文件编制指南》2.《使用软件文档写作》1二、实验过程记录:2(可行性研究的前提2.1要求功能分析:1。
会员信息管理:查询、增、删、改2.菜单信息的管理:查询、增、删、改5。
餐桌信息的管理:查询、增、删、改6。
前台定桌:顾客可以根据自己的需求,选择不同餐桌 7.点菜:按照用户需求为其点菜并提交菜单给厨房 8.会员消费记录信息的管理:查询、增、删、改9.会员积分信息的管理:查询、增、删、改10。
上菜管理:服务员对已上菜和待上菜进行管理11。
做账服务:审核菜单,协助顾客结账性能:该系统所占硬盘容量大约为100M,开启运行时间约2,3秒输入:系统需要员工输入账号和密码才能操作,另外系统的输入包括顾客点菜输入和管理员增添菜品信息.输出:该系统的输出包括打印菜单给后厨,打印账单给顾客. 用户进入系统需要密码,且数据的存储是经过保密设置的,一般用户是无法接触涉及商业机密的数据的,因此安全保密性比较高.与该系统配套使用的数据库是SQL server 2010系统流程:顾客预定,开台,点菜,付款;处理流程:接受预订,开台,款完成期限2014年3月。
餐饮就餐管理系统设计

餐饮就餐管理系统设计设计主要内容:一、开发平台:C#+ SQL SERVER2005二、功能要求:1、设计内容设计一个餐饮就餐管理系统,该系统的用户由普通用户和管理员组成,然后不同的用户拥有不同的权限,各自完成各自的管理功能.首先是进入欢迎界面,在欢迎界面选择用户登录的身份,进入登录界面,已经有账号和密码的用户可直接登录,没有账号和密码的用户可以在登陆界面进行注册,合法的用户进入到系统主界面中,不同的用户看到不同的系统功能.餐饮就餐管理系统采用sql server2005创建后台数据库,然后利用程序设计语言(C#)编写程序实现对数据库的操作,按照要求完成所有的功能和模块。
2、餐馆就餐管理系统主要功能(1)用户登录:管理员登陆界面、服务员登陆界面、用户注册界面、本用户密码的修改界面等功能。
(2)管理员管理:顾客管理界面(修改,删除)、订餐管理界面(修改,删除)、用户信息管理界面(查询,删除)等功能。
(3)服务员管理:顾客信息登记界面(添加,打印等操作),顾客信息查询界面(按照姓名、证件号码、地址等条件查询),菜单信息登记界面(添加,打印等操作),菜单信息查询界面(按照编号、种类、名称、单价、风味等条件查询),订餐界面(添加),等功能。
3、餐馆就餐管理系统数据库表单(1)用户信息表单(UserInfo):用户编号(UserID)(主码)、用户账号(UserName)、用户密码(UserPwd)、用户权限(State)(2)菜单信息表单(FoodInfo):食品编号(FoodID)(主码)、食品名称(FoodName)、食品种类(FoodClass)、食品风味(FoodRelish)、食品单价(FoodPrice)、备注(FoodNote)(3)顾客信息表单(CustomerInfo):顾客姓名(CusName)(主码)、顾客性别(Sex)、顾客生日(Birthday)、证件号码(CardNum)、顾客等级(Rank)、顾客电话(PhoneNum)、顾客地址(Adress)、顾客入会时间(JoinTime)、顾客欠费数量(Debt)、备注(CusNote)(4)餐厅业务信息表单(BussinessInfo):餐桌编号(TableID)、顾客姓名(CusName)(外码)、订餐时间(OrderTime)、用餐时间(EatTime)、用餐人数(EatNum)、价格(Prise)、电话(Call)、食品编号(FoodID)(外码)、备注(Note)三、课程设计报告主要内容:1餐厅就餐管理系统需求分析(给出系统的功能模块图,对各个功能作出详细介绍)2 餐厅就餐管理系统界面设计(给出界面截图及其主要控件的属性设置表格)3 餐厅就餐管理系统数据库设计(给出数据库各个表单中数据的字段名,数据类型及其相应的说明)4餐厅就餐管理系统程序设计(按功能模块给详细的代码,并给出重点语句的注释)目录1、餐厅就餐管理系统需求分析...................................................................... 错误!未定义书签。
餐饮服务管理系统数据库课程设计报告书

应用技术学院课程设计任务书指导教师(签名):教研室主任(签名):2015年7月 17 日 2015 年 7月 17 日目录1 ........................................................................... 概述11.1餐饮管理系统的目标 (1)1.2开发环境及工具 (1)1.3小组分工 (2)2需求分析 (3)2.1问题述 (3)2.2功能需求 (3)2.3系统总体功能模块图 (3)3概念结构设计 (5)3.1设计思想 (5)3.2系统总E--R图 (6)3.3局部E-R图 (7)3.4实体属性的描述 (8)4逻辑结构设计 (11)4.1关系模式 (11)4.2建表逻辑设计 (11)5物理结构设计 (13)5.1数据流图 (13)5.1.1总体数据流图 (13)5.1.2分功能数据数据流图 (15)5.2数据字典 (16)5.2.1数据项 (16)5.2.2数据结构 (16)5.2.3数据流 (17)5.2.4数据存储 (17)5.2.5处理过程 (17)6数据库实施 (19)6.1界面设计 (19)6.1.1登录界面设计 (19)6.1.2登录界面主要代码 (19)6.1.3主界面设计 (21)6.1.4主界面对应代码 (21)6.2桌台信息管理 (24)6.2.1桌台管理模块页面设计 (24)6.2.2桌台管理主要代码 (26)6.3菜单管理设计 (33)6.3.1菜单管理界面设计 (33)6.3.2菜单管理功能主要代码 (34)6.4数据的存储与表的设计 (37)6.4.1菜单的数据存储 (37)6.4.2桌台信息数据存储 (37)7结束语 (39)8参考文献 (40)参考文献 (41)1 概述近年来,随着人民的生活水平的不断提高,餐饮业的消费持续增长,竞争愈来愈激烈。
然而,传统餐饮企业的日常运作还是靠人工管理,从原材料入库到客人点单,再到结账基本上由人工完成记录,这样做不仅耗费人力资源而且容易导致记录丢失或重复等错误,造成管理水平低下。
XXXX餐厅管理系统设计报告

课程设计成绩评价表封面成都信息工程学院课程设计题目:餐厅管理系统作者姓名:李文静班级:物联网121班学号:2012124030指导教师:张路桥日期:2014年1 月7日作者签名:摘要餐厅管理系统的设计与实现摘要随着计算机网络技术的飞速发展,网络技术越来越受到人们的重视,它已逐渐渗入我们生活各个层面。
现代企业具有一个现代化的管理系统,是企业管理的科学化、正规化的重要条件,也在企业的高效运行中扮演了重要的角色。
餐厅管理系统应是一种基于开放式网络环境,能够保证数据输入、输出的准确性、快捷性并且方便用户使用的网络应用系统。
本设计从现代企业管理中的人事管理现状出发,针对小型餐厅目前餐厅业务管理的工作程序,开发出来的一个操作简单、方便实用的餐厅管理系统。
本文首先介绍餐厅管理系统的开发背景,;接着介绍了 C 语言等相关理论知识,并对现代小型餐厅管理系统进行了较详细的需求分析;然后重点讨论该系统的设计与实现;最后,通过测试与分析,说明该系统运行稳定、可靠,具有一定的实用价值。
关键词:小型餐饮企业;餐厅管理系统;C语言目录1 前言 01.1背景 02 餐厅管理系统需求分析及开发工具...................................... 错误!未定义书签。
2.1系统目标及基本功能........................................................ 错误!未定义书签。
2.2开发工具............................................................................ 错误!未定义书签。
3 系统总体设计 (4)3.2功能模块介绍 (4)4 系统流程与实现 (15)4.1设计流程 (15)4.2设计代码 (24)5 测试与分析 (25)5.1调试过程中遇到的主要问题 (25)结论 0参考文献 (28)1 前言1.1 背景20世纪90年代末餐厅管理系统发生革命性变革,为了满足市场需求,实现现代化运营管理,餐饮企业对餐饮管理系统的需求也在不断提高;我们生活在一个信息化的世界,网络为我们的生活带来许多便利,其中也包括,餐厅等服务性行业对信息化管理的普及,因此,餐厅管理系统出现了;同时由于电脑的普及,数据库技术、客户服务器技术,特别是网络技术的发展,使得第三代餐饮管理系统的出现成为必然。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章设计任务与要求目的及意义:此小型餐饮业管理系统的设计主要是为了方便管理,对于各个进出账目,支出和收入的管理便于系统化,在每月汇总计算中分析运营趋势和餐馆的发展方向进行一定的规划。
通过各个月的盈利进行对比,分析那种方式更适合餐馆的有利运营和更好地服务顾客。
实现对餐馆内部各种管理的电子化、自动化,提高各个模块之间的办公效率,为高质量餐馆服务提供保证。
任务:1.能够实现对该系统进行管理的人员的权限限制;2.使餐馆能够及时并灵活的对菜品品种其价位等进行管理;3.为餐馆提供从客户点餐到结算等一系列操作的服务,使之能简单易行、方便、清楚地进行管理第二章系统功能分析一.功能需求:餐饮管理系统中主要包括对以下几种管理:账单管理,财务管理,订餐管理,菜品管理,系统管理。
(1)系统管理:系统管理包括用户名和密码,主要用于用户登陆界面登陆和查询。
(2)账单管理:账单管理包括账单号和餐台,每一个餐台对应一个一个账单号,通过餐台号的记录来对对应的餐台进行记账管理,即就是记录每一个餐台的消费金额。
账单管理是财务管理的一个小分支,是服务于财务管理的。
(3)财务管理:包括账单号,时间和账目。
账目用于记录账单号的消费金额及时间,以便用于结算和汇总。
每日的结算要通过对每个餐台号的消费金额汇总来记录,然后由每日的结算汇总得出每月的结算。
帐务系统功能的完整性。
一旦该系统正式运行,餐厅每日营业帐和全部往来客户帐务的操作结算都将依靠计算机,该系统面对当前餐饮业各种复杂的结算要求应具有很强的应变能力。
(4)订餐管理:订餐管理仅包括单价。
订餐管理是便于顾客订餐和账单管理时对各个菜品消费金额的记录,这样便于账单管理和财务汇总。
(5)菜品管理:菜品管理包括菜名,菜品类别和菜品品种。
菜品管理便于顾客点菜和记录各个餐台的消费记账,菜品品种也便于餐馆的食材采购。
二. 数据需求:账单管理中账单号是主键,每一个餐台对应一个账单号。
财务管理中账单号是主键,每一个账单号都有对应的时间和账目记录。
订餐管理中单价就是主键。
菜品管理中菜名是主键。
系统管理中用户名是主键。
三. 性能需求:该餐饮系统操作简单方便可适应各类中小型餐馆。
第三章系统功能模块设计一. 在该系统功能分析的基础上,考虑PowerBuilder程序编制的特点,得到如下功能模块图。
图1 系统功能模块图二. 数据库设计1. 概念结构设计2. 逻辑结构设计3. 数据库实施1) 数据库及表结构的创建设本系统使用的数据库名为小型餐饮业管理系统,根据已设计的关系模式及各模式的完整性要求,现在就可以在SQL Server 6.x数据库系统中实现这些逻辑结构。
下面是创建基本表的SQL语句:/* ============================================================ *//* Table: CAIPINGL *//* ============================================================ */ 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 ,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 asbegindeclare@numrows int,@numnull int,@errno int,@errmsg varchar(255)select @numrows = @@rowcountif @numrows = 0return/* Parent "ZHANGDAGL" must exist when inserting a child in "CAIWUGL" */if update(ZHANGDAN_NUMBER)beginif (select count(*)from ZHANGDAGL t1, inserted t2where t1.ZHANGDAN_NUMBER = t2.ZHANGDAN_NUMBER) != @numrowsbeginselect @errno = 30002,@errmsg = 'Parent does not exist in "ZHANGDAGL". Cannot create child in "CAIWUGL ".'goto errorendendreturn/* Errors handling */error:raiserror @errno @errmsgrollback transactionendgo/* Update trigger "tu_caiwugl" for table "CAIWUGL" */create trigger tu_caiwugl on CAIWUGL for update asbegindeclare@numrows int,@numnull int,@errno int,@errmsg varchar(255)select @numrows = @@rowcountif @numrows = 0return/* Parent "ZHANGDAGL" must exist when updating a child in "CAIWUGL" */if update(ZHANGDAN_NUMBER)beginif (select count(*)from ZHANGDAGL t1, inserted t2where t1.ZHANGDAN_NUMBER = t2.ZHANGDAN_NUMBER) != @numrowsbeginselect @errno = 30003,@errmsg = '"ZHANGDAGL" does not exist. Cannot modify child in "CAIWUGL".' goto errorendend/* Modify parent code of "CAIWUGL" for all children in "ZHANGDAGL" */if update(ZHANGDAN_NUMBER)beginupdate ZHANGDAGLset CAI_ZHANGDAN_NUMBER = i1.ZHANGDAN_NUMBERfrom ZHANGDAGL t2, inserted i1, deleted d1where t2.CAI_ZHANGDAN_NUMBER = d1.ZHANGDAN_NUMBERand (i1.ZHANGDAN_NUMBER != d1.ZHANGDAN_NUMBER) endreturn/* Errors handling */error:raiserror @errno @errmsgrollback transactionendgo/* Delete trigger "td_caiwugl" for table "CAIWUGL" */create trigger td_caiwugl on CAIWUGL for delete asbegindeclare@numrows int,@errno int,@errmsg varchar(255)select @numrows = @@rowcountif @numrows = 0return/* Delete all children in "ZHANGDAGL" */delete ZHANGDAGLfrom ZHANGDAGL t2, deleted t1where t2.CAI_ZHANGDAN_NUMBER = t1.ZHANGDAN_NUMBERreturn/* Errors handling */error:raiserror @errno @errmsgrollback transactionendgo/* Insert trigger "ti_dingcangl" for table "DINGCANGL" */create trigger ti_dingcangl on DINGCANGL for insert asbegindeclare@numrows int,@numnull int,@errno int,@errmsg varchar(255)select @numrows = @@rowcountif @numrows = 0return/* Parent "ZHANGDAGL" must exist when inserting a child in "DINGCANGL" */if update(ZHANGDAN_NUMBER)beginif (select count(*)from ZHANGDAGL t1, inserted t2where t1.ZHANGDAN_NUMBER = t2.ZHANGDAN_NUMBER) != @numrowsbeginselect @errno = 30002,@errmsg = 'Parent does not exist in "ZHANGDAGL". Cannot create child in "DINGCAN GL".'goto errorendendreturn/* Errors handling */error:raiserror @errno @errmsgrollback transactionendgo/* Update trigger "tu_dingcangl" for table "DINGCANGL" */create trigger tu_dingcangl on DINGCANGL for update asbegindeclare@numrows int,@numnull int,@errno int,@errmsg varchar(255)select @numrows = @@rowcountif @numrows = 0return/* Parent "ZHANGDAGL" must exist when updating a child in "DINGCANGL" */if update(ZHANGDAN_NUMBER)beginif (select count(*)from ZHANGDAGL t1, inserted t2where t1.ZHANGDAN_NUMBER = t2.ZHANGDAN_NUMBER) != @numrowsbeginselect @errno = 30003,@errmsg = '"ZHANGDAGL" does not exist. Cannot modify child in "DINGCANGL".' goto errorendendreturn/* Errors handling */error:raiserror @errno @errmsgrollback transactionendgo/* Insert trigger "ti_zhangdagl" for table "ZHANGDAGL" */create trigger ti_zhangdagl on ZHANGDAGL for insert asbegindeclare@numrows int,@numnull int,@errno int,@errmsg varchar(255)select @numrows = @@rowcountif @numrows = 0return/* Parent "CAIWUGL" must exist when inserting a child in "ZHANGDAGL" */if update(CAI_ZHANGDAN_NUMBER)beginselect @numnull = (select count(*)from insertedwhere CAI_ZHANGDAN_NUMBER is null)if @numnull != @numrowsif (select count(*)from CAIWUGL t1, inserted t2where t1.ZHANGDAN_NUMBER = t2.CAI_ZHANGDAN_NUMBER) != @numrows - @numnull beginselect @errno = 30002,@errmsg = 'Parent does not exist in "CAIWUGL". Cannot create child in "ZHANGDAGL ".'goto errorendendreturn/* Errors handling */error:raiserror @errno @errmsgrollback transactionendgo/* Update trigger "tu_zhangdagl" for table "ZHANGDAGL" */create trigger tu_zhangdagl on ZHANGDAGL for update asbegindeclare@numrows int,@numnull int,@errno int,@errmsg varchar(255)select @numrows = @@rowcountif @numrows = 0return/* Parent "CAIWUGL" must exist when updating a child in "ZHANGDAGL" */if update(CAI_ZHANGDAN_NUMBER)beginselect @numnull = (select count(*)from insertedwhere CAI_ZHANGDAN_NUMBER is null)if @numnull != @numrowsif (select count(*)from CAIWUGL t1, inserted t2where t1.ZHANGDAN_NUMBER = t2.CAI_ZHANGDAN_NUMBER) != @numrows - @numnull beginselect @errno = 30003,@errmsg = '"CAIWUGL" does not exist. Cannot modify child in "ZHANGDAGL".' goto errorendend/* Modify parent code of "ZHANGDAGL" for all children in "CAIWUGL" */if update(ZHANGDAN_NUMBER)beginupdate CAIWUGLset ZHANGDAN_NUMBER = i1.ZHANGDAN_NUMBERfrom CAIWUGL t2, inserted i1, deleted d1where t2.ZHANGDAN_NUMBER = d1.ZHANGDAN_NUMBERand (i1.ZHANGDAN_NUMBER != d1.ZHANGDAN_NUMBER)end/* Modify parent code of "ZHANGDAGL" for all children in "DINGCANGL" */ if update(ZHANGDAN_NUMBER)beginupdate DINGCANGLset ZHANGDAN_NUMBER = i1.ZHANGDAN_NUMBERfrom DINGCANGL t2, inserted i1, deleted d1where t2.ZHANGDAN_NUMBER = d1.ZHANGDAN_NUMBERand (i1.ZHANGDAN_NUMBER != d1.ZHANGDAN_NUMBER)endreturn/* Errors handling */error:raiserror @errno @errmsgrollback transactionendgo/* Delete trigger "td_zhangdagl" for table "ZHANGDAGL" */create trigger td_zhangdagl on ZHANGDAGL for delete asbegindeclare@numrows int,@errno int,@errmsg varchar(255)select @numrows = @@rowcountif @numrows = 0return/* Delete all children in "CAIWUGL" */delete CAIWUGLfrom CAIWUGL t2, deleted t1where t2.ZHANGDAN_NUMBER = t1.ZHANGDAN_NUMBER/* Delete all children in "DINGCANGL" */delete DINGCANGLfrom DINGCANGL t2, deleted t1where t2.ZHANGDAN_NUMBER = t1.ZHANGDAN_NUMBERreturn/* Errors handling */error:raiserror @errno @errmsgrollback transactiongo2) 数据库前台的设计根据数据库的设计,该餐饮业管理系统可以分成四个子模块:▪订餐管理根据客户的点菜单,采用checkbox从已有菜品中选定菜品,并记录。