资源描述
内蒙古科技大学
课程设计说明书(论文)
课程名称:数据库原理及应用
题 目:餐饮管理系统
学生姓名:朱文涛
学 号:1176807418
专 业:计算机科学与技术
班 级:计算机4班
指导教师:余金林
内蒙古科技大学课程设计任务书
课程名称
数据库原理及应用
设计题目
餐饮管理系统
指导教师
余金林
时间
一、教学要求
1.从附录一中选择一个题目进行数据库应用系统设计。
2.功能设计:用Visual FoxPro,Visual Basic、PB等开发工具与数据库管理系统SQL-SEVER或Access制作一个小型管理系统。所设计的小型管理系统应包含输入输出、查询、插入、删除等基本功能。设计课题可以从候选的项目中选出,根据题目的基本需求,画出流程图,编写程序,并写出详细的设计说明书。(本项实际系统设计与实现可选,但必须有功能设计过程)
3.数据库的设计:
根据数据库应用系统设计过程,通过需求分析和系统分析,进行数据库的概念结构设计、逻辑结构设计等工作:
l 概念结构设计的E-R图
l 数据库逻辑结构设计是以表格的形式说明数据库中有几个表,每个表的表名以及每个表的各字段名,类型和约束(主、外码);
l 确定表之间的关联(一对一、一对多、多对多)
l 运用数据库理论确定每个表至少属于3NF。
二、设计资料及参数
设计题目:餐饮管理系统(题目等级50)
1、设备信息
2、餐具信息
3、员工信息
4、餐桌信息:餐桌的编号、类型(8人桌、10人桌、圆桌、方桌、雅间、大堂等)
5、进货信息:原材料的进货信息
6、销售信息:核心。包括点菜、做菜、上菜等信息
7、菜品信息
三、设计要求及成果
1.按照数据库应用系统设计步骤进行数据库结构设计。
2.使用开放工具及数据库管理系统开放应用系统(可选)。
3.书写论文(具体要求见论文模板)。
四、进度安排
1.安排工作。
2、数据库结构设计、功能设计。
3、检查E-R图,关系表。
4、应用系统验收。
5、上交论文。
五、评分标准
1.数据库结构正确性(30%)。
2.数据库结构复杂性(20%)。
3.设计报告完成的质量(30%)。
4.出勤(10%)。
5.软件(10%)。
6.成绩采用五级分制评定。
六、建议参考资料
1、《数据库系统教程》(第三版) 施伯乐等著 高等教育出版社
目录
一、系统分析简介 6
二、需求分析 7
三、总体设计 8
3.1项目规划 8
3.2流程设计 9
3.3 E-R图 11
3.4模型图 14
3.5数据字典 15
3.6 数据表 18
四、 查询 21
五、数据库代码 24
六、参考文献 29
摘 要
随着我国市场经济的快速发展,各行业都呈现出生机勃勃的发展景象,其中餐饮业的发展尤为突出。近两年来已呈现出高速发展的态势。但在快速发展的同时,餐饮业在日常经营管理中仍普遍采用手工管理方式,整体科技含量低。随着餐饮企业规模和数量的不断增长,手工管理模式无论是在工作效率、人员成本还是提供决策信息方面都已难以适应现代化经营管理的要求,因此制约了整个餐饮业的规模化发展和整体服务水平的提升。有效的管理成为了一个难题,为能有效的解决这些问题提高企业的经济效益,在这些中小型饭店中采用工作流技术,结合饭店绿色管理内容,实施计算机管理信息系统不视为一条有效的解决途径。
本论文主要针对中小型饭店餐饮管理中的一些问题,将其与计算机信息管理系统结合起来,实现中小型饭店管理信息计算机化、系统化,将中小型饭店管理中的工作流转化成比较科学化、规范化的业务流程,使管理基础数据更加准确化,管理人员摆脱了事务性工作,转而从事管理专业工作,为经营决策提供了快捷和强大的数据支持。把计算机用于餐饮企业管理,可在很大程度上提高管理者分析和决策的科学性,提高经营管职水平,带来更多的顾客,使企业取得更好的经济效益。
关键词: 计算机信息管理系统,中小型饭店, 餐饮管理
一、系统分析简介
1.1 课题背景
民以食为天,随着人民生活水平的提高,餐饮业在服务行业中占有越来越重要的地位。努力在当前餐饮行业日趋激烈的竞争中脱颖而出,已成为每位餐饮业经营者所追求的目标。
经过多年发展,餐饮管理已经逐渐由定性管理,进入到重视定量管理的科学阶段。众所周知,在定量管理的具体实现方法和手段方面,最有效的工具就是电脑管理。传统的手工操作管理存在着许多无法避免的问题,该系统将能大大的降低许多问题,减轻人力与物力。
1.2 系统开发的意义
本系统属于小型的餐饮管理系统,可以有效地对中小型餐厅消费进行管理,本系统应达到以下目标:
系统采用人机交互的方式,界面美观友好,信息查询灵活、方便,数据存储安全可靠。
实现对餐厅顾客开台、点菜/加菜、账目查询和结账等操作。
对用户输入的数据,进行严格的数据检验,尽可能的避免人为错误。
实现对消费账目自动结算。
实现对消费的历史记录进行查询。
系统应最大限度地实现易维护性和易操作性。
1.3 系统开发及运行环境
系统开发平台:Microsoft Visual Studio 2008
系统开发语言:T-SQL
数据库管理系统软件:SQL Server 2008
二、需求分析
2.1 餐饮管理系统的可行性分析
2.1.1 技术水平分析
本软件采用Microsoft Visual Studio 2008为前台开发工具,SQL Server 2008数据库作为后台数据库支持。本软件专为中小型餐厅消费管理而设计,本软件可在Win7/XP 上运行,不用专业人士去配制服务器可以直接安装使用,具有很好的可移植性,有良好的中文界面,操作简便,适合餐饮服务人员使用。
2.1.2 经济效益分析
本软件能在很大程度上解决中小型餐厅的消费管理,方便对顾客的消费进行管理,本系统运行时能在主菜单上看到当前的桌台情况——是否被占用,能很好分配顾客的用餐,顾客点菜时能很好的进行记录,有方便的结账功能,直接计算出找零,本系统还能对桌台信息进行管理,方便以后的增加与减少桌台,同时也能方便的对服务人员的信息进行管理,有系统数据库备份功能,防止系统在死机的情况下丢失大量重要信息。
2.1.3 市场分析
现如今餐饮业发展壮大迅速,拥有一套良好的餐饮管理系统能在很大程度上解决许多问题,方便对服务人员的管理,以及内部的一些信息变化的管理——如菜品、、价格、桌台、人员,还能很好的管理顾客的点菜、查询消费记录、结账,这将能改善传统意义上的管理,使管理变得方便并且有效,所以本系统有着很好的市场需求前景。
2.2 餐饮管理系统的需求分析
通过实际了解,要求本系统具有以下功能:
系统采用人机交互的方式,信息查询灵活、方便,数据存储 安全可靠。
实现对餐厅顾客开台、点菜/加菜、账目查询和结账等操作。
对用户输入的数据,进行严格的数据检验,尽可能的避免人为错误。
三、总体设计
3.1 项目规划
餐饮管理系统主要由用户登录、桌台信息管理、服务员信息管理、修改密码、开台、取消开台、点/加菜、消费查询、数据库管理和退出等模块组成,具体规划如下。
(1) 用户登录模块
该模块主要用于管理员登陆进行管理,登录成功情况下才能进入系统功能主界面,根据权限显示其能管理范围。
(2) 桌台信息管理模块
该模块主要用于管理桌台的信息,可以设置桌台名称,桌台位置等等。
(3) 服务员信息管理模块
该模块主要用于方便对服务人员的信息进行管理。
(4) 进货信息管理模块
该模块主要用于管理进货的各种信息。
(5) 餐具信息管理模块
该模块主要用于实现对餐具的管理。
(6) 菜品信息管理模块
该模块主要用于实现直观的了解菜品的各种信息。
(7) 设备信息管理模块
该模块主要用于实现对店里设备的管理。
(8) 顾客点菜信息管理模块
该模块主要用于实现对来就餐的客人的消费状况进行实时的了解。
3.2 流程设计
图3.1 餐饮管理系统业务流程图
图3.2 功能模块图
图3.3 总体流程图
3.3 E-R图
l 图3.4
图3.5
图3.6
l
图3.7
l
图3.8
l
图3.9
l
图3.10
图3.11
3.4 模型图
图3.12 概念模型图
图3.13 物理模型图
3.5 数据字典
E_Num:此种颜色为主键。 W_WaiterName:此种颜色为外键。
设备信息(Equipment)
表3.14
字段名称
字段含义
字段类型
是否为主键
是否非空
是否唯一
E_Name
设备名称
Varchar(50)
否
是
是
E_Num
设备编号
int
是
是
否
E_Use Time
设备使用时间
Varchar(50)
否
是
否
E_Price
设备价格
Money
否
是
否
E_Quantity
数量
int
否
是
否
餐具信息(Tableware)
表3.15
字段名称
字段含义
字段类型
是否为主键
是否非空
是否唯一
T_Name
餐具名称
Varchar(50)
是
是
是
T_Num
餐具编号
int
否
是
否
T_Price
餐具价格
Money
否
是
否
TableNum
桌号
int
否
是
否
Quantity
数量
int
否
是
否
用户信息(Userlogin)
表3.16
字段名称
字段含义
字段类型
是否为主键
是否非空
是否唯一
UserName
用户名
Varchar(50)
是
是
否
Userpwd
登录密码
Varchar(50)
否
是
否
员工信息(Waiter)
表3.17
字段名称
字段含义
字段类型
是否为主键
是否非空
是否唯一
W_WaiterName
员工姓名
Varchar(50)
是
是
是
W_WaiterNum
员工编号
int
否
是
否
Sex
性别
Char(10)
否
是
否
Age
年龄
Char(10)
否
是
否
Tel
电话号码
int
否
是
否
CardNum
证件号
int
否
是
否
W_Login
管理员
Varchar(50)
否
是
否
桌台信息(Room)
表3.18
字段名称
字段含义
字段类型
是否为非键
是否为空
是否唯一
RoomName
桌台名称
Char( 10 )
否
是
是
RommNum
桌台编号
int
是
是
否
RoomPosition
桌台位置
Char( 10 )
否
是
否
RoomType
桌台类型
Char( 10 )
否
是
否
RoomStatus
桌台状态
Varchar(50)
否
是
否
GuestName
客人姓名
Varchar(50)
否
是
否
WaiterNum
服务员编号
Varchar(50)
否
是
否
W_WaiterName
员工名
Char(10)
否
是
否
进货信息(Purchase)
表3.19
字段名称
字段含义
字段类型
是否为主键
是否非空
是否唯一
P_Time
进货时间
Date&time
是
是
是
P_Num
进货编号
int
否
是
否
P_Name
进货名称
Varchar(50)
否
是
否
P_UsePrice
进货价格
Money
否
是
否
P_Waiter
进货员工
Varchar ( 50 )
否
是
否
P_foodtype
进货菜品类型
Char(10)
否
是
否
W_WaiterName
员工名
Char(10)
否
是
否
菜品信息(Food)
表3.20
字段名称
字段含义
字段类型
是否为主键
是否非空
是否唯一
Foodtype
菜品类型
Char(10)
是
是
是
Foodnum
菜品编号
int
否
是
否
FoodName
菜品名称
Varchar(50)
否
是
否
Foodprice
菜品价格
Money
否
是
否
G_FoodName
菜名
Varchar(50)
否
是
否
顾客点菜信息(Guestfood)
表3.21
字段名称
字段含义
字段类型
是否为主键
是否非空
是否唯一
G_FoodName
菜品名称
Varchar(50)
是
是
是
FoodPrice
消费金额
Money
否
是
否
G_WaiterName
服务员名称
Char(10)
否
是
否
G_FoodNum
菜品数量
int
否
是
否
DateTime
就餐时间
Date&time
否
是
否
G_RoomNum
桌台编号
int
否
是
否
G_Foodtype
点菜类型
Char(10)
否
是
否
G_GuestName
点菜客人
Varchar(50)
否
是
否
W_WaiterName
服务员
Char(10)
否
是
否
3.6 数据表
设备信息
表Equipment用于保存设备的基本信息,该表的结构如图3.22所示
图3.22
菜品信息
表Food用于保存菜品的基本信息,该表的结构如图所示
图3.23
点菜信息
表Guestfood用于保存顾客点菜的详细信息,该表的结构如图所示。
图3.24
进货信息
表Purchase用于保存进货的详细信息,该表的结构如图所示。
图3.25
桌台信息
表Room用于保存桌台的一些有关信息,该表的结构如图所示。
图3.26
餐具信息
表Tableware用于保存餐具的一些有关信息,该表的结构如图所示。
图3.27
用户信息
表Userlogin用于保存登录用户基本信息,表的结构如图所示。
图3.28
员工信息
表Waiter用于保存餐厅服务人员的一些基本信息,表的结构如图所示。
图3.29
四、查询
(1) 创建单表查询
USE CANYIN_db
SELECT Food.FoodName 名称,Food.FoodPrice 价格
FROM Food
WHERE Food.Foodtype='肉';
图 4.1
USE CANYIN_db
SELECT Food.Foodtype,Food.FoodName
FROM Food
WHERE Food.Foodnum='2001';
图4.2
USE CANYIN_db
SELECT Guestfood.FoodPrice,Guestfood.G_Foodtype
FROM Guestfood
WHERE Guestfood.G_FoodNum='2001';
图4.3
(2) 创建多表查询
USE CANYIN_db
SELECT Food.FoodName 菜名称,Food.FoodPrice 价格,Guestfood.G_WaiterName 服务员
FROM Food,Guestfood
WHERE Food.Foodtype='肉' AND Food.FoodName=Guestfood.G_FoodName
图4.4
USE CANYIN_db
SELECT Food.Foodtype,Food.FoodName,Guestfood.G_WaiterName 服务员
FROM Food,Guestfood
WHERE Food.Foodnum='2001' AND Food.FoodName=Guestfood.G_FoodName
图4.5
USE CANYIN_db
SELECT Guestfood.FoodPrice,Guestfood.G_Foodtype,Food.FoodName
FROM Food,Guestfood
WHERE Food.Foodnum='2001' AND Food.FoodName=Guestfood.G_FoodName
图4.6
( 3 ) 创建视图
CREATE VIEW Purchase2
AS SELECT P_Time,P_Num
FROM Purchase
GO
USE CANYIN_db;
SELECT*FROM Purchase;
图4.7
五、数据库代码
建库:
CREATE DATABASE [CANYIN_db] ON PRIMARY
(
NAME='CANYIN_db',
FILENAME='E:\数据库\CANYIN.mdf',
SIZE=20MB,
MAXSIZE=50MB,
FILEGROWTH=15%
)
LOG ON
(
NAME='CANYIN_log',
FILENAME='E:\数据库\CANYIN_log.ldf',
SIZE=20MB,
MAXSIZE=50MB,
FILEGROWTH=10%
)
GO
建表:
use CANYIN_db
CREATE TABLE Equipment
(
E_Name varchar(50) Primary key,
E_Num int not null,
E_UseTime varchar(50) not null,
E_Price money not null,
E_Quantity int not null
);
CREATE TABLE Tableware
(
T_Name varchar(50) Primary Key,
T_Num int not null,
T_Price money not null,
TableNum int not null,
Quantity int not null
);
CREATE TABLE Userlogin
(
Login varchar(50) Primary Key,
UserName varchar(50) not null,
Userpwd varchar(50) not null
);
CREATE TABLE Waiter
(
W_WaiterName varchar(50) Primary Key,
W_WaiterNum int not null,
Sex char(10) not null,
Age char(10) not null,
Tel int not null,
CardNum int not null,
W_Login varchar(50) not null
);
CREATE TABLE Room
(
RoomName char(10) not null,
RoomNum int Primary Key,
RoomPosition char(10) not null,
RoomType char(10) not null,
RoomStatus varchar(50) not null,
GuestName varchar(50) not null,
WaiterNum varchar(50) not null
);
CREATE TABLE Purchase
(
P_Time datetime Primary Key,
P_Num int not null,
P_Name varchar(50) not null,
P_UsePrice money not null,
P_Waiter varchar(50) not null,
P_foodtype char(10) not null
);
CREATE TABLE Food
(
Foodtype char(10) Primary Key,
Foodnum int not null,
FoodName varchar(50) not null,
FoodPrice money not null
);
CREATE TABLE Guestfood
(
G_FoodName varchar(50) Primary Key,
FoodPrice money not null,
G_WaiterName varchar(50) not null,
G_FoodNum int not null,
DateTime datetime not null,
G_RoomNum int not null,
G_Foodtype char(10) not null,
G_GuestName varchar(50) not null
);
心得体会
经过两个周的《数据库原理及应用》课程设计,使我对数据库的操作操作和实现有了进一步的提高。
从懵懵懂懂到驾轻就熟,我了解了数据库的实现对于我还有很大的困难,并且对《数据库原理及应用》这个课程还有很多疑问和疑惑。在做这次课设的过程中,使我发现了我对于使用SQL Server 还有缺陷,也可以说是不熟练,因为有些元素的位置在我放进去之后的录入过程中才发现操作的很不舒服,有些外键设置完之后还会出现新的问题,所以,对这门学科的学习和理解我还有待进一步的提高。
其次,通过这次课设我也了解到了团队的重要性。小组与小组之间,小组内部成员之间都可以有交流和研究,才能使得我的课设做的自认为很完善。
六、参考文献
[1]. 施伯乐.数据库系统教程(第三版),北京:高等教育出版社,2011
[2]. 王英英.SQL Server 2012从零开始学,北京:清华大学出版社,2012
致谢
本文从选题、构思、提纲拟订、资料收集、论文写作及修改至最后定稿,历时将近两周,在这段时间内, 老师为我的课题倾入了大量的心血,给予了我丰富的建议和悉心的指导。设计临近尾声,我对老师表示衷心的感谢。他是一位非常优秀的年轻老师,知识渊博,严谨负责,做事态度非常认真,他优良的风范深深地影响着我,让我拥有了正确的学习态度和对科学的严谨,顺利地完成了课程设计。
另外,我要感谢学院使我学到了很多知识,得到了锻炼。同时也非常感谢所有关心过我、帮助过我的老师和同学们。我会再接再厉,更上一层楼。
最后向所有支持和曾经帮助过我的人表示衷心的感谢!
附录
SQL编程规范
一、sql书写规范:
二、书写优化性能建议
三、其他经验性规则
一、sql书写规范:
1、系统保留字、内置函数名、sql保留字大写。
2、连接符or、in、and、以及=、<=、>=等前后加上一个空格。
3、对较为复杂的sql语句加上注释,说明算法、功能。
注释风格:注释单独成行、放在语句前面。 (1) 应对不易理解的分支条件表达式加注释; (2) 对重要的计算应说明其功能; (3) 过长的函数实现,应将其语句按实现的功能分段加以概括性说明; (4) 每条SQL语句均应有注释说明(表名、字段名)。 (5) 常量及变量注释时,应注释被保存值的含义(必须),合法取值的范围(可选) (6) 可采用单行/多行注释。(-- 或 /* */ 方式)
4、SQL语句的缩进风格
(1) 一行有多列,超过80个字符时,基于列对齐原则,采用下行缩进 (2) where子句书写时,每个条件占一行,语句令起一行时,以保留字或者连接符开始,连接符右对齐。
5、多表连接时,使用表的别名来引用列。
6、供别的文件或函数调用的函数,绝不应使用全局变量交换数据;
如例(1)
二、书写优化性能建议
1、避免嵌套连接。例如:A = B and B = C and C = D
2、where条件中尽量减少使用常量比较,改用主机变量
3、系统可能选择基于规则的优化器,所以将结果集返回数据量小的表作为驱动表(from后边最后一个表)。
4、大量的排序操作影响系统性能,所以尽量减少order by和group by排序操作。
如必须使用排序操作,请遵循如下规则:
(1) 排序尽量建立在有索引的列上。 (2) 如结果集不需唯一,使用union all代替union。
5、索引的使用。
(1) 尽量避免对索引列进行计算。如对索引列计算较多,请提请系统管理员建立函数索引。 (2) 尽量注意比较值与索引列数据类型的一致性。 (3) 对于复合索引,SQL语句必须使用主索引列 (4) 索引中,尽量避免使用NULL。 (5) 对于索引的比较,尽量避免使用NOT=(!=) (6) 查询列和排序列与索引列次序保持一致
6、尽量避免相同语句由于书写格式的不同,而导致多次语法分析。
7、尽量使用共享的SQL语句。
8、查询的WHERE过滤原则,应使过滤记录数最多的条件放在最前面。
9、任何对列的操作都将导致表扫描,它包括数据库函数、计算表达式等等,查询时要尽可能将操作移至等号右边。
10、in、or子句常会使用工作表,使索引失效;如果不产生大量重复值,可以考虑把子句拆开;拆开的子句中应该包含索引。
三、其他经验性规则
1、尽量少用嵌套查询。如必须,请用not exist代替not in子句。如例(2)
2、用多表连接代替EXISTS子句。如例(3)
3、少用DISTINCT,用EXISTS代替 如例(4)
4、使用UNION ALL、MINUS、INTERSECT提高性能
5、使用ROWID提高检索速度。对SELECT得到的单行记录,需进行DELETE、UPDATE操作时,使用ROWID将会使效率大大提高。
6、使用优化线索机制进行访问路径控制。
7、使用cursor时,显示光标优于隐式光标
展开阅读全文