基于javaweb点餐管理系统设计与实现毕业论文_第1页
基于javaweb点餐管理系统设计与实现毕业论文_第2页
基于javaweb点餐管理系统设计与实现毕业论文_第3页
基于javaweb点餐管理系统设计与实现毕业论文_第4页
基于javaweb点餐管理系统设计与实现毕业论文_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

2点餐管理系统毕业论文摘要PC点餐系统以弥补传统点餐方式的弊端。在目前的餐馆里,如果采用电子菜单,客人点餐时不需要服务员的陪伴,能实时地了解菜的特色,方便了顾客同时也减轻了餐馆的服务压力。随着WLAN技术的普及,一些规模较大的酒楼餐厅开始考虑利用这种最为先进、最具时尚潮流的网络技术来建设一套灵活、快捷的信息管理系统,以优化管理流程,使酒店的服务和管理得到实质性的提升,提高品牌形象和行业核心竞争力。本课题是pc端电子点餐菜单的设计,该电子点餐系统实现了一个电子点餐终端的部分功能,如:显示菜的分类、单价、已点数量和总价等。本设计采用安装JAVAJDK、安装IDEA开发环境。整个设计是在JAVA语言进行编写。本课题完成的电子点菜单功能齐全,使用方便,可大大提高服务质量,并节省许多人力物力。在系统规划中先后用数据流程图,系统功能结构图分析了系统所需的各种数据,详细的展示了系统的各个功能模块,并给出了主要功能运用界面图。关键字:电子菜单,java,在线点餐,IDEAABSTRACTPCorderingsystemtomakeupforthedisadvantagesoftraditionalorderingmode.Inthecurrentrestaurants,iftheelectronicmenuisadopted,theguestscanknowthecharacteristicsofthedishesinrealtimewithouttheaccompanimentofthewaiterswhenordering,whichisconvenientforcustomersandreducestheservicepressureoftherestaurant.WiththepopularityofWLANtechnology,somelargerestaurantsbegintoconsiderusingthismostadvancedandfashionablenetworktechnologytobuildasetofflexibleandfastinformationmanagementsystem,soastooptimizethemanagementprocess,substantiallyimprovetheserviceandmanagementofthehotel,andimprovethebrandimageandcorecompetitivenessoftheindustry.ThisprojectisthedesignofPCterminalelectronicorderingmenu.Theelectronicorderingsystemrealizessomefunctionsofanelectronicorderingterminal,suchasdisplayingtheclassification,unitprice,orderedquantityandtotalpriceofdishes.ThisdesignadoptstheinstallationofJavaJDKandideadevelopmentenvironment.ThewholedesigniswritteninJavalanguage.Theelectronicordermenucompletedinthisprojecthascompletefunctionsandiseasytouse.Itcangreatlyimprovetheservicequalityandsavealotofmanpowerandmaterialresources.Inthesystemplanning,dataflowchartandsystemfunctionstructurechartareusedtoanalyzeallkindsofdataneededbythesystem.Eachfunctionmoduleofthesystemisdisplayedindetail,andthemainfunctionapplicationinterfacediagramisgiven.Keywords:Electronicmenu,Java,onlineordering,idea目录摘要……………………IAbstract………………Ⅱ目录…………………Ⅲ一、引言…………………1二、系统背景与意义………………………2(一)国内外现状………………………1(二)课题研究意义………………………2(二)课题主要研究内容…………………2三、系统的分析……………3(一)可行性分析…………3(二)技术可行性…………3(三)经济可行性…………3(四)社会可行性…………3(五)需求分析……………3(六)系统环境开发………………………3四、系统的总体设计………………………4(一)开发工具及关键技术的介绍………4(二)系统流程……………4(三)系统模块设计………………………5(四)E-R图设计………………………5五、数据库的设计…………6(一)数据库设计原则……………………7(二)数据库实体设计……………………8(三)数据库结构设计……………………9(四)数据库表的设计……………………10六、程序模块的界面设计…………………11(一)用户注册登录界面…………………11(二)用户信息模块………………………12(三)餐桌表模块…………13(四)菜系表………………14(五)菜名表………………15(六)订单明细表………………………16七、系统调试与测试………………………17(一)部分功能测试与测试结果…………18(二)测试结论19结语………………………20注释………………………21参考文献………………22引言点餐系统的现状,市场上出现的点菜系统都是作为餐馆信息化管理系统的一部分出现的,它们除了实现基本的点菜功能外,为了便于客户及管理者的使用,还附加了许多其他功能,个人很难完成一个功能完善的点菜系统。而在电子点菜系统中,方便又快捷;另外,电子菜单与普通菜单相比有很多它的优点,比如普通菜单易脏,需要服务人员写,单据易丢,复杂的财务核算工作;而电子菜单方便快捷,点单灵活,不需要过多的服务人员等待客人点单,管理方便,点单取餐全自助,节省人力及时间。系统背景与意义国内外现状在当今国内外,随着互联网迭代更新,计算机硬件不断的升级,人们生活节奏日益加快,他以渗入到我们的生活方方面面。对于餐饮行业早期的发展,可能也就是,通过人工手动记录的方式,来完成餐饮的工作。早些国内基础建设比较薄弱,对于餐饮行业的发展,也就是,通过人力堆上去的管理模式,一个人负责几桌的客户,有时候难免会记错,忘记客户点的什么菜,记账也比较麻烦。自从该软件出现以后,上述问题基本都得到了解决,让人工成本大幅度的下降。而国外早已实现了通过计算机电脑的方式实现点餐,比如国外的麦当劳、肯德基就是在柜台上点好自己的商品,服务员给客户一个数字号,这样用户就完成了整套点餐过程,也给后面的客户节约了大量排队等待时间。课题研究意义互联网点餐系统,是一种全新的体验,让客户更加方便的了解,该餐饮店的全貌,以及服务的特色,在交易付账时,也更加的准确,减少手工计算的繁琐。课题主要研究内容考虑项目比较适用于餐馆点餐系统,主要从5大模块来介绍系统的功能:用户管理模块、餐桌管理模块、菜系管理模块、菜名管理模块、订单管理模块展开。系统的分析可行性分析随着人们生活节奏的加快,点餐管理系统软件在各个城市的广泛使用,尤其是在比较有规模的餐饮行业使用已成为了发展的趋势。人们生活水平的提高,对于更好的服务追求也会越来越高,而餐饮管理软件就能更好的服务于客户。它不仅能让客户看到整个餐饮下的商品,而且还能快速的体验当地的文化。让用户迅速带入的感觉。经济可行性以前,进入餐馆点餐,需要消耗很多的人力物力,来解决记账难的问题,尤其通过纸质的方式记录每桌用户点的什么菜,非常不适用未来的发展,而且还会忙中出乱,据不完全统计,每年国内光记账成本需要耗费近106亿元,这么大的损耗,如果用于投入更好的服务和质量,岂不是让餐饮行业更上一个台接。目前,餐饮点餐系统已经非常成熟,世面上有很多,我们可以结合网上资料,学习别人好的做法,制作一套适用于自己的餐饮点餐系统,这样也可以大大的节约开发成本,减少不少的开支。社会可行性每年都有几十万的餐饮行业出现,对于软件的需求也是非常旺盛的,而且每个餐饮行业的特色不同,所以对于点餐系统的要求也会有不一样的地方,所以,可定制化点餐系统也是呼之欲出,所以社会上的使用也不能小视。需求分析从客户和使用者的角度来看,功能上主要的需求有以下几点:(1)简单实用、UI设计好。(2)客户下单后,厨房立马得到相应,快捷、一目了然;(3)系统稳定,访问速度快;(4)安全性高、便于维护。(五)系统环境开发该系统采用B/S架构,使用vue作为前端框架,采用elementUI设计,后台数据实现使用MYSQL软件环境windows7数据库MYSQL-NavicatPremium15编程软件IDEA系统的总体设计(一)开发工具及关键技术的介绍该系统基于B/S结构,采用MVC设计模式,java编程语言,SPRINGBOOT、VUE和mysql数据库。以ideaIDE最为开发工具,内置Tomcat9.0为服务器进行开发实现的。B/S(Browser/Server)即浏览器和服务器模式。用户通过浏览器访问后端数库中的数据,只要用户安装了对外访问的任何一款浏览器就可以访问了。系统的维护升级跟用户没关系,主要集中在服务端,这样就大大减少了用户升级的繁琐工序。Vue(读音/vjuː/,类似于view)据说是国内开发的一套开源框架,基于ES5、ES6语法,将javascript再次封装,且数据绑定的方式是双向的,互调数据就更加容易,以前写jquery语句可能需要30几行代码,可能借用vue这个框架只需5-9行代码量就足以完成。Vue还有脚手架功能,通过view标记语句开始书写格式编码,代码看起来更加的简洁舒适,以前通过控制dom的id全部都用view来控制,简单了很多。1、Vue.js可以说是MVVM架构的最佳实践,是基于ES5的语法,更加便捷的快速开发的框架。专注于MVVM中的ViewModel,不仅做到了数据双向绑定,而且也是一款相对比较轻量级的JS库,API简洁2、因为vue的双向数据绑定特性以及技术的成形,实现了项目的热加载,改完页面代码能立即在浏览器方面显示效果,提高开发效率Spring将Java开发变得更加简洁,也使得开发的复杂性降低了,Spring采用有以下三种思想:POJO的编程思想;(2)(DI)依赖注入、面向接口思想;(3)(AOP)切面思想;SpringBoot四个主要特性(1)SpringBootStarter:他将常用的依赖分组进行了整合,将其合并到一个依赖中,这样就可以一次性添加到项目的Maven或Gradle构建中;(2)自动配置:SpringBoot的自动配置特性利用了Spring4对条件化配置的支持,合理地推测应用所需的bean并自动化配置他们;(3)命令行接口:(Command-line-interface,CLI):SpringBoot的CLI发挥了Groovy编程语言的优势,并结合自动配置进一步简化Spring应用的开发;(4)Actuatir:它为SpringBoot应用的所有特性构建一个小型的应用程序。但首先,我们快速了解每项特性,更好的体验他们如何简化Spring编程模型。使用vue-admin-template来快速搭建后台管理,它包含了ElementUI&axios&iconfont&permissioncontrol&lint,这些搭建后台必要的东西。Element是(饿了么团队)基于MVVM框架Vue开源出来的一套前端ui组件。IDEA全称IntelliJIDEA,是java编程语言开发工具,比eclipse好用很多,也是目前最好用的开发工具。它支持的格式有很多,比如:HTML,CSS,PHP,MySQL,Python等多个编程语言。IDEA工具在使用过程中,有很多智能化的提示,还有编码效验功能,这样就大大减少了程序员开发过程中的的难度,提高不少的效率,IDEA官方介绍的几个重要功能有以下几点[1]:智能提示、查询历史记录功能、JUnit单元测试功能、也可以加载外部市场的第三方插件,对重构的优越支持、编码辅助功能、自动化的排版功能、动态语法检测、支持jsp语法、智能编辑、列编辑模式、预置模板、完美的自动代码完成、版本控制完美支持、不使用代码的检查、智能代码、正则表达式的查找和替换功能、JavaDoc预览支持、程序员意图支持。。(二)系统流程点餐系统环节,顾客在电脑上,选择自己喜欢的菜名,由人工输入查找相应的菜名,下单后单据打印前台、厨房、传菜部,厨房传菜部接到确认消息无误后,开始准备上菜,如在一定时间内,客户催促或未上菜,服务员可由客户加退、退单、增单业务,如在规定时间内,服务员上菜,顾客消费完时,顾客到收营员那核对账单结账。与前台交接与前台交接开始开始结账结账网上点餐网上点餐打印结账单具单据打印前台、厨房打印结账单具单据打印前台、厨房上菜餐桌对应的餐桌号上菜餐桌对应的餐桌号结算完毕结算完毕(三)系统模块设计本系统主要主要程序代码是用java实现,系统主要功能是辅助服务员便于管理每桌的客户。因此主要部分是餐桌管理、菜系管理、订单管理。餐桌管理:顾客进入饭店之后选择座位坐下,由服务于记录座号已方便点菜。也可以根据需要调整餐桌牌的餐桌号。菜系管理:顾客进入系统之后,可以根据自己的偏好选择酸甜辛辣、淡咸之类的口味。订单管理:系统在得知顾客下单后,会自动生成菜单价格,最终汇总到前台服务员那里生成订单。(四)E-R图设计数据库的设计数据库设计原则数据库就是用来存储数据的,主要存放的都是些基础表,当然还会放些存储过程和触发器,作为数据库的基本表,应尽量在一张表中设置主关键字,便于大量数据检索时,高效完成,删除时也更加的方便。主键也可以作为数据库表中的依赖关系。比如类别表和详细页表,详细表中可以对应很多的类别,这种一对多的关系,就可以通过主键进行关联,现成依赖。我们在设计数据库表时,不仅要优化表的结构,比如字段不要太多,很影响表的整个性能,而且还要注意一旦遇到特殊问题,数据库中的数据可以及时的恢复,让损失降到最低。一般数据库在设计过程中会注意以下几个方面的特点:层次清晰,就是建表时表与表之间的关系,要尽量减少数据的冗余性,不要过多的重复设计相同字段;数据恢复性,在遇到特殊环境下,数据可以及时的修改。数据库实体设计数据库设计本系统建立餐桌表、菜系表、菜名表、订单表、订单明细表。数据库结构设计数据库表的设计餐桌表主要用来记录对应的餐桌号,主要对应的字段餐桌ID,餐桌名、餐桌状态(是否被占用)、有没由被预定。菜系表,主要用来记录全国各地不同的特色菜系,便于顾客可直接选择自己喜爱的菜名。设计的字段:主键ID、及菜系名。菜名:主要用来记录餐馆所有的菜名,便于顾客挑选。设计字段:菜名ID、菜名、菜名所对应的菜系、菜的价格、菜的描述、菜的图片内容订单表:顾客下单后,生成总的订单。便于前台服务于查阅、记账。主要字段:订单ID、对应的餐桌ID、下单时间、总订单金额、是否支付。订单明细表:根据总订单情况,可细分订单的情况,主要用来记录顾客点的什么菜,在几号桌。主要字段有:订单明细ID、所对应的订单号、对应的菜名及订餐数量。程序模块的界面设计(一)用户注册登录界面用户在进行注册的过程中,输入用户名移开鼠标,文本框失去焦点后会触发onblur方法,此时系统会提取输入的用户名与数据库用户表中已存在的用户名进行比对,若数据库用户表中已经存在输入的用户名,将提示不能注册若不存在输入的用户名“可以注册”的提示。该操作主要的代码如下:@PostMapping("/sys/login")publicMap<String,Object>login(@RequestBodySysLoginFormform)throwsIOException{/*booleancaptcha=sysCaptchaService.validate(form.getUuid(),form.getCaptcha());if(!captcha){returnR.error("验证码不正确");}*///用户信息SysUserEntityuser=sysUserService.queryByUserName(form.getUsername());//账号不存在、密码错误if(user==null||!user.getPassword().equals(newSha256Hash(form.getPassword(),user.getSalt()).toHex())){returnR.error("账号或密码不正确");}//账号锁定/*if(user.getStatus()==0){returnR.error("账号已被锁定,请联系管理员");}*///生成token,并保存到数据库Rr=sysUserTokenService.createToken(user.getUserId());returnr;(二)用户信息模块将注册用户信息保存到管理账户中,可直接观察到目前注册的账户数目,主要代码如下:/***用户列表*/@RequestMapping("/list")/*@RequiresPermissions("modules:datatotal:list")*/publicRlist(@RequestParamMap<String,Object>params){PageUtilspage=dataTotalService.queryPage(params);returnR.ok().put("page",page);}(三)餐桌表用户就餐时,选定的餐桌号,便于记录点餐菜谱,和价格的合计,部分代码如下:/***保存*DinnerTableEntity*这个类里面主要用来保存餐桌记录号对象的*/主要用来保存餐桌记录号@RequestMapping("/save")/*@RequiresPermissions("dc:dinnertable:save")*/publicRsave(@RequestBodyDinnerTableEntitydinnerTable){ dinnerTableService.save(dinnerTable);returnR.ok();}/***修改*根据服务于传过来的餐桌ID,修改当前餐桌的基本信息*/@RequestMapping("/update")@RequiresPermissions("dc:dinnertable:update")publicRupdate(@RequestBodyDinnerTableEntitydinnerTable){ dinnerTableService.updateById(dinnerTable);returnR.ok();}/***删除*根据服务于传过来的餐桌ID,可直接将不用的餐桌号,直接删除*/@RequestMapping("/delete")@RequiresPermissions("dc:dinnertable:delete")publicRdelete(@RequestBodyInteger[]餐桌ids){ dinnerTableService.removeByIds(Arrays.asList(餐桌ids));returnR.ok();}(四)菜系表方便定位菜的品种,有利于不同用户点菜的选择,代码如下:/***菜系列表,用来展示菜系,主要接收传过来的第几页、每页的页数*/@RequestMapping("/list")/*@RequiresPermissions("dc:foodtype:list")*/publicRlist(@RequestParamMap<String,Object>params){PageUtilspage=foodTypeService.queryPage(params);returnR.ok().put("page",page);}/***菜系保存:用来添加新菜,根据前端传过来的对象,可直接添加到数据库中*/@RequestMapping("/save")/*@RequiresPermissions("dc:foodtype:save")*/publicRsave(@RequestBodyFoodTypeEntityfoodType){ foodTypeService.save(foodType);returnR.ok();}/***菜系修改,根据前端ID,修改菜系内容*/@RequestMapping("/update")/*@RequiresPermissions("dc:foodtype:update")*/publicRupdate(@RequestBodyFoodTypeEntityfoodType){ foodTypeService.updateById(foodType);returnR.ok();}/***菜系删除:根据前端传过来的ID,直接删除菜系*/@RequestMapping("/delete")/*@RequiresPermissions("dc:foodtype:delete")*/publicRdelete(@RequestBodyInteger[]ids){ foodTypeService.removeByIds(Arrays.asList(ids));returnR.ok();}(五)菜名表针对菜系,对不同的菜名取名字,便于查询,代码如下:/***菜名列表,用来展示菜名,主要接收传过来的第几页、每页的页数*/@RequestMapping("/list")/*@RequiresPermissions("dc:food:list")*/publicRlist(@RequestParamMap<String,Object>params){PageUtilspage=foodService.queryPage(params);returnR.ok().put("page",page);}/***信息:主要用于搜索菜名功能*/@RequestMapping("/info/{id}")/*@RequiresPermissions("dc:food:info")*/publicRinfo(@PathVariable("id")Integerid){ FoodEntityfood=foodService.getById(id);returnR.ok().put("food",food);}/***保存:将前端传过来的菜名对象直接保存到数据库中*/@RequestMapping("/save")/*@RequiresPermissions("dc:food:save")*/publicRsave(@RequestBodyFoodEntityfood){ foodService.save(food);returnR.ok();}/***修改:将菜名的错误信息修改*/@RequestMapping("/update")/*@RequiresPermissions("dc:food:update")*/publicRupdate(@RequestBodyFoodEntityfood){ foodService.updateById(food);returnR.ok();}/***删除:将不要的菜名信息直接删除*/@RequestMapping("/delete")/*@RequiresPermissions("dc:food:delete")*/publicRdelete(@RequestBodyInteger[]ids){ foodService.removeByIds(Arrays.asList(ids));returnR.ok();}(六)订单明细表为每个餐桌结算时。记录的信息,部分代码如下:/***订单列表:展示生成订单的情况*/@RequestMapping("/list")@RequiresPermissions("dc:orderdetail:list")publicRlist(@RequestParamMap<String,Object>params){PageUtilspage=orderDetailService.queryPage(params);returnR.ok().put("page",page);}/***信息:主要用于搜索订单情况,根据订单号查找*/@RequestMapping("/info/{id}")@RequiresPermissions("dc:orderdetail:info")publicRinfo(@PathVariable("id")Integerid){ OrderDetailEntityorderDetail=orderDetailService.getById(id);returnR.ok().put("orderDetail",orderDetail);}/***保存:顾客支付后,将生成的订单保存下来*/@RequestMapping("/save")@RequiresPermissions("dc:orderdetail:save")publicRsave(@RequestBodyOrderDetailEntityorderDetail){ orderDetailService.save(orderDetail);returnR.ok();}/***修改:如订单出现问题,可直接修改部分信息*/@RequestMapping("/update")@RequiresPermissions("dc:orderdetail:update")publicRupdate(@RequestBodyOrderDetailEntityorderDetail){ orderDetailService.updateById(orderDetail);returnR.ok();}/***删除:将不对的订单信息删除*/@RequestMapping("/delete")@RequiresPermissions("dc:orderdetail:delete")publicRdelete(@RequestBodyInteger[]ids){ orderDetailService.removeByIds(Arrays.asList(ids));returnR.ok();}系统调试与测试(一)部分功能测试与测试结果在设计系统过程中,存在一些问题都是比较正常的。但有些错误在程序执行由于操作或逻辑错误导致结果不正确,再去修改这一类动态发生的错误就比较花费时间。软件的测试在软件生命周期中占据着重要的地位,系统开发完成在交互使用进行程序的测试,在测试的过程中需要检测出错误并对错误进行及时的更正。并且软件测试的工作量和成本在整个软件开发中占很大比列。登陆模块:主要用来压力测试登陆的假想情况,主要涉及两个方面的测试:1点击登陆的基本情况;2退出系统后是否正常。用例名称用户登录用例标识A功能描述实现登录系统的功能测试目的测试用户登录功能的正确性前置条件数据库成功连接测试步骤(1)输入用户名和密码(3)进入登录界面序号输入数据/动作预期结果实际结果1点击登录请输入用户名,请输入密码。与预期结果一致2点击安全退出系统系统自动返回登录主界面与预期结果一致点菜功能测试:测试点菜操作是否达到预期效果,1、进入菜单是否正常,选择菜系,会不会加载内容,及顾客点餐后是否会生成菜单,

温馨提示

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

评论

0/150

提交评论