版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据库原理实训学生管理系统班级:成员:指导教师:开发时间:需求分析1、编写目的为了明确软件需求、 安排工程规划与进度、 组织软件开发与测试, 撰写本文 档。本文档供工程经理、设计人员、开发人员参考。2、工程背景使用计算机对学生信息进展管理,拥有手工管理所无法比较的优点。例如: 检索迅速、查找方便、可靠性高、存储量大、本钱低等。这些优点能够极大地提 高学生信息的效率,也是管理科学化、正规化的重要支撑。学生信息管理系统能够方便地查询和变更学生的根本数据 包括学籍数据和 成绩数据,节省大量工作时间,有效地提高学生信息管理的效率。而查询信息 的直观显示将有助于系统的用户一目了然地掌握学生的情况。3、开
2、发方案分阶段完成任务: 第一阶段实现快速界面原型,并进展相应的补充修改以满足客户的需求; 第二阶段完成界面的进一步设计求精,形成最终的设计样式; 第三阶段:完成数据库的开发; 第四阶段:整合管理系统并进展各项测试改正出现的各种问题。4、实现的内容 学生信息管理系统属于应用系统。 学生信息管理系统的使用者是教务处管理 员和学生。它的功能就是教师通过输入用户名和口令登陆到教学管理数据库中, 从而实现对各门选课人数限制, 对学生信息的维护限制。 每个新学年的开场, 都 有新生的进入, 和毕业生离校, 每个学期学生的课程会发生改变以及有些学生因 为不同的原因离校或者有新来的转校生。 系统要对这些情况做
3、相应的改变。 离校 的将学生信息删除,新来的要将学生信息存入系统,课程改变了,要将其修改。 教务处访问该系统将学生信息填入、 删除或修改, 学生可以在系统上查询本人信 息。该系统是一个集成多功能的信息管理系统,有教师资料管理、学生管理、班 级管理、院系管理、 课程管理和成绩管理功能模块。 本系统将大大提高学生信息 的管理效率,带来数据共享、 网络查询和网络管理等便利, 实现学生信息管理的 数字化和智能化。教师管理模块: 本模块主要对教师的资料信息进展查询, 删除,修改和添加。 学生管理模块:本模块主要对学生资料信息进展相应的查询,删除,修改和 添加。添加了学生所在院系资料与学生所在专业资料,
4、同时可对院系资料与专业 资料进展相应的添加,修改,查询。课程管理模块:本模块主要对课程资料进展管理,对其进展查询,添加,修 改和删除。又详细划分了课程类别资料,对其进展如上操作。成绩管理模块:本模块对学生成绩进展查询操作,如发现成绩有输入错误, 可对其进展相应的修改,还可对学生的成绩进展录入班级管理模块: 本模块班级资料信息进展管理, 对其进展相应的查询, 修改,删除和添加根据实际问题,本系统要实现以下功能:1用户认证。本系统用户有教务处管理员和学生,所以用户必须通过认证才 能登入系统。系统能够自动识别用户类型,能够给不同的用户分配不同的权限。 教务处管理员用户成功登入后可以进入操作界面,学生
5、成功登入后即可进入学 生本人信息界面。2数据维护。可以对学生的成绩和课程等数据进展维护。3信息管理。允许教务处管理员修改学生信息,允许学生在任何时候登入查 询本人信息。如下图:二. 概念构造设计概念构造所涉及的数据是独立于硬件和软件系统的, 它的目标是以用户可以 理解的形式来表达信息的流程,从而可以和不熟悉计算机的用户交换意见。 它要 充分地反映实体之间的关系,成为反映现实的概念数据模型。这是各种根本数据 模型的共同根底,易于向关系模型转变。通过需求分析得到的数据项和数据构造,可以设计出各种实体以及它们之间 的关系图,为后面的逻辑构造设计打下根底。 这些实体包含各种具体信息,通过 相互之间的作
6、用形成数据的流动。根据上面的设计规划处的实体有:学院实体,专业实体,年级实体,班级实 体,学生实体、课程实体,教师实体。1一个学院有多个专业,一个专业只能属于一个学院,因此学院与专业之间具有一对多关系。2一个专业有多个年级,一个年级有多个专业,因此学院与专业之间具 有多对多关系。3一个专业有多个班级,一个班级只能属于一个专业,因此专业与班级之间具有一对多关系。4一个班级有多个学生,一个学生只能属于一个班级,因此班级与学生之间具有一对多关系。5一个学生可以选修多门课程,一门课程可以被多个学生选修,因此学 生与课程之间是多对多的联系。用成绩来表示学生和课程之间联系的属性。6一个学院有多个教师,一个
7、教师只能属于一个学院,因此学院与教师 具有一对多的联系。7一个教师可以任教多门课程,一门课程可以被多个教师任教,因此课程与教师具有多对多的联系。学生信息系统ER图如下图:三、逻辑构造设计此阶段的任务是把概念构造转换成 SQL Server 2005数据库管理系统能处理 的数据模型。在进展这种转换时,是把实体类型和联系类型分别转换成一个个关 系模式,这中间存在着多种可能组合,必须从中选择一个性能好的关系模式集作 为关系数据库的模式。学生管理系统的关系模式集如下:(1)学生信息表学生学号,学生姓名,性别,年龄,学院名称,专业名称,年级,班级名称,主键为学生学号。(2) 课程数据表课程号,课程名称,
8、学院名称,学分,主键为课程号。(3) 学生选课表学号,课程号,教师工号,成绩,主键为学号,课程号。(4)教师数据表教师工号,教师姓名,性别,年龄,学院名称,教研室名 称, 丨,主键为教师工号。(5)学院数据表学院名称,学员编号,主键为学院名称。(6)专业数据表专业名称,专业编号,学院名称,主键为专业名称。(7) 年级一班级数据表年级,学院名称,专业名称,班级名称,主键为年 级,班级名称。(8) 教师教研室表教研室名称,教研室编号,学院名称,主键为教研室名 称。(9) 教师任课数据表课程号,课程名称,教师工号,主键为课程号,教师 工号。四、物理构造设计物理构造设计是指对给定的根本数据模型选择一个
9、最适合应用环境的物理 构造的过程。数据库的物理构造主要是指数据库的存储记录格式、存储记录安排和存取方法。确定数据库的存储构造,主要是指确定数据的存放位置和存储构造,包括确 定关系、索引、系统存储参数的配置,确定数据库的存储方法。1.数据构造:设置每一张数据表的属性的属性名,类型和宽度每张数据表的属性的属性名,类型和宽度如表所示。学生信息表student名称字段类型长度是否为空备注学号snochar10否主键姓名stude ntn amevarchar10否性别sexchar2年龄sagesmalli nt学院名称college namevarchar20外键专业名称majornamevarch
10、ar20外键年级gradeint外键班级名称classchar10外键telvarchar16课程数据表course字段别名类型长度是否为空备注】田千口 i=r. 课程号enochar10否主键课程名称course namevarchar20否学院名称college nameVarchar20外键学分Creditint否学生选课表selectcourse字段别名类型长度是否为空备注学号snochar10:否主键(外码)】田千口 i=r. 课程号Cnochar10否主键外码工号TeacherIDvarchar10外键成绩Scoreint教师数据表teachers名称字段类型长度是否为空备注工号t
11、eacherIDvarchar10:否主键姓名teacher namevarchar10否性别sexchar2年龄sagesmalli nt学院名称college namevarchar20外键教研室名称departme ntvarchar20外键telvarchar16学院数据表college名称字段类型长度是否为空备注学院名称college namevarchar20否主键学院编号collegeIDint否专业数据表major名称字段类型长度是否为空备注专业名称majornamevarchar20:否主键专业编号majorIDint否学院名称coolege namevarchar20否外键
12、班级数据表class名称字段类型长度是否为空备注年级gradeint:否外键学院名称college namevarchar20否外键专业名称majornamevarchar20:否外键班级名称classchar10否主键年级数据表grade名称字段类型长度是否为空备注年级gradeint否主键学院名称college namevarchar20否外键专业名称majornamevarchar20否外键教师教研室表depart名称字段类型长度是否为空备注教研室名称departme ntvarchar20否主键教研至编号departIDint否学院名称college namevarchar20外键教师
13、任课数据表teachercourse名称字段类型长度是否为空备注】田千口 i=r. 课程号enochar10否主键外码课程名称course namevarchar20否工号teacherlDvarchar10否主键外码2.设置参照属性(1)学生信息表学生学号,学生姓名,性别,年龄,学院名称,专业名称,年级,班级名称,中的学院名称,专业名称,年级,班级名称分别参照学院数据表中学院名称,专业数据表中的专业名称,年级一班级数据 表中的年级,班级名称。(2) 课程数据表课程号,课程名称,学院名称,学分中的学院名称参照学 院数据表中学院名称。(3) 学生选课表学号,课程号,教师工号,成绩中的学号,课程号
14、,教师工号分别参照学生信息表中的学号, 课程数据表中的课程号,教师数据表 中的教师工号。(4) 教师数据表教师工号,教师姓名,性别,年龄,学院名称,教研室名称, 中的学院名称,教研室名称分别参照学院数据表中的学院名称,教师教研 室表中的教研室名称。(5)专业数据表专业名称,专业编号,学院名称中的学院名称参照学院数 据表中学院名称。(6)年级一班级数据表年级,学院名称,专业名称,班级名称中的学院名称,专业名称分别参照学院数据表中的学院名称,专业数据表中的专业名称。(7)教师教研室表教研室名称,教研室编号,学院名称中的学院名称参照 学院数据表中学院名称。(8)教师任课数据表课程号,课程名称,教师工
15、号中的课程号,工号分别 参照课程数据表中的课程号,教师数据表中的教师工号。3.索引在成绩上创立索引 scorendex在学生年龄上创立索引 stude nt_sage_i ndex在教师成绩上创立索引 teachers_sage_i ndex4. 设置视图 为学生信息创立视图 student_view 创立各院系学生的视图 college_major_s 创立各班级视图 class_s 为各学院课程创立视图 college_course 为各班的学生选课成绩创立视图 selectcourse_s 为各班学生的学号及平均成绩创立视图 avg_s 为教师信息创立视图 teachers_view 为
16、教研室创立视图 depart_view 为教师任课创立视图 teachercourse_view 为各学院所拥有的专业创立视图 c_major_view5. 设置存储过程a创立一个存储过程,输入学号可以查询该学生的各科成绩b. 创立一个存储过程,输入课程名显示该门课程的平均成绩和选课人次c. 创立一个存储过程, 输入学院名称显示该学院的代号, 学院名称以及包含的各 个专业的代号和名称,并统计该学院包含专业的数目d. 创立一个存储过程,输入学院名称,专业名称,年级,班级显示该班级所有学 生的信息,并统计该班的人数e. 创立一个存储过程,输入教师姓名 , 显示该教师所教的所有课程编号,课程名 称,
17、并显示这位教师的 ID 号,所属院系,教研室名称6. 设置触发器(1) 要求学生选课课程表中的课程号被删除时,学生选课成绩表中的对应的课程 号的信息也被删除。(2) 要求学生信息表中的学好被修改时,学生选课成绩表、学生公共课成绩表中 的学号自动修改。(3) 触发器ttrigger:要求教师信息表中教师的职工号修改,那么教师选课信息的 职工号也会被修改触发器ttrigger :要求假设输入的学号或者课程号与数据库中数据不符那么不 插入选课成绩表中(5) 触发器 insert_student: 器,使得该学生信息插入如果学生表中有新的学生插入, 那么触发该触发(6) 触发器 insert_clas
18、ses: 该班级信息添加进来如果有新的班级被添加, 那么触发该触发器使得(7) 触发器 insert_college: 该学院信息添加进来如果有新的学院被添加, 那么触发该触发器使得(8) 触发器 insert_course:如果有新的课程被添加,那么触发该触发器使得该课程相关信息添加进来(9) 触发器 insert_depart:如果有新的教师研究室被添加,那么触发该触发器使得该教师研究室的相关信息添加进来(10) 触发器 insert_major:如果有新的专业被添加,那么触发该触发器使得该专业的相关信息被添加进来(11) 触发器 insert_selectcourse:如果有某位同学新选
19、的课程需要添加进来,那么触发该触发器使得该学生选择的这门课程的相关信息被添加进来(12) 触发器 insert_teachercourse: 如果有某位教师的选课信息要添加, 那么触发该触发器使得相关信息被添加进来(13) 触发器 insert_teachers: 如果有新教师要被添加, 那么触发该触发器使 得该教师的相关信息被添加进来五、实施阶段现在我们可以根据物理设计的结果产生一个具体的数据库, 并把原始数据输入数 据库中。利用SQL Server 2005数据库系统中的SQL查询分析器来实现。下面给 出具体的实现过程。1) 创立学生信息管理数据库create database stude
20、ntmanagesystemon primary( name ='studentmanagement' ,='D:DATAstudentmanagesystem.mdf' ,size =3,maxsize = unlimited,=1)log on( name ='studentmanagesystem_log' ,='D:DATAstudentmanagesystem_log.ldf',size =1, maxsize =2,=10 %)2) 创立数据表文件学院数据表 collegeCREATE TABLE college( c
21、ollegename varchar ( 20) primary key not null ,collegeID int not null)专业数据表 majorCREATE TABLE major( majorname varchar ( 20 ) primarykey not null ,majorID int not null,collegename varchar ( 20 )not null,FOREIGN KEY ( collegename ) REFERENCES college ( collegename ), );年级数据表 gradesCREATE TABLE grades
22、( grade int not nullprimarykeycollegenamevarchar ( 20 )not null,majornamevarchar ( 20 )not null,FOREIGN KEY ( collegename) REFERENCES college( collegename ),FOREIGNKEY ( majorname) REFERENCES major( majorname )班级数据表 classesCREATE TABLE classes( class char ( 10 )not null primary key ,grade int not nu
23、ll ,collegename varchar ( 20 )not null,majorname varchar ( 20 )not null,FOREIGN KEY ( collegename ) REFERENCES college ( collegename ), FOREIGN KEY ( majorname ) REFERENCES major ( majorname ) ,FOREIGN KEY ( grade ) REFERENCES grades ( grade )学生信息表 studentcreate table student( sno char ( 10) primary
24、 key not null, studentname varchar ( 10 ) not null, sex char ( 2), sage smallint ,collegename varchar ( 20 ), majorname varchar ( 20),grade int , class char ( 10), tel varchar ( 16 ),foreignkey ( collegename ) references college ( collegename ),foreignkey ( majorname ) references major ( majorname )
25、,foreignkey ( grade ) references grades ( grade ),foreignkey ( class ) referencesclasses ( class )课程数据表 coursecreate table course ( cno char ( 10) primary key not null, coursename varchar ( 20) not null, collegename varchar ( 20 ),Credit int not null,foreignkey ( collegename ) referencescollege ( co
26、llegename )教师教研室表 departCREATE TABLE depart( department varchar ( 20 )not null primary key ,departID int not null,collegename varchar ( 20 ),FOREIGN KEY ( collegename ) REFERENCES college ( collegename ), );教师数据表 teacherscreate table teachers( teacherID teachernamevarchar ( 10) primary key not null,
27、 varchar ( 10 )not null,sex char ( 2),sage smallint , collegename varchar ( 20 ), department varchar ( 20), tel varchar ( 16 ),foreignforeignkey ( collegename ) references college ( collegename ),key ( department ) references depart ( department )学生选课及成绩表 selectcoursecreate table selectcourse ( sno
28、char ( 10) not null,scoreint ,primarykey ( sno , cno ),foreignkey ( sno ) referencesforeignkey ( cno ) referencesteacherID varchar ( 10),foreign)Cno char ( 10 ) not null,student ( sno ),course ( cno ),( teacherID ),( teacherID ),key ( teacherID ) references teachers教师任课数据表 teachercourseCREATE TABLE
29、teachercourse( cno char ( 10 )not null , coursename varchar ( 20 )not null,teacherID varchar ( 10),PRIMARY KEY ( cno , teacherID ),foreign key ( cno ) references course ( cno ), foreign key ( teacherID ) references teachers);3) 创立索引 在成绩上创立索引 score_index create nonclustered index score_index on selec
30、tcourse ( score desc ) 在学生年龄上创立索引 student_sage_index create nonclustered index student_sage_index on student ( sage desc ) 在教师成绩上创立索引 teachers_sage_index create nonclustered index teachers_sage_index on teachers ( sage desc )4) 创立视图 为学生信息创立视图 student_view create view student_view as select *from stu
31、dent创立各院系学生的视图 college_major_screate view college_major_sasselectsno ,studentname, collegename ,majorname , telfromstudentgroupby collegename, majorname, sno ,studentname ,tel创立各班级视图 class_screateviewclass_sasselectsno ,studentname, grade ,class ,telfromstudentgroupby collegename, majorname, grade,
32、class , sno ,studentname, tel为各学院课程创立视图 college_coursecreate view college_courseasselect *from coursegroup by collegename , cno , coursename , credit为各班的学生选课成绩创立视图 selectcourse_screateview selectcourse_s ( sno , cno, teacherID , scoreasselectselectcourse. sno , cno , teacherID , scorefromselectcours
33、e, class_swhereselectcourse. sno =class_s . sno为各班学生的学号及平均成绩创立视图avg_screateview avg_s( sno , grade , class ,gavg )asselectselectcourse. sno , grade , class, avg ( score )fromselectcourse, class_swhereselectcourse. sno =class_s . snogroupby grade , class , selectcourse .sno为教师信息创立视图 teachers_viewcrea
34、te view teachers_viewasselect *from teachersgroup by collegename , department , teacherID , teachername , sex , sage , tel为教研室创立视图 depart_viewcreate view depart_view as select *from departgroup by collegename , departID , department 为教师任课创立视图 teachercourse_view create view teachercourse_viewasselect
35、 *from teachercoursegroup by teacherID , cno , coursename 为各学院所拥有的专业创立视图 c_major_view create view c_major_view ( collegename , collegeID , majorname , majorID ) asselect collegeID, college . collegename , majorID , majornamefrom college , majorwhere major . collegename = college . collegename5) 创立存储
36、过程(1) 创立一个存储过程,输入学号可以查询该学生的各科成绩create proc scoreprocsno char ( 10)asbeginselect student . sno , studentname , coursename , score , creditfrom student , course , selectcoursewhere student . sno = selectcourse. sno andcourse . cno =selectcourse . cno andstudent . sno =snoendgo用户请输入:exec scoreproc '
37、; 输入您需要查询的学号 '(2) 创立一个存储过程,输入课程名显示该门课程的平均成绩和选课人次create proc avgscoreproccname char ( 20 ), avg int output , count smallint output asbeginselect avg =avg ( grade ), count = count (*)from course , selectcoursewhere course . cno =selectcourse . cno andcoursename= cnameend go用户请输入: declare a int , b
38、 smallint exec avgscoreproc ' 输入您要查找的课程名 ' , a output , b outputselecta as 平均成绩 , b as 选课人次(3) 创立一个存储过程,输入学院名称显示该学院的代号,学院名称以及包含的 各个专业的代号和名称,并统计该学院包含专业的数目createproc majorproccollegename char ( 20), countmajor int output as beginselectcollege . collegeID , collegename , majorID , majornamefrom
39、 college , majorwhere college . collegename =major . collegename and college . collegename =collegenameselectcountmajor = count (*)from majorwhere collegename= collegenameendgo用户请输入: declare a int exec majorproc ' 输入您要查找寻的学院名字 ' , a outputselecta as 专业数目(4) 创立一个存储过程,输入学院名称 , 专业名称,年级,班级显示该班级所
40、有 学生的信息,并统计该班的人数createproc classproccollegename char ( 20), majorname char ( 20 ), grade int , class char ( 10),numasint outputbeginselect* from studentwherecollegename = collegename and majorname = majorname andgrade select where=grade and class =classnum =count (*) from studentcollegename = colleg
41、ename and majorname = majorname andgrade end=grade and class =classgo 用户请输入: declare x int exec classprco ' 输入学院名称,专业名称,年级,班级 ' , x output select x as 人数(5) 创立一个存储过程,输入教师姓名 , 显示该教师所教的所有课程编号,课程名 称,并显示这位教师的 ID 号,所属院系,教研室名称create proc teacherprocteacher char ( 10), ID char ( 10) output , colleg
42、e char ( 10 )outchar , department char ( 20) outputasbeginselect cno , coursenamefrom teachers , teachercoursewhere teachers . teacherID = teachercourse. teacherID andteachername =teacherselect ID = teacherID , college = collegename , department = departmentfrom teacherswhere teachername = teacheren
43、dgo用户请输入:declare x char ( 10), y char ( 20), z char ( 10)exec teacherproc ' 请输入您要查找的教师姓名 ' , x output , y output , z output select x , y, z6)创立触发器触发器ctrigger:要求学生选课课程表中的课程号被删除时,学生选课成绩表 中的对应的课程号的信息也被删除。create trigger ctrigon course afterdeleteasbegin delete SC where cno in ( select cno from d
44、eleted ) End 用户输入: delete C where cno =( 输入您要删除的课程号 )2触发器strigger:要求学生信息表中的学号被修改时,学生选课成绩表、学生公共课成绩表中的学号自动修改。create as begintrigger ctrigonstudent afterupdateupdateselectcoursesetsno in( selectsno from inserted)whereendsno in( selectsnofrom deleted)用户输入: update student set sno =' 请输入您要修改的新学号 '
45、 where sno =' 请输入该学生的旧学号 '那么教师选课信息3触发器ttrigger:要求教师信息表中教师的职工号修改, 的职工号也会被修改createastriggerttrigon teachers afterupdatebeginupdateteachercoursesetteacherIDin( select teacherIDwhereteacherIDin(selectteacherIDfrom deleted )from inserted )end用户输入:whereupdate teachers set teacherID =' 请输入您要修改的
46、新职工号teacherID =' 输入原来的旧职工号4触发器ttrigger:要求假设输入的学号或者课程号与数据库中数据不符那 么不插入选课成绩表中create trigger check_trigon selectcourse after insertasbeginif exists( select * from insertedwhere sno not in( select sno from s )or cno not in( select cno from course ) rollbackendgo用户输入:insert selectcourse values ( '
47、 输入学生的学号 ' , ' 输入学生选修的课程号 ' , ' 输入该门 成绩 ' ) 5触发器 insert_student:如果学生表中有新的学生插入,那么触发该触发器,使得该学生信息插入createtrigger insert_studenton studentafterinsertasbegininsertinto student values( 'sno', 'studentname' , 'sex', 'sage' , 'collegename', 'majorname' , 'grade'class', 'tel' )End6触发器 insert_classes:如果有新的班级被添加,那么触发该触发器使得该班级信息添加进来create trigger insert_classes after insertasbegininsert into classes values ( 'class' , 'grade' , 'collegename' endon classes, 'majorname' )7触发器 ins
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年车辆伤害专项应急预案+现场处置方案
- 2025-2026学年经济法教学设计
- 公司财务部内部自查制度
- 公积金内部审计工作制度
- 冬奥内部管理制度
- 分公司内部监督制度规定
- 初创公司内部治理制度
- 地产内部讲师制度
- 城乡居保内部控制制度
- 大公司内部晋升制度
- 2024多系统萎缩诊疗指南
- 危重患者早期识别及处理 3
- 暗访人员管理办法
- 模具维护保养管理办法
- 水利项目审批管理办法
- 超声刀的使用与维护指南
- 安全试题100道及答案
- 中国介绍第一课件
- 三基培训 课件
- 电气控制与PLC应用技术-西门子S7-200 SMART PLC第三版黄永红习题答案
- 第四章 物质的特性 单元测试-七年级科学上册同步备课系列(浙教版)
评论
0/150
提交评论