项目背景

随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势社会的发展和科学技术的进步,互联网技术越来越受欢迎。网络计算机的生活方式逐渐受到广大人民群众的喜爱,也逐渐进入了每个用户的使用。互联网具有便利性,速度快,效率高,成本低等优点。 因此,构建符合自己要求的操作系统是非常有意义的。
本文从用户的功能要求出发,建立了外卖点餐系统 ,系统中的功能模块主要是实现管理员;首页、个人中心、用户管理、商家管理、菜品分类管理、骑手管理、系统管理、菜品管理、订单管理、配送单管理、商品评价管理,商家;首页、个人中心、菜品管理、订单管理、配送单管理、商品评价管理、我的收藏管理,用户;首页、个人中心、订单管理、配送单管理、商品评价管理、我的收藏管理、骑手;首页、个人中心、订单管理、配送单管理、商品评价管理等功能部分;经过认真细致的研究,精心准备和规划,最后测试成功,系统可以正常使用。分析功能调整与外卖点餐系统实现的实际需求相结合,讨论了JSP开发外卖点餐系统的使用。

功能设计

系统结构设计

外卖点餐系统 的设计主要是为了满足用户的实际需求。 因此,它需要通过Internet实现,因此它必须具备硬件和软件基础。该平台最终可以通过科学技术和各种方式达到支持智能化的信息管理的目的。因此,它必须具备网络外卖点餐系统 管理所需的环境和各种资料,并保证实现开放性,模块性和实用性三个原则。
外卖点餐系统,主要包括管理员、用户、商家、骑手四个用户角色,对于用户角色不同,所使用的功能模块相应不同。
管理员;首页、个人中心、用户管理、商家管理、菜品分类管理、骑手管理、系统管理、菜品管理、订单管理、配送单管理、商品评价管理

商家;首页、个人中心、菜品管理、订单管理、配送单管理、商品评价管理、我的收藏管理

用户;首页、个人中心、订单管理、配送单管理、商品评价管理、我的收藏管理

骑手;首页、个人中心、订单管理、配送单管理、商品评价管理等功能模块的管理维护等操作

功能截图

用户功能模块

用户通过点击后台管理,进入页面可以进行首页、个人中心、订单管理、配送单管理、商品评价管理、我的收藏管理等功能模块,进行相对应操作

订单管理:通过订单管理可以进行获取名称、类型、图片、价格、购买数量、总价格等信息

配送单管理:用户通过列表可以获取名称、图片、购买数量、商家编号等信息,进行查看配送单管理等信息操作

商品评价管理:用户通过列表可以获取名称、图片、购买数量、商家编号等信息,进行查看商品评价管理等信息操作

我的收藏管理:用户通过列表可以获取收藏id、收藏名称、收藏图片等信息,进行查看我的收藏管理等信息操作

管理员功能模块

管理员通过后台登录窗口进行输入自己的账号信息、密码等信息,进行登录

个人信息,管理员通过列表进行查看用户名等信息,进行查看、修改或删除操作

用户管理,管理员通过用户管理可以在线查看账号、密码、姓名、性别、头像等信息,进行详情或修改、删除操作

商家管理,管理员通过商家管理可以在线查看商家编号、密码、商家名称、图片等信息,进行查看或修改、删除操作

菜品分类管理,管理员通过菜品分类管理可以在线查看类型等信息,进行查看或添加修改或删除

菜品管理:通过列表可以获取名称、类型、图片、口味、价格等信息,进行查看、详情、修改或删除操作

订单管理:通过列表可以获取名称、类型、图片、价格等信息,进行查看、详情、修改或删除操作

商家功能模块

商家通过点击后台管理,进入页面可以进行首页、个人中心、菜品管理、订单管理、配送单管理、商品评价管理、我的收藏管理等功能模块,进行相对应操作

菜品管理:通过菜品管理可以进行获取名称、类型、图片、口味等信息

订单管理:商家通过列表可以获取名称、类型、图片、价格、购买数量等信息,进行查看订单管理等信息操作

配送单管理:商家通过列表可以获取名称、图片、购买数量、商家编号等信息,进行查看配送单管理等信息操作

前台功能模块

通过进入网站可以查看首页、商家、菜品、登录、后台管理等功能模块

通过点击登录可以填写账号、密码等详细信息,进行登录操作

用户通过点击个人中心进入页面,可以查看个人信息、信息修改等信息,进行操作

用户通过点击菜品详情进入页面,可以填写名称、类型、口味、价格等信息,进行提交操作

骑手功能模块

骑手通过点击后台管理,进入页面可以进行首页、个人中心、订单管理、配送单管理、商品评价管理等功能模块,进行相对应操作

订单管理:通过订单管理可以进行获取名称、类型、图片、价格、购买数量等信息

配送单管理:骑手通过列表可以获取名称、图片、购买数量、商家编号等信息,进行查看配送单管理等信息操作

商品评价管理:骑手通过列表可以获取名称、图片、购买数量、商家编号等信息,进行查看商品评价管理等信息操作

相关代码

数据库配置

# Tomcat
server:tomcat:uri-encoding: UTF-8port: 8080servlet:context-path: /springbootr1tjfspring:datasource:driverClassName: com.mysql.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/springbootr1tjf?useUnicode=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8username: rootpassword: 123456#        driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
#        url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=springbootr1tjf
#        username: sa
#        password: 123456servlet:multipart:max-file-size: 10MBmax-request-size: 10MBresources:static-locations: classpath:static/,file:static/#mybatis
mybatis-plus:mapper-locations: classpath*:mapper/*.xml#实体扫描,多个package用逗号或者分号分隔typeAliasesPackage: com.entityglobal-config:#主键类型  0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID";id-type: 1#字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断"field-strategy: 2#驼峰下划线转换db-column-underline: true#刷新mapper 调试神器refresh-mapper: true#逻辑删除配置logic-delete-value: -1logic-not-delete-value: 0#自定义SQL注入器sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjectorconfiguration:map-underscore-to-camel-case: truecache-enabled: falsecall-setters-on-nulls: true#springboot 项目mybatis plus 设置 jdbcTypeForNull (oracle数据库需配置JdbcType.NULL, 默认是Other)jdbc-type-for-null: 'null' 

控制层(controller)

package com.controller;import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;import javax.servlet.http.HttpServletRequest;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;/*** 登录相关*/
@RequestMapping("users")
@RestController
public class UserController{@Autowiredprivate UserService userService;@Autowiredprivate TokenService tokenService;/*** 登录*/@IgnoreAuth@PostMapping(value = "/login")public R login(String username, String password, String captcha, HttpServletRequest request) {UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));if(user==null || !user.getPassword().equals(password)) {return R.error("账号或密码不正确");}String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());return R.ok().put("token", token);}/*** 注册*/@IgnoreAuth@PostMapping(value = "/register")public R register(@RequestBody UserEntity user){//      ValidatorUtils.validateEntity(user);if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {return R.error("用户已存在");}userService.insert(user);return R.ok();}/*** 退出*/@GetMapping(value = "logout")public R logout(HttpServletRequest request) {request.getSession().invalidate();return R.ok("退出成功");}/*** 密码重置*/@IgnoreAuth@RequestMapping(value = "/resetPass")public R resetPass(String username, HttpServletRequest request){UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));if(user==null) {return R.error("账号不存在");}user.setPassword("123456");userService.update(user,null);return R.ok("密码已重置为:123456");}/*** 列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, Object> params,UserEntity user){EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));return R.ok().put("data", page);}/*** 列表*/@RequestMapping("/list")public R list( UserEntity user){EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();ew.allEq(MPUtil.allEQMapPre( user, "user")); return R.ok().put("data", userService.selectListView(ew));}/*** 信息*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") String id){UserEntity user = userService.selectById(id);return R.ok().put("data", user);}/*** 获取用户的session用户信息*/@RequestMapping("/session")public R getCurrUser(HttpServletRequest request){Long id = (Long)request.getSession().getAttribute("userId");UserEntity user = userService.selectById(id);return R.ok().put("data", user);}/*** 保存*/@PostMapping("/save")public R save(@RequestBody UserEntity user){//      ValidatorUtils.validateEntity(user);if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {return R.error("用户已存在");}userService.insert(user);return R.ok();}/*** 修改*/@RequestMapping("/update")public R update(@RequestBody UserEntity user){//        ValidatorUtils.validateEntity(user);UserEntity u = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername()));if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {return R.error("用户名已存在。");}userService.updateById(user);//全部更新return R.ok();}/*** 删除*/@RequestMapping("/delete")public R delete(@RequestBody Long[] ids){userService.deleteBatchIds(Arrays.asList(ids));return R.ok();}
}

业务层(Service)


package com.service;import java.util.List;
import java.util.Map;import org.apache.ibatis.annotations.Param;import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.service.IService;
import com.entity.UserEntity;
import com.utils.PageUtils;/*** 系统用户*/
public interface UserService extends IService<UserEntity> {PageUtils queryPage(Map<String, Object> params);List<UserEntity> selectListView(Wrapper<UserEntity> wrapper);PageUtils queryPage(Map<String, Object> params,Wrapper<UserEntity> wrapper);}

数据访问层(Dao)

package com.dao;import java.util.List;import org.apache.ibatis.annotations.Param;import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.pagination.Pagination;
import com.entity.UserEntity;/*** 用户*/
public interface UserDao extends BaseMapper<UserEntity> {List<UserEntity> selectListView(@Param("ew") Wrapper<UserEntity> wrapper);List<UserEntity> selectListView(Pagination page,@Param("ew") Wrapper<UserEntity> wrapper);}

基于SpringBoot的外卖点餐管理系统相关推荐

  1. Java毕业设计-外卖点餐管理系统

    计算机课程设计|毕业设计之外卖点餐管理系统代码-基于Springboot的外卖点餐管理系统 注意:该项目只展示部分功能,如需了解,评论区咨询即可. > > 所有工具下载链接: JDK版本下 ...

  2. springboot+vue+mysql外卖点餐管理系统源码(包安装+讲解)

     博主介绍:✌在职Java研发工程师.专注于程序设计.源码分享.技术交流.专注于Java技术领域和毕业设计✌ 项目名称 springboot+vue+mysql外卖点餐管理系统源码(包安装+讲解) 视 ...

  3. 用starUML画的软工课设:外卖点餐管理系统

    软件工程课设:外卖点餐管理系统 一.概述 二.可行性分析 2.1技术的可行性 2.2经济的可行性 2.3操作的可行性 2.4法律的可行性 2.5结论 三.需求分析 3.1功能性需求 3.2非功能性需求 ...

  4. 开题报告-基于Android的外卖点餐APP的设计与实现

    目录 1.课题研究立项依据 2.文献综述 3.课题研究的基本内容及预期目标或成果 4.课题的研究方案 5.研究进度安排 6.主要参考文献 1.课题研究立项依据 (内容格式要求:字体为5号宋体,行距为固 ...

  5. 基于Nodejs的外卖点餐平台的设计和实现

    <基于Nodejs的外卖点餐平台的设计和实现>该项目采用技术Nodejs.mysql数据库 ,项目含有源码.论文.PPT.配套开发软件.软件安装教程.项目发布教程.核心代码介绍视频等 软件 ...

  6. 【JAVA程序设计】(C00072)基于Springboot的网上点餐管理系统

    基于Springboot的网上点餐管理系统 项目简介 项目获取 开发环境 项目技术 运行截图 项目简介 基于springboot网上点餐系统共分为二个角色:系统管理员.用户 管理员角色包含以下功能: ...

  7. java基于springboot_vue的外卖点餐系统-计算机毕业设计

    开发环境 开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 数据库工具:Navicat11 开发软件:eclipse/myeclip ...

  8. python毕业设计作品基于django框架外卖点餐系统毕设成品(8)毕业设计论文模板

    整个项目包含了:开题报告 + 开题报告PPT + 任务书 + 中期报告 + 论文模板 + 答辩PPT等 + 项目源码 主要安介绍了系统在开发过程中所应用到的一些关键的技术 主要python技术介绍:框 ...

  9. python毕业设计作品基于django框架外卖点餐系统毕设成品(5)任务书

    整个项目包含了:开题报告 + 开题报告PPT + 任务书 + 中期报告 + 论文模板 + 答辩PPT等 + 项目源码 主要安介绍了系统在开发过程中所应用到的一些关键的技术 主要python技术介绍:框 ...

  10. python毕业设计作品基于django框架外卖点餐系统毕设成品(4)开题报告

    整个项目包含了:开题报告 + 开题报告PPT + 任务书 + 中期报告 + 论文模板 + 答辩PPT等 + 项目源码 主要安介绍了系统在开发过程中所应用到的一些关键的技术 主要python技术介绍:框 ...

最新文章

  1. 接口测试要如何做数据准备
  2. oracle-bone,Oracle Bone Inscriptions / 甲骨文
  3. html 下拉列表美化,JS+CSS实现美化的下拉列表框效果
  4. 【sklearn学习】随机森林分类、回归
  5. dfa转正则表达式_GitHub - hidva/re2dot: 根据正则表达式生成其对应 DFA 的状态转移图...
  6. BLOB存储图片文件二进制数据是非对错
  7. Android Dex文件详解
  8. 做了一款DTU,网络通信模块化,代码开源,可以二次开发
  9. 【图像配准】点云配准ICP算法介绍:基础流程、ICP算法的变种
  10. 【U8+】用友U8成本管理模块下,定额分配标准中无法取到新增存货的数据。
  11. 关联查询子查询效率简单比照
  12. 三维度重新评估新股价值
  13. 写了一个管理桌面图标的小工具
  14. 【Vue】快乐学习第四篇,组件访问及插槽使用
  15. springbootvue电影购票网站
  16. 敏捷项目管理5大工具
  17. nfs-service
  18. Windows下Apache Tomcat?的下载安装和使用
  19. Kai Ge - 8K壁纸V1.0
  20. Java学的好,工作不愁找

热门文章

  1. edp协议 netty_大牛轻松带你玩转Arduino智能硬件:EDP协议连接onenet平台
  2. 蓝字冲销是什么意思_会计记账,贷方红字,贷方蓝字什么意思
  3. .Net Core WebApi 模型验证的处理
  4. [渝粤教育] 西南科技大学 会计电算化 在线考试复习资料2021版(1)
  5. 破局数据库“卡脖子”:专精特新“小巨人”偶数科技迎风成长
  6. IJCAI2021强化学习相关论文集合推荐
  7. oracle 按天数统计数据
  8. #include <netinet/in.h> #include <netdb.h> 在windows下对应什么头文件
  9. permissionerror winerror 5 拒绝访问。
  10. ESP8266开发板刷WI-PWN固件(wifi杀手)教程(详细)