计算机毕业设计 社区买菜系统 Vue+SpringBoot+MySQL

作者主页:Designer 小郑
作者简介:Java全栈软件工程师一枚,来自浙江宁波,负责开发管理公司OA项目,专注软件前后端开发、系统定制、远程技术指导。CSDN学院、蓝桥云课认证讲师,全栈领域优质创作者。

在这里插入图片描述

项目内容
项目名称 社区买菜系统( S 011 ) \color{red}{社区买菜系统(S011)} 社区买菜系统(S011
项目类型付费项目
源码获取源码自助获取
部署版无需源码即可在本地运行
交流答疑帖你可以在贴吧中交流讨论该项目
项目录屏你可以查看本项目的动态演示
增值服务 文档、部署、讲解 \color{red}{文档、部署、讲解} 文档、部署、讲解】《付费项目服务标准》

基于Vue+SpringBoot+MySQL的社区买菜系统包含菜品分类模块、菜品档案模块、菜品订单模块、菜品收藏模块、收货地址模块,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,社区买菜系统基于角色的访问控制,给买菜者、菜品管理员使用,可将权限精确到按钮级别,您可以自定义角色并分配权限,系统适合设计精确的权限约束需求。

目录

  • 一、摘要
  • 二、系统设计
    • 2.1 功能模块设计
      • 2.1.1 数据中心模块
      • 2.1.2 菜品分类模块
      • 2.1.3 菜品档案模块
      • 2.1.4 菜品订单模块
      • 2.1.5 菜品收藏模块
      • 2.1.6 收货地址模块
    • 2.2 可行性分析
    • 2.3 用例分析
    • 2.4 实体类设计
      • 2.4.1 菜品分类模块
      • 2.4.2 菜品档案模块
      • 2.4.3 菜品订单模块
      • 2.4.4 菜品收藏模块
      • 2.4.5 收货地址模块
  • 三、系统实现
    • 3.1 系统展示
    • 3.2 配套文档展示
  • 四、核心代码展示
    • 4.1 菜品实体类设计
    • 4.2 收货地址实体类设计
    • 4.3 查询菜品接口设计
    • 4.4 菜品下单接口设计
    • 4.5 菜品收藏接口设计
  • 五、免责说明


一、摘要

随着计算机技术和网络技术的日益普及,给社区菜市场信息化建设带来了机遇,利用先进技术建立多种方式的社区买菜系统,这是一个明智的选择。通过电子屏和网站两种方式发布市场管理信息、商品信息(包括价格、质量等),能够起到增强市场和市民之间的信息交流,达到繁荣市场,更好的为市民服务之目的。本文采用B/S 模式相结合的架构,设计和实现了基于 Java EE 的社区买菜系统。


二、系统设计

2.1 功能模块设计

社区买菜系统的功能性需求主要包含数据中心模块、菜品分类模块、菜品档案模块、菜品订单模块、菜品收藏模块、收货地址模块这六大模块,系统是基于浏览器运行的web管理后端,其中各个模块详细说明如下。
在这里插入图片描述

2.1.1 数据中心模块

数据中心模块包含了社区买菜系统的系统基础配置,如登录用户的管理、运营公司组织架构的管理、用户菜单权限的管理、系统日志的管理、公用文件云盘的管理。

其中登录用户管理模块,由管理员负责运维工作,管理员可以对登录用户进行增加、删除、修改、查询操作。

组织架构,指的是高校的组织架构,该模块适用于管理这些组织架构的部门层级和教师的部门归属情况。

用户菜单权限管理模块,用于管理不同权限的用户,拥有哪些具体的菜单权限。

系统日志的管理,用于维护用户登入系统的记录,方便定位追踪用户的操作情况。

公用云盘管理模块,用于统一化维护社区买菜系统中的图片,如合同签订文件、合同照片等等。

在这里插入图片描述

2.1.2 菜品分类模块

不同的菜品有着不同的类型,不同类型的菜品往往需要区分管理,所以需要建立菜品分类模块,菜品分类的数据包括类型名称、类型状态、排序值、备注、创建人、创建时间、更新人、更新时间,管理员可以新增、删除、编辑和条件查询角色数据,用户可以查询管理员发布的角色数据。
在这里插入图片描述

2.1.3 菜品档案模块

菜品是社区买菜系统的核心实体,需要建立菜品档案模块对系统上架的菜品数据进行管理,菜品的字段包括菜品名称、菜品介绍、菜品分类、剩余库存、创建人、创建时间、更新人、更新时间,管理员可以新增、删除、编辑和条件查询菜品数据,用户可以查询管理员发布的菜品数据。
在这里插入图片描述

2.1.4 菜品订单模块

有了菜品数据之后,用户就可以在社区买菜系统中下单了,菜品订单的数据包括菜品、下单数量、总价、收货地址、创建人、创建时间、更新人、更新时间,用户可以发起下单申请,管理员可以处理用户发起的菜品订单。

在这里插入图片描述

2.1.5 菜品收藏模块

为了更好的服务用户,社区买菜系统支持对菜品进行收藏,以便于用户更方便快捷的下单自己喜欢的菜品,菜品收藏字段包括菜品ID、菜品名称、菜品图片、收藏人、创建人、创建时间、更新人、更新时间,用户可以发起菜品收藏申请,管理员可以查询用户的菜品收藏信息。

在这里插入图片描述

2.1.6 收货地址模块

为了方便用户更快捷的下单,用户可以对自己的收货地址进行管理,在菜品下单时可以快捷选择自己维护的收货地址。收货地址字段包括挂靠人、收货地址、联系人、联系电话、创建人、创建时间、更新人、更新时间,用户可以新增、编辑、删除和条件查询自己的收货地址,管理员可以查询全部用户的收货地址。

在这里插入图片描述

2.2 可行性分析

我将首先调查同类型市场的社区买菜系统,了解其优缺点,然后询问一些与系统和买菜相关的专家,并与他们讨论我们的初步想法。然后,我将对客户进行实地调查,以了解他们对这类社区买菜系统的具体要求。最后,我们将总结上述所有要点,以澄清我们的系统与类似产品之间的区别,并确定我们将开发的社区买菜系统的特点,使其在推出后在市场上更有前景。

2.3 用例分析

UML是面向对象的图形化建模语言,具有表示容易,定义友好,适用范畴广泛,功能强大。

用例图是用例模型的一种,需求分析人员可采用用例图表示用户操作行为。社区买菜系统的用例图设计主要包括用户用例设计和管理员用例设计。
在这里插入图片描述

2.4 实体类设计

2.4.1 菜品分类模块

在这里插入图片描述

2.4.2 菜品档案模块

在这里插入图片描述

2.4.3 菜品订单模块

在这里插入图片描述

2.4.4 菜品收藏模块

在这里插入图片描述

2.4.5 收货地址模块

在这里插入图片描述


三、系统实现

3.1 系统展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2 配套文档展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


四、核心代码展示

4.1 菜品实体类设计

@Table(name = "a_dish")
@TableName("a_dish")
@ApiModel(value = "菜品")
public class Dish extends ZwzBaseEntity {private static final long serialVersionUID = 1L;@ApiModelProperty(value = "菜品名称")private String title;@ApiModelProperty(value = "菜品介绍")private String content;@ApiModelProperty(value = "菜品分类")private String type;@ApiModelProperty(value = "单价")private BigDecimal unit;@ApiModelProperty(value = "剩余库存")private BigDecimal stock;@ApiModelProperty(value = "供应商")private String supplier;@ApiModelProperty(value = "图片")private String image;@Transient@TableField(exist=false)@ApiModelProperty(value = "是否收藏")private Boolean collectionFlag;
}

4.2 收货地址实体类设计

@Table(name = "a_shipping_address")
@TableName("a_shipping_address")
@ApiModel(value = "收货地址")
public class ShippingAddress extends ZwzBaseEntity {private static final long serialVersionUID = 1L;@ApiModelProperty(value = "挂靠人ID")private String userId;@ApiModelProperty(value = "挂靠人")private String userName;@ApiModelProperty(value = "收货地址")private String address;@ApiModelProperty(value = "收货人")private String consignee;@ApiModelProperty(value = "联系电话")private String mobile;
}

4.3 查询菜品接口设计

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询菜品")
public Result<IPage<Dish>> getByPage(@ModelAttribute Dish dish ,@ModelAttribute PageVo page){QueryWrapper<Dish> qw = new QueryWrapper<>();if(!ZwzNullUtils.isNull(dish.getTitle())) {qw.like("title",dish.getTitle());}if(!ZwzNullUtils.isNull(dish.getContent())) {qw.like("content",dish.getContent());}if(!ZwzNullUtils.isNull(dish.getSupplier())) {qw.like("supplier",dish.getSupplier());}User currUser = securityUtil.getCurrUser();IPage<Dish> data = iDishService.page(PageUtil.initMpPage(page),qw);for (Dish vo : data.getRecords()) {QueryWrapper<DishCollection> collQw = new QueryWrapper<>();collQw.eq("user_id",currUser.getId());collQw.eq("dish_id",vo.getId());vo.setCollectionFlag(iDishCollectionService.count(collQw) > 0L);}return new ResultUtil<IPage<Dish>>().setData(data);
}

4.4 菜品下单接口设计

@RequestMapping(value = "/addOneOrder", method = RequestMethod.POST)
@ApiOperation(value = "从购物车下单")
public Result<Object> addOneOrder(@RequestParam String[] ids){List<DishOrderItem> itemList = new ArrayList<>();List<ShoppingCart> cartList = new ArrayList<>();BigDecimal sumMoney = BigDecimal.ZERO;for(String id: ids) {ShoppingCart sc = iShoppingCartService.getById(id);if(sc == null) {return ResultUtil.error("购物车已被删除");}cartList.add(sc);Dish dish = iDishService.getById(sc.getDishId());if(dish == null) {return ResultUtil.error("菜品已下架");}DishOrderItem item = new DishOrderItem();item.setDishId(dish.getId());item.setDishName(dish.getTitle());item.setUnit(dish.getUnit());item.setImage(dish.getImage());item.setNumber(sc.getNumber());item.setSumMoney(item.getUnit().multiply(item.getNumber()));itemList.add(item);sumMoney = sumMoney.add(item.getSumMoney());}User currUser = securityUtil.getCurrUser();DishOrder order = new DishOrder();order.setUserId(currUser.getId());order.setUserName(currUser.getNickname());order.setOrderTime(DateUtil.now());order.setSumMoney(sumMoney);order.setOrderSize(BigDecimal.valueOf(itemList.size()));order.setStatus("已下单");iDishOrderService.saveOrUpdate(order);for (DishOrderItem item : itemList) {item.setOrderId(order.getId());iDishOrderItemService.saveOrUpdate(item);}for (ShoppingCart vo : cartList) {iShoppingCartService.removeById(vo.getId());}return ResultUtil.success();
}

4.5 菜品收藏接口设计

@RequestMapping(value = "/addOne", method = RequestMethod.GET)
@ApiOperation(value = "添加单条收藏")
public Result<Object> addOne(@RequestParam String id){Dish dish = iDishService.getById(id);if(dish == null) {return ResultUtil.error("菜品不存在");}User currUser = securityUtil.getCurrUser();QueryWrapper<DishCollection> qw = new QueryWrapper<>();qw.eq("user_id",currUser.getId());qw.eq("dish_id",dish.getId());if(iDishCollectionService.count(qw) > 0L) {return ResultUtil.error("您已收藏");}DishCollection dc = new DishCollection();dc.setDishId(dish.getId());dc.setDishName(dish.getTitle());dc.setUserId(currUser.getId());dc.setUserName(currUser.getNickname());dc.setCollectionTime(DateUtil.now());iDishCollectionService.saveOrUpdate(dc);return ResultUtil.success();
}

五、免责说明

  • 本项目仅供个人学习使用,商用授权请联系博主,否则后果自负。
  • 博主拥有本软件构建后的应用系统全部内容所有权及独立的知识产权,拥有最终解释权。
  • 如有问题,欢迎在仓库 Issue 留言,看到后会第一时间回复,相关意见会酌情考虑,但没有一定被采纳的承诺或保证。

下载本系统代码或使用本系统的用户,必须同意以下内容,否则请勿下载!

  1. 出于自愿而使用/开发本软件,了解使用本软件的风险,且同意自己承担使用本软件的风险。
  2. 利用本软件构建的网站的任何信息内容以及导致的任何版权纠纷和法律争议及后果和博主无关,博主对此不承担任何责任。
  3. 在任何情况下,对于因使用或无法使用本软件而导致的任何难以合理预估的损失(包括但不仅限于商业利润损失、业务中断与业务信息丢失),博主概不承担任何责任。
  4. 必须了解使用本软件的风险,博主不承诺提供一对一的技术支持、使用担保,也不承担任何因本软件而产生的难以预料的问题的相关责任。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/97962.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FPGA/IC秋招面试题 1(解析版)

分享个人觉得遇到还不错的题&#xff0c;后续有会继续补充。。。 以下题目均来自网络平台&#xff0c;用于学习交流如有侵权立马删除!!! 1. Verilog语言中&#xff0c;下面哪些语句不可被综合() A. #delay语句 B. initial语句 C. always语句 D. 用gen…

新兴技术对电子元器件供应链的影响

新兴技术对电子元器件供应链产生了广泛的影响&#xff0c;这些影响涉及供应链管理、制造、设计和性能等多个方面。以下是新兴技术对电子元器件供应链的主要影响&#xff1a; 自动化和机器人技术&#xff1a; 自动化和机器人技术在电子元器件制造和装配过程中的应用不断增加。这…

软件测试/测试开发丨Selenium Web自动化多浏览器处理

点此获取更多相关资料 本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接&#xff1a;https://ceshiren.com/t/topic/27185 一、多浏览器测试介绍 1.1、多浏览器测试背景 用户使用的浏览器(firefox,chrome,IE 等)web 应用应该能在任何浏览器上正常的工作&#xff0c;这样…

云原生Kubernetes:Kubeadm部署K8S单Master架构

目录 一、理论 1.kubeadm 2.Kubeadm部署K8S单Master架构 3.环境部署 4.所有节点安装docker 5.所有节点安装kubeadm&#xff0c;kubelet和kubectl 6.部署K8S集群 7.安装dashboard 8.安装Harbor私有仓库 9.内核参数优化方案 二、实验 1.Kubeadm部署K8S单Master架构 …

shell bash中设置命令set

1 Preface/Foreword set命令用于shell脚本在执行命令时候&#xff0c;遇到异常的处理机制。 2 Usage 2.1 set -e 当执行命令过程中遇到异常&#xff0c;那么就退出脚本&#xff0c;不会往下执行其它命令。 #!/bin/bash #set -eroot GIT_TAG${CI_BUILD_TAG-NOTAG} GIT_REV…

如何合并为pdf文件?合并为pdf文件的方法

在数字化时代&#xff0c;人们越来越依赖电子文档进行信息交流和存储。合并为PDF成为一种常见需求&#xff0c;它能将多个文档合而为一&#xff0c;方便共享和管理。无论是合并多个单页文档&#xff0c;还是将多页文档合并&#xff0c;操作都变得简单高效。那么。如何合并为pdf…

数学建模--非整数规划求解的Python实现

目录 1.算法流程简介 2.算法核心代码 3.算法效果展示 1.算法流程简介 #非线性规划模型求解: #我们采用通用的minimize函数来求解 #minimize(f,x,method,bounds,contrains) #f是待求函数 #x是代求的自变量 #method是求解方法 #bounds是取值范围边界 #contrains是约束条件 &q…

图片水印清晰方法

1. 将图片放入 word 中 2. 格式 - 更正 - 图片更正选项 3. 参数如下 注&#xff1a;此参数适用于白底黑字灰水印的情况&#xff0c;其余情况请自行调试参数

一文速学-让神经网络不再神秘,一天速学神经网络基础(六)-基于数值微分的反向传播

前言 思索了很久到底要不要出深度学习内容&#xff0c;毕竟在数学建模专栏里边的机器学习内容还有一大半算法没有更新&#xff0c;很多坑都没有填满&#xff0c;而且现在深度学习的文章和学习课程都十分的多&#xff0c;我考虑了很久决定还是得出神经网络系列文章&#xff0c;…

vite+vue3+element-plus

vitevue3element-plus 1.开始 npm create vitelatest app -- --template vuenpm installlnpm run dev2.引入element-ui npm install element-plus修改main.js import ElementPlus from element-plus import element-plus/dist/index.css createApp(App).use(ElementPlus).m…

gerrit 如何提交进行review

前言 本文主要介绍如何使用gerrit进行review。 下述所有流程都是参考&#xff1a; https://gerrit-review.googlesource.com/Documentation/intro-gerrit-walkthrough.html 先给一个commit后但是还没有push上去的一个办法&#xff1a; git reset --hard HEAD^可以多次reset.…

Win10搭建VisualSvn Server

Win10搭建VisualSvn Server 目录 Win10搭建VisualSvn Server一、下载VisualSvn Server安装包二、安装VisualSvn Server三、配置和使用VisualSVN Server四、添加用户及权限设定方法五、创建目录及配置权限 1、服务端&#xff1a;有集成了Subversion和Apache、安装使用非常简单且…