【开源】基于Vue+SpringBoot的高校宿舍调配管理系统

在这里插入图片描述
项目编号: S 051 ,文末获取源码。 \color{red}{项目编号:S051,文末获取源码。} 项目编号:S051,文末获取源码。


目录

  • 一、摘要
    • 1.1 项目介绍
    • 1.2 项目录屏
  • 二、功能需求
    • 2.1 学生端
    • 2.2 宿管
    • 2.3 老师端
  • 三、系统展示
  • 四、核心代码
    • 4.1 查询单条个人习惯
    • 4.2 查询我的室友
    • 4.3 查询宿舍
    • 4.4 查询指定性别全部宿舍
    • 4.5 初次分配宿舍
  • 五、免责说明


一、摘要

1.1 项目介绍

基于JAVA+Vue+SpringBoot+MySQL的高校宿舍调配管理系统,包含了宿舍管理模块、宿舍分配模块、个人配置模块,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,高校宿舍调配管理系统基于角色的访问控制,给高校管理员、教师和学生角色使用,可将权限精确到按钮级别,您可以自定义角色并分配权限,系统适合设计精确的权限约束需求。

1.2 项目录屏

源码下载


二、功能需求

第二章为功能需求,并非实际功能模块,请同学们知晓。

使用技术:前端vue 后端springboot 数据库mysql。

名称:基于多维匹配度分析的宿舍调配管理系统开发。

登录界面分角色登录,在登录之前展示如下界面。

在这里插入图片描述
点击右上方登录进入登录界面,如下。

在这里插入图片描述
一共有三个用户:学生 宿管 老师

2.1 学生端

有个人信息的添加修改,退出登录,分配信息(填写宿舍分配所需个人信息),调宿信息(填写申请调宿申请和查看反馈结果),我的舍友(展示宿舍分配之后的舍友信息)。

在这里插入图片描述

申请调宿的信息:

在这里插入图片描述
分配宿舍的信息:

在这里插入图片描述
在分配宿舍这块使用 kmeans 算法或者 贪心 算法。

2.2 宿管

个人信息的填写修改,学生管理(该楼学生的信息查询)。

在这里插入图片描述

2.3 老师端

个人信息,学生查询(精准查询(按照学号),模糊查询(学院专业班级)),宿舍调配(处理学生的申请调宿问题),再有一个对按照算法分配好的学生宿舍结果的一个确认。

在这里插入图片描述


三、系统展示

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


四、核心代码

4.1 查询单条个人习惯

@RequestMapping(value = "/getMySettings", method = RequestMethod.GET)
@ApiOperation(value = "查询单条个人习惯")
public Result<MySettings> getMySettings(){User currUser = securityUtil.getCurrUser();MySettings mySettings = iMySettingsService.getById(currUser.getId());if(mySettings == null) {mySettings = MySettingsUtils.getMySettings(currUser);iMySettingsService.saveOrUpdate(mySettings);}return new ResultUtil<MySettings>().setData(mySettings);
}

4.2 查询我的室友

@RequestMapping(value = "/getMyFriend", method = RequestMethod.GET)
@ApiOperation(value = "查询我的室友")
public Result<List<MySettings>> getMyFriend(){User currUser = securityUtil.getCurrUser();MySettings mySettings = iMySettingsService.getById(currUser.getId());if(mySettings == null) {return ResultUtil.error("没有你的配置");}QueryWrapper<MySettings> qw = new QueryWrapper<>();qw.eq("dorm_id",mySettings.getDormId());return new ResultUtil<List<MySettings>>().setData(iMySettingsService.list(qw));
}

4.3 查询宿舍

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询宿舍")
public Result<IPage<Dorm>> getByPage(@ModelAttribute Dorm dorm ,@ModelAttribute PageVo page){QueryWrapper<Dorm> qw = new QueryWrapper<>();if(!ZwzNullUtils.isNull(dorm.getHouse())) {qw.like("house",dorm.getHouse());}if(!ZwzNullUtils.isNull(dorm.getRoom())) {qw.like("room",dorm.getRoom());}if(!ZwzNullUtils.isNull(dorm.getType())) {qw.like("type",dorm.getType());}IPage<Dorm> data = iDormService.page(PageUtil.initMpPage(page),qw);return new ResultUtil<IPage<Dorm>>().setData(data);
}

4.4 查询指定性别全部宿舍

@RequestMapping(value = "/getMyAll", method = RequestMethod.GET)
@ApiOperation(value = "查询指定性别全部宿舍")
public Result<List<Dorm>> getMyAll(){User currUser = securityUtil.getCurrUser();QueryWrapper<Dorm> qw = new QueryWrapper<>();if(Objects.equals("女",currUser.getSex())) {qw.eq("type","女生宿舍");} else {qw.eq("type","男生宿舍");}return new ResultUtil<List<Dorm>>().setData(iDormService.list(qw));
}

4.5 初次分配宿舍

@RequestMapping(value = "/createDorm", method = RequestMethod.GET)
@ApiOperation(value = "初次分配宿舍")
public Result<Object> createDorm(){User currUser = securityUtil.getCurrUser();MySettings mySettings = iMySettingsService.getById(currUser.getId());if(mySettings == null) {return ResultUtil.error("未初始化");}if(!ZwzNullUtils.isNull(mySettings.getDormId())) {return ResultUtil.error("您的宿舍已分配!");}QueryWrapper<DormChange> qw2 = new QueryWrapper<>();qw2.eq("user_id",currUser.getId());qw2.eq("status","未审核");if(iDormChangeService.count(qw2) > 0L) {return ResultUtil.error("您已申请,请等待审核!");}// 确认学生的性别String sex = mySettings.getSex();if(!Objects.equals("女",sex)) {sex = "男";}// 查询所有宿舍List<Dorm> dormList = iDormService.list();// 次优解,空宿舍Dorm ans2 = null;// 最优解,有人且符合条件的宿舍Dorm ans1 = null;// 最优解符合的条件数Integer ansCount = -1;for (Dorm d : dormList) {if(Objects.equals("男",sex) && Objects.equals("女生宿舍",d.getType()) || Objects.equals("女",sex) && Objects.equals("男生宿舍",d.getType())) {// 宿舍性别过滤continue;}// 查询宿舍内的学生QueryWrapper<MySettings> sQw = new QueryWrapper<>();sQw.eq("dorm_id",d.getId());List<MySettings> settingsList = iMySettingsService.list(sQw);if(settingsList.size() > 1) {// 设定两人满员,过滤该宿舍} else if(settingsList.size() < 1) {// 找到次优解if(ans2 == null) {ans2 = d;}} else {// 宿舍内满足条件的数量Integer maxCount = 0;MySettings se = settingsList.get(0);if(se == null) {continue;}// 计算和室友关系的匹配指标if(Objects.equals(se.getSetting1(),mySettings.getSetting1())) {maxCount ++;}if(Objects.equals(se.getSetting2(),mySettings.getSetting2())) {maxCount ++;}if(Objects.equals(se.getSetting3(),mySettings.getSetting3())) {maxCount ++;}if(Objects.equals(se.getSetting4(),mySettings.getSetting4())) {maxCount ++;}if(Objects.equals(se.getSetting5(),mySettings.getSetting5())) {maxCount ++;}if(Objects.equals(se.getSetting6(),mySettings.getSetting6())) {maxCount ++;}if(Objects.equals(se.getSetting7(),mySettings.getSetting7())) {maxCount ++;}if(Objects.equals(se.getSetting8(),mySettings.getSetting8())) {maxCount ++;}if(maxCount > ansCount) {// 如果满足最优条件ansCount = maxCount;ans1 = d;}}}if(ans1 != null) {DormChange dc = MySettingsUtils.createDormChange(mySettings, ans1);iDormChangeService.saveOrUpdate(dc);} else if(ans2 != null) {DormChange dc = MySettingsUtils.createDormChange(mySettings, ans2);iDormChangeService.saveOrUpdate(dc);} else {return ResultUtil.error("没有合适的宿舍");}return ResultUtil.success();
}

五、免责说明

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

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

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

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

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

相关文章

基于Netty的网络调用实现

作为一个分布式消息队列&#xff0c;通信的质量至关重要。基于TCP协议和Socket实现一个高效、稳定的通信程序并不容易&#xff0c;有很多大大小小的“坑”等待着经验不足的开发者。RocketMQ选择不重复发明轮子&#xff0c;基于Netty库来实现底层的通信功能。 1 Netty介绍 Net…

VOC数据集转换为COCO数据集

VOC数据集格式 get_list.py import os import random import shutil# 设置随机种子 random.seed(1000)# 判断Annotations和JpegImages是否对应 train_precent=0.8 label_path= "../../Annotations" print(os.path.abspath(label_path)) save="../Main" pr…

【开源】基于Vue和SpringBoot的学校热点新闻推送系统

项目编号&#xff1a; S 047 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S047&#xff0c;文末获取源码。} 项目编号&#xff1a;S047&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 新闻类型模块2.2 新闻档案模块2.3 新…

Docker的项目资源参考

Docker的项目资源包括以下内容&#xff1a; Docker官方网站&#xff1a;https://www.docker.com/ Docker Hub&#xff1a;https://hub.docker.com/ Docker文档&#xff1a;https://docs.docker.com/ Docker GitHub仓库&#xff1a;https://github.com/docker Docker官方博客…

CentOS7安装MiniO

目录 1、简介 2、安装 2.1、Binary 2.2、RPM&#xff08;RHEL&#xff09;就是红帽&#xff0c;CentOS就用这个 2.3、DEB&#xff08;Ubuntu/Debian&#xff09; 2.4、创建指定的目录并且将下载的安装包上传上去 3、启动MiniO服务 3.1、脚本如下&#xff1a; 4、进入服务…

[个人笔记] vCenter6.7使用自建SSL证书

SSL - 运维篇 第三章 vCenter6.7使用自建SSL证书 SSL - 运维篇系列文章回顾vCenter6.7使用自建SSL证书vCenter 6.7 上传文件到ShellvCenter 6.7 Shell 替换SSL证书全流程测试&验证 参考链接 系列文章回顾 第二章 FortiGate防火墙使用自建SSL证书 vCenter6.7使用自建SSL证书…

Python基础语法之学习占位符

Python基础语法之学习占位符 一、代码二、效果 一、代码 name "张三" sex "男" age 10 money 12.5# 通过占位符完成拼接 print("姓名&#xff1a;%s" % name) print("姓名&#xff1a;%s,性别&#xff1a;%s" % (name, sex))text…

RabbitMQ消息模型之Routing-Direct

Routing Direct 在Fanout模式中&#xff0c;一条消息&#xff0c;会被所有订阅的队列都消费。但是在某些场景下&#xff0c;我们希望不同的消息被不同的队列消费。这时就要用到Direct类型的Exchange。 在Direct模型下&#xff1a; 队列与交换机的绑定&#xff0c;不能是任意…

【算法刷题】Day9

文章目录 611. 有效三角形的个数![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/9d627e680e9144a2b67474a1d80aa030.png)题解&#xff1a;代码&#xff1a; LCR 179. 查找总价格为目标值的两个商品题解&#xff1a;代码&#xff1a; 611. 有效三角形的个数 原题链…

肖sir__mysql之视图__009

mysql之视图 一、什么是视图 视图是一个虚拟表&#xff08;逻辑表&#xff09;&#xff0c;它不在数据库中以存储形式保存&#xff08;本身包含数据&#xff09;&#xff0c;是在使用视图的时候动态生成。 二、视图作用 1、查询数据库中的非常复的数据 例如&#xff1a;多表&a…

Bitcoin SV 和 Bitcoin Core 之间首次跨链原子交换

我们已经执行了 Bitcoin SV 和 Bitcoin Core 之间的首次原子交换。 这一成就代表了比特币 SV 的重大进步&#xff0c;以去信任的方式促进了与其他区块链的无缝互操作性。 图片源自Gemini 在上一篇文章中&#xff0c;我们解释了原子交换的高级理论。 我们深入研究了使用哈希时间…

高项备考葵花宝典-项目范围管理输入、输出、工具和技术

项目范围管理包括确保项目“做”且“只做”所需的全部工作&#xff08;即不能少做&#xff0c;也不能多做&#xff0c;如果多做&#xff0c;就要消耗团队额外的时间和资源&#xff0c;并且无法被认可&#xff09;&#xff0c;以成功完成项目。项目范围管理主要在于定义和控制哪…

Windows核心编程 注册表

目录 注册表概述 打开关闭注册表 创建删除子健 查询写入删除键值 子健和键值的枚举 常用注册表操作 注册表概述 注册表是Windows操作系统、硬件设备以及客户应用程序得以正常运行和保存设置的核心"数据库"&#xff0c;也可以说是一个非常巨大的树状分层结构的…

Django路由分发

首先明白一点&#xff0c;Django的每一个应用下都可以有自己的templates文件夹&#xff0c;urls.py文件夹&#xff0c;static文件夹&#xff0c;基于这个特点&#xff0c;Django能够很好的做到分组开发&#xff08;每个人只写自己的app&#xff09;&#xff0c;作为老大&#x…

使用tomcat搭建简易文件服务器

步骤 1、在本机另外部署一个tomcat作为文件服务器 可以像我这样将tomcat文件复制一个做为服务器 2、在webapps下新建文件夹uploadfiles&#xff0c;这个文件夹就是用来存储上传的文件的 &#xff08;记住一定要是在作为服务器的tomcat的webapps下&#xff09; 3、修改conf/…

Redis集群模式

Redis集群主要有三种模式 主从复制模式&#xff08;Master-Slave&#xff09;、哨兵模式&#xff08;Sentinel&#xff09;和Cluster模式 主从复制模式&#xff1a;适用于数据备份和读写分离场景&#xff0c;配置简单&#xff0c;但在主节点故障时需要手动切换。哨兵模式&…

vue005——vue组件入门(非单文件组件和单文件组件)

一、非单文件组件 1.1、单文件组件的使用 1.1.1、局部注册 1、第一步&#xff1a;创建school组件 2、第二步&#xff1a;注册组件&#xff08;局部注册&#xff09; 3、第三步&#xff1a;使用组件&#xff08;编写组件标签&#xff09; <!DOCTYPE html> <html>…

kettle入门教程

一、概述 1.什么是kettle Kettle是一款开源的ETL(Extract-Transform-Load)工具&#xff0c;纯java编写&#xff0c;可以在Window、Linux、Unix上运行&#xff0c;绿色无需安装&#xff0c;数据抽取高效稳定。 2.kettle工程存储方式 &#xff08;1&#xff09;以XML形式存储 …

37 - 数据库参数设置优化,失之毫厘差之千里

MySQL 是一个灵活性比较强的数据库系统&#xff0c;提供了很多可配置参数&#xff0c;便于我们根据应用和服务器硬件来做定制化数据库服务。如果现在让你回想&#xff0c;你可能觉得在开发的过程中很少去调整 MySQL 的配置参数&#xff0c;但我今天想说的是我们很有必要去深入了…

什么是PDM图纸管理系统?PDM图纸管理系统主要功能有哪些?

PDM (Product Data Management) 图纸管理系统 是用于管理企业内部图纸和相关文件的软件系统。它提供了一个集中存储、组织和跟踪图纸和文件的平台&#xff0c;以确保团队成员能够轻松访问、共享和更新所需的工程设计和制造数据。 彩虹PDM系统|PDM产品数据管理系统|BOM管理|工艺…