• 免费分享一个springboot+vue校园宿舍管理系统,挺漂亮的


    大家好,我是锋哥,看到一个不错的springboot+vue前后端分离的校园宿舍管理系统,分享下哈。

    项目预览

     

     

    项目介绍

    功能主要实现校园宿舍的宿舍管理,学生管理,班级管理,宿舍楼管理,以及维修记录管理,晚归管理,请假管理。

    同时有一套系统管理,包含用户管理,角色管理,菜单管理,日志管理。

    系统需求分析
    第一部分:调查思户需求奎系统的最终用户为宿仓楼管理员,本宿贪楼的学生。根据我们日常生活中的经验,结合对自己学校宿舍楼管理老师的咨询和对同宿舍楼同学的调查,得出用户 的下列实际要求:
    一、宿舍楼的基本情况学生住在宿舍楼中,每栋宿舍楼都会有若干名老师负责本宿舍楼
    的日常管理。
    1、学生的基本信息:入校时,每位同学都有唯一的学号,并被分配到指定的宿舍楼和指定的宿舍,也会有一个宿舍号,其入校时间就是他的入住时间。另外,为了管理上的方便,同一院系的学生的宿舍一般在一起,相应地会有其所在的院系名称。
    2、宿舍的基本信息:
    1)宿舍财产的基本信息:每个宿舍的财产属于学校,比如电灯,床铺,柜子,桌椅等,为了对不同的财产进行区分,可以为每种财产分配不同的财产号。这样有利于财产的报修和管理。
    (2)报修的基本信息:宿舍楼中经常出现财产的损坏,比如灯泡坏了,厕所的马桶出故障了等,这时,同学们需要将财产损坏情况报告给宿舍楼管理员,以便学校派人进行维修。这时,需要记录报修的宿舍号和损坏的财产编号,同时记录报修的时间和损坏的原因。当损坏的财产维修完毕后,应记录解决时间,表示该报修成功解决。
    3)离校的基本信息:
    每当放寒假或暑假时,同学们大部分都会回家;每当五一”或十一”放假时,同学们也有很多不会留在宿舍。这时,为加强学校对同学假期安全的管理,离校的同学应登记离校时间,待返校后记录返校时间,以便学校查证和管理。二、用户对系统的要求
    1、宿舍楼管理员
    (1).信息要求宿舍楼管理员能查询上面提到的宿舍楼的所有相关信息,包括某一学号的学生在宿舍楼中住宿的详细信息,快件收发的所有信息,报修的所有信息,夜归的详细信息和学生离返校的信息。以利于对整个宿舍楼的全面管理。
    (2).处理要求当学生基本信息发生变化时,宿舍楼管理员能对其进行修改。比如,某些同学搬到其他的宿舍中去,他们在本宿舍楼中相应的记录就应该删去;或者学生转换专业,他们记录中院系的信息也要作相应的修改等等。当宿舍楼的电话号码发生变更时,宿舍楼管理员能根据有关证明做出修改。当宿舍财产报修及时解决后,管理员应登记解决时间,表明该报修问题已成功解决。
     

    部分代码

    1. @RestController
    2. @RequestMapping("/login")
    3. public class LoginController {
    4. private final RedisUtil redisUtil;
    5. private final SystemUserService systemUserService;
    6. public LoginController(RedisUtil redisUtil, SystemUserService systemUserService) {
    7. this.redisUtil = redisUtil;
    8. this.systemUserService = systemUserService;
    9. }
    10. @PostMapping("/login")
    11. public Result<String> login(SystemUser user, @RequestParam(value = "redirectUrl") String redirectUrl) {
    12. List<SystemUser> userList = systemUserService.listUserByLoginName(user.getLoginName());
    13. if (userList.size() == 0) {
    14. throw new HttpException(HttpCode.LOGIN_FAILED, "没有此用户");
    15. } else if (userList.size() > 1) {
    16. throw new HttpException(HttpCode.LOGIN_FAILED, "存在多个登录名,请联系管理员");
    17. } else {
    18. SystemUser systemUser = userList.get(0);
    19. if (systemUser.getPassword().equals(MD5Util.md5(user.getPassword()))) {
    20. String token = UUID.randomUUID().toString();
    21. redisUtil.put(token, systemUser.getId());
    22. return Result.<String>ok().add(redirectUrl + "#/token=" + token);
    23. } else {
    24. throw new HttpException(HttpCode.LOGIN_FAILED, "登陆失败,密码错误");
    25. }
    26. }
    27. }
    28. @GetMapping("/logout")
    29. public Result logout(@RequestHeader(HEADER_TOKEN) String token) {
    30. if (redisUtil.hasToken(token)) {
    31. redisUtil.deleteToken(token);
    32. }
    33. return Result.ok();
    34. }
    35. }

    1. <template>
    2. <div class="home">
    3. <el-row :gutter="70">
    4. <el-col :span="8">
    5. <el-card class="grid-content" style="height: 154px">
    6. <div class="avatar">
    7. <el-avatar :size="70" :src="icon" v-if="icon !== undefined">el-avatar>
    8. <el-avatar :size="70" v-else>{{name}}el-avatar>
    9. div>
    10. <div class="welcome-content">
    11. <div>欢迎您, {{name}}div>
    12. <div class="little">我管理的宿舍楼:{{statistics.building}}div>
    13. <div class="little">宿舍总数: {{statistics.roomNum}}div>
    14. div>
    15. el-card>
    16. el-col>
    17. <el-col :span="8">
    18. <el-card class="grid-content" style="height: 154px">
    19. el-card>
    20. el-col>
    21. <el-col :span="8">
    22. <el-card class="grid-content" style="height: 154px">
    23. el-card>
    24. el-col>
    25. el-row>
    26. <el-row :gutter="30">
    27. <el-col :span="12">
    28. <el-card class="grid-content" style="height: 180px">
    29. el-card>
    30. el-col>
    31. <el-col :span="12">
    32. <el-card class="grid-content" style="height: 180px">
    33. el-card>
    34. el-col>
    35. el-row>
    36. <el-row>
    37. <el-col :span="24">
    38. <el-card class="grid-content" style="height: 200px">
    39. el-card>
    40. el-col>
    41. el-row>
    42. div>
    43. template>
    44. <script>
    45. import store from "../store";
    46. import {get} from "@/api/system/home";
    47. export default {
    48. name: 'Home',
    49. data() {
    50. return {
    51. statistics: {
    52. building: undefined,
    53. roomNum: undefined,
    54. totalStudent: undefined,
    55. livingStudent: undefined,
    56. leaveStudent: undefined,
    57. unprocessedRepair: undefined,
    58. }
    59. }
    60. },
    61. computed: {
    62. activeMenu() {
    63. const route = this.$route
    64. const {path} = route
    65. return path
    66. },
    67. name() {
    68. return store.state.userName
    69. },
    70. icon() {
    71. return store.state.userIcon
    72. }
    73. },
    74. methods: {
    75. async get() {
    76. const {data} = await get()
    77. this.statistics = data
    78. }
    79. },
    80. created() {
    81. this.get()
    82. }
    83. }
    84. script>
    85. <style scoped>
    86. .avatar {
    87. margin: 20px 20px;
    88. float: left;
    89. }
    90. .home {
    91. padding: 20px;
    92. }
    93. .welcome-content {
    94. /*float: left;*/
    95. margin: 30px 0;
    96. }
    97. .grid-content {
    98. margin: 10px 0;
    99. position: relative;
    100. }
    101. .fixed:after {
    102. content: '';
    103. clear: both;
    104. display: block;
    105. visibility: hidden;
    106. height: 0;
    107. width: 0;
    108. }
    109. .little {
    110. font-size: 13px;
    111. color: #909399;
    112. }
    113. .mid {
    114. text-align: center;
    115. }
    116. style>

    源码下载

    (CSDN 0积分下载):springboot+vue校园宿舍管理系统-Java文档类资源-CSDN下载

    或者加锋哥WX:java2589 领取也行

    热门推荐:

    我写了一套SpringBoot微信小程序电商全栈就业实战课程,免费分享给CSDN的朋友们_java1234_小锋的博客-CSDN博客_java 实现微信分享

    springboot+vue前后端音乐网系统,挺漂亮的_java1234_小锋的博客-CSDN博客

  • 相关阅读:
    基于机器学习的课堂自动点名系统
    React 全栈体系(七)
    Java的Escape Analysis和锁优化
    springcloud使用微服务的搭建
    Java 设计模式——访问者模式
    Redis——Jedis的使用
    赋能智慧校园!A3D数字孪生可视化,轻量又高效!
    Fourier分析入门——第11章——Fourier变换
    工大智信智能听诊器:科技创新,赋能医疗
    fanotify
  • 原文地址:https://blog.csdn.net/caoli201314/article/details/125705973