数据库原理 及应用 (餐饮管理系统)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
内蒙古科技大学课程设计说明书(论文)
课程名称:数据库原理及应用
题目:餐饮管理系统
学生姓名:朱文涛
学号:1176807418
专业:计算机科学与技术
班级:计算机4班
指导教师:余金林
内蒙古科技大学课程设计任务书
目录
一、系统分析简介 (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图
图3.4
图3.5
图3.6
●
图3.7
●
图3.8
●
图3.9
图3.10
图3.11
3.4 模型图
图3.12 概念模型图
图3.13 物理模型图
3.5 数据字典
E_Num:此种颜色为主键。
W_WaiterName:此种颜色为外键。
设备信息(Equipment)
表3.14
字段名称字段含义字段类型是否为主
键
是否非空是否唯一
E_Name设备名称Varchar
(50)否是是
餐具信息(Tableware)
表3.15
用户信息(Userlogin)
表3.16
员工信息(Waiter)
表3.17
桌台信息(Room)
表3.18
进货信息(Purchase)
表3.19
菜品信息(Food)
表3.20
顾客点菜信息(Guestfood)
表3.21
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所示Array
图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时,显示光标优于隐式光标。