资源描述
课程设计IV
设计说明书
高校班级管理系统的数据库设计与数据操作
学生姓名
李 成
学 号
1118064050
班 级
网络1102班
成 绩
指导教师
肖海蓉
数学与计算机科学学院
2014年 6 月 27 日
课程设计任务书
2013 — 2014 学年第 二 学期
课程设计名称:
课程设计IV
课程设计题目:
高校班级管理系统的数据库设计与数据操作
完 成 期 限:
自 2014 年 6 月 17 日 至 2014 年 6 月 27 日 共 2 周
设计内容:
针对我校目前班级管理的现状,设计并实现高效班级管理系统,以提高班级管理的效率和质量。具体要求如下:
1.系统功能要求:
(1)学生基本信息管理功能:该模块负责管理学生的个人档案信息,教师可通过它来查阅和更新学生的个人信息。
(2)班务管理功能:该模块包括奖惩管理、学校和班级相关通知和公告的发布功能以及班委日常管理功能,其中奖惩管理包括奖学金、助学金的评定,违纪学生的处理等。
(3)班费管理功能:此模块用来管理班费收入支出情况,以及重大开支的申请和审批管理。
(4)考勤管理功能:该模块负责学生的考勤登记,请假管理(申请与审批),自动生成假条编号,生成假条,假条打印,以及记录学生请假信息。
(5)成绩管理功能:该模块可以直接与教务管理系统中的成绩管理模块相连接,具有成绩查询,学生成绩单打印等功能。
(6)用户权限管理:该模块负责用户的权限管理。根据高校的实际情况,系统设置五类用户,包括:管理员、班主任、辅导员(学办负责人)和学生。
2.具体要求如下:
(1)在小组内进行分工,进行系统调查,搜集资料。
(2)系统的需求分析:根据自己的选题,确定系统的功能需求,性能需求,绘制的DFD,DD图表以及书写相关的文字说明。
(3)概念结构设计:绘制所选课题详细的E-R图。
(4)逻辑结构设计:将E-R图转换数据库的逻辑结构,并进行优化。
(5)物理结构设计:选定实施环境,确定系统数据库的存储结构和存取方法等。
(6)数据实施和维护:用DBMS建立数据库结构,加载数据,实现各种查询,链接应用程序,设计库中触发器、存储过程等对象,并能对数据库做简单的维护操作。
教师评阅
评语:
指导教师签名: 教研室负责人签名:
年 月 日
摘 要
采用Mysql作为软件开发环境开发数据库,设计了一个班级管理系统,该系统具有学生基本信息管理功能、班务管理功能、班费管理功能、考勤管理功能、成绩管理功能、用户权限管理功能等。该系统旨在提高班级管理效率,减少老师与学生的工作量,实现班级管理信息化、智能化、科学化和正规化。
关键词:Mysql,班级管理
目 录
1 课题描述 1
2 需求分析 2
3 总体设计 2
4 数据库设计 5
3.1 概念结构设计 5
3.2 逻辑结构设计 8
3.3 物理结构设计 8
5 数据实施和维护 10
4.1 创建触发器 10
4.2 逻辑视图 10
4.3 创建存储过程 10
4.4 数据库备份 12
6 功能实现 13
7 总结 15
参考文献 16
1 课题描述
数据库的发展和流行使得数据的管理变得极为方便,更重要的是使数据存储的安全等问题得以进一步的解决。对数据库熟练地掌握和应用,旨在为生活创造出更高的效益,提高工作上的效率。
班级管理系统用计算机管理班级信息是一种计算机应用技术的创新,在计算机还未普及之前班级管理都是由教师和班干部来承担的方式来操作的,现在一般的学校都采用了信息化管理的方式,即采用计算机作为工具的实用的计算机班级管理程序来帮助班主任进行更有效地管理班级,包括后台数据库的建立和设计,并维护前端应用程序等等。
本次课程设计主要内容是:开发班级管理系统,该系统包括一系列的功能模块,建立模块之间的联系,模块的设计过程,对系统建模的分析,模型的优化等内容。
本次课程设计的目的是:建立班级管理信息系统,意在能通过采用计算机对班级事务级学生成绩等信息进行处理,从而达到进一步提高办学效益和班级学生管理现代化水平,帮助广大教师提高工作效率,实现班级管理工作的系统化,规范化和自动化。
2 需求分析
针对学校目前的班级管理状况,进行需求的调研和总结,将需求划分为不同的模块,模块之间相互渗透,相互合并,也会做更详细的划分。
1.模块分析:
①学生基本信息管理功能:该模块负责管理学生的个人档案信息,教师可通过它来查阅和更新学生的个人信息。这些信息包括学号,姓名,班级等诸系列关键属性,在数据库中作为一张单独的表。
②班务管理功能:该模块包括奖惩管理、学校和班级相关通知和公告的发布功能以及班委日常管理功能,其中奖惩管理包括奖学金、助学金的评定,违纪学生的处理等。这一模块主要为班主任所用,班委日常管理功能实现学生信息等的增、删、改、查,属于对学生信息表的操作。奖惩管理单独作为一张表,与学生表建立联系。通告管理又是一张表,用来更新和发布信息。
③班费管理功能:此模块用来管理班费收入支出情况,以及重大开支的申请和审批管理。这一模块的设计也尤为重要,在解决资金的存储登记问题的同时也要重要资金的安全风险问题,如何排除数据读写时出现的不同步等问题都将做出仔细处理。
④考勤管理功能:该模块负责学生的考勤登记,请假管理(申请与审批),自动生成假条编号,生成假条,假条打印,以及记录学生请假信息,更高效地管理学生的出勤和缺勤问题,而不再繁琐地进行徒手登记。
⑤成绩管理功能:该模块可以直接与教务管理系统中的成绩管理模块相连接,具有成绩查询,学生成绩单打印等功能。该模块只提供接口,不做具体实现。
⑥用户权限管理:该模块负责用户的权限管理。系统设置四类用户,包括:管理员、班主任、辅导员(学办负责人)和学生。权限分为前台和后台,前台的权限指登陆的不同用户,能够访问到哪些页面功能,而后台权限侧重指数据库的安全,通过添加角色等办法的约束,限制登陆用户能够对实体表进行哪些操作。
2.实体分析:
综合模块分析,得出如下实体集:用户(登陆用户),学生,班级,班费,奖惩记录,公告,考勤,
假条。
实体属性描述:用户(用户编号,用户名,密码,用户标识),学生(学号,姓名,年龄,性别),班级(班级编号,班级名称),班费(班费编号,余额,支出,收入,时间),奖惩记录(编号,奖学金,助学金,违纪处理),公告(编号,内容,公告类型,时间),考勤(编号,出勤次数,缺勤次数,出勤率),假条表(编号,请假内容,请假时间)。
实体映射关系:用户中,一个管理员管理所有班级,基于B/S开发,不需要将管理员和其他任何实体建立联系,管理员登陆时,只需返回所有的班级即可;一个辅导员对应一部分班级,一个班级归一个辅导员所管,一个班主任对应一个班级,一个班级对应一个班主任,用户中的学生即学生实体。一个班级对应多笔班费记录,一笔班费对应一个班级。公告根据其公告类型分为:一个公告对应全部班级,这时同样不需要建立和其他实体的联系;一个公告对应部分班级,部分班级对应同一个公告。一个班级包括多个学生,一个学生只属于一个班级;一个学生对应多个考情记录,对应对个奖惩记录,对应多个假条,一个考勤记录、一个奖惩记录、一个假条也只属于一个学生的记录。
输出
3.数据流图分析:
班级
①0层数据流图,如图2.1
反馈
查看,删除,修改
班级管理系统
用户
输出
反馈
学生
图2.1 0层数据流图
②1层数据流图,如图2.2
学生注册
所有班级,学生信息
数据操作
查询
管理员
班主任
辅导员
学生
班级,班费,考勤
成绩查询接口
班务信息,学生信息
班级信息,学生信息
图2.2 1层数据流图
4.数据字典(DD)分析:
如表2.1所示为用户的数据字典
编号:001 名称:用户 别名:
组成:1.编号 2.用户名 3.密码 4.用户标识
表2.1
如表2.2所示为班级的数据字典
编号:002 名称:班级 别名:
组成:1.编号 2.名称
表2.2
如表2.3所示为班费的数据字典
编号:003 名称: 班费 别名:
简述:
组成:1.编号 2.余额 3.支出 4.收入 5.时间
表2.3
如表2.4所示为学生的数据字典
编号:004 名称:学生 别名:
简述:学生的详细资料
组成:1.学号 2.姓名 3.性别 4.年龄
表2.4
如表2.5所示为奖惩记录的数据字典
编号:005 名称:奖惩记录 别名:
组成:1.编号 2.奖学金 3.助学金 4.违纪处理
表2.5
如表2.6所示为公告的数据字典
编号:006 名称:公告 别名:
组成:1.编号 2.内容 3.公告类型 4.时间
表2.6
如表2.7所示为考勤的数据字典
编号:007 名称:考勤 别名:
组成:1.编号 2.出勤次数 3.缺勤次数 4.出勤率
表2.7
如表2.8所示为假条的数据字典
编号:008 名称:假条 别名:
组成:1.编号 2.请假内容 3.请假时间
表2.8
3 总体设计
系统设计时基于MVC设计模型,采用三层架构。
通过功能分析,确定系统分为三大模块:登陆模块、用户模块和数据操作模块。三个模块之间的相互关系如图3.1
用户登陆
判断用户
学生
班主任
管理员
辅导员
查阅班级信息
查阅审批假条
查阅个人信息
注册班级
注册其他用户
查阅班级信息
审核奖惩
发布公告
奖惩信息
请假信息
考勤信息
数据操作模块
图3.1 班级管理系统流程图
4 数据库设计
4.1 概念结构设计
1.实体联系图
①用户实体属性图,如图4.1
用户
编号
用户名
密码
用户标识
图4.1 用户实体属性图
②学生实体属性图,如图4.2
学号
性别
学生
年龄
姓名
图4.2 学生实体属性图
③班级实体属性图,如图4.3
班级
名称
编号
图4.3 班级实体属性图
④班费实体属性图,如图4.4
时间
收入
余额
支出
班费
编号
图4.4 班费实体属性图
⑤奖惩记录实体属性图,如图4.5
学期
违纪处理
助学金
奖学金
奖惩记录
编号
图4.5 奖惩记录实体属性图
⑥考勤实体属性图,如图4.6
缺勤次数
出勤次数
考勤
出勤率
编号
图4.6 考勤实体属性图
⑦公告实体属性图,如图4.7
内容
公告类型
公告
时间
编号
图4.7 公告实体属性图
⑧假条实体属性图,如图4.8
请假内容
请假时间
假条
编号
图4.8 假条实体属性图
2.系统E-R图,如图4.9
m
1
1
m
1
m
时间
1
考勤记录
1
m
m
1
考勤
m
编号
请假
编号
时间
性别
缺勤
出勤
编号
出勤率
属于
1
编号
负责
收入
编号
密码
名称
用户名
编号号
用户标识
班主任
支出
班级
用户
负责
编号
时间
辅导员
时间
内容
m
筹集
班费
助学金
奖学金
编号
违纪处理
学生
假条
姓名
时间
性别
年龄
学号
学期
奖惩
奖惩记录
时间
图4.9 班级管理系统E-R图
4.2 逻辑结构设计
将班级管理系统数据库概念结构转换成关系模型,可得系统数据库逻辑结构。在转化的时候,需要注意数据是否存在冗余,排除冗余的办法可以参照如下三条:
①实体关系一对一:其中一个实体A的属性作为另外一个实体B的属性,删除实体A。
②实体关系一对多:少的一方的某些属性添加到多的一方的属性当中。
③实体关系多对多:引入第三个实体,该实体的属性由多方的某些属性共同组成。
班级管理系统数据库逻辑结构如下:
用户(编号,用户名,密码,用户标识)
班级(编号,班级名称,班主任,辅导员)
学生(学号,姓名,年龄,性别,班级)
班费(编号,班级,余额,支出,收入,时间)
考勤(编号,学号,出勤次数,缺勤次数,出勤率)
奖惩管理(编号,学号,奖学金,助学金,违纪处分)
公告(编号,班级,公告类型,公告内容,时间)
假条(编号,学号,请假内容,请假时间)
进一步优化,消除主属性的部分依赖,消除来自同一值域的属性等:
用户(编号,用户名,密码,用户标识)
班级(班级名称,班主任,辅导员)
学生(学号,姓名,年龄,性别,班级)
班费(班级,余额,支出,收入,时间)
考勤(学号,出勤次数,缺勤次数,出勤率)
奖惩管理(学号,奖学金,助学金,违纪处分,学期)
公告(编号,类型,公告内容,时间)
假条(编号,学号,请假内容,请假开始时间,请假结束时间)
注意:加下划线为主键,斜体为外键参考。
4.3 物理结构设计
1.数据库名称:
classmanage
2.关系表:
①user(用户表)
②classes(班级表)
③student(学生表)
④fee(班费表)
⑤attence(考勤表)
⑥rewards(奖惩记录表)
⑦message(公告表)
⑧note(假条表)
5 数据库实施和维护
5.1 创建触发器
(1)建立班级_删除触发器,在删除班级的时候可以删掉相关联表的信息
create trigger class_delete on classes
for delete
as
delete classess
from classes,deleted
where classes.cla_name =deleted.cla_name
(2)建立学生_删除触发器,在删除学生的时候可以删掉相关联表的信息
create trigger student_delete on student
for delete
as
delete student
from student,deleted
where student.sno =deleted.sno
5.2 创建视图
(1)建立学生基本信息视图
create view student_information_view
as
select sno,sname,age,gender,
cla_name from student,classes
where student.cla_name=classes.cla_name
5.3 创建存储过程
(1)建立学生基本信息录入的存储过程
create procedure student_information
@sno char(15),
@name char(15),
@sex char(2),
@age char(10),
@cla_name char(15),
as
insert into
student values(@sno,@name,@sex,
@age ,@cla_name)
(2)建立申请请假条的存储过程
create procedure application_note
@sno char(15),
@content mediumtext,
@starttime datetime,
@endtime datetime
as
insert into
note(sno, content, starttime, endtime)
values(@sno,@content ,@starttime ,@endtime )
(3)建立公告的存储过程
create procedure message
@type char(10),
@message text,
@time text
as
insert into
message(type,message,time)
Values(@type,@message,@time)
(4)建立考勤录入存储过程
create procedure attence_entering
@sno char(15),
@chuqin float,
@queqin float,
@rate float,
as
insert into
attence(sno,chuqin,queqin,rate)
values(@sno,@chuqin,@queqin,@rate)
5.4 数据库备份(MySql)
数据库备份如图 4.1
图5.1 数据库的备份
6 功能实现
(1) 用户登陆界面,如图6.1
主要实现代码:
<form action="<%=path %>/login.do" method="post">
<table border="1" align="center">
<tr>
<td colspan="2" align="center">用户登陆</td>
</tr>
<tr>
<td>选择身份</td>
<td>
<select name="identity">
<option value="admin">管理员</option>
<option value="teacher">班主任</option>
<option value="helper">辅导员</option>
<option value="student">学生</option>
</select>
</td>
</tr>
<tr>
<td>用户名</td><td><input type="text" name="username"/></td>
</tr>
<tr>
<td>密码</td><td><input type="password" name="password"/></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="提交"/>
<input type="reset" value="重置"/>
<a href="regist_admin.jsp">注册管理员</a>
</td>
</tr>
</table>
</form>
图6.1 用户登陆界面
(2) 学生注册界面,如图5.2
主要实现代码:
<table border="1" align="center">
<tr>
<td colspan="2" align="center">学生注册</td>
</tr>
<tr>
<td>身份</td>
<td>
<input type="text" name="identity" value="student" readonly="readonly"/>
</td>
</tr>
<tr>
<td>学号</td><td><input type="text" name="sno" size="8"/></td>
</tr>
<tr>
<td>姓名</td><td><input type="text" name="name" size="8"/>
<input type="hidden" name="password" size="10" value="123456"/>
</tr>
<tr>
<td>年龄</td><td><input type="text" name="age" size="8"/></td>
</tr>
<tr>
<td>性别</td>
<td>
<input type="radio" name="sex" value="男" checked="checked"/> 男
<input type="radio" name="sex" value="女"/> 女
</td>
</tr>
<tr>
<td>班级</td>
<td>
<select name="cla_name">
<option value="">请选择班级</option>
</select>
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="提交"/>
<input type="reset" value="重置"/>
</td>
</tr>
</table>
图6.2 学生注册界面
(3) 填写请假条界面,如图5.3
主要实现代码:
<table border="1" align="center">
<tr>
<td>您的学号</td>
<td>
<input type="text" name="sno" value="<%=sno %>" readonly="readonly"/>
</td>
</tr>
<tr>
<td colspan="2">请假内容<font color="red">(注意内容格式)</font></td>
</tr>
<tr>
<td colspan="2">
<textarea style="overflow:auto;"name="content" rows="5" cols="60"></textarea>
</td>
</tr>
<tr>
<td>请假开始时间<input type="text" name="starttime"/></td>
<td>请假结束时间<input type="text" name="endtime"/></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="提交"/>
<input type="reset" value="重置"/>
</td>
</tr>
</table>
图6.3 填写请假条界面
(4) 自动生成假条界面,如图6.4
主要实现代码:
<%
ArrayList lis = ReadObject.read_note();
for (int i = 0; i < lis.size(); i++) {
ArrayList list = (ArrayList) lis.get(i);
%>
<table align="center" width="400px">
<tr>
<td style="border: solid">
<div align="center">
<h4>
学生请假条
</h4>
</div>
<pre>
尊敬的班主任:
<%=list.get(1)%>
此致
敬礼
请假人:<%=list.get(0)%>
时间:<%=list.get(2)%>
</pre>
</td>
</tr>
</table>
<%
}
%>
图6.4 生成请假条界面
(5) 发布公告界面,如图6.5
图6.5 发布公告界面
6 总结
在这次数据库课设之后,静下心来认真总结,发现收获很多主要有三个方面:首先在这次课设中,我和小组其他成员经历了许多快乐与心酸,我和大家在一起讨论问题,有时候大家会愁眉不展,有时因为得到了队员提供的一个好建议或者一个好的想法而兴奋的去仿真调试,最主要的是我体会到了团队协作的快乐与好处,我和组员相互学习,共同进步。其次体会最深的就是自己实践的能力还有待提高,平时的学习只是理论的,教育式的,有一点与实际不符,在这次课设过程中,我从最基本入手,建模规划,调试,问题处理,我在实践中一点点的提高,整个过程结束,我对设计过程有了基本的认识,对自己的努力方向也有了更加深刻的认识。最后就是自己心态的一个转变,从前对于集体的工作总是拖拖拉拉,在原地踏步而不肯去采取行动,经过这次课程设计,虽然做的题目很简单,但我认识到积极行动与合作的重要性,没有什么天上掉馅饼的事,只要自己努力去做了,就会有相应的成效。
参考文献
[1] 苗雪兰,宋歌,刘瑞新,等.数据库系统原理及应用教程[M].机械工业出版社,2010
[2] 冯建华,周主柱,宋歌,等.数据库系统设计与原理[M].清华大学出版社,2006
19
展开阅读全文