《餐饮管理数据库课程设计.docx》由会员分享,可在线阅读,更多相关《餐饮管理数据库课程设计.docx(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2010级软件专业103班数据库应用系统课程设计课程论文信息工程学院数据库课程设计论文题 目:餐饮管理系统数据库设计学 号:2010012984专业班级:软件工程10级3班姓 名:杨 涛指导老师:朱珊娜完成日期:2010-6-15数据库课程设计论文11需求分析42.1 数据需求42.2 事务需求52.3 数据流62.4 数据字典82数据库结构设计102.1 概念设计102.1.1 分E-R图建立102.1.2 全局/整体E-R图122.2 逻辑设计132.2.1 建立关系模式132.2.2 关系模式规范化处理132.2.3 用户子模式建立133 数据库物理设计144.数据库实施15.在SQL中
2、数据库实施154.1.1 数据库及数据库对象建立154.1.2 数据入库174.2 数据库测试174.2.1对建立的数据库及数据库对象进行测试174.3 在Oracle中数据库实施254.3.1数据库及数据库对象建立254.4 Oracle数据库测试255总结256附录26附录126创建关系26附录228存储过程28触发器30餐饮管理系统数据库设计杨涛(信息工程学院软件工程10级3班)摘 要: 近年来,随着人民的生活水平的不断提高,餐饮业的消费持续增长,竞争愈来愈激烈。然而,传统餐饮企业的日常运作还是靠人工管理,从原材料入库到客人点单,再到结账基本上由人工完成记录,这样做不仅耗费人力资源而且容
3、易导致记录丢失或重复等错误,造成管理水平低下。作为传统的餐饮企业更是存在这些问题,进货,库存有人工管理,客人点单需服务员记录并送至厨房,客人结账由手工记录,人力耗费大,客人等待时间长,管理效率低下,这就迫切需要标准的、高效率的计算机管理方式引导其发展,通过计算机管理企业的日常运作,给管理者以决策参考的模型,来不断完善管理水平,提高工作效率。作为计算机应用的一部分,使用计算机对餐饮企业信息进行管理,具有手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高信息管理的效率,也是企业的科学化、正规化管理与世界接轨的重要条件。经过分析
4、,本系统运用了Microsoft SQL Server2008和Oracle为数据库,系统实现了后台管理、桌台信息的查询、开台信息、点菜、收银、桌台信息管理、员工管理、菜单维护、消费查询和盈利信息查询等功能。关键字:餐饮管理系统;SQLServer2008;Oracle;引言:1、任务陈述传统的酒店行业使用手工记账和核算,这是极易出现问题的,比如: 1、速度慢且容易出错 2、不容易查询客户的消费信息。 3、收银过程中容易出现账单丢失的情况。 4、做销售数据统计分析既费时又费力,还容易出现偏差。而目前餐饮行业竞争愈发激烈,只有解决上述问题才能在竞争中求得生存。因此本系统将实现点餐、管理、销售统计
5、一体化的工作,帮助餐饮管理者快速、有效地分析数据和进行酒店管理。2、任务目标 本系统主要涉及餐厅的日常运营,包括房台安排、点菜、结算、销售统计、员工管理等功能。 后台服务:实现对餐厅顾客开台、点菜/加菜/退菜(只有未签单的菜品可以退订)、预订、签单、结账(打折)功能(所有菜品都签单后才能结账)。需要实现预订与开台的冲突处理、预订转换开台等。 后台管理:房台号/名管理、菜系管理、菜品管理、会员管理。需要保证对于以上各种信息的管理能够同步反应到前台服务界面,防止出现点已删除菜品等情况。 销售统计:统计某一时间段的营业额。1. 需求分析从分析饭店店的基本情况入手,根据餐饮行业的特点和实际情况,进行系
6、统的可行性分析,来了解企业的管理特点和存在的问题,酒店管理系统应以餐饮业务为基础,在此基础上,进行详细分析,得出系统功能结构图。本系统主要是用于后台管理,重视营业数据分析等功能,从专业角度出发,努力为餐饮管理者提供科学有效地管理模式和数据分析功能。2.1 数据需求 房台数据包括房台编号、座位数、状态(占/空)。 酒店储存有会员信息,需要折扣信息等。 菜品信息有菜品编号,名称,价格和状态等。具体数据需求如下:点菜阶段需要的数据有:1、菜品信息,包括其名称、所属菜类别等。2、桌台信息,包括其编号、可容人数、使用状态等。3、会员信息,包括会员编号、折扣、历史消费总额等。4、预订信息,包括预订日期、时
7、段、预订菜品等。员工管理需要数据有: 1、员工档案:包括其姓名、性别、工资。销售统计需要的数据有:1、消费单据:包括金额、日期、项目单编号等数据。2、消费项目单据:消费菜品编号、数量、小计等。会员管理需要的数据有: 1、会员档案:会员编号、对应折扣等。2.2 事务需求 数据录入: 1、录入房台信息 2、录入菜品信息 3、录入会员信息 4、录入员工档案信息 数据更新/删除 1、更新/删除房台信息 2、更新/删除菜系信息 3、更新/删除菜品信息 4、更新/删除会员信息 5、更新/删除员工档案信息 数据查询 1、查询可用房台信息 2、查询在售菜品信息 3、查询开台信息 4、查询订单信息 5、查询会员
8、折扣信息6、可查询某时间段的营业额。 8、查询可用房台信息 9、查询所有员工档案2.3 数据流(1)、顶层数据流(2) 、第一层数据流(3) 、第二层数据流程图(业务数据流程图) 、点菜业务点菜业务、预订业务 订单业务、结帐业务结账业务2.4 数据字典(1)、数据项编号数据项名称代号数据类型1员工号workernochar(10)2姓名workernamevarchar(10)3性别workersexchar(4)4年龄workerageint5基本工资workersalaryint6顾客号customernoVarchar(10)7顾客姓名customernameVarchar(10)8顾客
9、性别customersexVarchar(4)9联系电话customerphonenoVarchar(15)10VIP等级VIP_levelint11历史消费总额totalexpendFloat(5)12订单号odernovarchar(10)13订单时间odertimedatetime14菜品编号Dishnochar(10)15菜品名Dishnamechar(20)16菜品类别Dishclass17菜品状态Dishstatechar(2)18价格Dishpriceint19桌台号Foodtablenochar(10)20桌台容量seatingnoint21桌台状态Foodtablestate
10、Varchar(10)22折扣discountfloat23消费总额Saleroomsmallint24菜单号MenunoVarchar(10)25数量amountint26折扣后总额after_discountfloat27结账时间billtimetime(2) 、数据结构 编号数据结构名属性1员工信息员工号,姓名,性别,年龄,工资2菜谱菜品,菜品号,价格,菜类别3桌台信息桌台号,容纳人数,使用状态4菜单菜单编号,桌台号,点菜时间,顾客号5点单菜单编号,菜品号,菜品名,数量5销售账单销售账单号,时间,销售总额6顾客信息顾客编号,姓名,性别,联系方式消费等级,会员等级,累计消费额7折扣规则VI
11、P等级,折扣8订单订单编号,顾客编号,分配桌台,订单时间,(3) 、数据流 编号数据流名输入输出1菜品信息增加菜品菜谱2房台信息增加房台房台3参考菜谱菜谱点菜4空闲房台房台点菜5消费项目点菜菜单6预订菜单预订菜单7修改菜单加菜退菜菜单8记入账单菜单结账9结账折扣方式结账10销售统计结账销售账单(4) 、数据存储编号数据存储名输入输出1菜谱更新增加菜品菜谱2房台更新增加房台房台3顾客信息更新顾客新信息顾客信息4销售统计销售账单销售统计5订单储存订单订单信息(5)、处理过程编号处理过程名输入数据流输出数据流1顾客点菜终端菜单2结账菜单发票3销售统计销售账单销售统计表2. 数据库结构设计2.1 概念
12、设计2.1.1 分E-R图建立(1) 、菜单生成过程(2)、结账过程(3) 、生成发票(4)、员工信息2.1.2 全局/整体E-R图2.2 逻辑设计阐述逻辑设计阶段目标、任务和方法,重点介绍逻辑设计的主要内容。2.2.1 建立关系模式图转换成关系模式如下(下划线的属性为主码)销售账单(账单编号,发票号,销售额,备注)桌台(房台号,使用状态,座位数)订单(订单号,顾客号,订单时间,桌台号)菜单(菜单号,桌台号,订单号,顾客号,负责员工,时间)顾客(顾客号,姓名,年龄,性别,联系方式,等级)折扣规则(等级,折扣)员工(员工号,姓名,性别,年龄,工资)菜品(菜品号,名称,菜系号,价格,状态)菜单_菜
13、品(菜单号,菜品号,数量)2.2.2 关系模式规范化处理以上关系根据三范式要求。2.2.3 用户子模式建立以下是建立的存储过程和触发器 ,其功能和运用如描述名称描述插入新顾客信息输入某个客户信息,查询若不存在记录,则插入该顾客的信息,VIP等级、历史消费额都为零预定预定包括预定菜单和分配桌台查询预订输入用户编号,查询是否预订开台顾客来餐,分配桌台点菜存储顾客所点的菜品消费总额计算顾客本次的消费总额查询客户点菜输入顾客的编号,查询顾客所点的菜品修改菜单即删除菜品,添加可以视为点菜过程发票信息输人顾客的编号和实付费用,打印发票,并保存销售账单,修改顾客历史消费记录,删除Menus_Dish中所点的
14、菜查询营业额输入一个开始时间和结束时间,查询在此之间的的营业额trig_Upgrade_of_VIP_level触发器,当顾客的历史消费记录修改后,根据所给的条件进行VIP自动升级3. 数据库物理设计 数据库在物理设备上的存储结构与存取方法就是数据库的物理结构,它依赖于选定的数据库管理系统。为一个给定的逻辑数据模型选取一个最合适的应用环境的物理结构的过程,就是数据库的物理设计。这一阶段主要的任务是确定数据库的物理结构,并不断的进行优化处理,主要建立索引,触发器,存储过程。3.1 存储过程存储过程可以实现数据库操作的增删改功能,在执行时需要调用。运用想函数一样,也可以有参数的参与。定义存储过程提
15、供了过程封装的效果,执行只需调用,在更大程度上简化了数据处理过程。餐饮管理部分存储过程如下表3-1所示。表3-1 存储过程列表编号存储过程名称定义作用P-1Add_food见附录7.2.4点餐信息变更,如加菜P-2Cost_bill见附录7.2.4消费信息查询P-3Out_sell见附录7.2.4外卖信息清单P-4paylist见附录7.2.4结账信息清单P-5serving见附录7.2.4上菜送菜处理P-6Update_tbale见附录7.2.4结账后桌台信息处理3.2 触发器表3-2 触发器列表编号触发器名称定义作用T-1Serving_food见附录7.2.3服务员上菜后点菜信息更新4数
16、据库实施与测试4. 数据库实施.在SQL中数据库实施4.1.1 数据库及数据库对象建立create database Restaurant_Management-drop table Dishcreate table Dish -菜谱(Dishno varchar(10)primary key, Dishname varchar(10), Dishclass varchar(10), Dishprice float , Dishstate varchar(6) check(Dishstate = 有 or Dishstate = 无),)-drop table Odercreate table
17、 Oder-订单(Oderno varchar(10) primary key, Customerno varchar(10) not null, Odertime datetime not null, Foodtableno varchar(10) not null, foreign key (Customerno) references Customer(Customerno), foreign key (Foodtableno) references Foodtable(Foodtableno)-drop table Foodtablecreate table Foodtable-桌台信
18、息(Foodtableno varchar(10)primary key, seatingno int not null, Foodtablestate varchar(6) check(Foodtablestate = 空 or Foodtablestate = 占)-drop table Menuscreate table Menus -菜单(Menuno varchar(10)primary key, Foodtableno varchar(10) not null, Customerno varchar(10)not null, Oderno varchar(10), Workerno
19、 varchar(10)not null, consumetime datetime, foreign key(Foodtableno) references Foodtable(Foodtableno), foreign key(Customerno) references Customer(Customerno),)-drop table Menus_Dishcreate table Menus_Dish -菜单_菜品(Menuno varchar(10) , Dishno varchar(10) , Dishname varchar(20) not null, Amount int no
20、t null, primary key(Menuno,Dishno), foreign key (Dishno) references Dish(Dishno)alter table Menus_Dish add check(Amount0)-drop table Customercreate table Customer -顾客(Customerno varchar(10) primary key, Customername varchar(10) not null, Customersex varchar(4) check(Customersex = 男 or Customersex =
21、女)not null, Custoemrphoneno varchar(20) unique not null, VIP_level int, totalexpend float)alter table customer alter column totalexpend float(5)-drop table Discount_rulescreate table Discount_rules-折扣规则(VIP_level int primary key, Discount float,)-drop table workercreate table worker-员工(Workerno varc
22、har(10) primary key, Workername varchar(10), Workersex varchar(4) check(Workersex = 男 or Workersex = 女), Workerage int, Workersalary int,)-drop table Sales_billcreate table Sales_bill-销售账(Menuno varchar(10), Saleroom float(5), Billtime datetime)4.1.2 数据入库对各个主要数据表要录入20条以上的记录,方法可用EXCEL批量导入,也可以逐条录入。4.2
23、 数据库测试4.2.1对建立的数据库及数据库对象进行测试(1)、存储过程测试-插入新顾客信息-drop proc 插入新顾客信息create proc 插入新顾客信息Customerno varchar(10), Customername varchar(10), Customersex varchar(4), Custoemrphoneno varchar(20)asInsert into customer values(Customerno, Customername, Customersex, Custoemrphoneno, 0, 0)-测验-exec 插入新顾客信息 C_035,杨涛
24、,男,18700809052-预定-drop proc 预定create procedure 预定 oderno varchar(10), Customerno varchar(10), odertime datetime, Foodtableno varchar(10)as insert into Oder values(oderno,Customerno,odertime,Foodtableno)-exec 预定 O_005,C_035,2012-6-16,TB_8-查询预订-drop proc 查询预订create proc 查询预订Customerno varchar(10),Oder
25、no varchar(10) outputas if exists(select* from oder where customerno=Customerno)beginprint 已预订select Oderno=odernofrom oder where customerno=Customernoprint 预定号为:+Odernoendelse print 未预定declare Oderno varchar(10)-exec 查询预订 C_002, Oderno outputdeclare Oderno varchar(10)exec 查询预订 C_035, Oderno output-
26、开台信息-drop proc 开台create proc 开台Menuno varchar(10),Foodtableno varchar(10),customerno varchar(10),Oderno varchar(10),workerno varchar(10),Customertime datetimeas insert into Menusvalues(Menuno,Foodtableno,customerno,Oderno,workerno,Customertime)update Foodtable set Foodtablestate=占 where Foodtableno
27、= Foodtableno-exec 开台 M_010,TB_8,C_035,O_005,W_002,2012-6-11插入菜单修改桌台状态-顾客点餐-drop proc 点菜create proc 点菜 Menuno varchar(10) ,Dishno varchar(20),Dishname varchar(10) ,Amount int as insert into menus_dish values(Menuno,Dishno,Dishname,Amount)-点菜exec 点菜 M_010,D-10,蒜泥黄瓜,2exec 点菜 M_010,D-23,麻婆豆腐,1exec 点菜 M
28、_010,D-11,西芹杏仁,1exec 点菜 M_010,D-39,樟茶鸭子,1exec 点菜 M_010,D-57,小炒腊肉,2exec 点菜 M_010,D-72,小炒河虾,1-计算总消费额-drop proc 消费总额create proc 消费总额 customerno varchar(10), Saleroom float outputas select Saleroom=SUM(Dishprice*Amount) from menus_dish,Dish,Menus where Customerno=customerno and Menus.Menuno=Menus_Dish.M
29、enuno and Dish.Dishno=menus_dish.Dishno -测验-declare Saleroom float, customerno varchar(10) = c_035-出入顾客的编号,计算本次消费信息 exec 消费总额 customerno , Saleroom outputselect Customername, Saleroom 总费用from Customerwhere Customerno = customern-查询客户点菜信息-drop proc 查询客户点菜create proc 查询客户点菜customerno varchar(10)as sel
30、ect Dish.Dishname ,Amount from Dish,menus_dish,menus where menus.Customerno=customerno and menus_dish.Menuno=menus.Menunoand Dish.Dishno=menus_dish.Dishno -测验-exec 查询客户点菜 c_035exec 查询客户点菜 c_001-菜品的删除-drop proc 修改菜单create proc 修改菜单Menuno varchar(10), Dishname varchar(20)as delete from menus_dishwhere
31、 Menuno=Menunoand Dishname= Dishname-测验-exec 修改菜单 M_010,小炒腊肉 -发票信息-drop proc 发票信息create proc 发票信息 customerno varchar(10), Actuallypay1 float, Menuno varchar(10) output, Actuallypay2 float output, customername varchar(10) output, Saleroom float output, after_discount float output, Billtime datetime o
32、utputas select Saleroom=SUM(Dishprice*Amount)-本次消费总额 from menus_dish,Dish,Menus where Customerno=customerno and Menus.Menuno=Menus_Dish.Menuno and Dish.Dishno=menus_dish.Dishno select customername=customername -查询用户姓名 from customer where customerno = customerno select Menuno=Menuno -获取账单号 from Menus
33、 where Customerno=customerno set Billtime=getdate() -获取消费账单时间 set Actuallypay2=Actuallypay1-获取实付现金 select after_discount=Saleroom*0.1*Discount -计算折扣后费用 from customer , Discount_rules where customer.VIP_level=Discount_rules.VIP_level print 用户名: + + customername-打印发票 print 实 付: + str(Actuallypay2, 10,
34、 2) print 应 付: + str(Saleroom, 10, 2) print 折扣后: + str(after_discount, 10, 2) print 应 找: + str(Actuallypay2-after_discount, 10, 2) print 时 间: + + cast( Billtime as varchar(20) update customer -修改顾客历史消费总额 set totalexpend = (totalexpend+after_discount) where customerno = customerno delete -删除本次所点的所有的菜
35、 from menus_dish where Menuno =(select Menuno from Menus where customerno = customerno)update Foodtable -修改桌台状态set Foodtablestate=空 where Foodtableno = (select Foodtableno from Menus where customerno = customerno) delete -删除菜单信息 from Menus where customerno = customerno insert into sales_bill values(
36、Menuno,after_discount,Billtime)-插入消费信息到销售账单-测验-declare customername varchar(10) ,Actuallypay2 float,Saleroom float, Menuno varchar(10), after_discount float ,Billtime datetime exec 发票信息 c_002, 200,customername output, Actuallypay2 output,Saleroom output,Menuno output,after_discount output,Billtime output (1)、输出发票信息(2) 、修改桌台信息 (3) 、插入消费账单-查询某一时间段的营业额-d