基于Springboot的在线订餐系统设计与实现_第1页
基于Springboot的在线订餐系统设计与实现_第2页
基于Springboot的在线订餐系统设计与实现_第3页
基于Springboot的在线订餐系统设计与实现_第4页
基于Springboot的在线订餐系统设计与实现_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

Ⅰ基于Springboot的线上订餐系统设计与实现摘要当今世界,互联网以及和互联网有关的行业都在不断的发展,也在持续走进人们的生活,在此趋势下人们对于通过互联网解决生活问题的需求愈来愈多,本文考虑到了这些情况后做出了该订餐系统。本系统选择了MySQL作为主要存储单元。采用了MyBatis框架技术优化了与系统数据库有关功能的开发。并且使用了SpringBoot框架技术完成了系统的开发,从而实现了本在线订餐系统的全部功能。通过本系统员工可以实现菜品分类管理,套餐管理,餐品管理以及订单管理。用户可以实现地址信息管理以及购物车功能。经过测试后,测试结果证明该系统操作易用,简单友好,有着较高的使用价值。关键词:线上订餐系统;动态数据库管理;SpringBoot框架技术;MyBatis框架技术

ⅣⅣ目录第1章绪论 11.1研究目的和意义 11.2国内外研究现状 11.3主要研究内容 2第2章系统分析 32.1可行性分析 32.2需求分析 5第3章系统设计 53.1登录模块设计 53.2订餐模块设计 63.3订餐模块设计 73.4数据库模块设计 83.5数据库表设计 9第4章系统实现 154.1登录模块设计 154.2员工管理模块 164.3分类管理模块 184.4菜品管理 234.5套餐管理 254.6购物车 284.7订单管理 304.8用户信息管理模块 32第5章系统测试 35结论 38参考文献 39致谢 41保定理工学院本科毕业设计[1]。系统模块如图3.1所示。图3.1系统模块3.1登录模块设计登录模块主要完成了用户以及管理员的登录,该模块分为管理员登录模块和普通用户登录模块两种登陆方式,主要是根据用户的角色选择不同的登陆界面进行登陆。管理员在前端输入相应的用户名、密码。数据填写完整之后,首先对用户名进行验证。如果用户名查询失败,则提示用户不存在;如果用户名正确则再进行密码验证,将输入的密码和数据库中保存的密码进行比对,不一致则提示密码输入错误。如果密码输入正确则跳转到相应的主界面。用户登录则在前端输入手机号点击发送验证码后由阿里云服务器发送短信进行验证 若不存在该用户则向数据库中保留该用户信息若存在则正常进行登录,登录成功后采用Session存储信息。登录流程如图3.2所示。图3.2登录执行流程3.2订餐模块设计3.2.1购物车登录成功后,用户进入主菜单界面,可以看到根据菜品分类和套餐分类显示的菜品,然后单击添加按钮将菜添加到用户的购物车。同时,当用户查看购物车时,购物车中具有刚刚添加的相应菜品。并且可以选择菜品的口味,当点击购物车中的结算按钮时,将购物车中的数据提交到后端。之后生成相应的订单。具体的执行过程是在前端单击按钮时执行相应的Ajax 函数,通过相应的 URL 将数据传送到后台的控制器层调用相应的方法,直到相应的结果返回到前端界面REF_Ref132475001\r\h[13]。3.2.2订单模块订单由用户提交后生成,完成该模块需要存储订单号、下单时间、订单状态、商品信息、收货地址、配送方式、价格、快递单号等信息。本系统可以提供给用户查看历史订单的功能,每个订单均有一个唯一的订单号作为标识。管理员可以对订单进行操作,如选择完成订单、选择派送商品。3.3菜品管理模块当用户成功登录进入主界面,该界面执行 Ajax 函数以访问后台菜单数据,并在前端显示菜单结果。同时系统将后台数据发送到前端。后台数据主要包括每道菜的详细 ID、名称、价格、数量等。该界面显示所有的菜品以及对应的套餐信息。在后台系统中设置好相应的信息后,用户端才可以看到被设置后的信息。管理员可以通过此模块完成菜品的修改,起售和停售,设置菜品的口味还有设置套餐设置每种套餐包含的菜品同时管理员可以在此界面完成对菜品的上架还有下架、添加口味。为菜品添加标签,使用户更方便地选择自己需要的菜品,如素菜、荤菜、辣菜等标签。支持员工对菜品进行批量操作,如批量删除菜品、批量修改菜品等。菜品修改流程如图3.3所示。图3.3菜品更新流程3.4数据库模块设计 数据库的设计流程需先经过需求分析确定用户,之后再进行概念设计依据需求描述得到实体-联系模型,因此得到以下实体联系图。1、用户实体,包括用户的性别,手机号,id,姓名,账号状态。如图手机号账号状态姓名Id用户性别3。3所示。手机号账号状态姓名Id用户性别图3.3用户实体图员工用户名密码手机号性别账号状态2、员工实体,包括员工的用户名,密码,手机号,性别,账号状态。如图3.4所示。员工用户名密码手机号性别账号状态图3.4员工实体图

菜名菜品价格在售状态图片备注3、菜品实体,包括菜品的菜名,图片备注,在售状态,价格。如图3.5所示。菜名菜品价格在售状态图片备注图3.5菜品实体图3.5数据库表设计 在根据以上实体图做出分析后依据实体联系使用框架创建出相应的实体类,并且根据在框架中创建的实体类以及在项目中的功能还需要完成数据库表的创建。在项目中链接数据库并且设置表,如表3.1所示。表3.1数据库表序号表名说明1Worker员工表2cg分类表3caidan菜品表4Seatmeal套餐表5User用户表6dizhi地址表7Cart购物车表8Dds订单表

1、用户表设计用户表的设计需要添加Id,Name,Phone,Sex等。在用户登录时需要后端在数据库中根据用户输入的信息与数据库中这些字段进行比对若正确则返回查询后结果,同时还设置了Status字段,该字段用于判断账户是否为启用状态若为否则用户已经被封禁不能进行登录。同时有新用户注册时则会根据以上字段在持久层中进行相应操作将数据存入数据库中保存新用户信息并且将Status字段设置为1即为启用状态。字段名称类型长度字段说明是否为空Idbigint20主键NOTNULLnamevarchar50姓名NOTNULLphonevarchar100手机号NOTNULLsexvarchar2性别NOTNULLid_numbervarchar18身份证号NULLavatarvarchar500头像NULLstatusint11状态NULL 表3.2用户表 2、员工表设计在管理员表设计时添加了Id,Name,Username,Pwd,Phone,Sex等字段在保存员工的信息时系统需要将这些信息持久化至数据库中保存与员工相对应的信息,同时在员工登录时系统需要验证输入的信息与数据库中Username,Pwd两个字段在系统中是否有对应,若错误则在前端返回结果,成功则保存信息返回对应结果使员工正常登陆。同时还需要设置Status,Create_Time,Update_Time,Create_User等字段,这些字段将分别记录员工的启用状态,任用时间,信息更新时间。字段名称类型长度字段说明是否为空idbigint20主键NOTNULLnamevarchar32姓名NOTNULLusernamevarchar32用户名NOTNULLpwdvarchar64密码NOTNULLphonevarchar11手机号NOTNULLcreate_timedatetime创建时间NOTNULL表3.3员工表

续表3.3员工表字段名称类型长度字段说明是否为空statusint11状态NOTNULLsexvarchar2性别NOTNULLupdate_userdatetime修改人NOTNULLcreate_userbigint20创建人NOTNULLupdate_timedatetime更新时间NOTNULLid_numbevarchar18身份证号NOTNULL3、菜品表设计菜品表的设计需要添加Id,Name,Cg_Id,Price等字段在新建菜品时需要根据这些字段存入相关信息并保存到数据库中。在用户端显示菜品时则需要根据以上字段在数据库中进行查找并且显示相关数据。该表中还需要设置Status,Sort,Create_Time,Update_Time等字段用于记录菜品的停售与起售状态,菜品的创建时间和更新时间。字段名称类型长度字段说明是否为空idbigint20主键NOTNULLnamevarchar64菜品名称NOTNULLcg_idbigint20菜品分类idNOTNULLpricedecimal102菜品价格NULLcodevarchar64商品码NOTNULLdescriptionvarchar400描述信息NULLstatusint11起停售状态NOTNULLsortint11顺序NOTNULLcreate_timedatetime创建时间NOTNULLupdate_timedatetime更新时间NOTNULLimagevarchar200图片NOTNULL表3.4菜品表

4、订单表设计订单表的设计则需要创建Id,Name,Image等字段,在用户要求显示订单时后端则会根据信息在数据库中查找这些字段显示相匹配的信息。Number,Amount字段则在购物车中和订单中要求显示菜品数量和金额显示将对应信息持久化至数据库中保存订单信息。表3.5订单表字段名称类型长度字段说明是否为空idbigint20主键NOTNULLnamevarchar50名字NOTNULLimagevarchar100图片NULLDd_idbigint20订单idNOTNULLcaidan_idbigint20菜品idNULLsetcp_idbigint20套餐idNULLcaidanflavorvarchar50口味NULLnumberint11数量NOTNULLamountdecimal10,2金额NOTNULL5、地址表设计地址表设计需要创建Id,Detail,User_Id等字段,在用户保存地址信息时必须遵照这些在数据库中字段的要求进行录入信息,City_Code,City_Name等字段则会记录用户录入的详细地址信息。表3.6地址表字段名称类型长度字段说明是否为空idbigint20主键NOTNULLuser_idbigint20用户idNOTNULLprovince_codevarchar12省级区划编号NULLprovince_namevarchar32省级名称NULLcity_codevarchar12市级区划编号NULLcity_namevarchar32市级名称NULLdistrict_codevarchar12区级区划编号NULL字段名称类型长度字段说明是否为空Detailvarchar200详细地址NULLdistrict_namevarchar32区级名称NULL续表3.6地址表6、分类表设计该表用于记录菜品分类和套餐分类信息。需要创建Id,Type,Name等字段,用于记录菜品或套餐的名称类型等信息,Create_Time,Update_User等字段的设置则记录了分类中创建人和修改人的信息,Sort字段则记录了分类的排序在展示时会按照该字段信息进行排序。表3.7分类表字段名称类型长度字段说明是否为空idbigint20主键NOTNULLtypeint(11)11类型NULLnamevarchar64分类名称NOTNULLsortint(11)11顺序NOTNULLcreate_timedatetime创建时间NOTNULLupdate_timedatetime更新时间NOTNULLcreate_userbigint20创建人NOTNULLupdate_userbigint20修改人NOTNULL7、套餐表设计套餐表的设计设置了套餐的Status字段用于记录启停售状态以及设置了Cg_Id字段用于记录所属套餐分类,同时设置了Image,Price,Description等字段用于记录套餐的图片,价格,描述等信息。表3.8套餐表字段名称类型长度字段说明是否为空Idbigint20主键NOTNULLcg_idbigint20分类idNOTNULL

续表3.9套餐表字段名称类型长度字段说明是否为空Pricebigint20价格NOTNULLDescriptionvarchar255描述NOTNULLImagevarchar255图片NULLNamebigint64名称NOTNULLstatusint11状态NOTNULL8、购物车表Gwc。购物车表设置了购物车模块需要的菜品Price,Image,Number等字段用于记录购物车中商品的详细信息。设置了Name,User_Id等字段用于区分不同用户的购物车信息。表3.9购物车表字段名称类型长度字段说明是否为空idbigint20主键NOTNULLNamevarchar50订单名NULLImageint(11)11图片NULLuser_idbigint20下单用户NOTNULLNumberInt11数量NOTNULLPricebigint20价格NOTNULLCp_idbigint20菜品idNULLTc_idbigit20套餐idNULL

第4章系统实现4.1登陆模块设计该功能用于处理登录请求,实现登录的方法。在该部分的登录流程中会首先由前端页面查看填入框内信息是否合法如图4.1所示,系统会校验用户名和密码。在该过滤器中后端会拦截所有请求,需要放行后才能登录,后台等页面同时声明了只有在用户输入正确信息时才能放行并返回相应的页面,同时将信息存入Session,当页面做出改动时需要向该Session验证数据是否正确,并且在Session中存取数据。由此维护了系统的安全性以及持久性和可用性。图4.1登录校验该部分关键代码为:publicR<Emp>login(HttpServletRequestrequest,@RequestBodyEmpEmp){Stringpwd=Emp.getpwd();pwd=DigestUtils.md5DigestAsHex(pwd.getBytes());LambdaQueryWrapper<Emp>queryWrapper=newLambdaQueryWrapper<>();queryWrapper.eq(Emp::getUsername,Emp.getUsername());Empemp=EmpService.getOne(queryWrapper);if(emp==null){returnR.error("登陆失败");}if(!emp.getpwd().equals(pwd)){returnR.error("登陆失败");}if(emp.getStatus()==0){returnR.error("账号禁用");}4.2员工管理模块在完成登录后选择员工模块时系统会校验权限,若系统在确认登陆者为管理员后会显示相关的操作权限,如编辑和禁用员工。管理员可在此模块完成编辑员工信息如图4.2所示,在点击编辑员工后则会跳转到编辑员工信息页面如图4.3所示,此时系统会验证账号,姓名,手机号等输入框内信息是否完整同时会验证身份证输入框内信息是否正确若正确则点击保存后会将相关信息存入数据库中同时更新该员工的更新时间字段。在该模块中添加员工如图4.4所示,该页面会验证手机号与身份证号码是否正确在均为正确后才会将信息存入数据库中,若登陆者为普通员工而非管理员,则系统不会提供禁用其他员工权限如图4.5所示。图4.2管理员工界面图4.3修改员工图4.4添加员工图4.5员工添加成功该部分关键代码为:publicR<String>update(HttpServletRequestrequest,@RequestBodyempemp){(emp.toString());longid=Thread.currentThread().getId();LongempId=(Long)request.getSession().getAttribute("emp");emp.setUpdateTime(LocalDateTime.now());emp.setUpdateUser(empId);empService.updateById(emp);returnR.succ("信息修改成功");publicR<emp>getById(@PathVariableLongid){("查询员工信息...");empemp=empService.getById(id);if(emp!=null){returnR.succ(emp);}returnR.error("没有查询到信息");}4.3分类管理模块4.3.1菜品分类添加在该订餐系统的平台管理中可以为菜品的分类或进行信息管理。同时,当员工在后台系统中在添加一个菜品时必须选择一个菜品类别进行添加,并且在添加完成后,系统还会把数据记录入系统,并且保存到数据库中。添加菜品分类如图4.6所示,添加成功如图4.7所示,前端显示如图4.8所示。图4.6菜品分类添加图4.7菜品分类添加成功图4.8前端显示菜品分类添加4.3.2套餐分类添加当员工添加套餐时必须先选择套餐分类,添加完成套餐后,前端也会在该套餐分类中显示添加的套餐,在添加完成后,系统还会把数据记录入系统,并且保存到数据库中。套餐分类添加如图4.9所示,添加成功如图4.10所示,前端显示如图4.11所示。图4.9套餐分类添加图4.10套餐分类添加成功图4.11前端显示套餐分类添加4.3.3分类排序在添加时还需要选择套餐或者菜品的排序来进行推荐套餐和菜品,而在前端则会根据排序依次进行展示,被设定序号后会根据序号升序展示,当本系统的员工或管理员想要进行推荐菜品或套餐时可以修改菜品的序号,或者想要推荐新出的菜品或套餐时可以将序号设置为最小,在设置完成后,系统将会在前端页面显示设置好的套餐和菜品。修改分类排序如图4.12所示,修改成功如图4.13所示,前端显示根据排序推荐如图4,14所示。图4.12修改分类排序图4.13修改分类排序成功图4.14根据排序推荐分类该部分关键代码为:@GetMapping("/page")

publicR<Page>page(intpage,intpageSize){

Page<Cg>pageInfo=newPage<>(page,pageSize);

LambdaQueryWrapper<Category>queryWrapper=newLambdaQueryWrapper<>();

queryWrapper.orderByAsc(Cg::getSort);

cgService.page(pageInfo,queryWrapper);

returnR.succ(pageInfo);}@PutMapping

publicR<String>update(@RequestBodyCgcg){

("修改分类信息{}",category);

cgService.updateById(cg);

returnR.succ("修改信息成功");}

4.4菜品管理模块本菜品模块需要完成菜品的增删改查等功能以及完成分页查询,因此还需要创建一个caidanController用于处理菜品相关的请求,实现菜品的添加、修改和删除等操作如图4.15所示。本系统允许员工进行批量删除操作,在菜品前勾选要删除的菜品后,点击批量删除后即可将菜品从数据库中删除,而在删除菜品时系统会检查要删除的菜品是否关联套餐,若无则可顺利删除,若有套餐中包含此菜品只有将该套餐删除后才能顺利删除此菜品。同样的在进行完成勾选操作后选择批量起售则会将停售的菜品起售,在点击批量停售后则会将选中的菜品停售。在菜品添加页面中系统会审核信息是否填写完整,在点击添加口味选项后则会弹出数据库中设置好的菜品口味字段,之后添加菜品图片以及菜品描述在添加操作无误后则会将这些数据存入数据库中,添加成功如图4.16所示。在菜品填入上述信息并且选择完成该菜品对应的菜品分类后,前端页面会在设置好的菜品分类中显示添加的菜品如图4.17所示。图4.15菜品添加

图4.16菜品添加成功图4.17菜品加入对应分类该部分关键代码为:@PostMapping

publicR<String>save(@RequestBodyCaidanDtocaidanDto){

(dishDto.toString());dishService.saveWithFlavor(caidanDto);

returnR.succ("新增菜品成功");}@GetMapping("/{id}"publicR<CaidanDto>get(@PathVariableLongid)CaidanDtocaidanDto=caidanService.getByIdWithFlavor(id);returnR.succ(caidanDto);}PublicR<String>update(@RequestBodycaidanDtocaidanDto){loginfo(caidanDto.toString());caidanService.updateWithFlavor(caidanDto);returnR.succ("修改菜品成功;}4.5套餐管理模块在用户选择订购套餐时,套餐中会包含许多菜品,在该线上订餐系统中,系统还设置有新增套餐功能,可使用该功能来进行添加套餐。在选择添加套餐后,就可以点击套餐中所要加入的菜品,同时还需要提交套餐照片,在设置完成后管理端也会展示一个设定好的套餐数据。在套餐管理界面,还可以修改套餐数据,通过修改页面中套餐的信息再将数据录入数据库中,也可以点击启停售选项通过修改status字段来修改该套餐的起售或停售,也可以直接删除套餐。其中套餐添加如图4.18所示,添加成功如图4.19所示。图4.18套餐添加图4.19套餐添加成功在套餐信息内填入对应的分类后,系统会在前端页面对应的套餐分类中显示新添加的套餐如图4.20所示。图4.20套餐加入对应分类该部分关键代码为:publicR<String>shanchu(@RequestBodysetcpDtosetcpDto){loginfosetcpDto);setcpService.shanchuWithcaidan(setcpDto);returnR.succ("新增套餐成功");}@GetMapping("/yemian")publicR<yemian>yemian(intyemian,intyemianSize,Stringname){yemian<setcp>yemianInfo=newyemian<>(yemian,yemianSize);yemian<setcpDto>dtoyemian=newyemian<>();LambdaQueryWrapper<setcp>queryWrapper=newLambdaQueryWrapper<>();queryWrapper.like(name!=null,setcpgoetName,name);queryWrapper.DdByDesc(setcpgoetUpdateTime);setcpService.yemian(yemianInfo,queryWrapper);BeanUtils.copyProperties(yemianInfo,dtoyemian,"records");List<setcp>records=yemianInfo.getRecords();List<setcpDto>list=records.stream().map((item)->{setcpDtosetcpDto=newsetcpDto();BeanUtils.copyProperties(item,setcpDto);LongcgId=item.getcgId();cgcg=cgService.getById(cgId);if(cg!=null){StringcgName=cg.getName();setcpDto.setcgName(cgName);}returnsetcpDto;}).collect(Collectors.toList());dtoyemian.setRecords(list);returnR.succ(dtoyemian);}@DeleteMappingpublicR<String>delete(@RequestParamList<Long>ids){loginfo("ids:{}",ids);setcpService.removeWithcaidan(ids);returnR.succ("套餐已删除");}在套餐添加完成后,在套餐页面还需要实现修改功能。在选择修改功能时会弹出修改框回显套餐信息,为套餐内添加菜品则需要点击添加菜品按钮,选择套餐内的菜品并继续添加。如图4.21所示。图4.21套餐内菜品修改该部分关键代码为:@GetMapping("/list")publicR<List<setcp>>listR(setcpsetcp){LambdaQueryWrapper<setcp>queryWrapper=newLambdaQueryWrapper<>();queryWrapper.eq(setcpgoetcgId()!=null,setcpgoetcgId,setcpgoetcgId());queryWrapper.eq(setcpgoetStatus()!=null,setcpgoetStatus,setcpgoetStatus()queryWrapper.DdByDesc(setcpgoetUpdateTime);List<setcp>list=setcpService.list(queryWrapper);returnR.succ(list);}@PutMappingpublicR<String>update(@RequestBodyTaocanDtotaocanDto){taocanService.updateWithDish(taocanDto);returnR.succ("修改套餐成功");}4.6购物车在用户完成登录后,首先会进入设置好的商家首页,在此页面用户可以看到推荐菜品,同时页面提供去点餐选项,在用户选择后跳转进入购物页面如图4.22所示。图4.22商家推荐页面在该模块中系统还需要实现购物车功能,该模块的功能实现了购物车内的套餐添加和商品添加,并且在购物车内可以增加和减少菜品的数目,并且可以清空购物车内的菜品。该购物车模块内显示了用户选择菜品的图片和价格等信息,并且计算出菜品的价格总和,购物车实现如图4.23所示。图4.23购物车该部分关键代码为:@GetMapping("/list")

publicR<List<GWC>>list(){("查看购物车...");

LambdaQueryWrapper<GWC>queryWrapper=newLambdaQueryWrapper<>();

queryWrapper.eq(GWC::getUserId,BaseContext.getCurrentId());

queryWrapper.orderByAsc(GWC::getCreateTime);

List<GWC>list=GWCService.list(queryWrapper);

returnR.success(list);}

@DeleteMapping("/clean")

publicR<String>clean(){

LambdaQueryWrapper<GWC>queryWrapper=newLambdaQueryWrapper<>();

queryWrapper.eq(GWC::getUserId,BaseContext.getCurrentId());

GWCService.remove(queryWrapper);

returnR.success("清空购物车成功");

4.7订单管理模块用户选择后中会显示该订单的信息。在这里用户可以添加备注,选择/设置地址,同时选择结算后跳转到结算页面,订单提交如图4.24所示。图4.24订单提交界面该部分关键代码为:@GetMapping("/page")

publicR<Page>page(intpage,intpageSize,Stringnumber,StringbeginTime,StringendTime){

Page<Orders>pageInfo=newPage<>(page,pageSize);

LambdaQueryWrapper<Orders>queryWrapper=newLambdaQueryWrapper<>();

queryWrapper.like(number!=null,Orders::getNumber,number)

.gt(StringUtils.isNotEmpty(beginTime),Orders::getOrderTime,beginTime)

.lt(StringUtils.isNotEmpty(endTime),Orders::getOrderTime,endTime);

dingdanService.page(pageInfo,queryWrapper);

returnR.success(pageInfo);}

在用户选择完成餐品后,用户可以查看自己的订单状态。如图4.25所示。图4.25订单状态查看在完成上述步骤后,系统后台会生成一份订单,之后客户端向后端发送此次请求,请求向管理端生成具体信息,该份订单记载了订单状态、价格等信息,管理员可进入后端查看并选择派送此订单或确定订单已完成。如图4.26所示。图4.26订单操作界面该部分关键代码为:@PutMapping

publicR<String>dingdanStatusChange(@RequestBodyMap<String,String>map){

Stringid=map.get("id");

LongdingdanId=Long.parseLong(id);

Integerstatus=Integer.parseInt(map.get("status"));

if(dingdanId==null||status==null){

returnR.error("传入信息不合法");}

Dingdansdingdans=dingdanService.getById(dingdanId);

dingdans.setStatus(status);

dingdanService.updateById(dingdans);

returnR.success("订单状态修改成功");}4.8用户信息管理模块用户能够在该页面完成个人信息配置,用户可在此界面查看订单信息,可配置订单地址在用户完成订单时会自动提交信息,用户可在个人信息界面设置自己的地址,或者查看历史订单,在设置地址时系统会检查框内信息是否合法在所有信息无误后,系统会将该信息存入数据库个人以及地址信息如图4.274.28所示,地址信息添加成功如图4.29所示。图4.27个人信息图4.28地址信息图4.29地址信息添加成功该部分关键代码为:@PutMapping("default")//设置默认地址publicR<dizhiMulu>setDefault(@RequestBodydizhiMuludizhiMulu){lgifo("dizhiMulu:{}",dizhiMulu);LambdaUpdateWrapper<dizhiMulu>wrapper=newLambdaUpdateWrapper<>();wrapper.eq(dizhiMulu::getUserId,BaseContext.getCurrentId());wrapper.set(dizhiMulu::getIsDefault,);@GetMapping("/{id}")publicRget(@PathVariableLongid){dizhiMuludizhiMulu=dizhiMuluService.getById(id);if(dizhiMulu!=null){returnR.succ(dizhiMulu);}else{returnR.error("查询失败");}@GetMapping("default")PublicR<dizhiMulu>getDefault(){LambdaQueryWrapper<dizhiMulu>queryWrapper=newLambdaQueryWrapper<>;queryWrapper.eq(dizhiMulu::getUserId,BaseContext.getCurrentId());queryWrapper.eq(dizhiMulu::getIsDefault,1)if(null==dizhiMulu){returnR.error("查找错误");}else{returnR.succ(dizhiMulu);}

第5章系统测试用户端测试用例依据用户代表要求进行设计,采用黑盒测试技术,这里给出登录测试用例表,套餐测试用例表以及订单管理测试用例表。1、登录测试用例表用户或员工在登录时必须满足系统设置的要求,如用户名正确填写和密码的正确填写等。如表5.1所示。表5.1登录测试用例表测试编号测试目的测试内容预期结果实际结果001员工登录测试输入用户名admin密码123456登录成功登录成功002员工登录测试输入用户名123密码123456登录失败登录失败003员工登录测试输入用户名admin密码666666登录失败登录失败004用户登录测试输入账证码1568登陆成功登陆成功005用户登录测试输入1583139066验证码6688登录成功登录成功006用户登录测试输入1234验证码0000登录失败登陆失败2、菜品套餐测试用例表员工在添加,修改,删除菜品和套餐时必须按照系统设定进行相关操作。如表5.2所示。

表5.2菜品套餐测试用例表测试编号测试目的测试内容预期结果实际结果001添加菜品在添加页面输入菜品宫保鸡丁,点击确认按钮添加成功添加成功002修改菜品在修改页面将宫保鸡丁改为涮羊肉,点击确认按钮修改成功修改成功003删除菜品在管理菜品页面,选择涮羊肉点击删除按钮删除成功删除成功004添加套餐在添加套餐页面输入火锅套餐并且添加肉,面,蔬菜等菜品,点击添加按钮添加成功添加成功005修改套餐在修改页面选择火锅套餐修改面为粉,点击确认 修改成功修改成功006添加套餐在管理套餐页面,选择火锅套餐点击删除按钮删除成功删除成功3、订单管理测试用例表员工可以在用户提交订单时,按照系统设定查看用户订单,通过更改订单状态,选择配送订单,完成订单。如表5.2所示。

表5.3订单管理测试用例表测试编号测试目的测试内容预期结果实际结果001添加订单在用户端购物车选择菜品后完成订单向管理端发送订单添加成功添加成功002派送订单在管理端点击派送后将订单状态改为已派送派送完成派送完成003完成订单在管理端点击完成订单将订单状态改为已完成订单完成订单完成

结论在本文中,首先介绍了国内外研究现状,然后根据系统面对的需求进行分析同时确定了系统的可行性,之后对系统的整体以及数据库进行了设计,但系统仍有不足,后续的针对在线订餐系统的研究重点包括以下几个方面:首先,可以进一步完善本系统的设计和实现,加入更多的功能和特性,以便满足更广泛的需要。其次,可以分析系统数据,挖掘潜在的商业价值,设计和实现数据分析和挖掘算法。这将有助于提高系统的商业价值和竞争能力。相信随着互联网和移动通信技术的普及,以及人们生活方式的变化,在线订餐系统将成为人们生活的重要组成部分。希望本文的研究能够为相关领域的研究和实践提供一些参考和启示。

参考文献邱丹萍.应用SpringBoot的食堂订餐管理系统设计[J].福建电脑,2020.黄素萍,刘敏娜,聂维.网上订餐系统的设计与实现[J].电脑知识与技术,2017(9X):2.范博杰.基于JavaWeb的网上订餐系统的设计与实

温馨提示

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

评论

0/150

提交评论