基于Springboot和Layui实现的宿舍管理系统

到山东找蓝翔

发布日期: 2021-09-09 11:50:51 浏览量: 155
评分:
star_border star_border star_border star_border star_border star_border star_border star_border star_border star_border
*转载请注明来自write-bug.com

1.项目介绍

项目主要使用axios进行前后端数据的交互,之所以采用axios不使用ajax的原因是因为看中了axios的拦截器,可以更好的帮我们完成项目。

1.1 摘要

现如今高校大学生越来越多,寝室压力巨大,学生不好管理。学生宿舍管理系统对于一个学校来说是必不可少的组成部分。目前好多学校还停留在宿舍管理人员手工记录数据的最初阶段,手工记录对于规模小的学校来说还勉强可以接受,但对于学生信息量比较庞大,需要记录存档的数据比较多的高校来说,人工记录是相当麻烦的。而且当查找某条记录时,由于数据量庞大,还只能靠人工去一条条的查找,这样不但麻烦还浪费了许多时间,效率也比较低。本文构建了一个基于B/S模式的学生宿舍管理系统,为学生、学校和宿管阿姨搭建了一个灵活自由并且安全可靠的管理平台。本文着重论述了系统的模块设计、数据流程和功能实现。本系统一共设计3种用户的登录了其功能包括寝室宿舍管理员管理、学生管理、宿舍楼管理、缺勤记录、账户密码的修改等功能。包括如何运用JAVA、JavaScript、html等关键技术建立网上购物系统,并在web服务器上配置SSL以保证敏感信息的安全传输。

关键词:学生宿舍;数据库;学校管理;

当今社会是飞速进步的世界,原始的记录方式已经被社会所淘汰了,计算机化管理正是适应时代的产物。信息世界永远不会是一个平静的世界,当一种技术不能满足需求时,就会有新的技术诞生并取代旧技术。21世纪的今天,信息社会占着主流地位,计算机在各行各业中的运用已经得到普及,自动化、信息化的管理越来越广泛应用于各个领域。我们针对如此,设计了一套学生宿舍管理系统。学生宿舍管理系统采用的是计算机化管理,系统做的尽量人性化,使用者会感到操作非常方便,管理人员需要做的就是将数据输入到系统的数据库中去。由于数据库存储容量相当大,而且比较稳定,适合较长时间的保存,也不容易丢失。这无疑是为信息存储量比较大的学校提供了一个方便、快捷的操作方式。本系统具有运行速度快、安全性高、稳定性好的优点,并且具备完善的报表生成、修改功能,能够快速的查询学校所需的住宿信息。

1.2 需求分析

1.2.1 系统概述

软件旨在宿舍管理全部电脑化。它主要可以更快地了解到每个学生的住宿情况,使宿舍的管理效率更高,做的更好!宿舍管理系统是一个现代化软件,他通过集中式的信息数据库将各种档案管理功能结合起来,达到共享数据,降低成本,提高效率,改进服务等目的。

系统运行环境:

  • JDK1.8——JAVA的运行环境

  • Tomcat8.5——web服务器

  • Windows10/7——操作系统

  • MySQL Server 8.0——数据库

1.2.2 功能需求描述

在整体设计中,我们将宿舍管理系统分为四个页面:登录页面、系统管理员页面,宿舍管理员页面、学生页面下面将具体进行介绍每个页面的功能。

  • 登录页面:登录页面的功能包括:用户登录、选择用户类型、记住用户三个功能

  • 系统管理员页面:系统管理员页面功能包括:宿舍管理员管理、学生管理、宿舍楼管理、缺勤记录、账户密码的修改、退出系统六个功能

  • 宿舍管理员页面:宿舍管理员页面功能包括: 学生查看、缺勤记录、修改密码、退出系统四个功能

  • 学生页面:学生页面功能包括:缺勤记录、修改密码、退出系统三个功能

1.2.3 运行模块组合

具体软件的运行模块组合为程序多窗口的运行环境,各个模块在软件运行过程中能较好的交换信息,处理数据,例如:学生信息查询子模块。

学生信息查询子模块运行时,通过用户界面与sql2000学生信息数据库链接,搜索与用户输入的学生信息管理子模块。

信息更新(添加、删除、修改)子模块运行时,学生信息管理员通过管理界面接口与数据链接,进行对学生信息的更新,和相关数据的操作。

1.2.4 对功能的规定

  • 主界面登录:是本系统的主界面,在该界面中,用户可以选择所要进行的操作如:数据录入,数据查询,数据统计等操作

  • 系统后台:主要是数据库的逻辑关系的建立,和重要信息的存储管理,通过主界面对后台数据信息进行管理,比如:信息的录入、修改、删除等操作

1.2.5 数据需求分析

数据库需求分析调查的重点是“数据”和“处理”,通过调查、收集和分析,获得用户对数据库的需求。

  • 信息需求:指用户需要从数据库中获得信息的内容与性质,即在数据库中需要存储哪些数据

  • 处理要求:指用户需要完成什么处理能力。明确用户对数据有什么样的处理要求从而明确数据之间的关系

本课程的功能集中表现为数据的查询,更新和维护,因此需求集中表现为对“数据”的需求。根据登陆身份不同显示不同的功能项,以及所能进行的操作。

概念结构设计是将缝隙得到的用户需求抽象为概念模型的过程,他是整个数据库设计的关键。

1.2.6 性能需求分析

学生宿舍管理系统中管理权限上应当进行严格控制,具体思想如下:

  • 要想对该学生宿舍管理系统进行操作就应当具有某些操作权限。没有权限的用户将不能通过任何渠道来登录该系统,查看该系统的任何信息和数据,以确保系统的严密性和安全性

  • 在上述要求基础上可以为该系统设定多种登录方式,程序开始运行所有功能将是不可使用的,只有系统管理员登录和普通用户登录两个窗口可以使用,没有系统管理员或者普通用户的用户名和密码任何人都不能登录该系统

  • 在具体实现时还应为系统管理员和普通用户设定不同的权限,系统管理员应当可以使用系统的所有模块,普通用户对于用户管理模块是无权使用的

本系统可以实现许多性能特性,如:实用性、灵活性、可扩展性、易维护性、可靠性等等。 实用性是衡量一个应用系统好坏的重要指标。是否与业务紧密结合,是否具有严格的业务针对性,是系统成败的关键。本系统提供了灵活的查询模块可查询同学的联系方式、学生违纪、留言板等信息,灵活组合条件,进行组合查询,达到提高查询效率、界面直观的效果。随着系统应用的普及和推广,系统功能的扩展将是不可避免的,因此,提高系统的可扩展性、可维护性是提高整个系统性能的必然要求。 本系统采用模块化的设计思想,在结构上具有良好的可伸缩性,使用者可根据实际业务需要扩展模块。本系统采用多层架构设计,使系统结构更清楚,分工更明确,有利于后期的维护。

1.3 程序设计说明

在整体设计中,我们将宿舍管理系统在使用者登陆时分为系统设置、学生住宿管理信息、卫生评比等七个模块。接下来,在各自的模块中分别实现各自的功能。在每个模块下有分有不同的功能的子模块。每个模块将实现不同的功能。下面将具体进行介绍。

1.3.1 登录模块

  • 功能简介:在系统的登录界面实现系统管理人员或学生的一般用户使用正确的该系统的用户名和密码登录到不同模式中,以及用户在不能正常登陆时安全退出系统

  • 输入项:根据需求分析报告中所述,输入项为用户信息(学生信息或者理员信息)。 用户信息:用户ID,用户密码,用户类型(普通用户,管理员)

  • 输出项:根据概要设计报告中模块设计的思路,该登录模块输出项为:控制代码,是被调模块的名字

  • 算法:该登录模块中应用选择算法,根据用户的要求选择不同的模式

  • 接口:本模块为最初的主模块,没有上层模块,根据用户要求调用子模块;在模块的检查用户的合法性时需要调用系统的查询模块,传递参数是用户信息。该模块不直接操作数据库文件

  • 存储分配:根据学生宿舍管理系统需要分析说明以及概要设计的设计思路,系统的登录模块存储在所有数据的最前面,加快系统的进入速度

1.3.2 管理模块

  • 功能简介:该管理模块的功能可以概述为:承接的作用。调用管理员要求的操作模式,查询或者登记

  • 输入项:管理员根据系统界面的提示,选择操作类型,该类型对应的是模块的名字

  • 输出项:根据概要设计报告中模块设计的思路,该管理模块输出项为:控制代码,是被调模块的名字

  • 算法:该管理模块中应用选择算法,根据管理员的选择要求选择不同的操作模式

  • 接口:本模块为只调用下层信息查询模块或者登记模块,传的数据是全局唯一的模块的名字

  • 存储分配:该管理模块按照顺序模块放在登录模块之后即可实现系统的功能且不影响运行速度

1.3.3 管理员信息查询模块

  • 功能简介:该模块功能在管理员模式中实现,具体实现学生夜归信息,住宿信息,快件信息和已修信息的查询功能

  • 输入项:根据需求分析报告中所述,输入的查询条件可以分为按宿舍号,按物品号查询报修信息;按学号,宿舍号查询学生的夜归信息;按学号,姓名,专业查询学生的住宿情况;按学号,姓名,专业查询学生的快件信息

  • 输出项:该查询模块的输出数据为固定结构的数据项,将管理员填写的查询条件封装在固定的数据类型中传递给被调用的数据库查询模块。结构基本就是数据的存储结构,具体可见需求分析报告

  • 算法:该登录模块中采用的算法基本同等级模块相同,为满足管理员的要求可能将管理员的查询条件进行相应的数据格式装换,确保系统的稳定,安全,可靠

  • 接口:信息查询模块是中间模块隶属与上层模块,下层调用有关数据库查询操作的模块,调用时将封装好的数据结构传递给下层模块

  • 存储分配:同样考虑到系统管理员是该系统的常用的操作者,并且查询操作是管理员最常用的操作,为了便于管理员快速的进行管理操作,将该模块按照顺序存储在管理模块之后

1.3.4 管理员信息登记模块

  • 功能简介:该模块功能是管理员模式的重要功能,具体实现对学生夜归信息,住宿信息,快件信息和报修信息的登记(包括新增,删除,修改)功能,以便管理的顺利进行

  • 输入项:根据需求分析报告中所述,输入项为可以有4种

    • 住宿学生信息:学号,姓名,性别,院系,宿舍号,入住时间
    • 夜归信息:学号,宿舍号,晚归时间,晚归原因
    • 离校信息:学号,宿舍号,离校时间,返回时间
    • 已修信息:宿舍号,物品号,提交日期,报修原因
  • 输出项:该登记模块的输出数据为固定结构的数据项,将管理员填写的信息封装在固定的数据类型中传递给被调用模块。三种结构基本就是数据的存储结构,具体可见与需求分析报告

  • 算法:该登录模块中应用选择算法,可能应按用户的输入要求进行相应的数据格式装换,确保系统的稳定,安全

  • 接口:信息登记模块是中间模块隶属与上层的登录模块,下层调用有关数据库的对数据操作的模块,调用时将封装好的数据结构传递给下层模块

  • 存储分配:考虑到系统管理员是该系统的最常用的操作者,便于管理员快速的进行管理操作,将该模块按照顺序存储在查询模块之后

1.3.5 学生管理模块

  • 功能简介:学生管理模块用以实现学生的报修登记,快件收取,信息登记和信息查询的全部功能,并且实现对下层数据库操作模块的调用

  • 输入项:该模块的输入项包括财务的报修信息,快件收取信息,详细信息参照需求说明书

  • 输出项:该模块的输出数据同样为固定结构的数据项,将管理员填写的信息封装在固定的数据类型中传递给被调用的下层模块

  • 算法:模块的实现算法简单没有具体要求,可以是顺序,也可以是选择,保证没有逻辑错误,具体逻辑流程见下图

  • 接口:该学生管理模块是中间模块隶属与上层的登录模块,下层调用有关数据库的对数据修改和查询的模块,调用时将封装好的数据结构传递给下层模块

1.3.6 数据库查询模块

  • 功能简介:该数据库查询模块顾名思义就可知道是基于数据库操作的模块,用于实现上层模块调用进行数据库的查询操作

  • 输入项:该数据库查询模块是基于数据库操作的模块。输入数据为上层模块传递的固定结构的数据类型,包含住宿信息,报修信息,快件信息和夜归信息等

  • 输出项:输出项和输出项相同,为上层模块传递的固定结构的数据类型,包含住宿信息,报修信息,快件信息和夜归信息等

  • 算法:本模块算法简单,符合数据库要求的合理即可

  • 接口:该模块是基于数据库操作的模块,要和数据库进行通信,这里采用SQL语句

1.3.7 数据库修改模块

  • 功能简介:该数据库查询模块顾名思义就可知道是基于数据库操作的模块,用于实现上层模块调用进行数据库的修改操作

  • 输入项:该数据库修改模块是基于数据库操作的模块。输入数据为上层模块传递的固定结构的数据类型,包含住宿信息,报修信息,快件信息和夜归信息等

  • 输出项:输出项和输出项相同,为上层模块传递的固定结构的修改数据类型,包含住宿信息,报修信息,快件信息和夜归信息等

  • 接口:该模块是基于数据库操作的模块,要和数据库进行通信,这里采用SQL语句

1.4 出错处理设计

1.4.1 出错信息

在用户使用错误的数据或访问没有权限的数据后,系统给出提示:”对不起,你非法使用数据,没有权限!“而且用户的密码管理可以允许用户修改自己的密码,不允许用户的匿名登录。用户输入的信息是非中文字符,系统提示:您所输入的信息是非中文字符。 用户输入的信息是中文字符,但与本系统已收录的学生信息不匹配,系统提示:您所输入的信息不存在,请仔细核对您输入的信息是否在本系统收录的学生信息范围之内,重新输入,学生管理员输入的不符合数据的类型,系统提示:输入格式错误请重新输入。

1.4.2 补救措施

由于数据在数据库中已经有备份,故在系统出错后可以依靠数据库的恢复功能,并且依靠日志文件使系统再启动,就算系统崩溃用户数据也不会丢失或遭到破环,但有可能占用更多的数据存储空间,权衡措施由用户来决定。 系统软件出错很容易在出错日志里看到,我们对可能发生的错误会有一个错误编号以及相应的处理方式,以手册的方式提供。用户可以根据系统的提示信息进行相应的排错处理,建立系统运行日志,用于记录系统在运行过程中出现的可以预知的或无法判断的系统错误信息。硬件的出错处理信息需要检查网络环境。

2.数据库设计

2.1 表结构

浏览表

用户表

菜单表

学生表

选宿舍表

床位表

学院班级表

入住记录表

待办事项表

通知表

宿舍表

2.2 E-R图

3.项目开发

权限菜单

  1. @GetMapping("/query")
  2. public Result query(HttpServletRequest request){
  3. List<Menu> menus = new ArrayList<>();
  4. if(request.getAttribute("user") != null){
  5. User user = (User) request.getAttribute("user");
  6. menus = menuService.query(user.getId());
  7. }else if(request.getAttribute("student") != null){
  8. menus = menuService.queryByType();
  9. }
  10. List<Menu> menuList1 = new ArrayList<>();
  11. //找出一级菜单
  12. for (Menu menu : menus) {
  13. if(menu.getParentId() == 0){
  14. menuList1.add(menu);
  15. }
  16. }
  17. //嵌套循环找出关联设置child属性
  18. for (Menu parent : menuList1) {
  19. List<Menu> child = new ArrayList<>();
  20. for (Menu entity : menus) {
  21. if(parent.getId() == entity.getParentId()){
  22. child.add(entity);
  23. }
  24. }
  25. parent.setChild(child);
  26. }
  27. return Result.ok(menuList1);
  28. }
  29. @GetMapping("/tree")
  30. public Result tree(Integer checked,HttpServletRequest request){
  31. //check查询的时候是否选中状态
  32. List<Integer> checkedMenuId = new ArrayList<>();
  33. if(checked != null){
  34. User user = (User) request.getAttribute("user");
  35. //查询出来自己已经设置过得menuId
  36. checkedMenuId = menuService.queryCheckMenuId(checked);
  37. }
  38. List<Menu> list = menuService.list();
  39. List<Map<String,Object>> menus = new ArrayList<>();
  40. for (Menu menu : list) {
  41. if(menu.getParentId()==0){
  42. Map<String,Object> map = new HashMap<>();
  43. map.put("id",menu.getId());
  44. map.put("name",menu.getTitle());
  45. map.put("isParent",true);
  46. map.put("open",true);
  47. if(checked != null){
  48. map.put("checked",checkedMenuId.contains(menu.getId()));
  49. }
  50. List<Map<String,Object>> child = new ArrayList<>();
  51. for (Menu menu1 : list) {
  52. if(menu1.getParentId()!=0 && menu.getId() == menu1.getParentId()){
  53. Map<String,Object> map2 = new HashMap<>();
  54. map2.put("id",menu1.getId());
  55. map2.put("name",menu1.getTitle());
  56. map2.put("isParent",false);
  57. if(checked != null){
  58. map2.put("checked",checkedMenuId.contains(menu1.getId()));
  59. }
  60. child.add(map2);
  61. }
  62. }
  63. map.put("children",child);
  64. menus.add(map);
  65. }
  66. }
  67. return Result.ok(menus);
  68. }

登陆实现

  1. @PostMapping("/login")
  2. public Result login(@RequestBody User user){
  3. if(user.getType() == 2){ //学生登录的
  4. Student entity = studentService.login(user.getUserName(),user.getPassword());
  5. System.out.println(entity);
  6. if(entity != null){
  7. String token = JWTUtil.signForStudent(entity);
  8. Map map = new HashMap();
  9. map.put(JWTUtil.token,token);
  10. map.put("student",entity);
  11. return Result.ok("登陆成功",map);
  12. }else{
  13. return Result.fail("用户名或密码错误");
  14. }
  15. }else{//管理员与宿管员登录
  16. User entity = userService.login(user.getUserName(),user.getPassword());
  17. if(entity != null){
  18. String token = JWTUtil.sign(entity);
  19. Map map = new HashMap();
  20. map.put(JWTUtil.token,token);
  21. map.put("user",entity);
  22. return Result.ok("登陆成功",map);
  23. }else{
  24. return Result.fail("用户名或密码错误");
  25. }
  26. }

4.项目截图

登录

首页

宿舍管理

5.结论

本系统使用了html,Java为开发语言,以Microsoft SQL数据库产品作为后台数据库,构建了一个灵活安全的学生宿舍管理系统。从系统的初步设计到最后系统的实现是经历了整体设计,逐步实现的过程。本文作为对系统的论述,重点介绍了系统开发环境、开发工具、开发语言等关键技术,分析了系统的数据库设计、系统流程设计、功能模块的详细设计、实现代码的分析和运行结果。论述了系统从设计到实现的一个完整的过程。系统采用了流行的B/S模式,实现了学生宿舍管理的功能,整个系统简洁易懂,层次分明,安全适用。由于篇幅有限,未能将所有模块的实现一一列出,只挑选了重要的部分加以说明。

上传的附件 cloud_download git_me-master.zip ( 14.95mb, 0次下载 ) cloud_download 设计文档.docx ( 1.19mb, 0次下载 )
error_outline 下载需要12点积分

发送私信

会冒泡的可乐

111
文章数
12
评论数
最近文章
eject