基于SpringBoot的美食外卖系统设计与实现_第1页
基于SpringBoot的美食外卖系统设计与实现_第2页
基于SpringBoot的美食外卖系统设计与实现_第3页
基于SpringBoot的美食外卖系统设计与实现_第4页
基于SpringBoot的美食外卖系统设计与实现_第5页
已阅读5页,还剩45页未读, 继续免费阅读

付费下载

下载本文档

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

文档简介

[5]。本系统的前端主要由视图展示层表示,也就是用户或者管理员所能看到的页面,而后端处理数据也是由控制器,业务逻辑层,数据交互层组成,后端一般是不可见的,只有开发人员才可见。而数据交互则用的是MyBatis以及它的伙伴MyBatisPlus作为数据持久层去交互数据库的数据。如图3-6表示本系统的整体架构。图3-6系统整体架构从图3-6分析可以知道,本系统总体分类数据端,前端,后端三个结构,前端主要就是视图表示层和用户,而后端则有业务逻辑层,控制层以及数据持久层。数据端也就是MySQL与持久性框架的数据交互。3.2.2系统功能设计根据上面所描述的系统总体架构来看,本系统也就分为前端和后端。下面先具体介绍移动网页端。移动网页端具体模块如图3-7所描绘。图3-7移动网页端模块根据图3-7展示来看,移动网页端具有以下模块:a)登录模块:在本模块里,游客或者普通用户可以输入手机号,进而获取验证码,而验证码缓存策略则是存储在Redis缓存中,五分钟过期,用户将在手机上收到短信形式的验证码,输入验证码之后,验证通过将登录成功。而未注册的游客将直接注册为普通用户。b)个人信息模块在个人信息模块里,普通用户可以点击个人信息图标去查看个人信息,可以对其收货地址进行增加,修改,删除,或者切换默认地址。用户也可以查看所下的历史订单,未支付的可以去支付,这里也是有一个定时任务管控,如果未支付超过5分钟,将会修改订单为已取消。支付过后,但是商家还未出货,用户可以选择退款原因申请退款。订单完成之后还具有再来一单的功能。订单取消,用户还可以重新下单。这两个功能点击之后,购物车将重新加载订单数据。c)商品首页浏览模块在首页模块里,游客或者普通用户将可以看到丰富多样化的菜品,当然本菜品数据由于数量过多,避免引起高频查,本系统采用了Redis缓存机制缓存菜品,进而降低的数据库的查询压力。用户可以随意点击菜品,会弹出相应的详情界面,展示菜品的详细信息。本系统也是希望用户在这里遇见自己心仪的美食,从而下单并品尝到美食。d)购物车模块从本模块的名字上可以知道,用户拥有了选购下单的地方,在首页,用户可以点击商品旁边的选择规格选择菜品规格之后点击加号或者加号,加入到购物车中,用户在选择过程中如果有什么更好的选择,本系统也提供在菜品右边可以减去,购物车也会随着响应数据,当然购物车里边也可以减去菜品。用户还具有清空购物车的功能,如果选择满意的话,可以点击去下单,随后可以选择收货地址或者填写备注,点击去下单,本系统对接的支付宝沙箱支付,用户可以扫码或者输入账号支付订单,最后用户就可以耐心等待美食的到来了。c)分类模块本模块在处理数据时是和菜品分开的,但是在移动网页端将和菜品展示在同一首页,用户可以根据分类去寻找菜品,也是加强了用户体验感。(2)Web管理端具体模块如图3-8所描绘。图3-8Web管理端模块根据图3-8展示来看,Web管理端具有以下功能模块:a)员工管理模块本模块是对员工的姓名,员工的账号,员工的手机号以及员工的状态进行管理的模块,本模块设置有权限设置,员工只可以查看本模块的信息,没有任何修改添加权限。而本模块管理员拥有最高权限,可以点击添加员工进行添加员工,通过登记员工姓名,手机号,性别,账号以及身份证号点击保存此员工就有进入后台的账号了,还可以保存继续添加,这样可以一直添加员工。管理员可以修改员工姓名,员工手机号等。管理员还可以禁用或者启用此员工账号,禁用之后员工将登录收到限制,不能进入后台。b)分类管理模块本模块是对分类的名称,分类的类型,分类的排序规则进行管理的模块,员工或者管理员通过添加菜品分类或者添加套餐数据来进行管理移动网页端分类的展示,还可以修改排序规则,规定哪一样分类在高或者在低。如果哪个分类不存在了还可以删除,如果此分类的下级有菜品存在的话,是不能删除的。c)套餐管理模块本模块是对套餐的名字,套餐的展示图片,套餐的分类,套餐的价格以及套餐的售卖状态等进行管理的模块,员工点击搜索可以根据套餐名称进行搜索,点击添加套餐,可以添加套餐名称,分类,价格,套餐里的菜品,展示的图片等进行添加,可以进行保存或者保存继续添加。还可以修改餐名称,分类,价格,套餐里的菜品,展示的图片等,还可以批量停售和起售等。最后也可以进行直接删除。d)菜品管理模块本模块是目前数据最多的模块,存入了各个类别系列的菜品。员工可以输入菜品名称进行搜索菜品数据。点击添加菜品可以输入菜品名称,菜品分类,菜品价格,菜品的规格,菜品展示图片等,然后点击保存,系统将验证是否输入必填字段或者是否输入正确,如果验证通过将保存成功。点击批量禁售,起售菜品,移动网页端刷新之后将会不再展示停售的菜品。哪一个菜品发生变化,还可以进行修改。对菜品的管理非常的人性化。e)订单管理模块订单管理是系统最重要的一部分,因为将牵扯到门店的收入与销量,是极为重要的。这一模块也是主要展示实时订单的,也是平时经常要用到的,此模块提供订单搜索功能,可以通过输入订单号或者日期进行搜索订单数据。此模块主要管控的就是订单状态,如果后厨已经在做了,可以点击出货修改状态,此状态之后用户将不能进行申请退款,如果店内负责配送的员工已经准备出发派送,可以点击派送,状态更改未正在派送等实时管理订单的状态。本模块也是有一个退款管理,用户申请的退款将在这里进行处理,如果是24小时内的订单,员工核实之后点击退款将可以进行退款。退款之后将会修改状态为已退款。3.3数据库设计数据库设计就是根据需要分析以及概要分析所得出的需要哪些子段进而进行数据交互,是系统连接数据库所必须的设计。概念设计就是约束数据具有哪些属性信息,是设计数据表所需要重要的一次概念化设计。普通用户信息实体图设计如下图3-9所示。图3-9普通用户信息实体图购物车信息实体图设计如下图3-10所示。图3-10购物车信息实体图收货地址信息实体图设计如下图3-11所示。图3-11收货地址信息实体图员工信息实体图设计如下图3-12所示。图3-12员工信息实体图分类信息实体图设计如下图3-13所示。图3-13分类信息实体图菜品信息实体图设计如下图3-14所示。图3-14菜品信息实体图订单信息实体图设计如下图3-15所示。图3-15订单信息实体图退款信息实体图设计如下图3-16所示。图3-16退款信息实体图套餐信息实体图设计如下图3-17所示。图3-17套餐信息实体图由上述可知每一个表具有的属性,表间关系如图3-18所示。图3-18普通用户总体关系图由于员工可以管理菜品,订单,套餐,分类,退款,所以员工表和其它表间关系如下图3-19所示。图3-19员工管理总体关系图

4详细设计与实现本章要介绍的是本系统的详细设计与实现部分,将对系统进行具体架构的设计以及代码实现功能模块。4.1系统开发环境与实现架构4.1.1系统环境配置本系统所采用的环境配置如下表4-1表示。表4-1系统环境配置操作系统Win10及以上服务器阿里云云服务器数据库MySQLServer、Redis开发软件IDEA2022浏览器Edge、Chrome底层配置Jdk1.8,Node.Jsv16.16.04.1.2系统逻辑架构本系统主要就是Java高级编程语言作为主要设计语言,采用了主流的SpringBoot框架以及MyBatisPlus持久性框架进行逻辑设计。本次系统逻辑架构主要分为,控制层,服务层,数据持久层,配置层。如图4-1所表示。图4-1系统逻辑架构图由本图可知,用户进入浏览器之后,访问系统的任何界面,只要牵扯到数据问题,前端都会用Ajax异步发送http请求到后台,请求首要经过的就是配置层,这里有一些拦截器和过滤器或者一些Web的路径配置需求,这一层可以过滤或者拦截一些非法请求到我们的后台。之后将进入控制层,控制层控制本次请求需要请求哪些服务。而服务层将具体实现这请求要请求到的数据。进而让数据持久层通过数据库将数据返回。此时数据将逐步返回,展示用户可见的数据。4.2数据库连接由于硬件阻碍,本系统将数据库的源存放在阿里云云服务器里,这样可以节省本地的运存空间,当然也是可以随时随地的查看维护数据,这也是部署在服务器上的好处。本系统采用的Druid连接池,阿里的高性能产品,可实现亚秒级查询,实时数据注入,可扩展的PB级存储等优点。4.3短信验证登录与注册在浏览本系统的移动网页端的游客,可以通过手机号进行登录,系统将会自动把新用户注册为普通用户。如表4-2描述。表4-2登录流程描述表流程名称用户登录/注册流程编号TakeOut001涉众利益用户:了解要登录的是什么,接收的是什么。后台管理员(商家):了解新增的用户是否合法,确保菜品数据正常。前置条件用户拥有正确的手机号基本路径1.用户输入手机号2.用户点击获取验证码3.后台接收到请求,处理请求。4.后台携带用户输入的手机号向腾讯短信平台发起请求。5.腾讯短信平台将按照模板规则进行验证码发送给用户。6.用户接收到短信验证码。7.用户输入验证码,点击登录8.后台校验验证码是否输入正确9校验成功,用户登录成功。字段列表用户登录信息包括:用户手机号,短信验证码,用户状态业务规则手机号不能为空手机号必须符合规则验证码不能为空验证码必须输入正确手机号确保是用户自己的非功能需求验证码过期时间为5分钟执行者用户用户在进行登录注册时,输入手机号,系统会校验手机号输入是否合法,如果合法用户可以点击发送验证码,用户输入的手机号可以接收到验证码的短信,用户输入验证码进行登录,如果输入的正确,系统校验成功,用户就可以登录成功了。前提是验证码必须是在五分钟之内输入的,否则会引起校验验证码失败。此时用户需要重新发送验证码。如果是新用户,第一次登录成功时,系统会自动将其注册为新用户。登录/注册类图如图4-2所示。图4-2登录/注册类图由图4-2可知,登录注册管控的控制器时UserController,Service接口是IUserService,实现类是UserServiceImpl,Dao数据持久层是UserDao。登录注册主要是用户,登录类以及腾讯短信平台对象之间的交互,具体时序图如下图4-3所表示。图4-3登录时序图4.4购物车用户遇见心仪的美食之后,可以加入购物车,还可以清空购物车,选择可以了感觉可以下单了,还可以点击去下单。具体对于购物车的描述如表4-3所示。表4-3购物车流程描述表流程名称加入购物车流程编号TakeOut002前置条件用户已经登录基本路径1.用户浏览菜品2.用户选择菜品规格3.用户选择口味4.点击加号加入购物车5.用户选择套餐6.点击加号加入购物车7.用户点击清空购物车可以清空购物车字段列表用户Id,菜品Id,菜品数量,菜品规格,套餐Id业务规则用户Id不能为空菜品Id不能为空菜品/套餐数量至少为1执行者用户用户在浏览菜品或者套餐数据时,如果遇到心仪的可以选择规格之后加入购物车,如果菜品此时状态发生变化,用户将加入购物车失败。用户选择完毕之后,可以点击去下单,然后将生成订单。购物车类图如图4-4所示。图4-4购物车类图由图4-4可知,购物车的控制器为ShoppingCartController,接口是IShoppingCartService,实现类是ShoppingCartService,Dao数据持久层是ShoppingCartDao。购物车是用户和购物车等对象之间的交互,购物车时序图如下图4-5所示。图4-5购物车时序图4.5沙箱支付本次设计对接的支付是支付宝提供的沙箱支付,此支付也是专门为开发人员提供的虚拟支付功能,也可以体现出具体的支付流程。具体支付流程描述,如表4-4所示。表4-4沙箱支付流程描述流程名称沙箱支付流程编号TakeOut003前置条件用户已经登录基本路径1.用户提交订单2.沙箱支付宝返回支付页面3.用户扫码或者输入账号进行支付4.用户输入密码5.支付成功字段列表支付信息包含:用户Id,订单Id,支付金额业务规则用户Id不能为空订单Id不能为空执行者用户用户在选购完菜品之后,点击下单,会生成订单,再点击支付,将会跳转到支付页面。沙箱支付类图如下图4-6所示。图4-6沙箱支付类图由图4-6可知,登录注册管控的控制器时AliPayController,Service接口是IAliPayService,实现类是AliPayServiceImpl,Dao数据持久层是OrderDao。沙箱支付是用户,订单等对象之间的交互。具体时序图如下图4-7所示。图4-7沙箱支付时序图用户在进行支付时,需要封装好支付接口所需的对象,然后将此封装好的对象传入沙箱支付宝接口,创建支付单。用户在支付完成之后,沙箱支付宝也将会发送一个异步通知(一般接收支付状态,支付单号),系统根据异步通知进行实时更新订单状态。如果此时支付宝接口超时等情况出现,系统也会有一个定时查单接口,定时时长为5分钟,不会造成本地和远程支付状态不同步的情况。4.6云服务器部署本次也是用到了阿里云服务器,Redis和数据库均部署在了阿里云服务器上,这样也是大大节省了本地电脑的内存空间。而且部署在云服务器上,可以大大提高相应速度。具体如下图4-8,4-9所示。图4-8服务器监控图图4-9服务器端口规则图4.7系统实现本小节主要展现项目的具体实现页面,通过图示来展现出系统的整体实现大纲。(1)登录/注册模块。游客或者用户在进行登录时,需要先填写正确手机号,获取验证码,输入的手机号将会获取到相关验证码信息,用户输入得到的验证码,经系统程序校验通过,用户即可以进入到首页浏览菜品。需注意的是,第一次登录的用户,在进行登录成功后,系统将会自动将用户信息注册进数据库。具体页面如下图4-10,4-11,4-12,4-13展示。图4-10登录页面图图4-11获取验证码信息图图4-12输入验证码图图4-13登录成功图(2)购物车模块。用户在登录成功后可以浏览菜品或者套餐选择规格加入购物车并点击查看购物车,然后可以在购物车添加或删除已选入商品的数量。在确定所有商品的规格后可点击下单。具体页面如下图4-14,4-15,4-16所示。图4-14选购菜品图图4-15查看购物车图图4-16进入下单页面(3)订单模块。在订单模块用户可查看历史订单包含对部分已购买商品进行退款的申请以及对未支付订单完成支付。同时还支持用户用户对历史订单中的商品一键重新购买(再来一单),订单中商品会自动重新放到购物车中。具体订单模块页面如下图4-17,4-18,4-18,4-19,4-20,4-21,4-22,4-23,4-24所示。图4-17历史订单页面图4-18退款申请按钮图图4-19退款申请页面图图4-20再来一单按钮图图4-21重新购买按钮图图4-22跳转购物车图图4-23去付款按钮图图4-24用户付款图(4)下单模块。下单模块的流程是进入支付页面,扫码进行付款,支付宝沙箱异步回调通知给后台,下单成功,用户返回页面。具体页面如下图4-25,4-26,4-27,4-28所示。图4-25点击去支付页面图4-26支付宝沙箱支付页面图4-27用户扫码付款页面图4-28用户下单成功页面(5)Web管理端模块。本次模块包含员工账号管理,菜品分类管理,菜品管理,套餐管理,订单管理等。员工账户管理包含添加员工信息,修改员工信息,禁用/启用员工账号,编辑员工信息功能。如图4-29,4-30,4-31所示。图4-29添加员工图图4-30员工列表图图4-31修改员工图菜品分类包含添加分类,修改分类,删除分类功能。如图4-32,4-33,4-34所示。图4-32添加菜品分类图图4-33修改分类图图4-34分类列表菜品管理包含添加菜品,修改菜品,删除菜品,搜索菜品等功能。如图4-35,4-36,4-37所示。图4-35添加菜品图图4-36修改菜品图图4-37搜索菜品图套餐管理包含添加套餐,修改套餐,删除套餐,搜索套餐等功能。如图4-38,4-39,4-40所示。图4-38添加套餐图图4-39修改套餐图图4-40搜索套餐图订单管理包含修改订单状态,查看订单信息,搜索订单,对订单退款等功能。如图4-41,4-42,4-43所示。图4-41查看订单信息图图4-42搜索订单图图4-43订单退款图5系统测试在我们测试系统的时候,遇到Bug是不可避免的,这些Bug会引起一些系统总性能,系统稳定运行的一系列问题。所以系统测试是整个系统开发中不可或缺的,本章将对本系统进行详细的测试。5.1测试环境配置本次采用的配置环境如表5-1所示。表5-1测试环境配置表客户端Pc主机硬件戴尔G3系统Win10软件Edge、Chrome服务端Web服务器服务器选型阿里云轻量级服务器系统Centos7数据库数据库选型MySQLServer5.2系统测试与分析5.2.1功能测试本小节主要是对本系统的功能模块进行测试,其中移动网页端将对登录/注册模块,订单模块进行测试。同时也会对Web管理端的用户管理,菜品管理等做出相关测试。本系统使用包含测试类型,测试目的,测试角色,应用场景,前置条件,数据输入,输出结果及测试结果的测试用例格式。测试的角色分别是普通用户,管理员或者员工。本次采用功能测试和性能测试两个测试类型进行测试。具体测试如下:(1)登录/注册模块。具体测试用例设计如下表5-2所示。表5-2登录/注册测试用例表测试编号001测试类型功能测试测试目的测试移动网页端是否正常登录/注册测试角色普通用户/游客前置条件用户进入登录/注册页面操作场景数据输入预期结果测试结果用户输入手机号,点击获取验证码。数据:正确的大陆+86手机号用户手机收到验证码用户手机正确到验证码用户输入验证码,点击登录数据:四位数验证码输入验证码,登录成功,未注册的用户自动注册成功用户输入验证码。成功登录到首页,未注册的用户,将直接注册成功。(2)订单模块。订单模块测试用例如下表5-4所示。表5-4订单模块测试编号003测试类型功能测试测试目的测试订单模块功能是否可以正常使用测试角色普通用户前置条件用户已经登录操作场景数据输入预期结果测试结果用户可查看历史订单数据:用户订单信息用户订单信息成功展示用户订单信息成功展示用户点击退款申请数据:退款订单信息展示退款界面并生成退款申请单成功展示退款界面并生成退款申请单用户点击去付款数据:订单信息展示付款页面成功展示付款页面用户重新购买/再来一单数据:订单数据订单数据重新加载到购物车里订单数据重新加载到购物车里(5)Web管理端模块。本次将进行模块全面测试,将依次进行员工管理,分类管理,菜品管理,套餐管理,订单管理等页面进行测试,本次测试将采用统一测试模式。测试用例如下表5-6所示。表5-6Web管理端测试用例总表测试编号005测试类型功能测试测试目的测试Web管理端所有模块功能是否可以正常使用测试角色员工/管理员前置条件登录成功操作场景数据输入预期结果测试结果管理员管理员工数据:员工信息添加员工成功,修改员工成功,禁用/启用员工账号成功,编辑员工成功添加员工成功,修改员工成功,禁用/启用员工账号成功,编辑员工成功管理员理菜品数据:菜品信息添加菜品成功,修改菜品成功,删除菜品成功,搜索菜品成功添加菜品成功,修改菜品成功,删除菜品成功,搜索菜品成功5.2.2性能测试本小节通过运行时间,数据响应速度,服务器处理速率和系统承受压力等方面进行测试。测试用例如下表5-7所示。表5-7性能测试用例表测试编号001测试类型性能测试测试目的测试美食系统的性能测试角色测试人员前置条件系统成功部署,可以正常访问操作场景数据输入预期结果测试结果系统进行长时间运行数据:暂无运行正常运行正常用户登录进首页响应时长数据:暂无响应速度<2秒处理速度<2秒与预期保持一致用户下单处理速度数据:暂无响应速度<4秒处理速度<4秒与预期保持一致经测试通过,确定系统运行正常,性能表现优秀。下面将主要对登录接口进行压力测试,如下表5-8所示。表5-8压力测试用例表接口测试项服务器占用情况用户TPS(次/s)响应时间(ms)CPUDB登录接口310405%2%520551

温馨提示

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

评论

0/150

提交评论