学生档案管理系统——数据库实验报告书
- 格式:doc
- 大小:55.50 KB
- 文档页数:18
课程设计报告
课程设计题目:学生档案管理系统
专 业:软件工程(电子商务,政务)
班 级:XXXXX
姓 名: XXXX
学 号: XXXX
指导教师: XXX
2011年12 月1 日
学生档案管理系统
实验时间:十四周
实验地点:软件楼304
实验目的:通过本次课程设计让学生能够综合运用所学的关系数据库原理知识解决并能设计一个实际问题,进一步掌握数据库原理的相关理论和数据库的设计实现过程,进一步提高学生的分析问题和解决问题的能力以及学生的动手能力。
实验要求:
描述:设计一个档案管理系统,实现下列功能:
1. 维护人员的档案信息(输入、修改和删除);
2. 根据给定条件查询人员档案信息;
3 档案报表输出;
实验思路:
需求分析:学生档案内容应涉及:1,学生基本信息;2,学生修
学分情况 3,所在辅导员,院系信息,5,学生在校期间的奖惩 情况。
因此根据上述分析,需要的基本表有(括号内为表名):
1 学生基本信息表(stu)
2 辅导员表(fd)
3 院系表(xb)
4 课程表 (kc)
5 奖惩表 (jc)
产生的关联表有:
1 学生院系情况表(stuxb)
2 学生奖惩表(stujc)
3 学分情况表(xf)
E-R图为:学生(stu)
学生奖惩情况(stujc奖惩(jc) 学生系别(stuxb)
院系(xb) 辅导员(fd) 学分(xf)
课程(kc)
学生(stu)
姓名(sname)
家庭住址(sadd) 年龄(age) 班级号(class性别(sex) 学号(s#)
政治面貌(sz)
学生奖惩情况(stujc学号(s#)
奖惩号(j#) 奖惩时间(jtime)
学分(xf)
课程号(c#) 学号(s#)
学分(stu)
学生系别(stuxb)
实验过程:
需求分析:
处理对象:系统要处理的对象包括学生基本信息,学生学分情况,学生奖惩情况三个方面,为了实现三个方面的功能与之间的联系,建立如下表:
1,学生基本信息表(stu):
S#(学号),sname(姓名),age(年龄),sex(性别),sz(政治面貌),sadd(家庭住址),class(班级号)
2,奖惩表(jc):
J#(奖惩号),jname(奖惩名)
3,学生奖惩情况表(stujc):
S#(学号),j#(奖惩号),jtime(奖惩时间)
4,辅导员表(fd):
f#(辅导员号),fname(姓名),class(班级号)
5,院系表(xb):
X#(系别号),xname(系别名)
6,学生系别表(stuxb): 学号(s#) 辅导员号(f#) 系别号(x#)
奖惩(jc)
奖惩号(j#) 奖惩名(jname) 课程(kc)
课程号(c#) 课程名(cname) 院系(xb)
系别号(x#) 系别名(xname) 辅导员(fd)
辅导员号(f#) 姓名(fname) 班级号(class) S#(学号),f#(辅导员号),x#(系别号)
7,学分表(xf):
S#(学号),c#(课程号),stu(学分)
8,课程表(kc):
C#(课程号),cname(课程名)
处理的功能:
1, 维护人员的档案信息(输入、修改和删除);
2, 根据给定条件查询人员档案信息;
实现机制:
表之间的联系(增删改)通过定义存储过程来实现,部分特殊功能使用触发器,因此定义如下:
add_stu ——增加学生
add_xf ——增加学生课程学分
add_stujc ——增加学生奖惩情况
de_stu ——删除学生(学号)
de_class ——删除班级
de_name ——删除姓名
up_stu ——修改学号
se_stu ——查找按学号
se_class ——查找按班级号
se_fd ——查找按辅导员姓名
se_xb ——按系别名
add_stujc ——增加奖惩
add_in_jc ——(触发器)处分累计,如果同一个处分超过两次,自动累加成上一级,比如两次警告变一次严重警告,两次留校察看,清除该学生档案
se_xf ——学分不足10个
安全性与完整性:
1, 安全性是通过视图机制,权限机制,定义了三个角色,管理员(主管),日常工作人员,学生;主管可以对所有表操作管理,工作人员不能对辅导员表,院系表,课程表,奖惩表增删改,学生只能查看视图。
2, 完整性通过规则与权限实现,通过对相应字段设置规则,使它受到约束,如年龄设置为15—65,性别设置为男—女;
实验过程:(代码部分)
create table stu —— 学生表
(s# numeric, 学号
sname varchar(15), 姓名
age int, 年龄
sex char(2), 性别
sz varchar(10), 政治面貌
sadd varchar(20), 住址
class char(10)) 班级号
create table fd ——辅导员
(f# int, 辅导员号
fname varchar(10), 姓名
class char(10) ) 班级号
create table xb ——院系
(x# int, 系别号
xname varchar(20)) 系别名 create table xf ——学分
(s# numeric, 学号
c# int, 课程号
stu int ) 学分
create table jc ——奖惩
(j# int, 奖惩号
jname varchar(20)) 名称
create table kc ——课程
(c# int, 课程号
cname varchar(20) ) 课程名
create table stujc ——学生奖惩
(s# numeric, 学号
j# int, 奖称号
jtime datetime ) 时间
create table stuxb ——学生院系
(s# numeric, 学号
f# int, 辅导员号
x# int ) 系别号
create proc add_stu ——增加学生
@s# numeric,
@sname varchar(15),
@age int,
@sex char(2),
@sz varchar(10), @sadd varchar(20),
@class char(10),
@x# int,
@f# int
as
insert into stu values(@s#,@sname,@age,@sex,@sz,@sadd,@class)
insert into stuxb values(@s#,@f#,@x#)
exec add_stu '1021112423','lj','18','nv','dangyuan','yichun','2','1','1'
create proc add_xf ——增加学生课程学分
@s# numeric,
@c# int,
@stu int
as
insert into xf values(@s#,@c#,@stu)
exec add_xf '1021112423','2','3'
create proc add_stujc ——增加学生奖惩情况
@s# numeric,
@j# int,
@jtime datetime
as
insert into stujc values(@s#,@j#,@jtime)
exec add_stujc '1021112423',3,2011
create proc de_stu ——删除学生(学号)
@s# numeric as
delete from stu where s#=@s#
delete from xf where s#=@s#
delete from stujc where s#=@s#
delete from stuxb where s#=@s#
exec de_stu '1021112425'
create proc de_class ——删除班级
@class int
as
delete from stu where class=@class
delete from fd where class=@class
exec de_class 1
create proc de_name ——删除姓名
@sname char(10)
as
declare @s# varchar(10)
select @s#=s# from stu where sname=@sname
delete from stu where sname=@sname
delete from xf where s#=@s#
delete from stuxb where s#=@s#
delete from stujc where s#=@s#
exec de_name 'w'
create proc up_stu ——修改学号
@olds# char(10),