☰
springboot网上订餐系统51124-计算机课程设计、毕业设计
2026/10/12 2:23:38 网站建设 项目流程

前言

✨博主介绍:一线全栈工程师,毕设实战引路人。技术栈覆盖Java、Python、C#、PHP、Node.js及UniApp跨端开发,擅长多语言项目落地与架构设计。持续分享毕设源码、开题报告、技术选型心得与职场踩坑经验。用工程化思维写代码,帮你把毕设做成作品集。👍👍

👇精彩专栏 推荐订阅👇

海量实战库,源码任你选! 坐拥Java项目2000+套

海量实战库,源码任你选! 坐拥Python项目1000+套

海量实战库,源码任你选! 坐拥小程序/app项目500+套

✅获取源码请私信✅

感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以找我咨询,希望帮助更多的人❤️

系统实现

普通用户功能实现

顾客在首页浏览菜品信息列表。点击头部筛选键,可以按价格、发布时间或者销量对食物进行排序,还可以进行分类筛选某类菜。点击任一菜肴均可跳转到详情页面。

菜品信息界面

在菜品详情页面,顾客可以浏览菜品图文详情。点击对应图标可以进行收藏、点赞以及分享的操作,点击“加入购物车”即可把该菜品添加到购物车内,点击“立即购买”会进入提交订单页面。

详情页操作界面

在详情页面下方是评价板块,在这里可以浏览其他用户对该商品的评价,在底部的输入框内输入评价内容,点击“提交评论”就可以发表自己的看法了。

评价区操作界面

顾客从下方导航条进入到“我的购物车”,在这里可以浏览所点的菜品,轻触到菜右边的减号或者加好可以对所购数量进行调整,轻触删除图标可以将菜从购物车中移除。确定好所点菜品以后,轻触下方“购买”按键开始订单确认流程。

我的购物车界面

确认订单页面显示订单详情、送餐地址与付款方式。顾客需要核对信息。点击收货地址框会跳转至地址详情页面,在这里可以调用地图定位或者自行填写地址并保存。然后回到确认订单页面,点击“点击确认”跳转到支付页面。

确认订单界面

支付页面显示商品总价,支持微信支付、支付宝支付、网银支付三种渠道。用户选择一个进行支付后,点击“确认支付”,即完成支付过程。

支付页面

商家功能实现

商家登陆之后进入统计中心。页面以图表的方式显示商品销售金额、商品销售数量的统计结果供商家掌握经营情况。

统计中心界面

商户端进入菜品信息管理页面,在搜索框内输入信息进行菜品检索,点击“重置”清除条件,点击“删除”移除菜品,点击“新增”进入编辑页面。

菜品信息管理界面

新增或编辑菜品,商家需要上传封面图和主图。可点击“增加规格”,为菜品增加不同的规格,并分别为每个规格填写名称,设置售价、原价,以及数量和上架状态。编辑好后进行保存。

详情页/新增操作界面

在订单列表页面中,商户可以根据订单号等相关信息来搜索订单,可以对查询条件进行重置、也可以删除订单信息。点击“导出”,可以把订单信息以文件的形式导出来。

订单列表界面

订单配送列表显示等待配送订单。商户可以执行查询、重置、删除和导出功能。单击“详情”,可看到订单的具体内容,而对于处于等待发货状态的订单,则可以通过点击“发货”键以实现发货的目的。

订单配送列表界面

管理员功能实现

管理人员具有统计中心的访问权限,可以浏览整个平台的商品销售金额及销售量统计曲线图,了解总体商品销量状况。

统计中心界面

在商家管理界面中,管理员可以查看已经加盟的商家,具有恢复查询条件功能。点击“删除”,将商家清退;点击“详情”,浏览商家具体信息。

商家管理界面

新闻资讯管理页面显示资讯列表,允许进行条件检索并可以重置。管理员可以删除资讯或者通过点击“新增类别”,建立资讯类别。

新闻资讯管理界面

点选“新增资讯”,跳转到编辑页面,管理员需要给资讯上传封面图片,并利用富文本编辑器对资讯的标题、具体内容等进行编辑,编辑完成之后发布。

资讯业务操作界面

在菜品分类管理页面,管理员可以浏览查询已有的分类,可以清除无用的分类,也可以点击“增加一级分类”,“增加二级分类”按键以丰富分类层次体系。

菜品分类管理界面

管理员能够浏览平台全部的菜品信息,并且可以进行查询、重置以及删除的操作,单击“详情”可以看到菜品的所有信息但是不能直接对其进行修改。

菜品信息管理界面

在订单管理界面,管理员可以查看平台全部订单信息,允许清空检索条件。“导出”按钮用于下载订单信息以便进一步研究。

订单管理界面

数据库参考

CREATE TABLE `logistics_delivery` ( `logistics_delivery_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '物流配送ID', `order_number` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '订单号', `product_name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '商品名称', `purchase_quantity` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '购买数量', `total_transaction_amount` double(10,2) DEFAULT '0.00' COMMENT '交易总额', `the_date_of_issuance` date DEFAULT NULL COMMENT '发货日期', `delivery_number` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '配送订单', `ordinary_users` int(11) DEFAULT '0' COMMENT '普通用户', `shipping_address` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '收货地址', `delivery_status` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '配送状态', `signing_status` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '签收状态', `recommend` int(11) NOT NULL DEFAULT '0' COMMENT '智能推荐', `contact_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '联系人名字', `merchant_id` int(11) DEFAULT NULL COMMENT '商家id', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `courier_type` int(11) NOT NULL DEFAULT '1' COMMENT '配送方式(1:商家配送,2:其他配送)', `courier_id` int(11) DEFAULT NULL COMMENT '配送员ID', `courier_name` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '配送员名字', `courier_detail` longtext COLLATE utf8mb4_general_ci COMMENT '配送详情', PRIMARY KEY (`logistics_delivery_id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='物流配送'; DROP TABLE IF EXISTS `goods`; CREATE TABLE `goods` ( `goods_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT COMMENT '产品ID', `title` varchar(125) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '标题', `img` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '封面图:用于显示于产品列表页', `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '描述', `price_ago` double(8,2) unsigned NOT NULL DEFAULT '0.00' COMMENT '原价', `price` double(8,2) unsigned NOT NULL DEFAULT '0.00' COMMENT '卖价', `sales` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '销量', `inventory` int(11) NOT NULL DEFAULT '0' COMMENT '商品库存', `type` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '商品分类', `hits` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '点击量', `content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '正文', `img_1` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '主图1', `img_2` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '主图2', `img_3` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '主图3', `img_4` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '主图4', `img_5` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '主图5', `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `customize_field` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '自定义字段', `source_table` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '来源表', `source_field` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '来源字段', `source_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '来源ID', `user_id` int(11) unsigned DEFAULT '0' COMMENT '添加人', `integral` int(11) DEFAULT '0' COMMENT '积分', `list_status` smallint(1) DEFAULT '1' COMMENT '上架状态(0:下架;1上架)', PRIMARY KEY (`goods_id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='商品信息';

代码参考

package com.project.demo.controller; import com.project.demo.entity.BusinessUser; import com.project.demo.service.BusinessUserService; import com.alibaba.fastjson.JSON; import com.project.demo.entity.User; import com.project.demo.controller.base.BaseController; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import org.springframework.util.StringUtils; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import javax.persistence.Query; import javax.servlet.http.HttpServletRequest; import java.io.IOException; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.*; /** * 商家用户:(BusinessUser)表控制层 * */ @RestController @RequestMapping("/business_user") public class BusinessUserController extends BaseController<BusinessUser, BusinessUserService> { /** * 商家用户对象 */ @Autowired public BusinessUserController(BusinessUserService service) { setService(service); } @PostMapping("/add") @Transactional public Map<String, Object> add(HttpServletRequest request) throws IOException { Map<String,Object> paramMap = service.readBody(request.getReader()); paramMap.entrySet().removeIf(entry -> { Object value = entry.getValue(); return value instanceof String && ((String) value).isEmpty(); }); BusinessUser business_user = new BusinessUser(); business_user.setBusiness_name(paramMap.get("business_name")==null?null:String.valueOf(paramMap.get("business_name"))); business_user.setShop_name(paramMap.get("shop_name")==null?null:String.valueOf(paramMap.get("shop_name"))); business_user.setMerchant_mobile_phone(paramMap.get("merchant_mobile_phone")==null?null:String.valueOf(paramMap.get("merchant_mobile_phone"))); business_user.setUserId(paramMap.get("user_id")==null?null:Integer.valueOf(String.valueOf(paramMap.get("user_id")))); business_user.setCreate_by(paramMap.get("create_by")==null?null:Integer.valueOf(String.valueOf(paramMap.get("create_by")))); this.addEntity(business_user); System.out.println("商家用户新增成功"); return success(1); } @PostMapping("/set") @Transactional public Map<String, Object> set(HttpServletRequest request) throws IOException { Map<String,String> queryMap = service.readQuery(request); Map<String,String> configMap = service.readConfig(request); Map<String,Object> paramMap = service.readBody(request.getReader()); paramMap.entrySet().removeIf(entry -> { Object value = entry.getValue(); return value instanceof String && ((String) value).isEmpty(); }); BusinessUser business_user = new BusinessUser(); business_user.setBusiness_name(paramMap.get("business_name")==null?null:String.valueOf(paramMap.get("business_name"))); business_user.setShop_name(paramMap.get("shop_name")==null?null:String.valueOf(paramMap.get("shop_name"))); business_user.setMerchant_mobile_phone(paramMap.get("merchant_mobile_phone")==null?null:String.valueOf(paramMap.get("merchant_mobile_phone"))); business_user.setUserId(paramMap.get("user_id")==null?null:Integer.valueOf(String.valueOf(paramMap.get("user_id")))); this.setEntity(queryMap,configMap,business_user); System.out.println("商家用户修改成功"); return success(1); } /** * 根据 user_id 查询用户及其附加表信息 * * @param userId 用户ID * @return 包含用户信息和附加信息的对象 */ @GetMapping("/get_user_by_id") public Map<String,Object> getUserById(Long userId) { Map<String,String> queryMap = new HashMap<>(); queryMap.put("user_id",String.valueOf(userId)); // 查询用户基本信息 Map<String,Object> registeredMap = this.getObjByMap(queryMap); BusinessUser business_user = JSON.parseObject(JSON.toJSONString(registeredMap),BusinessUser.class); if (business_user != null) { // 查询用户附加信息 Map<String,Object> userMap = this.getObjByMap(queryMap); User user = JSON.parseObject(JSON.toJSONString(userMap),User.class); Map<String,Object> result = new HashMap<>(); result.put("user",user); result.put("business_user",business_user); return result; } else { throw new RuntimeException("商家用户不存在}"); package com.project.demo.controller; import com.project.demo.controller.base.BaseController; import com.project.demo.entity.LogisticsDelivery; import com.project.demo.service.LogisticsDeliveryService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * 物流 * */ @RestController @RequestMapping("logistics_delivery") public class LogisticsDeliveryController extends BaseController<LogisticsDelivery, LogisticsDeliveryService> { /** * 服务对象 */ @Autowired public LogisticsDeliveryController(LogisticsDeliveryService service) { setService(service);

前端:基于Vue.js框架构建用户界面,使用HTML5、CSS3和JavaScript实现页面结构与交互逻辑,通过Vue Router管理路由,Vuex或Pinia维护全局状态。采用Element UI或Vant组件库快速搭建界面,Axios封装HTTP请求实现与后端的数据通信。

后端:基于springboot框架搭建,遵循Controller-Service-Mapper三层架构。Controller层接收前端请求并校验参数,Service层处理核心业务逻辑,Mapper层通过MyBatis或MyBatis-Plus完成数据库操作。使用Spring Security或Shiro结合JWT实现用户认证与权限控制。

数据库:采用MySQL存储持久化数据,Redis缓存热点信息以提升系统性能。

开发工具:使用IDEA开发后端,VSCode或HBuilderX开发前端,Git进行版本管理,Maven和npm分别管理前后端依赖。

源码获取

私信联系我即可~

大家点赞、收藏、关注、评论啦

👇精彩专栏 推荐订阅👇

海量实战库,源码任你选! 坐拥Java项目2000+套

海量实战库,源码任你选! 坐拥Python项目1000+套

海量实战库,源码任你选! 坐拥小程序/app项目500+套

✅获取源码请私信✅

感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以找我咨询,希望帮助更多的人❤️

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询