目 录
一. 系统需求分析 1
- 系统描述 1
- 数据存储需求 1
- 系统常做的查询与更新 2
- 应用程序功能 2
二. 数据库概念设计 4 - 确定实体和属性 4
- E-R图 4
三. 数据库逻辑结构设计 5 - 关系模式设计 5
- 基本表设计 5
四. 数据库物理设计和实施 10 - 数据库的创建 10
- 创建基本表 10
- 触发器设计 13
- 视图设计 13
五. 应用程序设计 14 - 开发及运行环境介绍 14
- 主要功能设计 14
- 主要界面 20
六. 心得体会 38
2.数据存储需求
宿舍管理系统数据库需要存储如下信息:
系统管理员的用户名,密码,真实姓名,性别,电话;
宿管老师的的用户名,密码,真实姓名,性别,电话;
学生的学号,用户名,密码,真实姓名,院系信息,性别,电话;
宿舍楼的名称,类型;
寝室的名称,大小,现居人数;
学生缺寝的日期,原因,登记老师是谁;
学生的当前状态(入住还是迁出),以及相应的登记时间。
各种数据之间的关系:
寝室与学生是一对多的关系,一个寝室下可有多名学生;
宿舍楼与寝室是一对多的关系,一栋宿舍楼下可有多个寝室;
宿管老师与宿舍楼是多对多的关系,一个宿管老师可以负责多个宿舍楼,一个宿舍楼也可以由多个宿管老师负责;
宿管老师与学生是多对多的关系,一个宿管老师可以负责多个学生的缺寝情况,一个学生也可以由多个宿管老师负责登记缺寝信息;
系统管理员可以获取所有的数据信息,拥有最高的权限。
3.系统常做的查询与更新
经常做的查询,或许对创建索引有影响的:
根据学生的入住状态,姓名,学号,院系,查询学生相关信息
根据宿管老师的姓名,电话,查询宿管老师相关信息
根据宿舍楼的名称,查询宿舍楼相关信息
根据寝室所在楼宇,寝室号,寝室大小,现有人数,查询寝室相关信息
根据经常做的查询,需要创建有关视图的:
学生信息+寝室信息视图
宿舍楼信息+寝室信息视图
关于更新
当有学生入住某一寝室时,需要使相应的寝室现有人数加一
当有学生迁出某一寝室时,需要使相应的寝室现有人数减一
当有学生调换寝室时,本文转载自http://www.biyezuopin.vip/onews.asp?id=15226需要使原本的寝室现有人数减一,新的寝室现有人数加一
学生只能入住还有空余位置的寝室
关于删除
当删除某一寝室时,其中不能有学生入住
4.应用程序功能
前台的主要功能如下:
1)对于学生:
a.登录以及退出系统。
b.每个学生可以查看自己的缺寝记录。
2)对于宿管老师:
a.登录以及退出系统。
b.每个宿管老师可以查看自己负责的宿舍楼中学生的基本信息以及缺寝记录。
3)对于系统管理员:
a.登录以及退出系统。
b.查看宿管老师的基本信息。
c.查看学生的基本信息以及缺寝记录。
d.查看宿舍楼的基本信息。
e.查看寝室的基本信息。
后台的主要功能如下:
1)对于学生:
a.可以修改自己的密码。
2)对于宿管老师:
a.可以修改自己的密码。
b.可以对自己负责的宿舍楼中的学生添加缺寝记录。
3)对于系统管理员:
a.可以修改自己的密码。
b.可以添加,修改,删除宿管老师。
c.可以添加新入住的学生,修改学生的基本信息,删除指定的学生。
d.可以添加新的宿舍楼,修改宿舍楼的基本信息,查看每栋宿舍楼的负责老师,也可添加或移除每栋楼的负责老师。
e.可以添加新的寝室,修改寝室的基本信息,删除指定的寝室。
f.可以安排指定学生的寝室调换。
g.可以迁出已经毕业的学生。
h.可以查看所有指定学生的缺寝记录。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>宿舍管理系统</title>
<base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">
<script src="bootstrap/dist/js/bootstrap.min.js"></script>
<script src="bootstrap/dist/jquery/jquery-3.3.1.min.js"></script>
</head>
<body>
<%@ include file="Header.jsp"%>
<div class="container-fluid">
<div class="row">
<%@ include file="Left.jsp"%>
<div class="col-sm-9 col-md-10 main">
<h3 align="center">学生管理</h3>
<hr>
<form name="form1" method="post" action="StudentManager.action">
<table width="100%%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="28%" height="30" style="padding-left:20px;"> <a href="StudentRZ.action" class="btn btn-info" role="button">添加入住学生</a></td>
<td width="72%">
<select name="State" id="State">
<option value="">全部</option>
<option value="入住">入住</option>
<option value="迁出">迁出</option>
</select>
<select name="SearchRow" id="SearchRow">
<option value="Student_Name">姓名</option>
<option value="Student_Username">学号</option>
<option value="Student_Dept">院系</option>
</select>
<input name="SearchKey" type="text" id="SearchKey">
<input type="submit" name="button" id="button" value="查询" class="btn btn-success"></td>
</tr>
</table>
</form>
<table class="table table-bordered table-hover">
<tr align="center">
<td height="25" bgcolor="#D5E4F4"><strong>学号</strong></td>
<td bgcolor="#D5E4F4"><strong>姓名</strong></td>
<td bgcolor="#D5E4F4"><strong>性别</strong></td>
<td bgcolor="#D5E4F4"><strong>院系</strong></td>
<td bgcolor="#D5E4F4"><strong>寝室号</strong></td>
<td bgcolor="#D5E4F4"><strong>状态</strong></td>
<td bgcolor="#D5E4F4"><strong>登记时间</strong></td>
<td bgcolor="#D5E4F4"><strong>操作</strong></td>
</tr>
<s:iterator id="aa" value="list2">
<tr align="center">
<td height="25" align="center">${Student_ID}</td>
<td>${Student_Name}</td>
<td>${Student_Sex}</td>
<td>${Student_Dept}</td>
<td>${Dormitory_Name}</td>
<td align="center">${SD_State}</td>
<td>${SD_Date}</td>
<td align="center"><a href="StudentUpdate.action?Student_ID=${Student_ID}">修改</a> <a href="StudentDel.action?Student_ID=${Student_ID}&Dormitory_ID=${Dormitory_ID}&SD_State=${SD_State}" onClick="return confirm('确定要删除该学生吗?')">删除</a></td>
</tr>
</s:iterator>
</table>
<center>
<div>
共计<s:property value="totalPage"/>页
<s:if test="totalPage>=1">,当前为第<s:property value="currentPage"/>页</s:if>
<br><br>
<s:if test="currentPage>1">
<a href="StudentManager.action?currentPage=1">首页</a>
<a href="StudentManager.action?currentPage=<s:property value='currentPage-1'/>">上一页</a>
</s:if>
<s:if test="currentPage<totalPage">
<a href="StudentManager.action?currentPage=<s:property value='currentPage+1'/>">下一页</a>
<a href="StudentManager.action?currentPage=<s:property value='totalPage'/>">尾页</a>
</s:if>
</div>
</center>
</div>
</div>
</div>
</body>
</html>