宿舍管理系统的设计与实现 (含源码+sql+视频导入教程)

👉文末查看项目功能视频演示+获取源码+sql脚本+视频导入教程视频

1 、功能描述

  宿舍管理系统拥有三个角色,分别为系统管理员、宿舍管理员以及学生。其功能如下:

管理员:宿舍管理员管理、学生管理、宿舍楼管理、缺勤记录管理、个人密码修改等

宿舍管理员:查看学生及添加缺勤记录、缺勤记录查看和修改

学生:查看自己的缺勤记录、修改密码

1.1 背景描述

  宿舍管理系统是为学校或大学设计的一种软件系统,旨在简化和改进学生宿舍的管理和运作。该系统通常涵盖了多个方面,包括学生入住管理、房间分配、设施维护、安全管理、费用结算等功能。它可以帮助管理者更有效地监督宿舍资源的使用情况,确保学生的居住环境安全舒适。此外,它还可以提供学生自主选择室友和房间的功能,同时简化报修流程和费用支付方式,提高整体管理效率。随着技术的不断发展,许多宿舍管理系统还整合了智能设备和数据分析功能,以提供更智能化、便捷的服务。通过这些功能,宿舍管理系统可以帮助学校提升宿舍管理水平,增强学生的居住体验,并为管理者提供更全面的数据支持来做出决策。

2、项目技术

后端框架: servlet、mvc模式

前端框架:bootstrap、jsp

maven项目:否

2.1 MVC

  MVC(Model-View-Controller)框架是一种用于构建Web应用程序的软件架构模式。它将应用程序分为三个核心部分:模型(Model)、视图(View)和控制器(Controller)。模型负责处理数据逻辑,包括数据库交互、数据处理和业务规则。视图负责用户界面的呈现,将数据以易于理解的形式展示给用户。控制器充当中间人,接收用户输入并调用相应的模型和视图来完成用户请求。MVC框架使代码分离,提高了应用程序的可维护性和扩展性。开发人员可以独立地修改模型、视图或控制器,而不会影响其他部分。这种分离也有助于多人合作开发项目。MVC框架还促进了前后端的分离,使前端工程师和后端工程师能够更好地协同工作,从而提高了开发效率。

2.2 mysql

  MySQL是一款Relational Database Management System,直译过来的意思就是关系型数据库管理系统,MySQL有着它独特的特点,这些特点使他成为目前最流行的RDBMS之一,MySQL想比与其他数据库如ORACLE、DB2等,它属于一款体积小、速度快的数据库,重点是它符合本次毕业设计的真实租赁环境,拥有成本低,开发源码这些特点,这也是选择它的主要原因。

3、开发环境

mysql5-8、tomcat8-10、JDK1.8+

4、功能截图+视频演示+文档目录

4.1系统登录

登录

系统三种角色通过此界面登录宿舍管理系统,经过密码验证通过后,分别跳转至不同的页面

4.2系统管理员-宿舍楼管理

image-20220506174250073

系统管理员可以添加宿舍楼,并能够根据宿舍楼名称搜索相对应的信息,同时系统管理员还可以修改和删除宿舍楼,以及给不同的宿舍楼设置管理员等功能。

4.3系统管理员-学生管理

学生管理

系统管理员可以添加、修改、删除学生,同时可以按照宿舍楼、姓名、学号等条件搜索学生。系统管理员的其它功能与上述功能类似,且可以在视频中看到,这里不在赘述。

4.4宿舍管理员-缺勤记录管理

image-20220506174828040

宿舍管理员可以通过姓名学号等条件搜索学生,并给学生添加、修改和删除相应的缺勤记录

4.5学生界面

学生查看缺勤记录

学生查看自己的缺勤记录

5 、核心代码实现

5.1 配置代码

dbUrl=jdbc:mysql://localhost:3306/db_dorm?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true
dbUserName=root
dbPassword=root
jdbcName=com.mysql.cj.jdbc.Driver
pageSize=4

5.2 其它核心代码

package com.lero.web;import java.io.IOException;
import java.sql.Connection;import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import com.lero.dao.UserDao;
import com.lero.model.Admin;
import com.lero.model.DormManager;
import com.lero.model.Student;
import com.lero.util.DbUtil;public class LoginServlet extends HttpServlet {/*** */private static final long serialVersionUID = 1L;DbUtil dbUtil = new DbUtil();UserDao userDao = new UserDao();@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {this.doPost(request, response);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {request.setCharacterEncoding("utf-8");HttpSession session = request.getSession();String userName = request.getParameter("userName");String password = request.getParameter("password");String remember = request.getParameter("remember");String userType = request.getParameter("userType");Connection con = null;try {con=dbUtil.getCon();Admin currentAdmin = null;DormManager currentDormManager = null;Student currentStudent = null;if("admin".equals(userType)) {Admin admin = new Admin(userName, password);currentAdmin = userDao.Login(con, admin);if(currentAdmin == null) {request.setAttribute("admin", admin);request.setAttribute("error", "用户名或密码错误!");request.getRequestDispatcher("login.jsp").forward(request, response);} else {if("remember-me".equals(remember)) {rememberMe(userName, password, userType,response);} else {deleteCookie(userName, request, response);}session.setAttribute("currentUserType", "admin");session.setAttribute("currentUser", currentAdmin);request.setAttribute("mainPage", "admin/blank.jsp");request.getRequestDispatcher("mainAdmin.jsp").forward(request, response);}} else if("dormManager".equals(userType)) {DormManager dormManager = new DormManager(userName, password);currentDormManager = userDao.Login(con, dormManager);if(currentDormManager == null) {request.setAttribute("dormManager", dormManager);request.setAttribute("error", "用户名或密码错误!");request.getRequestDispatcher("login.jsp").forward(request, response);} else {if("remember-me".equals(remember)) {rememberMe(userName, password, userType,response);} else {deleteCookie(userName, request, response);}session.setAttribute("currentUserType", "dormManager");session.setAttribute("currentUser", currentDormManager);request.setAttribute("mainPage", "dormManager/blank.jsp");request.getRequestDispatcher("mainManager.jsp").forward(request, response);}} else if("student".equals(userType)) {Student student = new Student(userName, password);currentStudent = userDao.Login(con, student);if(currentStudent == null) {request.setAttribute("student", student);request.setAttribute("error", "用户名或密码错误!");request.getRequestDispatcher("login.jsp").forward(request, response);} else {if("remember-me".equals(remember)) {rememberMe(userName, password, userType,response);} else {deleteCookie(userName, request, response);}session.setAttribute("currentUserType", "student");session.setAttribute("currentUser", currentStudent);request.setAttribute("mainPage", "student/blank.jsp");request.getRequestDispatcher("mainStudent.jsp").forward(request, response);}} } catch(Exception e) {e.printStackTrace();} finally {try {dbUtil.closeCon(con);} catch (Exception e) {e.printStackTrace();}}}private void rememberMe(String userName, String password, String userType, HttpServletResponse response) {Cookie user = new Cookie("dormuser", userName+"-"+password+"-"+userType+"-"+"yes");user.setMaxAge(1*60*60*24*7);response.addCookie(user);}private void deleteCookie(String userName, HttpServletRequest request, HttpServletResponse response) {Cookie[] cookies=request.getCookies();for(int i=0;cookies!=null && i<cookies.length;i++){if(cookies[i].getName().equals("dormuser")){if(userName.equals(userName=cookies[i].getValue().split("-")[0])) {Cookie cookie = new Cookie(cookies[i].getName(), null);cookie.setMaxAge(0);response.addCookie(cookie);break;}}}}
}

6 、功能视频演示

学生宿舍管理系统

7 、 获取方式

👇 大家点赞、收藏、关注、评论啦 👇🏻获取联系方式,后台回复关键词:宿舍👇🏻

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

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

相关文章

【高录用 | EI快检索, IEEE出版】第二届人工智能与自动化控制国际学术会议(AIAC 2024)

会议官网&#xff1a;www.icaiac.org The 2nd International Conference on Artificial Intelligence and Automation Controlwww.icaiac.org 电气电子工程师学会&#xff08;IEEE&#xff09;的英文全称是the Institute of Electrical and Electronics Engineers。作为全球最…

hh exe所选的程序不能与此文件类型相关联。请选择其他程序。

按照hh exe打开chm文件显示所选的程序不能与此文件类型相关联。请选择其他程序。 以上错误来自于 cmd命令行 cd C:\Windows\hh.exe 要打开的chm文件报错 其实根本原因是在设置中.chm文件默认打开方法被其他软件占用了&#xff0c;解决办法只能删除那个软件&#xff0c;如果是W…

认知杂谈68《燃爆!兄弟萌不可错过的人生开挂宝典》

内容摘要​&#xff1a; 生活如舞台&#xff0c;我们要做自己人生的导演兼主演。实现自我成长需打牢基础&#xff0c;如读《认知觉醒》等书并制定成长计划。 要向上生长&#xff0c;定短期和长期目标&#xff0c;学新技能、提升沟通能力&#xff0c;可借助在线平台和社群。用番…

医院伤员食堂管理系统开通方法———未来之窗行业应用跨平台架构

一、 医院伤员食堂管理建设必要性 1. 提高服务质量 - 能够更精准地满足伤员的特殊饮食需求&#xff0c;如根据病情提供不同的营养搭配&#xff0c;有助于伤员的康复。 - 及时响应伤员的反馈&#xff0c;改进餐饮服务&#xff0c;提升伤员的满意度。 2. 优化资源配置 …

Java 枚举 新特性

Java 枚举&#xff08;enum&#xff09;自JDK 1.5引入以来&#xff0c;随着版本的升级不断增强。本文将回顾枚举的演进&#xff0c;尤其是结合switch语句的应用&#xff0c;展示枚举如何在现代Java中变得更加灵活。 1. JDK 1.5&#xff1a;Java 枚举的诞生 在JDK 1.5之前&…

‌PhotoZoom Pro 9‌和‌PhotoZoom Classic 9‌都提供了多项新功能

​PhotoZoom 9是一款划时代的、技术上产生革命性影响的数码图片放大工具。该软件使用了全新的S-Spline技术&#xff08;拥有自动调节、领先的差值算法等技术及亮点&#xff09;&#xff0c; 开创了图片放大技术的新领域&#xff0c;采用更为领先的优化算法&#xff0c;对不断放…

【C++11 —— 线程库】

C11 —— 线程库 thread类介绍线程函数参数原子性操作库(atomic)lock_guard与unique_lockmutex的种类lock_guardunique_lock 两个线程交替打印奇偶数 thread类介绍 在C11之前&#xff0c;涉及到多线程的问题&#xff0c;都是和平台相关的&#xff0c;比如windows和Linux下各有…

Android中的冷启动,热启动和温启动

在App启动方式中分为三种&#xff1a;冷启动&#xff08;cold start&#xff09;、热启动&#xff08;hot start&#xff09;、温启动&#xff08;warm start&#xff09; 冷启动&#xff1a; 系统不存在App进程&#xff08;App首次启动或者App被完全杀死&#xff09;时启动A…

Bluetooth Core6.0中关于Channel Sounding设置初始化过程详细介绍

目录 第一步&#xff1a;读取本地设备CS支持功能&#xff1a; Num_Config_Supported ​Max_Consecutive_Procedures_Supported ​Num_Antennas_Supported ​Max_Antenna_Paths_Supported ​Roles_Supported ​Modes_Supported ​RTT_Capability&#xff0c;RTT_AA_Only_…

【第12章】SpringBoot之SpringBootActuator服务监控(上)

文章目录 前言一、准备1. 地址和端口配置2. 引入依赖3. Actuator Properties 二、使用1. Beans (beans)2. Configuration Properties (configprops)3. Environment (env)4. Health (health)5. Heap Dump (heapdump)6. Mappings (mappings)7. Metrics (metrics)8. Thread Dump (…

浅谈vue2.0与vue3.0的区别(整理十六点)

目录 1. 实现数据响应式的原理不同 2. 生命周期不同 3. vue 2.0 采用了 option 选项式 API&#xff0c;vue 3.0 采用了 composition 组合式 API 4. 新特性编译宏 5. 父子组件间双向数据绑定 v-model 不同 6. v-for 和 v-if 优先级不同 7. 使用的 diff 算法不同 8. 兄弟组…

小米,B站网络安全岗位笔试题目+答案

《网安面试指南》http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247484339&idx1&sn356300f169de74e7a778b04bfbbbd0ab&chksmc0e47aeff793f3f9a5f7abcfa57695e8944e52bca2de2c7a3eb1aecb3c1e6b9cb6abe509d51f&scene21#wechat_redirect 《Java代码审…

面试官问:请描述一次你成功解决问题的经历?

面试官为什么要这么问&#xff1f; 面试官问你描述一次成功解决问题的经历&#xff0c;主要是为了评估你的几个关键方面&#xff1a; 问题解决能力&#xff1a;了解你在面对挑战时的思维方式和应对策略。 决策能力&#xff1a;考察你在压力下做出明智决定的能力。 沟通技巧&am…

集团人事管理信息化目标及重点工作内容【数字化规划】

人力资源管理能力模型通常被细分为六个主要支柱&#xff0c;这些支柱共同构成了人力资源管理的核心框架。每个支柱分别涵盖了不同的HR职责和技能&#xff0c;以下是这六支柱能力模型的详细介绍&#xff1a; 1. 人力资源规划与策略&#xff08;HR Planning and Strategy&#xf…

自修C++PrimerPlus--类型转换、右值引用、引用中的类对象

目录 1.类型转换介绍 2.关闭vs2022的报警系统 3.string里面的I/O 4.引用和左值引用 4.1左值和右值的说明 4.2具体的代码演示 4.3字符和字符串的const区分 4.4右值引用的示例介绍 5.将引用应用于类对象 6.函数和C风格字符串 6.1两者的区别 6.2演示案例 1.类型转换介…

学习图解算法 使用C语言

图解算法 使用C语言 也就是通过C语言实现各种算法 链接&#xff1a;百度云盘 提取码&#xff1a;1001

中国空间计算产业链发展分析

2024中国空间计算产业链拆解 空间计算设备主要包括AR、VR、MR等终端设备。VR设备通常包括头戴式显示器&#xff08;VR头盔&#xff09;、手柄或追踪器等组件&#xff0c;用以完全封闭用户视野&#xff0c;营造虚拟环境体验。这些设备配备高分辨率显示屏、内置传感器和跟踪器。 …

哪些行业需要办理网络文化经营许可证?

网络文化经营许可证&#xff0c;是指经文化行政部门和电信管理机构批准&#xff0c;颁发给从事经营性互联网文化活动的互联网信息服务提供者的市场合法准入资质。经营性互联网文化活动是指以营利为目的&#xff0c;通过向上网用户收费或者电子商务、广告、赞助等方式获取利益&a…

linux 内核代码学习(九)--Linux内核启动和文件系统

一个比较顺手的学习平台可以达到事半功倍的效果&#xff0c;这里使用的平台环境主要是利用了主机和从机间的文件共享&#xff0c;以及从机自带的编译环境可以比较顺利的编译busybox1.0版本&#xff0c;方便进行内核和文件系统的测试了学习。 主机环境&#xff1a;vmware7.0win1…

Java 入门指南:JVM(Java虚拟机)垃圾回收机制 —— 内存分配和回收规则

文章目录 垃圾回收机制堆空间的基本结构内存分配和回收规则对象优先在 Eden 区分配分配担保机制 大对象直接进入老年代长期存活的对象进入老年代主要进行 GC 的区域部分收集 (Partial GC)&#xff1a;Minor GCMajor/Old GCMixed GC 整堆收集&#xff08;Full GC&#xff09; 空…