基于SpringBoot的桃花峪滑雪场租赁系统 JAVA简易版

在这里插入图片描述


目录

  • 一、摘要
    • 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. 必须了解使用本软件的风险,博主不承诺提供一对一的技术支持、使用担保,也不承担任何因本软件而产生的难以预料的问题的相关责任。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【AI提示词人物篇】创新艺术未来,让科技改变想象空间

AI 绘画学习难度和练习技巧 学习绘画的技巧 学习能难度&#xff1a; 外貌特征&#xff1a;AI需要学习识别和理解各种外貌特征&#xff0c;如发型、肤色、眼睛颜色等。这可能需要大量的训练数据和复杂的模型架构。 镜头提示&#xff1a;AI需要学习理解不同镜头提示的含义&…

中心性算法归纳

中心性算法不仅是在我所学习的计算机网络当中起很重要的作用&#xff0c;在交通网络、社交网络、信息网络、神经网络当中也有很多的应用例子。今天我在这里总结一下场景的几种中心性算法。 参考文献 Python NetworkX库 偏心中心性&#xff08;Eccentricity Centrality&#x…

Kubernetes 的用法和解析(K8S 日志方案) -- 8

一、统一日志管理的整体方案 通过应用和系统日志可以了解Kubernetes集群内所发生的事情&#xff0c;对于调试问题和监视集群活动来说日志非常有用。对于大部分的应用来说&#xff0c;都会具有某种日志机制。因此&#xff0c;大多数容器引擎同样被设计成支持某种日志机制。 对…

安装vcpkg管理opencv的安装+MFC缺失的解决

第一步&#xff0c;出现#include没有办法找到opencv头文件的问题&#xff0c;无法解决 在VC的提示下&#xff0c;安装了vcpkg&#xff0c;然后用vcpkg命令来帮助安装opencv&#xff0c;过程十分顺利。 1. cmd 到命令行窗口&#xff1b; 2. 建立src文件夹&#xff0c;并进入…

KMP入门级别算法详解--终于解决了(next数组详解)

对于正常的字符串模式匹配&#xff0c;主串长度为m&#xff0c;子串为n&#xff0c;时间复杂度会到达O&#xff08;m*n&#xff09;&#xff0c;而如果用KMP算法&#xff0c;复杂度将会减少线型时间O&#xff08;mn&#xff09;。 设主串为ptr"ababaaababaa";&#…

MFC窗体背景颜色的设置、控件白色背景问题、控件文本显示重叠问题、被父窗体背景覆盖的问题

文章目录 设置mfc窗体背景颜色窗体设置背景颜色后解决控件白色背景解决重复修改控件文本后重叠的问题自绘控件被父窗体背景覆盖的问题 设置mfc窗体背景颜色 设置窗体的背景颜色非常简单&#xff0c;只需要在窗体的OnEraseBkgnd里面填充窗体背景就可以了&#xff0c;甚至直接画…

【SpringCloud】-GateWay源码解析

GateWay系列 【SpringCloud】-GateWay网关 一、背景介绍 当一个请求来到 Spring Cloud Gateway 之后&#xff0c;会经过一系列的处理流程&#xff0c;其中涉及到路由的匹配、过滤器链的执行等步骤。今天我们来说说请求经过 Gateway 的主要执行流程和原理是什么吧 二、正文 …

30. MVC设计模式

JavaEE 开发流程 ↓MVC的概念 MVC是Model-View-Controller的简称&#xff0c;即模型-视图-控制器。 MVC是一种设计模式&#xff0c;它把应用程序分成三个核心模块&#xff1a;模型、视图、控制器&#xff0c;它们各自处理自己的任务。 模型(model) 模型是应用程序的主体部分…

JavaEE进阶学习:Spring MVC 程序开发

1.什么是 Spring MVC Spring Web MVC 是基于Servlet API 构建的原始 Web 框架&#xff0c;从一开始就包含在Spring 框架中。它的正式名称 “Spring Web MVC” 来自其源模块的名称(Spring-webmvc)&#xff0c;但它通常被称为“Spring MVC”。 从上述定义我们可以得出两个关键信…

每日一题——轮转数组

1. 题目描述 给定一个整数数组nums&#xff0c;将数组中的元素向右轮转k个位置&#xff0c;其中k是非负数。 示例1: 输入&#xff1a;nums [1,2,3,4,5,6,7]&#xff0c;k 3 输出&#xff1a;[5,6,7,1,2,3,4] 解释&#xff1a; 向右轮转 1步&#xff1a;[7,1,2,3,4,5,6] 向右…

在Linux下探索MinIO存储服务如何远程上传文件

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;网络奇遇记、Cpolar杂谈 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. 创建Buckets和Access Keys二. Linux 安装Cpolar三. 创建连接MinIO服务公网地…

LED灯驱动模块加载与卸载代码框架

一. 简介 本文来编写 LED灯驱动模块加载与卸载的代码。 二. LED灯驱动模块加载与卸载代码框架 1. 创建工程 我的驱动代码存放目录&#xff1a; ubuntu系统 /home/wangtian/zhengdian_Linux/Linux_Drivers 目录下。 进入 /home/wangtian/zhengdian_Linux/Linux_Drivers 目…

Java开发框架和中间件面试题(4)

27.如何自定义Spring Boot Starter&#xff1f; 1.实现功能 2.添加Properties 3.添加AutoConfiguration 4.添加spring.factory 在META INF下创建spring.factory文件 6.install 28.为什么需要spring boot maven plugin? spring boot maven plugin 提供了一些像jar一样打包…

优先级队列与仿函数

优先级队列 优先级队列 priority_queue 是一种容器适配器&#xff0c;听起来是队列&#xff0c;其实它的底层数据结构是堆&#xff0c;所谓的优先级为默认越大的数优先级越高&#xff0c;即默认为大堆。 使用方式如下面的代码&#xff1a; #include<iostream> #includ…

做抖店需要保证金吗?总共需要多少资金?具体资金投入如下!

我是电商珠珠 做抖店需要保证金吗&#xff1f;这是很多想要入驻的新手常问的问题。我的回答是&#xff0c;需要&#xff01; 抖店平台之所以设立保证金&#xff0c;就是为了约束商家的行为&#xff0c;避免交易市场出现混乱&#xff0c;给用户一个良好的购物体验。 今天呢&a…

【性能优化】MySql数据库查询优化方案

阅读本文你的收获 了解系统运行效率提升的整体解决思路和方向学会MySQl中进行数据库查询优化的步骤学会看慢查询、执行计划、进行性能分析、调优 一、问题&#xff1a;如果你的系统运行很慢&#xff0c;你有什么解决方案&#xff1f; ​关于这个问题&#xff0c;我们通常首先…

Unity中Shader观察空间推导

文章目录 前言一、本地空间怎么转化到观察空间二、怎么得到观察空间的基向量1、Z轴向量2、假设 观察空间的 Y~假设~ (0,1,0)3、X Y 与 Z 的叉积4、Y X 与 Z 的叉积 三、求 [V~world~]^T^1、求V~world~2、求[V~world~]^T^ 四、求出最后在Unity中使用的公式1、偏移坐标轴2、把…

[每周一更]-(第31期):Mysql安装汇总

写自&#xff1a;20230204 23:25 一. mysql rpm二进制包 rpm -Uvh http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm yum install mysql-community-server service mysqld start set password password(“123456”)二. mysql yum安装 1、安装查看有没有安装…

企业级“RAS”的数据平台如何炼成?

从“看报表”到“数据分析结果直接投入运营”&#xff0c;数字化正在深入企业经营&#xff0c;数据系统正在成为核心生产系统。相应的&#xff0c;企业对“作业挂了”、“系统崩了”、“算不出来”的容忍度越来越低——只有足够稳定、可靠、专业的数据系统&#xff0c;才能及时…

智能优化算法应用:基于社交网络算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于社交网络算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于社交网络算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.社交网络算法4.实验参数设定5.算法结果6.…