• springboot+jsp项目校园外卖配送系统


    文末获取源码

    开发语言:Java

    框架:springboot

    技术:JSP

    JDK版本:JDK1.8

    服务器:tomcat7

    数据库:mysql 5.7/8.0

    数据库工具:Navicat11

    开发软件:eclipse/myeclipse/idea

    Maven包:Maven3.3.9

    浏览器:谷歌浏览器

    前言介绍

    在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括校园外卖配送系统的网络应用,在国外网上管理系统已经是很普遍的方式,不过国内的网上管理系统可能还处于起步阶段。校园外卖配送系统采用java技术,基于mysql开发,实现了个人中心,用户管理,配送员管理,美食分类管理,特色美食管理,订单信息管理,订单取消管理,配送接单管理,取消配送管理,送达通知管理,系统管理等内容进行管理,本系统具有良好的兼容性和适应性,为用户提供更多的校园外卖配送信息,也提供了良好的平台,从而提高系统的核心竞争力。

    本文首先介绍了设计的背景与研究目的,其次介绍系统相关技术,重点叙述了系统功能分析以及详细设计,最后总结了系统的开发心得。

    系统功能

    通过前面的功能分析可以将校园外卖配送系统的功能分为管理员,用户和配送员三个部分,系统的主要功能包括个人中心,用户管理,配送员管理,美食分类管理,特色美食管理,订单信息管理,订单取消管理,配送接单管理,取消配送管理,送达通知管理,系统管理等内容。本系统是针对已注册登录的用户看到满意的校园外卖配送信息进行操作而设计的。

    1、用户的功能及权限

    用户登录注册后,进入系统对个人中心,订单信息管理,订单取消管理,配送接单管理,取消配送管理,送达通知管理等功能进行操作管理。

    2、配送员的功能及权限

    用户登录注册后,进入系统对个人中心,订单信息管理,配送接单管理,取消配送管理,送达通知管理等功能进行操作管理。

    3、管理员的功能及权限

    用户信息的添加和管理,校园外卖配送详细信息添加和管理和文档信息添加和管理以及网站信息管理,这些都是管理员的功能。

    系统整体设计

    系统功能结构图是系统设计阶段,系统功能结构图只是这个阶段一个基础,整个系统的架构决定了系统的整体模式,是系统的根据。校园外卖配送系统的整个设计结构如图

    系统展示 

    前台页面

    特色美食

    系统登录注册

    用户登录系统,通过输入用户名、密码,选择角色并点击登录进行系统登录操作,如图

    用户注册 

    在用户注册页面通过填写用户账号,密码,确认密码,用户姓名,联系方式等信息完成用户注册,如图

    管理员功能模块

    管理员登录系统后,可以对个人中心,用户管理,配送员管理,美食分类管理,特色美食管理,订单信息管理,订单取消管理,配送接单管理,取消配送管理,送达通知管理,系统管理等功能模块进行相应操作,如图 

    用户管理

    在用户管理页面可以对用户账号,用户姓名,照片,性别,联系方式等信息进行查看,修改和删除等操作,如图 

     配送员管理

    在配送员管理页面可以对配送账号,配送姓名,头像,性别,联系电话,身份证等信息进行查看,修改和删除等操作,如图

    美食分类管理

    在美食分类管理页面可以对美食分类信息进行查看,修改和删除等操作,如图

    订单信息管理

    在订单信息管理页面可以对订单编号,美食名称,图片,美食分类,价格,数量,总金额,配送地址,订单状态,下单时间,用户账号,用户姓名,联系方式,是否支付等信息进行查看,修改和删除等操作,如图 

    特色美食管理

    在特色美食管理页面可以对美食名称,图片,美食分类,口味,特色,主食材,价格,数量等信息进行查看,修改,查看评论和删除等操作,如图

    系统管理

    在轮播图管理页面可以对名称,值等信息进行查看和修改等操作,如图 

    用户功能模块

    用户登录系统后,可以对个人中心,订单信息管理,订单取消管理,配送接单管理,取消配送管理,送达通知管理等功能模块进行相应操作,如图 

    订单信息管理

    在订单信息管理页面可以对订单编号,美食名称,图片,美食分类,价格,数量,总金额,配送地址,订单状态,下单时间,用户账号,用户姓名,联系方式,是否支付等信息进行撤销订单,查看和删除等操作,如图 

    订单取消管理

    在订单取消管理页面可以对订单编号,美食名称,图片,美食分类,总金额,取消原因,取消时间,用户账号,用户姓名,是否审核,审核回复,是否支付等信息进行查看和删除操作,如图 

    配送接单管理

    在配送接单管理页面可以对订单编号,美食名称,图片,配送地址,配送状态,用户账号,联系方式,配送账号,配送姓名,联系电话,取单时间,是否审核,审核回复等信息进行查看和删除操作,如图 

    配送员功能模块

    配送员登录系统后,可以对个人中心,订单信息管理,配送接单管理,取消配送管理,送达通知管理等功能进行相应操作,如图 

    取消配送管理

    在取消配送管理页面可以对订单编号,美食名称,取消原因,取消时间,配送账号,用户账号等信息进行查看和删除等操作,如图 

    配送接单管理

    在配送接单管理页面可以对配送状态,是否审核,审核回复等信息进行取消配送,送达通知,查看和删除等操作,如图 

    部分核心代码 

    1. /**
    2. * 订单取消
    3. * 后端接口
    4. * @author
    5. * @email
    6. * @date 2022-03-26 17:40:36
    7. */
    8. @RestController
    9. @RequestMapping("/dingdanquxiao")
    10. public class DingdanquxiaoController {
    11. @Autowired
    12. private DingdanquxiaoService dingdanquxiaoService;
    13. /**
    14. * 后端列表
    15. */
    16. @RequestMapping("/page")
    17. public R page(@RequestParam Map<String, Object> params,DingdanquxiaoEntity dingdanquxiao,
    18. HttpServletRequest request){
    19. String tableName = request.getSession().getAttribute("tableName").toString();
    20. if(tableName.equals("yonghu")) {
    21. dingdanquxiao.setYonghuzhanghao((String)request.getSession().getAttribute("username"));
    22. }
    23. EntityWrapper<DingdanquxiaoEntity> ew = new EntityWrapper<DingdanquxiaoEntity>();
    24. PageUtils page = dingdanquxiaoService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, dingdanquxiao), params), params));
    25. request.setAttribute("data", page);
    26. return R.ok().put("data", page);
    27. }
    28. /**
    29. * 前端列表
    30. */
    31. @IgnoreAuth
    32. @RequestMapping("/list")
    33. public R list(@RequestParam Map<String, Object> params,DingdanquxiaoEntity dingdanquxiao,
    34. HttpServletRequest request){
    35. EntityWrapper<DingdanquxiaoEntity> ew = new EntityWrapper<DingdanquxiaoEntity>();
    36. PageUtils page = dingdanquxiaoService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, dingdanquxiao), params), params));
    37. request.setAttribute("data", page);
    38. return R.ok().put("data", page);
    39. }
    40. /**
    41. * 列表
    42. */
    43. @RequestMapping("/lists")
    44. public R list( DingdanquxiaoEntity dingdanquxiao){
    45. EntityWrapper<DingdanquxiaoEntity> ew = new EntityWrapper<DingdanquxiaoEntity>();
    46. ew.allEq(MPUtil.allEQMapPre( dingdanquxiao, "dingdanquxiao"));
    47. return R.ok().put("data", dingdanquxiaoService.selectListView(ew));
    48. }
    49. /**
    50. * 查询
    51. */
    52. @RequestMapping("/query")
    53. public R query(DingdanquxiaoEntity dingdanquxiao){
    54. EntityWrapper< DingdanquxiaoEntity> ew = new EntityWrapper< DingdanquxiaoEntity>();
    55. ew.allEq(MPUtil.allEQMapPre( dingdanquxiao, "dingdanquxiao"));
    56. DingdanquxiaoView dingdanquxiaoView = dingdanquxiaoService.selectView(ew);
    57. return R.ok("查询订单取消成功").put("data", dingdanquxiaoView);
    58. }
    59. /**
    60. * 后端详情
    61. */
    62. @RequestMapping("/info/{id}")
    63. public R info(@PathVariable("id") Long id){
    64. DingdanquxiaoEntity dingdanquxiao = dingdanquxiaoService.selectById(id);
    65. return R.ok().put("data", dingdanquxiao);
    66. }
    67. /**
    68. * 前端详情
    69. */
    70. @IgnoreAuth
    71. @RequestMapping("/detail/{id}")
    72. public R detail(@PathVariable("id") Long id){
    73. DingdanquxiaoEntity dingdanquxiao = dingdanquxiaoService.selectById(id);
    74. return R.ok().put("data", dingdanquxiao);
    75. }
    76. /**
    77. * 后端保存
    78. */
    79. @RequestMapping("/save")
    80. public R save(@RequestBody DingdanquxiaoEntity dingdanquxiao, HttpServletRequest request){
    81. dingdanquxiao.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    82. //ValidatorUtils.validateEntity(dingdanquxiao);
    83. dingdanquxiaoService.insert(dingdanquxiao);
    84. return R.ok();
    85. }
    86. /**
    87. * 前端保存
    88. */
    89. @RequestMapping("/add")
    90. public R add(@RequestBody DingdanquxiaoEntity dingdanquxiao, HttpServletRequest request){
    91. dingdanquxiao.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    92. //ValidatorUtils.validateEntity(dingdanquxiao);
    93. dingdanquxiaoService.insert(dingdanquxiao);
    94. return R.ok();
    95. }
    96. /**
    97. * 修改
    98. */
    99. @RequestMapping("/update")
    100. public R update(@RequestBody DingdanquxiaoEntity dingdanquxiao, HttpServletRequest request){
    101. //ValidatorUtils.validateEntity(dingdanquxiao);
    102. dingdanquxiaoService.updateById(dingdanquxiao);//全部更新
    103. return R.ok();
    104. }
    105. /**
    106. * 删除
    107. */
    108. @RequestMapping("/delete")
    109. public R delete(@RequestBody Long[] ids){
    110. dingdanquxiaoService.deleteBatchIds(Arrays.asList(ids));
    111. return R.ok();
    112. }
    113. /**
    114. * 提醒接口
    115. */
    116. @RequestMapping("/remind/{columnName}/{type}")
    117. public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request,
    118. @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
    119. map.put("column", columnName);
    120. map.put("type", type);
    121. if(type.equals("2")) {
    122. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    123. Calendar c = Calendar.getInstance();
    124. Date remindStartDate = null;
    125. Date remindEndDate = null;
    126. if(map.get("remindstart")!=null) {
    127. Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
    128. c.setTime(new Date());
    129. c.add(Calendar.DAY_OF_MONTH,remindStart);
    130. remindStartDate = c.getTime();
    131. map.put("remindstart", sdf.format(remindStartDate));
    132. }
    133. if(map.get("remindend")!=null) {
    134. Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
    135. c.setTime(new Date());
    136. c.add(Calendar.DAY_OF_MONTH,remindEnd);
    137. remindEndDate = c.getTime();
    138. map.put("remindend", sdf.format(remindEndDate));
    139. }
    140. }
    141. Wrapper<DingdanquxiaoEntity> wrapper = new EntityWrapper<DingdanquxiaoEntity>();
    142. if(map.get("remindstart")!=null) {
    143. wrapper.ge(columnName, map.get("remindstart"));
    144. }
    145. if(map.get("remindend")!=null) {
    146. wrapper.le(columnName, map.get("remindend"));
    147. }
    148. String tableName = request.getSession().getAttribute("tableName").toString();
    149. if(tableName.equals("yonghu")) {
    150. wrapper.eq("yonghuzhanghao", (String)request.getSession().getAttribute("username"));
    151. }
    152. int count = dingdanquxiaoService.selectCount(wrapper);
    153. return R.ok().put("count", count);
    154. }
    155. }
    1. server:
    2. port: 8080
    3. servlet:
    4. context-path: /jspmv0k22
    5. spring:
    6. devtools:
    7. restart:
    8. enabled: true #设置开启热部署
    9. datasource:
    10. driver-class-name: com.mysql.jdbc.Driver
    11. url: jdbc:mysql://localhost:3308/jspmv0k22?useUnicode=true&characterEncoding=utf8
    12. username: root
    13. password: 123456
    14. mvc:
    15. view:
    16. prefix: /WEB-INF/pages/
    17. suffix: .jsp #jsp视图解析
    18. resources:
    19. static-locations:
    20. #mybatis:
    21. ## mapper-locations: classpath:/mapper/*.xml
    22. ## type-aliases-package: com.pojo
    23. # mapper-locations: mapper/*.xml
    24. mybatis-plus:
    25. configuration:
    26. map-underscore-to-camel-case: true
    27. auto-mapping-behavior: full
    28. log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    29. mapper-locations: classpath*:/mapper/*.xml

  • 相关阅读:
    金九银十!阿里面试官告诉你面试Java后端开发面试会被问到什么问题?面试稳了!
    Java进阶过程
    贪心算法-会议室问题
    ASP.NETCore统一处理404错误都有哪些方式?
    【云原生之Docker实战】使用Docker部署LibrePhotos照片管理系统
    系统性考量【复盘】这件事儿
    无敌!我用【C语言】手搓出了一个体系完整的【员工管理系统】还能玩游戏听音乐?(超详细,附完整源码)
    超详细Python教程——作用域
    Ubuntu安装指定内核版本教程
    Andorid 13 修改默认音量区间、默认音量值
  • 原文地址:https://blog.csdn.net/m0_49113107/article/details/126533357