基于Java的桃花峪滑雪场租赁系统(Vue.js+SpringBoot)

在这里插入图片描述


目录

  • 一、摘要
    • 1.1 项目介绍
    • 1.2 项目录屏
  • 二、功能模块
    • 2.1 游客服务
    • 2.2 雪场管理
  • 三、数据库设计
    • 3.1 教练表
    • 3.2 教练聘请表
    • 3.3 押金规则表
    • 3.4 器材表
    • 3.5 滑雪场表
    • 3.7 售票表
    • 3.8 器材损坏表
  • 四、系统展示
  • 五、核心代码
    • 5.1 查询教练
    • 5.2 教练聘请
    • 5.3 查询滑雪场
    • 5.4 滑雪场预定
    • 5.5 新增滑雪器材
  • 六、免责说明


一、摘要

1.1 项目介绍

基于JAVA+Vue+SpringBoot+MySQL的桃花峪滑雪场租赁系统,包含了滑雪场、门票预定、滑雪教练聘请、器材租赁归还、规章制度等模块,分为管理后台和微信小程序端,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,桃花峪滑雪场租赁系统基于角色的访问控制,给滑雪爱好者、滑雪管理员使用,可将权限精确到按钮级别,您可以自定义角色并分配权限,系统适合设计精确的权限约束需求。

1.2 项目录屏


二、功能模块

本系统以桃花峪滑雪场内部计费收银及运营业务管理流程为基础,通过“—卡通消费”的收费方式,简化滑雪场消费业务的管理环节,优化业务操作流程,实现游客消费和雪场管理的全面自动化,对滑雪场的设备、器具、人力、款项合理化运营管控,从而提升滑雪场经济效益。

在这里插入图片描述

2.1 游客服务

游客服务主要为游客提供在线便利服务,核心功能如下。

游客通过系统完成如门票预订购买、教练聘请、快速入园、滑雪器材便捷租赁、会员充值、多元化支付,自助结算、订单管理、其他二次消费(就餐、购物)等

2.2 雪场管理

主要功能包括售票管理、租赁配置管理、租赁方案管理、超时档位管理、押金规则管理、器材信息管理、器材库存管理、器材损坏规则、教练信息管理。

三、数据库设计

3.1 教练表

public class Coach extends ZwzBaseEntity {private static final long serialVersionUID = 1L;@ApiModelProperty(value = "姓名")private String name;@ApiModelProperty(value = "性别")private String sex;@ApiModelProperty(value = "年龄")private BigDecimal age;@ApiModelProperty(value = "介绍")private String content;@ApiModelProperty(value = "一寸照")private String image;@ApiModelProperty(value = "级别")private String level;@ApiModelProperty(value = "聘请费用")private BigDecimal cost;
}

3.2 教练聘请表

public class CoachEngagement extends ZwzBaseEntity {private static final long serialVersionUID = 1L;@ApiModelProperty(value = "教练ID")private String coachId;@ApiModelProperty(value = "姓名")private String name;@ApiModelProperty(value = "性别")private String sex;@ApiModelProperty(value = "年龄")private BigDecimal age;@ApiModelProperty(value = "介绍")private String content;@ApiModelProperty(value = "一寸照")private String image;@ApiModelProperty(value = "级别")private String level;@ApiModelProperty(value = "聘请费用")private BigDecimal cost;@ApiModelProperty(value = "聘请人ID")private String userId;@ApiModelProperty(value = "聘请人")private String userName;@ApiModelProperty(value = "聘请日期")private String date;
}

3.3 押金规则表

public class DepositRules extends ZwzBaseEntity {private static final long serialVersionUID = 1L;@ApiModelProperty(value = "押金规则")private String title;@ApiModelProperty(value = "内容")private String content;@ApiModelProperty(value = "金额")private BigDecimal number;@ApiModelProperty(value = "排序值")private BigDecimal sortOrder;@ApiModelProperty(value = "备注")private String remark;
}

3.4 器材表

public class Equipment extends ZwzBaseEntity {private static final long serialVersionUID = 1L;@ApiModelProperty(value = "器材名称")private String title;@ApiModelProperty(value = "器材型号")private String model;@ApiModelProperty(value = "采购价")private BigDecimal price;@ApiModelProperty(value = "计量单位")private String unit;@ApiModelProperty(value = "图片")private String image;@ApiModelProperty(value = "库存")private BigDecimal stock;@ApiModelProperty(value = "押金规则ID")private String ruleId;@ApiModelProperty(value = "押金规则")private String ruleName;
}

3.5 滑雪场表

public class SkiField extends ZwzBaseEntity {private static final long serialVersionUID = 1L;@ApiModelProperty(value = "滑雪场名称")private String title;@ApiModelProperty(value = "介绍")private String content;@ApiModelProperty(value = "分馆编号")private String code;@ApiModelProperty(value = "图片")private String image;@ApiModelProperty(value = "排序值")private BigDecimal sortOrder;@ApiModelProperty(value = "状态")private String status;@ApiModelProperty(value = "价格")private BigDecimal price;
}

3.7 售票表

public class SellTicket extends ZwzBaseEntity {private static final long serialVersionUID = 1L;@ApiModelProperty(value = "滑雪场ID")private String skiId;@ApiModelProperty(value = "滑雪场名称")private String skiName;@ApiModelProperty(value = "买票人ID")private String userId;@ApiModelProperty(value = "买票人")private String userName;@ApiModelProperty(value = "日期")private String date;@ApiModelProperty(value = "价格")private BigDecimal price;@ApiModelProperty(value = "购买时间")private String buyTime;
}

3.8 器材损坏表

public class EquipmentDamage extends ZwzBaseEntity {private static final long serialVersionUID = 1L;@ApiModelProperty(value = "损坏情况")private String title;@ApiModelProperty(value = "损坏赔偿比例")private BigDecimal proportion;@ApiModelProperty(value = "排序值")private BigDecimal sortOrder;@ApiModelProperty(value = "备注")private String remark;
}

四、系统展示

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


五、核心代码

5.1 查询教练

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询教练")
public Result<IPage<Coach>> getByPage(@ModelAttribute Coach coach ,@ModelAttribute PageVo page){QueryWrapper<Coach> qw = new QueryWrapper<>();if(!ZwzNullUtils.isNull(coach.getLevel())) {qw.eq("level",coach.getLevel());}if(!ZwzNullUtils.isNull(coach.getContent())) {qw.like("content",coach.getContent());}if(!ZwzNullUtils.isNull(coach.getName())) {qw.like("name",coach.getName());}IPage<Coach> data = iCoachService.page(PageUtil.initMpPage(page),qw);return new ResultUtil<IPage<Coach>>().setData(data);
}

5.2 教练聘请

@RequestMapping(value = "/addOne", method = RequestMethod.GET)
@ApiOperation(value = "小程序预约")
public Result<SellTicket> addOne(@RequestParam String id, @RequestParam String date){Coach s = iCoachService.getById(id);if(s == null) {return ResultUtil.error("教练不存在");}User currUser = securityUtil.getCurrUser();QueryWrapper<CoachEngagement> oldQw = new QueryWrapper<>();oldQw.eq("coach_id",s.getId());oldQw.eq("date",date);oldQw.eq("user_id",currUser.getId());Long oldCount = iCoachEngagementService.count(oldQw);if(oldCount > 0) {return ResultUtil.error("您已聘请!");}CoachEngagement st = new CoachEngagement();st.setCoachId(s.getId());st.setName(s.getName());st.setSex(s.getSex());st.setAge(s.getAge());st.setContent(s.getContent());st.setImage(s.getImage());st.setLevel(s.getLevel());st.setCost(s.getCost());st.setUserId(currUser.getId());st.setUserName(currUser.getNickname());st.setDate(date);iCoachEngagementService.saveOrUpdate(st);User user = iUserService.getById(currUser.getId());if(user != null) {user.setMoney(user.getMoney().subtract(s.getCost()));iUserService.saveOrUpdate(user);}return ResultUtil.success();
}

5.3 查询滑雪场

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询滑雪场")
public Result<IPage<SkiField>> getByPage(@ModelAttribute SkiField skiField ,@ModelAttribute PageVo page){QueryWrapper<SkiField> qw = new QueryWrapper<>();if(!ZwzNullUtils.isNull(skiField.getTitle())) {qw.like("title",skiField.getTitle());}if(!ZwzNullUtils.isNull(skiField.getCode())) {qw.like("code",skiField.getCode());}if(!ZwzNullUtils.isNull(skiField.getStatus())) {qw.like("status",skiField.getStatus());}IPage<SkiField> data = iSkiFieldService.page(PageUtil.initMpPage(page),qw);return new ResultUtil<IPage<SkiField>>().setData(data);
}

5.4 滑雪场预定

@RequestMapping(value = "/addOne", method = RequestMethod.GET)
@ApiOperation(value = "小程序预约")
public Result<SellTicket> addOne(@RequestParam String id,@RequestParam String date){SkiField s = iSkiFieldService.getById(id);if(s == null) {return ResultUtil.error("滑雪场不存在");}User currUser = securityUtil.getCurrUser();QueryWrapper<SellTicket> oldQw = new QueryWrapper<>();oldQw.eq("ski_id",s.getId());oldQw.eq("date",date);oldQw.eq("user_id",currUser.getId());Long oldCount = iSellTicketService.count(oldQw);if(oldCount > 0) {return ResultUtil.error("您已预定!");}SellTicket st = new SellTicket();st.setSkiId(s.getId());st.setSkiName(s.getTitle());st.setUserId(currUser.getId());st.setUserName(currUser.getNickname());st.setDate(date);st.setPrice(s.getPrice());st.setBuyTime(DateUtil.now());iSellTicketService.saveOrUpdate(st);User user = iUserService.getById(currUser.getId());if(user != null) {user.setMoney(user.getMoney().subtract(s.getPrice()));iUserService.saveOrUpdate(user);}return ResultUtil.success();
}

5.5 新增滑雪器材

@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = "新增器材")
public Result<Equipment> insert(Equipment equipment){DepositRules rule = iDepositRulesService.getById(equipment.getRuleId());if(rule == null) {return ResultUtil.error("押金规则不存在");}equipment.setRuleName(rule.getTitle());iEquipmentService.saveOrUpdate(equipment);return new ResultUtil<Equipment>().setData(equipment);
}

六、免责说明

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

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

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

在这里插入图片描述

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

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

相关文章

算法打卡day22|回溯法篇02|Leetcode 216.组合总和III、17.电话号码的字母组合

算法题 Leetcode 216.组合总和III 题目链接:216.组合总和III 大佬视频讲解&#xff1a;组合总和III视频讲解 个人思路 在昨日做过的组合问题后&#xff0c;这道题的限制 多了两个&#xff1a;1.要找到和为n的k个数的组合&#xff0c;2.整个集合已经是固定的了[1,...,9]&…

用Python直接获取Word文档页数、字数、段落数、节数等信息

计算 Word 文档的页数、字数等信息是出版、学术和内容管理等领域的一项基本任务。准确的页数和字数对于评估文档长度、估算印刷成本、分析文本复杂性以及确保符合格式化指南至关重要。逐个预览文档查看相关信息是非常麻烦的事情&#xff0c;我们可以在不预览文档的情况下&#…

分享一篇Oracle RAC实战安装11G

分享一次很久以前的Oracle rac项目实施。 1、拓扑结构 基础环境是2台H3C的服务器2台3PAR的双活存储&#xff0c;操作系统centos7.2。借用下别人家的拓扑先&#xff08;这是一套典型的RAC架构&#xff09;。 2、网卡TEAM操作 以eno51和en052组成Team1组为示例&#xff1a; nm…

第十二届蓝桥杯大赛软件赛决赛C/C++ 研究生组-纯质数

直接判断数据过大 相对而言&#xff0c;由2&#xff0c;3&#xff0c;5&#xff0c;7组成的数更少&#xff0c;则先筛选出由2,3,5,7组成的数&#xff0c;再判断这些数中的质数个数即可 #include <iostream> using namespace std; int main() {printf("1903");…

3.7 RK3399项目开发实录-板载OpenWRT系统的使用(wulianjishu666)

STM32F103单片机从零到项目开发程序实例 下载链接&#xff1a;https://pan.baidu.com/s/1dWNskNinrMk4bxaE-jgHhQ?pwdymn3 1. OpenWRT 手册 1.1. 支持设备列表 主控板卡型号RK3568ROC-RK3568-PC/Station-P2 1.2. 登录 IP 、登录密码和 WIFI 名称 固件默认登录 IP 为 192.1…

化妆品行业电商数据分析

随着互联网经济的高速发展&#xff0c;电商已经成为化妆品经营的主要渠道之一。根据网络数据显示&#xff0c;11月全国化妆品网络活跃商品200万&#xff0c;零售总额为400亿。分区域来看&#xff0c;上海市、广东省、浙江省化妆品行业网络零售突出&#xff0c;三个区域网络零售…

2024.3.9|第十五届蓝桥杯模拟赛(第三期)

2024.3.9|十五届蓝桥杯模拟赛&#xff08;第三期&#xff09; 第一题 第二题 第三题 第四题 第五题 第六题 第七题 第八题 第九题 第十题 心有猛虎&#xff0c;细嗅蔷薇。你好朋友&#xff0c;这里是锅巴的C\C学习笔记&#xff0c;常言道&#xff0c;不积跬步无以至千里&…

webpack5零基础入门-10babel的使用

Babel JavaScript 编译器。 主要用于将 ES6 语法编写的代码转换为向后兼容的 JavaScript 语法&#xff0c;以便能够运行在当前和旧版本的浏览器或其他环境中 1.安装相关包 npm install -D babel-loader babel/core babel/preset-env 2.进行相关配置 2.1第一种写法是在webp…

聚类分析 | Matlab实现基于PCA+DBO+K-means的数据聚类可视化

聚类分析 | Matlab实现基于PCADBOK-means的数据聚类可视化 目录 聚类分析 | Matlab实现基于PCADBOK-means的数据聚类可视化效果一览基本介绍程序设计参考资料 效果一览 基本介绍 PCA&#xff08;主成分分析&#xff09;、DBO&#xff08;蜣螂优化算法&#xff09;和K-means聚类…

正则表达式具体用法大全

# 正则表达式&#xff1a; ## 单字符匹配&#xff1a; python # 匹配某个字符串&#xff1a; # text "abc" # ret re.match(b,text) # print(ret.group()) # 点&#xff08;.&#xff09;&#xff1a;匹配任意的字符(除了\n)&#xff1a; # text "\nabc&quo…

输入框禁用状态 可清空输入框如何实现?组件写的

输入框禁用 通过 disabled 属性指定是否禁用 input 组件 <el-input placeholder"请输入内容" v-model"input" :disabled"true"> </el-input> <script> export default { data() { return { input: } } } </script> 可…

[套路] 浏览器引入Vue.js场景-WangEditor富文本编辑器的使用 (永久免费)

系列文章目录 [套路] el-table 多选属性实现单选效果[套路] 基于服务内存实现的中文拼音混合查询[套路] Bypass滑块验证码 目录 系列文章目录前言一、实现1.1 场景1.2 Window对象简介1.3 引入WangEditor1.4 页面配置 前言 公司使用freemarker的老旧SpringBootWeb后台项目, 前…

力扣热门算法题 59. 螺旋矩阵 II,60. 排列序列,61. 旋转链表

59. 螺旋矩阵 II&#xff0c;60. 排列序列&#xff0c;61. 旋转链表&#xff0c;每题做详细思路梳理&#xff0c;配套Python&Java双语代码&#xff0c; 2024.03.21 可通过leetcode所有测试用例。 目录 59. 螺旋矩阵 II 解题思路 完整代码 Java Python 60. 排列序列 …

IDEA 2021.3.3最新激活破解教程(可激活至2099年,亲测有效)

下载地址&#xff1a;https://files.cnblogs.com/files/smallfa/ja-netfilter-all.rar?t1684636896&downloadtruehttps://files.cnblogs.com/files/smallfa/ja-netfilter-all.rar?t1684636896&downloadtrue1.Windows 系统下载解压到文件夹内&#xff0c;点击运行 ins…

就业班 2401--3.13 走进网络

走进网络 长风破浪会有时&#xff0c;直挂云帆济沧海。 1.认识计算机 1.计算机网络是由计算机和通讯构成的&#xff0c;网络研究的是“通信”。 ------1946 世界上第一台计算机 2.终端&#xff1a;只有输入和输出功能&#xff0c;没有计算和处理功能。 3.数据&#xff1a;一串…

学点儿Java_Day6_面向对象:类、封装、构造方法

1 类 1.1 定义 类&#xff1a;对现实世界中事物的抽象。Student 对象&#xff1a;现实世界中具体的个体。张三、李四 这些具体的学生 面向对象的特征&#xff1a;抽象、封装、继承、多态 OOP: Object Oriented Programming 类和对象的总结&#xff1a; 1、现实世界都是由很多…

JAVA多线程之JMM

文章目录 1. Java内存模型2. 内存交互3. 三大特性3.1 可见性3.1.1 可见性问题3.1.2 原因3.1.3 解决方法 3.2 原子性3.3 有序性 在继续学习JUC之前&#xff0c;我们现在这里介绍一下Java内存模型&#xff0c;也就是JMM&#xff0c;进而引出关键字volatile的使用条件。 1. Java内…

相机的内外参数标定和畸变矫正原理和代码

相机的成像过程实质上是坐标系转换。首先空间中的点坐标由世界坐标系转换到相机坐标系&#xff0c;然后将其投影到成像平面&#xff08;图像物理坐标系&#xff09;&#xff0c;最后再将成像平面上的数据转换到图像像素坐标系。但是由于透镜制造精度及组装工艺的差别会引入畸变…

【SQL】1251. 平均售价(IFNULL函数)

前述 知识点回顾&#xff1a;MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函数的使用 题目描述 leetcode题目&#xff1a;1251. 平均售价 Code select P.product_id,ifnull(round(sum(units * price) / sum(units), 2), 0) as average_price from Prices P left join UnitsS…

无痕消除笔APP好用吗?3款超实用软件分享

无痕消除笔APP好用吗&#xff1f;在日常生活中&#xff0c;无痕消除笔APP的便捷性不言而喻。无论是想要去除照片中的小瑕疵&#xff0c;还是快速修正文案中的错别字&#xff0c;这款工具都能迅速而精准地满足需求。它不仅提升了我们处理图片和文本的效率&#xff0c;还让我们的…