基于Java学生宿舍管理设计实现(源码+lw+部署文档+讲解等)

news2024/11/17 15:41:05

博主介绍全网粉丝30W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战

🍅文末获取源码联系🍅

👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟

2022-2024年最全的计算机软件毕业设计选题大全:1000个热门选题推荐✅

Java项目精品实战案例《100套》

Java微信小程序项目实战《100套》

系统介绍:

现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本学生宿舍管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此学生宿舍管理系统利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了宿舍基础数据的管理,访客管理,卫生管理。学生宿舍管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。

在分析并得出使用者对程序的功能要求时,就可以进行程序设计了。如图4.2展示的就是管理员功能结构图,管理员主要负责填充宿舍和其类别信息,并对已填充的数据进行维护,包括修改与删除,访客管理,卫生管理,班级管理等。

图4.2 系统功能结构图

程序上交给用户进行使用时,需要提供程序的操作流程图,这样便于用户容易理解程序的具体工作步骤,现如今程序的操作流程都有一个大致的标准,即先通过登录页面提交登录数据,通过程序验证正确之后,用户才能在程序功能操作区页面操作对应的功能。

程序操作流程图

功能截图:

5.1.1 学生管理

如图5.1显示的就是学生管理页面,此页面提供给管理员的功能有:新增学生,删除学生,修改学生信息。

图5.1 学生管理页面

5.1.2 宿舍信息管理

如图5.2显示的就是宿舍信息管理页面,此页面提供给管理员的功能有:新增宿舍,修改宿舍,删除宿舍,添加宿舍人员,删除宿舍人员,宿舍资产信息新增,宿舍资产删除。

图5.2 宿舍管理页面

5.1.3 访客管理

如图5.3显示的就是访客管理页面,此页面提供给管理员的功能有:新增访客,删除访客。

图5.3 访客管理页面

5.1.4 班级管理

如图5.4显示的就是班级管理页面,此页面提供给管理员的功能有:新增班级,修改班级,删除班级。

图5.4 班级管理页面

代码实现:

/**
 * 登录相关
 */
@RequestMapping("users")
@RestController
public class UserController{
    
    @Autowired
    private UserService userService;
    
    @Autowired
    private TokenService tokenService;

    /**
     * 登录
     */
    @IgnoreAuth
    @PostMapping(value = "/login")
    public R login(String username, String password, String role, HttpServletRequest request) {
        UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
        if(user != null){
            if(!user.getRole().equals(role)){
                return R.error("权限不正常");
            }
            if(user==null || !user.getPassword().equals(password)) {
                return R.error("账号或密码不正确");
            }
            String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
            return R.ok().put("token", token);
        }else{
            return R.error("账号或密码或权限不对");
        }

    }
    
    /**
     * 注册
     */
    @IgnoreAuth
    @PostMapping(value = "/register")
    public R register(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
        if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
            return R.error("用户已存在");
        }
        userService.insert(user);
        return R.ok();
    }

    /**
     * 退出
     */
    @GetMapping(value = "logout")
    public R logout(HttpServletRequest request) {
        request.getSession().invalidate();
        return R.ok("退出成功");
    }
    
    /**
     * 密码重置
     */
    @IgnoreAuth
    @RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
        UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
        if(user==null) {
            return R.error("账号不存在");
        }
        user.setPassword("123456");
        userService.update(user,null);
        return R.ok("密码已重置为:123456");
    }
    
    /**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,UserEntity user){
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
        PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }

    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
        Integer id = (Integer)request.getSession().getAttribute("userId");
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }

    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
        if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
            return R.error("用户已存在");
        }
        userService.insert(user);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
        userService.updateById(user);//全部更新
        return R.ok();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Integer[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

论文参考:

目 录    III
1 绪论    1
1.1 研究背景    1
1.2 目的和意义    1
1.3 论文结构安排    2
2 相关技术    3
2.1 SSM框架介绍    3
2.2 B/S结构介绍    3
2.3 Mysql数据库介绍    4
3 系统分析    6
3.1 系统可行性分析    6
3.1.1 技术可行性分析    6
3.1.2 经济可行性分析    6
3.1.3 运行可行性分析    6
3.2 系统性能分析    7
3.2.1 易用性指标    7
3.2.2 可扩展性指标    7
3.2.3 健壮性指标    7
3.2.4 安全性指标    8
3.3 系统流程分析    8
3.3.1 操作流程分析    8
3.3.2 登录流程分析    9
3.3.3 信息添加流程分析    10
3.3.4 信息删除流程分析    11
4 系统设计    12
4.1 系统概要设计    12
4.2 系统功能结构设计    12
4.3 数据库设计    13
4.3.1 数据库E-R图设计    13
4.3.2 数据库表结构设计    14
5 系统实现    17
5.1 管理员功能介绍    17
5.1.1 学生管理    17
5.1.2 宿舍信息管理    17
5.1.3 访客管理    18
5.1.4 班级管理    18
6 系统测试    20
6.1 系统测试的特点     20
6.2 系统功能测试    21
6.2.1 登录功能测试    21
6.2.2 添加类别功能测试    21
6.3 测试结果分析    21
结  论    23
致  谢    24
参考文献    25

源码获取:

大家点赞、收藏、关注、评论啦 、查看👇🏻获取联系方式👇🏻

 精彩专栏推荐订阅下方专栏👇🏻

2022-2024年最全的计算机软件毕业设计选题大全:1000个热门选题推荐✅

Java项目精品实战案例《100套》

Java微信小程序项目实战《100套》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/700355.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

正负压自动控制技术在离体肺通气系统中的应用

摘要&#xff1a;模拟肺呼吸过程的离体肺通气控制新方法——真空压力&#xff08;正负压&#xff09;法&#xff0c;目前还停留在理论层面的文献报道&#xff0c;还未见到这种方法的仪器化内容和细节。本文基于这种新方法提出了仪器化实现的具体解决方案&#xff0c;解决方案的…

闲置iPad Pro打造真正的生产力工具!使用vscode编程写代码

文章目录 前言视频教程1. 本地环境配置2. 内网穿透2.1 安装cpolar内网穿透(支持一键自动安装脚本)2.2 创建HTTP隧道 3. 测试远程访问4. 配置固定二级子域名4.1 保留二级子域名4.2 配置二级子域名 5. 测试使用固定二级子域名远程访问6. iPad通过软件远程vscode6.1 创建TCP隧道 7…

Windows电脑玩游戏出现白屏的解决方法

逢年过节玩游戏&#xff0c;周末放假玩游戏&#xff0c;休闲娱乐玩游戏…玩游戏成了不少电脑用户的小乐趣。但是有时候在玩游戏的过程中&#xff0c;会遇到一些令人头疼的问题&#xff0c;比如游戏突然白屏&#xff0c;无法正常进行。这种情况可能会影响游戏体验&#xff0c;甚…

Recurdyn导入x_t格式装配体

装配层次结构&#xff1a;选上表示导入的装配体包括子装配体&#xff0c;再勾选body或者subsystem表示子装配体以零件或者子系统显示在recurdyn中&#xff1b;不选&#xff0c;表示导入的装配体全部以零件显示。

如何修改 Linux 的时区

文章结构 一、查看 Linux 当前时区二、获取时区 TZ 值&#xff08;可选做&#xff09;三、配置 TZ 值四、加载配置并检验是否生效 TZ 是 time zone 的缩写&#xff01; 一、查看 Linux 当前时区 你可以使用如下命令非常容易地就查看到 Linux 系统的当前时区&#xff1a; # 查…

AE插件:能量激光描边光效特效Saber Mac

Saber Mac插件主要用于AE软件中创造制作&#xff1a;能量光束&#xff0c;光剑&#xff0c;激光&#xff0c;传送门&#xff0c;霓虹灯&#xff0c;闪电&#xff0c;电流&#xff0c;朦胧等特效&#xff0c;插件操作直观简单&#xff0c;含有25种不同类型的特效预设&#xff08…

【sql注入-WAF绕过】编写sqlmap的tamper进行sql注入

目录 编写sqlmap的绕过脚本 二、理论知识2 sqlmap的tamper脚本 三、实战部分 一、理论知识1 编写sqlmap的绕过脚本 编写sqlmap的一个简单WAF绕过脚本 #!/usr/bin/env python""" Copyright (c) 2006-2023 sqlmap developers (https://sqlmap.org/) See th…

网络安全合规-银行业数据治理架构体系搭建(二)

本次《指引》使用了许多新兴词汇&#xff0c;这些词汇均是首次被监管部门正式引用&#xff0c;并出现在银行业金融机构的监督管理文件中。我们将通过这些词汇更好地理解《指引》。 首席数据官&#xff1a;“首席数据官”首次作为需要监管机构任职资格许可的管理岗位被提出。通过…

Cortex-M内核知识点总结

总览 Cortex内核 基础 寄存器组 程序在经过编译后&#xff0c;生成可执行二进制文件&#xff0c;如上图&#xff0c;是截取某个函数在flash中存储的内容 (反汇编文件)可以看到以下信息&#xff1a; 指令的存储地址 &#xff0c;指令的二进制内容 &#xff0c; 指令代表的汇编类…

MyBatis—环境配置

MyBatis &#x1f50e;MyBatis 的定义&#x1f50e;MyBatis 的环境配置添加依赖链接数据库配置 MyBatis 中的 XML 路径 一些人习惯将 MyBatis 称为 iBatis MyBatis → iBatis(Plus 版) &#x1f50e;MyBatis 的定义 MyBatis 是⼀款优秀的持久层框架, 它⽀持⾃定义 SQL、存储过…

基于 FFmpeg 的跨平台视频播放器简明教程(四):像素格式与格式转换

系列文章目录 基于 FFmpeg 的跨平台视频播放器简明教程&#xff08;一&#xff09;&#xff1a;FFMPEG Conan 环境集成基于 FFmpeg 的跨平台视频播放器简明教程&#xff08;二&#xff09;&#xff1a;基础知识和解封装&#xff08;demux&#xff09;基于 FFmpeg 的跨平台视频…

5G NR:RACH随机接入过程

1. 简述 无论是3G,4G还是现在的5G都需要随机接入过程&#xff0c;随机接入过程主要是为了让基站和UE之间做好上行同步以及初始接入。此文章仅仅帮助大家了解此过程&#xff0c;更加具体的用途及其场景需要参考具体的3GPP协议&#xff08;38.211,38.212,38.213).主要帮助理解如下…

Redis设计与实现笔记之链表

以下为Redis链表中一个节点的结构 typedef struct listNode {// 前置节点struct listNode *prev;// 后置节点struct listNode *next;// 节点的值void *value;} listNode; 可以看见此结构与我们常见的双向链表结构类似。由前去后继节点的地址以及当前节点的值组成。 redis中链…

使用percona xtraBackup8.x进行MySql8.0备份与还原(完全备份,增量备份,差异备份)

MySQL备份与还原 备份目标&#xff1a;数据的一致性&#xff0c;服务的可用性备份技术&#xff1a;物理备份(冷备份)【直接复制数据库文件&#xff0c;适用大型数据库&#xff0c;缺点是操作时服务需要停止】和 逻辑备份(热备份)【备份的是建表建库插入的SQL语句】备份方式&am…

CSDN周赛60期简要题解

一转眼&#xff0c;周赛都举办了60期了&#xff1f;还以为可以“寿终正寝”了&#xff0c;结果61期又安排上了。打开一看&#xff0c;还是《计算之魂》主题的周赛&#xff0c;还是这种 4 &#xff08;非编程&#xff09; 2 &#xff08;编程&#xff09; 的题型。可能目前就指…

HttpRunner 使用小结

目录 https 请求证书验证 2.0.3 (2019-02-24) 代理调试 $ 符引用 json 响应中数组的提取和断言 text/html 响应的提取和断言 testcase 之间传递参数 2.2.2 (2019-06-26) 复用 cookies 和 token 1. 每个 testcase 登录一次 2. 将 cookies 或 token 写入文件&#xff…

如何设计一个高并发系统?

其实所谓的高并发&#xff0c;如果你要理解这个问题呢&#xff0c;其实就得从高并发的根源出发&#xff0c;为啥会有高并 发&#xff1f;为啥高并发就很牛逼&#xff1f; 浅显一点&#xff0c;很简单&#xff0c;就是因为刚开始系统都是连接数据库的&#xff0c;但是要知道数据…

关于英语翻译中的归化与异化,你可以了解一下

据了解&#xff0c;归化和异化是翻译中使用的两种不同手段&#xff0c;它们都能在目的语文化中完成各自的使命&#xff0c;都有其存在的价值。那么&#xff0c;究竟什么是归化&#xff0c;什么是异化&#xff1f;英语翻译中的归化与异化有什么特征&#xff1f; 归化是让作者靠近…

Rust 基础入门 —— 字符、布尔、单元 类型

字符、布尔、单元 类型 字符类型&#xff08;char&#xff09; 对于字符类型我们有更大的自由性&#xff0c;概括一下&#xff1a; 更大的编码范围&#xff0c;让rust 可以展示更多的内容。统一的字节空间&#xff0c;字符也是四个字节的内存大小。严格区分的 "" …

reduceByKey 和 groupByKey 的分析与区别

reduceByKey 源码 def reduceByKey(partitioner: Partitioner, func: (V, V) > V): RDD[(K, V)] self.withScope {combineByKeyWithClassTag[V]((v: V) > v, func, func, partitioner)}/*** Merge the values for each key using an associative and commutative reduce…