【开源】SpringBoot框架开发天沐瑜伽馆管理系统

在这里插入图片描述


目录

  • 一、摘要
    • 1.1 项目介绍
    • 1.2 项目录屏
  • 二、功能模块
    • 2.1 数据中心模块
    • 2.2 瑜伽课程模块
    • 2.3 课程预约模块
    • 2.4 系统公告模块
    • 2.5 课程评价模块
    • 2.6 瑜伽器械模块
  • 三、系统设计
    • 3.1 实体类设计
      • 3.1.1 瑜伽课程
      • 3.1.2 瑜伽课程预约
      • 3.1.3 系统公告
      • 3.1.4 瑜伽课程评价
    • 3.2 数据库设计
      • 3.2.1 瑜伽课程表
      • 3.2.2 瑜伽课程预约表
      • 3.2.3 系统公告表
      • 3.2.4 瑜伽课程选课表
      • 3.2.5 学生成绩表
  • 四、系统展示
  • 五、核心代码
    • 5.1 查询瑜伽课程
    • 5.2 瑜伽课程预约
    • 5.3 瑜伽课程评价
    • 5.4 查询瑜伽器械
    • 5.5 新增公告
  • 六、免责说明


一、摘要

1.1 项目介绍

基于JAVA+Vue+SpringBoot+MySQL的天沐瑜伽馆管理系统,包含了瑜伽课程、课程预约、课程安排、课程评价、瑜伽器械、系统公告模块,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,天沐瑜伽馆管理系统基于角色的访问控制,给瑜伽学员、瑜伽教练、瑜伽管理员使用,可将权限精确到按钮级别,您可以自定义角色并分配权限,系统适合设计精确的权限约束需求。

1.2 项目录屏


二、功能模块

本文设计的天沐瑜伽馆管理系统的包括了系统数据中心模块,用来存放管理系统通用的模块,另外分别设计了瑜伽课程模块、课程预约模块、系统公告模块、课程评价模块和瑜伽器械模块这五大模块,用于存放系统的核心业务逻辑。

在这里插入图片描述

2.1 数据中心模块

数据中心模块包含了对天沐瑜伽馆管理系统的基础模块,比如管理谁可以登录这套系统,记录这些人登录系统做了什么,不同的人拥有不同权限的管理。

2.2 瑜伽课程模块

瑜伽课程模块用于对瑜伽课程的数据进行管理,其中包括课程名称、课程介绍、课程类型、讲师ID、讲师、课程图片、课程价格、创建人等,可以通过此模块对瑜伽课程数据进行添加、编辑更新、删除、查询操作。

2.3 课程预约模块

课程预约模块是学生对课程的预约信息进行管理,学生可以对喜欢的瑜伽课程进行预约操作,包括团课和私教课程,瑜伽课程预约的字段包括课程ID、课程名称、课程介绍、课程类型、课程图片、课程价格、预约人、预约时间等,学生可以对管理员发布的瑜伽课程进行预约,也可以查询自己的历史预约情况,管理员可以维护学生的预约记录。

2.4 系统公告模块

系统公告模块用于管理员对系统公告的维护,系统公告的作用就是通知相关信息给学员,比如瑜伽课程的停课、调课信息等。系统公告字段其中包括公告标题、公告内容、图片、状态、排序值、发布人、创建人、创建时间等,瑜伽管理员可以增加、删除、编辑和条件查询系统公告,瑜伽学生可以查询系统公告。

2.5 课程评价模块

课程评价模块是维护学生的瑜伽课程的评价,当学生完成对某个瑜伽课程的学习后,有权对该瑜伽课程进行评价,以便于改善该课程的质量,瑜伽评价字段包括课程ID、课程名称、评价等级、评语、学生ID、学生、评价时间、创建人等。

2.6 瑜伽器械模块

瑜伽器械模块是维护瑜伽课程中所需要的器械数据,瑜伽机械是学生学习瑜伽课程的必备条件,所以系统设计了这个模块,瑜伽器械字段包括器械名称、品牌、功能用途、厂商、采购价、图片、备注、创建人等,瑜伽管理员可以新增、删除、修改瑜伽机械信息,瑜伽学员可以查询管理员发布的瑜伽器械明细。


三、系统设计

3.1 实体类设计

3.1.1 瑜伽课程

在这里插入图片描述

3.1.2 瑜伽课程预约

在这里插入图片描述

3.1.3 系统公告

在这里插入图片描述

3.1.4 瑜伽课程评价

在这里插入图片描述

3.2 数据库设计

3.2.1 瑜伽课程表

在这里插入图片描述

3.2.2 瑜伽课程预约表

在这里插入图片描述

3.2.3 系统公告表

在这里插入图片描述

3.2.4 瑜伽课程选课表

在这里插入图片描述

3.2.5 学生成绩表

在这里插入图片描述

本章是对天沐瑜伽馆管理系统的设计部分。这个章节介绍了天沐瑜伽馆管理系统的设计基本思想,和各个模块的设计思想,设计了瑜伽课程模块、课程预约模块、系统公告模块、课程评价模块、瑜伽器械模块和数据中心模块。


四、系统展示

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


五、核心代码

5.1 查询瑜伽课程

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询瑜伽课程")
public Result<IPage<YogaCurriculum>> getByPage(@ModelAttribute YogaCurriculum yogaCurriculum ,@ModelAttribute PageVo page){QueryWrapper<YogaCurriculum> qw = new QueryWrapper<>();if(!ZwzNullUtils.isNull(yogaCurriculum.getTitle())) {qw.like("title",yogaCurriculum.getTitle());}if(!ZwzNullUtils.isNull(yogaCurriculum.getType())) {qw.eq("type",yogaCurriculum.getType());}if(!ZwzNullUtils.isNull(yogaCurriculum.getUserName())) {qw.like("user_name",yogaCurriculum.getUserName());}User currUser = securityUtil.getCurrUser();IPage<YogaCurriculum> data = iYogaCurriculumService.page(PageUtil.initMpPage(page),qw);for (YogaCurriculum vo : data.getRecords()) {QueryWrapper<YogaOrder> orderQw = new QueryWrapper<>();orderQw.eq("curriculum_id",vo.getId());orderQw.eq("order_id",currUser.getId());vo.setOrderFlag(iYogaOrderService.count(orderQw));}return new ResultUtil<IPage<YogaCurriculum>>().setData(data);
}

5.2 瑜伽课程预约

@RequestMapping(value = "/addOne", method = RequestMethod.GET)
@ApiOperation(value = "新增预约")
public Result<Object> addOne(@RequestParam String id){YogaCurriculum c = iYogaCurriculumService.getById(id);if(c == null) {return ResultUtil.error("瑜伽课程不存在");}YogaOrder o = new YogaOrder();o.setCurriculumId(c.getId());o.setCurriculumName(c.getTitle());o.setContent(c.getContent());o.setType(c.getType());o.setUserId(c.getUserId());o.setUserName(c.getUserName());o.setImage(c.getImage());o.setPrice(c.getPrice());User currUser = securityUtil.getCurrUser();o.setOrderId(currUser.getId());o.setOrderName(currUser.getNickname());o.setOrderTime(DateUtil.now());// 扣除费用User user = iUserService.getById(currUser.getId());if(o.getPrice().compareTo(user.getMoney()) > 0) {return ResultUtil.error("余额不足");}user.setMoney(user.getMoney().subtract(o.getPrice()));iUserService.saveOrUpdate(user);iYogaOrderService.saveOrUpdate(o);return ResultUtil.success();
}

5.3 瑜伽课程评价

@RequestMapping(value = "/addAppraise", method = RequestMethod.GET)
@ApiOperation(value = "新增评价")
public Result<YogaArrange> addAppraise(@RequestParam String id,@RequestParam String level,@RequestParam String content){YogaCurriculum c = iYogaCurriculumService.getById(id);if(c == null) {return ResultUtil.error("瑜伽课程不存在");}User currUser = securityUtil.getCurrUser();YogaAppraise a = new YogaAppraise();a.setCurriculumId(c.getId());a.setCurriculumName(c.getTitle());a.setLevel(level);a.setContent(content);a.setOrderId(currUser.getId());a.setOrderName(currUser.getNickname());a.setOrderTime(DateUtil.now());iYogaAppraiseService.saveOrUpdate(a);return ResultUtil.success();
}

5.4 查询瑜伽器械

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询瑜伽器械")
public Result<IPage<YogaApparatus>> getByPage(@ModelAttribute YogaApparatus yogaApparatus ,@ModelAttribute PageVo page){QueryWrapper<YogaApparatus> qw = new QueryWrapper<>();if(!ZwzNullUtils.isNull(yogaApparatus.getTitle())) {qw.like("title",yogaApparatus.getTitle());}if(!ZwzNullUtils.isNull(yogaApparatus.getBrand())) {qw.like("brand",yogaApparatus.getBrand());}if(!ZwzNullUtils.isNull(yogaApparatus.getPurpose())) {qw.like("purpose",yogaApparatus.getPurpose());}IPage<YogaApparatus> data = iYogaApparatusService.page(PageUtil.initMpPage(page),qw);return new ResultUtil<IPage<YogaApparatus>>().setData(data);
}

5.5 新增公告

@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = "新增公告")
public Result<Announcement> insert(Announcement announcement){if(Objects.equals(0,announcement.getSortOrder().compareTo(BigDecimal.ZERO))) {announcement.setSortOrder(BigDecimal.valueOf(iAnnouncementService.count() + 1L));}User currUser = securityUtil.getCurrUser();announcement.setPublisher(currUser.getNickname());iAnnouncementService.saveOrUpdate(announcement);return new ResultUtil<Announcement>().setData(announcement);
}

六、免责说明

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

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

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

在这里插入图片描述

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

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

相关文章

牛客周赛 Round 32 F.小红的矩阵修改【三进制状态压缩dp】

原题链接&#xff1a;https://ac.nowcoder.com/acm/contest/75174/F 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 262144K&#xff0c;其他语言524288K 64bit IO Format: %lld 题目描述 小红拿到了一个字符矩阵&#xff0c;矩阵中仅包含&q…

java 执行方式和类加载过程

java默认属于混合执行&#xff1a; 编译和解释并存 java先进行解释执行&#xff0c;遇到多次重复的代码会把它编程成可执行文件&#xff0c;方便下次直接执行。 可以通过VM参数来修改执行方式。 类加载过程

红队笔记Day2 -->上线不出网机器

今天就来讲一下在企业攻防中如何上线不出网的机器&#xff01;&#xff01; 1.基本网络拓扑 基本的网络拓扑就是这样 以下是对应得的P信息&#xff0c;其中的52网段充当一个内网的网段&#xff0c;而111充当公网网段 先ping一下&#xff0c;确保外网ping不通内网&#xff0c;内…

微信小程序(四十一)wechat-http的使用

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.模块下载 2.模块的使用 在终端输入npm install wechat-http 没有安装成功vue的先看之前的一篇 微信小程序&#xff08;二十&#xff09;Vant组件库的配置- 如果按以上的成功配置出现如下报错先输入以下语句 …

DS:单链表实现队列

创作不易&#xff0c;友友们来个三连支持吧&#xff01; 一、队列的概念 队列&#xff1a;是只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表&#xff0c;队列具有先进先出FIFO(First In First Out)的特点。 入队列&#xff1a;进行插入操作…

leetcode题目记录

文章目录 单调栈[127. 单词接龙](https://leetcode.cn/problems/word-ladder/)[139. 单词拆分](https://leetcode.cn/problems/word-break/)[15. 三数之和](https://leetcode.cn/problems/3sum/)[140. 单词拆分 II](https://leetcode.cn/problems/word-break-ii/)[113. 路径总和…

《数字孪生城市建设指引报告(2023年)》指引智慧城市行动方向

2023年12月27日&#xff0c;中国信息通信研究院&#xff08;简称“中国信通院”&#xff09;产业与规划研究所、中国互联网协会数字孪生技术应用工作委员会和苏州工业园区数字孪生创新坊联合发布《数字孪生城市建设指引报告&#xff08;2023年&#xff09;》。该报告提出了三大…

Linux:docker在线仓库(docker hub 阿里云)基础操作

把镜像放到公网仓库&#xff0c;这样可以方便大家一起使用&#xff0c;当需要时直接在网上拉取镜像&#xff0c;并且你可以随时管理自己的镜像——删除添加或者修改。 1.docker hub仓库 2.阿里云加速 3.阿里云仓库 由于docker hub是国外的网站&#xff0c;国内的对数据的把控…

Verilog刷题笔记30

题目&#xff1a; You are provided with a BCD one-digit adder named bcd_fadd that adds two BCD digits and carry-in, and produces a sum and carry-out. 解题&#xff1a; module top_module( input [399:0] a, b,input cin,output cout,output [399:0] sum );reg [99…

代码随想录day20--二叉树的应用8

LeetCode669.修剪二叉搜索树 题目描述&#xff1a; 给你二叉搜索树的根节点 root &#xff0c;同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树&#xff0c;使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在树中的元素的相对结构 (即&#xff0c;如果没…

【ES】--Elasticsearch的分词器深度研究

目录 一、问题描述及分析二、analyze分析器原理三、 multi-fields字段支持多场景搜索(如同时简繁体、拼音等)1、ts_match_analyzer配置分词2、ts_match_all_analyzer配置分词3、ts_match_1_analyzer配置分词4、ts_match_2_analyzer配置分词5、ts_match_3_analyzer配置分词6、ts…

ctfshow-文件上传(web151-web161)

目录 web151 web152 web153 web154 web155 web156 web157 web158 web159 web160 web161 web151 提示前台验证不可靠 那限制条件估计就是在前端设置的 上传php小马后 弹出了窗口说不支持的格式 查看源码 这一条很关键 这种不懂直接ai搜 意思就是限制了上传类型 允许…

Ubuntu Desktop - Files Preferences

Ubuntu Desktop - Files Preferences 1. Behavior2. ViewsReferences 1. Behavior Go to file browser’s Menu -> Edit -> Preferences -> Behavior 2. Views Go to file browser’s Menu -> Edit -> Preferences -> Views ​​​ References [1] Yong…

EMC学习笔记(二十五)降低EMI的PCB设计指南(五)

线缆和连接器 1 差模和共模噪声2 串扰3 返回路径数量4 外部PCB -IO 布局建议5 防止噪音和静电放电 tips&#xff1a;资料主要来自网络&#xff0c;仅供学习使用。 设计良好的两层板&#xff0c;和大多数四层板&#xff0c;有最小的辐射。系统级的问题是由于将PCB与任何板外支持…

vector容器

1. vector基本概念 1.1 功能&#xff1a; vector数据结构和数组非常相似&#xff0c;也称为单端数组 vector与普通数组区别&#xff1a; 不同之处在于数组是静态空间&#xff0c;而vector可以动态扩展 动态扩展&#xff1a; 并不是在原空间之后续接新空间&#xff0c;而是找更…

视频讲解:优化柱状图

你好&#xff0c;我是郭震 AI数据可视化 第三集&#xff1a;美化柱状图&#xff0c;完整视频如下所示&#xff1a; 美化后效果前后对比&#xff0c;前&#xff1a; 后&#xff1a; 附完整案例源码&#xff1a; util.py文件 import platformdef get_os():os_name platform.syst…

方舟基金:若美机构按最大夏普率配置比特币,则有望将其推升至230-250万美元...

号外&#xff1a;教链内参2.12《方舟基金重磅报告〈大胆想象2024〉全文pdf》 方舟基金&#xff08;Ark Invest&#xff09;的木头姐&#xff08;Cathie Wood&#xff09;是业内的老熟人了。她一向以大胆的预测而著称。比如就在2023年10月份&#xff0c;木头姐在采访中就曾直言&…

MIT-BEVFusion系列七--量化2_Camera、Fuser、Decoder网络的量化

目录 Camera 量化Camera Backbone (Resnet50) 量化替换量化层&#xff0c;增加residual_quantizer&#xff0c;修改bottleneck的前向对 Add 操作进行量化 Camera Neck (GeneralizedLSSFPN) 量化将 Conv2d 模块替换为 QuantConv2d 模块Camera Neck 中添加对拼接操作的量化替换 C…

STM32自学☞对射式红外传感器计数

infrared_count.c文件 /* 编写步骤 一、初始化函数 1.开启GPIO、AFIO时钟 (NVIC和EXIT不需要开启&#xff0c;因为EXIT时钟一直处于开启状态&#xff0c;而NVIC是内核里的外设和CPU处在一起且RCC管理的是内核外的外设&#xff0c;综上所述&#xff0c;所以不用开启) 2.配…

【机器学习】卷积和反向传播

一、说明 自从 AlexNet 在 2012 年赢得 ImageNet 竞赛以来&#xff0c;卷积神经网络 (CNN) 就变得无处不在。从不起眼的 LeNet 到 ResNets 再到 DenseNets&#xff0c;CNN 无处不在。 您是否想知道 CNN 的反向传播中会发生什么&#xff0c;特别是反向传播在 CNN 中的工作原理。…