计算机javaweb毕设项目 SSM的校园点餐管理系统

心已赠人 2024-02-20 09:22 67阅读 0赞

项目背景

21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识,科学化的管理,使信息存储达到准确、快速、完善,并能提高工作管理效率,促进其发展。
论文主要是对校园点餐系统进行了介绍,包括研究的现状,还有涉及的开发背景,然后还对系统的设计目标进行了论述,还有系统的需求,以及整个的设计方案,对系统的设计以及实现,也都论述的比较细致,最后对校园点餐系统进行了一些具体测试。
本文以JSP为开发技术,实现了一个校园点餐系统。校园点餐系统的主要使用者分为管理员;个人中心、用户管理、商家管理、菜系分类管理、菜品信息管理、外卖订单管理、系统管理,用户;个人中心、外卖订单管理、我的收藏管理,商家;个人中心、菜系分类管理、菜品信息管理、外卖订单管理,前台首页;首页、菜品信息、外卖订单、新闻资讯、我的、跳转到后台、客服等功能。通过这些功能模块的设计,基本上实现了整个校园点餐系统的过程。
具体在系统设计上,采用了B/S的结构,同时,也使用JSP技术在动态页面上进行了设计,后台上采用Mysql数据库,是一个非常优秀的校园点餐系统。

功能设计

功能模块图

系统中的核心用户是系统管理员,管理员登录后,通过管理员菜单来管理后台系统。主要功能有:个人中心、用户管理、商家管理、菜系分类管理、菜品信息管理、外卖订单管理、系统管理等功能。
在这里插入图片描述
用户进入系统可以进行个人中心、外卖订单管理、我的收藏管理等。
在这里插入图片描述
校园点餐系统工作原理图
在这里插入图片描述
系统架构图属于系统设计阶段,系统架构图只是这个阶段一个产物,系统的总体架构决定了整个系统的模式,是系统的基础。
在这里插入图片描述
数据库的概念结构设计采用实体—联系(E-R)模型设计方法。E-R模型法的组成元素有:实体、属性、联系,E-R模型用E-
R图表示,是提示用户工作环境中所涉及的事物,属性则是对实体特性的描述。在系统设计当中数据库起着决定性的因素。下面设计出这几个关键实体的实体—关系图。
商家信息实体图
在这里插入图片描述
用户信息实体图
在这里插入图片描述
菜品信息实体图
在这里插入图片描述

功能截图

校园点餐系统,在系统首页可以查看首页、菜品信息、外卖订单、新闻资讯、我的、跳转到后台、客服等内容
在这里插入图片描述
用户登录,在登录页面可以填写账号、密码等信息进行登录
在这里插入图片描述
菜品信息,在菜品信息页面通过查看商家编号、商家名、菜系、美食名称、图片、单价、主料、份量、美食介绍等信息进行购买、点我收藏。在个人中心页面通过填写学号、姓名、性别、照片、院系、电话、地址、审核回复等信息进行更新信息、退出登录操作。
在这里插入图片描述
在这里插入图片描述
管理员登录,通过填写用户名、密码进行登录
在这里插入图片描述
管理员登录进入校园点餐系统可以查看个人中心、用户管理、商家管理、菜系分类管理、菜品信息管理、外卖订单管理、系统管理等信息。
用户管理,在用户管理页面中可以通过查看学号、姓名、性别、照片、院系、电话、地址、是否审核、审核回复等内容进行详情、修改、删除。还可以根据需要对商家管理进行详情,修改等详细操作。
在这里插入图片描述
在这里插入图片描述
菜系分类管理,在菜系分类管理页面中可以查看菜系等信息,并可根据需要对已有菜系分类管理进行修改或删除等操作
在这里插入图片描述
菜品信息管理,在菜品信息管理页面中可以查看商家编号、商家名、菜系、美食名称、图片、单价、主料、份量、美食介绍等信息,并可根据需要对已有菜品信息管理进行修改或删除等详细操作
在这里插入图片描述
外卖订单管理,在外卖订单管理页面中可以查看订单编号、商家编号、商家名、美食名称、菜品分类、学号、姓名、电话、地址、价格、份量、金额、下单时间、取餐时间、取餐方式、是否审核、审核回复、是否支付等内容,并且根据需要对已有外卖订单管理进行详情,修改或删除等详细操作。
在这里插入图片描述
轮播图;该页面为轮播图管理界面。管理员可以在此页面进行首页轮播图的管理,通过新建操作可在轮播图中加入新的图片,还可以对以上传的图片进行修改操作,以及图片的删除操作
在这里插入图片描述
美食资讯管理,在美食资讯管理页面中可以查看标题、简介、图片、内容等信息,并且根据需要对已有美食资讯管理进行详情,修改或删除等详细操作
在这里插入图片描述
商家登录进入校园点餐系统可以查看个人中心、菜系分类管理、菜品信息管理、外卖订单管理等内容。
菜系分类管理,在菜系分类管理页面中通过查看菜系等信息,还可以根据需要对菜系分类管理进行修改。
在这里插入图片描述
菜品信息管理,在菜品信息管理页面中可以查看商家编号、商家名、菜系、美食名称、图片、单价、主料、份量、美食介绍等信息,并且根据需要对已有菜品信息管理进行查看删除等其他详细操作。
在这里插入图片描述
外卖订单管理,在外卖订单管理页面中通过查看订单编号、商家编号、商家名、美食名称、菜品分类、学号、姓名、电话、地址、价格、份量、金额、下单时间、取餐时间、取餐方式、是否审核、审核回复、是否支付等内容进行详情、修改、删除。
在这里插入图片描述

相关代码

数据库配置
  1. # Tomcat
  2. server:
  3. tomcat:
  4. uri-encoding: UTF-8
  5. port: 8080
  6. servlet:
  7. context-path: /springbootr1tjf
  8. spring:
  9. datasource:
  10. driverClassName: com.mysql.jdbc.Driver
  11. url: jdbc:mysql://127.0.0.1:3306/springbootr1tjf?useUnicode=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8
  12. username: root
  13. password: 123456
  14. # driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
  15. # url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=springbootr1tjf
  16. # username: sa
  17. # password: 123456
  18. servlet:
  19. multipart:
  20. max-file-size: 10MB
  21. max-request-size: 10MB
  22. resources:
  23. static-locations: classpath:static/,file:static/
  24. #mybatis
  25. mybatis-plus:
  26. mapper-locations: classpath*:mapper/*.xml
  27. #实体扫描,多个package用逗号或者分号分隔
  28. typeAliasesPackage: com.entity
  29. global-config:
  30. #主键类型 0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID";
  31. id-type: 1
  32. #字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断"
  33. field-strategy: 2
  34. #驼峰下划线转换
  35. db-column-underline: true
  36. #刷新mapper 调试神器
  37. refresh-mapper: true
  38. #逻辑删除配置
  39. logic-delete-value: -1
  40. logic-not-delete-value: 0
  41. #自定义SQL注入器
  42. sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector
  43. configuration:
  44. map-underscore-to-camel-case: true
  45. cache-enabled: false
  46. call-setters-on-nulls: true
  47. #springboot 项目mybatis plus 设置 jdbcTypeForNull (oracle数据库需配置JdbcType.NULL, 默认是Other)
  48. jdbc-type-for-null: 'null'
控制层(controller)
  1. package com.controller;
  2. import java.util.Arrays;
  3. import java.util.Calendar;
  4. import java.util.Date;
  5. import java.util.Map;
  6. import javax.servlet.http.HttpServletRequest;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.stereotype.Controller;
  9. import org.springframework.web.bind.annotation.GetMapping;
  10. import org.springframework.web.bind.annotation.PathVariable;
  11. import org.springframework.web.bind.annotation.PostMapping;
  12. import org.springframework.web.bind.annotation.RequestBody;
  13. import org.springframework.web.bind.annotation.RequestMapping;
  14. import org.springframework.web.bind.annotation.RequestParam;
  15. import org.springframework.web.bind.annotation.ResponseBody;
  16. import org.springframework.web.bind.annotation.RestController;
  17. import com.annotation.IgnoreAuth;
  18. import com.baomidou.mybatisplus.mapper.EntityWrapper;
  19. import com.entity.TokenEntity;
  20. import com.entity.UserEntity;
  21. import com.service.TokenService;
  22. import com.service.UserService;
  23. import com.utils.CommonUtil;
  24. import com.utils.MPUtil;
  25. import com.utils.PageUtils;
  26. import com.utils.R;
  27. import com.utils.ValidatorUtils;
  28. /**
  29. * 登录相关
  30. */
  31. @RequestMapping("users")
  32. @RestController
  33. public class UserController{
  34. @Autowired
  35. private UserService userService;
  36. @Autowired
  37. private TokenService tokenService;
  38. /**
  39. * 登录
  40. */
  41. @IgnoreAuth
  42. @PostMapping(value = "/login")
  43. public R login(String username, String password, String captcha, HttpServletRequest request) {
  44. UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
  45. if(user==null || !user.getPassword().equals(password)) {
  46. return R.error("账号或密码不正确");
  47. }
  48. String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
  49. return R.ok().put("token", token);
  50. }
  51. /**
  52. * 注册
  53. */
  54. @IgnoreAuth
  55. @PostMapping(value = "/register")
  56. public R register(@RequestBody UserEntity user){
  57. // ValidatorUtils.validateEntity(user);
  58. if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
  59. return R.error("用户已存在");
  60. }
  61. userService.insert(user);
  62. return R.ok();
  63. }
  64. /**
  65. * 退出
  66. */
  67. @GetMapping(value = "logout")
  68. public R logout(HttpServletRequest request) {
  69. request.getSession().invalidate();
  70. return R.ok("退出成功");
  71. }
  72. /**
  73. * 密码重置
  74. */
  75. @IgnoreAuth
  76. @RequestMapping(value = "/resetPass")
  77. public R resetPass(String username, HttpServletRequest request){
  78. UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
  79. if(user==null) {
  80. return R.error("账号不存在");
  81. }
  82. user.setPassword("123456");
  83. userService.update(user,null);
  84. return R.ok("密码已重置为:123456");
  85. }
  86. /**
  87. * 列表
  88. */
  89. @RequestMapping("/page")
  90. public R page(@RequestParam Map<String, Object> params,UserEntity user){
  91. EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
  92. PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
  93. return R.ok().put("data", page);
  94. }
  95. /**
  96. * 列表
  97. */
  98. @RequestMapping("/list")
  99. public R list( UserEntity user){
  100. EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
  101. ew.allEq(MPUtil.allEQMapPre( user, "user"));
  102. return R.ok().put("data", userService.selectListView(ew));
  103. }
  104. /**
  105. * 信息
  106. */
  107. @RequestMapping("/info/{id}")
  108. public R info(@PathVariable("id") String id){
  109. UserEntity user = userService.selectById(id);
  110. return R.ok().put("data", user);
  111. }
  112. /**
  113. * 获取用户的session用户信息
  114. */
  115. @RequestMapping("/session")
  116. public R getCurrUser(HttpServletRequest request){
  117. Long id = (Long)request.getSession().getAttribute("userId");
  118. UserEntity user = userService.selectById(id);
  119. return R.ok().put("data", user);
  120. }
  121. /**
  122. * 保存
  123. */
  124. @PostMapping("/save")
  125. public R save(@RequestBody UserEntity user){
  126. // ValidatorUtils.validateEntity(user);
  127. if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
  128. return R.error("用户已存在");
  129. }
  130. userService.insert(user);
  131. return R.ok();
  132. }
  133. /**
  134. * 修改
  135. */
  136. @RequestMapping("/update")
  137. public R update(@RequestBody UserEntity user){
  138. // ValidatorUtils.validateEntity(user);
  139. UserEntity u = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername()));
  140. if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {
  141. return R.error("用户名已存在。");
  142. }
  143. userService.updateById(user);//全部更新
  144. return R.ok();
  145. }
  146. /**
  147. * 删除
  148. */
  149. @RequestMapping("/delete")
  150. public R delete(@RequestBody Long[] ids){
  151. userService.deleteBatchIds(Arrays.asList(ids));
  152. return R.ok();
  153. }
  154. }
业务层(Service)
  1. package com.service;
  2. import java.util.List;
  3. import java.util.Map;
  4. import org.apache.ibatis.annotations.Param;
  5. import com.baomidou.mybatisplus.mapper.Wrapper;
  6. import com.baomidou.mybatisplus.service.IService;
  7. import com.entity.UserEntity;
  8. import com.utils.PageUtils;
  9. /**
  10. * 系统用户
  11. */
  12. public interface UserService extends IService<UserEntity> {
  13. PageUtils queryPage(Map<String, Object> params);
  14. List<UserEntity> selectListView(Wrapper<UserEntity> wrapper);
  15. PageUtils queryPage(Map<String, Object> params,Wrapper<UserEntity> wrapper);
  16. }
数据访问层(Dao)
  1. package com.dao;
  2. import java.util.List;
  3. import org.apache.ibatis.annotations.Param;
  4. import com.baomidou.mybatisplus.mapper.BaseMapper;
  5. import com.baomidou.mybatisplus.mapper.Wrapper;
  6. import com.baomidou.mybatisplus.plugins.pagination.Pagination;
  7. import com.entity.UserEntity;
  8. /**
  9. * 用户
  10. */
  11. public interface UserDao extends BaseMapper<UserEntity> {
  12. List<UserEntity> selectListView(@Param("ew") Wrapper<UserEntity> wrapper);
  13. List<UserEntity> selectListView(Pagination page,@Param("ew") Wrapper<UserEntity> wrapper);
  14. }

项目获取:

https://gitee.com/sinonfin/L-javaWebSha/tree/master

发表评论

表情:
评论列表 (有 0 条评论,67人围观)

还没有评论,来说两句吧...

相关阅读