高校成绩管理系统数据库设计与实现.doc_第1页
高校成绩管理系统数据库设计与实现.doc_第2页
高校成绩管理系统数据库设计与实现.doc_第3页
高校成绩管理系统数据库设计与实现.doc_第4页
高校成绩管理系统数据库设计与实现.doc_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

高校成绩管理系统数据库设计与实现 一. 数据库需求分析(1). 基本目的以SQL SERVER数据库管理系统为平台,通过设计数据库概念模型、逻辑模型以及利用标准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_no2. 在表Course_wq中建立了按(课程编号wq)升序的唯一索引 course_no3. 在表Student_wq 中建立了按(学号wq)升序的唯一索引 student_no4. 在表Teacher_wq中建立了按(教师编号wq)升序的唯一索引teacher_no(2) 分区索引设计的本质是确定数据库的存放位置,其目的是提高性能. 在本系统中由于我的数据库较小,所以也没对其进行设计,就将数据库存放在安装SQL Server 分区上 五.数据库实施 所谓数据库的实施,就是根据数据库的逻辑结构设计和物理结构设计的结果,在具体RDBMS支持的计算机系统上建立实际的数据库模式,装入数据,并进行测试和试运行的过程(1)数据库的建立 这主要是在企业管理器中实现的,结果如下: (2)数据库中各张表的实现1.表 Class_wq的实现 SQL语句: CREATE TABLE Class_wq ( 班级编号wq varchar (50) NOT NULL , 班级名称wq varchar (50) NOT NULL ,专业名wq varchar (50) NOT NULL PRIMARY KEY(班级编号wq) 2.表 Course_wq的实现 SQL语句: CREATE TABLE Course_wq ( 课程编号wq char (50) NOT NULL , 课程名称wq char (50) NULL , 任课教师wq char (50) NULL , 开课学期wq char (50) NULL , 学时wq char (50) NULL , 考试类型wq char (50) NULL , 学分wq char (50) NULL PRIMARY KEY(课程编号wq) 3.表 OpenCourse_wq的实现 SQL语句: CREATE TABLE OpenCourse_wq (课程编号wq char (50) NOT NULL ,班级编号wq varchar (50) NOT NULL ,开课学期wq char (50) NULL ,教师编号wq char (50) NOT NULL PRIMARY KEY(课程编号wq, 班级编号wq, 教师编号wq) 4表 Report_wq的实现 SQL语句: CREATE TABLE Report_wq ( 学号wq char (50) NOT NULL , 课程编号wq char (50) NOT NULL , 成绩wq float NULL , 任课教师wq char (50) NULL , 开课学期wq char (50) NULL PRIMARY KEY(学号wq, 课程编号wq) 5.表 Student_wq的实现 SQL语句: CREATE TABLE Student_wq ( 学号wq char (50) NOT NULL , 姓名wq char (50) NULL , 性别wq char (50) NULL , 年龄wq char (50) NULL , 生源地wq char (50) NULL , 已修学分wq char (50) NULL , 班级编号wq char (50) NULL ,PRIMARY KEY(学号wq) 6.表 Teacher_wq的实现 SQL语句: CREATE TABLE Teacher_wq (教师编号wq char (50) NOT NULL ,姓名wq char (50) ,性别wq char (50) ,年龄wq char (50) ,职称wq char (50) ,联系电话wq char (50) PRIMARY KEY(教师编号wq) (3) 数据库中索引的实现1. 在表Class_wq中的唯一索引class_noSQL语句: create unique index class_no on Class_wq(班级编号wq) 运行结果如下: 2. 在表Course_wq中的唯一索引course_wqSQL语句: create unique index course_no on Course_wq(课程编号wq) 运行结果如下: 3. 在表Student_wq 中唯一索引 student_noSQL语句: create unique index student_no on Student_wq(学号wq) 运行结果如下: 4.在表Teacher_wq中的唯一索引teacher_noSQL语句:create unique index teacher_no on Teacher_wq(教师编号wq)运行结果如下: (4) 数据库中视图的实现 1.视图avgGrade_wq用于平均成绩的查询SQL语句: CREATE VIEW avgGrade_wqASSELECT Report_wq.课程编号wq, dCourse_wq.课程名称wq, Report_wq.成绩wq FROM dbo.Course_wq INNER JOINReport_wq ON Course_wq.课程编号wq = Report_wq.课程编号wq 2.视图classCourse_wq用于班级开设课程查询 SQL语句: CREATE VIEW classCourse_wqASSELECT OpenCourse_wq.班级编号wq, Course_wq.课程名称wq, Course_wq.任课教师wq, OpenCourse_wq.开课学期wq FROM Course_wq INNER JOIN OpenCourse_wq ON Course_wq.课程编号wq = OpenCourse_wq.课程编号wq 3.sCourseGrade_wq用于学生课程成绩查询 SQL语句: CREATE VIEW sCourseGrade_wqASSELECT Student_wq.学号wq, Course_wq.课程名称wq, Course_wq.学分wqFROM Course_wq INNER JOIN Report_wq ON Course_wq.课程编号wq =Report_wq.课程编号wq INNER JOIN Student_wq ON .Report_wq.学号wq = Student_wq.学号wq 4.sGE_wq用于学生成绩修改SQL语句:CREATE VIEW sGE_wqASSELECT Report_wq.学号wq, Report_wq.课程编号wq, Report_wq.成绩wq, Report_wq.任课教师wq,Report_wq.开课学期wq, Student_wq.班级编号wqFROM Report_wq INNER JOINStudent_wq ON Report_wq.学号wq = Student_wq.学号wq 5.studentGrade_wq用于学生成绩的查询SQL语句: CREATE VIEW studentGrade_wqASSELECT Report_wq.学号wq, Course_wq.课程名称wq, Report_wq.成绩wq, Course_wq.开课学期wqFROM Course_wq INNER JOIN Report_wq ON Course_wq课程编号wq = Report_wq.课程编号wq 6.studentInF_wq 用于学生信息的查询 SQL语句: CREATE VIEW studentInF_wqASSELECT Class_wq.班级名称wq, Class_wq.专业名wq, Student_wq.学号wq, Student_wq.性别wq, Student_wq.姓名wq FROM Class_wq INNER JOIN Student_wq ON Class_wq.班级编号wq = Student_wq.班级编号wq 7.teacherCourse_wq用于教师自己开设课程的查询 SQL语句: CREATE VIEW teacherCourse_wqASSELECT Course_wq.课程名称wq, Course_wq.任课教师wq, Course_wq.开课学期wq,Teacher_wq.教师编号wqFROM Course_wq INNER JOIN Teacher_wq ON Course_wq.任课教师wq = Teacher_wq.姓名wq它们的结果如下所示: (5) 数据库中存储过程的实现1. 存储过程dt_delete_student的实现SQL语句: CREATE PROCEDURE dt_delete_studentmax_credit char AS delete from Student_wq where 已修学分wqmax_credit2. 存储过程dt_delete_teacher的实现SQL语句: CREATE PROCEDURE dt_delete_teacher max_year char ASdelete from Teacher_wq where 年龄wqmax_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.接着就是相关表的级联设计,可能时自己对SQL SERVER 了解的较少吧,开始真的不知道得怎么搞,后来问了同学后才知道它是相当的简单的,只要在企业管理器中创建关系图中加入相应的表,再将他们的主键相关联就行了,对于这一点,我觉的自己收益良多 4.在创建存储过程和触发器时也遇到了一些问题,最开始主要是对它们不太了解-存储过程是一个SQL 语句的集合,他们经预先编译后存储在数据库中,并能通过应用程序调用使其在数据库服务器上直接运行.他可用于表中插入数据,修改数据,执行系统函数等,在看过了书本中的相光介绍后,也能照着书上创建存储过程,并在本数据库中创建了dt_delete_student以及dt_delete_teacher俩个存储过程,对其认识有了本质的区别; 而触发器是一种特殊的,附在某个基本表上的存储过程,他可用来保证记录的插入,修改和删除时能够执行与该基本表有关的特定操作,一般用来维护数据的一致性,经过对书上例子的理解,我也在Report_wq表上实现了一个在插入成绩时作用的触发器 5.在本系统中我用到的数据较少,不能全面的应证系统的功能,因为这些数据都是手工一条条输入到表中的,我本来

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论