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

server/2024/9/25 0:28:41/

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

1 、功能描述

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

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

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

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

1.1 背景描述

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

2、项目技术

后端框架: servlet、mvc模式

前端框架:bootstrap、jsp

maven项目:否

2.1 MVC

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

sql_24">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.ppmy.cn/server/121573.html

相关文章

【C++】内存管理

目录 C/C内存分布C语言中动态内存管理方式C内存管理方式new/delete操作内置类型new/delete操作自定义类型 operator new与operator delete函数【⭐】透过源码分析两个全局函数 new和delete的实现原理内置类型自定义类型 定位new表达式池化技术原理分析【高并发内存池雏形】 C/C…

Scikit-learn 识别手写数字

Scikit-learn 识别手写数字的完整教程&#xff08;包含各模型预测结果和准确率&#xff09; 本教程将使用 Scikit-learn 提供的手写数字数据集&#xff0c;分别使用支持向量机 (SVM)、随机森林和逻辑回归三种模型进行训练&#xff0c;并展示它们的预测结果和准确率。 1. Scik…

Linux线程同步—竞态条件与互斥锁、读写锁(C语言)

线程同步—竞态条件和锁 1.竞态条件 线程同步是并发编程中的一个重要概念&#xff0c;它涉及到多个线程之间如何协调对共享资源的访问&#xff0c;以确保程序的正确性和效率。竞态条件和锁是线程同步中两个关键的概念&#xff0c;它们之间有着紧密的联系和区别。 1.1定义 当…

vue3开发中易遗漏的常见知识点

文章目录 组件样式的特性Scoped CSS之局部样式的泄露Scoped CSS之深度选择器CSS Modules在CSS中使用v-bind 非props属性继承组件通信父子组件的相互通信props/$emit父组件传递数据给子组件子组件传递数据给父组件 非父子组件的相互通信Provide/inject全局事件总线 组件插槽作用…

Linux环境下安装部署MySQL8.0以上(内置保姆级教程) C语言

一、环境搭建、 1 、安装MySQL服务端与客户端 sudo apt-get install mysql-server //mysql服务端安装 。 &#xff08;现在只安装这一个就够了&#xff0c;包含了客户端的&#xff09; sudo apt-get install mysql-client //mysql客户端安装。 mysql服务器端程序&…

Centos Stream 9+PHP8+TP8+Workerman4.1+Nginx代理SSL

由于项目需要,新到的服务器需要配置安装标题的环境,搞了两天踩了一个大坑,自己粗心了,没办法。记录一下,希望可以给您一些帮助。 一、环境需求: centos stream9、php8以上、nginx1.24、tp8、workerman4.1、由于是内网跑的,所以用上mkcert创建证书,用nginx代理websock…

去耦合的一些建议

尽量少用全局变量&#xff0c;以减少状态共享和潜在的副作用。 模块化设计&#xff1a;将代码分成小模块&#xff0c;每个模块独立实现特定功能&#xff0c;减少模块之间的相互依赖。 封装&#xff1a;将数据和操作封装在类中&#xff0c;控制对内部状态的访问&#xff0c;避…

Unity开发绘画板——02.创建项目

1.创建Unity工程 我们创建一个名为 DrawingBoard 的工程&#xff0c;然后先把必要的工程目录都创建一下&#xff1a; 主要包含了一下几个文件夹&#xff1a; Scripts &#xff1a;存放我们的代码文件 Scenes &#xff1a;工程默认会创建的&#xff0c;存放场景文件 Shaders &…