数据库原理及应用(餐饮管理系统).doc
2022年-2023年建筑工程管理行业文档 齐鲁斌创作内蒙古科技大学课程设计说明书(论文)课程名称:数据库原理及应用题 目:餐饮管理系统学生姓名:朱文涛学 号:1176807418专 业:计算机科学与技术班 级:计算机4班指导教师:余金林31内蒙古科技大学课程设计任务书课程名称数据库原理及应用设计题目餐饮管理系统指导教师余金林时间一、教学要求1从附录一中选择一个题目进行数据库应用系统设计。2功能设计:用Visual FoxPro,Visual Basic、PB等开发工具与数据库管理系统SQL-SEVER或Access制作一个小型管理系统。所设计的小型管理系统应包含输入输出、查询、插入、删除等基本功能。设计课题可以从候选的项目中选出,根据题目的基本需求,画出流程图,编写程序,并写出详细的设计说明书。(本项实际系统设计与实现可选,但必须有功能设计过程)3数据库的设计:根据数据库应用系统设计过程,通过需求分析和系统分析,进行数据库的概念结构设计、逻辑结构设计等工作:l 概念结构设计的ER图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.6l 图3.7l 图3.8l 图3.9l 图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_dbSELECT Food.FoodName 名称,Food.FoodPrice 价格FROM FoodWHERE Food.Foodtype='肉' 图 4.1USE CANYIN_dbSELECT Food.Foodtype,Food.FoodNameFROM FoodWHERE Food.Foodnum='2001' 图4.2USE CANYIN_dbSELECT Guestfood.FoodPrice,Guestfood.G_FoodtypeFROM GuestfoodWHERE Guestfood.G_FoodNum='2001' 图4.3(2) 创建多表查询USE CANYIN_dbSELECT Food.FoodName 菜名称,Food.FoodPrice 价格,Guestfood.G_WaiterName 服务员FROM Food,GuestfoodWHERE Food.Foodtype='肉' AND Food.FoodName=Guestfood.G_FoodName 图4.4USE CANYIN_dbSELECT Food.Foodtype,Food.FoodName,Guestfood.G_WaiterName 服务员FROM Food,GuestfoodWHERE Food.Foodnum='2001' AND Food.FoodName=Guestfood.G_FoodName 图4.5USE CANYIN_dbSELECT Guestfood.FoodPrice,Guestfood.G_Foodtype,Food.FoodNameFROM Food,GuestfoodWHERE Food.Foodnum='2001' AND Food.FoodName=Guestfood.G_FoodName 图4.6( 3 ) 创建视图CREATE VIEW Purchase2AS SELECT P_Time,P_NumFROM PurchaseGOUSE 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_dbCREATE 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. 施伯乐.数据库系统教程(第三版),北京:高等教育出版社,20112. 王英英.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时,显示光标优于隐式光标