计算机毕业设计选题-计算机毕设辅导-基于 SpringBoot 的餐饮门店智能点餐与订单管理系统的设计与实现-开题-任务书-源码-程序-答辩-一条龙辅导
此文章为本人亲自指导加编写,禁止任何人抄袭以及各类盈利性传播, 相关的代码+部署+论文+ppt+代码讲解+答辩指导文件都有可私
计算机专业毕业设计任何项目-程序-论文-想单独指导的可以私
项目难度: 中等难度
适用场景: 相关题目的毕业设计
包含内容: 整套源码+完整毕业论文
大家点赞、收藏、关注、评论啦 。
资源下载|如果你正在做毕业设计,需要源码和论文,不局限于该项目,私聊我
摘 要
餐饮行业数字化转型速度加快,传统点餐和后厨管理模式不能满足高效运营和精细化管理的要求。本文设计了基于SpringBoot的餐饮门店智能点餐与订单管理系统,以提高门店服务效率、改善顾客体验并完成食材供应链的闭环管理。该系统利用信息化手段,把前台点餐业务和后台管理业务结合起来,以处理餐饮门店在订单处理、人员排班和食材采购上出现的信息孤岛问题。
本系统使用了前后端分离的方式开发,后端通过SpringBoot框架进行建立,使用它简化配置和快速开发的特点来处理业务逻辑。前端采用Vue.js框架进行开发,并运用Element UI组件库来建立具有良好响应性及交互性的用户界面。数据持久层使用MyBatis模式和MySQL数据库,可以对数据进行映射和存储。系统主要设计了三种角色,分别为用户、员工和管理员。本文围绕主要业务实现了前台功能,这些功能包括菜品首页展示、在线点餐、购物车管理、订单查询等。系统也实现了后台模块,该模块包括食材供应商信息管理、食材原料管理、菜品管理、采购管理、员工信息与排班管理等。
该系统的实现结果为餐饮门店提供了1个集点餐、订单追踪、食材采购和人员管理于一体的综合平台。顾客可以方便地在网络上看菜单并且下订单,把点餐这种效率进行了提高,员工会快速处理订单,也会清楚知道自己的排班任务。管理员可以统一管控门店菜品、食材库存、供应商与员工,达成了食材采购至菜品销售全链条数据互通,有效提高门店运营管理水平及决策能力。
关键词:门店点餐;订单管理;购物车下单;SpringBoot
Abstract
The digital transtransformation speed of the catering industry is accelerating, and traditional ordering and kitchen management modelDatas cannot meet the requirements of efficient operation and refined management. This article designs an intelligent ordering and order management system for catering stores based on SpringBoot to improve store service efficiency, enhance customer experience, and complete closed-loop management of the food supply chain. This system utilizes intransformation technology to integrate front-end ordering services with back-end management services to address intransformation silos in order processing, personnel scheduling, and ingredient procurement in catering stores.
This system is developed using a front-end and back-end separation approach, with the back-end built using the SpringBoot framework. Its features of simplifying configuration and rapid development are utilized to handle business logic. The front-end is developed using the Vue.js framework and utilizes the Element UI component library to establish a user interface with good responsiveness and interactivity. The data persistence layer uses MyBatis schema and MySQL database to map and store data. The system mainly designs three roles, namely users, employees, and administrators. This article focuses on the main business and implements front-end functions, including displaying the menu homepage, online ordering, shopping cart management, order inquiry, etc. The system has also implemented a backend module, which includes ingredient supplier intransformation management, ingredient raw material management, dish management, procurement management, employee intransformation and scheduling management, etc.
The implementation of this system provides a comprehensive platform for catering stores, integrating ordering, order tracking, ingredient procurement, and personnel management. Customers can easily view menus and place orders online, improving the efficiency of ordering. Employees can quickly process orders and have a clear understanding of their scheduling tasks. Administrators can centrally control store dishes, ingredient inventory, suppliers, and employees, achieving data exchange throughout the entire chain from ingredient procurement to dish sales, effectively improving store operation management level and decision-making ability..
Keywords: Store ordering; Order management; Placing an order in the shopping cart; SpringBoot
目 录
1 绪 论
1.1 课题背景以及意义
在全球数字经济发展浪潮之下,餐饮行业的数字化转型不再是一道选择题,而已经演变成为企业生存发展必需要做的题目。国家信息中心发布的《中国餐饮业数字化发展报告(2024)》指出,线上化、平台化和智能化是餐饮业数字化的三个重要方面,正在明显改变餐饮业的运营模式。但是,现在餐饮门店普遍遇到三个主要挑战:一是人工成本不断上升和运营效率存在瓶颈的矛盾,传统手写订单、人工传递的方式不仅效率很低,并且在高峰期很容易造成出餐延迟和顾客流失,统计数据表明大约67%的顾客因为等餐时间过长而放弃二次消费。二是前厅点餐、后厨管理和食材采购这三个环节之间缺乏信息联通,数据孤岛使得库存管理不够准确,采购决策也缺乏参考依据,导致食材损耗一直保持在较高水平。第三是顾客需求表现出日益多元化和个性化的趋势,传统服务模式很难进行快速响应。在该形势下,餐饮门店通过设计把在线点餐、订单管理、员工排班和供应链管控结合起来的智能点餐系统,来打破发展瓶颈和达到降本增效。
本文设计并实现的该系统拥有非常主要的理论价值及现实意义。在理论上,本文分析了SpringBoot与Vue前后端分离架构在餐饮管理中的应用,为同类中小型餐饮企业的信息化建设提供了可参考的技术方法。系统把人、货、场三要素进行了整合,并试图建立从前端消费到后端管理的全链路数据闭环,这丰富了餐饮行业数字化转型的应用研究。在实践上,该系统面向餐饮门店运行中遇到的实际困难,设计了用户在线点餐、购物车控制、订单查询等前台功能、员工排班、食材供应商控制、原料控制、菜品控制、采购控制等后台模块,达成了三个方面的效果。一是提高运营效率,智能分单和订单聚合可以减少人工录入产生的错误,依据行业实践中的数据,在使用智能系统后,单店日均接单量会提高40%,人力成本也会降低18%。其次,强化供应链管控。企业通过对食材采购和库存管理进行数字化,能够减少大约20%的食材损耗。第三,改进管理决策。系统为管理者提供从采购到销售的全流程数据视图,用来支持科学决策,最终帮助餐饮门店在激烈的市场竞争中形成主要竞争力和持续发展能力。
1.2 课题研究现状
1.2.1国内研究现状
目前,国内餐饮点餐和管理系统领域表现出快速发展的情况,主要反映在下述三个上。政策和市场共同推动,让餐饮业数字化速度明显加快。国家信息中心的报告表明,我国餐饮业数字化已经由基础线上化阶段,朝平台化和更高级的智能化阶段发展,东部沿海地区数字化水平处在前面,中心城市和发达省份带动区域整体提高。产业生态逐渐成熟,出现了一些具有代表性的SaaS服务商。美团餐饮系统、客如云阿里、二维火、奥琦玮和哗啦啦等企业,形成了包括前厅管理、后厨生产、会员运营和供应链管理的数字化解决方案模式。美团餐饮系统将餐厅经营数据和平台大模型技术加以连接,为商户提供从前厅到供应链的全链路支持,2024年便完成将近300次产品版本迭代。客如云等企业于是推动了SaaS模式的普及,这些企业提供包括点餐、预订、支付、连锁管理的综合服务,其中KDS后厨模块可以实时同步订单状态,能够减少催菜情况。第三,技术的应用程度在不断增加。移动支付和扫码点餐变成行业标配,人工智能和大数据等前沿技术逐渐落地,包括针对用户行为数据的个性化推荐、依靠历史数据的食材需求预测模型,该模型准确率能够达到92%。智能餐饮的应用场景也在不断扩大,无人机配送、服务机器人等新业态,在一些头部企业的推动下,开始了试点运营。但是,行业内也遇到“增收不增利”、数据孤岛、中小商户数字化意愿不足等问题,这给针对特定场景,如中小餐饮门店的定制化系统开发带来了很大机会。
1.2.2国外研究现状
国外餐饮管理系统研究开始的时间比较早,现在已经形成了比较成熟的理论模式和产业格局。在学术研究上,近年来有关餐厅收益管理Restaurant Revenue Management,RRM的分析受到了较多关注。《British Food Journal》刊登的一篇系统性文献综述指出,新冠疫情加快了餐饮业进行数字化转型,学术研究也明显转向依靠数据驱动的收益管理,主要关注人工智能支持的决策辅助、实时数据分析、动态定价策略这些前沿方向,并且强调信息管理和销售管理已经成为提高餐厅收益的重要手段。在技术应用方面,全球餐饮SaaS市场保持着增长趋势。数据表明2024年全球餐饮SaaS市场规模大约为8.93亿美元,预计2031年会达到12.29亿美元。海外主要企业有Toast、Lightspeed、Square、Oracle、Olo,这些公司通过基于云端的点餐收银、库存追踪和客户关系管理,向全服务式餐厅FSR和快餐店QSR提供综合服务。文献计量研究对智能化探索进行分析发现美国、印度和中国在智能餐厅研究方向做出的贡献最为突出,物联网IoT、机器学习、RFID及大数据等技术被广泛应用于提高服务交付和用户体验上。全球餐饮服务企业索迪斯和华为合作推出依靠升腾AI的智眼智能结算方案,把AI图像识别运用到结算环节中,达到菜品的亚秒级准确识别和自动计价,结算速度从20秒每人提高到3秒每人,明显改观了大型食堂的就餐体验。总体来说,国外的研究和实践正朝着更加精细和智能的方向发展,并且重视通过技术的整合来实现差异化的竞争优势,这种情况给本系统的设计提供了有价值的国际视野和参照。
1.3 主要工作
此次开发的系统为基于 SpringBoot 的餐饮门店智能点餐与订单管理系统的设计与实现,在系统开发中首先是对系统的背景以及相关的国内外现状信息进行分析梳理,对当前系统的一些优弊点进行分析,确立系统的设计方向和设计核心,然后对图书资料进行搜集,对开发技术架构等进行学习和基础搭建,接着完成系统的功能需求以及业务功能分析,对系统的功能点以及数据库底层进行设计,最后核心为系统代码的开发以及测试。
1.4 本文结构安排
系统的整体研究分为六个阶段:
第一章节为绪论,主要是对系统的一些研究相关联的资料信息以及国内外的研究点和学者的一些探究等内容进行梳理分析,对此次的研究需优化的一些内容点进行整理,确立自己的研究细节。
第二章是系统核心开发技术和软件介绍,包含采用的语言java以及架构Springboot和MySQL软件等优势点进行介绍。
第三章是对系统的功能进行分析,系统功能主要是侧重从用户角度进行分析,包含用例图的绘制以及一些核心模块的用例说明介绍。
第四章为系统总体设计,主要是对系统的模块以及核心模块的流程图和时序交互部分进行介绍。
第五章为系统实现,对本次课题的核心开发部分模块的交互过程进行详细介绍,从界面到controller请求,以及service的调用和mapper层的处理进行介绍。
第六章为系统测试,主要对测试的目的以及测试用例编写进行介绍。
2 系统核心开发技术
2.1 SpringBoot框架
SpringBoot是Pivotal团队开发的Java开源框架,设计理念是“习惯优于配置”,用来简化Spring应用的初始搭建和开发过程,该模式通过自动配置方式使项目搭建的复杂程度大幅降低,开发者不用编写许多XML配置文件就可以建立独立运行的Spring应用程序。SpringBoot自带Tomcat和Jetty等Servlet容器,应用能被制作成JAR包运行,不用部署常规WAR文件,大幅简化部署步骤,如今微服务架构非常流行,SpringBoot因为具有轻量级和低侵入性特点,成为建立微服务应用的主要模式之一,SpringBoot拥有很多Starter POMs,开发者引入适配的场景启动器以后,可以很快集成数据访问、消息队列、缓存及安全控制等功能。该模式也集成了具有实用价值的运行监控和管理功能,通过Actuator模块可以实时监控应用运行状态、性能指标,并且能监控系统健康度,SpringBoot和Spring生态模式衔接紧密,可以整合Spring MVC、Spring Data和Spring Security等子项目,给开发人员提供一站式的企业级应用开发方式,明显提高开发效率和代码质量。

图2.1SpringBoot框架图
2.2 MyBatis框架
MyBatis是1个优秀的持久层模式,它去掉大部分JDBC代码的手动设置和参数获取,支持用简单XML或者注解进行配置,把接口和普通Java对象映射成为数据库里的记录,MyBatis在该系统中起到了将业务逻辑层和MySQL数据库进行连接的作用,其主要优势在于具备极高的灵活度与控制力。开发者能够直接编写原生SQL语句,在面对复杂的校园绿化数据查询场景时,如查询绿化土地上的全部植物信息、统计某员工本月的施肥任务量等,此时可对SQL性能进行精确优化,这有助于阻止框架生成低效语句,同时,MyBatis拥有很强的动态SQL功能,能够依照不同传入参数将查询条件进行动态拼接,很好适应系统里灌溉、施肥等业务模块多样化的组合查询需求。把数据访问层同业务逻辑层进行清晰分离,MyBatis在提高代码可维护性上发挥了作用,同时依靠一级缓存、二级缓存这俩机制,明显地把数据库的访问压力给降下去,让系统在高并发访问的时候能保持住响应速度。

图2.2 MyBatis框架图
2.3 Vue技术
Vue.js是一套用于建立用户界面的渐进式JavaScript模式,因其轻量级、易上手和高效灵活的特点,前端开发领域对其推崇有加,在本系统的前端设计上,Vue.js起到了主要作用,该系统运用组件化开发方式,能够把复杂的校园植物养护管理界面拆分成为若干独立且可复用的组件,包括绿化土地概览卡片、植物信息表单、灌溉记录列表等,在很大程度上提高开发效率和代码复用率。Vue中心库只关心视图层,容易学习和集成,结合其强大路由系统,可以方便建立单页应用,用户在切换员工管理、绿植档案等模块时不用刷新页面,得到流畅原生应用体验,并且,Vue依靠虚拟DOM技术达到高效的视图更新效果,保证在处理大量植物数据渲染时界面依然可以保持流畅顺滑。利用Element UI等组件库,可以快速建立界面美观和交互友好的管理系统界面,明显提高管理员和员工在日常工作上操作的便捷性及满意度。

图2.3 Vue图
2.4 MySQL数据库
MySQL是全世界很受欢迎的开源关系型数据库管理系统,它以优异的性能、可靠和易用而闻名。系统使用客户端和服务器架构,允许多个用户同时进行访问,拥有多种数据类型和功能,包括事务支持、存储过程、触发器、视图等。MySQL存储引擎架构有灵活性,InnoDB引擎给ACID事务以支持,并做行级锁定,这能保证数据的一致性、并发性能。MySQL是LAMP技术栈的主要组件,在各种Web应用中得到广泛使用,包括小型个人博客和大型电商平台。该软件的社区版提供免费使用,并拥有庞大的用户组、完善文件说明。

图2.4 MySQL图
2.5 IDEA编辑器
IntelliJ IDEA是JetBrains公司开发的一款集成开发环境,被看作Java开发领域非常强大和非常智能的IDE之一,IDEA以具备深度智能的代码辅助功能为特点,包括即时代码分析、智能代码补全、上下文感知的重建立议、可靠、快速、自动化的代码导航工具,可以极大程度提高开发人员的编码效率和代码质量。该编辑器非常清楚地理解Java语言特性及主流框架运行方式,对Spring、Hibernate、MyBatis、Maven这些技术与框架提供了可以直接使用的支持,可以自动识别配置文件和依赖关系,并且提供针对框架的代码提示和检查功能,IDEA集成了功能较强的版本控制功能,可以支持Git、SVN、Mercurial等主流版本控制系统,开发人员在IDE中就可以对代码进行提交、对分支进行管理、解决冲突等操作。
3 系统需求分析
3.1 可行性分析
3.1.1技术可行性分析
在系统开发中通过对语言优势对比,最终选择Java进行编码,系统开发架构基于SpringBoot,通过SpringBoot架构可以提升系统的拓展性和稳定性,在底层Orm层可采用MyBatis框架进行处理,提升架构的自动化和安全性。通过后台的架构搭建可有效提升开发效率。
3.1.2经济可行性分析
从软件的开发角度而言,既要考虑前期的投入,同时也要考虑后期的收益问题。前期投入主要是软件技术投入以及服务器的资金问题,采用的开发语言以及软件都是开源的,后期系统的运行后也会形成可观的收益,因此经济可行。
3.1.3操作可行性分析
从法律的角度而言,任何的开发都是最后底线,要保证开发源码的自主研发性,不采用盗版软件,软件开发中都不可使用拷贝别人的代码,做到法律可行。
3.2 业务需求分析
3.2.1系统功能需求
用户为该系统的主要服务对象,其功能主要表现在移动端和小程序端上。访客不必进行注册就可以查看首页所推荐的特色菜品和分类菜单,以完成方便快捷的在线点餐操作。用户在选定菜品后,可以把它加入购物车,方便对数量进行灵活调整,最后通过确认下单来生成订单。系统支持用户实时查询个人订单状态,包括待支付、已接单、配送中等状态,用户能够查看历史订单记录,流程设计对提高顾客的点餐效率和服务体验起到作用。

图3.1 用户用例图
员工角色:员工主要承担门店的日常运营工作,其中包括后厨和前台的工作人员。员工登录系统后可以实时查看最新的顾客订单详情,并且依照订单状态进行接单、制作完成等操作,进而使前厅和后厨实现高效联动。系统给员工提供排班管理功能,员工能够查看个人每周排班计划及工作任务,以此进行人力合理调配与出勤规范化,进而使门店在高峰时段平稳运行。

图3.2 员工用例图
管理员角色:管理员在系统中拥有最高级别的管理权限,主要负责对整个门店进行综合管控。管理员在基础数据维护上可以对菜品信息进行增删改查,并管理食材原料和供应商档案,保证菜单和供应链基础数据的准确。在业务管理上,管理员可以处理全部订单,审核采购申请,并且对员工信息、排班计划进行统一配置。数据整合让管理员可以实时了解经营状况,并给门店运营决策提供数据支持。

图3.3 管理员用例图
3.2.2非功能需求
在系统功能分析中包含性能分析,性能分析主要是从客观的角度对一些影响因素进行分析,包含系统的代码集成性、处理响应度以及安全性角度考虑。代码的集成性要采用优质的架构,对一些接口的定义处理以及底层Orm层的代码耦合分离等做到设计。从数据处理的响应度来说尽量保证在3s内,对一些多表的关联查询以及经常检索的表可通过视图设计进行处理,或者是加入索引机制。对应系统的安全性,要对系统的权限进行划分,系统的基本操作要保证在用户登录下记录日志,保证操作安全性。
3.2.3业务流程分析
管理员可以对餐厅菜品销售的宣传轮播图进行设置,通过上传对应的宣传图片以及描述内容提交形成宣传图管理。可以在首页端进行展示。

图3.4 宣传图新增流程图
在人员登录后可以进入到首页,首页可以根据用户的一些热度购买商品,以及一些相似商品进行餐厅菜品推荐。

图3.5 首页展示流程图
在用户登录时,既要对个人内容信息的填写进行验证,同时也要对用户账号是否冲突进行验证。

图3.6注册流程图
系统端人员可以将自己即将购买的餐厅菜品添加到自己的购物车,可对意向购买的购物车数据查询。

图3.7购物车流程图
人员在系统端可以对购物车信息进行清算操作,选择对应的购物商品信息与下单商品数量,点击进行结算。

图3.8结算订单流程图
在管理员端可以对商品进行新增上架操作,输入商品的名称和图片等信息进行新增操作。

图3.9新品上架流程图
管理员可以对食材供应商信息进行新增操作,输入供应商的名称和描述信息以及对应的内容信息进行新增操作。

图3.10 食材供应商新增流程图
在管理员端可以对食材的基本信息进行输入操作,包含食材的名称信息以及食材的所属供应商等信息,对食材信息进行保存。

图3.11食材新增流程图
4 系统设计
4.1 功能模块划分
基于前期的需求分析,本系统已形成基本设计框架。本章将重点阐述前台与后台两大关键模块的核心功能设计。
系统主要包含三种角色,管理员、员工、用户、系统包含模块为,食材供应商信息管理、食材原料信息管理、菜品信息管理、食材采购管理、员工管理、排班管理、菜品首页展示、在线点餐、购物车添加、在线下单、订单查询模块。其功能模块图如图4.1所示。

图4.1 功能模块图
食材供应商信息管理:系统对食材供应商的基本信息、联系方式和供货类别进行统一录入和及时维护,使采购来源保持清晰可查。
食材原料信息管理:对每一种食材原料档案信息进行管理,包括名称、规格、库存单位和当前库存量,为采购和菜品制作提供基础数据支持。
菜品信息管理主要对门店在售菜品的名称、价格、分类、图片、原料构成进行增加、删除、修改和查询操作,从而支撑前台菜单的动态展示。
食材采购管理:系统依据库存预警及门店需求来生成采购单,记录采购数量与价格、供应商信息,完成从申请直到入库的全流程跟踪。
员工管理:门店员工的基本档案、岗位信息、联系方式及登录权限由系统进行统一维护,这可以保证人员信息准确,同时维护系统使用安全。
排班管理是指为不同岗位的员工安排每周或每日的工作班次和工作时间,通过这种方式可以完成人力资源的合理调度,并为考勤提供依据。
菜品首页展示内容在用户端首页以分类或者推荐形式展示门店出售的菜品,提供直观的浏览入口,引导用户快速发现心仪美食。
在线点餐功能让用户在菜品列表里挑选需要的菜品并确定数量,系统会立刻生成订单数据,开始接下来的接单和制作步骤。
购物车添加:用户可以把多份不同菜品的订单信息暂存到购物车中,并且支持随时调整数量或者删除,在确认后统一提交下单。
在线下单:用户确认购物车内容并选择支付方式后,系统正式生成业务订单,并把点餐信息同步至门店后台。
订单查询模块:用户和员工通过订单列表或者搜索功能,随时查看订单的当前状态、详情记录还有历史订单存档。
4.2 数据库设计
4.2.1数据库实体设计
根据前期的模块图设计出此系统的数据库实体图:
餐厅菜品销售信息实体:

图4.2 餐厅菜品销售实体
餐厅菜品信息实体:

图4.3餐厅菜品信息实体图
餐厅菜品材料供应商实体

图4.4 供应商实体图
餐厅菜品店员工信息实体:

图4.5 员工信息实体
员工排班信息实体:

图4.6 员工排班实体
食材信息实体:

图4.7 食材信息实体
会员购物车实体:

图4.8 购物车实体
餐厅菜品店注册会员信息实体:

图4.9 会员信息实体
食材进货信息实体:

图4.10 食材进货信息实体
4.2.2E-R图设计
在数据库设计中要对第三范式遵守设计,要对每个表字段的长度以及对应的类型信息和存储默认值等考虑,同时也要对多表之间的字段关联进行设计,设计中可以进行1对n关系也可进行m对n关系模式,每个表都有自己的唯一主键id,通过自增的模式设计,系统中通过E-R图绘制可以直观提现表关系。
在实体关系中供应商跟食材为1对多关系,1个供应商可以对应多个食材信息;用户跟销售订单为一对多关系,1个用户可以购买多个销售订单,用户和购物车为一对多关系,1个购物可以添加多个购物车,购物车和菜品为多对多关系,1个购物车可以包含多个菜品。1个菜品可以对应多个购物车,菜品和供应商为多对一关系,1个供应商可以对应多个菜品,员工和进货信息为一对多关系,1个员工可以记录多个进货信息。食材和进货信息为一对多关系,1个食材可以对应多个进货信息记录。员工和排班为一对多关系,1个员工可以对应多个排班记录。
见图4.11。

图4.11 系统实体关系E-R图
4.2.3数据库表设计
餐厅的菜品信息存储信息表如表4-1所示,
表4-1菜品信息表
|
字段 |
类型 |
长度 |
主外键 |
是否为空 |
意义 |
|
foodsId |
Int |
11 |
主键 |
否 |
编号 |
|
foodsName |
varchar |
50 |
否 |
菜品名称 |
|
|
foodsDesc |
varchar |
60 |
否 |
菜品描述 |
|
|
foodsNum |
Int |
10 |
否 |
库存量 |
|
|
foodsMoney |
Decimal |
11 |
否 |
单价 |
|
|
conpanyId |
Int |
11 |
关联外键 |
否 |
供应商ID |
餐厅的员工如表4-2所示,
表4-2员工表
|
字段 |
类型 |
长度 |
主外键 |
是否为空 |
意义 |
|
userId |
Int |
11 |
主键 |
否 |
编号 |
|
userName |
varchar |
68 |
否 |
账号 |
|
|
password |
varchar |
55 |
否 |
密码 |
|
|
name |
varchar |
60 |
否 |
名字 |
|
|
description |
varchar |
60 |
否 |
岗位 |
|
|
tel |
varchar |
11 |
否 |
电话 |
菜品的材料供应商表如表4-3所示,
表4-3供应商表
|
字段 |
类型 |
长度 |
主外键 |
是否为空 |
意义 |
|
companyId |
Int |
11 |
主键 |
否 |
主键 |
|
name |
varchar |
42 |
否 |
厂商名称 |
|
|
description |
varchar |
35 |
否 |
描述 |
|
|
address |
varchar |
60 |
否 |
地址 |
员工排班如表4-4所示,
|
字段 |
类型 |
长度 |
主外键 |
是否为空 |
意义 |
|
Id |
Int |
11 |
主键 |
否 |
编号 |
|
userId |
Int |
11 |
用户外键 |
否 |
用户id |
|
content |
varchar |
25 |
否 |
排班信息 |
|
|
description |
varchar |
55 |
否 |
排班描述 |
餐厅销售菜品表如表4-5所示,
表4-5 菜品销售订单信息表
|
字段 |
类型 |
长度 |
主外键 |
是否为空 |
意义 |
|
id |
Int |
11 |
主键 |
否 |
编号 |
|
foodsId |
varchar |
68 |
外键 |
否 |
菜品ID |
|
saleDate |
Datetime |
20 |
否 |
销售日期 |
|
|
money |
Decimal |
11 |
否 |
销售金额 |
|
|
num |
Int |
11 |
否 |
销售数 |
|
|
score |
Int |
11 |
否 |
积分 |
|
|
userId |
Int |
11 |
外键 |
否 |
会员ID |
|
orderDtate |
TinyInt |
4 |
否 |
订单状态 |
|
|
patState |
TinyInt |
4 |
否 |
支付状态 |
餐厅会员办理会员卡如表4-6所示,
表4-6 会员表
|
字段 |
类型 |
长度 |
主外键 |
是否为空 |
意义 |
|
Id |
Int |
11 |
主键 |
否 |
编号 |
|
tel |
varchar |
55 |
否 |
电话 |
|
|
name |
varchar |
60 |
否 |
名字 |
|
|
score |
Int |
11 |
否 |
积分 |
|
|
username |
varchar |
60 |
否 |
账号 |
|
|
password |
varchar |
60 |
否 |
密码 |
购物车如表4-7所示,
表4-7购物车表
|
字段 |
类型 |
长度 |
主外键 |
是否为空 |
意义 |
|
cartId |
Int |
11 |
主键 |
否 |
编号 |
|
userId |
Int |
11 |
外键 |
否 |
用户ID |
|
foodsId |
Int |
11 |
外键 |
否 |
菜品ID |
|
num |
Int |
11 |
否 |
数量 |
食材原材料如表4-8所示,
表4-8食材信息表
|
字段 |
类型 |
长度 |
主外键 |
是否为空 |
意义 |
|
id |
Int |
11 |
主键 |
否 |
编号 |
|
ingreName |
varchar |
20 |
否 |
食材名称 |
|
|
ingreNum |
Int |
11 |
否 |
食材数量 |
|
|
ingreDesc |
varchar |
60 |
否 |
食材描述 |
|
|
comapnyId |
Int |
11 |
外键 |
否 |
供应商id |
食材采购信息如表4-9所示,
表4-9食材采购信息表
|
字段 |
类型 |
长度 |
主外键 |
是否为空 |
意义 |
|
id |
Int |
11 |
主键 |
否 |
编号 |
|
IngreId |
varchar |
11 |
外键 |
否 |
食材编号 |
|
num |
Int |
8 |
否 |
采购数量 |
|
|
content |
varchar |
60 |
否 |
采购事项 |
|
|
incomeDate |
Datetime |
10 |
否 |
采购时间 |
5 系统功能实现
5.1 用户端功能实现
5.1.1用户注册实现
用户可以填写自己的个人信息进行注册,填写自己的账号、姓名、手机号以及密码等信息进行新增注册操作。在系统注册界面,可以将用户的个人信息通过input进行输入,然后通过出发按钮ajax进行封装userjson参数,通过usercontroller层中的requestmapper匹配到useradd后执行insert保存。在登录时可以通过controller层进行queryusercheck的函数匹配调用,然后通过userservice中进行底层匹配,若select查询到user则登录匹配成功,否则返回error。

图5.1 用户注册界面
系统实现代码如下:
userbean.setStatus(1);
Date currentTime = new Date();
SimpleDateTransTransformat transformatter = new SimpleDateTransformat("yyyy-MM-dd");
String dateString = transformatter.transformat(currentTime);
userbean.setRiqi(dateString);
userbean.setJifen(0);
Random random = new Random();
int num = random.nextInt(1000000); // 0 ~ 999999
String sixDigit = String.transformat("%06d", num);
userbean.setCard(sixDigit);
userbeanService.add(userbean);
return "redirect:/userbean/showuserbean";
}
5.1.2用户登录实现
用户可以通过输入自己的账号进行登录操作,登录时要对账号进行验证,确保输入登录账号可以匹配到对应的人员信息。人员在登录时可通过将前端的userVo参数提交到usercontroller层,调用selectuserbyaccount进行账号匹配,通过底层SQL语句进行匹配检索,查询到用户则登录成功否则返回error。

图5.2 用户登录界面
系统实现代码如下:
if (userlogin.getUsername().equals("admin")) {
session.setAttribute("role", 1);
return "redirect:/TGongyingshangVO/showTGongyingshangVO";
}else if(yonghuService.findByName(userlogin.getUsername())!=null){
Yonghu yonghu=yonghuService.findByName(userlogin.getUsername());
if (yonghu == null) {
return "redirect:/login";
} else {
session.setAttribute("userId", yonghu.getId());
session.setAttribute("role", 2);
return "redirect:/dingdan/showdingdanyonghu";
}
}
5.1.3菜品展示实现
在首页端可以对餐厅的菜品信息进行展示,包含菜品的名称、菜品的图片信息以及菜品的描述等等信息进行查询。在indexcontroller层中可通过FoodBeanservice将商品信息进行分页查询,通过mapper层将商品的信息获取,然后通过java的封装机制,返回FoodBeanlist数组,前端通过c标签的foreach展示。

图5.3 首页菜品展示界面
系统实现代码如下:
@RequestUrlsMapping(value = "/index")
private String index(ModelData modelData) throws ErrorException {
List<FoodBean> list=FoodBeanService.findList();
5.1.4菜品详情实现
在点击菜品后再详情界面端可以对菜品的详情进行查询,包含对菜品的名称、金额信息、库存信息以及描述信息查询。在用户端点击商品进入到商品详情界面时,通过点击获取goodid,然后通过FoodBeancontroller层接收到参数后,调用selectbyone进行查询,获取到FoodBeanBean后返回到前端展示。

图5.4 菜品详情界面
系统实现代码如下:
@RequestUrlsMapping(value = "/detail")
private String detail(ModelData modelData, int id) throws ErrorException {
List<FoodBean> list = FoodBeanService.findList();
modelData.addDateAttribute("good", FoodBeanService.findById(id));
return "detail";
}
5.1.5购物车添加实现
人员可以对自己喜欢点的菜品添加到放购物车,可对购物车的数据信息进行查询,以及对购物车进行清除等操作。点击提交购物车按钮操作,后台cartscontroller接收到num以及FoodBeanid,建立New carts对象,set封装对应的参数信息,然后在Session中获取到人员信息,最后执行insertcarts保存到购物车。

图5.5 购物车添加界面
系统实现代码如下:
@RequestUrlsMapping(value = "/add" )
private String add(Cart cart, ModelData modelData, HttpServletRequest requestData) throws ErrorException {
Date currentTime = new Date();
SimpleDateTransTransformat transformatter = new SimpleDateTransformat("yyyy-MM-dd");
HttpSession session=request.getSession();
Integer tuserid=(Integer) session.getAttribute("userId");
String dateString = transformatter.transformat(currentTime);
cart.setUserid(tuserid);
cart.setShuliang(1);
cartService.add(cart);
return "redirect:/cart/showcartuser";
}
5.1.6购买订单查询实现
人员可以点击购物车进行订单下单操作,下单结算后可在自己的下单个人中心查询购买订单操作,包含订单的详情信息。通过controller层进行参数Url动态接收,在函数中通过pagehilper进行分页计算,然后调用mapper层进行select * from table limit 进行分页查询,最后将结果封装保存。

图5.6 购买订单查询界面
系统实现代码如下:
pagingVO.setCounts(dingdanService.getCount(tuserid));
if (pagenum == null) {
pagingHilper.setToPageNum(1);
list = dingdanService.finddatapageUser(1,tuserid);
} else {
pagingHilper.setToPageNum(page);
list = dingdanService.finddatapageUser(page,tuserid);
}
for(Dingdan dingdan:list){
Userbean userbean=userbeanService.findById(dingdan.getUserid());
if(userbean!=null)
dingdan.setUsername(userbean.getName());
}
modelData.addDateAttribute("dingdanList", list);
modelData.addDateAttribute("pagingVO", pagingHilper);
5.1.7公告查询查询实现
在会员端可以对公告信息进行查询,对公告的名称、描述等信息进行查询操作。可通过界面ajax将pagesize以及pagenum进行参数传递,然后通过controller层进行参数Url动态接收,在函数中通过pagehilper进行分页计算,然后调用mapper层进行select * from table limit 进行分页查询,最后将结果封装保存。

图5.7 公告查询查询界面
系统实现代码如下:
pagingHilper.setCounts(newsmegService.getCount());
if (pagenum == null) {
pagingHilper.setToPageNum(1);
list = newsmegService.finddatapage(1);
} else {
pagingHilper.setToPageNum(page);
list = newsmegService.finddatapage(page);
}
modelData.addDateAttribute("newsmegList", list);
modelData.addDateAttribute("pagingVO", pagingHilper);
return "admin/shownewsmeg";
5.1.8密码编辑实现
人员可以对自己的个人密码进行编辑,输入旧密码以及新设置的密码进行保存。在密码编辑界面,可对旧密码、新设置密码以及要确认密码进行输入,然后通过ajax提交到usercontroller,通过StringUtilsCheck对参数值进行为空判断,通过执行usermapper中的updatepwd进行更新。

图5.8 密码编辑界面
系统实现代码如下:
Userbean userbean=userbeanService.findById(userbeanid);
if(StringUtilsCheck.isEmpty(opwd)){
modelData.addDateAttribute("message","旧密码不能为空");
return "error";
}
if(StringUtilsCheck.isEmpty(npwd1)){
modelData.addDateAttribute("message","新密码不能为空");
return "error";
}
if(StringUtilsCheck.isEmpty(npwd2)){
modelData.addDateAttribute("message","确认密码不能为空");
return "error";
}
if(!opwd.equals(userbean.getPassword())){
modelData.addDateAttribute("message","旧密码输入错误");
return "error";
}
if(!npwd1.equals(npwd2)){
modelData.addDateAttribute("message","新密码输入不一致");
return "error";
}
5.2 管理员端功能实现
5.2.1食材供应商管理实现
在管理员端可以对食材的供应商的信息进行录入,包含供应商的名称、描述等信息进行新增操作,可查询供应商的详情信息。通过controller层对typesVO进行验证,然后提交到数据库保存。

图5.9 食材供应商管理界面
系统实现代码如下:
@RequestUrlsMapping(value = "/remove", method = {RequestMethod.GET} )
private String remove(Integer id) throws ErrorException {
TGongyingshangVOService.removeById(id);
return "redirect:/TGongyingshangVO/showTGongyingshangVO";
}
@RequestUrlsMapping(value = "/add" )
private String add(TGongyingshangVO TGongyingshangVO, ModelData modelData) throws ErrorException {
TGongyingshangVOService.add(TGongyingshangVO);
return "redirect:/TGongyingshangVO/showTGongyingshangVO";
}
@RequestUrlsMapping(value = "/addpage" )
private String addpage(ModelData modelData) throws ErrorException {
return "admin/addTGongyingshangVO";
}
5.2.2食材原材料管理实现
在管理员端可以对食材的原材料信息进行新增录入,包含食材的名称、描述以及库存等信息进行设置操作。通过界面submit按钮提交将input值进行formdata封装,通过dispatcherServlet转到controller层匹配,然后在函数中调用service进行新增,通过底层的insert value进行新增,将结果result返回到界面。

图5.10 食材原材料管理界面
系统实现代码如下:
@RequestUrlsMapping(value = "/add" )
private String add(Cailiao cailiao, HttpServletRequest requestData, ModelData modelData) throws ErrorException {
cailiaoService.add(cailiao);
return "redirect:/cailiao/showcailiao";
}
@RequestUrlsMapping(value = "/addpage" )
private String addpage(ModelData modelData) throws ErrorException {
List<TGongyingshangVO> list=TGongyingshangVOService.findList();
modelData.addDateAttribute("list", list);
return "admin/addcailiao";
}
5.2.3菜品管理实现
在后台端可以对菜品信息进行新增录入,包含菜品的基本信息以及图片信息和销售金额等进行新增保存,可对菜品信息进行编辑。通过submit提交时将表单中的formdata数据提交到FoodBeancontroller层,然后执行mapper中的insert保存到数据库。

图5.11 菜品信息管理界面
系统实现代码如下:
@RequestUrlsMapping(value = "/add" )
private String add(FoodBean FoodBean, HttpServletRequest requestData, ModelData modelData) throws ErrorException {
if(!FoodBean.getFile().isEmpty()) {
String path = request.getServletContext().getRealPath("/images/");
//上传文件名
String filename = FoodBean.getFile().getOriginalFilename();
FoodBean.setBz(filename);
File filepath = new File(path, filename);
if (!filepath.getParentFile().exists()) {
filepath.getParentFile().mkdirs();
}
FoodBean.getFile().transferTo(new File(path + File.separator + filename));
}
Cailiao cailiao=cailiaoService.findById(Integer.parseInt(FoodBean.getXinghao()));
FoodBean.setTGongyingshangVO(cailiao.getName());
FoodBeanService.add(FoodBean);
return "redirect:/FoodBean/showFoodBean";
}
5.2.4 会员管理实现
在管理员端可对注册的所有的会员信息进行查询。在管理员端可以对注册的所有平台人员信息进行查询,在renyuancontroller层可以调用service进行人员的分页查询函数,然后通过renyuanmapper进行数据查询,最后将renyuanlist返回到界面的table表格中

图5.12 会员信息管理界面
系统实现代码如下:
pagingHilper.setCounts(userbeanService.getCount());
if (pagenum == null) {
pagingHilper.setToPageNum(1);
list = userbeanService.finddatapage(1);
} else {
pagingHilper.setToPageNum(page);
list = userbeanService.finddatapage(page);
}
modelData.addDateAttribute("userbeanList", list);
modelData.addDateAttribute("pagingVO", pagingHilper);
return "yonghu/showuserbean";
5.2.5 员工管理实现
在后台端可以对员工信息进行新增,输入员工的账号信息以及个人信息进行保存,可对员工信息进行编辑。前端对每个输入值input进行定义,在界面中可以对内容信息进行填写,通过ajax对数据进行异步提交,结合post方式将json参数提交到controller,在控制层中通过调用service对数据进行insert插入,底层保存数据后返回result为1,代表正确插入了一条,保存对应的结果信息。

图5.13 员工信息管理界面
系统实现代码如下:
@RequestUrlsMapping(value = "/add" )
private String add(Yonghu yonghu, ModelData modelData) throws ErrorException {
yonghuService.add(yonghu);
return "redirect:/yonghu/showyonghu";
}
@RequestUrlsMapping(value = "/addpage" )
private String addpage(ModelData modelData) throws ErrorException {
return "admin/addyonghu";
}
5.2.6 员工排班管理实现
后台可对员工进行排班操作,可对员工的排班信息进行录入,可对排班信息进行删除。在查询界面showdata中可通过后台的controller对数据进行分页查询,通过建立pagehilper对分页参数进行计算,对参数pagesize以及pagenumer进行设置,然后通过mapper层对底层进行limit查询,将查询结果arraylist进行对象封装,最后通过界面进行foreach值展示。

图5.14 员工排班信息管理界面
系统实现代码如下:
@RequestUrlsMapping(value = "/addpage" )
private String add1(ModelData modelData) throws ErrorException {
List<Yonghu> list=yonghuService.findList();
modelData.addDateAttribute("list",list);
return "admin/adduPaiban";
}
@RequestUrlsMapping(value = "/remove" )
private String remove(int id) throws ErrorException {
uPaibanService.removeById(id);
return "redirect:/uPaiban/showuPaiban";
}
5.2.7 公告发布管理实现
在后台端可以发布公告信息,输入公告的标题和内容进行发布新增。在查询界面showdata中可通过后台的controller对数据进行分页查询,通过建立pagehilper对分页参数进行计算,对参数pagesize以及pagenumer进行设置,然后通过mapper层对底层进行limit查询,将查询结果arraylist进行对象封装,最后通过界面进行foreach值展示。

图5.15 公告发布信息管理界面
系统实现代码如下:
@RequestUrlsMapping(value = "/add")
private String add(Newsmeg newsmeg, ModelData modelData) throws ErrorException {
Date currentTime = new Date();
SimpleDateTransTransformat transformatter = new SimpleDateTransformat("yyyy-MM-dd");
String dateString = transformatter.transformat(currentTime);
newsmeg.setRiqi(dateString);
newsmegService.add(newsmeg);
return "redirect:/newsmeg/shownewsmeg";
}
5.2.8 订单查询管理实现
在后台端可以对订单信息进行查询,对订单的金额以及销售菜品详情信息进行查询。在后台可对商品购买的订单信息进行查询以及进行收货、发货操作,在后台orderscontroller层中通过showorderslist中获取到订单信息,发货时将FoodBeannum的库存数量进行更新。同时对商品的订单状态进行update更新。

图5.16 订单查询信息管理界面
系统实现代码如下:
if (pagenum == null) {
pagingHilper.setToPageNum(1);
list = dingdanService.finddatapage(1);
} else {
pagingHilper.setToPageNum(page);
list = dingdanService.finddatapage(page);
}
for(Dingdan dingdan:list){
Userbean userbean=userbeanService.findById(dingdan.getUserid());
if(userbean!=null)
dingdan.setUsername(userbean.getName());
}
5.3 员工端功能实现
5.3.1订单管理实现
在员工端可以查询用户的下单信息,可对订单进行接单操作。可通过界面ajax将pagesize以及pagenum进行参数传递,然后通过controller层进行参数Url动态接收,在函数中通过pagehilper进行分页计算,然后调用mapper层进行select * from table limit 进行分页查询,最后将结果封装保存。

图5.17 订单管理界面
系统实现代码如下:
if (pagenum == null) {
pagingHilper.setToPageNum(1);
list = dingdanService.finddatapageUser(1,tuserid);
} else {
pagingHilper.setToPageNum(page);
list = dingdanService.finddatapageUser(page,tuserid);
}
5.3.2原材料库存管理实现
在员工端可以对食材的原材料的基本信息以及库存信息进行查询。在查询界面showdata中可通过后台的controller对数据进行分页查询,通过建立pagehilper对分页参数进行计算,对参数pagesize以及pagenumer进行设置,然后通过mapper层对底层进行limit查询,将查询结果arraylist进行对象封装,最后通过界面进行foreach值展示。

图5.18 原材料库存管理界面
系统实现代码如下:
pagingVO.setCounts(cailiaoService.getCount());
if (pagenum == null) {
pagingHilper.setToPageNum(1);
list = cailiaoService.finddatapage(1);
} else {
pagingHilper.setToPageNum(page);
list = cailiaoService.finddatapage(page);
}
modelData.addDateAttribute("cailiaoList", list);
modelData.addDateAttribute("pagingVO", pagingHilper);
5.3.3原材料补货管理实现
在员工端可以进行原材料的补货操作,输入补货的数量信息进行更新。通过ajax将值信息转为json格式数据,然后通过post方式将数据提交,通过后台controller层URL匹配接收后将数据通过StringUtilsCheck进行为空以及长度的验证,确认数据无误后通过底层mapper保存到数据库,然后返回存储标识result为1。

图5.19 原材料补货管理界面
系统实现代码如下:
@RequestUrlsMapping(value = "/add" )
private String add(Jinhuo jinhuo, ModelData modelData, HttpServletRequest requestData) throws ErrorException {
Date currentTime = new Date();
SimpleDateTransTransformat transformatter = new SimpleDateTransformat("yyyy-MM-dd");
HttpSession session=request.getSession();
Integer tuserid=(Integer) session.getAttribute("userId");
String dateString = transformatter.transformat(currentTime);
jinhuo.setUserid(tuserid);
jinhuo.setRiqi(dateString);
jinhuoService.add(jinhuo);
Cailiao cailiao= cailiaoService.findById(jinhuo.getGoodid());
cailiao.setShuliang(cailiao.getShuliang()+Integer.parseInt(jinhuo.getShuliang()));
cailiaoService.update(cailiao);
return "redirect:/jinhuo/showjinhuouser";
}
6 系统运行及测试结果
6.1 测试概述
在系统的测试环节,首先要从用户的角度考虑,校验系统的功能是否符合真实的操作要求,测试中要根据前期的需求设想进行功能验证。在测试环节中可以采用黑盒与白盒进行测试,通过黑盒对系统的基本操作流程进行测验,对流程的一些卡顿操作进行优化。白盒可以对系统的数据业务逻辑正确与否进行测试。在测试中可以通过Jmiter工具进行测试,对系统的性能和压力都进行测验。
6.2 测试方法
在测试环节中主要是对系统前期的需求分析功能点进行测验,对每个角色下的菜单功能以及权限进行测试。在测试中主要采用黑盒以及白盒进行测试,通过搭建测试环节Junit对每个单元模块进行测试。针对于测试要从前端的输入校验以及数据的展示,到业务模块的数据处理,以及底层数据的一致性和准确性进行验证。在测试中可以通过边际值覆盖法对所有的可能性都进行测试,然后对bug进行优化。
6.3 测试用例
表6-1.菜品信息管理模块测试
|
测试模块 |
测试编号 |
测试数据 |
期望输出 |
真实输出 |
测试结果 |
|
菜品信息管理模块测试 |
1 |
输入名称内容为“454787” |
提示名称填报格式错误 |
提示名称填报格式错误 |
通过 |
|
2 |
对名称填报“店长亲自制作的卡布奇诺菜品” |
界面提示名称填报字符数过长 |
界面提示名称填报字符数过长 |
通过 |
|
|
3 |
对所属分类不进行填报即提交 |
系统提示所属分类不可为空 |
系统提示所属分类不可为空 |
通过 |
表6-2.员工信息管理模块测试
|
测试模块 |
测试编号 |
测试数据 |
期望输出 |
真实输出 |
测试结果 |
|
员工信息管理模块测试 |
1 |
姓名填报内容为“-=” |
界面提示姓名填报格式错误 |
界面提示姓名填报格式错误 |
通过 |
|
2 |
在手机号输入框输入“1356546486615” |
提示手机号输入字符数不符要求 |
提示手机号输入字符数不符要求 |
通过 |
|
|
3 |
填报身份证内容为“-0--” |
系统提示身份证号内容输入格式错误 |
系统提示身份证号内容输入格式错误 |
通过 |
表6-3.菜品销售管理模块测试
|
测试模块 |
测试编号 |
测试数据 |
期望输出 |
真实输出 |
测试结果 |
|
菜品销售管理模块测试 |
1 |
输入点单数量为“sfwe” |
提示点单数量填报格式有误 |
提示点单数量填报格式有误 |
通过 |
|
2 |
对点单数量填报内容为“50” |
系统提示点单数量填报数额超过要求数额 |
系统提示点单数量填报数额超过要求数额 |
通过 |
|
|
3 |
填报销售订单说明“某企业购买” |
界面提示销售订单说明填报字符数过短 |
界面提示销售订单说明填报字符数过短 |
通过 |
表6-4.座位信息管理模块测试
|
测试模块 |
测试编号 |
测试数据 |
期望输出 |
真实输出 |
测试结果 |
|
座位信息管理模块测试 |
1 |
在座位名输入框中输入“d01” |
界面提示座位名填报格式错误 |
界面提示座位名填报格式错误 |
通过 |
|
2 |
输入容纳人数信息为“sdf” |
界面提示容纳人数信息输入格式有误 |
界面提示容纳人数信息输入格式有误 |
通过 |
|
|
3 |
对容纳人数输入为“10” |
提示管理员容纳人数信息填报数额不可超过要求数额 |
提示管理员容纳人数信息填报数额不可超过要求数额 |
通过 |
表6-5.会员信息管理模块测试
|
测试模块 |
测试编号 |
测试数据 |
期望输出 |
真实输出 |
测试结果 |
|
会员信息管理模块测试 |
1 |
会员卡号填报内容为“----?” |
界面提示会员卡号填报格式错误 |
界面提示会员卡号填报格式错误 |
通过 |
|
2 |
对姓名填报内容为“圣爱可素佩里·艾洁妮可利杰” |
界面提示姓名填报字符数过长 |
界面提示姓名填报字符数过长 |
通过 |
|
|
3 |
对手机号输入“158ggefh” |
界面提示手机号输入格式错误 |
界面提示手机号输入格式错误 |
通过 |
表6-6.供应商信息管理模块测试
|
测试模块 |
测试编号 |
测试数据 |
期望输出 |
真实输出 |
测试结果 |
|
供应商信息管理模块测试 |
1 |
对供应商名称不进行填报即提交 |
界面提示供应商名称填报格式错误 |
界面提示供应商名称填报格式错误 |
通过 |
|
2 |
供应商名称填报内容为“...?” |
界面提示供应商名称填报格式错误 |
界面提示供应商名称填报格式错误 |
通过 |
|
|
3 |
供应商名称内容输入“eat234...???。” |
提示供应商名称填报字符数过长 |
提示供应商名称填报字符数过长 |
通过 |
表6-7.公告发布信息管理模块测试
|
测试模块 |
测试编号 |
测试数据 |
期望输出 |
真实输出 |
测试结果 |
|
公告发布信息管理模块测试 |
1 |
对公告标题内容不进行填报即提交 |
界面提示公告标题填报格式错误 |
界面提示公告标题填报格式错误 |
通过 |
|
2 |
对公告内容不进行填报即提交 |
界面提示公告内容填报格式错误 |
界面提示公告内容填报格式错误 |
通过 |
表6-8.员工排班信息管理模块测试
|
测试模块 |
测试编号 |
测试数据 |
期望输出 |
真实输出 |
测试结果 |
|
员工排班信息管理模块测试 |
1 |
对员工信息内容不进行填报即提交 |
界面提示员工信息填报格式错误 |
界面提示员工信息填报格式错误 |
通过 |
|
2 |
通过 |
表6-9.座位预约模块测试
|
测试模块 |
测试编号 |
测试数据 |
期望输出 |
真实输出 |
测试结果 |
|
座位预约模块测试 |
1 |
对预约时间内容填报为“4585” |
界面提示预约时间填报格式错误 |
界面提示预约时间填报格式错误 |
通过 |
|
2 |
通过 |
表6-10.会员密码编辑模块测试
|
测试模块 |
测试编号 |
测试数据 |
期望输出 |
真实输出 |
测试结果 |
|
会员密码编辑模块测试 |
1 |
用户名为yan1的旧密码内容填报为“795348” |
界面提示旧密码输入错误 |
界面提示旧密码输入错误 |
通过 |
|
2 |
对新密码填报“妮妮旎” |
界面提示新密码填报格式错误 |
界面提示新密码填报格式错误 |
通过 |
|
|
3 |
对新密码填报内容为“yan11”,对确认密码填报内容为“yan111” |
界面提示两次输入密码不一致 |
界面提示两次输入密码不一致 |
通过 |
表6-11.菜品购买订单模块测试
|
测试模块 |
测试编号 |
测试数据 |
期望输出 |
真实输出 |
测试结果 |
|
菜品购买订单模块测试 |
1 |
对点单数量填报为“三” |
界面提示点单数量填报格式错误 |
界面提示点单数量填报格式错误 |
通过 |
|
2 |
对会员手机号填报为“15978654896125” |
界面提示会员手机号填报格式有误 |
界面提示会员手机号填报格式有误 |
通过 |
表6-12.登录测试测试
|
测试模块 |
测试编号 |
测试数据 |
期望输出 |
真实输出 |
测试结果 |
|
登录模块测试 |
1 |
输入不存在账号“wang123登录” |
界面提示人员登录输入账号不存在 |
界面提示登录账号不存在 |
通过 |
|
2 |
输入错误的密码进行登录操作“lisi123” |
界面提示会员密码输入错误 |
界面提示会员密码错误 |
通过 |
7 总结
本文根据餐饮行业数字化转型的实际需求,设计并实现了一套基于SpringBoot与Vue的餐饮门店智能点餐、订单管理系统。在系统设计过程里,先对国内外的餐饮管理系统发展现状进行了调研,弄清楚了中小型餐饮门店在订单处理效率、供应链协同和人员管理等方面存在的问题。系统以此为基础采用前后端分离架构,后端运用SpringBoot模式的高效开发特性、MyBatis的数据持久化能力,前端使用Vue.js建立动态交互界面,并选择MySQL作为数据库支撑,完成了从用户在线点餐、购物车管理到后台员工排班、食材采购、供应商管理等主要功能模块的开发。系统把前厅消费同后厨管理连接起来,门店依靠它得到从食材入库到菜品销售的数字化解决方案。
系统测试和功能验证结果表明,该系统可以稳定运行,并且满足餐饮门店日常管理方面上的需求。在业务上,系统明显改善了顾客点餐体验和门店订单处理效率,用户可以方便浏览菜品、在线下单、追踪订单。员工可以实时接收订单并且明确排班任务,这样使沟通成本减少。管理员依靠统一的后台管理,对菜品、食材、员工及采购业务进行集中管控,这解决了传统管理模式下信息孤岛的问题。测试结果说明,系统各模块功能完整,数据交互准确,具有不错的实用性和可靠性,可以为同类餐饮企业的信息化建设提供参考。
展望未来,本系统仍然有进行优化和扩展的空间。在功能上,本文会利用用户行为数据中的智能推荐算法,通过顾客的点餐习惯和消费记录来推送个性化菜品,以达到提高用户黏性和客单价的目的。也可以加入销售数据可视化分析模块,用图表形式直观展示菜品销量排行、营业趋势和库存预警,帮助管理者提供更准确的决策支持。在技术升级上,本文可以引入Redis缓存技术,用来优化高频数据的访问性能,并缓解数据库的压力。本文尝试把系统部署在云端,使得多门店数据能够互通并进行集中管控,辅助连锁餐饮企业形成比较完备的数字化生态。由于人工智能和物联网技术的发展,未来的餐饮管理系统会朝着更智能和更便捷的方向进行演进。
参考文献
[1]何燕丽. 农产品销售系统的设计与实现[J].福建电脑,2025,41(11):75-80.DOI:10.16707/j.cnki.fjpc.2025.11.014.
[2]汤智宏. 基于SpringBoot+Vue的线上书店设计与实践[J].电脑编程技巧与维护,2025,(09):71-73.DOI:10.16184/j.cnki.comprg.2025.09.011.
[3]于永利. 基于SpringBoot的药品订购系统的设计与实现[J].信息与电脑,2025,37(04):117-119.
[4]韦珍娜,陈宇佳. 基于Springboot的服装租赁系统设计[J].电脑编程技巧与维护,2025,(01):35-38.DOI:10.16184/j.cnki.comprg.2025.01.005.
[5]陆向艳,柳明洲. 基于SpringBoot的农产品溯源系统的设计与实现[J].电脑知识与技术,2024,20(26):35-36+39.DOI:10.14004/j.cnki.ckt.2024.1351.
[6]王培培. 基于SpringBoot的网上商城管理系统设计与实现[J].现代计算机,2024,30(07):117-120.
[7]陈彬. 基于SpringBoot技术的海产品销售平台设计与开发[J].信息与电脑(理论版),2024,36(05):77-80.
[8]吴伶琳. 基于SpringBoot的客户关系管理系统设计与实现[J].无线互联科技,2023,20(24):60-62.
[9]艾钰承,朱海风,刘舟. 基于SpringBoot的“喵站”宠物服务平台的设计与实现[J].科技资讯,2023,21(22):22-25.DOI:10.16661/j.cnki.1672-3791.2305-5042-0756.
[10]陈冬君,孔海军,吴荷,等. 基于SpringBoot+Vue的智能随车营销系统[J].电脑与电信,2023,(09):55-59.DOI:10.15966/j.cnki.dnydx.2023.09.017.
[11]鄢靖丰,王佳乐. 基于SpringBoot的微电子平台设计与实现[J].许昌学院学报,2022,41(05):94-98.
[12]陈小燕,朱映辉,余晓春. 基于SpringBoot+Vue的好农物商城的设计与实现[J].电脑知识与技术,2022,18(22):37-39.DOI:10.14004/j.cnki.ckt.2022.1535.
[13]崔黎,方洁. 基于SpringBoot的肉类品质管理系统的设计与实现[J].电脑知识与技术,2022,18(13):47-48+52.DOI:10.14004/j.cnki.ckt.2022.0899.
[14]田松涛,段元梅. 基于SpringBoot的线上商城平台设计[J].无线互联科技,2022,19(01):56-57.
[15]丁海洋,王昊翔,姚全珠. 基于MVVM框架的汽车销售管理系统设计与实现[J].电子制作,2021,(22):55-56+8.DOI:10.16589/j.cnki.cn11-3571/tn.2021.22.019.
[16]林翔.基于SpringBoot技术的M公司厨电产品质量管理系统的设计与实现[D].电子科技大学,2021.DOI:10.27005/d.cnki.gdzku.2021.002692.
[17]危炜.基于SpringBoot和Vue框架的刹车片工厂流程再造系统的设计与实现[D].浙江理工大学,2021.DOI:10.27786/d.cnki.gzjlg.2021.000215.
[18]叶方超,张思扬,李传锴. 基于SpringBoot的旧物回收商城的设计与实现[J].智能计算机与应用,2019,9(05):84-86.
更多推荐


所有评论(0)