宿舍管理系统是一种教育管理系统,本系统具有多种优点,其中通用性、智能化、简单操作性等可以极大地提升用户体验,本系统适合于高校以及教育行业公司等进行使用。宿舍管理系统采用Jsp技术作为前端页面技术,主要逻辑技术语言为Java,后台数据库为MySQL。本系统实现了学生宿舍的基本管理功能,比如管理员管理、学生管理、宿舍管理、楼宇管理、学生状态管理。以上功能都在本系统中有所体现,本系统对于大学生宿舍管理实现信息化有着重要作用。本系统的使用,能够达到掌握宿舍情况,提高管理效率的目的。
本系统数据存储工具选用的是数据库MySQL,选择MySQL的原因如下:
1.MySQL目前由Oracle甲骨文公司进行维护和开发,是一款开源免费数据库。MySQL相比Oracle更加灵活,更适合高校宿舍管理系统这种中小型项目的开发[8]。
2.MySQL数据库能够在多种操作系统上运行,他支持包括Windows、Linux、MacOS、FreeBSD等在内的众多操作系统。可以适应高校宿舍管理系统所运行的各种环境。
3.MySQL的核心功能是处理数据及提供空间供数据存储。MySQL强大的数据处理能力和对于多种系统的支持能够满足各种环境的需要,便于和其他校内管理平台进行交互。
4.MySQL的安全性较高。MySQL将数据存储是交给表/索引来完成的,自己不直接面向数据存储,所以存储数据的安全性较高,适合本系统中学校等重要部门处理和存储文件使用。
5.MySQL的数据模型为C/S模型,C/S模型即客户端-服务端模型。这一模型对于硬件的要求不高且具有较好的性能,适合于本系统中学校使用[9]。
本系统采用经典的Struts框架进行开发,有效的降低了开发难度和维护难度,下面,我对该框架的基本特点和优缺点做一下基本叙述:
首先,Struts是一个框架开源项目,是一款经典的MVC框架。它的理论技术基础是通过Java Servlet和Jsp技术,实现Java 基础上的MVC设计模式应用框架。它极大地降低了Java基础上实现MVC设计模式的难度[10]。简化了MVC设计模式中逻辑代码的编写。大大提高了Java项目的开发效率,这也是我选择它的原因。
应用Struts框架,可以使开发难度降低,并减少代码结构的耦合,使开发人员从复杂繁琐的配置中解脱出来,将注意力转移到自己的业务逻辑和需求实现上来[11]。通过Action和映射关系文件(XML)的联系,加强了业务逻辑的可读性,极大地提升了开发效率、降低了开发难度[12]。
本系统采用Eclipse作为开发工具,操作系统为Windows7,后台数据库为MySQL,采用B/S设计模式。


数据字典
数据字典的意义是对系统中的数据进行汇总,数据字典对于研究系统开发中的数据存储结构有着重要的意义[16]。在研究数据字典前,需要先画出数据流图。根据数据流图来对数据进行描述和分类,它的出现可以形象的表述出数据流图和系统存储数据的类型和数据[17]。
宿舍管理系统的主要功能的数据库表有5个,具体数据字典如下。
表 admin:
id:类型为 varchar(32),主键,不允许为空,默认为空字符串。create_time:类型为 timestamp,可以为空,默认为当前时间戳,可被更新。update_time:类型为 timestamp,可以为空,默认为空。valid:类型为 varchar(1),可以为空,默认为 NULL。version:类型为 int(10),可以为空,默认为 NULL。name:类型为 varchar(32),可以为空,默认为 NULL。password:类型为 varchar(32),可以为空,默认为 NULL。表 building:
id:类型为 varchar(255),主键,不允许为空,默认为空字符串。create_time:类型为 timestamp,可以为空,默认为当前时间戳,可被更新。update_time:类型为 timestamp,可以为空,默认为空。valid:类型为 varchar(255),可以为空,默认为 NULL。version:类型为 int(11),可以为空,默认为 NULL。dormitory_manager_id:类型为 varchar(255),可以为空,默认为 NULL。location:类型为 varchar(255),可以为空,默认为 NULL。name:类型为 varchar(255),可以为空,默认为 NULL。表 dormitory:
id:类型为 varchar(255),主键,不允许为空,默认为空字符串。create_time:类型为 timestamp,可以为空,默认为当前时间戳,可被更新。update_time:类型为 timestamp,可以为空,默认为空。valid:类型为 varchar(255),可以为空,默认为 NULL。version:类型为 int(11),可以为空,默认为 NULL。building_id:类型为 varchar(255),可以为空,默认为 NULL。floor:类型为 varchar(255),可以为空,默认为 NULL。lived_number:类型为 int(11),可以为空,默认为 NULL。max_number:类型为 int(11),可以为空,默认为 NULL。sn:类型为 varchar(255),可以为空,默认为 NULL。表 dormitory_manager:
id:类型为 varchar(255),主键,不允许为空,默认为空字符串。create_time:类型为 timestamp,可以为空,默认为当前时间戳,可被更新。update_time:类型为 timestamp,可以为空,默认为空。valid:类型为 varchar(255),可以为空,默认为 NULL。version:类型为 int(11),可以为空,默认为 NULL。name:类型为 varchar(255),可以为空,默认为 NULL。password:类型为 varchar(255),可以为空,默认为 NULL。sex:类型为 varchar(255),可以为空,默认为 NULL。sn:类型为 varchar(255),可以为空,默认为 NULL。表 live:
id:类型为 varchar(255),主键,不允许为空,默认为空字符串。create_time:类型为 timestamp,可以为空,默认为当前时间戳,可被更新。update_time:类型为 timestamp,可以为空,默认为空。valid:类型为 varchar(255),可以为空,默认为 NULL。version:类型为 int(11),可以为空,默认为 NULL。dormitory_id:类型为 varchar(255),可以为空,默认为 NULL。live_date:类型为 timestamp,可以为空,默认为 NULL。student_id:类型为 varchar(255),可以为空,默认为 NULL。表 student:
id:类型为 varchar(255),不允许为空,默认为空字符串。create_time:类型为 timestamp,可以为空,默认为当前时间戳,可被更新。update_time:类型为 timestamp,可以为空,默认为空。valid:类型为 varchar(255),可以为空,默认为 NULL。version:类型为 int(11),可以为空,默认为 NULL。name:类型为 varchar(255),可以为空,默认为 NULL。password:类型为 varchar(255),可以为空,默认为 NULL。sex:类型为 varchar(255),可以为空,默认为 NULL。sn:类型为 varchar(255),可以为空,默认为 NULL。每个表中的字段都有相应的数据类型和约束,这些信息描述了如何存储和处理每个表中的数据。如果你对特定表或字段有更具体的问题,请随时提问。











absentrecord.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
DOCTYPE html>
DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script src="https://cdn.bootcss.com/jquery/2.2.4/jquery.min.js">script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<link href="https://cdn.bootcss.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
<script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js">script>
<title>宿舍管理系统title>
head>
<body>
<div class="container-fluid">
<div class="row">
<div class="col-sm-10">
<div class="panel panel-default">
<div class="panel-heading">搜索div>
<div class="panel-body">
<form role="form" class="form-inline" action="/absent?method=search" method="post">
<div class="form-group">
<label for="name">字段:label>
<select name="key" class="form-control">
<option value="buildingName">楼宇option>
<option value="dormitoryName">宿舍option>
select>
div>
<div class="form-group" style="margin-left: 20px">
<label for="value">值:label>
<input type="text" class="form-control" name="value" placeholder="字段值" maxlength="12" style="width: 130px">
div>
<div class="form-group " style="margin-left: 20px">
<button type="submit" class="btn btn-info ">
<span style="margin-right: 5px"
class="glyphicon glyphicon-search" aria-hidden="true">
span>开始搜索
button>
div>
form>
div>
div>
<div class="table-responsive">
<table class="table table-hover ">
<thead>
<tr>
<th>IDth>
<th>楼宇th>
<th>宿舍th>
<th>姓名th>
<th>原因th>
<th>宿管th>
<th>日期th>
tr>
thead>
<tbody>
<c:forEach items="${list}" var="absent">
<tr>
<td>${absent.id}td>
<td>${absent.buildingName}td>
<td>${absent.dormitoryName}td>
<td>${absent.studentName}td>
<td>${absent.reason}td>
<td>${absent.dormitoryAdminName}td>
<td>${absent.createDate}td>
tr>
c:forEach>
tbody>
table>
div>
div>
div>
div>
body>
html>
absentregister.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script src="https://cdn.bootcss.com/jquery/2.2.4/jquery.min.js">script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<link href="https://cdn.bootcss.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
<script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js">script>
<link href="https://cdn.bootcss.com/bootstrap-datetimepicker/4.17.47/css/bootstrap-datetimepicker.min.css" rel="stylesheet">
<script src="https://cdn.bootcss.com/moment.js/2.24.0/moment-with-locales.js">script>
<script src="https://cdn.bootcss.com/bootstrap-datetimepicker/4.17.47/js/bootstrap-datetimepicker.min.js">script>
<title>宿舍管理系统title>
head>
<body>
<div class="container-fluid">
<form method="post" action="/absent?method=save" class="form-horizontal" style="margin-top: 0px" role="form"
id="form_data" style="margin: 20px;">
<div role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="myModalLabel">添加缺寝信息h4>
div>
<div class="modal-body">
<form class="form-horizontal" role="form">
<div class="form-group">
<label for="user_id" class="col-sm-3 control-label">楼宇label>
<div class="col-sm-9">
<select id="building" required class="form-control" name="buildingId">
<c:forEach items="${buildingList}" var="building">
<option value="${building.id}">${building.name}option>
c:forEach>
select>
div>
div>
<div class="form-group">
<label for="user_id" class="col-sm-3 control-label">宿舍label>
<div class="col-sm-9">
<select id="dormitory" required class="form-control" name="dormitoryId">
<c:forEach items="${dormitoryList}" var="dormitory">
<option value="${dormitory.id}">${dormitory.name}option>
c:forEach>
select>
div>
div>
<div class="form-group">
<label for="user_id" class="col-sm-3 control-label">学生label>
<div class="col-sm-9">
<select id="student" required class="form-control" name="studentId">
<c:forEach items="${studentList}" var="student">
<option value="${student.id}">${student.name}option>
c:forEach>
select>
div>
div>
<div class="form-group">
<label for="user_id" class="col-sm-3 control-label">原因label>
<div class="col-sm-9">
<input type="text" required class="form-control" name="reason" placeholder="请输入缺寝原因">
div>
div>
<div class="form-group">
<label for="user_id" class="col-sm-3 control-label">日期label>
<div class="col-sm-9">
<div class='input-group date' id='datetimepicker'>
<input type='text' name="date" required class="form-control"/>
<span class="input-group-addon">
<span class="glyphicon glyphicon-calendar">span>
span>
div>
div>
div>
form>
div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary">提交button>
div>
div>
div>
div>
form>
div>
<script>
$(function(){
$('#building').change(function(){
var id = $(this).val();
$.ajax({
url:"/dormitory?method=findByBuildingId&buildingId="+id,
type:"post",
dataType:"json",
success:function (data) {
var dormitoryList = $(data).get(0).dormitoryList
var studentList = $(data).get(0).studentList
var str = '';
for(var i = 0;i<dormitoryList.length;i++){
var dormitory = $(dormitoryList).get(i);
str += 'dormitory.id+'">'+dormitory.name+''
}
$('#dormitory').html(str);
str = '';
for(var i = 0;i<studentList.length;i++){
var student = $(studentList).get(i);
str += 'student.id+'">'+student.name+''
}
$('#student').html(str);
}
})
})
$('#dormitory').change(function(){
var id = $(this).val();
$.ajax({
url:"/student?method=findByDormitoryId&dormitoryId="+id,
type:"post",
dataType:"json",
success:function (data) {
var str = '';
for(var i = 0;i<data.length;i++){
var student = $(data).get(i);
str += 'student.id+'">'+student.name+''
}
$('#student').html(str);
}
})
})
$('#datetimepicker').datetimepicker({
format: 'YYYY-MM-DD',
locale: moment.locale('zh-cn'),
});
})
script>
body>
html>
adminmanager.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script src="https://cdn.bootcss.com/jquery/2.2.4/jquery.min.js">script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<link href="https://cdn.bootcss.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
<script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js">script>
<title>宿舍管理系统title>
head>
<body>
<div class="container-fluid">
<div class="row">
<div class="col-sm-10">
<div class="panel panel-default">
<div class="panel-heading">搜索div>
<div class="panel-body">
<form role="form" class="form-inline" action="/dormitoryAdmin?method=search" method="post">
<div class="form-group">
<label for="name">字段:label>
<select name="key" class="form-control">
<option value="username">宿管用户名option>
<option value="name">宿管姓名option>
<option value="telephone">宿管电话option>
select>
div>
<div class="form-group" style="margin-left: 20px">
<label for="value">值:label>
<input type="text" class="form-control" name="value" placeholder="字段值" maxlength="12" style="width: 130px">
div>
<div class="form-group " style="margin-left: 20px">
<button type="submit" class="btn btn-info ">
<span style="margin-right: 5px"
class="glyphicon glyphicon-search" aria-hidden="true">
span>开始搜索
button>
div>
<div class="form-group " style="margin-left: 48px">
<button type="button" class="btn btn-default" data-toggle="modal" data-target="#addUserModal">
<span style="margin-right: 5px" class="" aria-hidden="true">
<i class="fa fa-user-plus">添加宿管信息i>
span>
button>
div>
form>
div>
div>
<div class="table-responsive">
<table class="table table-hover ">
<thead>
<tr>
<th>IDth>
<th>用户名th>
<th>密码th>
<th>姓名th>
<th>性别th>
<th>联系电话th>
<th>操作th>
tr>
thead>
<tbody>
<c:forEach items="${list}" var="dormitoryAdmin">
<tr>
<td>${dormitoryAdmin.id}td>
<td>${dormitoryAdmin.username}td>
<td>${dormitoryAdmin.password}td>
<td>${dormitoryAdmin.name}td>
<td>${dormitoryAdmin.gender}td>
<td>${dormitoryAdmin.telephone}td>
<td>
<div class="btn-group">
<button type="button" class="btn btn-default "
data-id="${dormitoryAdmin.id}"
data-username="${dormitoryAdmin.username}"
data-password="${dormitoryAdmin.password}"
data-name="${dormitoryAdmin.name}"
data-gender="${dormitoryAdmin.gender}"
data-telephone="${dormitoryAdmin.telephone}"
data-toggle="modal"
data-target="#updateUserModal">
<i class="fa fa-user-o">修改i>
button>
<button type="button" class="btn btn-danger "
data-id="${dormitoryAdmin.id}" data-toggle="modal"
onclick="" data-target="#delUserModal">
<i class="fa fa-user-times">删除i>
button>
div>
td>
tr>
c:forEach>
tbody>
table>
<form method="post" action="/dormitoryAdmin?method=save" class="form-horizontal" style="margin-top: 0px" role="form"
id="form_data" style="margin: 20px;">
<div class="modal fade" id="addUserModal" tabindex="-1"
role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"
aria-hidden="true">xbutton>
<h4 class="modal-title" id="myModalLabel">添加宿管信息h4>
div>
<div class="modal-body">
<form class="form-horizontal" role="form">
<div class="form-group">
<label for="user_id" class="col-sm-3 control-label">用户名label>
<div class="col-sm-9">
<input type="text" required class="form-control" id="username"
name="username" placeholder="请输入用户名">
div>
div>
<div class="form-group">
<label for="user_id" class="col-sm-3 control-label">密码label>
<div class="col-sm-9">
<input type="text" required class="form-control" id="password"
name="password" value="" placeholder="请输入密码">
div>
div>
<div class="form-group">
<label for="user_id" class="col-sm-3 control-label">姓名label>
<div class="col-sm-9">
<input type="text" required class="form-control" id="name"
name="name" value="" placeholder="请输入姓名">
div>
div>
<div class="form-group">
<label for="user_id" class="col-sm-3 control-label">性别label>
<div class="col-sm-9">
<input type="radio" checked value="男" class="gender"
name="gender"> 男
<input type="radio" value="女" class="gender"
name="gender"> 女
div>
div>
<div class="form-group">
<label for="user_id" class="col-sm-3 control-label">联系电话label>
<div class="col-sm-9">
<input type="text" required class="form-control" id="telephone"
name="telephone" value="" placeholder="请输入联系电话">
div>
div>
form>
div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">取消button>
<button type="submit" class="btn btn-primary">提交button>
div>
div>
div>
div>
form>
<form method="post" action="/dormitoryAdmin?method=update" class="form-horizontal" style="margin-top: 0px" role="form"
id="form_data" style="margin: 20px;">
<div class="modal fade" id="updateUserModal" tabindex="-1"
role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"
aria-hidden="true">xbutton>
<h4 class="modal-title" id="myModalLabel">用户信息h4>
div>
<div class="modal-body">
<form class="form-horizontal" role="form">
<div class="form-group">
<label for="user_id" class="col-sm-3 control-label">IDlabel>
<div class="col-sm-9">
<input type="text" readonly required class="form-control" id="id"
name="id">
div>
div>
<div class="form-group">
<label for="user_id" class="col-sm-3 control-label">用户名label>
<div class="col-sm-9">
<input type="text" required class="form-control" id="username"
name="username" placeholder="请输入用户名">
div>
div>
<div class="form-group">
<label for="user_id" class="col-sm-3 control-label">密码label>
<div class="col-sm-9">
<input type="text" required class="form-control" id="password"
name="password" value="" placeholder="请输入密码">
div>
div>
<div class="form-group">
<label for="user_id" class="col-sm-3 control-label">姓名label>
<div class="col-sm-9">
<input type="text" required class="form-control" id="name"
name="name" value="" placeholder="请输入姓名">
div>
div>
<div class="form-group">
<label for="user_id" class="col-sm-3 control-label">性别label>
<div class="col-sm-9">
<input type="radio" checked value="男" class="gender"
name="gender"> 男
<input type="radio" value="女" class="gender"
name="gender"> 女
div>
div>
<div class="form-group">
<label for="user_id" class="col-sm-3 control-label">联系电话label>
<div class="col-sm-9">
<input type="text" required class="form-control" id="telephone"
name="telephone" value="" placeholder="">
div>
div>
form>
div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">取消button>
<button type="submit" class="btn btn-primary">提交button>
div>
div>
div>
div>
form>
<form method="post" action="/dormitoryAdmin?method=delete"
class="form-horizontal" style="margin-top: 0px" role="form"
id="form_data" style="margin: 20px;">
<div class="modal fade" id="delUserModal" tabindex="-1"
role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"
aria-hidden="true">×button>
<h4 class="modal-title" id="myModalLabel">用户信息h4>
div>
<div class="modal-body">
<form class="form-horizontal" role="form">
<div class="form-group">
<div class="col-sm-9">
<h3 class="col-sm-18 control-label" id="deleteLabel">删除信息h3>
<input type="hidden" class="form-control" id="tab"
name="tab" placeholder="" value="dor_admin"> <input
type="hidden" class="form-control" id="id"
name="id" placeholder="">
div>
div>
form>
div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">取消button>
<button type="submit" class="btn btn-danger">删除button>
<span id="tip"> span>
div>
div>
div>
div>
form>
div>
div>
div>
div>
<script>
$('#updateUserModal').on('show.bs.modal', function(event) {
var button = $(event.relatedTarget)
var id = button.data('id')
var username = button.data('username')
var password = button.data('password')
var name = button.data('name')
var gender = button.data('gender')
var telephone = button.data('telephone')
var modal = $(this)
modal.find('.modal-title').text('修改宿管信息')
modal.find('#id').val(id)
modal.find('#username').val(username)
modal.find('#password').val(password)
modal.find('#name').val(name)
var list = modal.find('.gender')
for(var i=0;i<list.length;i++){
if(gender == $(list.get(i)).val()){
$(list.get(i)).prop('checked',true)
}
}
modal.find('#telephone').val(telephone)
})
$('#delUserModal').on('show.bs.modal', function(event) {
var button = $(event.relatedTarget)
var id = button.data('id')
var modal = $(this)
modal.find('.modal-title').text('删除宿管信息')
modal.find('#deleteLabel').text('是否删除ID为 ' + id + ' 的信息')
modal.find('#id').val(id)
})
script>
body>
html>
q:969060742 完整文档、代码、sql