数据库课程设计餐饮下单管理系统方案

上传人:痛*** 文档编号:104831108 上传时间:2022-06-11 格式:DOC 页数:21 大小:177KB
收藏 版权申诉 举报 下载
数据库课程设计餐饮下单管理系统方案_第1页
第1页 / 共21页
数据库课程设计餐饮下单管理系统方案_第2页
第2页 / 共21页
数据库课程设计餐饮下单管理系统方案_第3页
第3页 / 共21页
资源描述:

《数据库课程设计餐饮下单管理系统方案》由会员分享,可在线阅读,更多相关《数据库课程设计餐饮下单管理系统方案(21页珍藏版)》请在装配图网上搜索。

1、目 录1.课题名称及目标12.需求分析12.1 数据需求12.2事务需求22.3数据流32.4数据字典53.数据库结构设计83.1概念设计83.1.1分E-R图的建立83.1.2整体E-R图93.2逻辑设计103.2.1 E-R图向关系模型的转换103.2.2优化处理113.2.3 用户子模式建立124.数据库物理设计124.1存储过程134.2 触发器135.数据库的实施135.1在SQL中数据库实施135.1.1数据库及数据库对象的建立135.1.2数据入库155.2 数据库测试155.2.1对建立的数据库及数据库对象进行测试156. 总结297. 附录3021 / 211.课题名称及目标

2、本次实训要设计的数据库课题名称是餐厅管理系统。餐厅管理系统的功能主要包括顾客点菜、结账、对员工资料进行管理、对餐桌信息进行统一设置、对消费情况进行查询等功能。基本功能如下:1菜谱信息管理:对菜谱进行增、查、改、删操作。即可查询当前餐厅所推出的菜品,增加菜品,修改菜品的价格,删除菜品。2餐桌信息管理:能查询当前餐厅中所有餐桌的座位数以及使用情况,客人可以对位实现的餐桌进行使用申请。3顾客信息管理:可以查询顾客的相关信息,如性别,年龄,联系方式等。当有新顾客时,可添加新顾客的信息。4顾客下订单功能:实现下订单,具有唯一的订单号,可用于结账。可根据顾客的人数选择相应的餐桌号,并且能够指定服务员。6顾

3、客点菜:实现顾客点菜功能。顾客可以对所下的订单进行修改,即可删除所点的菜品或是修改数量。同时可以查询某位顾客的订单。7顾客结账:根据订单号进行结账防止有相同姓名的顾客,以致结错帐。能够根据消费金额进行对应的折扣,并把消费信息存档到消费记录中去。2.需求分析通过了解餐饮行业的特点和实际情况,从分析饭店的基本情况入手,结合要实现的功能,对系统的可行性进行分析,为提高其可行性,故做了以下数据分析。2.1 数据需求餐桌数据包括餐桌号、座位数、状态空/有人餐厅存储有顾客信息,员工信息。菜品信息有菜品编号、名称、类别、价格等v 具体数据需求如下:下订单阶段需要的数据l 顾客信息:包括顾客编号。l 订单信息

4、:包括订单编号、消费时间。l 餐桌信息:包括编号、可容人数、使用状态等l 员工信息:包括员工工号。点菜阶段需要的数据l 订单信息:订单编号l 菜品信息:包括菜品编号、菜品名称、菜品数量等。结账阶段需要的数据:l 订单信息:包括订单编号、顾客编号l 菜品信息:包括菜品编号、菜品名称、菜品数量等。l 员工信息:包括员工工号l 折扣信息:包括消费金额、折扣数员工管理需要的数据:l 员工档案:包括工号、姓名、性别、工资顾客管理需要的数据:l 顾客档案:包括编号、姓名、性别等。消费记录管理需要的数据有:l 消费信息:订单编号、消费金额、折扣后金额、结账时间2.2事务需求v 数据录入l 录入顾客信息l 录

5、入餐桌信息l 录入员工信息l 录入菜品信息v 数据更新/删除l 更新/删除餐桌信息l 更新/删除菜谱菜品信息l 更新/删除员工信息l 更新/删除顾客信息l 更新/删除订单菜品信息v 数据查询l 查询可用餐桌信息l 查询在售菜品信息l 查询订单信息l 查询顾客点菜信息l 查询员工信息l 查询顾客消费信息2.3数据流1顶层数据流P1订单处理E2服务员E1顾客 负责F1变更信息(2) 第一层数据流 P2.2点菜处理F2.1折扣菜谱P2.1直接下单E2.1顾客E2.3服务员P2.3结账E2.2订单就位 生成 账单第二层数据流点菜业务 申请变更点菜处理反馈变更查看菜谱判断变更方式变更处理 加菜、减菜直接

6、下单存储账单订单顾客就位 生成 账单后台处理存储订单 点菜业务2.4数据字典1) 数据项Foodtable数据项属性存储代码类型长度餐桌号Foodtablenovarchar10座位数seatingnoint使用状态Foodtablestatevarchar10Menus菜谱数据项属性存储代码类型长度编号Dishnovarchar10名称Dishnamevarchar10类别Dishclassvarchar10价格DishpricefloatWorker员工数据项属性存储代码类型长度工号Workernovarchar10姓名Workernamevarchar10性别Workersexvarch

7、ar4年龄Workerageint工资WorkersalaryintCustomer顾客数据项属性存储代码类型长度编号Customernovarchar10姓名Customernamevarchar10性别Customersexvarchar4联系方式Customerphonenovarchar20Oder订单数据项属性存储代码类型长度订单编号Odernovarchar10顾客编号Customernovarchar10消费时间consumetimedatetime餐桌编号Foodtablenovarchar10服务员编号Workernovarchar10Menus_Oder点菜数据项属性存储代

8、码类型长度订单编号Odernovarchar10菜品编号Dishnovarchar10菜品名称Disnnamevarchar10菜品数量Dish_amountintDiscount_rules折扣规则数据项属性存储代码类型长度消费金额Consumptionfloat折扣DiscountfloatSales_bill消费账单数据项属性存储代码类型长度订单编号Odernovarchar10消费金额Consumptionfloat折扣后金额after_discountfloat账单时间Billtimeint2) 数据结构编号数据结构名属性1餐桌信息餐桌号、座位数、使用状态2菜谱编号、名称、类别、价格

9、3员工信息工号、姓名、性别、年龄、工资4顾客信息编号、姓名、性别、联系方式5订单信息订单编号、顾客编号、消费时间、餐桌编号、服务员编号6点菜订单编号、菜品编号、菜品名称、菜品数量7折扣规则消费金额、折扣8消费账单订单编号、消费金额、折扣后金额、账单时间3) 数据流编号 数据流名 输入 输出 1 菜品信息 修改菜品 菜谱 2 空闲餐桌 选择餐桌 订单 3 点菜信息 加菜退菜 点菜 4 记入账单 订单 结账 5 结账 折扣方式 结账4) 数据存储编号 数据存储名 输入 输出 1 顾客信息更新 顾客新信息 顾客信息 2 菜谱更新 新增菜品 菜谱 3 订单储存 订单 订单信息 4 餐桌更新 新增餐桌

10、餐桌 5 账单存储 消费信息 账单记录5) 处理过程编号 处理过程名 输入数据流 输出数据流 1 顾客点菜 菜谱 订单 2 结账 订单 账单记录3.数据库结构设计3.1概念设计3.1.1分E-R图的建立(1) 订单形成过程1n111nnn1n负责包含菜品选择菜谱顾客查看生成订单服务员2结账形成过程消费金额包含支付顾客订单对应折扣规则对应3.1.2整体E-R图111对应1111111对应1111111nnnnn工资对应员工折扣销售记录账单支付保存位置餐桌负责订单下单包含菜品选择查看顾客菜谱3.2逻辑设计3.2.1 E-R图向关系模型的转换A. 转换规则一个实体型转换成一个关系模型。实体的属性就是

11、关系的属性,实体的码就是关系的码。实体型间的联系常有如下不同的情况:a. 一个1:1联系可以转换为一个独立的关系模式,也可以任意一端对应的关系模式合并。b. 一个1:n联系可以转换成一个独立的关系模式,也可以与n端对应的关系模式合并。c. 一个m:n联系转换成一个关系模式。d. 3或3个以上实体间的一个多联系可以转换成一个关系模式。e. 具有相同码的关系模式可合并。B.根据以上规则得到如下关系模型下划线的属性为主码菜谱菜品编号,菜品名称,菜品类别,菜品价格顾客顾客编号,姓名,性别,年龄,联系方式餐桌餐桌号,座位数,使用状态员工工号,姓名,性别,年龄,工资订单订单编号,顾客编号,消费时间,餐桌编

12、号,服务员编号菜谱_订单订单编号,菜品编号,菜品名称,菜品数量消费记录订单号,消费金额,折扣后金额,账单时间折扣规则消费金额,折扣3.2.2优化处理1) 确定数据依赖。2) 对各个关系模式间的数据依赖进行极小化分析,减小冗余。3) 按照数据依赖的理论对关系模式进行分析,看是否存在部分函数依赖或函数传递或多值依赖等,确保各关系模式满足第三范式。4) 按照需求分析阶段得到的处理要求,分析对于这样的应用环境这些模式是否合适,确定是否要对某些模式进行合并或分解。5) 对关系模式进行必要的分解,分析对于这样的应用环境这些模式是否合适,确定是否要对某些模式进行合并或分解。3.2.3 用户子模式建立名称描述

13、插入新顾客信息若是新顾客,则插入顾客的信息,姓名,性别等下单就位顾客来餐,下订单,分配餐桌点菜存储顾客所点的菜品删除菜品删除顾客所点的某菜品修改菜品数量修改顾客所点的某菜品的数量查询顾客点菜信息查询顾客所点的菜品消费总额计算顾客本次消费的总额。顾客支付完账单时,把消费信息存档到消费记录中结账后更改餐桌状态当顾客结账后,把餐桌状态改为空删除菜谱中菜品删除菜谱中存在的某菜品修改菜品价格修改菜谱中某菜品的价格向菜谱添加菜品向菜谱添加新菜品trig_discount 触发器,顾客进行结账时,消费金额在不同的区间会有不同的折扣。trig_Sales_bill触发器,当消费金额达到一定额数时,会送相应优惠

14、券trig_Menus触发器,当向菜谱添加新菜品,若该菜品名称含有红字,会发出此后生意必定红红火火的祝福语。4.数据库物理设计数据库在物理设备上的存储结构与存取方法就是数据库的物理结构,它依赖于选定的数据库管理系统,为一个给定的逻辑数据模型选取一个最合适的应用环境的物理结构过程,就是数据库的物理设计。这一阶段主要任务时确定数据库的物理结构,并不断的进行优化处理,主要建立索引,触发器,存储过程。4.1存储过程存储过程可以实现数据库操作的增删改功能,在执行时需要调用。御用像函数一样,也可以有参数的参与。定义存储过程提供了过程封装的效果,执行只需要调用,在更大程度上简化了数据处理过程。餐饮管理具体存

15、储过程名称和作用详见3.2.3,具体代码详见第5.2.1部分4.2 触发器餐饮管理具体触发器的名称和作用详见3.2.3,具体代码详见第5.2.1部分5.数据库的实施5.1在SQL中数据库实施5.1.1数据库及数据库对象的建立createdatabaseRestaurant_Management-建表-createtableMenus-菜谱Dishnovarcharprimarykey,Dishnamevarchar,Dishclassvarchar,Dishpricefloat,createtableCustomer-顾客Customernovarcharprimarykey,Customer

16、namevarcharnotnull,Customersexvarcharcheck notnull,Customerphonenovarcharuniquenotnull,createtableFoodtable-餐桌Foodtablenovarcharprimarykey,seatingnointnotnull,Foodtablestatevarcharcheck,droptableOdercreatetableOder-订单Odernovarcharprimarykey,Customernovarcharnotnull,consumetimedatetimenotnull,Foodtab

17、lenovarcharnotnull,Workernovarcharnotnull,foreignkeyreferencesCustomer,foreignkeyreferencesFoodtable,foreignkeyreferencesWorker,createtableWorker-员工Workernovarcharprimarykey,Workernamevarchar,Workersexvarcharcheck,Workerageint,Workersalaryint,droptableMenus_OdercreatetableMenus_Oder-点菜Odernovarchar,

18、Dishnovarchar,Disnnamevarchar,Dish_amountintnotnull,Primarykey,foreignkeyreferencesMenus,foreignkeyreferencesOder,droptableSales_billcreatetableSales_bill-销售账单Odernovarcharprimarykey,Consumptionfloat,after_discountfloat,Billtimedatetime,foreignkeyreferencesOderdroptableDiscount_rulescreatetableDisco

19、unt_rules-折扣规则5.1.2数据入库 本系统采用将数据逐条录入的方法。5.2 数据库测试5.2.1对建立的数据库及数据库对象进行测试1存储过程-插入新顾客信息-dropprocedure插入新顾客信息createprocedure插入新顾客信息Customernovarchar,Customernamevarchar,Customersexvarchar,CustomerphonenovarcharasinsertintoCustomervaluesselect*fromCustomer-验证-execute插入新顾客信息112699,李阳,男,-下单就位-dropprocedure

20、下单就位createprocedure下单就位Odernovarchar,Customernovarchar,consumetimedatetime,Foodtablenovarchar,Wokernovarcharasbegintransaction-开始事务insertintoOdervaluesif 空beginprint该餐桌有人,请重选餐桌。RollbacktranreturnendelsebeginupdateFoodtablesetFoodtablestate=有人whereFoodtableno=Foodtablenoprint下单成功,请就位开始点菜endcommittran

21、-验证-execute下单就位O_001,112699,2013-12-26,TB_005,W_002execute下单就位O_002,112698,2013-12-26,TB_004,W_003当餐桌有人时,则显示成功下单时,则显示-查看下单情况-select*fromOderselect*fromFoodtable-菜谱的查询-select*fromMenus-删除菜谱中菜品-createprocedure删除菜谱中菜品DishnovarcharasdeletefromMenusWhereDishno=Dishnoselect*fromMenus-验证-execute删除菜谱中菜品D_11

22、2-修改菜品价格-createprocedure修改菜品价格Dishnovarchar,DishpricefloatasupdateMenussetDishprice=DishpriceWhereDishno=Dishnoselect*fromMenus-验证-execute修改菜品价格D_113,30-向菜谱增加菜品-createprocedure向菜谱增加菜品Dishnovarchar,Dishnamevarchar,Dishclassvarchar,DishpricefloatasinsertintoMenusvaluesselect*fromMenus-验证-execute向菜谱增加菜

23、品D_112,时蔬,小炒类,20-点菜的增加、查询、删除、修改-点菜-createprocedure点菜Odernovarchar,Dishnovarchar,Disnnamevarchar,Dish_amountintasinsertintoMenus_Odervaluesselect*fromMenus_OderwhereOderno=Oderno-验证-execute点菜O_001,D_111,小炒河虾,2execute点菜O_001,D_114,鸡蛋炒芹菜,1execute点菜O_001,D_115,三鲜汤,3-查询客户点菜信息-createprocedure查询顾客点菜信息Custo

24、mernovarcharasselectCustomerno=Customerno,Menus.Dishno,Dishname,Dish_amountfromMenus,Menus_Oder,OderwhereOder.Customerno=CustomernoandMenus.Dishno=Menus_Oder.DishnoandOder.Oderno=Menus_Oder.Oderno-验证-execute查询顾客点菜信息112699-删除菜品-createprocedure删除菜品Odernovarchar,DishnovarcharasdeletefromMenus_OderWhere

25、Oderno=OdernoandDishno=Dishnoselect*fromMenus_OderwhereOderno=Oderno-验证-execute删除菜品O_001,D_111-修改菜品数量-createprocedure修改菜品数量Odernovarchar,Dishnovarchar,Dish_amountintasupdateMenus_OdersetDish_amount=Dish_amountWhereOderno=OdernoandDishno=Dishnoselect*fromMenus_OderwhereOderno=Oderno-验证-execute修改菜品数量O

26、_001,D_111,3,-计算总消费额-DROPprocedure消费总额createprocedure消费总额Odernovarchar,Consumptionfloatoutput,discountfloatoutputasselectConsumption=SUMfromMenus_Oder,Menus,OderwhereMenus.Dishno=Menus_Oder.DishnoandOder.Oderno=Menus_Oder.OdernoandOder.Oderno=Odernobegintran-启用事务ifexists-判断Discount_rules中是否有对应折扣begi

27、nselectdiscount=DiscountfromDiscount_ruleswhereConsumption=ConsumptionendELSEbeginINSERTintoDiscount_rulesVALUES-将Consumption插入到Discount_rulesselectdiscount=DiscountfromDiscount_ruleswhereConsumption=Consumption-获取对应折扣endifexists-判断消费账单是否已有该消费记录beginprint消费记录已插入消费账单,别重复插入endelsebegininsertintoSales_

28、billvaluesOderno,Consumption,Consumption*discount,GETDATEprint成功将消费记录插入到消费账单endcommittran-提交事务-验证-declareConsumptionfloat,discountfloat,Odernovarchar=O_001execute消费总额O_001,Consumptionoutput,discountoutputselectOderno,Customername,Consumption总消费,discount折扣fromOder,CustomerwhereCustomer.Customerno=Ode

29、r.CustomernoandOderno=Oderno并把消费信息插入到消费记录中若已经结账,则提示-结账后餐桌状态-createprocedure结账后更改信息OdernovarcharasupdateFoodtable-修改餐桌状态setFoodtablestate=空whereFoodtableno=-验证-execute结账后更改信息O_001-对菜谱的操作-查询菜谱-select*fromMenus-删除菜谱中菜品-createprocedure删除菜谱中菜品DishnovarcharasdeletefromMenusWhereDishno=Dishnoselect*fromMen

30、us-验证-execute删除菜谱中菜品D_112执行前:执行后:-修改菜品价格-createprocedure修改菜品价格Dishnovarchar,DishpricefloatasupdateMenussetDishprice=DishpriceWhereDishno=Dishnoselect*fromMenus-验证-execute修改菜品价格D_113,40执行后:-向菜谱增加菜品-createprocedure向菜谱增加菜品Dishnovarchar,Dishnamevarchar,Dishclassvarchar,DishpricefloatasinsertintoMenusval

31、uesselect*fromMenus-验证-execute向菜谱增加菜品D_112,时蔬,小炒类,20执行后:2触发器-折扣-DROPtriggertrig_discountcreatetriggertrig_discountonDiscount_rulesforinsertasbegindeclareexpandfloatselectexpand=ConsumptionFrominsertedifexpandbeginupdateDiscount_rulessetDiscount=1 whereConsumption=expandendelseif=50andexpandbeginupda

32、teDiscount_rulessetdiscount=0.95 whereConsumption=expandendelseif=100andexpandbeginupdateDiscount_rulessetdiscount=0.90 whereConsumption=expandendelseif=150andexpandbeginupdateDiscount_rulessetdiscount=0.85 whereConsumption=expandendelsebeginupdateDiscount_rulessetdiscount=0.80 whereConsumption=expa

33、ndendend-验证-insertintoDiscount_rulesvaluesselectDiscountfromDiscount_rulesWHEREConsumption=250-送优惠券-droptriggertrig_Sales_billcreatetriggertrig_Sales_billonSales_billforinsertasbegindeclareexpandfloatselectexpand=ConsumptionFrominsertedif=150andexpandbeginprint送您5元优惠券endelseif=200beginprint送您10元优惠券e

34、ndend-祝福语-droptriggertrig_Menuscreatetriggertrig_MenusonMenusforinsertasbegindeclaredishnamevarcharselectdishname=dishnameFrominsertedif beginprint此后生意必定红红火火endend6. 总结这次课程设计中遇到一个最严重的问题就是时间太短,太少了。本来是有一个星期的,但除去考试、上课的时间,以及构思、整理思路,画E-R图的时间,真正动手开始做课程设计的时间就所剩不多了。不过经过几个晚上的熬夜、拼命,最后还是完成了。不过有点遗憾的是,在构思时,我本想使这

35、个系统更完善,具备更多的功能,但却由于时间问题,最终只能放弃了,甚至我自己本身很清楚,现在完成的这个系统还是存有缺陷的,无法完全满足实际生活所需。在这次实训中,遇到的问题也有关于知识方面的,不过在老师的悉心指导以及同学们的帮助下,最终都一一解决了。在这个课程设计中,我学到的东西还是很多的,感受颇多。第一,这次课程设计巩固了之前学习到的知识,并将学到的知识进行了串联。第二,我初略学到了设计一个数据库的几个步骤:需求分析,概念结构设计,逻辑结构设计,物理结构设计,运行,实现,运行和维护。第三,学会熟练使用存储过程以及触发器。之前并没有做过有关存储过程的实验,触发器方面的实验也很少。不过借此机会,我已把它们掌握了。这一学期的数据库就以这次实训落幕了。感觉挺不舍的。虽然之后也没有相关的课程了,但我觉得我对数据库的学习并不会就此止步。接下来的想法就是把所学到的知识强化,达到能运用自如,并且想要学会C+或是JAVA跟数据库的连接。7. 附录附录1 数据库各表截图1Customer表2Discount_rules表3Foodtable表4Menus表5Menus_Oder表6Oder表7Sales_bill表8Worker表附录2 视图截图1点菜视图(2) 结账视图3整体视图附录3 存储过程

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!