【毕业设计】基于SpringBoot+vue的学生宿舍管理系统设计与实现

55 阅读7分钟

📋个人简介

🎅 作者简介:大家好,我是莫子莫✌️
🌝 支持一下:点赞👍+收藏🌟+留言📪
📣 系列专栏:毕业设计参考案例🍁
✉️格言:没有复杂的系统💻只有复杂的灵魂!🌞
🍅源码可私聊📞或+扣:1833738460🍅

屏幕截图 2023-11-25 112349.png

一.前言

随着科技的不断发展,互联网技术已经深入到各个领域,使得人们的生活方式和工作方式都发生了巨大的改变。特别是在高校管理领域,随着学生人数的增加和管理的复杂性的提升,传统的手工管理模式已经无法满足现代高校管理的需求。因此,设计和实现一个基于互联网技术的学生宿舍管理系统,已经成为高校管理现代化的必然趋势。

本文主要介绍了一个基于SpringBoot+Vue的学生宿舍管理系统的设计与实现。该系统利用SpringBoot框架提供的后端服务支持和Vue框架提供的前端用户界面,实现了学生宿舍管理的自动化和信息化。

首先,该系统具有高效的信息管理能力。通过对学生信息、宿舍信息等关键数据的收集、存储和管理,该系统可以实时更新和查询这些信息,从而提高了管理效率和服务质量。

其次,该系统具有良好的用户体验。通过使用Vue框架开发前端用户界面,该系统可以提供直观、易用的界面和交互方式,方便用户进行操作和管理。

最后,该系统具有高度的可扩展性和可维护性。通过采用前后端分离的架构和模块化的设计方式,该系统可以方便地进行功能扩展和维护升级,从而适应未来高校管理的需求变化。

总之,基于SpringBoot+Vue的学生宿舍管理系统可以大大提高高校管理的效率和便利性,对于推进高校管理的现代化建设具有重要的现实意义。因此,本文将对该系统的设计与实现进行详细介绍和分析,以期为同类系统的设计和实现提供参考和借鉴。

二.技术环境

jdk版本:1.8 及以上
ide工具:Eclipse或者 IDEA
数据库: mysql5.7
编程语言: Java
java框架:SpringBoot
maven: 3.6.1
详细技术:HTML+CSS+JAVA+SpringBoot+MYSQL+VUE+MAVEN

image.png

三.需求分析

一、系统概述
本系统是一个基于SpringBoot和Vue的学生宿舍管理系统,旨在实现学生宿舍管理的自动化和信息化。系统的主要功能包括学生信息管理、宿舍信息管理、宿舍分配、宿舍调换、报修申请以及消息通知等。通过该系统,学生可以方便地查询宿舍信息、申请报修和调换宿舍等操作,管理员可以高效地进行学生信息和宿舍信息的管理,从而提高了管理效率和服务质量。

image.png 二、系统需求分析

  1. 学生信息管理:系统需要提供学生信息的录入、查询、修改和删除等功能。学生信息包括学号、姓名、性别、年龄、专业等基本信息,管理员可以对学生的信息进行添加、修改和删除等操作。同时,学生也可以登录系统查询自己的基本信息。
  2. 宿舍信息管理:系统需要提供宿舍信息的录入、查询、修改和删除等功能。宿舍信息包括宿舍号、宿舍类型、入住人数、所属学院等基本信息,管理员可以添加、修改和删除宿舍信息。同时,学生也可以登录系统查询宿舍的基本信息。
  3. 宿舍分配:系统需要根据学生信息和宿舍信息,自动或手动为学生分配宿舍。管理员可以根据学生的专业、年级等信息进行宿舍分配,也可以手动进行分配。学生可以查询自己的宿舍分配信息。
  4. 宿舍调换:学生可以在线申请调换宿舍,管理员可以审批并处理调换申请。学生可以提交调换申请,并注明调换原因等信息。管理员可以根据实际情况审批调换申请,并调整学生的宿舍信息。
  5. 报修申请:学生可以在线申请报修,管理员可以接收报修申请并处理报修事项。学生可以提交报修申请,并注明报修内容等信息。管理员可以根据实际情况处理报修申请,并更新报修状态和处理结果等信息。
  6. 消息通知:管理员可以发布通知和公告,学生可以接收并查看通知和公告。管理员可以发布学校通知、宿舍管理通知等重要信息,学生可以登录系统查看这些通知和公告。

四.数据设计

概念模型的设计是为了抽象真实世界的信息,并对信息世界进行建模。它是数据库设计的强大工具。数据库概念模型设计可以通过E-R图描述现实世界的概念模型。系统的E-R图显示了系统中实体之间的链接。而且Mysql数据库是自我保护能力比较强的数据库,下图主要是对数据库实体的E-R图。

image.png

五.系统设计

本系统采用基于SpringBoot+Vue的前后端分离架构,后端负责数据处理和API接口提供,前端负责页面展示和用户交互。具体架构如下:

  1. 后端SpringBoot实现 后端采用SpringBoot框架进行开发,利用SpringBoot的自动化配置和轻量级开发特性,快速搭建后端服务。具体实现上,使用mybatis框架进行数据持久化操作,使用SpringMVC框架实现RESTful API接口,使用MySQL数据库进行数据存储和处理。
  2. 前端Vue实现 前端采用Vue框架进行开发,利用Vue的单页应用特性和组件化开发模式,实现用户界面和交互逻辑。具体实现上,使用axios库进行HTTP请求和数据处理,使用ElementUI组件库实现界面布局和交互元素,使用VueRouter实现路由跳转和页面导航。
  3. 系统架构图

后端使用SpringBoot框架进行开发,提供RESTful API以支持前端Vue框架的请求和数据交互。前端使用Vue框架进行开发,实现用户界面和交互逻辑。前后端通过JSON数据进行通信,使用HTTP协议进行请求和响应。

image.png

六、系统测试与优化

  1. 系统测试
    系统测试是保证系统稳定性和可靠性的重要环节。本系统在测试阶段采用了黑盒测试、灰盒测试和白盒测试等多种测试方法,对系统的功能、性能和安全性进行了全面的检测和验证。
  2. 系统优化
    针对测试阶段发现的问题和不足,本系统进行了以下优化措施:
    (1)优化数据库查询语句,提高查询效率。
    (2)优化前后端接口设计,减少数据冗余传输。
    (3)优化前端页面渲染速度,提高页面响应速度。
    (4)增加异常处理机制,提高系统的容错性和稳定性。

七、部分代码

登录验证功能:

public BusInfo login(String username, String password) {
    BusInfo busInfo = busInfoDao.findByUsername(username);
    if (busInfo == null) {
        throw new CustomException(ResultCode.USER_ACCOUNT_ERROR);
    }
    if (!SecureUtil.md5(password).equalsIgnoreCase(busInfo.getPassword())) {
        throw new CustomException(ResultCode.USER_ACCOUNT_ERROR);
    }
    return busInfo;
}

注册功能:

public UserInfo add(UserInfo userInfo) {
    // 唯一校验
    int count = userInfoDao.checkRepeat("name", userInfo.getName(), null);
    if (count > 0) {
        throw new CustomException("1001", "用户名\"" + userInfo.getName() + "\"已存在");
    }
    if (StringUtils.isEmpty(userInfo.getPassword())) {
        // 默认密码123456
        userInfo.setPassword(SecureUtil.md5("123456"));
    } else {
        userInfo.setPassword(SecureUtil.md5(userInfo.getPassword()));
    }
    userInfoDao.insertSelective(userInfo);
    return userInfo;
}

获取图表展示数据:

@GetMapping("/getTotal")
Result getTotal() {
    Map<String, Object> map = new HashMap<>(4);
    // 获取用户总数
    map.put("totalUser", getUserCount() == null ? 0 : getUserCount());
    // 获取评论总数
    //map.put("totalComment", commentInfoDao.count() == null ? 0 : commentInfoDao.count());
    // 获取总销售额
    map.put("totalPrice", orderInfoDao.totalPrice() == null ? 0 : orderInfoDao.totalPrice());
    // 获取总销量
    map.put("totalShopping", orderGoodsRelDao.totalShopping() == null ? 0 : orderGoodsRelDao.totalShopping());
    return Result.success(map);
}