【开源】基于JAVA语言的假日旅社管理系统

在这里插入图片描述


目录

  • 一、摘要
    • 1.1 项目介绍
    • 1.2 项目录屏
  • 二、功能模块
    • 2.1 系统介绍
    • 2.2 QA 问答
  • 三、系统展示
  • 四、核心代码
    • 4.1 查询民宿
    • 4.2 新增民宿评论
    • 4.3 查询民宿新闻
    • 4.4 新建民宿预订单
    • 4.5 查询我的民宿预订单
  • 五、免责说明


一、摘要

1.1 项目介绍

基于JAVA+Vue+SpringBoot+MySQL的假日旅社管理系统,包含了民宿管理模块、民宿订单模块、民宿评论模块和民宿新闻模块,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,假日旅社管理系统基于角色的访问控制,给旅社管理员、旅客使用,可将权限精确到按钮级别,您可以自定义角色并分配权限,系统适合设计精确的权限约束需求。

1.2 项目录屏


二、功能模块

2.1 系统介绍

随着国民生活水平的逐渐提高,每逢假期或空闲时节走出家门游山玩水已渐渐成为人们生活的一部分,那么外出住宿是必然要考虑到的问题。互联网的普及给人们带来的便利不需多说。

因此如果把假日旅社与互联网结合起来,利用 spring boot 框架,mysql 技术建设民宿短租系统,实现假日旅社管理的网络化。则对于进一步提高国民经济发展,丰富人们的精神生活定能起到不少的促进作用。

根据本系统的研究现状和发展趋势,系统从需求分析、结构设计、数据库设计,在到系统实现,分别为前端实现和后端实现。

  1. 主界面,主要显示正在热门假日旅社动态、网站导航
  2. 用户登陆注册和用户管理,用户管理包括用户信息、添加时间、手机号等
  3. 民宿详情,为用户提供民宿的基本信息,用户可以进行评论。
  4. 民宿预定,用户进行预定,确认订单信息,生成用户订单等
  5. 角色管理:对后台管理员账号进行修改和增删。

2.2 QA 问答

假日旅社管理系统的使用对象有两个,分别是宿舍管理员和旅客。

  1. 宿舍管理员可以对旅社的宿舍进行管理维护;对旅社的时政新闻进行管理;监控查询旅客的预约、评论信息;系统权限的配置;旅社组织架构的设计;系统用户的管理

  2. 旅客可以查询旅社的宿舍;查询旅社的新闻;在对旅社的宿舍进行预约;对宿舍进行评论

假日旅社管理系统拥有以下六个功能模块。

  1. 承载旅社的宿舍管理功能。也就是宿舍管理员可以对旅社的宿舍进行增删改查操作。
    宿舍是假日旅社系统的基础数据,所以需要这个模块。

  2. 承载旅客档案管理功能。也就是宿舍管理员可以对旅客的档案进行增删改查操作。比如维护手机号、姓名等。
    旅客也是假日旅社系统的基础数据,所以需要这个模块。

  3. 承载宿舍预约的功能,和模拟付款功能。
    旅客可以查询宿舍管理员发布的宿舍,并且进行预定,支持模拟付款功能,模拟整个预定的过程。

  4. 承载旅社的新闻时政功能。
    一家旅社要能够得到旅客的信赖,新闻时政肯定是必不可少的
    所以需要这个模块,由宿舍管理员维护,开放给旅客查询。

  5. 承载旅社宿舍的留言功能。
    旅客可以对宿舍进行评论,可以被给其他旅客看到,给与决策支持。

  6. 承载可能需要的其他功能。
    在设计这个系统的时候,可能会用到其他功能,比如日志、文件管理
    我会把这些功能封装成独立的模块,利用Vue的组件化优势提供给别的模块调用

这个系统前端采用了国内流行的Vue技术,采用View UI作为组件库;后端采用SpringBoot整合MybatisPlus。采用maven构建项目,采用Mysql数据库,使用Redis缓存加密的用户临时数据。


三、系统展示

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


四、核心代码

4.1 查询民宿

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询民宿")
public Result<IPage<Dormitory>> getByPage(@ModelAttribute Dormitory dormitory,@ModelAttribute PageVo page){QueryWrapper<Dormitory> qw = new QueryWrapper<>();if(!ZwzNullUtils.isNull(dormitory.getTitle())) {qw.like("title",dormitory.getTitle());}if(!ZwzNullUtils.isNull(dormitory.getType())) {qw.eq("type",dormitory.getType());}if(!ZwzNullUtils.isNull(dormitory.getBreakfast())) {qw.eq("breakfast",dormitory.getBreakfast());}IPage<Dormitory> data = iDormitoryService.page(PageUtil.initMpPage(page),qw);return new ResultUtil<IPage<Dormitory>>().setData(data);
}

4.2 新增民宿评论

@RequestMapping(value = "/addMyDiscuss", method = RequestMethod.POST)
@ApiOperation(value = "新增民宿评论")
public Result<Object> addMyDiscuss(@RequestParam String id,@RequestParam String reply,@RequestParam String text){Dormitory dormitory = iDormitoryService.getById(id);if(dormitory == null) {return ResultUtil.error("民宿不存在");}User currUser = securityUtil.getCurrUser();DormitoryDiscuss discuss = new DormitoryDiscuss();discuss.setUserId(currUser.getId());discuss.setUserName(currUser.getNickname());discuss.setReply(reply);discuss.setDormitoryId(dormitory.getId());discuss.setDiscussTime(DateUtil.now());discuss.setContent(text);iDormitoryDiscussService.saveOrUpdate(discuss);return ResultUtil.success();
}

4.3 查询民宿新闻

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询民宿新闻")
public Result<IPage<DormitoryNews>> getByPage(@ModelAttribute DormitoryNews dormitoryNews,@ModelAttribute PageVo page){QueryWrapper<DormitoryNews> qw = new QueryWrapper<>();if(!ZwzNullUtils.isNull(dormitoryNews.getNewTitle())) {qw.like("new_title",dormitoryNews.getNewTitle());}if(!ZwzNullUtils.isNull(dormitoryNews.getNewDescribe())) {qw.like("new_describe",dormitoryNews.getNewDescribe());}if(!ZwzNullUtils.isNull(dormitoryNews.getPeriodTime())) {qw.like("period_time",dormitoryNews.getPeriodTime());}if(!ZwzNullUtils.isNull(dormitoryNews.getIsPublic())) {qw.like("is_public",dormitoryNews.getIsPublic());}if(!ZwzNullUtils.isNull(dormitoryNews.getIsTop())) {qw.like("is_top",dormitoryNews.getIsTop());}IPage<DormitoryNews> data = iDormitoryNewsService.page(PageUtil.initMpPage(page),qw);return new ResultUtil<IPage<DormitoryNews>>().setData(data);
}

4.4 新建民宿预订单

@RequestMapping(value = "/addMyOrder", method = RequestMethod.POST)
@ApiOperation(value = "新建民宿预订单")
public Result<Object> addMyOrder(@RequestParam String id,@RequestParam String date){Dormitory dormitory = iDormitoryService.getById(id);if(dormitory == null) {return ResultUtil.error("民宿不存在");}QueryWrapper<DormitoryOrder> qw = new QueryWrapper<>();qw.eq("dormitory_id",id);qw.eq("order_date",date);long count = iDormitoryOrderService.count(qw);if(count > 0) {return ResultUtil.error("民宿当日已被预定");}User currUser = securityUtil.getCurrUser();DormitoryOrder order = new DormitoryOrder();order.setUserId(currUser.getId());order.setUserName(currUser.getNickname());order.setOrderTime(DateUtil.now());order.setPayFlag("否");order.setDormitoryId(dormitory.getId());order.setPrice(dormitory.getPrice());order.setRemark("");order.setDormitoryName(dormitory.getTitle());order.setOrderDate(date);iDormitoryOrderService.saveOrUpdate(order);return ResultUtil.success();
}

4.5 查询我的民宿预订单

@RequestMapping(value = "/getMyPage", method = RequestMethod.GET)
@ApiOperation(value = "查询我的民宿预订单")
public Result<IPage<DormitoryOrder>> getMyPage(@ModelAttribute DormitoryOrder order,@ModelAttribute PageVo page){User currUser = securityUtil.getCurrUser();QueryWrapper<DormitoryOrder> qw = new QueryWrapper<>();qw.eq("user_id",currUser.getId());if(!ZwzNullUtils.isNull(order.getDormitoryId())) {qw.eq("dormitory_id",order.getDormitoryId());}if(!ZwzNullUtils.isNull(order.getUserName())) {qw.eq("user_name",order.getUserName());}IPage<DormitoryOrder> data = iDormitoryOrderService.page(PageUtil.initMpPage(page),qw);return new ResultUtil<IPage<DormitoryOrder>>().setData(data);
}

五、免责说明

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

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

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

在这里插入图片描述

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

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

相关文章

【前端】尚硅谷Node.js零基础视频教程笔记

文章目录 1. 参考视频: 尚硅谷Node.js零基础视频教程&#xff0c;nodejs新手到高手 1.

配置路由策略案例

知识改变命运&#xff0c;技术就是要分享&#xff0c;有问题随时联系&#xff0c;免费答疑&#xff0c;欢迎联系&#xff01; 厦门微思网络​​​​​​ https://www.xmws.cn 华为认证\华为HCIA-Datacom\华为HCIP-Datacom\华为HCIE-Datacom Linux\RHCE\RHCE 9.0\RHCA\ Oracle O…

1秒解决“整合磁盘时出错: 指定的虚拟磁盘需要进行修复”

引言 Linux初学者会时常报以下的错误&#xff0c;导致虚拟机打不开 原因 总的来说&#xff0c;就是没有正常关闭虚拟机导致的虚拟磁盘 (.vmdk)本身有一个磁盘保护机制&#xff0c;为了防止多台虚拟机同时访问同一个虚拟磁盘 (.vmdk)带来的数据丢失和性能削减方面的隐患&#…

C++关于智能指针的一些常见问题

首先解释指针和引用在C中都用于间接访问变量&#xff0c;但它们有一些区别&#xff1a; 1. 指针是一个变量&#xff0c;它保存了另一个变量得内存地址&#xff1b;引用是另一个变量的别名&#xff0c;与原变量共享内存地址。 2. 指针可以被重新赋值&#xff0c;指向不同的变量…

JVM篇--JVM调优高频面试题

1 说一下 JVM 调优的工具&#xff1f; JDK 自带了很多监控工具&#xff0c;都位于 JDK 的 bin 目录下&#xff0c;其中最常用的是jconsole 和 jvisualvm 这两款视图监控工具。 jconsole&#xff1a;用于对 JVM 中的内存、线程和类等进行监控&#xff1b; jvisualvm&#xff1a…

将AWS iot消息数据发送Kinesis Firehose Stream存向S3

观看此文章之前&#xff0c;请先学习AWS iot的数据收集&#xff1a; 使用Linux SDK客户端向AWS Iot发送数据-CSDN博客 1、工作原理&#xff1a; 1.1 规则 规则可让您的设备与 AWS 服务进行交互。分析规则并根据物品发送的消息执行操作。您可以使用规则来支持任务&#xff0…

C++类和对象(上)

✨Blog&#xff1a;&#x1f970;不会敲代码的小张:)&#x1f970; &#x1f251;推荐专栏&#xff1a;C语言&#x1f92a;、Cpp&#x1f636;‍&#x1f32b;️、数据结构初阶&#x1f480; &#x1f4bd;座右铭&#xff1a;“記住&#xff0c;每一天都是一個新的開始&#x1…

字符串的方法有哪些?

JavaScript中字符串作为基本类型&#xff0c;它为我们提供了很多好用的API&#xff0c;本期就来总结一下一些常见的字符串方法吧 字符串的方法按照功能来划分&#xff0c;可分为增删改查四个部分 写在前面&#xff1a;了解一个方法&#xff0c;我们可以通过三个方面&#xff…

(2)Elastix图像配准:参数文件(配准精度的关键)

文章目录 前言一、Elastix简介二、参数文件&#xff08;类型&#xff09;三、参数文件&#xff08;定义&#xff09;&#xff1a;由多个组件组成&#xff0c;每个组件包含多个参数。3.1、组件的相关参数3.2、图解组件3.2.1、图解 - 金字塔&#xff08;pyramid&#xff09;3.2.2…

从零开始训练 YOLOv8最新8.1版本教程说明(包含Mac、Windows、Linux端 )同之前的项目版本代码有区别

从零开始训练 YOLOv8 - 最新8.1版本教程说明 本文适用Windows/Linux/Mac:从零开始使用Windows/Linux/Mac训练 YOLOv8 算法项目 《芒果 YOLOv8 目标检测算法 改进》 适用于芒果专栏改进 YOLOv8 算法 文章目录 官方 YOLOv8 算法第一步 配置环境1.1 系列配置1.2 代码执行第二步…

wpf控件Expander集合下的像素滚动

项目场景&#xff1a;Expander集合滚动 如下图&#xff0c;有一个Expander集合&#xff0c;且设置 ScrollViewer.VerticalScrollBarVisibility "Auto" 每个Expaner下包含有若干元素&#xff0c;当打开Expader(即IsExpanded "true"&#xff09;时&#…

网络通讯接口RS232与RS485含义与区别

在现代化数据中心机房中&#xff0c;无论是前期设计、现场调试还是后期维护&#xff0c;通常都要了解通信协议&#xff0c;如机房供电设备、环境设备、空调设备等综合集中监控。通信协议是指双方实体完成通信或服务所必须遵循的规则和约定。协议定义了数据单元使用的格式&#…

Leetcode刷题(二十九)

两数相除&#xff08;Medium&#xff09; 给你两个整数&#xff0c;被除数 dividend 和除数 divisor。将两数相除&#xff0c;要求 不使用 乘法、除法和取余运算。整数除法应该向零截断&#xff0c;也就是截去&#xff08;truncate&#xff09;其小数部分。例如&#xff0c;8.…

C#,最小生成树(MST)博鲁夫卡(Boruvka)算法的源代码

Otakar Boruvka 本文给出Boruvka算法的C#实现源代码。 Boruvka算法用于查找边加权图的最小生成树&#xff08;MST&#xff09;&#xff0c;它早于Prim和Kruskal的算法&#xff0c;但仍然可以被认为是两者的关联。 一、Boruvka算法的历史 1926年&#xff0c;奥塔卡博鲁夫卡&…

redis 分布式锁的原理

Redis 分布式锁是通过利用 Redis 的原子操作和特性来实现的。下面是 Redis 分布式锁的基本原理&#xff1a; 获取锁&#xff1a;当一个进程或线程需要获取锁时&#xff0c;它会通过执行 Redis 命令&#xff08;例如 SETNX&#xff09;在 Redis 中尝试设置一个特定的键作为锁。如…

QQ云端机器人登录系统php源码

这款源码主要是针对群机器人爱好者的&#xff0c;这是一个通过对接挂机宝里面机器人框架的一个网页站点&#xff0c;用户通过网页登录 QQ 账号至挂机宝里面框架&#xff08;可扫码登录、账密登录、跳转 QQ 快捷登录&#xff09;&#xff0c;无需通过机器人即可实现登录&#xf…

《设计模式的艺术》笔记 - 观察者模式

介绍 观察者模式定义对象之间的一种一对多依赖关系&#xff0c;使得每当一个对象状态发生改变时&#xff0c;其相关依赖对象皆得到通知并被自动更新。 实现 myclass.h // // Created by yuwp on 2024/1/12. //#ifndef DESIGNPATTERNS_MYCLASS_H #define DESIGNPATTERNS_MYCLA…

Oracle Linux 6.10 安装图解

风险告知 本人及本篇博文不为任何人及任何行为的任何风险承担责任&#xff0c;图解仅供参考&#xff0c;请悉知&#xff01;本次安装图解是在一个全新的演示环境下进行的&#xff0c;演示环境中没有任何有价值的数据&#xff0c;但这并不代表摆在你面前的环境也是如此。生产环境…

ZK高可用架构涉及常用功能整理

ZK高可用架构涉及常用功能整理 1. zk的高可用系统架构和相关组件1.1 Quorum机制1.2 ZAB协议 2. zk的核心参数2.1 常规配置2.2 特殊优化配置 3. zk常用命令3.1 常用基础命令3.2 常用运维命令 4. 事务性4.1 数据写流程4.2 数据读流程 5. 疑问和思考5.1 zk不擅长处理哪些场景&…

gitlab runner 安装、注册、配置、使用

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…