《数据库大型实验-实验报告(共36页).doc》由会员分享,可在线阅读,更多相关《数据库大型实验-实验报告(共36页).doc(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上高校成绩管理系统数据库设计与实现专业班级: 机自1001班 学 号: 3 学生姓名: 胡绍利 1、 需求分析 1.1系统开发意义 随着学校规模的不断扩大,专业,班级,学生的数量急剧增加,有关学生选课的各种信息量也成倍增长,而目前许多高校的学生选课管理荏苒停留在复杂的人工操作上,重复工作较多,工作量大,效率地,因此,迫切需要开发基于互联网的学生信息管系统来提高管理工作的效率。基于这种学生信息管理系统在学生选课的规范管理,科学统计和快速查询方面具有较大的实用意义。它提高了信息的开发性,达到地改善了学生,教师对其最新信息查询的准确性。学生成绩管理系统是一个教育单位不可或缺的
2、部分,它的内容对于学校的决策者和管理者来说都是至关重要的,所以学生成绩管理系统应该能够为用户提供充足的信息和快捷的查询手段,对学生来说可以轻松地查阅自己在校的成绩已经信息等。但是一直以来人们都是靠传统人工的方式管理学生成绩,这种管理方式存在着许多缺点,效率低,保密性差,另外时间一长,将产生大量的文件和数据,这对于查找,更新和维护都带来了不是困难。因此,开发这样的一套成绩管理系统成为很必要的事情。学生成绩管理系统提供了强大学生成绩管理功能,方便系统管理员对学生成绩等信息的添加,修改,删除,查询等操作,同时也方便学生对自己各科成绩的查询学习的必要性。1.2 功能需求 学生成绩管理系统主要提供学生成
3、绩的查询、维护,方便管理的网上的信息查阅平台,学生可以通过该系统查阅与自己相关信息。教师可以通过成绩管理系统查阅学生信息,教师信息、以及自己所执教课程学生成绩的录入。系统管理员可以实现以上的所以功能,还有对学生信息的添加,删除,修改;教师信息的添加,删除,修改;课程信息的添加,删除,修改。具体功能如下:a,管理员模块 主要功能是对每学期课课程信息的添加,修改,删除;教师信息的添加,删除,修改;学生信息的添加,修改,删除;还可以对全体学生信息,教师信息的查询,学生成绩的查询以及自己登陆密码的修改等。b,教师模块 主要功能是对自己教课程进行成绩的录入,还有对全体学生信息,教师部分信息的查询,学生成
4、绩的查询以及自己登陆密码的修改等。c,学生模块 主要功能是对自己信息的查询,每学期成绩的查询,自己已修课程和学分的查询,登陆密码修改等。1.3 环境配置需求 系统运行环境: (1)硬件环境:键盘、鼠标、显示器 (2)软件环境:windows操作系统, Microsoft SQL sever 2008 , iis6.0 , Macromedia Dreamweaver 8 b.适合用户: 适合各类中等学校对中学生成绩事务管理。 c.系统模块化设计: 本系统遵循了“自顶向下,逐层展开”结构化时间原则,系统功能按模块化实现,各模块之间既关联又相互独立,每个模块执行特定的功能,系统设计操作简单,可读性
5、强。 d.系统实用性: 为了提高系统效率,系统提供了多种形式的对话框,并在设计过程中考虑尽量减少用户的输入。为了提高查询效率,系统提供了多种组合查询。 e.系统安全性: 为了防止非法人员进入系统,造成意外破坏,在进入本系统之前,需经过密码认证,同时,系统管理员对每个用户的使用权限进行设置,使不至于越权操作。 学生成绩管理系统1.4 数据需求描述 登录管理员模块教师模块学生模块已修学分及课程查询密码修改成绩查询课程信息维护密码修改公共查询教师课程查询学生成绩维护教师信息维护学生信息维护公共查询密码修改教师授课信息查询全体学生成绩查询按地区学生成绩查询以上各模块的作用分别是:1) 对于学生用户,通
6、过登录进入到管理系统,学生界面有密码修改,成绩查询三个选项等。点击修改密码,则进入修改密码界面,该界面上已有学生的用户名和旧密码,学生只需输入新密码,点击修改,则可修改成功。点击成绩查询,则可进入成绩查询界面,通过输入学期,则可查询该学期的各门课程成绩情况。学生的选课是通过班级课程的安排设置的,所以没有特别的选择,即可认为学生的选课由班级决定,这在管理员基本功能中实现。2) 对于教师用户,通过登录进入到管理系统,教师界面有密码修改,学生成绩的维护,教师课程查询,公共查询页面。密码修改功能与学生用户一样。点击进入学生成绩的维护界面,教师可以通过添加按钮,修改按钮,删除按钮对学生成绩进行基本的添加
7、,修改和删除。点击进入教师课程查询,教师可以查询到自己所教学生的成绩以及成绩的基本统计;对于公共查询,教师可以对学生基本信息,教师基本信息的查询。教师还可以通过在按地区查询学生信息界面输入地区名字查询该地区的学生信息。3) 对于管理员用户,通过登录进入到管理系统。管理员界面也设置了三个选择方向,基本功能有密码修改,学生信息的维护,教师信息的维护,公共查询,课程信息的维护。密码修改同前两种用户一致。三种信息的维护则是通过添加按钮输入相应的新的信息,修改按钮修改已有选中信息,以及删除按钮删除选择信息。公共查询与教师界面的公共查询一样。2、 概念结构设计2.1、设计各个局部E-R图 班级编号学号学生
8、姓名年龄出生地性别已修学分教师编号教师姓名教师性别职称教师年龄教师电话教师课程编号课程姓名开课学期学分教师编号课程类型课程学时学生成绩学生学号学期课程名称成绩教师编号班级班级编号班级名称专业 2.2、合并出统一的全局E-R 班级编号学生课程班级教师学生成绩学号学生姓名学生性别学生年龄生源所在地已修学分学号学期课程编号成绩教师编号课程编号教师编号课程名称开课学期课程类型学分教授属于开设上课班级编号班级名称所属院校所属专业教师编号教师姓名教师性别教师年龄职称教师电话1nnmmnnmmn 3、逻辑结构设计3.1、E-R图向关系模式转换,定义实体型和属性及其联系。 课程(课程编号,课程名称,教师编号,
9、开课学期,学时,课程类型,学分)教师(教师编号,教师姓名,性别,年龄,职称,电话)学生(学号,姓名,班级编号,性别,年龄,生源地,已修学分)学生成绩(学号,课程号,学期,成绩,教师编号)班级(班级编号,名称,所属专业)3.2、数据字典描述A数据字典是系统中各类数据描述的集合,是进行详细的数据收集和数据分析所获得的主要成果,数据字典是对系统所用到的所有表结构的描述,学生成绩管理系统的主要数据见下表。班级信息表序号字段别名数据类型长度约束条件主键1班级编号HSL班级号Char20Y2班级名称HSL班级名称Char20N3专业HSL专业Char20N学生信息表序号字段别名数据类型长度约束条件主键1学
10、号HSL学号Char20Y2姓名HSL姓名Char 20N3性别HSL性别Char 2男 or 女N4年龄HSL年龄Int 0And 0N7班级编号HSL班级编号Char 20N教师信息表序号字段别名数据类型长度约束条件主键1教师编号HSL教师编号Char20Y2教师姓名HSL教师姓名Char20N3教师性别HSL教师性别Char2男 or 女N4教师年龄HSL教师年龄Char20 0And0N6课程类型HSL课程类型Char20考查 or 考试N7学时HSL学时Int0N学生成绩信息表序号字段别名数据类型长度约束条件主键1学生学号HSL学生学号Char20Y2课程编号HSL课程编号Char2
11、0Y3学期HSL学期CHAR20N4成绩HSL成绩Int0N5教师编号HSL教师编号Char20NB 数据结构数据结构反映了数据之间的组合关系。一个数据结构可以由若干个数据项组成,也可以由若干个数据结构组成,或若干个数据项和数据结构混合组成。经过数据项和用户需求的分析,我对本系统一共分了5个组,具体如下表所示:数据结构名含义说明组成部分学生基本信息这是学生成绩管理系统的主要数据结构,定义一个学生的基本信息学号,姓名,班级,性别,年龄,生源地,已修学分教师基本信息这是学生成绩管理系统的主要数据结构,定义一个老师的基本信息教师编号,姓名,性别,年龄,职称,电话课程基本信息这是学生成绩管理系统的主要
12、数据结构,描述课程的相关信息,老师的授课信息,以及班级学生的选课信息课程编号,课程名称,教师编号,开课学期,学分,课程类型,学时学生成绩管理描述学生相关课程的成绩情况学生学号,课程编号,学期,教师编号,成绩3.3 关系模式的优化:规范化处理,模式的评价与修正优化全局E-R模式的几个原则:1) 实体型的合并。这里的合并不是指公共实体型的局部E-R模式合并,而是指两个有联系的实体型的合并。2) 冗余属性的消除。通常在各个局部E-R模式中式不允许冗余属性存在的,但在合并为全局E-R模式后,可能产生全局范围内的冗余属性。3) 冗余联系的消除。由于上述关系模式都为BCNF,因此不需要对他们进行规范化了。
13、4、物理结构设计4.1 聚簇设计聚簇是将有关的数据元组集中存放于一个物理块内或若干相邻物理块内或同一柱面内,以提高查询效率的数据存储结构。聚簇设计就是根据用户需求确定每个关系是否需要建立聚簇,如果需要,则应确定在该关系的哪些属性列上建立聚簇。一般在遇到以下一些特定情况时才考虑对一个关系建立聚簇:a,当对一个关系的某些属性列的访问时该关系的主要应用,而对其他属性的访问很少或是次要应用时,可以考虑对该关系在这些属性列上建立聚簇b,如果一个关系在某些属性列上的值重复率很高,则可以考虑对该关系在这些组属性列上建立聚簇。c,如果一个关系一旦装入数据,某些属性列的值很少修改,也很少增加或删除元组,则可以考
14、虑对该关系对该关系在这些组属性列上建立聚簇。基于以上要求,该成绩管理系统可建立的聚簇索引有:学生(学生号)教师(教师号)课程(课程号)事实上,SQL在建表的过程中已经相应地在各个表中建立了聚簇索引。4.2 索引设计索引也是按照关系的某些属性列建立的,它与聚簇的不同之处在于,当索引属性列发生变化,或增加,删除元组时,只有索引发生变化,而关系中原先得元组的存放位置不受影响。此外,每个关系只能建立一个聚簇,但却可以同时建立多个索引。对于一个确定的关系,通常在下列情况下可以考虑建立索引:a,在在主属性列和外键属性列上通常都可以分别建立索引,不仅有助于唯一性检测和完整性检查,而且可以加快连接查询的速度b
15、,以查询为主的关系可以建立尽可能多的索引。c,对等值连接,但满足条件的元组较少的查询可考虑建立索引。d,如果查询可以从索引直接得到结果而不必访问关系,则对此种查询可建立索引。例如,为查询某个属性的MIN,MAX,AVG,SUM,COUNT等函数值,可在该属性列上建立索引。根据以上要求,本关系的课程表,学生表,教师表分别按照课程号,学号,教师编号的升序建立索引。4.3 分区设计磁盘分区设计的一般原则:(1) 减少访问冲突,提高I/O并发性。多个事物并发访问同一磁盘时,会产生磁盘访问冲突而导致效率低下,如果事务访问数据均能分布于不同磁盘上,则I/O可并发执行,从而提高数据库访问速度。(2) 分散热
16、点数据,均衡I/O负担。在数据库中数据访问的频率是不均匀的,那些经常被访问的数据成为热点数据,此类数据宜分散存在于不同的磁盘上,以均衡各个磁盘的负荷,充分发挥多磁盘的并行操作的优势。(3) 保证关键数据快速访问,缓解系统瓶颈。在数据库中有些数据如数据字典等的访问频率很高,为保证对它的访问不直接影响整个系统的效率,可以将其存放在某一固定磁盘上,以保证其快速访问。该成绩管理系统由于程序较小,所以不进行分区设计。统一储存在F盘:/数据库大型实验。5、 数据库实施5.1基本表的建立数据库D01hushaoli的建立基本表 班级HSL 的建立create table 班级HSL(班级编号HSL CHAR
17、(20) PRIMARY KEY,班级名称HSL CHAR(20) NOT NULL,专业HSL CHAR(20) NOT NULL)基本表 学生HSL的建立create table 学生HSL(学号HSL char(20) PRIMARY KEY,姓名HSL char(20) NOT NULL,性别HSL char(2) check (性别hsl = 男 or 性别hsl = 女) NOT NULL,年龄HSL int check(年龄hsl 0 and 年龄hsl 0 AND 教师年龄HSL 100),教师职称HSL CHAR(20),教师电话HSL char(20)基本表 课程HSL 的
18、建立create table 课程HSL(课程编号HSL CHAR(20) PRIMARY KEY,课程名称HSL CHAR(20) NOT NULL,教师编号HSL CHAR(20) NOT NULL,开课学期HSL CHAR(20) NOT NULL,课程类型HSL CHAR(20) CHECK(课程类型HSL = 考试 or 课程类型HSL = 考查) NOT NULL,学分HSL INT ,CONSTRAINT FK_老师_课程 foreign key (教师编号HSL) REFERENCES 教师HSL)基本表 学生成绩HSL 的建立CREATE TABLE 学生成绩HSL(学生学号
19、HSL CHAR(20) NOT NULL,课程编号HSL CHAR(20) NOT NULL,学期HSL CHAR(20) NOT NULL,成绩HSL FLOAT ,教师编号HSL CHAR(20) NOT NULL,PRIMARY KEY (学生学号HSL,课程编号HSL),CONSTRAINT FK_学生成绩_课程 FOREIGN KEY (课程编号HSL) REFERENCES 课程HSL,CONSTRAINT FK_学生成绩_学生 FOREIGN KEY (学生学号HSL) REFERENCES 学生HSL,CONSTRAINT FK_学生成绩_教师 FOREIGN KEY (教师
20、编号HSL) REFERENCES 教师HSL)基本表 开课HSL 的建立create table 开课HSL(班级编号HSL CHAR(20),课程编号HSL CHAR(20) PRIMARY KEY,CONSTRAINT FK_开课_班级 FOREIGN KEY(班级编号HSL) REFERENCES 班级HSL,CONSTRAINT FK_开课_课程 FOREIGN KEY(课程编号HSL) REFERENCES 课程HSL)5.2视图的建立 视图 学生成绩统计HSL 的创建create view学生成绩统计HSLAS SELECT 学生HSL.学号HSL,学生HSL.姓名HSL,课程H
21、SL.课程编号HSL,课程HSL.课程名称HSL,学生成绩HSL.学期HSL,学生成绩HSL.成绩HSLFROM 学生HSL,课程HSL,学生成绩HSLWHERE 学生HSL.学号HSL = 学生成绩HSL.学生学号HSL AND 课程HSL.课程编号HSL =学生成绩HSL.课程编号HSL视图 每门课平均成绩统计HSL 的创建create view 课程平均成绩HSLAS SELECT 学生成绩HSL.课程编号HSL,AVG(学生成绩HSL.成绩HSL) 平均成绩HSLFROM 学生成绩HSLGROUP BY 学生成绩HSL.课程编号HSL视图 学生所学课程及学分统计HSL 的创建creat
22、e view 学生所学课程及学分统计HSLasselect 学生成绩HSL.学生学号HSL,学生成绩HSL.课程编号HSL,课程HSL.学分HSLFROM 学生成绩HSL,课程HSLWHERE 学生成绩HSL.课程编号HSL = 课程HSL.课程编号HSL教师任课查询HSL的建立CREATE VIEW 教师任课查询HSLASSELECT 教师HSL.教师编号HSL,教师HSL.教师姓名HSL,课程HSL.课程名称HSL,课程HSL.开课学期HSL,课程HSL.课程类型HSLFROM 教师HSL,课程HSLWHERE 教师HSL.教师编号HSL = 课程HSL.教师编号HSL视图 班级开设课程
23、的建立create view 班级开设课程HSLasselect 班级HSL.班级编号HSL,班级HSL.班级名称HSL,课程HSL.课程名称HSLFROM 开课HSL,课程HSL,班级HSLWHERE 班级HSL.班级编号HSL = 开课HSL.班级编号HSL and 开课HSL.课程编号HSL = 课程HSL.课程名称HSL5.3索引的建立CREATE UNIQUE INDEX 学生HSL_学号HSL ON 学生HSL(学号HSL)CREATE UNIQUE INDEX 教师HSL_教师编号HSL ON 教师HSL(教师编号HSL)CREATE UNIQUE INDEX 班级HSL_班级编
24、号HSL ON 班级HSL(班级编号HSL)CREATE UNIQUE INDEX 课程HSL_课程编号HSL ON 课程HSL(课程编号HSL)5.4触发器的建立1使用自定义完整性实验中的学生成绩HSL表。为此表建立触发器UPD_学生成绩HSL,当插入或使更新表中的数据时,保证所操作的纪录的学生成绩成绩HSL值为0到100之间的数。CREATE TRIGGER UPD_学生成绩HSL ON 学生成绩HSLFOR INSERT,UPDATE AS IF( SELECT 成绩HSL FROM INSERTED) 100BEGIN PRINT 学生成绩必须是零到一百之间的数!操作失败ROLLBAC
25、K TRANSACTIONEND2.使用自定义完整性实验中的课程表。为此表建立触发器学分HSL,当插入或使更新表中的数据时,保证所操作的纪录的学生成绩课程 学分HSL 大于0的数。CREATE TRIGGER 学分HSL ON 课程HSLFOR INSERT,UPDATE AS IF( SELECT 学分HSL FROM INSERTED) 0 BEGIN PRINT 学分必须大于零的数!操作失败ROLLBACK TRANSACTIONEND5.5存储过程的建立创建一个存储过程(insertResult)添加学生成绩,要求输入(学号,课程名,分数) 如果输入的学号不存在,则提示“学生基本信息表
26、中不存在此学号,请检查后重新输入”,如果输入的课程不存在,则提示“还没有这门课程,请检查后重新输入”,最后添加成绩,若成功,则显示成绩添加成功。建立存储过程如下:CREATE PROCEDURE InsertResult(学号HSL char(20), 课程编号HSL char(20), 学生成绩HSL float )ASSET NOCOUNT ONDECLARE nCount int SET nCount=0DECLARE nCourse int SET nCourse=0DECLARE nExistAchievement int SET nExistAchievement=0SELECT
27、nCount=COUNT(学号HSL)FROM 学生HSLWHERE 学生HSL.学号HSL=学号HSLIF nCount1BEGINPRINT学生基本信息表中不存在此学号,请检查后重新输入RETURNENDSELECT nCourse=COUNT(课程编号HSL)FROM 课程HSLWHERE 课程HSL.课程编号HSL=课程编号HSLIF nCourse1BEGINPRINT还没有这门课程,请检查后重新输入RETURNENDUPDATE学生成绩HSLSET 学生成绩HSL.成绩HSL=学生成绩HSLWHERE 学生成绩HSL.学生学号HSL=学号HSLPRINT成绩添加成功5.6数据维护6
28、、 应用系统开发与试运行 6.1开发平台和开发环境介绍(1)硬件环境:键盘、鼠标、显示器、打印机(2)软件环境:windows操作系统、 Microsoft SQL Sever2008 iis6.0 , Macromedia Dreamweaver 86.2前台界面与后台数据库连接说明,代码实现 6.3 系统各功能设计和运行界面截图6.3.1 登录主界面6.3.2 修改密码页面6.3.3 管理员主界面6.3.4 学生维护界面6.3.5教师维护页面6.3.6班级维护页面6.3.7 公共查询(教师 和 管理用户)6.3.8 教师任课查询6.3.9 所有学生成绩查询页面6.3.10 按地区成绩查询6
29、.3.11教师主界面6.3.12学生成绩维护6.3.13 成绩输入1先选择教师具体哪门课程要输入成绩2在输入具体成绩6.3.14 教师任课查询6.3.15学生登录主界面6.3.16个人成绩查询页面6.3.17已修学分查询7、 实验中遇到的问题,解决的办法和体会7.1遇到的问题以及解决方案在利用vb做成绩管理系统的界面时,因为第一次接触vb,对这些知识一窍不通,所以是边学便用,碰到了很多问题,后来熟悉了就顺畅了。还有开始时用户sa无法正常登录。因为在sql中没有设置相应权限,通过在sql中的修改解决。7.2 系统设计的不足安全性不够,窗口看起来比较简陋,查询功能不强。数据冗余较多,没用很好的系统性。7.3 进一步改进思路和体会如果进一步改进的话,我想应该要完善一下数据设置,更多的减少数据的冗余,而且登录的安全性和界面的美观可以改善一下。 通过这次的实验,我觉得我们在拿到一个项目时,就必须要清楚我们要做什么,我们要在实验前需要准备什么。就像这次,我刚看到实验要求时就不知道要做些什么,因为只对数据库比较熟悉,而对于vb等用来实现系统界面的语言很陌生,导致我开始时糊涂了一阵子。后来着手学习vb后才顺畅起来。而且我知道了实验是要边学边做,积极求教才能真正顺利完成的。专心-专注-专业
限制150内