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

x33g5p2x  于2022-07-11 转载在 Spring  
字(4.9k)|赞(0)|评价(0)|浏览(510)

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

项目预览

项目介绍

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

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

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

部分代码

@RestController
@RequestMapping("/login")
public class LoginController {
    private final RedisUtil redisUtil;
    private final SystemUserService systemUserService;

    public LoginController(RedisUtil redisUtil, SystemUserService systemUserService) {
        this.redisUtil = redisUtil;
        this.systemUserService = systemUserService;
    }

    @PostMapping("/login")
    public Result<String> login(SystemUser user, @RequestParam(value = "redirectUrl") String redirectUrl) {
        List<SystemUser> userList = systemUserService.listUserByLoginName(user.getLoginName());
        if (userList.size() == 0) {
            throw new HttpException(HttpCode.LOGIN_FAILED, "没有此用户");
        } else if (userList.size() > 1) {
            throw new HttpException(HttpCode.LOGIN_FAILED, "存在多个登录名,请联系管理员");
        } else {
            SystemUser systemUser = userList.get(0);
            if (systemUser.getPassword().equals(MD5Util.md5(user.getPassword()))) {
                String token = UUID.randomUUID().toString();
                redisUtil.put(token, systemUser.getId());
                return Result.<String>ok().add(redirectUrl + "#/token=" + token);
            } else {
                throw new HttpException(HttpCode.LOGIN_FAILED, "登陆失败,密码错误");
            }
        }

    }

    @GetMapping("/logout")
    public Result<?> logout(@RequestHeader(HEADER_TOKEN) String token) {
        if (redisUtil.hasToken(token)) {
            redisUtil.deleteToken(token);
        }
        return Result.ok();
    }
}
<template>
  <div class="home">
    <el-row :gutter="70">
      <el-col :span="8">
        <el-card class="grid-content" style="height: 154px">
          <div class="avatar">
            <el-avatar :size="70" :src="icon" v-if="icon !== undefined"></el-avatar>
            <el-avatar :size="70" v-else>{{name}}</el-avatar>
          </div>
          <div class="welcome-content">
            <div>欢迎您, {{name}}</div>
            <div class="little">我管理的宿舍楼:{{statistics.building}}</div>
            <div class="little">宿舍总数: {{statistics.roomNum}}</div>
          </div>
        </el-card>
      </el-col>
      <el-col :span="8">
        <el-card class="grid-content" style="height: 154px">

        </el-card>
      </el-col>
      <el-col :span="8">
        <el-card class="grid-content" style="height: 154px">
        </el-card>
      </el-col>
    </el-row>
    <el-row :gutter="30">
      <el-col :span="12">
        <el-card class="grid-content" style="height: 180px">
        </el-card>
      </el-col>
      <el-col :span="12">
        <el-card class="grid-content" style="height: 180px">
        </el-card>
      </el-col>
    </el-row>
    <el-row>
      <el-col :span="24">
        <el-card class="grid-content" style="height: 200px">
        </el-card>
      </el-col>
    </el-row>
  </div>
</template>

<script>
import store from "../store";
import {get} from "@/api/system/home";

export default {
  name: 'Home',
  data() {
    return {
      statistics: {
        building: undefined,
        roomNum: undefined,
        totalStudent: undefined,
        livingStudent: undefined,
        leaveStudent: undefined,
        unprocessedRepair: undefined,
      }
    }
  },
  computed: {
    activeMenu() {
      const route = this.$route
      const {path} = route
      return path
    },
    name() {
      return store.state.userName
    },
    icon() {
      return store.state.userIcon
    }
  },
  methods: {
    async get() {
      const {data} = await get()
      this.statistics = data
    }
  },
  created() {
    this.get()
  }
}
</script>
<style scoped>
.avatar {
  margin: 20px 20px;
  float: left;
}
.home {
  padding: 20px;
}
.welcome-content {
  /*float: left;*/
  margin: 30px 0;
}
.grid-content {
  margin: 10px 0;
  position: relative;
}
.fixed:after {
  content: '';
  clear: both;
  display: block;
  visibility: hidden;
  height: 0;
  width: 0;
}
.little {
  font-size: 13px;
  color: #909399;
}
.mid {
  text-align: center;
}
</style>

源码下载

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

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

热门推荐:

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

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

相关文章

微信公众号

最新文章

更多