高校成绩管理系统数据库设计与实现.docx
- 文档编号:15055795
- 上传时间:2023-06-30
- 格式:DOCX
- 页数:41
- 大小:1.49MB
高校成绩管理系统数据库设计与实现.docx
《高校成绩管理系统数据库设计与实现.docx》由会员分享,可在线阅读,更多相关《高校成绩管理系统数据库设计与实现.docx(41页珍藏版)》请在冰点文库上搜索。
高校成绩管理系统数据库设计与实现
高校成绩管理系统数据库设计与实现
一.数据库需求分析
(1).基本目的
以SQLSERVER数据库管理系统为平台,通过设计数据库概念模型、逻辑模型以及利用标准SQL语言的数据库实现,掌握关系数据库系统的设计与实现方法,增强数据库设计和数据库应用系统开发能力。
建立一套在现有window操作系统下的c/s高校学生成绩管理系统帮助广大教师教务人员提高工作效率.
(2).用户需求
某校管理学生成绩的工作人员,根据实际工作需要,提出了以下数据和业务处理需求:
1、学校设置了各专业,在专业下开设班级,每个班级包含若干学生,学生信息至少需要包含学号、姓名、性别、年龄、生源所在地、已修学分总数等数据项;另外,需要有地区信息,用于统计某一地区的学生数;
2、课程信息表至少需包含课程编号、课程名称、任课教师、开课学期、学时、考试或考查、学分等数据项,课程根据班级开设。
3、教师信息至少需要包含教师编号、姓名、性别、年龄、职称、联系电话等数据项;
4、学生成绩至少需要学号,学期,课程名称,成绩,任课老师等数据项;
5、需要实现以下业务处理和查询功能
1.学生成绩按每学年成绩统计
2.学生成绩名次排定
3.每门课程平均成绩统计
4.学生所学课程及学分统计
5.对每个学生输入成绩的时候,自动生成学生的已修学分总数
6.学生成绩查询
7.教师任课查询
8.班级课程开设查询
补充说明:
✧假设学籍管理制度是采用学年制,且暂不考虑选修课情况。
✧同一专业可能有多个班,所以同一门课可能需要多个教师上课,一个教师在一学期可能上多门课程。
✧考试和考查课均采用百分制记分。
(3)学生成绩管理的数据流图
二.数据库概念结构设计
在学生成绩管理系统中采用了E-R图的方法来进行数据库概念结构设计,本系统设计采用的是自底向上的设计方法,先设计分局部E-R图,再合并成总体E-R图,学生成绩管理系统的E-R图(实体的各属性略)如下图所示:
(1)E-R图如下
图1.主体E-R图
1.学生实体型
2.教师实体型
3.课程实体型
4班级实体型
5.专业实体型
(2)数据库的结构
(3)视图
为了方便学生以及教师的操作,使学生成绩管理系统更易于实现,我实现了以下视图
1.avgGrade_wq用于平均成绩的查询
2.classCourse_wq用于班级开设课程查询
3.sCourseGrade_wq用于学生课程成绩查询
4.sGE_wq用于学生成绩修改
5.studentGrade_wq用于学生成绩的查询
6.studentInF_wq用于学生信息的查询
7.teacherCourse_wq用于教师自己开设课程的查询
(4)存储过程
在本数据库中我实现了俩个存储过程,它们的具体用途如下
1.dt_delete_student用于实现学生的删除,当他的已修学分达到所要求的最大学分时,把该学生的信息进行删除
2.dt_delete_teacher用于实现教师的删除,当他的年龄达到所要求的最大年龄时,把该教师的信息进行删除
(5)触发器
在本数据库中我实现了一个触发器upORin_grade用于实现在成绩表中输入合格的成绩时,在学生表中已修学分栏上加上该课程的学分
三.数据库逻辑结构设计
数据库逻辑设计的任务是把概念数据库设计阶段产生的概念数据库模式变换为逻辑数据库模式。
在上面的学生成绩管理系统E一R图中实体与实体之间关系的基础上,形成数据库中的表格,以及各个表格之间的关系。
学生成绩管理系统中数据库中各个表格的设计结果如下面的几个表格所示:
1.各张表的实现
(1)表Student_wq
关系模式Student_wq(学号wq,姓名wq,性别wq,年龄wq,生源地wq,已修学分wq,班级编号wq)
(2)表Class_wq
关系模式Class_wq(班级编号wq,班级名称wq,专业名wq)
(3)表Course_wq
关系模式Course_wq(课程编号wq,课程名称wq,任课教师wq,开课学期wq,学时wq,考试类型wq,学分wq)
(4)表OpenCourse_wq
关系模式OpenCourse_wq(课程编号wq,班级编号wq,
开课学期wq,教师编号wq)
(5)表Report_wq
关系模式Report_wq(学号wq,课程编号wq,成绩wq,任课教师wq,开课学期wq)
(6)表Teacher_wq
关系模式Teacher_wq(教师编号wq,姓名wq,性别wq,年龄wq,
职称wq,联系电话wq)
2,实现级联删除的关系图
四.数据库物理结构设计
数据库的物理结构的设计就是对数据库在物理设备上的存储结构与存取方法的设计。
它依赖于给定的计算机系统。
来确定存储结构,设计数据的存取路径,确定数据的存放位置。
而所谓数据库物理结构设计就是为一个给定的数据库的逻辑结构选取一个最适合应用环境的物理结构和存取方法的过程
(1)索引设计是数据库物理设计的基本问题,对关系选择有效的索引对提高数据库的访问效率有很大的帮助
本数据库中我设计了如下的索引:
1.在表Class_wq中建立了按(班级编号wq)升序的唯一索引
class_no
2.在表Course_wq中建立了按(课程编号wq)升序的唯一索引
course_no
3.在表Student_wq中建立了按(学号wq)升序的唯一索引
student_no
4.在表Teacher_wq中建立了按(教师编号wq)升序的唯一索引teacher_no
(2)分区索引设计的本质是确定数据库的存放位置,其目的是提高性能.
在本系统中由于我的数据库较小,所以也没对其进行设计,就将数据库存放在安装SQLServer分区上
五.数据库实施
所谓数据库的实施,就是根据数据库的逻辑结构设计和物理结构设计的结果,在具体RDBMS支持的计算机系统上建立实际的数据库模式,装入数据,并进行测试和试运行的过程
(1)数据库的建立
这主要是在企业管理器中实现的,结果如下:
(2)数据库中各张表的实现
1.表Class_wq的实现
SQL语句:
CREATETABLEClass_wq
(
班级编号wq[varchar](50)NOTNULL,
班级名称wq[varchar](50)NOTNULL,
专业名wq[varchar](50)NOTNULL
PRIMARYKEY(班级编号wq)
)
2.表Course_wq的实现
SQL语句:
CREATETABLECourse_wq
(
课程编号wq[char](50)NOTNULL,
课程名称wq[char](50)NULL,
任课教师wq[char](50)NULL,
开课学期wq[char](50)NULL,
学时wq[char](50)NULL,
考试类型wq[char](50)NULL,
学分wq[char](50)NULL
PRIMARYKEY(课程编号wq)
)
3.表OpenCourse_wq的实现
SQL语句:
CREATETABLEOpenCourse_wq
(
课程编号wq[char](50)NOTNULL,
班级编号wq[varchar](50)NOTNULL,
开课学期wq[char](50)NULL,
教师编号wq[char](50)NOTNULL
PRIMARYKEY(课程编号wq,班级编号wq,教师编号wq)
)
4表Report_wq的实现
SQL语句:
CREATETABLEReport_wq
(
学号wq[char](50)NOTNULL,
课程编号wq[char](50)NOTNULL,
成绩wq[float]NULL,
任课教师wq[char](50)NULL,
开课学期wq[char](50)NULL
PRIMARYKEY(学号wq,课程编号wq)
)
5.表Student_wq的实现
SQL语句:
CREATETABLEStudent_wq
(
学号wq[char](50)NOTNULL,
姓名wq[char](50)NULL,
性别wq[char](50)NULL,
年龄wq[char](50)NULL,
生源地wq[char](50)NULL,
已修学分wq[char](50)NULL,
班级编号wq[char](50)NULL,
PRIMARYKEY(学号wq)
)
6.表Teacher_wq的实现
SQL语句:
CREATETABLETeacher_wq
(
教师编号wq[char](50)NOTNULL,
姓名wq[char](50),
性别wq[char](50),
年龄wq[char](50),
职称wq[char](50),
联系电话wq[char](50)
PRIMARYKEY(教师编号wq)
)
(3)数据库中索引的实现
1.在表Class_wq中的唯一索引class_no
SQL语句:
createuniqueindexclass_noonClass_wq(班级编号wq)
运行结果如下:
2.在表Course_wq中的唯一索引course_wq
SQL语句:
createuniqueindexcourse_noonCourse_wq(课程编号wq)
运行结果如下:
3.在表Student_wq中唯一索引student_no
SQL语句:
createuniqueindexstudent_noonStudent_wq(学号wq)
运行结果如下:
4.在表Teacher_wq中的唯一索引teacher_no
SQL语句:
createuniqueindexteacher_noonTeacher_wq(教师编号wq)
运行结果如下:
(4)数据库中视图的实现
1.视图avgGrade_wq用于平均成绩的查询
SQL语句:
CREATEVIEWavgGrade_wq
AS
SELECTReport_wq.课程编号wq,dCourse_wq.课程名称wq,
Report_wq.成绩wqFROMdbo.Course_wqINNERJOIN
Report_wqONCourse_wq.课程编号wq=Report_wq.课程编号wq
2.视图classCourse_wq用于班级开设课程查询
SQL语句:
CREATEVIEWclassCourse_wq
AS
SELECTOpenCourse_wq.班级编号wq,Course_wq.课程名称wq,Course_wq.任课教师wq,OpenCourse_wq.开课学期wqFROMCourse_wqINNERJOIN
OpenCourse_wqONCourse_wq.课程编号wq=OpenCourse_wq.课程编号wq
3.sCourseGrade_wq用于学生课程成绩查询
SQL语句:
CREATEVIEWsCourseGrade_wq
AS
SELECTStudent_wq.学号wq,Course_wq.课程名称wq,
Course_wq.学分wq
FROMCourse_wqINNERJOINReport_wqON
Course_wq.课程编号wq=Report_wq.课程编号wqINNERJOINStudent_wqON.Report_wq.学号wq=Student_wq.学号wq
4.sGE_wq用于学生成绩修改
SQL语句:
CREATEVIEWsGE_wq
AS
SELECTReport_wq.学号wq,Report_wq.课程编号wq,Report_wq.成绩wq,Report_wq.任课教师wq,Report_wq.开课学期wq,Student_wq.班级编号wq
FROMReport_wqINNERJOIN
Student_wqONReport_wq.学号wq=Student_wq.学号wq
5.studentGrade_wq用于学生成绩的查询
SQL语句:
CREATEVIEWstudentGrade_wq
AS
SELECTReport_wq.学号wq,Course_wq.课程名称wq,Report_wq.成绩wq,Course_wq.开课学期wq
FROMCourse_wqINNERJOINReport_wqONCourse_wq课程编号wq=Report_wq.课程编号wq
6.studentInF_wq用于学生信息的查询
SQL语句:
CREATEVIEWstudentInF_wq
AS
SELECTClass_wq.班级名称wq,Class_wq.专业名wq,Student_wq.学号wq,Student_wq.性别wq,Student_wq.姓名wqFROMClass_wqINNERJOINStudent_wqONClass_wq.班级编号wq=Student_wq.班级编号wq
7.teacherCourse_wq用于教师自己开设课程的查询
SQL语句:
CREATEVIEWteacherCourse_wq
AS
SELECTCourse_wq.课程名称wq,Course_wq.任课教师wq,
Course_wq.开课学期wq,Teacher_wq.教师编号wq
FROMCourse_wqINNERJOINTeacher_wqONCourse_wq.任课教师wq=Teacher_wq.姓名wq
它们的结果如下所示:
(5)数据库中存储过程的实现
1.存储过程dt_delete_student的实现
SQL语句:
CREATEPROCEDUREdt_delete_student
@max_creditchar
AS
deletefromStudent_wqwhere已修学分wq>@max_credit
2.存储过程dt_delete_teacher的实现
SQL语句:
CREATEPROCEDUREdt_delete_teacher
@max_yearchar
AS
deletefromTeacher_wqwhere年龄wq>@max_year
它们的结果显示如下:
(6)数据库中触发器的实现
1触发器upORin_grade的实现
SQL语句及结果显示:
六.应用系统开发与试运行
(1)系统的功能模块设计
本系统包括六大模块:
用户登录模块,学生成绩及信息和教师信息维护模块,信息查询模块,信息统计模块,帮助模块,退出模块.
如下图所示
(2)系统的试运行
1.用户登入
主要有三种方式,分别为管理员,教师,学生
当用户以不同身份登入时,所能使用的功能是不同的
为方便起见,我在数据库中只创建了一个用户名及密码
(1)管理员身份
他能使用所有的功能
(2)教师身份
以教师身份登入时有些功能被屏蔽了
(3)同学身份
以同学身份登入时有些功能被屏蔽了
2.主界面
在用户登入后就进入了主界面
2.下面以管理员身份登入演示系统功能
(1)修改模块
1.学生成绩修改
(1)可先在下面的教师及课程编号,班级编号,学期中的ComboBox下拉列表中选择,在按成绩查询从而查询出成绩
(2)若发现查询出成绩有误,再在上面输入其学号,成绩,按成绩修改按钮进行修改,在按查询按钮可看出成绩已修改
2.学生信息修改
(1)先在下面groupBox中输入学号,查询出其原来的学生信息
(2)若发现有错可进行修改,删除,添加
1.删除
在上方输入学号即可,再在下方按查询可发现200503100101已被我删除
2.添加
为演示方便这里先进行添加,在上方输入信息即可,下面再将干才删了的200503100101添回去,再按查询可发现已添加回去
3.修改
下面我对200503100101的信息进行修改
3.教师信息修改
教师信息修改的操作和上面类似,这里就不再赘述
(2)查询模块
1.学生成绩查询
这里你需要输入学号以及选择学期,课程选不选无所谓,若不选则显示该学生这学期的所有课程成绩
2.教师任课查询
可先查出其基本信息,只要输入教师编号即可
输入其教师编号,在按查询可查出该教师的任课情况
3.班级情况查询
可先在下面的班级编号,学期中的ComboBox下拉列表中选择,在按查询从而查询出班级课程开设情况
可在下面的班级编号ComboBox下拉列表中选择,在按Look按钮从而查询出班级学生情况
(3)统计模块
1.课程平均成绩统计
只要输入课程编号,在按课程的平均成绩按钮即可
2.学生成绩名次排定统计
只要输入课程编号和开课学期,在按成绩名次排定按钮即可
3.学生所学课程及学分统计
只要输入学号,在按右边的按钮即可
七.实验中遇到的问题,解决的办法和体会
(一)数据库设计及实现中遇到的问题,解决的办法
1.通过数据库原理及其应用课程的学习,我知道再数据库设计的整个过程中,需求分析是基础和起点,需求分析的结果是否准确的反映用户的需要,不仅会影响各界段的设计,最终会影响数据库设计的好坏,而在本次实验中需求分析老师们已经详细的为我们做好了,这也为我后来设计好自己的数据库做好了铺垫,但至少我也感到有那么点的遗憾,因为这也是数据库设计中关键的一环,而在本次大型实验中也没能自己作设计,而且实际中这都是要自己进行调查的
并且我自己也相信还有机会可以做个完整的数据库设计
2.在根据需求分析设计好E-R图后,接着就是将E-R图转化为关系模式,这个阶段可以说是我花费时间最多的地方,因为这与数据的冗余及视图建立实现功能是密切相关的,虽然我在这花了很多时间,但最后实现程序时还是发现表创建的有些问题,这也导致我后来得返回来修改表,最终又得修改程序,这点也是我本次实验中体会较深的一个问题,说明它至关重要
3.接着就是相关表的级联设计,可能时自己对SQLSERVER了解的较少吧,开始真的不知道得怎么搞,后来问了同学后才知道它是相当的简单的,只要在企业管理器中创建关系图中加入相应的表,再将他们的主键相关联就行了,对于这一点,我觉的自己收益良多
4.在创建存储过程和触发器时也遇到了一些问题,最开始主要是对它们不太了解----------存储过程是一个SQL语句的集合,他们经预先编译后存储在数据库中,并能通过应用程序调用使其在数据库服务器上直接运行.他可用于表中插入数据,修改数据,执行系统函数等,在看过了书本中的相光介绍后,也能照着书上创建存储过程,并在本数据库中创建了dt_delete_student以及dt_delete_teacher俩个存储过程,对其认识有了本质的区别;而触发器是一种特殊的,附在某个基本表上的存储过程,他可用来保证记录的插入,修改和删除时能够执行与该基本表有关的特定操作,一般用来维护数据的一致性,经过对书上例子的理解,我也在Report_wq表上实现了一个在插入成绩时作用的触发器
5.在本系统中我用到的数据较少,不能全面的应证系统的功能,因为这些数据都是手工一条条输入到表中的,我本来也想用Excel进行数据的导入的,不过试了几次就是不成功,也不知错在那里,所以也就放弃了,这也就导致了我的数据库数据较少,只能少量进行测试,从而不能全面的应证系统的功能,但通过我的那些数据,系统还是能正常且正确的运行的
6.规范化和完善在数据建模阶段,我通过使用规范化技术来消除实体间的某种类型的不必要的依赖性。
通过规范化数据库,以减少存储的冗余数据量,减轻数据维护工作,减少存储的要求,大大提
高数据库完整性
(二)系统实现中遇到的问题,解决的办法
1.在系统实现中,我主要采用C#实现代码,这也主要是这学期学习C#,而在此次大型实验中主要遇到的首先是C#对其数据库的链接,通过对C#书的学习,解决了这个问题,而且在连上了之后,可在C#系统中可视化的对其数据库的表进行操作,还可直接进行对视图的制作,本人觉得相当方便
2.其次就是对数据库用C#语句对表中数据进行操作,最主要的是System.data.sql以及System.data.sqlClient中的SqlCommamd用于存放SQL语句,SqlDataAdapter用于填充SqlDataSet,而SqlDataSet存放着SQL语句查询出来的数据
(三)系统实现中的心得及体会
1.通过这次大型实验,我对数据库的设计及实现有了进一步的理解,毕竟理论上的跟实际做起来还是有一定差距的,也真正的理解了设计E_R图时所付出的努力,更主要的是进行优化时的艰辛
2.也具体的接触了数据库设计及实现时的各个步骤,也对其有了较深的理解,最重要的是理解了上课是没真正讲到过的存储过程及触发器,也可自己用SQL创建它们
3.通过这次大型实验,也对C#的使用有了进一步的认识,尤其是使用它的俩个命名空间System.data.sql以及System.data.sqlClient对数据库进行操作
八.参考资料
C#大学教程,数据库原理及应用,C#案例开发集锦
九.使用说明
1.首先将数据库中的文件通过企业管理器将数据库导入到你的数据库中
2.之后用你SQL中的用户名及密码进行登入,之后就可按上面所述进行操作了
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高校 成绩管理系统 数据库 设计 实现