【开源】JAVA+Vue.js实现高校宿舍调配管理系统

在这里插入图片描述


目录

  • 一、摘要
    • 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/272024.html

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

相关文章

win11中微软商店如何使用微信支付?microsoft store支付教程

Microsoft Store是由微软公司提供的一个数字分发平台&#xff0c;用于购买和下载Windows操作系统及其相关应用、游戏、音乐、电影、电视节目和其他数字内容。该平台最初是作为Windows 8的一部分引入的&#xff0c;后来也适用于Windows 10和其他Microsoft平台。 以下是Microsof…

讲解linux下的Qt如何编译oracle的驱动库libqsqloci.so

1.需求 最近linux下的Qt项目中要连接oracle数据库&#xff0c;用户需要我们访问他们的oracle数据库&#xff0c;查询数据 2.遇到的问题 qt连接oracle数据库需要oracle的驱动库libqsqloci.so插件&#xff0c;需要编译下&#xff0c;之前没有编译过&#xff0c;看了网上的…

消息队列-kafka-消息发送流程(源码跟踪) 与消息可靠性

官方网址 源码&#xff1a;https://kafka.apache.org/downloads 快速开始&#xff1a;https://kafka.apache.org/documentation/#gettingStarted springcloud整合 发送消息流程 主线程&#xff1a;主线程只负责组织消息&#xff0c;如果是同步发送会阻塞&#xff0c;如果是异…

HTML—常用标签

常用标签&#xff1a; 标题标签&#xff1a;<h1></h1>......<h6></h6>段落标签&#xff1a;<p></p>换行标签&#xff1a;<br/>列表&#xff1a;无序列表<ul><li></li></ul> 有序列表<ol>&…

人工智能|机器学习——k-近邻算法(KNN分类算法)

1.简介 k-最近邻算法&#xff0c;也称为 kNN 或 k-NN&#xff0c;是一种非参数、有监督的学习分类器&#xff0c;它使用邻近度对单个数据点的分组进行分类或预测。虽然它可以用于回归问题&#xff0c;但它通常用作分类算法&#xff0c;假设可以在彼此附近找到相似点。 对于分类…

【中间件】RabbitMQ入门

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;中间件 ⛺️稳中求进&#xff0c;晒太阳 MQ的优劣&#xff1a; 优势 应用解耦&#xff1a;提升了系统容错性和可维护性异步提速&#xff1a;提升用户体验和系统吞吐量消峰填谷&#xff1…

【LeetCode 算法专题突破】---二分查找(⭐⭐⭐)

前言 我在算法题目的海洋中畅游已久&#xff0c;也曾在算法竞赛中荣获佳绩。然而&#xff0c;我发现自己对于算法的学习&#xff0c;还缺乏一个系统性的总结和归类。尽管我已经涉猎过不少算法类型&#xff0c;但心中仍旧觉得有所欠缺&#xff0c;未能形成完整的算法体系。 因…

问题解决 | vscode无法连接服务器而ssh和sftp可以

解决步骤 进入家目录删除.vscode-server rm -rf .vscode-server 然后再次用vscode连接服务器时&#xff0c;会重新安装&#xff0c;这时可能报出一些缺少依赖的错 需要联系管理员安装相关依赖&#xff0c;比如 sudo apt-get install libstdc6 至此问题解决

【数据结构】单链表的层层实现!! !

关注小庄 顿顿解馋(●’◡’●) 上篇回顾 我们上篇学习了本质为数组的数据结构—顺序表&#xff0c;顺序表支持下标随机访问而且高速缓存命中率高&#xff0c;然而可能造成空间的浪费&#xff0c;同时增加数据时多次移动会造成效率低下&#xff0c;那有什么解决之法呢&#xff…

打造经典游戏:HTML5与CSS3实现俄罗斯方块

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…

机器学习开源分子生成系列(1)-DeepFrag的本地部署及使用

欢迎浏览我的CSND博客&#xff01; Blockbuater_drug …进入 文章目录 前言一、DeepFrag是什么&#xff1f;二、conda中安装DeepFrag CLI环境1. 创建环境并激活2. 下载pre-trained model3. DeepFrag CLI 使用方法必需参数&#xff1a;可选参数&#xff1a; 4. DeepFrag CLI 使用…

带摄像头的 AirPods,苹果会怎么做出来?

苹果对智能产品的设计&#xff0c;正在放飞自我。 根爆料&#xff0c;苹果在「未来设备」的规划里&#xff0c;有两个大胆的想法&#xff1a; 一是带有屏幕的 HomePod 正在研发中&#xff0c;当中将集成 Apple TV、FaceTime 等重多功能&#xff1b;二是配备摄像头的 AirPod…

201909青少年软件编程(Scratch)等级考试试卷(三级)

青少年软件编程&#xff08;Scratch&#xff09;等级考试试卷&#xff08;三级&#xff09;2019年9月 第1题&#xff1a;【 单选题】 执行下面的脚本后&#xff0c;变量“分数”的值是多少&#xff1f;&#xff08;&#xff09; A:5 B:6 C:10 D:25 【正确答案】: C 【试题…

[java基础揉碎]super关键字

super关键字: 基本介绍 super代表父类的引用&#xff0c;用于访问父类的属性、方法、构造器 super给编程带来的便利/细节 1.调用父类的构造器的好处(分工明确&#xff0c;父类属性由父类初始化&#xff0c;子类的属性由子类初始化) 2.当子类中有和父类中的成员(属性和方法)重…

新零售SaaS架构:订单履约系统架构设计(万字图文总结)

什么是订单履约系统&#xff1f; 订单履约系统用来管理从接收客户订单到将商品送达客户手中的全过程。 它连接了上游交易&#xff08;客户在销售平台下单环&#xff09;和下游仓储配送&#xff08;如库存管理、物流配送&#xff09;&#xff0c;确保信息流顺畅、操作协同&…

UDP实现文件的发送、UDP实现全双工的聊天、TCP通信协议

我要成为嵌入式高手之3月7日Linux高编第十七天&#xff01;&#xff01; ———————————————————————————— 回顾 重要程序 1、UDP实现文件的发送 发端&#xff1a; #include "head.h"int main(void) {int sockfd 0;struct sockaddr_i…

141 Linux 系统编程18 ,线程,线程实现原理,ps –Lf 进程 查看

一 线程概念 什么是线程 LWP&#xff1a;light weight process 轻量级的进程&#xff0c;本质仍是进程(在Linux环境下) 进程&#xff1a;独立地址空间&#xff0c;拥有PCB 线程&#xff1a;有独立的PCB&#xff0c;但没有独立的地址空间(共享) 区别&#xff1a;在于是否共…

一周学会Django5 Python Web开发-Django5内置模板引擎-模板上下文变量

锋哥原创的Python Web开发 Django5视频教程&#xff1a; 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计32条视频&#xff0c;包括&#xff1a;2024版 Django5 Python we…

瑞芯微 | I2S-音频基础 -1

最近调试音频驱动&#xff0c;顺便整理学习了一下i2s、alsa相关知识&#xff0c;整理成了几篇文章&#xff0c;后续会陆续更新。 喜欢嵌入式、Li怒晓得老铁可以关注一口君账号。 1. 音频常用术语 名称含义ADC&#xff08;Analog to Digit Conversion&#xff09;模拟信号转换…

第五十三回 入云龙斗法破高廉 黑旋风下井救柴进-AI训练数据处理和读取

罗真人教了公孙胜五雷天罡正法&#xff0c;并让他记住“逢幽而止&#xff0c;遇汴而环”八个字。三人辞别了罗真人&#xff0c;戴宗先回去报信&#xff0c;李逵和公孙胜结伴而行。 走了三天&#xff0c;来到了武冈镇&#xff0c;李逵碰到一个铁匠&#xff0c;叫金钱豹子汤隆&a…