数据库原理实训——学生管理系统班级:成员:指导老师:开发时间:一.需求分析1、编写目的为了明确软件需求、安排项目规划与进度、组织软件开发与测试,撰写本文档。
本文档供项目经理、设计人员、开发人员参考。
2、项目背景使用计算机对学生信息进行管理,拥有手工管理所无法比拟的优点。
例如:检索迅速、查找方便、可靠性高、存储量大、成本低等。
这些优点能够极提高学生信息的效率,也是管理科学化、正规化的重要支撑。
学生信息管理系统能够方便地查询和变更学生的基本数据(包括学籍数据和成绩数据),节省大量工作时间,有效地提高学生信息管理的效率。
而查询信息的直观显示将有助于系统的用户一目了然地掌握学生的情况。
3、开发计划分阶段完成任务:第一阶段实现快速界面原型,并进行相应的补充修改以满足客户的需求;第二阶段完成界面的进一步设计求精,形成最终的设计样式;第三阶段:完成数据库的开发;第四阶段:整合管理系统并进行各项测试改正出现的各种问题。
4、实现的容学生信息管理系统属于应用系统。
学生信息管理系统的使用者是教务处管理员和学生。
它的功能就是教师通过输入用户名和口令登陆到教学管理数据库中,从而实现对各门选课人数限制,对学生信息的维护限制。
每个新学年的开始,都有新生的进入,和毕业生离校,每个学期学生的课程会发生改变以及有些学生因为不同的原因离校或者有新来的转校生。
系统要对这些情况做相应的改变。
离校的将学生信息删除,新来的要将学生信息存入系统,课程改变了,要将其修改。
教务处访问该系统将学生信息填入、删除或修改,学生可以在系统上查询本人信息。
该系统是一个集成多功能的信息管理系统,有教师资料管理、学生管理、班级管理、院系管理、课程管理和成绩管理功能模块。
本系统将大大提高学生信息的管理效率,带来数据共享、网络查询和网络管理等便利,实现学生信息管理的数字化和智能化。
教师管理模块:本模块主要对教师的资料信息进行查询,删除,修改和添加。
学生管理模块:本模块主要对学生资料信息进行相应的查询,删除,修改和添加。
添加了学生所在院系资料与学生所在专业资料,同时可对院系资料与专业资料进行相应的添加,修改,查询。
课程管理模块:本模块主要对课程资料进行管理,对其进行查询,添加,修改和删除。
又详细划分了课程类别资料,对其进行如上操作。
成绩管理模块:本模块对学生成绩进行查询操作,如发现成绩有输入错误,可对其进行相应的修改,还可对学生的成绩进行录入班级管理模块:本模块班级资料信息进行管理,对其进行相应的查询,修改,删除和添加。
根据实际问题,本系统要实现以下功能:(1)用户认证。
本系统用户有教务处管理员和学生,所以用户必须通过认证才能登入系统。
系统能够自动识别用户类型,能够给不同的用户分配不同的权限。
教务处管理员用户成功登入后可以进入操作界面,学生成功登入后即可进入学生本人信息界面。
(2)数据维护。
可以对学生的成绩和课程等数据进行维护。
(3)信息管理。
允许教务处管理员修改学生信息,允许学生在任何时候登入查询本人信息。
如图所示:二. 概念结构设计概念结构所涉及的数据是独立于硬件和软件系统的,它的目标是以用户可以理解的形式来表达信息的流程,从而可以和不熟悉计算机的用户交换意见。
它要充分地反映实体之间的关系,成为反映现实的概念数据模型。
这是各种基本数据模型的共同基础,易于向关系模型转变。
通过需求分析得到的数据项和数据结构,可以设计出各种实体以及它们之间的关系图,为后面的逻辑结构设计打下基础。
这些实体包含各种具体信息,通过相互之间的作用形成数据的流动。
根据上面的设计规划处的实体有:学院实体,专业实体,年级实体,班级实体,学生实体、课程实体,教师实体。
(1)一个学院有多个专业,一个专业只能属于一个学院,因此学院与专业之间具有一对多关系。
(2)一个专业有多个年级,一个年级有多个专业,因此学院与专业之间具有多对多关系。
(3)一个专业有多个班级,一个班级只能属于一个专业,因此专业与班级之间具有一对多关系。
(4)一个班级有多个学生,一个学生只能属于一个班级,因此班级与学生之间具有一对多关系。
(5)一个学生可以选修多门课程,一门课程可以被多个学生选修,因此学生与课程之间是多对多的联系。
用成绩来表示学生和课程之间联系的属性。
(6)一个学院有多个教师,一个教师只能属于一个学院,因此学院与教师具有一对多的联系。
(7)一个教师可以任教多门课程,一门课程可以被多个教师任教,因此课程与教师具有多对多的联系。
学生信息系统E—R图如图所示:三、逻辑结构设计此阶段的任务是把概念结构转换成SQL Server 2005数据库管理系统能处理的数据模型。
在进行这种转换时,是把实体类型和联系类型分别转换成一个个关系模式,这中间存在着多种可能组合,必须从中选择一个性能好的关系模式集作为关系数据库的模式。
学生管理系统的关系模式集如下:(1)学生信息表(学生学号,学生,性别,年龄,学院名称,专业名称,年级,班级名称,),主键为学生学号。
(2)课程数据表(课程号,课程名称,学院名称,学分),主键为课程号。
(3)学生选课表(学号,课程号,老师工号,成绩),主键为学号,课程号。
(4)教师数据表(老师工号,老师,性别,年龄,学院名称,教研室名称,),主键为老师工号。
(5)学院数据表(学院名称,学员编号),主键为学院名称。
(6)专业数据表(专业名称,专业编号,学院名称),主键为专业名称。
(7)年级—班级数据表(年级,学院名称,专业名称,班级名称),主键为年级,班级名称。
(8)教师教研室表(教研室名称,教研室编号,学院名称),主键为教研室名称。
(9)教师任课数据表(课程号,课程名称,教师工号),主键为课程号,教师工号。
四、物理结构设计物理结构设计是指对给定的基本数据模型选择一个最适合应用环境的物理结构的过程。
数据库的物理结构主要是指数据库的存储记录格式、存储记录安排和存取方法。
确定数据库的存储结构,主要是指确定数据的存放位置和存储结构,包括确定关系、索引、系统存储参数的配置,确定数据库的存储方法。
1.数据结构:设置每一数据表的属性的属性名,类型和宽度每数据表的属性的属性名,类型和宽度如表所示。
学生信息表student课程数据表course学生选课表selectcourse教师数据表teachers学院数据表college专业数据表major班级数据表class年级数据表grade教师教研室表depart教师任课数据表teachercourse2.设置参照属性(1)学生信息表(学生学号,学生,性别,年龄,学院名称,专业名称,年级,班级名称,)中的学院名称,专业名称,年级,班级名称分别参照学院数据表中学院名称,专业数据表中的专业名称,年级—班级数据表中的年级,班级名称。
(2)课程数据表(课程号,课程名称,学院名称,学分)中的学院名称参照学院数据表中学院名称。
(3)学生选课表(学号,课程号,老师工号,成绩)中的学号,课程号,老师工号分别参照学生信息表中的学号,课程数据表中的课程号,教师数据表中的老师工号。
(4)教师数据表(老师工号,老师,性别,年龄,学院名称,教研室名称,)中的学院名称,教研室名称分别参照学院数据表中的学院名称,教师教研室表中的教研室名称。
(5)专业数据表(专业名称,专业编号,学院名称)中的学院名称参照学院数据表中学院名称。
(6)年级—班级数据表(年级,学院名称,专业名称,班级名称)中的学院名称,专业名称分别参照学院数据表中的学院名称,专业数据表中的专业名称。
(7)教师教研室表(教研室名称,教研室编号,学院名称)中的学院名称参照学院数据表中学院名称。
(8)教师任课数据表(课程号,课程名称,教师工号)中的课程号,工号分别参照课程数据表中的课程号,教师数据表中的教师工号。
3.索引在成绩上创建索引score_index在学生年龄上创建索引student_sage_index在老师成绩上创建索引teachers_sage_index4.设置视图为学生信息创建视图student_view创建各院系学生的视图college_major_s创建各班级视图class_s为各学院课程创建视图college_course为各班的学生选课成绩创建视图selectcourse_s为各班学生的学号及平均成绩创建视图avg_s为老师信息创建视图teachers_view为教研室创建视图depart_view为老师任课创建视图teachercourse_view为各学院所拥有的专业创建视图c_major_view5.设置存储过程a.创建一个存储过程,输入学号可以查询该学生的各科成绩b.创建一个存储过程,输入课程名显示该门课程的平均成绩和选课人次c.创建一个存储过程,输入学院名称显示该学院的代号,学院名称以及包含的各个专业的代号和名称,并统计该学院包含专业的数目d.创建一个存储过程,输入学院名称,专业名称,年级,班级显示该班级所有学生的信息,并统计该班的人数e.创建一个存储过程,输入老师,显示该老师所教的所有课程编号,课程名称,并显示这位老师的ID号,所属院系,教研室名称6.设置触发器(1)要求学生选课课程表中的课程号被删除时,学生选课成绩表中的对应的课程号的信息也被删除。
(2)要求学生信息表中的学好被修改时,学生选课成绩表、学生公共课成绩表中的学号自动修改。
(3)触发器ttrigger:要求教师信息表中老师的职工号修改,则教师选课信息的职工号也会被修改(4)触发器 ttrigger:要求若输入的学号或者课程号与数据库中数据不符则不插入选课成绩表中(5)触发器insert_student:如果学生表中有新的学生插入,则触发该触发器,使得该学生信息插入(6)触发器insert_classes:如果有新的班级被添加,则触发该触发器使得该班级信息添加进来(7)触发器insert_college:如果有新的学院被添加,则触发该触发器使得该学院信息添加进来(8)触发器insert_course:如果有新的课程被添加,则触发该触发器使得该课程相关信息添加进来(9)触发器insert_depart:如果有新的教师研究室被添加,则触发该触发器使得该教师研究室的相关信息添加进来(10)触发器insert_major:如果有新的专业被添加,则触发该触发器使得该专业的相关信息被添加进来(11)触发器insert_selectcourse:如果有某位同学新选的课程需要添加进来,则触发该触发器使得该学生选择的这门课程的相关信息被添加进来(12)触发器insert_teachercourse:如果有某位教师的选课信息要添加,则触发该触发器使得相关信息被添加进来(13)触发器insert_teachers:如果有新老师要被添加,则触发该触发器使得该教师的相关信息被添加进来五、实施阶段现在我们可以根据物理设计的结果产生一个具体的数据库,并把原始数据输入数据库中。