版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
XXX系统的设计与实现IV摘要本研究的核心目标是利用SpringBoot框架来构建一个高效、稳定的外卖订购系统,该系统旨在集成各类餐厅资源,从而为顾客提供便捷的在线点餐体验。在研究实施过程中,我们以SpringBoot框架作为后端开发的核心支撑,利用其出色的Web应用快速构建能力,并与前端技术如HTML、CSS、JavaScript等相结合,实现了系统前后端的分离开发,从而确保系统的灵活性和可维护性。通过系统测试和用户反馈,验证了该外卖订餐系统具有良好的可用性和稳定性。研究结果表明,基于SpringBoot框架的外卖订餐系统能够有效提高餐饮行业的服务效率,提升消费者体验。本研究对于推动餐饮行业的信息化发展具有一定的理论价值和实践意义。关键词:SpringBoot;外卖订餐系统;前后端分离;信息化发展;用户体验
ABSTRACTThisstudyaimstodesignandimplementanefficientandreliableonlinefoodorderingsystembyutilizingtheSpringBootframework.Thesystemintegratesrestaurantresources,aimingtoprovideconsumerswithconvenientonlineorderingservices.Duringtheresearch,weemployedtheSpringBootframeworkasthefoundationforbackenddevelopment,leveragingitscapabilitiesforrapidWebapplicationdevelopment.BycombiningfrontendtechnologiessuchasHTML,CSS,andJavaScript,weachievedaseparationoffrontendandbackenddevelopment.Throughsystematictestinganduserfeedback,wevalidatedtheusabilityandstabilityoftheonlinefoodorderingsystem.TheresearchfindingsdemonstratethatthesystembuiltupontheSpringBootframeworkeffectivelyenhancesserviceefficiencyinthecateringindustryandimprovesconsumerexperience.Thisstudyholdstheoreticalvalueandpracticalsignificanceinpromotingtheinformationizationofthecateringindustry.Keywords:SpringBoot;OnlineFoodOrderingSystem;Frontend-BackendSeparation;InformationizationDevelopment;UserExperience
目录摘要 IABSTRACT I1绪论 11.1本论文研究背景及研究意义 11.2系统使用的开发语言 11.3系统相关使用技术 11.4系统可行性分析 21.4.1技术可行性 21.4.2开发成本可行性 21.4.3用户操作体验可行性 22系统分析 32.1开发和运行环境分析 32.2系统功能需求分析 32.2.1系统功能描述 32.2.2系统功能用例图 32.3非功能性需求分析 52.3.1系统性能需求 52.3.2系统环境需求 53系统总体设计 63.1系统设计指导思想及原则 63.2系统模块划分 63.3系统各功能模块设计 73.3.1后台功能模块 73.3.2前台功能模块设计 83.4系统数据库设计 83.4.1数据库总体设计 83.4.2数据库E-R图设计 93.4.3数据库表的设计 104系统详细设计与实现 184.1后台模块设计 184.1.1登录模块 184.1.2员工信息管理模块 184.1.3分类管理模块 214.1.4菜品管理模块 244.1.5套餐管理模块 274.1.6订单明细管理模块 294.1.7退出登录模块 314.2前台模块设计 314.2.1登录注册模块 314.2.2菜品浏览模块 324.2.3购物车模块 344.2.4地址管理模块 354.2.5下单支付模块 364.2.6订单管理模块 385系统测试 405.1测试方法 405.2部分功能测试 405.2.1登录功能测试 405.2.2员工管理测试 405.2.3套餐管理测试 415.2.4安全测试 426总结与展望 446.1总结 446.2展望 44参考文献 45致谢 46附录 47
XX系统的设计与实现PAGE1PAGE4绪论本论文研究背景及研究意义当前,国内的外卖订餐服务主要依赖电话和网络两种方式进行。电话订餐的方式,即顾客根据个人需求直接拨打餐厅电话进行订购,这种方式相较于传统外卖点单,确实提供了更高的便捷性并大幅节省了时间。然而,这种方式也存在明显的短板。一方面,餐厅需要时刻保持有人接听外卖电话,这在某些时段难以确保电话畅通无阻;另一方面,需要专人记录订餐内容,这一环节容易因人为因素导致出错。因此,尽管电话订餐有其便利性,但在实际操作中仍存在一定的局限性。发展至今,饿了么、百度外卖和美团等几家网络公司,在中国的餐饮行业中,占有很大的份额,尤其是快餐店、餐饮店等,都离不开它们。目前,在国外,已经存在的互联网订餐系统已经发展到了非常成熟的程度,并且提供了非常人性化的服务。但是,在我国,目前市场上的订餐系统主要被大型餐饮企业的自有网站所垄断,而众多小型餐厅由于资金匮乏和技术开发难度等问题,仍然沿用传统的服务方式,导致其服务范围和服务质量存在明显的局限性。经过对普通餐饮行业的深入调研,我们发现餐饮与网络应用的融合并不普遍。因此,我们提出了构建区域性餐饮网络营销的新思路。这一思路以城区中小型餐厅为主要服务对象,结合城区周边住宅区和学校园区的市场特性,深入分析消费者的网络购物行为。在此基础上,我们致力于开发一个开放型的餐饮服务平台,为网络订餐项目的实施奠定坚实基础。这一举措不仅有助于解决餐饮企业在服务上的困境,更对提升广大市民的用餐体验具有深远的意义。
关键理论与技术介绍本章节先会先介绍开发和运行环境分析,以及本项目使用的开发语言,再描述系统相关实用技术,最后针对技术可行性与开发成本可行性,用户体验可行性来分析系统。开发和运行环境分析在本项目中,我们采用了Java语言进行软件的开发,因此确保拥有相应的Java运行环境至关重要。鉴于Java语言具备跨平台的显著优势,由Java编写的程序可以无缝地在多种操作系统上运行。基于这一特性,我们选择在Windows环境下进行本项目的开发工作。关于具体的开发环境配置,我们采用了Windows11操作系统。这一选择不仅确保了开发环境的稳定性,还充分利用了Java语言的跨平台特性,为项目的顺利进行提供了有力保障。具体配置如下:操作系统:Windows11Java运行环境:JDK1.8服务器:Tomcat8.0开发工具:Idea、DataGrip、Git、RedisDesktop测试工具:Swagger在线api文档、Postman系统使用的开发语言在编程语言的选择上,本项目决定采用Java进行开发。Java,这款由Sun公司推出的编程语言,具备出色的跨平台特性与高度的可移植性,是典型的面向对象编程语言。它不仅是当前最为先进、特性丰富、功能强大的计算机语言之一,而且因其卓越的兼容性和稳定性,在软件开发领域有着广泛的应用。利用Java可以编写桌面应用程序、Web应用程序、分布式系统应用程序、嵌入式系统应用程序等,从而使其成为应用最广泛的开发语言REF_Ref7759\r\h[1]。系统相关使用技术在前端上分为前台和后台,前台采用HTML5编写,参考各大外卖平台的页面,打造出属于自己的页面。后台使用Vue前端框架,Vue是一个专注于构建数据驱动的Web应用开发框架,其简洁、轻量、数据驱动和模块友好的特点,使其在企业和前端开发者中备受欢迎,成为了前端开发人员的核心技能之一。随着Vue3.0的推出,其周边生态也得到了极大的发展,进一步巩固了Vue在企业级开发中的重要地位。在后端上选择使用较为火热的SpringBoot框架,并整合MyBatis-Plus框架,SpringBoot,作为Spring大家族的一员,由Spring官方团队(即Pivotal团队)精心打造,其诞生旨在简化Spring框架的使用流程,解决了以往使用Spring框架时较为繁琐的问题。SpringBoot的核心设计理念在于“约定优于配置”,这一理念使得开发者无需再手动配置繁琐的XML文件,而能像整合Maven中的Jar包一样,轻松整合并使用各种框架,极大地提高了开发效率。在前后端交互的实现上,我们决定采用JQuery结合AJAX技术。AJAX作为一种创建快速且动态网页的有效手段,其工作原理在于通过与服务器进行少量数据交换,实现了网页的异步更新,从而为用户提供了更加流畅和高效的交互体验。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新REF_Ref7844\r\h[2]。技术可行性本次开发的外卖订餐系统是面向所有人的,所以在前台采取页面简洁的方法,前台使用Vue和Element-UI组件,使用户能快速、简便的浏览网页,使得用户体验更加良好。后台全部使用轻量级的Vue前端框架,操作简便,功能齐全,界面简单而优美使得用户体验以及功能都能得到保障REF_Ref7919\r\h[3]。开发成本可行性前台采用了开源的Vue框架,与后台的集成使得成本相对较低。而后端我们则选用了SpringBoot框架,它能够迅速构建独立的Spring应用,显著简化了配置过程。尽管Spring作为JavaEE的轻量级框架一度因繁琐的配置而被称为“配置地狱”,但SpringBoot更多地倾向于采用JavaConfig的方式进行配置,从而大大提升了开发效率和便捷性,对Spring进行配置,可以省去一定的开发时间,且后期维护相对容易。数据库使用的是开源的MySQL,相比于Oracle,开源的MySQL极大地减轻了开发成本REF_Ref7987\r\h[4]。用户操作体验可行性本系统登录注册使用了方便且快捷的手机验证码方式进行,模块清晰,使得用户在使用本系统时更加简便。
需求分析与总体设计本章节旨在详尽阐述在项目启动阶段,本系统所开展的需求分析工作,并进一步探讨如何依据这些需求,精心构建系统的整体架构,其中包括系统的模块划分,各功能模块的设计,以及数据库表的设计。系统功能描述本系统是面向所有人的外卖点餐系统。系统用户角色可以分为管理员和用户。管理员可以登录后台管理端进行后台工作的管理,用户可以登录前台餐厅进行操作。管理员拥有对员工信息、分类管理、菜品信息和套餐信息的全面管理权限,可以导出相关的分类信息数据表格和订单明细数据表格。同时,管理员还能够查询订单明细,处理订单管理事务,并随时修改个人信息。而用户则能够查看菜品信息和详情,选择菜品规格,管理购物车和收货地址,并随时修改个人信息。此外,用户还可以查看订单信息,进行下单支付等操作。这样的设计确保了管理员和用户各自能够高效地完成相应的操作,提升了系统的可用性和用户体验。系统功能用例图在本系统中,角色分为后台管理员和前台用户2种。图2-1是管理员用例图、图2-2是用户用例图,用StarUML软件画的2种角色的用例图。图2-1管理员用例图图2-2用户用例图系统性能需求易使用性:本系统开放所有用户,所以界面需要美观、简洁、大方。应尽量减少用户的学习成本(没有新手引导也知道怎么样使用),所以页面布局参考了国内知名外卖平台设计,整体布局合理。减少页面的跳转,能在当前页面完成就在当前页面完成,直观的让用户操作,一步到位。安全性:由于用户下单时,需向系统平台提供个人的地址、手机号码等敏感信息,系统需防止用户的信息泄露、丢失。数据精确度:在用户在进行订单的时候,可以准确地对所选择的菜品的数量和规格进行反馈并产生结果,还可以准确地展示出订单时间和预期送达时间;在进行账目报表查询时,为确保员工能够全面获取所需信息,系统提供了数据筛选功能,使得用户能够按需呈现相关数据。可扩展性:本外卖订餐系统具备高度的灵活性,允许添加各类附加功能。例如,用户可以在完成订单后对服务进行评价,而商家则可以对这些评价进行及时回应。这种设计不仅提升了用户体验,也为商家提供了优化服务的参考依据。其次,还可以增加商家与用户之间可以进行即时的在线交流,方便用户对商家提出需求,商家也可即时查看并做出反馈。可靠性:对输入进行提醒,对数据进行检验,避免出现异常情况。系统具有很好的健壮性,能够对系统操作中发生的诸如人为操作失误,输入非法数据,系统异常等问题做出相应反应,并适当规避REF_Ref8099\r\h[5]。系统环境需求开发环境:JDK(JavaDevelopmentKit):Java开发工具包,包含了开发Java应用程序所需的全部工具和技术,包括Java编译器、JRE、JavaAPI库、调试工具等。IntelliJIDEA(Java开发工具):集成开发环境,提供编辑器、代码提示、调试工具等一系列开发工具。Tomcat(Web容器):Web容器是JavaWeb应用程序运行的环境,Tomcat是最常用的JavaWeb容器之一。运行环境:Java运行环境(JRE):Java运行环境是JavaWeb应用程序运行所需的基础环境,包含Java虚拟机和JavaAPI库。Web容器:JavaWeb应用程序需要一个Web容器来运行,Tomcat是最常用的Web容器之一。操作系统:JavaWeb应用程序可以在各种操作系统上运行,如Windows、Linux等。总体来说,JavaWeb系统的开发环境和运行环境需要的软件和工具比较复杂,但是它可以实现跨平台的应用程序开发和运行,具有很好的移植性和扩展性。系统设计指导思想及原则由于本系统是面向所有人的系统,系统需要有良好的操作性和体验性,所以系统采用Vue前端框架加AJAX异步通信技术增加体验感。模块分明,信息提示增加操作性,考虑当用户访问量过大时,数据库压力大,反应时间长,所以使用非关系型数据库Redis做缓存,可以快速返回数据给用户,更好的提高用户的体验REF_Ref8259\r\h[6]。系统模块划分根据第2.2节的功能需求分析,系统主要有后台管理员和前台用户两种角色。后台功能结构图如图3-1所示。图3-1后台功能结构图前台功能结构图如图3-2所示。图3-2前台功能结构图后台功能模块登录功能:管理员通过输入账号和密码进行身份验证,成功登录后方可进行后续操作。员工信息管理模块:管理员在此模块中可全面管理员工信息。不仅可以浏览员工的详细资料,还能通过关键字进行精准查询。同时,管理员还具备添加新员工信息、编辑现有信息、禁用员工账号以及删除员工信息的权限。分类管理模块:管理员能够浏览现有的分类信息,并根据需要添加新的分类。此外,管理员还能对分类信息进行修改、删除和搜索操作,甚至可以将分类数据导出为Excel表格,方便数据分析和处理。菜品管理模块:管理员在此模块中能够查看完整的菜品列表,并通过关键字快速定位特定菜品。除了基本的添加、修改和删除菜品信息功能外,管理员还能批量停售菜品或批量删除菜品信息。同时,搜索功能和数据导出功能也极大地提高了管理效率。套餐管理模块:与菜品管理类似,管理员在套餐管理模块中可以查看套餐列表,通过关键字或其他条件查询套餐信息。同样地,管理员可以对套餐信息进行增删改查操作,并能批量停售或删除套餐。此外,数据的导出功能也适用于套餐管理。订单明细管理模块:管理员在此模块中能够全面掌控订单信息。不仅可以查看订单列表,还能通过关键字或日期区间进行精确查询。添加、修改和删除订单信息的功能使得管理员能够灵活处理各种订单情况。同时,搜索功能和数据导出功能也为订单管理提供了极大的便利。退出登录功能:当管理员完成所有操作后,可以选择退出登录。退出后,系统将自动跳转到登录页面,确保系统的安全性和隐私性。前台功能模块设计登录注册:为了方便用户登录,前台使用手机号和发送的手机短信验证码进行登录。首次登录时,系统自动为提供的手机号进行注册。菜品浏览:用户登录后,跳转到首页进行菜品浏览,数据展示由后台维护的菜品和套餐。购物车:用户登录后,用户可以在自己的购物车里加入一些菜品和套餐。对菜品而言,若已设定好的口味信息,在添加到购物车上之前,必须先选定相应的规范;至于套餐,你可以通过单击“+”键将目前的套餐添加到购物车中。您可以在购物车中更改菜品或套餐的数目,也可以将购物车中的物品全部清除。地址管理功能:在用户成功登录后,系统将允许用户对个人收货地址进行管理与设置。用户可自主选择一个收货地址作为默认下单地址,以简化后续购物流程。下单支付流程:用户登录后,可将心仪的菜品或套餐添加至购物车。一旦点击购物车中的结算按钮,系统将引导用户进入订单确认页面。在确认订单信息无误后,用户只需点击支付按钮即可完成下单支付操作,流程简洁高效。订单管理功能:用户登录后,可轻松访问个人中心,在此查看历史订单与最新订单记录。这一功能有助于用户随时掌握订单状态,便于进行订单跟踪与管理。个人中心设置:用户登录后,进入个人中心,可便捷地查看和修改个人信息,如姓名、联系方式等。同时,用户还可在此查看个人订单详情、订单状态以及已设置的收货地址,实现个人信息的全面管理与掌控。系统数据库设计本系统使用的是MySQL数据库,MySQL是关系型数据库,由于其速度快,成本低,灵活性强,常常被用于Web应用方面。也正是这些优点,因此选取MySQL作为本项目的数据库管理系统[7]。数据库总体设计根据外卖订餐系统的需求,本系统共设计了11张数据库表,分别如下:员工信息表(employee):此表用于存储后台员工的相关信息;分类信息表(category):该表用于记录后台的分类信息;菜品信息表(dish):这张表专门用于存储后台的菜品详细信息;菜品口味信息表(dish_flavor):用于详细记录后台菜品的不同口味信息;套餐信息表(setmeal):此表用于存储后台的套餐内容信息;套餐明细信息表(setmeal_dish):这张表则用于记录套餐内包含的具体菜品信息;订单信息表(order):专门用于存储后台的订单数据;订单明细表(order_detail):用于详细记录订单的每一项明细;用户信息表(user):此表用于存储前台用户的基本信息;地址信息表(address_book):用于记录前台用户的地址信息;购物车信息表(shopping_cart):专门用于存储前台用户的购物车内容;数据库E-R图设计根据设计的数据表,分析实体与实体之间的联系,进行E-R图的绘制。本系统绘制的E-R图如3-3所示。图3-3数据库E-R设计图数据库表的设计(1)对员工信息表进行设计,如表3-1员工信息表所示。表3-1员工信息表字段名字段描述数据类型长度是否主键约束说明id主键bigint-是notnull唯一约束name姓名varchar32否notnull-字段名字段描述数据类型长度是否主键约束说明username用户名varchar32否notnull-password密码varchar64否notnull-phone手机号varchar11否notnull-sex性别varchar2否notnull-id_number身份证varchar18否notnull-status状态int-否notnull0:禁用1:正常create_time创建时间datetime-否notnull-update_time更新时间datetime-否notnull-create_user创建人bigint-否notnull-update_user修改人bigint-否notnull-(2)对分类信息表进行设计,如表3-2分类信息表所示。表3-2分类信息表字段名字段描述数据类型长度是否主键约束说明id主键bigint-是notnull唯一约束type类型int-否-1菜品分类,2套餐分类name分类名称varchar64否notnull-sore顺序int-否notnull-create_time创建时间datetime-否notnull-update_time修改时间datetime-否notnull-create_user创建人bigint-否notnull-update_user修改人bigint-否notnull-(3)对菜品信息表进行设计,如表3-3菜品信息表所示。表3-3菜品信息表字段名字段描述数据类型长度是否主键约束说明id主键bigint-是notnull唯一约束name菜品名称varchar64否-1菜品分类,2套餐分类category_id菜品分类idbigint-否notnull-price菜品价格decimal10,2否--code商品码varchar64否notnull-image修改时间varchar200否notnull-description描述信息varchar400否--status状态int-否notnull0停售1起售sort顺序int-否notnullcreate_time创建时间datetime-否notnullupdate_time修改时间datetime-否notnullcreate_user创建人bigint-否notnullupdate_user修改人bigint-否notnullis_deleted是否删除int-否(4)对菜品口味信息表进行设计,如表3-4菜品口味信息表所示。表3-4菜品口味信息表字段名字段描述数据类型长度是否主键约束说明id主键bigint-是notnull唯一约束dish_id菜品bigint-否notnull-字段名字段描述数据类型长度是否主键约束说明name口味名称varchar64否notnull-value口味数据listvarchar500否--create_time创建时间datetime-否notnull-update_time修改时间datetime-否notnull-create_user创建人bigint-否notnull-update_user修改人bigint-否notnull-is_deleted是否删除int-否--(5)对套餐信息表进行设计,如表3-5套餐信息表所示。表3-5套餐信息表字段名字段描述数据类型长度是否主键约束说明id主键bigint-是notnull唯一约束category_id菜品分类idbigint-否notnull-name套餐名称varchar64否notnull-price套餐价格decimal10,2否--status状态int-否-0:停用1:启用code编码varchar32否--description描述信息varchar512否--image图片varchar255否--create_time创建时间datetime-否notnull-update_time修改时间datetime-否notnull-create_user创建人bigint-否notnull-update_user修改人bigint-否notnull-is_deleted是否删除int-否--(6)对套餐明细信息表进行设计,如表3-6套餐明细信息表所示。表3-6套餐明细信息表字段名字段描述数据类型长度是否主键约束说明id主键bigint-是notnull唯一约束setmeal_id套餐idvarchar32否notnull-dish_id菜品idvarchar32否notnull-name菜品名称varchar32否--price菜品价格decimal10,2否--copies分数int-否notnull-sort排序int-否notnull-create_time创建时间datetime-否notnull-update_time修改时间datetime-否notnull-create_user创建人bigint-否notnull-update_user修改人bigint-否notnull-is_deleted是否删除int-否--(7)对订单信息表进行设计,如表3-7订单信息表所示。表3-7订单信息表字段名字段描述数据类型长度是否主键约束说明id主键bigint-是notnull唯一约束number订单号varchar50否--user_id下单用户bigint-否notnull-address_book_id地址idbigint-否notnull-order_time下单时间datetime-否notnull-checkout_time结账时间datetime-否notnull-pay_method支付方式int-否notnull-amount实收金额decimal10,2否notnull-remark备注varchar100否--phont手机号varchar255否--字段名字段描述数据类型长度是否主键约束说明address收货地址varchar255否--user_name收货姓名varchar255否--consignee昵称varchar255否--status订单状态int-否notnull1待付款2待派送3已派送4已完成5已取消(8)对订单明细表进行设计,如表3-8订单明细表所示。表3-8订单明细表字段名字段描述数据类型长度是否主键约束说明id主键bigint-是notnull唯一约束name名字varchar50否--image图片varchar100否--order_id订单idbigint-否notnull-dish_id菜品idbigint-否--setmeal_id套餐idbigint-否--dish_flavor口味varchar-否--number数量int-否notnull-amount金额decimal-否notnull-(9)对用户信息表进行设计,如表3-9用户信息表所示。表3-9用户信息表字段名字段描述数据类型长度是否主键约束说明id主键bigint-是notnull唯一约束name名字varchar50否--字段名字段描述数据类型长度是否主键约束说明phone手机号varchar100否notnull-sex性别varchar2否--id_number身份证号varchar18否--avatar头像varchar500否--status状态int-否-0:禁用1:正常(10)对地址信息表进行设计,如表3-10地址信息表所示。表3-10地址信息表字段名字段描述数据类型长度是否主键约束说明id主键bigint-是notnull唯一约束user_id用户idbigint-否notnull-consignee收货人varchar50否notnull-sex性别tinyint-否-0女1男phone手机号varchar11否--province_code省级区划编号varchar12否--province_name省级名称varchar32否--city_code市级区划编号varchar12否--city_name市级名称varchar32否--detail详细地址varchar200否--label标签varchar100否--is_default默认tinyint-否notnull0否1是create_time创建时间datatime-否notnull-update_time更新时间datatime-否notnull-create_user创建人bigint-否notnull-字段名字段描述数据类型长度是否主键约束说明update_user更新人bigint-否notnull-is_deleted是否删除int-否notnull-(11)对购物车信息表进行设计,如表3-11购物车信息表所示。表3-11购物车信息表字段名字段描述数据类型长度是否主键约束说明id主键bigint-是notnull唯一约束name名称varchar50否--image图片varchar100否--user_id用户idbigint-否notnull-dish_id菜品idbigint-否--setmeal_id套餐idbigint-否--dish_flavor口味varchar50否--number数量int-否notnull-amount金额decimal10,2否notnull-create_time创建时间datetime-否--
系统详细设计与实现本章节根据之前划分好的模块与设计对各个模块进行细化,描述了各个模块详细的设计与实现。登录模块(1)功能描述后台管理员根据账号密码登录后台管理端。(2)页面效果展示管理员登录效果展示如图4-1所示。图4-1管理员登录(3)详细设计和实现点击登录按钮时,前端页面会发送请求并提交参数(username和password),后端接收到请求,调用controller层的login方法,构造一个查询条件构造器,将提交过来的参数作为条件,查询数据库中是否存在该账号密码,如果不存在则登录失败,如果存在则对比密码是否能匹配,不匹配则提示密码错误,如果密码匹配,再检查该管理员状态是否被禁用,被禁用则提示账号已被禁用,登录失败,最后账号存在,密码正确,账号没被禁用才可以登录成功,登录成功后跳转到后台主界面[8]。员工信息管理模块(1)功能描述管理员可以查看员工信息,按关键字模糊查询,点击“新增员工”回调到新增员工页面,单击“编辑”按钮,进入编辑页面,在编辑页面回显的该员工资料,然后对其进行修改,然后再单击“保存”按钮即可进行编辑,点击“禁用”会弹出对话框是否确定禁用。(2)页面效果展示查看员工信息效果展示如图4-2所示。图4-2查看员工信息新增员工信息效果展示如图4-3所示。图4-3新增员工信息修改员工信息效果展示如图4-4所示。图4-4修改员工信息禁用员工效果展示如图4-5所示。图4-5禁用员工(3)详细设计和实现在后台系统用户管理中,可以通过添加新员工的方式扩充用户群。用户点击“添加员工”按钮后,系统会跳转至新增页面,用户在此页面输入新员工的详细信息并点击“保存”按钮。随后,前台通过ajax请求,以json格式向后端发送新员工的数据。后端Controller接收到这些数据后,会调用Service层进行保存操作,而Service层则会进一步调用Mapper层与数据库进行交互,完成数据的保存。对于员工信息列表的展示,系统采用了分页的方式。当用户需要查看员工信息时,页面会向后端发送ajax请求,并附带分页参数(如页码page、每页大小pageSize和搜索关键词name)。后端Controller接收到这些参数后,会调用Service层进行查询操作。Service层再调用Mapper层与数据库进行交互,获取到符合要求的分页数据后返回给Controller。Controller将这些分页数据响应给前端页面,页面则利用Element-UI的Table组件将数据显示给用户。当用户需要编辑员工信息时,可以点击“编辑”按钮,页面会跳转到编辑页面。在编辑过程中,页面会向后端发送包含员工id的ajax请求。后端接收到请求后,根据员工id查询对应的员工信息,并将查询结果以json格式返回给前端。前端页面接收到这些json数据后,利用Vue的数据绑定机制将员工信息回显到编辑页面上。当用户完成编辑并点击“保存”按钮时,页面会再次发送ajax请求,将编辑后的员工数据以json格式提交到后端。后端接收到这些数据后,会进行必要的处理,并向前端发送响应,完成整个编辑流程。点击“禁用”按钮时,发送ajax请求,提交员工id参数,后端接收到请求,进行处理直接修改该账号的状态为禁用状态,完成后给页面响应[9]。分类管理模块(1)功能描述后台管理员登录后可以点击“分类管理”查看分类,添加菜品分类信息和套餐分类信息,可以修改和删除操作,还可以对分类信息导出Excel数据。(2)页面效果展示查看分类信息效果展示如图4-6所示。图4-6分类信息新增菜品分类信息效果展示如图4-7所示。图4-7新增菜品分类新增套餐分类信息效果展示如图4-8所示。图4-8新增套餐分类修改分类信息效果展示如图4-9所示。图4-9修改分类删除分类信息效果展示如图4-10所示。图4-10删除分类(3)详细设计和实现点击“分类管理”页面向后端发出ajax要求,向后端提交分页的查询参数(page,pageSize),后端控制器在接收到页面传递的数据后,会进一步调用Service层来执行数据查询操作。Service层随后会调用Mapper层,该层负责与数据库进行交互,以获取所需的分页数据。一旦数据查询完成,Mapper层会将结果返回给Service层,Service层再将数据传递给Controller。Controller随后会将这些查询到的分页数据作为响应发送给前端页面。前端页面在接收到这些数据后,会通过Element-UI的Table组件将其展示在页面上,以供用户查看。在点击新增分类之后,在页面上,当用户完成新增分类的输入后,会触发一个ajax请求至后端。这一请求会将用户在新增分类窗口中输入的数据以json格式进行封装并发送。后端Controller负责接收这些从页面提交的数据,进而进行后续的处理操作,并且会调用Service来存储这些数据,而Service则会调用Mapper来对数据库中的数据进行处理,从而将这些数据保存下来。单击“删除”按钮后,会出现一个确认的窗口,然后,页面发送一个ajax请求,向后端提交一个参数(id),然后,后端控制器接收到页面传递的数据后,会进一步通过调用Service来执行删除操作。Service层在接收到指令后,会转而调用Mapper来与数据库进行交互,从而完成删除操作。这样的设计确保了数据处理流程的逻辑性和规范性,同时也提高了系统的可维护性和可扩展性。当单击“修改”按钮时,会弹出一个修改框,并返回显示的数据,单击“确定”按钮,会发出一个ajax请求,然后通过json格式向后端提交已修改框中的分类信息,后端会收到分类信息并对其进行处理,最后,页面会收到来自后端的响应,然后再由后端的响应来执行处理[10]。菜品管理模块(1)功能描述后台管理员成功登录后,可进入“菜品管理”界面,实现多项操作功能。管理员可查看当前的菜品信息,并根据需要添加新的菜品信息。同时,系统支持按关键字进行模糊查询,方便管理员快速定位特定菜品。此外,管理员还具备对菜品信息的修改和删除权限,确保菜品信息的准确性和时效性。更为便捷的是,管理员还可以选择进行批量操作,如批量删除、批量停售以及批量起售,这些功能大大提高了管理效率,简化了操作流程。(2)页面效果展示新增菜品信息效果展示如图4-12所示。图4-12新增菜品信息查看菜品信息效果展示如图4-13所示。图4-13菜品信息修改菜品信息效果展示如图4-14所示。图4-14修改菜品信息选择停售或起售菜品效果展示如图4-15所示。图4-15停售或起售菜品删除菜品信息效果展示如图4-16所示。图4-16删除菜品信息(3)详细设计和实现当用户点击“新建菜品”按钮时,页面会发起一个ajax请求至后端,以获取菜品分类数据。后端响应后,这些数据将被展示在页面的下拉框中。同时,在上传图片的过程中,页面会再次发送请求,将图片上传至后端服务器。后端完成图片保存后,页面会发起下载请求,以便将上传的图片进行回显。待所有数据输入完毕后,点击“保存”按钮,页面会以ajax形式发送请求,将菜品相关数据以json格式提交给后端。后端接收到这些数据后,会进行相应的处理并操作数据库,以保存这些菜品信息。至于查看菜品信息的分页列表,页面会向后端发起ajax请求,并附带分页的查询参数(如页码page、每页大小pageSize以及菜品名称)。后端控制器在接收到这些参数后,会调用Service层进行查询操作。Service层会进一步调用Mapper层与数据库交互,获取符合要求的分页数据并返回。随后,Controller将这些分页数据作为响应发送给前端页面。当前端页面接收到这些分页数据后,会利用Element-UI的Table组件将其展示在页面上,以供用户查看。点击“修改”按钮时,页面会发出两次ajax要求,一次是请求后端获得分类数据,以便在菜品类别的下拉栏中进行数据的显示,另一次是要求后端以id来查看目前的菜品并回显,在单击“保存”按钮之后,页面会发出ajax请求,并以json格式将已更改过的菜品数据递交给后端。后端接收数据并进行处理,操作数据库修改数据。批量停售、批量起售和批量删除,页面发送ajax请求,将需要操作的id作为参数提交给后端,后端接收到数据并进行处理,全部正确的处理完毕后反馈给页面[11]。套餐管理模块(1)功能描述后台管理员登录后可以点击“套餐管理”查看套餐信息,添加套餐信息,按关键字模糊查询,修改和删除操作,还可以选择批量删除、批量停售和批量起售。(2)页面效果展示查看套餐信息效果展示如图4-17所示。图4-17套餐信息新增套餐信息效果展示如图4-18所示。图4-18新增套餐信息修改套餐信息效果展示如图4-19所示。图4-19修改套餐信息删除套餐信息效果展示如图4-20所示。图4-20删除套餐信息(3)详细设计和实现 点击“新建套餐”按钮跳转到添加套餐页面,页面发送的是第一个ajax请求,它请求后端获得套餐分类数据,并将其显示在下拉框中。页面持续发出的是第二个ajax要求,它请求后端获得菜品分类数据,然后将其展示在添加菜品的窗口中。页面发出的是第三个ajax要求,要求后端按照菜品的分类,来查看相应的菜品,并将它展示在增加的菜品中。页面发送了第4个ajax要求,要求后端将其图片上传到服务器。页面发出了第5次ajax请求,要进行图片下载,并将上传的照片返回,单击“保存”,页面发出第6次ajax请求,以json的方式将套餐有关数据提交给后端,后端接收到数据并将进行处理,最后正确操作数据库后反馈给前端。查看套餐信息分页列表,页面向后端发出ajax要求,向后端提交分页的查询参数(page,pageSize,套餐名称),后端控制器接收到页面传递的数据后,随即调用Service层进行查询操作。Service层进而调用Mapper层,与数据库进行交互以获取分页数据。一旦查询完成,Mapper层会将结果返回给Service层,随后Service层将查询到的分页数据传递给Controller。Controller接收到这些数据后,将其作为响应发送给前端页面。前端页面在接收到分页数据后,通过Element-UI的Table组件将其展示在页面上,以供用户浏览。批量停售、批量起售和批量删除,页面发送ajax请求,将需要操作的id作为参数提交给后端,后端接收到数据并进行处理,全部正确的处理完毕后反馈给页面[12]。订单明细管理模块(1)功能描述后台管理员登录后可以点击“订单明细”查看订单明细列表,按关键字模糊查询,按指定日期区间查询,查看指定订单明细,修改订单的状态(派送、完成)。(2)页面效果展示查看订单明细效果展示如图4-21所示。图4-21订单明细查看指定订单效果展示如图4-22所示。图4-22查看指定订单修改订单状态(取消,派送,完成)效果展示如图4-23所示。图4-23修改订单状态(3)详细设计和实现 点击“查看”按钮,页面发送ajax请求,将参数订单id提交给后端,后端接收到参数并进行处理,返回指定订单数据给页面,页面弹出会话框并显示指定订单信息。查看套餐信息分页列表,页面发送ajax请求,将分页查询参数(page、pageSize、订单号、起始日期、终止日期)提交到后端,参数订单号用于模糊查询,参数起始日期和终止日期用于对所选的日期区间的范围查询,后端控制器接收到页面传递的数据后,随即调用Service层进行查询操作。Service层进而调用Mapper层,与数据库进行交互以获取分页数据。一旦查询完成,Mapper层会将结果返回给Service层,随后Service层将查询到的分页数据传递给Controller。Controller接收到这些数据后,将其作为响应发送给前端页面。前端页面在接收到分页数据后,通过Element-UI的Table组件将其展示在页面上,以供用户浏览。点击“派送”或者“完成”按钮时,页面发送ajax请求,将参数订单id和状态码到后端,后端接收到数据并进行处理,正确操作数据库并反馈给页面[13]。退出登录模块(1)功能描述点击关机标志按钮,可以退出当前登录的用户。(2)页面效果展示退出登录效果展示如图4-25所示。图4-25退出登录(3)详细设计和实现点击按钮,直接销毁当前会话,清除Session中用户的id,然后直接跳转到登录界面。登录注册模块(1)功能描述用户根据手机号码和短信验证码登录或注册前台系统。(2)页面效果展示用户登录效果展示如图4-26所示。图4-26用户登录(3)详细设计和实现代码通过调用微信的接口来实现微信登录功能。使用了微信提供的开放接口来获取用户的openid。根据用户提供的登录凭证(code),调用微信接口获取用户的openid,然后根据openid判断用户是否存在,如果不存在则创建新用户,并返回用户信息[14]。菜品浏览模块(1)功能描述用户登录后跳转到系统首页,可以查看商家信息,菜品信息按照分类进行展示。(2)页面效果展示菜品浏览效果展示如图4-27所示。图4-27菜品浏览菜品详情效果展示如图4-28所示。图4-28菜品详情(3)详细设计和实现在前端,发出两次ajax请求,其中一个请求获得分类数据(菜品分类和套餐分类),另一个请求是获得分类下的菜品或者套餐。在后端,在controller层先从redis缓存中查询是否存在缓存数据,如果存在缓存数据直接将数据返回给前端页面,如果不存在缓存数据需要查询数据库,构造一个查询条件用分类id和起售状态(status)进行查询并添加了排序条件(sort),之后将查询到的菜品数据缓存到redis中,还设置redis中缓存的过期时间,最后把查询到的数据返回给前端页面[15]。购物车模块(1)功能描述用户选择好菜品或套餐加入购物车,并对购物车进行管理。(2)页面效果展示购物车效果展示如图4-29所示。图4-29购物车(3)详细设计和实现当用户点击“加入购物车”或“+”号按钮时,页面会发起一个ajax请求至后端。后端在接收到这一请求后,首先会设置用户的id,以明确当前操作是针对哪位用户的购物车数据。随后,后端会查询当前要加入的菜品或套餐是否已存在于购物车中。如果已存在,后端会将其数量增加1;如果不存在,后端则会将其添加到用户的购物车中。通过这样的逻辑处理,确保了购物车数据的准确性和一致性。用户点击购物车图标,页面发送ajax请求,请求后端查询购物车中的菜品和套餐,构造一个查询条件构造器,将当前用户的id和加入购物车的时间作为条件查询,查询到数据并返回给前端页面。用户点击减少或清空,减少是对购物车内菜品或套餐数量减1,如果为0则该条菜品或套餐从购物车消失;清空是对购物车内所有的数据进行删除,全部消失[16]。地址管理模块(1)功能描述用户可对自己的地址信息进行便捷管理。当需要修改或删除某个地址时,可点击书写按钮进行操作。此外,用户还可以将某一地址设为默认地址,这样在下单时将自动选择该地址作为收货地址。若需添加新的收货地址,用户只需点击“添加收货地址”并输入相应信息即可。这样的设计不仅提升了用户体验,也增强了地址管理的灵活性,输入地址信息后保存可以新增收货地址。(2)页面效果展示地址管理效果展示如图4-30所示。图4-30地址管理编辑地址信息效果展示如图4-31所示。图4-31编辑地址信息(3)详细设计和实现当用户点击“地址管理”功能时,前端会发起一个ajax请求至后端。后端在接收到这一请求后,会首先提取出用户的id信息,并基于这一id构建一个查询条件构造器。通过该构造器,后端会以用户id作为查询条件,并以修改时间作为排序依据,从数据库中检索出该用户的地址信息。查询到相关数据后,后端会将这些信息返回给前端页面进行展示。若用户选择点击“添加收货地址”,系统会导航至一个专门的输入信息页面。用户在此页面填写完地址信息并提交后,前端会发送请求至后端。后端在接收到这一请求后,会对提交的数据进行处理,并将其写入到address_book表中,从而完成新地址的添加操作。对于地址的编辑功能,用户点击书写按钮后会跳转到编辑地址页面。在这个页面上,前端会再次发送ajax请求至后端,请求中包含需要编辑的地址信息。后端在接收到这一请求后,会查询出对应的地址数据,并将其回显到编辑页面上。用户完成编辑后点击“保存地址”按钮,页面会以json格式将修改后的数据提交给后端。后端接收到这些数据后,会进行必要的处理并更新数据库中的相应记录,然后将处理结果响应给前端页面。此外,若用户希望删除某个地址,可以点击“删除地址”按钮。此时,页面会发送一个包含地址id的ajax请求至后端。后端在接收到这一请求后,会根据提供的id定位到相应的地址记录,并执行删除操作。完成删除后,后端会将处理结果响应给前端页面,以更新用户的地址列表。下单支付模块(1)功能描述在用户将菜品或套餐成功添加至购物车后,通过点击购物车内的“去结算”按钮,页面将自动导向订单确认页面。随后,用户只需点击“去支付”选项,页面会跳转至支付宝支付界面,以便用户完成支付流程。这样的操作流程设计,不仅简化了用户的购物流程,也提高了用户的使用体验。(2)页面效果展示下单支付效果展示如图4-33和图4-34所示。图4-33确认支付图4-34下单完成(3)详细设计和实现在订单确认页面中,有两个Ajax请求被发出,其中一个是后端获得目前已登录的用户的默认地址,另一个是后端获得目前已登录的用户的购物车数据,获取到这两个数据返回给订单确认页面并显示。点击“去支付”,发送ajax请求将购物车金额发送给后端,后端接收到数居生成一条订单记录并调用支付宝沙盒环境接口使用沙盒账号完成支付,支付完成后修改订单的状态,最后回调到下单成功界面。订单管理模块(1)功能描述用户可以查看自己的历史订单和最新订单。(2)页面效果展示效果展示如图4-35所示。图4-35订单管理(3)详细设计和实现点击“历史订单”可以查看用户的历史订单,前端发送ajax请求,后端接收到请求,构造一个查询条件构造器,将用户的id作为条件进行查询,并将下单时间为排序条件,将最新的订单排在前面。
系统测试在系统的整个开发流程中,持续的测试与修改工作显得至关重要。测试不仅是每个项目开发中不可或缺的环节,更是我们发现并改进系统不足的关键手段。通过测试,我们能够清晰地揭示系统存在的问题和不足之处,为后续的运行和维护提供便利。无论是编码中的错误还是遗漏的代码,测试都能够准确捕捉,并引导我们进行必要的改进和优化。不论是项目还是机器,使用过程中的不断测试都是必要的,它贯穿了整个开发周期。因此,测试-调试-再测试的过程,实际上构成了项目开发的核心循环。登录功能测试测试流程如下:首先,以管理员(即admin用户)的身份从登录界面进行登录操作,以检验系统的登录功能是否正常。同时,我们也需要验证管理员用户是否成功建立了与系统的连接。关于管理员登录的测试结果,详细数据已列于表5-1中。表5-1测试结果表测试用例(用户名、密码)预期结果测试结果(“”,“”)用户名不能为空提示:输入用户名(“admin”,“”)密码不能为空提示:输入密码(“admin”,“123456”)密码错误提示:输入正确密码(“admin”,“123123”)登录成功登录成功,跳转到员工管理页面员工管理测试测试流程如下:管理员(admin用户)首先通过登录界面进行登录操作,随后对系统的员工管理功能进行测试。此次测试的结果已详细记录在表5-2中。表5-2测试结果表测试用例预期结果测试结果添加用户(zhangsan、张三、16638980885、男添加成功,返回员工列表显示员工的信息。添加成功,返回员工列表显示员工的信息添加用户(“”、张三、16638980885、男添加失败提示框“请输入账号”禁用员工(id:1591235383657455618,status:0)禁用成功,该用户不能在登录系统禁用成功,客户端中该用户操作栏中“禁用”按钮变为“启用”按钮修改员工(“张三”修改为“李四”)修改成功员工姓名“张三”改为“李四”修改员工(修改为“412721200”)修改失败提示框“身份证号不正确”套餐管理测试测试流程简述如下:首先,超级管理员(admin用户)通过登录界面进行身份验证并登录系统。随后,超级管理员对系统的套餐管理功能进行测试,以验证其性能和稳定性。本次测试的结果已详细记录在表5-3中,以供后续分析和参考。表5-3测试结果表测试用例预期结果测试结果添加套餐(“精品四人餐”、“四人餐”、“254”,菜品两道,图片一张,“好吃划算”)添加成功,返回套餐列表显示套餐的信息。添加成功,返回套餐列表显示套餐的信息。添加用户(“”、“四人餐”、“254”,菜品两道,图
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 危险品包装资质认证协议
- 电商数据合规使用协议
- 宽带接入装维员岗前实操水平考核试卷含答案
- 车辆档案表(一车一档标准版)
- 黄酒培菌工安全演练强化考核试卷含答案
- 地毯设计师安全理论测试考核试卷含答案
- 木地板制造工安全素养强化考核试卷含答案
- 金属材酸洗工安全管理竞赛考核试卷含答案
- 2026年秋季开学学生眼保健操规范课件
- 混合气潜水员岗中基础能力考核试卷含答案
- 泄漏点排查管理制度
- 2025泰和安消防产品选型手册
- 品牌代播合同协议书模板
- 展示空间设计-全套课件
- 楼房承重检测报告模板
- 铁路客运规章全套教学课件
- JBT 7041.3-2023 液压泵 第3部分:轴向柱塞泵 (正式版)
- 天下3元魂珠计算器
- 出院小结模板-2
- 缠论公式(最完美自动画笔公式)主图
- 2023年广东广州南沙区万顷沙镇招聘编外人员23人笔试模拟试题及答案解析
评论
0/150
提交评论