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

news/2023/12/1 1:56:26

在这里插入图片描述
项目编号: 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.ppmy.cn/news/1231384.html

相关文章

应用软件安全编程--24不要使用硬编码密匙

当程序中使用硬编码加密密匙时&#xff0c;所有项目开发人员都可以查看该密匙&#xff0c;甚至如果攻击者能够获取 程序 class文件&#xff0c;可通过反编译得到密匙&#xff0c;硬编码加密密匙会大大降低系统安全性。 对于避免使用硬编码密匙的情况&#xff0c;示例1给出了不…

Vue3的watch使用介绍及场景

目录 一、watch的使用 1. 监听一个变量 2. 监听一个对象的属性 3. 监听一个函数的返回值 二、watch的使用场景 1. 监听表单的变化 2. 监听路由参数的变化 3. 监听Vuex中的数据变化 三、watch的效果图 四、watch的示例 以上就是Vue3的watch的介绍&#xff0c;watch是…

(付费请教,防遗忘记录)为什么EDEM bondV1 V2添加后还是没有胶结?????

最近用到了EDEM的胶结功能,在添加了bond V1和V2后,我发现无论颗粒半径设置为多少,接触半径设置为多少,胶结键的参数设置为多少,bond generated数量均为0!!!在后处理中bond中的力也通通为0!!我跟我的同门百思不得其解!!!!最终付费请教了一个大牛,解决了这个问题!…

纽扣电池/含纽扣电池产品上架亚马逊各国法规标准要求16 CFR 第 1700.15/20 ANSI C18.3M(瑞西法案认证)

亚马逊纽扣电池认证标准有哪些&#xff1f; 一、美国站&#xff08;亚马逊纽扣电池/含纽扣电池商品&#xff09;安全测试标准要求&#xff1a; 16 CFR 第 1700.15 、16 CFR 第 1700.20 ANSI C18.3M、警示标签声明要求&#xff08;第 117-171 号公众法&#xff09; 二、澳大…

SMB over QUIC帮助实现文件服务器在公网安全共享

要在Internet边缘服务器提供安全、可靠的共享连接&#xff0c;可以通过安全的SMB over QUIC来取代传统的TCP网络传输。 QUIC 是 IETF 标准化协议&#xff0c;与 TCP 相比具有许多优势&#xff1a; 所有数据包始终加密&#xff0c;握手使用 TLS 1.3 进行身份验证可靠和不可靠应…

Mysql获取所有员工当前的管理者信息

个人网站 文章首发于小肖学数据分析 题目来自牛客网 描述 有一个员工表dept_emp简况如下: emp_nodept_nofrom_dateto_date10001d0011986-06-269999-01-0110002d0011996-08-039999-01-0110003d0021995-12-039999-01-01 第一行表示为员工编号为10001的部门是d001部门。 有一…

3D 纹理渲染如何帮助设计师有效、清晰地表达设计理念

在线工具推荐&#xff1a; 三维数字孪生场景工具 - GLTF/GLB在线编辑器 - Three.js AI自动纹理化开发 - YOLO 虚幻合成数据生成器 - 3D模型在线转换 - 3D模型预览图生成服务 定义 3D 渲染可视化及其用途 3D 可视化是一种艺术形式。这是一个机会。这是进步。借助 3D 纹理…

cnn和fc的区别

1、cnn 多用于图像处理模型上&#xff1b;fc多用于序列处理模型上&#xff1b; 2、cnn 参数少&#xff0c;每一层都只有一个卷积核&#xff0c;且感知信息范围小&#xff0c;偏局部&#xff1b;而fc参数多&#xff0c;即每一层都有一份weight&#xff0c;感知信息是全面的&…

API网关那些事【架构新知系列】

目前随着云原生ServiceMesh和微服务架构的不断演进&#xff0c;网关领域新产品不断出现&#xff0c;各种网关使用的技术&#xff0c;功能和应用领域也不断扩展&#xff0c;在各有所长的前提下也有很多功能重合&#xff0c;网上各种技术PR文章&#xff0c;评测资料和网关落地实践…

【shell脚本】全自动完成pxe无人值守批量装机脚本,匹配centos系列

本脚本采用的是搭建ftp服务器、tftp服务器、dhcp服务器来完成文件的传输 ks应答文件为最小化安装&#xff0c;免去图形化&#xff0c;可以实现一键装机~~ #!/bin/bash yum -y install tftp-server dhcp vsftpd syslinux &> /dev/null ###脚本说明&#xff1a;需要输入…

目标检测 详解SSD原理,数据处理与复现

原理详解 前言 今天我们要读的这篇VGGNet&#xff08;《Very Deep Convolutional Networks For Large-Scale Image Recognition》&#xff09;&#xff0c;就是在AlexNet基础上对深度对网络性能的影响做了进一步的探索。它是ImageNet 2014年亚军&#xff0c;相比于AlexNet&am…

TeXLive 2023安装教程

TeXLive 2023安装教程 本文介绍最新TeX发行版——TeXLive 2023的安装步骤。如果你想用LaTeX进行写作&#xff0c;那么需要搭建LaTeX环境&#xff1a;可以选择下面两种方案之一进行安装&#xff1a;(1)TeXLive 2023TeXStudio或者(2)TeXLive 2023WinEdt 11。其中TeXLive 2023是由…

【Linux】动静态库的使用与软链接的结合

文章目录 前言一、静态库1.静态库的创建2.静态库的链接3.将库进行打包4.链接方法&#xff1a;1.直接链接2.拷贝到系统路径里面3.采用软链接方法 二、动态库1.解决加载找不到动态库的方法1.直接拷贝2.建立软链接3.建立自己的动态路径配置文件 2.为什么动态库权限需可执行而静态库…

Notpad-- ubuntu下载安装

Notpad-- ubuntu下载安装 下载 Gitee链接&#xff1a; https://gitee.com/cxasm/notepad– 安装 sudo apt install *.deb运行 /opt/apps/com.hmja.notepad/files/Notepad--出错 需要安装qt5 sudo apt-get install qt5-default

关于sqlModel 实现查询表单入参空值和模糊匹配一次性查询

在处理表单提交后&#xff0c;后端 SQL 查询部分空值和部分模糊值时&#xff0c;可以使用 SQLModel 构建动态查询。你可以根据表单数据动态构建 SQL 查询&#xff0c;并且只添加那些非空的、有值的条件。 以下是一个示例&#xff0c;假设你有一个模型 Item&#xff1a; from …

如何修改百科内容?百度百科内容怎么修改?

百科词条创建上去是相当不易的&#xff0c;同时修改也是如此&#xff0c;一般情况下&#xff0c;百科词条是不需要修改的&#xff0c;但是很多时候企业或是人物在近期收获了更多成就或是有更多的变动&#xff0c;这个时候就需要补充维护词条了&#xff0c;如何修改百科内容&…

金蝶云星空套打设计

文章目录 金蝶云星空套打设计下载登录打开需要创建套打的单据新建套打模板数据中心-发货通知单-设置预览 金蝶云星空套打设计 下载 登录 打开需要创建套打的单据 KD开头&#xff0c;是标准产品预设。 新建套打模板 默认A4纸 默认插入三行三列。 拖入文本&#xff0c;填写内容…

VR全景打造亮眼吸睛创意内容:三维模型、实景建模

随着VR技术在不同行业之间应用落地&#xff0c;市场规模也在快速扩大&#xff0c;VR全景这种全新的视觉体验为我们生活中的许多方面都带来了无限的可能。更加完整的呈现出一个场景或是物体的所有细节&#xff0c;让浏览者感受到自己仿佛置身于现场一般&#xff1b;其次&#xf…

开启金融之门,一切皆有可能——人大女王金融硕士项目助您成就辉煌

在这个充满无限可能的世界里&#xff0c;每个人都有自己的梦想和追求。对于许多人来说&#xff0c;拥有一份高薪、有前景的工作是他们的梦想。而要实现这个梦想&#xff0c;除了自身实力外&#xff0c;好的学历和丰富的资源也至关重要。今天&#xff0c;我们就来为大家介绍一个…

捷诚管理信息系统 SQL注入漏洞复现

0x01 产品简介 捷诚管理信息系统是一款功能全面&#xff0c;可以支持自营、联营到外柜租赁的管理&#xff0c;其自身带工作流管理工具&#xff0c;能够帮助企业有效的开展内部审批工作。 0x02 漏洞概述 捷诚管理信息系统CWSFinanceCommon.asmx接口存在SQL注入漏洞。未经身份认…
最新文章