计算机科学与技术毕业论文-餐饮管理系统设计与实现_第1页
计算机科学与技术毕业论文-餐饮管理系统设计与实现_第2页
计算机科学与技术毕业论文-餐饮管理系统设计与实现_第3页
计算机科学与技术毕业论文-餐饮管理系统设计与实现_第4页
计算机科学与技术毕业论文-餐饮管理系统设计与实现_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

餐饮管理系统设计与实现摘要:在互联网技术日新月异的今天,信息化的管理方式正在逐渐占领各个行业。在餐饮领域,连锁店具有一整套完善的管理系统,而个体餐饮店更需要一个低成本、易操作的管理系统。本文分析了相关的研究背景,国内外开发情况以及开发意义。介绍了在开发过程中所需要的平台和关键技术。根据个体餐饮店的需求调查,对开发个体餐饮管理系统的可行性进行分析。基于B/S模式,结合动态网页生成技术ASP、数据库管理系统MicrosoftSQLServer和IIS服务器,开发了一套集成多个管理功能的个体餐饮管理系统。最后对系统进行测试,并做出总结。关键词:个体餐饮;ASP;关联推荐;B/SDesignandRealizationofIndividualCateringManagementSystemAbstract:WiththerapiddevelopmentofInternettechnology,themanagementmodeofinformatizationisgraduallyoccupyingvariousindustries.Inthefieldofcatering,chainstoreshaveacompletesetofperfectmanagementsystem,whileindividualrestaurantsneedalow-costandeasy-to-operatemanagementsystem.Thispaperanalyzestherelevantresearchbackground,domesticandforeigndevelopmentsituationanddevelopmentsignificance.Theplatformandkeytechnologiesneededinthedevelopmentprocessareintroduced.Accordingtotheindividualcateringdemandsurvey,thefeasibilityofdevelopingtheindividualcateringmanagementsystemisanalyzed.BasedonB/Smode,combinedwithdynamicwebpagegenerationtechnologyASP,databasemanagementsystemMicrosoftSQLServerandIISServer,developedasetofintegratedmultiplemanagementfunctionsoftheindividualcateringmanagementsystem.Finally,thesystemistestedandsummarized.Keywords:Individualcatering;ASP;Associationrecommendation;B/STOC\o"1-3"\h\u190021绪论 1247611.1课题背景 167011.2国内外研究状况 1294851.3研究意义 190972开发平台及应用技术 2158902.1ASP技术说明 247512.2C#开发语言介绍 2296922.3SQLServer 244712.4Bootstrap 262583系统分析 2141273.1需求分析 225933.2可行性分析 3259183.3业务分析 4296303.3.1系统用例图 4219293.3.2系统活动图 72104系统设计 7248404.1系统功能设计 8240684.1.1系统类图 815774.1.2系统时序图 1022074.2系统数据库设计 11184264.2.1数据表关系图 12203294.2.2数据表设计 12234365系统实现 14140825.1系统开发环境及操作平台 1412145(1)操作系统:Windows10; 1418018(2)后台数据库:SQLServer2017 1424258(3)WEB服务器:InternetInformationServices10 149271(4)开发平台:VisualStudio2017 14300915.2业务流程设计 14297355.2.1系统操作流程 14229035.2.2用户注册流程 1569895.2.3用户修改密码流程 172345.2.4编辑员工流程 1834295.2.5管理绩效流程 19132985.2.6清点库存流程 2042225.2.7登记进货流程 21117005.2.8开台、点单、结算流程 2149155.2.9菜单管理流程 24271975.2.10订单管理流程 24209245.2.11后厨管理流程 2530385.2.12固资管理流程 26103125.2.13查看区间账务流程 27236865.2.14推荐菜品查看流程 2896125.3系统功能模块实现 30211635.3.1人员管理模块 30180275.3.2仓储管理模块 31324535.3.3菜单管理模块 32194795.3.4订单管理模块 33116315.3.5后厨管理模块 34266665.3.6设备管理模块 34111675.3.7财务管理模块 3457586系统测试 36178176.1测试目的 36314396.2测试结果及验证 3678187结论 382159致谢 3811760参考文献 391绪论进入21世纪,计算机技术与网络技术都得以快速的发展,4G的普及以及即将到来的5G时代,让一切都变得看似触手可及。这也为一个良好的管理系统做好了硬件上的基础。现有的管理系统大多是对单个部门或者仅仅是针对收银点菜方面下功夫,各部门之间的信息无法做到上通下达,成了信息孤岛[1]。因此开发一个具有多功能且能管理各个部门,传递数据信息的餐饮管理系统是很有必要的。1.1课题背景伴随着飞速发展的科技和不断完善的基础设施,各行各业的发展都得到了极大的发展,工作和学习的效率也得以大幅提升。支付宝、微信、美团等应用都让我们的生活更加便捷,从中我们也感受到了科技的力量[2]。随着互联网+思想的不断普及,人们在越来越多的领域尝试使用计算机技术和网络技术[3]。在餐饮行业我们可以看到越来越多的连锁餐饮店,甚至个人餐饮店也都在美团、大众点评此类与餐饮行业息息相关的互联网公司的帮助下,逐步实现了信息化的管理。但是无论是连锁餐饮店自己使用的,还是互联网公司承包开发的系统,都存在以下几点不足:a.软件开发者对餐饮企业的了解不够深入。这主要体现在无法真正提高企业的服务质量和运营水品;b.软件功能缺乏纵深。即有些系统功能很“全面”,但是缺少对各个领域的深度管理,致使功能无效堆叠,无法起到应该有的作用[4];c.实施和服务操作复杂。这体现在操作过程上的复杂,餐饮企业作为流动性很强的企业,对人员的培养也是占成本的一部分的[5]。1.2国内外研究状况由于欧美等发达国家的计算机技术普及的较早,因此国外的餐饮企业早在上世纪80年代就开始推广使用管理软件。根据应用信息技术不同,还可以分为计算机化阶段,自动化阶段,网络化阶段和整合阶段[6]。伴随着不断前进的计算机技术,餐饮管理系统也逐渐由原来的大众化、粗放型向个体化、集约型方向发展。各家餐饮企业也通过不断升级信息化管理系统来提升自身在同行业中的综合竞争能力。现在的餐饮管理系统相较于之前拥有更加稳定的技术支撑,更加灵活的功能,这些都让大型餐饮企业的管理成为一种优势,但这种优势本身对于整个行业而言是一种劣势,因为它一般只适用于较大型的企业[7]。可是这种管理模式对我们而言依旧有很多值得借鉴的地方,我们要做的是取其精华,去其糟粕。自古以来中国就是一个民以食为天的国家,伴随着饮食成为一个行业,餐饮企业也在不断地涌现。可是由于中西方文化地差异,我们引进的西方先进的餐饮信息管理系统很难适用于中餐厅的管理,也导致了我们的大多数餐饮企业依旧停留在传统的服务流程和管理方式,属于“粗放型阶段”,难以提高企业的效率[8]。也有一些企业察觉到了信息化管理时代的来临,如俏江南、艳阳天等,都开始逐步引入餐饮管理系统[9],可是相较于体量巨大的整个餐饮行业而言,我们仍需要低成本、易操作的餐饮管理系统,现在的餐饮管理系统,依旧具有上升和改进的空间。1.3研究意义个体餐饮店的店长能够通过整个管理系统对店铺的设备、食材、财务状况以及各部门的人员进行管理,而店内人员也可以使用线上的管理系统,分管好各自的管辖范围。中小型酒店餐饮管理系统提高了这些酒店的餐饮系统的管理效率、服务质量,更降低了企业的运营成本,通过数据可视化和数据分析为中小型酒店的发展提供有效依据,切实促进餐饮企业的长远发展[10]。尤其是当今服务业的竞争越来越激烈,人工管理虽有其优点,但终究是弊大于利,而现代化、信息化的餐饮管理系统已然是整个行业正在追求的,而这也有助于实现未来整个餐饮行业资源的统一规划,促进行业的发展。2开发平台及应用技术2.1ASP技术说明ASP(ActiveServerPages,动态服务页面),是微软公司的一项技术,主要在IIS(InternetInformationServices,Internet信息服务)上运行。ASP文件和HTML文件类似,它可包含文本、HTML、XML和脚本,其中的脚本可以在服务器上执行。当浏览器请求某个ASP文件时,请求通过IIS传递至ASP引擎。ASP引擎会逐行读取这个文件,并执行文件中的脚本。最后浏览器得到的是ASP文件所反馈的纯HTML形式的内容。不同用户可以利用ASP定制自己的网页,提高网页的可用性、简易性和速度。同时,由于ASP代码无法在浏览器端察看,进一步确保了站点的安全性。2.2C#开发语言介绍C#是一种简单易用的编程语言,起源于C语言系列的C#能让熟悉C、C++的程序员快速上手[11]。作为一种面向对象的语言,C#还进一步支持面向组件的编程。C#提供了语言构造来为编程模型提供属性、方法和事件,同时包含自己的文档,这一切都让C#成为一种非常自然的语言,可用于创建和使用软件组件。2.3SQLServerSQLServer是Microsoft开发的一个关系数据库管理系统(RDBMS),是目前最常用的数据库之一,是一个高度可扩展的产品[12]。SQLServer具有顶级事务处理TPC-E性能评分和顶级数据仓库TPC-H性能评分,在领先的商业应用方面也具有很高的评分。根据报告指出,SQLServer的安全漏洞数量是最少的。在SQLServer2017中,引入了SQL图功能,允许用户以更加灵活、敏捷的方式处理数据关系,让关系建模和分析变得更为容易。2.4BootstrapBootstrap来自Twitter,是目前最受欢迎的HTML、CSS和JS前端框架。在兼容大部分jQuery插件的同时,它还形成了一套专属于自己的网站风格。Bootstrap简洁灵活,其最大的优势就是响应式布局。随着移动设备的普及,开发者们必须让自己的网页适配平板、台式机和手机,而Bootstrap给了他们最佳的体验。3系统分析系统分析是软件系统设计中必不可少的一个阶段。在这个过程中,需要对用户进行调查,理解用户的需求,对功能性需求与性能需求做出详尽的分析。在完成上述分析的同时,对系统的业务做出分析,帮助用户梳理自身需求,也方便开发人员做出系统设计。之后要根据团队或者个人的能力水平,对开发过程做技术可行性分析,开始之前还需要根据经济状况做出经济可行性分析。本部分将主要从需求分析、可行性分析以及业务分析三个角度,通过图表的方式来对该餐饮系统做出系统分析。3.1需求分析需求分析阶段首先要理解用户将要用计算机解决的问题是什么,系统分析员在理解用户的用意之后,对系统的目标、系统的范围做出说明,然后用需求模型的形式准确地表达出来。这个过程可以帮助开发人员快速理解用户需求,避免错误理解带来损失。首先对系统做出功能性需求分析。通过到餐饮店考察,亲身经历餐饮店工作,向店长咨询过后,系统对以下几个方面具有需求:(1)空桌查看功能。大厅人员是直接与顾客面对面的工作人员,他们要能在短时间内根据顾客的人数,将顾客引导到可容纳相应人数的空桌。因此空桌必须是大厅的工作人员能直接查看到的。(2)菜品查找功能。在调查过程中,当前餐饮店采用的点菜子系统要求工作人员自行到数据库中点击选取,这就需要工作人员记忆菜品在界面中所处的模块、页数。因此他们需要一个更加简洁方便的点菜子系统,能通过关键字搜索锁定菜品,避免大量记忆。(3)后厨管理功能。后厨的工作更强调时效性,系统需要实时刷新每一桌的最近一次上菜情况,确保顾客不会陷入长时间等待的状态。(4)设备管理功能。系统能够对店内设备进行统计,通过工作人员更新设备的状态,让管理人员了解设备损耗情况。(5)仓储管理功能。系统能够对进货进行记录,同时更新库存中已有货品的数量,加入新的货品,管理人员能通过系统了解每日货品的剩余量,为次日的进货做准备。(6)财务管理功能。系统需要记录过往的订单,同时允许管理人员删除过于久远的订单。同时对各类成本、收入利润进行统计,便于店长了解收支情况。(7)人员管理功能。从一定程度上来看,餐饮行业是一个人员流动很大的行业,系统要能灵活的记录人员的变化以及员工薪资的变化。性能需求分别是时间和空间方面。餐饮行业是一个强调实时性的行业,需要能快速的将顾客带入进餐的过程,各个环节之间紧密连接,且不会影响其他功能的实现。这就要求系统能快速应对高峰期大数据量的工作。系统对于使用者的操作也要做出快速的应对,不会有延迟或错误出现。空间方面,磁盘要有足够的空间来存储大量的往期数据,此外对系统所需的内存做出优化,进一步降低系统适配的条件。3.2可行性分析从技术上看,本系统前端采用HTML+CSS+JS编写ASP动态页面,这是一种常见的前端开发方法。后端采用C#语言进行开发,数据库采用MicrosoftSQLServer2017,开发平台是VisualStudio2017,笔者之前也有利用这套技术方案开发过类似的管理系统,网上也有大量关于这套技术方案的教程,这是一套切实可行而且成熟的技术方案。此外,根据所学的软件工程知识,能够把握各个开发环节,保证开发过程的连贯性。开发完成之后可对系统进行测试,完善系统功能,进一步提高系统可靠性。系统开发过程中所采用的平台都是可以从官网获取下载的免费版本,在功能上可以满足中小型系统的开发。目前市场上常见的服务器租借价格也是在一家中小型餐饮企业承受范围之内的。此外,改用本系统不需要添加额外的设备,原先所使用的设备,无论是平板、个人电脑,凡是可以利用浏览器上网的设备,都能够使用本系统。不但节省了更换设备的费用,还便于管理者更好地掌握本店的财务情况,通过推荐系统,可以了解顾客对搭配菜品的喜好,推出不同的套餐实现一定程度的盈利。本系统还能实现长久存档,避免了纸质档案易丢失的情况,弥补了人工管理的缺点,在以后的一段时间内信息管理软件必会逐步替代人工管理模式。综上,该方案在经济上是确实可行的。3.3业务分析3.3.1系统用例图用例模型可以在系统开发的开始阶段让开发人员明白,新的系统需要有什么功能;对于构造完毕的系统,可以反应系统完成了什么样的功能[13]。通过调查研究,将主要从参与者的角度对系统进行用例分析,大厅人员的角度见图1,后厨人员的角度见图2,管理人员的角度见图3。大厅人员的角度:(1)员工管理:a.查看个人信息:员工可以通过相关界面查看个人的信息、当月薪资的变化,允许修改部分个人信息并提交保存;b.注册登录:大厅工作人员被禁止注册为系统用户,只能由管理人员添加后,通过身份证号和被告知的密码通过该模块登陆系统。允许工作人员通过输入身份证号和姓名的方式修改自己的密码。(2)设备管理:a.编辑设备:大厅的工作人员在每日的工作结束后需要对店内的设备进行逐一排查,根据设备情况更新系统内的设备情况,修改设备信息。(3)订单管理:a.创建订单:顾客进店之后,大厅人员需要接待顾客,将其引导到正确的空桌,并开台,创建订单;b.加菜:无论是创建订单时点菜,还是进餐过程中加菜,都算是加菜的过程,工作人员可以通过系统搜索菜品,为订单实现加菜;c.结算订单:顾客用餐结束后,工作人员通过系统结算该桌账单。(4)菜单管理:a.添加菜品:顾客需要的菜品可能是菜单上没有的,允许员工向菜单内添加新的菜品,实现点菜过程。图1大厅人员用例图后厨人员的角度:(1)员工管理:a.查看个人信息:员工可以通过相关界面查看个人的信息、当月薪资的变化,允许修改部分个人信息并提交保存;b.注册登录:后厨工作人员被禁止注册为系统用户,只能由管理人员添加后,通过身份证号和被告知的密码通过该模块登陆系统。允许工作人员通过输入身份证号和姓名的方式修改自己的密码。(2)仓储管理:a.清点库存:后厨人员每日的工作结束后需要对仓库内的食材、饮品进行清点,与数据库数据进行对比,对增删的货品进行更新操作,修改货品信息;b.登记货品:后厨人员需要对新进的货品做登记,系统会查询已有库存,对存在的货品进行更新操作;对不存在的货品进行插入操作。(3)后厨管理:a.完成菜品:切配人员根据系统列出的待完成菜品信息,对菜品进行排序,完成菜品,通知服务员取菜上菜。(4)菜单管理:a.添加菜品:大厨如果有了新的菜品,可以向菜单内添加新菜品,完善菜单。图2后厨人员用例图管理人员的角度:(1)员工管理:a.绩效管理:管理人员可以根据工作人员的工作情况,决定对员工给予奖金或处以罚金;b.编辑员工:管理人员可以根据工作人员变化情况,添加或删除员工;c.查看个人信息:员工可以通过相关界面查看个人的信息、当月薪资的变化,允许修改部分个人信息并提交保存;d.注册登录:管理人员输入超级密码后,可以注册为系统的管理人员,在系统验证过后可以登陆系统。允许工作人员通过输入身份证号和姓名的方式修改自己的密码。(2)仓储管理:a.清点库存:管理人员可以根据清点结果,添加或删除库存中的货品,并修改货品的数量;b.进货管理:管理人员可以对新进的货品做登记,系统会查询已有库存,对存在的货品进行更新操作;对不存在的货品进行插入操作。同时删除不需要的进货记录。(3)设备管理:a.添加设备:根据设备变化情况,管理人员需要及时向系统中添加新设备的信息;b.编辑设备:可以协助大厅工作人员检查设备情况并更新设备状态;c.对于报废无用的设备允许删除设备。(4)菜单管理:a.编辑菜品:管理人员可以添加新的菜品;b.管理人员可以根据市价修改已有菜品的价格或信息;c.对于过季的或因人员更替撤销的菜品可以予以删除操作。(5)后厨管理:a.完成菜品:查看后厨的任务,及时点击已完成的菜品,避免重复制作造成浪费。(6)订单管理:a.创建订单:可以为进店的顾客开台,并创建订单;b.加菜:为存在的订单添加菜品;c.结算:顾客用餐完毕后,需要根据系统的数据,对订单进行结算;d.撤单:对于过往的订单或者无用的订单,管理人员可以进行撤单。(7)财务管理:a.查看近期报表:管理人员可以查看近期的成本、菜品排名以及每日的盈利走势,把握店内的收支情况;b.菜品套餐推荐:管理人员可以根据系统的提示,获取系统对指定日期间菜品的搭配计算,获取常见的顾客点单搭配,推出套餐,增加盈利。图3管理人员用例图3.3.2系统活动图活动图显示了动作的流程及结果。本部分以顾客进店、点菜、用餐、结账的过程为例,给出该过程的活动图,见图4。顾客进店后,服务员查看是否有空的桌子,有空桌,则开台点菜;否则顾客需要等待;顾客入座之后,服务员就开台点菜,在点菜过程中,如果出现没有的菜品,服务员需要向系统中添加该菜品;存在的菜品,则直接添加到订单中去;提交订单之后,后厨会首先查看库存,面对没有的菜品,需通知服务员,换菜或退菜。对于库存中有的菜品,由切配配好材料之后,开始烹饪;菜品完成之后,切配需要在系统上通知服务员取菜,上菜;烹饪过程中如果顾客需要加菜,则重复加菜的过程;顾客用餐结束之后,服务员通过系统,结算账单。以上就是一个完整的用餐活动过程。图4用餐活动图4系统设计系统分析部分的工作是为系统设计部分做准备,开发人员通过分析得到的系统需求和系统用例,需要对系统的各部分功能、事务的流程、数据库的表进行设计和规划。本部分将从系统的功能设计和数据库设计两方面展开叙述。4.1系统功能设计系统主要分为7个部分:人员管理模块,店长注册、人员登录、添加员工、编辑员工、删除员工、绩效管理、个人信息修改;仓储管理模块,进货登记、编辑库存、删除货品;菜单管理模块,菜品登记、编辑菜品、删除菜品;订单管理模块,开台点单、撤单、加菜、账单结算;后厨管理模块,菜品完成;设备管理模块,设备登记、查看设备、删除设备;财务管理模块,当日账务查看、区间账务查看、菜品套餐推荐。整体系统功能图见图5。图5整体系统功能图该功能设计,基本实现了需求分析阶段所要求的功能。4.1.1系统类图类图显示了模型中存在的类、类的内部结构以及类之间的关系,是模型的静态结构[14]。根据系统需求,首先是整体的类图,见图6设有以下具有代表性的类之间的关系:点单、员工管理、设备管理以及库存管理,见图7,图8,图9,图10。图6整体类图图7点单类图图8员工管理类图图9设备管理类图图10库存管理类图4.1.2系统时序图时序图是严格按照时间顺序描述系统元素之间的交互的UML图。与类图类似,此处选取具有代表性的时序图,点单时序图、库存管理时序图、薪资管理时序图和菜单管理时序图,见图11,图12,图13,图14。图11点单时序图图12库存管理时序图图13薪资管理时序图图14菜单管理时序图4.2系统数据库设计根据系统分析部分得到的系统需求,需要设计出一套适用于该系统的数据库表。数据库用于存储系统需要的数据,并允许工作人员对数据进行插入、更新、删除、维护等日常工作。本部分将通过实体联系图和数据库关系表展示数据库的整体设计,再从各个表入手,介绍每个表的组成。4.2.1数据表关系图通过实体联系图,就可以对数据表进行设计。数据表关系图描述了各个数据表之间的关系,并体现了每个数据表的主键和外键。见图15。图15数据表关系图4.2.2数据表设计该个人餐饮管理系统中共计设有10个数据表,分别为:员工信息表(员工编号、员工姓名、员工身份证号、员工密码、员工手机号、员工职位、员工部门、员工初始薪资、员工当月薪资、员工住址、其它),如表1所示。表1员工信息表字段名类型长度备注UIDvarchar20编号(pk)Namevarchar30姓名IDCardvarchar18身份证号Passwordvarchar18密码Cellphonevarchar20手机号Positionvarchar20职位Departmentvarchar20部门Salaryint4初始薪资MSalaryInt4当月薪资AddressvarcharMAX住址OthervarcharMAX其它员工工资记录信息表(记录编号、员工编号、性质、额度、原因、日期、结果),如表2所示。表2员工工资记录信息表字段名类型长度备注LIDvarchar20记录编号(pk)UIDvarchar20编号(fk)Choosenchar10性质Valuenchar10额度Reasonvarchar50原因Datevarchar20日期Resultnchar10结果设备信息表(设备编号、设备名称、设备类型、设备摆放位置、设备状态),如表3所示。表3设备信息表字段名类型长度备注DIDvarchar20编号(pk)DNamevarchar50名称DTypevarchar50类型DPlacevarchar50摆放位置DStatevarchar50状态进货单信息表(货品编号、货品名称、货品类型、货品数量、货品单价、货品单位、货品总价、进货日期),如表4所示。表4进货单信息表字段名类型长度备注GIDvarchar20编号(pk)GNamevarchar50名称GTypevarchar50类型GCountfloat8数量GPriceint4单价GUnitesvarchar20单位GTotalint4总价GDatevarchar20日期库存信息表(存货编号、存货名称、存货类型、存货数量、存货单位),如表5所示。表5库存信息表字段名类型长度备注Material_IDvarchar20编号(pk)Namevarchar30名称Typevarchar30类型Stockfloat8数量Unitsvarchar20单位桌子信息表(桌子编号、桌子类型、桌子可容纳人数、桌子状态),如表6所示。表6桌子信息表字段名类型长度备注TableNoint4编号(pk)Typevarchar20类型Personint4可容纳人数Statevarchar20状态菜品信息表(菜品编号、菜品名称、菜品类型、菜品单价、菜品单位),如表7所示。表7菜品信息表字段名类型长度备注FIDvarchar20菜品编号(pk)FNamevarchar50名称FTypevarchar50类型FPricefloat8单价FUnitsvarchar20单位订单信息表(订单编号、订单开台事件、订单人数、订单桌号、订单状态、订单支付类型、最近出餐时间、总额、开始时间段),如表8所示。表8订单信息表字段名类型长度备注OIDvarchar20订单编号(pk)Timevarchar50开台时间Peoplenchar10人数TableNoint4桌号(fk)Statevarchar50状态Typevarchar20支付类型LastOutvarchar20最近出餐时间Totalfloat8总额Startvarchar20开始时间段订单详情信息表(订单编号、菜品编号、菜品名称、菜品数量、菜品状态、菜品总价),如表9所示。表9订单详情信息表字段名类型长度备注OIDvarchar20订单编号(fk)FIDvarchar20菜品编号(fk)FNamevarchar50菜品名称FCountint4菜品数量FStatevarchar20菜品状态FTotalfloat8菜品总价菜品临时表(订单编号、菜品名称、菜品数量、订单日期)表10菜品临时表字段名类型长度备注OIDvarchar20订单编号(fk)FNamevarchar20菜品名称(fk)FCountint4菜品数量Timevarchar50订单日期5系统实现本部分主要介绍了系统的开发环境和操作平台。通过流程图与伪代码相结合的方式对实现的功能进行简单的介绍。5.1系统开发环境及操作平台(1)操作系统:Windows10;(2)后台数据库:SQLServer2017(3)WEB服务器:InternetInformationServices10(4)开发平台:VisualStudio20175.2业务流程设计5.2.1系统操作流程首先进入登陆界面,用户需要输入身份证号和密码,待系统后台验证过后可以进入主界面进行被允许的操作。完成操作后,用户可以选择退出系统。图16系统操作流程图登陆过程实现的伪代码如下:后端获取控件数据:身份证号(IDCard)、密码(psw);if(身份证号==空||密码==空) 返回错误信息;连接数据库;stringcheck="select*fromUser_InfowhereIDCard='IDCard'andPassword='psw'";sqlcommand=newSqlCommand(check,sqlconnection);sdr=数据库中读取数据;if(sdr.read()){ 设置session; if(部门==”管理”||部门==”大厅”) 跳转Main页面; else 跳转Kitchen页面;}else{ 返回错误信息:密码或身份证号输入错误;}退出系统的伪代码如下:清除Session;跳转Login页面;5.2.2用户注册流程本系统仅允许管理人员进行注册。注册前首先需要输入超级密码,在与数据库中超级密码比对后,正确的可以进入注册界面。注册时需要填写包括身份证号、姓名、手机号在内的多项个人信息,填写完成后点击提交就可以将个人信息添加到数据库中,注册成功。面对错误的填写,系统也会根据不同的情况给出不同的提示。图17用户注册流程图验证部分的伪代码如下:后端获取控件数据;连接数据库;stringselect=@"selectPasswordfromUser_InfowhereName='Admin'";sqlCommand=newSqlCommand(select,sqlConnection);sdr=数据库中读取数据;if(sdr.Read()){ psw=数据库中读取超级密码; if(输入==psw) 跳转注册页面; else 返回错误信息,输入错误;}注册部分的伪代码如下:后端获取控件数据:身份证号(idcard)、密码(psw)、姓名(name)、手机号(phone)、部门(department)、职位(position)、薪资(salary)、地址(address)、其它(other);if(获取数据中有空) 返回错误信息;else{ 连接数据库; stringcheck=@"select*fromUser_InfowhereIDCard=‘idcard’"; sqlcommand=newSqlCommand(check,sqlconnection); sdr=数据库中获取数据; if(sdr.Read()) 返回已存在用户的信息; else{ maxid=newSqlCommand("SelectUIDfromUser_InfoorderbyUIDdesc", sqlConnection); UID=maxid.ExecuteScalar()+1; Insert_User_Info=@"InsertintoUser_Info(UID,Password,Cellphone,Name,IDCard,Address,Other,Position,Salary,MSalary,Department)values ('UID','psw','phone','name','idcard','address','other','position','salary','salary','department')"; cmd=newSqlCommand(Insert_User_Info,slqConnection); 写入数据库; 跳转Login页面; }}5.2.3用户修改密码流程用户修改密码首先需要输入个人的身份证号和姓名进行验证,验证通过后可以进入密码修改的页面。与注册时一样,需要输入两次新的密码,可以帮助用户记住密码,同时验证密码是否输入正确。图18修改密码流程图验证功能的伪代码如下:后端获取控件数据:身份证号(idcard)、姓名(name);连接数据库;select=@"select*fromUser_InfowhereIDCard='idcard'andName='name'";sqlCommand=newSqlCommand(select,sqlConnection);sdr=数据库中获取数据;if(sdr.Read()){ 设置Session["ID"]; 跳转Change_PSW页面;}else{ 返回错误信息:身份证号或姓名输入错误;}修改密码的伪代码如下:后端获取控件数据:新密码(psw)、重复输入的密码(repsw);if(psw==空||repsw==空) 返回错误信息:新密码不能为空;elseif(psw!=repsw) 返回错误信息:两次输入的密码不同;连接数据库update=@"updateUser_InfosetPassword='psw'whereUID='Session["ID"]";sqlCommand=newSqlCommand(update,sqlConnection);执行sqlCommand;跳转Login页面;5.2.4编辑员工流程管理人员首先需要选中需要修改信息的员工,待界面跳转之后进行信息修改。图19编辑员工信息流程图编辑员工信息的伪代码如下:后端获取控件数据:姓名(name)、身份证号(idcard)、手机号(phone)、住址(address)、其它(other);连接数据库;type=Request["type"].QueryString;if(type=="change") id=Session["ID"];else id=QueryString["ID"];update=@"updateUser_InfosetName='name',IDCard='idcard',Cellphone='phone',Address='address',Other='other'whereUID='id'";command=newSqlCommand(update,sqlConnection);执行command;if(type=="change") 跳转Main页面;else 跳转Worker页面;5.2.5管理绩效流程与编辑员工一样,首先需要选中员工,待界面跳转之后,需要选择薪资变化的性质,即奖金或罚金,选择金额以及原因,便于日后查看。图20绩效管理流程图绩效管理功能的伪代码如下:后端获取控件数据:变化性质(UpDown)、金额(delta)、当月薪资(ordinarl)、原因(reason);if(变化性质=="罚金")delta=-delta;result=ordinarl+delta;update="updateUser_InfosetMSalary='result'whereUID='QueryString["UID"]'";LID=GetOrderNo();date=DateTime.Now.ToString("yyyy/MM/dd");insert=@"insertintoSalary_Log(LID,UID,Value,Choose,Reason,Result,Date)values('LID','QueryString["UID"]','delta','UpDown','reason','result','date')";连接数据库;updcmd=newSqlCommand(update,sqlConnection);inscmd=newSqlCommand(insert,sqlConnection);执行updcmd;执行inscmd;跳转Performance页面;5.2.6清点库存流程清点库存允许用户删除、添加、更新现有库存。接收页面会根据传入的信息,决定插入新的数据或是更新原有的数据。图21清点库存流程图清点库存功能的伪代码如下:后端获取控件数据:名字(name)、数量(count)、类型(type)、单位(units)id=QueryString["id"];连接数据库;if(id=="-1"){ maxid=newSqlCommand("SelectMaterial_IDfromStock_Info orderbyMaterial_IDdesc",sqlConnection); id=maxid+1; cmdstring=@"insertintoStock_Info(Material_ID,Name,Type,Stock,Units) values('id','name','type','count','units')";}else cmdstring="updateStock_Infoset Name='name',Type='type',Stock='count',Units='units' whereMaterial_ID='"+ID.Value+"'";command=newSqlCommand(cmdstring,sqlConnection);执行command;跳转Material页面;5.2.7登记进货流程用户可以对新进的货品进行登记,对于过往登记过的进货记录可以选择删除。登记新的货品时,系统会对数据库进行扫描,如果是存在的货品,则更新现有货品的数量;如果是不存在的货品,则插入新的货品数据。图22登记进货流程图登记进货功能的伪代码如下:后端获取控件数据:名字(name)、单价(price)、数量(count)、类型(type)、单位(units);连接数据库;maxid=newSqlCommand("SelectGIDfromGoodsorderbyGIDdesc",sqlConnection);id=maxid+1;total=price*count;insert=@"insertintoGoods (GID,GName,GType,GCount,GPrice,GUnits,GTotal,GDate)values ('id','name','type','count','price','units','total','date')";command=newSqlCommand(insert,sqlConnection);执行command;if(库存中存在对应货品) 更新库存表;else 向库存表中插入该货品信息;跳转Goods页面;5.2.8开台、点单、结算流程开台需要选取一个空桌进行开台,触发相应的事件后,会根据时间生成一个订单号,跳转进入点菜的界面。点菜是通过搜索的方式实现的,通过模糊搜索,从数据库中取出可能的菜品,供用户选择,添加后会加入现有的订单。面对同一个菜品,可以选择通过搜索同一个菜品进行数量叠加,也可以选择直接编辑,修改数量。图23开台、点菜流程图开台、点菜功能的伪代码如下:后端获取控件数据:选择的表的索引index;if(index==-1) 返回错误信息:未选择编辑行;else{ 生成订单号OID; 跳转Order页面;}后端获取控件数据:菜品名称(fname)、菜品号(fid)、订单号(oid)、菜品类型(ftype)、菜品价格(fprice);连接数据库;check=@"select*fromOrder_DetailwhereOID='oid'andFID='fid'";checkcommand=newSqlCommand(check,sqlConnection);sdr=数据库中获取数据;if(sdr.Read()){ count=数据库中原菜品数量; count+=1; result=count*fprice; cmdstring="updateOrder_DetailsetFCount='count',FTotal='result'whereOID='oid'andFID='fid'";}else cmdstring=@"insertintoOrder_Detail (OID,FID,FName,FCount,FState,FTotal)values ('oid','fid','fname','1','未制作','fprice')";sqlcommand=newSqlCommand(cmdstring,sqlConnection);执行sqlcommand;sum=@"selectSUM(FTotal)fromOrder_DetailwhereOID='oid'";sumcmd=newSqlCommand(sum,sqlConnection);newtotal=数据库中获取数据;update=@"updateOrder_InfosetTotal='sumcmd'whereOID='oid'";updatecmd=newSqlCommand(update,sqlConnection);执行updatecmd;选取需要结算的账单,进入账单详情页面,服务员必须选择支付类型,线上支付会跳转到相应的二维码页面,非线上支付会统计账单总额和折扣,做出计算后,给出最后需要支付的金额。图24结算流程图结算功能的流程图如下:后端获取控件数据:总价(Total)、支付类型(type)、折扣(Count);oid=QueryString["id"];tableno=QueryString["tableno"];if(Count!=空) Total=Total*Count;if(type==空) 返回错误信息:未选择支付类型;elseif(type=="线上") 跳转Pay页面;updateInfo="updateOrder_InfosetTotal='Total',State='state',Type='type'whereOID='oid'";updateTable=@"update[Table]setState='无人'whereTableNo='tableno'";infocmd=newSqlCommand(updateInfo,sqlConnection);tablecmd=newSqlCommand(updateTable,sqlConnection);执行infocmd;执行tablecmd;跳转Order_Info页面;5.2.9菜单管理流程工作人员可以通过菜单管理对菜品进行添加、更新和删除。修改的界面会根据传入的标志位,判断是添加菜品或者是修改菜品。如果是修改菜品,则会从数据库中提取相关菜品的数据,供修改使用。图25菜单管理流程图菜单管理功能的伪代码如下:后端获取控件数据:菜品名称(name)、类型(type)、价格(price)、单位(units)id=QueryString["id"];连接数据库;if(id=="-1"){ maxid=newSqlCommand("SelectFIDfromMenuorderbyFIDdesc",sqlConnection); id=maxid+1; cmdstring=@"insertintoMenu(FID,FName,FType,FPrice,FUnits)values('id','name','type','price','units')";}else cmdstring="updateMenu setFName='name',FType='type',FPrice='price',FUnits='units'whereFID='id'";command=newSqlCommand(cmdstring,sqlConnection);执行command;5.2.10订单管理流程订单管理允许用户查看订单的内容,对于冗余的订单可以选择删除。删除时系统会进行判断,如果是未结账的订单,则拒绝删除;否则允许删除。图26订单管理流程图订单管理功能的伪代码如下:后端获取控件数据:选择的表的索引index、订单状态(state)、订单号(oid)、订单桌号(tableno);if(index==-1) 返回错误信息:未选择编辑行;else{ if(选择控件查看) 跳转Order_Detail页面; elseif(选择控件删除){ if(state!="已结账") 跳转Tips页面,提示信息:未结算,不能删除; else{ 连接数据库; delete=@"deletefromOrder_InfowhereOID='oid'"; update=@"update[Table]setState='无人'whereTableNo='tableno'"; deletecmd=newSqlCommand(delete,sqlConnection); updatecmd=newSqlCommand(update,sqlConnection); 执行deletecmd; 执行updatecmd; } }}5.2.11后厨管理流程后厨的相关人员会在完成菜品后,更新菜品信息,菜品的状态会从“未制作”成为“未出餐”,服务员需要随时查看,避免上菜晚,同时也避免后厨重复做菜,造成浪费。同时更新订单的最后出餐时间,便于对出餐顺序进行排序。图27后厨管理流程图后厨管理功能的伪代码如下:后端获取控件数据:选择的表的索引index、订单号(oid)、菜品号(fid);if(index==-1) 返回错误信息:未选择编辑行;else{ 连接数据库; updatedetail=@"updateOrder_DetailsetFState='未出餐' whereOID='oid'andFID='fid'"; detailcmd=newSqlCommand(updatedetail,sqlConnection); 执行detailcmd; lastout=当前时间; updateinfo=@"updateOrder_InfosetLastOut='lastout'whereOID='oid'"; infocmd=newSqlCommand(updateinfo,sqlConnection); 执行infocmd;}5.2.12固资管理流程固资管理即对设备进行管理。允许添加、更新、删除功能。图28固资管理流程图固资管理功能的伪代码如下:后端获取控件数据:设备名称(name)、类型(type)、状态(state)、位置(place)id=QueryString["id"];连接数据库;if(id=="-1"){ maxid=newSqlCommand("SelectDIDfromDeviceorderbyDIDdesc",sqlConnection); id=maxid+1; cmdstring=@"insertintoDevice(DID,DName,DType,DPlace,DState) values('id','name','type','place','state')";}else cmdstring=@"updateDeviceset DName='name',DType='type',DPlace='place',DState='state' whereDID='id'";command=newSqlCommand(cmdstring,sqlConnection);5.2.13查看区间账务流程区间账务查看允许用户自行选择查看的范围,页面会显示成本、菜品排名、近日盈利三类信息,并分别以图表的方式显示出来。图29查看区间账务流程图区间账务查看功能的伪代码如下:后端获取控件数据:开始日期(start)、结束日期(end);costselect=@"selectGTypeAS类型,SUM(GTotal)AS总价fromGoodswhereGDatebetween'start'and'end'groupbyGType";foodsort=@"selecttop15FNameAS菜名,COUNT(FName)AS销量,SUM(FTotal)AS收益fromFoodSalewhereTimebetween'start'and'end'groupbyFNameorderby销量desc";profitselect=@"selectSUM(Total)AS当日收益,TimeAS日期fromOrder_InfowhereTimebetween'start'and'end'groupbyTimeorderbyTime";costdata=绑定数据(costselect);fooddata=绑定数据(foodsort);profitdata=绑定数据(profitselect);绘制成本饼图(costdata);绘制菜品排名柱状图(fooddata);绘制菜品利润饼图(fooddata);绘制利润线型图(profitdata);绘制利润柱状图(profitdata);5.2.14推荐菜品查看流程这里引入FP关联规则算法。相较于传统的Apriori关联规则算法,FP算法挖掘时只需要扫描两次数据集就可将其压缩成一棵FP-Tree,从FP-Tree中挖掘频繁模式即可,降低了I/O开支,是一种非常高效的算法。首先需要对数据进行预处理,此处引入支持度的概念,设购买的组合中存在{X,Y},支持度即指{X,Y}同时出现的概率,可以确定数据集的频繁程度。图30支持度公式同时引入置信度的概念,即购买X的人同时购买Y的概率,用于确定Y在包含X的交易中出现的频繁程度。图31置信度公式设置最小支持度minSupport,删除低于阈值的数据,对数据集进行预处理。根据FP算法的要求对数据集进行排序,构成FP-Tree。通过递归调用FP-Growth算法,挖掘频繁项集。图32FP关联规则算法流程图FP关联规则算法的核心伪代码如下:select=@"selectOID,FNamefromTempSalewhereTimebetween'开始日期'and'结束日期'";datas=绑定数据(select);//根据菜品在事务中出现的次数进行排序//删去低于阈值的菜品//赋值项头表Sort_Delete_Table(datas,headertable);//根据调整后的数据集构建供挖掘的FP-Treefptree=CreateTree(datas)//计算菜品间的置信度Set_Confidence(confidences,热卖菜品);置信度归一化并排序;根据置信度删去低于阈值的菜品;//深度遍历设置项头表DFS(fptree,headertable);//递归构造条件FP-Tree,获取频繁项集mineTree(fptree,headertable,Set,freqItemList);vs=利用置信度集confidences及频繁项集freqItemList获取结果集;returnvs;构造FP-Tree树的伪代码如下:CreateTree(datas){ fptree=newTNode("null"); foreach(datas中的每一项data){ point=fptree; foreach(data.valuelist中的每一项item){ index=item在point.children中的索引; if(index==-1){ node=item; nodejoinpoint.children; point指向point.children中的最后一个节点; } else{ point.children[index].node计数++; point指向point.children中找到的节点; } } } returnfptree;}挖掘频繁项集的伪代码如下:mineTree(fptree,headertable,Set,freqItemList){ bigL=headertable倒置;//便于从下向上查找数据 foreach(bigL中的每一项basePat){ 向freqItemList中添加新频繁项列newFreqSet; condPattBases=获取当前项前缀路径; //赋值项头表 myHead=Create_Headertable(condPattBases); Sort_Delete_Table(condPattBases,myHead); //构建条件FP-Tree myCondTree=CreateConditionTree(condPattBases); DFS(myCondTree,myHead); if(myHead.Count!=0) mineTree(myCondTree,myHead,newFreqSet,freqItemList); }}5.3系统功能模块实现5.3.1人员管理模块人员管理模块允许管理员添加或删除员工,以及对用户的个人信息进行修改,如身份证号、姓名等,同时允许根据月度表现,进行绩效管理。图33修改员工信息图34管理员工绩效图35添加员工5.3.2仓储管理模块管理人员和后厨人员被允许对仓储进行管理,后厨人员可以登记进货情况,清点仓储,而管理人员则具有对仓储管理的全部功能。图36查看库存图37编辑库存图38添加进货5.3.3菜单管理模块由于菜品数量会逐渐增多,因此可以通过搜索的方式查找需要编辑的菜品,同时管理人员可以修改菜品的信息。图39菜品搜索图40编辑菜品信息5.3.4订单管理模块订单管理可以查看过往的订单。未结账的订单只有结账之后才能撤单。对于已结账的订单,可以查看详情,也可以删除该订单。图41纵览订单图42查看订单图43撤销未结账订单失败提示5.3.5后厨管理模块厨房主要由后厨人员进行管理,起作用分别是:让厨房人员了解当前订单数量;显示当前时间,帮助切配人员合理安排出菜顺序;点击完成菜品,通知服务员前来取餐。图44查看未完成的菜品5.3.6设备管理模块管理人员和大厅人员被允许对设备进行管理,大厅人员只能够编辑设备的信息,主要是更新设备的状态,便于管理人员了解损耗。大厅人员拥有全部权限。图45查看设备图46编辑设备5.3.7财务管理模块财务管理由管理人员查看。主要是两大功能,查看近期账务情况和查看推荐菜品套餐。根据需要,可以自行选择最近7天、最近30天或者选择一段时间内的进行查看。图47成本信息图48菜品排名图49最近7日的收益情况图50最近7日的菜品推荐6系统测试6.1测试目的在编写代码的过程中,语法的错误可以通过编译平台发现,但是处理逻辑的错误就需要通过测试来发现。在测试的过程中定位并纠正编译器无法发现的逻辑错误,动态查找潜在的错误和问题,测试就是为了不断完善系统的完备性,增强系统的健壮性,避免因测试的不完全,导致后期花费大量的人力物力对系统进行维护。6.2测试结果及验证本次测试采取黑盒测试方法,功能模块及集成测试采用的具体测试用例设计方法有等价类划分法、边界值划分法和错误猜测,分别对用户注册、密码修改、删除订单、删除菜品、员工薪水修改这几个容易出错的模块进行测试。表11注册用户输入等价类测试用例输入数据预期结果实际结果无效等价类姓名:非空身份证号:非空密码:非空手机号:非空薪水:非空姓名:Test身份证号:112233445566778899密码:123456手机号:12345678901薪水:5500已存在员工提示:已存在员工姓名:非空身份证号:空密码:非空手机号:非空薪水:非空姓名:Test身份证号:密码:123456手机号:12345678901薪水:5500有重要信息未填写提示:有必要项未填写姓名:非空身份证号:非空密码:非空手机号:非空薪水:非空姓名:Test身份证号:1122334455667788密码:123456手机号:12345678901薪水:5500身份证号码不正确提示:身份证号码不足18位有效等价类注册用户姓名:Test身份证号:998877665544332211密码:123456手机号:12345678901薪水:5500注册成功注册成功对于空输入以及非法输入,系统能及时地识别,保证了输入数据的正确性。表12修改密码输入等价类测试用例输入数据预期结果实际结果无效等价类新密码:非空重复密码:非空新密码:123456重复密码:12345输入有误提示:两次输入的密码不一致修改密码:非空重复密码:空新密码:123456重复密码:输入有误提示:输入密码不能为空修改密码:空重复密码:非空新密码:重复密码:123456输入有误提示:输入密码不能为空修改密码:非空重复密码:非空新密码:1122334455667788990重复密码:1122334455667788990输入有误提示:密码不能超过18位有效等价类新密码:非空重复密码:非空新密码:123456重复密码:123456输入正确修改成功新密码:非空重复密码:非空新密码:qwer1234重复密码:qwer1234输入正确修改成功新密码:非空重复密码:非空新密码:@qwe

温馨提示

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

评论

0/150

提交评论