宿舍管理系统的设计与实现 (含源码+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系统管理员-宿舍楼管理

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

4.3系统管理员-学生管理

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

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

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

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();
	
	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		this.doPost(request, response);
	}

	@Override
	protected 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 、 获取方式

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

相关推荐
小黄人软件1 分钟前
20241220流水的日报 mysql的between可以用于字符串 sql 所有老日期的,保留最新日期
数据库·sql·mysql
青莳吖4 分钟前
Java通过Map实现与SQL中的group by相同的逻辑
java·开发语言·sql
张声录16 分钟前
【ETCD】【实操篇(三)】【ETCDCTL】如何向集群中写入数据
数据库·chrome·etcd
无为之士12 分钟前
Linux自动备份Mysql数据库
linux·数据库·mysql
小汤猿人类26 分钟前
open Feign 连接池(性能提升)
数据库
阳冬园1 小时前
mysql数据库 主从同步
数据库·主从同步
XiaoH2331 小时前
培训机构Day15
sql·mysql
Mr.132 小时前
数据库的三范式是什么?
数据库
Cachel wood2 小时前
python round四舍五入和decimal库精确四舍五入
java·linux·前端·数据库·vue.js·python·前端框架
Python之栈2 小时前
【无标题】
数据库·python·mysql