


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据库原理实训学生管理系统班级:成员: 指导老师: 开发时间:一 需求分析1、编写目的 为了明确软件需求、安排项目规划与进度、组织软件开发与测试,撰写本 文档。本文档供项目经理、设计人员、开发人员参考。2、项目背景 使用计算机对学生信息进行管理,拥有手工管理所无法比拟的优点。例如: 检索迅速、查找方便、可靠性高、存储量大、成本低等。这些优点能够极大地 提高学生信息的效率,也是管理科学化、正规化的重要支撑。学生信息管理系统能够方便地查询和变更学生的基本数据(包括学籍数据 和成绩数据),节省大量工作时间,有效地提高学生信息管理的效率。而查询信 息的直观显示将有助于系统的用户一目了然地掌握学生的情况
2、。3、开发计划 分阶段完成任务: 第一阶段实现快速界面原型,并进行相应的补充修改以满足客户的需求; 第二阶段完成界面的进一步设计求精,形成最终的设计样式; 第三阶段:完成数据库的开发; 第四阶段:整合管理系统并进行各项测试改正出现的各种问题。4、实现的内容学生信息管理系统属于应用系统。学生信息管理系统的使用者是教务处管 理员和学生。它的功能就是教师通过输入用户名和口令登陆到教学管理数据库 中,从而实现对各门选课人数限制,对学生信息的维护限制。每个新学年的开 始,都有新生的进入,和毕业生离校,每个学期学生的课程会发生改变以及有 些学生因为不同的原因离校或者有新来的转校生。系统要对这些情况做相应的
3、 改变。离校的将学生信息删除,新来的要将学生信息存入系统,课程改变了, 要将其修改。教务处访问该系统将学生信息填入、删除或修改,学生可以在系 统上查询本人信息。该系统是一个集成多功能的信息管理系统,有教师资料管 理、学生管理、班级管理、院系管理、课程管理和成绩管理功能模块。本系统 将大大提高学生信息的管理效率,带来数据共享、网络查询和网络管理等便利, 实现学生信息管理的数字化和智能化。教师管理模块:本模块主要对教师的资料信息进行查询,删除,修改和添加学生管理模块:本模块主要对学生资料信息进行相应的查询,删除,修改和 添加。添加了学生所在院系资料与学生所在专业资料,同时可对院系资料与专 业资料进
4、行相应的添加,修改,查询。课程管理模块:本模块主要对课程资料进行管理,对其进行查询,添加,修 改和删除。又详细划分了课程类别资料,对其进行如上操作。成绩管理模块:本模块对学生成绩进行查询操作,如发现成绩有输入错误, 可对其进行相应的修改,还可对学生的成绩进行录入班级管理模块:本模块班级资料信息进行管理,对其进行相应的查询,修改, 删除和添加。根据实际问题,本系统要实现以下功能:(1)用户认证。本系统用户有教务处管理员和学生,所以用户必须通过认证 才能登入系统。系统能够自动识别用户类型,能够给不同的用户分配不同的权 限。教务处管理员用户成功登入后可以进入操作界面,学生成功登入后即可进 入学生本人
5、信息界面。(2)数据维护。可以对学生的成绩和课程等数据进行维护。(3)信息管理。允许教务处管理员修改学生信息,允许学生在任何时候登入查 询本人信息。如图所示:二概念结构设计概念结构所涉及的数据是独立于硬件和软件系统的,它的目标是以用户可 以理解的形式来表达信息的流程,从而可以和不熟悉计算机的用户交换意见。 它要充分地反映实体之间的关系,成为反映现实的概念数据模型。这是各种基 本数据模型的共同基础,易于向关系模型转变。通过需求分析得到的数据项和数据结构,可以设计出各种实体以及它们之 间的关系图,为后面的逻辑结构设计打下基础。这些实体包含各种具体信息, 通过相互之间的作用形成数据的流动。根据上面的
6、设计规划处的实体有:学院实体,专业实体,年级实体,班级 实体,学生实体、课程实体,教师实体。(1)一个学院有多个专业,一个专业只能属于一个学院,因此学院与专业之间具有一对多关系。(2)个专业有多个年级,一个年级有多个专业,因此学院与专业之间具 有多对多关系。(3)个专业有多个班级,一个班级只能属于一个专业,因此专业与班级 之间具有一对多关系。(4)一个班级有多个学生,一个学生只能属于一个班级,因此班级与学生 之间具有一对多关系。(5)个学生可以选修多门课程,一门课程可以被多个学生选修,因此学 生与课程之间是多对多的联系。用成绩来表示学生和课程之间联系的属性。(6)个学院有多个教师,一个教师只能
7、属于一个学院,因此学院与教师 具有一对多的联系。(7)个教师可以任教多门课程,一门课程可以被多个教师任教,因此课 程与教师具有多对多的联系。学生信息系统ER图如图所示:m学生一课程m教师一课程Pn年级一班级n学院一教师1班级一学生m专业一年级专业年级课程学院学生教师班级三、逻辑结构设计此阶段的任务是把概念结构转换成 SQL Server2005数据库管理系统能处理 的数据模型。在进行这种转换时,是把实体类型和联系类型分别转换成一个个 关系模式,这中间存在着多种可能组合,必须从中选择一个性能好的关系模式 集作为关系数据库的模式。学生管理系统的关系模式集如下:(1)学生信息表(学生学号,学生姓名,
8、性别,年龄,学院名称,专业名称, 年级,班级名称,电话),主键为学生学号。(2) 课程数据表(课程号,课程名称,学院名称,学分),主键为课程号。(3) 学生选课表(学号,课程号,老师工号,成绩),主键为学号,课程号。(4)教师数据表(老师工号,老师姓名,性别,年龄,学院名称,教研室名 称,电话),主键为老师工号。(5)学院数据表(学院名称,学员编号),主键为学院名称。(6)专业数据表(专业名称,专业编号,学院名称),主键为专业名称。(7)年级一班级数据表(年级,学院名称,专业名称,班级名称),主键为年 级,班级名称。(8)教师教研室表(教研室名称,教研室编号,学院名称),主键为教研室名 称。(
9、9)教师任课数据表(课程号,课程名称,教师工号),主键为课程号,教师 工号。四、物理结构设计物理结构设计是指对给定的基本数据模型选择一个最适合应用环境的物理 结构的过程。数据库的物理结构主要是指数据库的存储记录格式、存储记录安 排和存取方法。确定数据库的存储结构,主要是指确定数据的存放位置和存储结构,包括 确定关系、索引、系统存储参数的配置,确定数据库的存储方法。1.数据结构:设置每一张数据表的属性的属性名,类型和宽度 每张数据表的属性的属性名,类型和宽度如表所示。学生信息表student名称字段类型长度是否为空备注学号snochar10否主键姓名stude ntn amevarchar10否
10、性别sexchar2年龄sagesmalli nt学院名称college namevarchar20外键专业名称majornamevarchar20外键年级gradeint外键班级名称classchar10外键电话telvarchar16课程数据表course字段别名类型长度是否为空备注】田千口 i=r. 课程号enochar10否主键课程名称course namevarehar20否学院名称college nameVarchar20外键学分Creditint否学生选课表selectcourse字段别名类型长度是否为空备注学号snochar10否主键(外码)】田千口 i=r. 课程号Cnoch
11、ar10否主键(外码)工号TeacherIDvarchar10外键成绩Scoreint教师数据表teachers名称字段类型长度是否为空备注工号teacherIDvarchar10否主键姓名teacher namevarchar10否性别sexchar2年龄sagesmalli nt学院名称college namevarchar20外键教研室名称departme ntvarchar20外键电话telvarchar16学院数据表college名称字段类型长度是否为空备注学院名称college namevarchar20否主键学院编号collegeIDint否专业数据表major名称字段类型长度是
12、否为空备注专业名称majornamevarchar20否主键专业编号majorIDint否学院名称coolege namevarchar20否外键班级数据表class名称字段类型长度是否为空备注年级gradeint否外键学院名称college namevarchar20否外键专业名称majornamevarchar20否外键班级名称classchar10否主键年级数据表grade名称字段类型长度是否为空备注年级gradeint否主键学院名称college namevarchar20否外键专业名称majornamevarchar20否外键教师教研室表depart名称字段类型长度是否为空备注教研室
13、名称departme ntvarchar20否主键教研至编号departIDint否学院名称college namevarchar20外键教师任课数据表teachercourse名称字段类型长度是否为空备注】田千口 i=r. 课程号enochar10否主键(外码)课程名称course namevarchar20否工号teacherlDvarchar10否主键(外码)2.设置参照属性(1)学生信息表(学生学号,学生姓名,性别,年龄,学院名称,专业名称, 年级,班级名称,电话)中的学院名称,专业名称,年级,班级名称分 别参照学院数据表中学院名称,专业数据表中的专业名称,年级一班级 数据表中的年级,
14、班级名称。(2) 课程数据表(课程号,课程名称,学院名称,学分)中的学院名称参照 学院数据表中学院名称。(3) 学生选课表(学号,课程号,老师工号,成绩)中的学号,课程号,老 师工号分别参照学生信息表中的学号,课程数据表中的课程号,教师数 据表中的老师工号。(4)教师数据表(老师工号,老师姓名,性别,年龄,学院名称,教研室名 称,电话)中的学院名称,教研室名称分别参照学院数据表中的学院名 称,教师教研室表中的教研室名称。(5)专业数据表(专业名称,专业编号,学院名称)中的学院名称参照学院 数据表中学院名称。(6)年级一班级数据表(年级,学院名称,专业名称,班级名称)中的学院 名称,专业名称分别
15、参照学院数据表中的学院名称,专业数据表中的专 业名称。(7)教师教研室表(教研室名称,教研室编号,学院名称)中的学院名称参 照学院数据表中学院名称。(8)教师任课数据表(课程号,课程名称,教师工号)中的课程号,工号分 别参照课程数据表中的课程号,教师数据表中的教师工号。3.索引在成绩上创建索引 scorendex在学生年龄上创建索引student_sage_index在老师成绩上创建索引 teachers_sage_index4. 设置视图 为学生信息创建视图 student_view 创建各院系学生的视图 college_major_s 创建各班级视图 class_s 为各学院课程创建视图
16、college_course 为各班的学生选课成绩创建视图 selectcourse_s 为各班学生的学号及平均成绩创建视图 avg_s 为老师信息创建视图 teachers_view 为教研室创建视图 depart_view 为老师任课创建视图 teachercourse_view 为各学院所拥有的专业创建视图 c_major_view5. 设置存储过程a创建一个存储过程,输入学号可以查询该学生的各科成绩b. 创建一个存储过程,输入课程名显示该门课程的平均成绩和选课人次c. 创建一个存储过程,输入学院名称显示该学院的代号,学院名称以及包含的各个专业的代号和名称,并统计该学院包含专业的数目d.
17、 创建一个存储过程,输入学院名称,专业名称,年级,班级显示该班级所有学 生的信息,并统计该班的人数e. 创建一个存储过程,输入老师姓名 , 显示该老师所教的所有课程编号,课程名 称,并显示这位老师的 ID 号,所属院系,教研室名称6. 设置触发器(1) 要求学生选课课程表中的课程号被删除时,学生选课成绩表中的对应的课程 号的信息也被删除。(2) 要求学生信息表中的学好被修改时,学生选课成绩表、学生公共课成绩表中 的学号自动修改。(3) 触发器ttrigger:要求教师信息表中老师的职工号修改,则教师选课信息的职 工号也会被修改触发器ttrigger:要求若输入的学号或者课程号与数据库中数据不符
18、则不插入 选课成绩表中(5) 触发器 insert_student:如果学生表中有新的学生插入,则触发该触发器,使得该学生信息插入(6) 触发器 insert_classes:如果有新的班级被添加,则触发该触发器使得该班级信息添加进来(7) 触发器 insert_college:如果有新的学院被添加,则触发该触发器使得该学院信息添加进来(8) 触发器 insert_course:如果有新的课程被添加,则触发该触发器使得该课程相关信息添加进来(9) 触发器 insert_depart:如果有新的教师研究室被添加,则触发该触发器使得该教师研究室的相关信息添加进来(10) 触发器 insert_ma
19、jor:如果有新的专业被添加,则触发该触发器使得该专业的相关信息被添加进来(11) 触发器 insert_selectcourse:如果有某位同学新选的课程需要添加进来,则触发该触发器使得该学生选择的这门课程的相关信息被添加进来(12) 触发器 insert_teachercourse: 如果有某位教师的选课信息要添加, 则触发该触发器使得相关信息被添加进来(13) 触发器 insert_teachers: 如果有新老师要被添加,则触发该触发器使 得该教师的相关信息被添加进来五、实施阶段 现在我们可以根据物理设计的结果产生一个具体的数据库,并把原始数据输入 数据库中。利用 SQL Server
20、 2005 数据库系统中的 SQL 查询分析器来实现。下 面给出具体的实现过程。1) 创建学生信息管理数据库create database studentmanagesystemon primary( name = studentmanagement,filename = D:DATAstudentmanagesystem.mdf,size =3 ,maxsize = unlimited , filegrowth =1 )log on( name = studentmanagesystem_log,filename = D:DATAstudentmanagesystem_log.ldf,siz
21、e =1 ,maxsize =2 , filegrowth=10 %)2) 创建数据表文件 学院数据表 collegeCREATE TABLEcollege( collegenamevarchar( 20 ) primarykey not nullcollegeID)int notnull专业数据表 majorCREATE TABLE major( majorname varchar ( 20 ) primary key not null , majorID int not null,collegename varchar ( 20 )not null,FOREIGN KEY ( colleg
22、ename ) REFERENCES college ( collegename ), );年级数据表 gradesCREATE TABLE grades( gradeint not null primarykeycollegenamevarchar ( 20 )not null,majornameFOREIGNFOREIGNvarchar ( 20 )not KEY ( collegename KEY ( majornamenull,REFERENCES college ( collegename ( majorname )REFERENCES major),班级数据表 classesCRE
23、ATE TABLE classes( class char ( 10 )not null primary key , grade int not null ,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 ) REFERENC
24、ES grades ( grade ) )学生信息表 studentcreate table student( sno char ( 10 ) primary key not null,studentnamevarchar ( 10 ) not null,sex char ( 2 ),sage smallint , collegename varchar ( 20 ), majorname varchar ( 20 ), grade int ,class char ( 10 ), tel varchar ( 16 ),foreignkey ( collegename ) referencesf
25、oreignkey ( majorname ) referencescollege ( collegename major ( majorname ),),foreignkey ( grade ) referencesgrades ( grade ),foreignkey ( class ) referencesclasses ( class )课程数据表 coursecreate table course( cno char ( 10 ) primary key not null, coursename varchar ( 20 ) not null, collegename varchar
26、 ( 20 ),Credit int not null,foreignkey ( collegename ) referencescollege ( collegename )教师教研室表 departCREATE TABLE depart( department varchar ( 20 )not null primary key ,departID int not null, collegename varchar ( 20 ),FOREIGN KEY ( collegename ) REFERENCES college ( collegename ), );教师数据表 teachersc
27、reate table teachersvarchar ( 10 ) primary key not null,teachernamevarchar( 10 )not null,sex char ( 2 ),sage smallintcollegenamevarchar( 20 ),departmentvarchar( 20 ),tel varchar( 16 ),foreign key( collegename ) referencesforeign key( department ) references( teacherID)college ( collegename ), depart
28、 ( department )学生选课及成绩表 selectcoursecreate table selectcourse( sno char ( 10 ) not null,Cno char ( 10 ) not null, teacherID varchar ( 10 ),scoreint ,primarykey( sno, cno ),foreignkey( sno) referencesstudent ( sno ),foreignkey( cno) referencescourse ( cno ),teachers ( teacherID ),foreign key ( teache
29、rID ) references )教师任课数据表 teachercourseCREATE TABLE teachercourse( cno char( 10 )notnull ,coursenamevarchar( 20 )notnull,teacherIDvarchar( 10 ),PRIMARYKEY ( cno, teacherID),foreign key( cno ) referencescourse( cno ),foreign key( teacherID) referencesteachers ( teacherID );3) 创建索引 在成绩上创建索引 score_inde
30、x create nonclustered index score_index on selectcourse ( 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_v
31、iew create view student_view as select * from student 创建各院系学生的视图 college_major_s create view college_major_s asselect sno , studentname , collegename , majorname , tel from studentgroup by collegename , majorname , sno , studentname , tel 创建各班级视图 class_s create view class_s asselect sno , studentnam
32、e , grade , class , tel from student, telgroup by collegename , majorname , grade , class , sno , studentname为各学院课程创建视图 college_coursecreateasview college_courseselect*fromcoursegroup by collegename , cno , coursename , credit为各班的学生选课成绩创建视图 selectcourse_screate as selectview selectcourse_s ( sno , c
33、no , teacherID , score ) selectcourse . sno , cno , teacherID , scorefromselectcourse , class_swhereselectcourse . sno =class_s . sno为各班学生的学号及平均成绩创建视图 avg_screateview avg_s ( sno , grade , class , gavg )asselectselectcourse . sno , grade , class , avg ( score )fromselectcourse , class_swhereselectco
34、urse . sno =class_s . snogroupby grade , class , selectcourse . sno为老师信息创建视图 teachers_viewcreateasview teachers_viewselect*fromteachersgroup by collegename , department , teacherID , teachername , sex , sage , tel为教研室创建视图 depart_viewcreate as selectview depart_view*fromdepartgroup by collegename , d
35、epartID , department为老师任课创建视图 teachercourse_viewcreateasview teachercourse_viewselect*fromteachercoursegroup by teacherID , cno , coursename 为各学院所拥有的专业创建视图 c_major_viewcreateasview c_major_view ( collegename , collegeID , majorname , majorID )CIOselectcollegeID , college . collegename , majorID , ma
36、jornamefrom college , majorwhere major . collegename = college . collegename5) 创建存储过程(1) 创建一个存储过程,输入学号可以查询该学生的各科成绩create proc scoreprocsno char ( 10 ) as beginselect student . sno , studentname , coursename , score , credit from student , course , selectcoursewhere student . sno = selectcourse . sno
37、 and course . cno =selectcourse . cno and student . sno = snoend go 用户请输入: exec scoreproc 输入您需要查询的学号 (2) 创建一个存储过程,输入课程名显示该门课程的平均成绩和选课人次create proc avgscoreproccname char ( 20 ), avg int output , count smallint output asbeginselect avg=avg ( grade ), count = count (*)from course , selectcoursewhere c
38、ourse . cno =selectcourse . cno and coursename = cnameend go 用户请输入: declare a int , b smallint exec avgscoreproc 输入您要查找的课程名 , a output , b output select a as 平均成绩 , b as 选课人次(3) 创建一个存储过程,输入学院名称显示该学院的代号,学院名称以及包含 的各个专业的代号和名称,并统计该学院包含专业的数目create proc majorproccollegename char ( 20 ), countmajor int out
39、put asbeginselect college . collegeID , collegename , majorID , majorname from college , majorwhere college . collegename =major . collegename andcollege . collegename =collegenameselect countmajor = count (*)from majorwhere collegename = collegenameendgo用户请输入:declare a intexec majorproc 输入您要查找寻的学院名
40、字 , a outputselect a as 专业数目(4) 创建一个存储过程,输入学院名称 , 专业名称,年级,班级显示该班级所有 学生的信息,并统计该班的人数 create proc classproccollegename char ( 20 ), majorname char ( 20 ), grade int , class char ( 10 ), num int outputasbeginselect * from studentwherecollegename= collegename andmajorname= majornameandgrade=grade andclas
41、s =classselectnum= count(*) from studentwherecollegename= collegenameandmajorname= majornameandgrade=grade andclass =classend go用户请输入:declarex intexecclassprco 输入学院名称,专业名称,年级,班级 , x outputselectx as人数(5) 创建一个存储过程,输入老师姓名 , 显示该老师所教的所有课程编号,课程 名称,并显示这位老师的 ID 号,所属院系,教研室名称create proc teacherprocteacher ch
42、ar ( 10 ), ID char ( 10 ) output , college char ( 10 )outchar , department char ( 20 ) outputasbeginselect cno , coursenamefrom teachers , teachercoursewhere teachers . teacherID = teachercourse. teacherID andteachername = teacherselect ID=teacherID , college = collegename , department =departmentfr
43、om teacherswhere teachername = teacher end go 用户请输入: declare x char ( 10), y char ( 20), z char ( 10 ) exec teacherproc 请输入您要查找的老师姓名 , x output , y output , z output select x, y, z6) 创建触发器触发器ctrigger:要求学生选课课程表中的课程号被删除时,学生选课成绩表 中的对应的课程号的信息也被删除。createtriggerctrigon course after deleteasbegindeleteSC w
44、herecnoin( selectcno fromdeleted)End用户输入: deleteCwherecno =( 输入您要删除的课程号(2)触发器strigger:要求学生信息表中的学号被修改时,学生选课成绩表、 学生公共课成绩表中的学号自动修改。create trigger ctrig on student after update asbeginupdate selectcoursesetsnoin( select sno from inserted)where sno in( selectsnofromdeleted )end用户输入: updatestudentsetsno =
45、 请输入您要修改的新学号 wheresno = 请输入该学生的旧学号 (3)触发器ttrigger:要求教师信息表中老师的职工号修改,则教师选课信息 的职工号也会被修改createastrigger ttrigon teachersafter updatebeginupdateteachercoursesetteacherIDin( select teacherIDfrom inserted)whereteacherID in(selectteacherIDfrom deleted )end用户输入:update teachers set teacherID = 请输入您要修改的新职工号 wh
46、ere teacherID = 输入原来的旧职工号 (4 )触发器ttrigger:要求若输入的学号或者课程号与数据库中数据不符则不 插入选课成绩表中 create trigger check_trig on selectcourse after insert as beginif exists(select * from insertedwhere sno not in( select sno from s )or cno not in( select cno from course )rollbackendgo用户输入:insert selectcourse values ( 输入学生的学号 , 输入学生选修的课程号 , 输入该门 成绩 )( 5)触发器 insert_student:如果学生表中有新的学生插入,则触发该触发器,使得该学生信息插入create trigger insert_student on studentafter insertasbegininsert into student values( sno , studentname , sex , sage , collegename
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 环保采砂船租赁合同范本
- 汽修厂入伙协议合同模板
- 深圳商住楼购买合同范本
- 预制桥梁承包协议书模板
- 自动售药机合作协议合同
- 物业公司合同工合同范本
- 联通终止合同协议书范本
- 珠宝买卖服务合同协议书
- 黄冈还建房卖房合同范本
- 销售网络合作协议书范本
- 输水管道施工监理实施细则
- 搅拌器设计计算
- 关于个人现实表现材料德能勤绩廉【六篇】
- 【吊车租赁合同范本】吊车租赁合同
- 电梯井道脚手架施工方案
- 《游戏力养育》读书笔记PPT模板思维导图下载
- 琦君散文-专业文档
- 企业会计准则、应用指南及附录2023年8月
- 初中数学浙教版九年级上册第4章 相似三角形4.3 相似三角形 全国公开课一等奖
- DLT 5066-2010 水电站水力机械辅助设备系统设计技术规定
- 测绘生产困难类别细则及工日定额
评论
0/150
提交评论