数据库大型实验实验报告.docx
《数据库大型实验实验报告.docx》由会员分享,可在线阅读,更多相关《数据库大型实验实验报告.docx(40页珍藏版)》请在冰豆网上搜索。
![数据库大型实验实验报告.docx](https://file1.bdocx.com/fileroot1/2023-3/19/a68a1e5d-6063-493e-b047-54edc1026b14/a68a1e5d-6063-493e-b047-54edc1026b141.gif)
数据库大型实验实验报告
高校成绩管理系统数据库设计与实现
专业班级:
机自1001班
学号:
************
*************************************
1、需求分析
1.1系统开发意义
随着学校规模的不断扩大,专业,班级,学生的数量急剧增加,有关学生选课的各种信息量也成倍增长,而目前许多高校的学生选课管理荏苒停留在复杂的人工操作上,重复工作较多,工作量大,效率地,因此,迫切需要开发基于互联网的学生信息管系统来提高管理工作的效率。
基于这种学生信息管理系统在学生选课的规范管理,科学统计和快速查询方面具有较大的实用意义。
它提高了信息的开发性,达到地改善了学生,教师对其最新信息查询的准确性。
学生成绩管理系统是一个教育单位不可或缺的部分,它的内容对于学校的决策者和管理者来说都是至关重要的,所以学生成绩管理系统应该能够为用户提供充足的信息和快捷的查询手段,对学生来说可以轻松地查阅自己在校的成绩已经信息等。
但是一直以来人们都是靠传统人工的方式管理学生成绩,这种管理方式存在着许多缺点,效率低,保密性差,另外时间一长,将产生大量的文件和数据,这对于查找,更新和维护都带来了不是困难。
因此,开发这样的一套成绩管理系统成为很必要的事情。
学生成绩管理系统提供了强大学生成绩管理功能,方便系统管理员对学生成绩等信息的添加,修改,删除,查询等操作,同时也方便学生对自己各科成绩的查询学习的必要性。
1.2功能需求
学生成绩管理系统主要提供学生成绩的查询、维护,方便管理的网上的信息查阅平台,学生可以通过该系统查阅与自己相关信息。
教师可以通过成绩管理系统查阅学生信息,教师信息、以及自己所执教课程学生成绩的录入。
系统管理员可以实现以上的所以功能,还有对学生信息的添加,删除,修改;教师信息的添加,删除,修改;课程信息的添加,删除,修改。
具体功能如下:
a,管理员模块
主要功能是对每学期课课程信息的添加,修改,删除;教师信息的添加,删除,修改;学生信息的添加,修改,删除;还可以对全体学生信息,教师信息的查询,学生成绩的查询以及自己登陆密码的修改等。
b,教师模块
主要功能是对自己教课程进行成绩的录入,还有对全体学生信息,教师部分信息的查询,学生成绩的查询以及自己登陆密码的修改等。
c,学生模块
主要功能是对自己信息的查询,每学期成绩的查询,自己已修课程和学分的查询,登陆密码修改等。
1.3环境配置需求
系统运行环境:
(1)硬件环境:
键盘、鼠标、显示器
(2)软件环境:
windows操作系统,MicrosoftSQLsever2008,iis6.0,MacromediaDreamweaver8
b.适合用户:
适合各类中等学校对中学生成绩事务管理。
c.系统模块化设计:
本系统遵循了“自顶向下,逐层展开”结构化时间原则,系统功能按模块化实现,各模块之间既关联又相互独立,每个模块执行特定的功能,系统设计操作简单,可读性强。
d.系统实用性:
为了提高系统效率,系统提供了多种形式的对话框,并在设计过程中考虑尽量减少用户的输入。
为了提高查询效率,系统提供了多种组合查询。
e.系统安全性:
为了防止非法人员进入系统,造成意外破坏,在进入本系统之前,需经过密码认证,同时,系统管理员对每个用户的使用权限进行设置,使不至于越权操作。
1.4数据需求描述
以上各模块的作用分别是:
1)对于学生用户,通过登录进入到管理系统,学生界面有密码修改,成绩查询三个选项等。
点击修改密码,则进入修改密码界面,该界面上已有学生的用户名和旧密码,学生只需输入新密码,点击修改,则可修改成功。
点击成绩查询,则可进入成绩查询界面,通过输入学期,则可查询该学期的各门课程成绩情况。
学生的选课是通过班级课程的安排设置的,所以没有特别的选择,即可认为学生的选课由班级决定,这在管理员基本功能中实现。
2)对于教师用户,通过登录进入到管理系统,教师界面有密码修改,学生成绩的维护,教师课程查询,公共查询页面。
密码修改功能与学生用户一样。
点击进入学生成绩的维护界面,教师可以通过添加按钮,修改按钮,删除按钮对学生成绩进行基本的添加,修改和删除。
点击进入教师课程查询,教师可以查询到自己所教学生的成绩以及成绩的基本统计;对于公共查询,教师可以对学生基本信息,教师基本信息的查询。
教师还可以通过在按地区查询学生信息界面输入地区名字查询该地区的学生信息。
3)对于管理员用户,通过登录进入到管理系统。
管理员界面也设置了三个选择方向,基本功能有密码修改,学生信息的维护,教师信息的维护,公共查询,课程信息的维护。
密码修改同前两种用户一致。
三种信息的维护则是通过添加按钮输入相应的新的信息,修改按钮修改已有选中信息,以及删除按钮删除选择信息。
公共查询与教师界面的公共查询一样。
2、概念结构设计
2.1、设计各个局部E-R图
2.2、合并出统一的全局E-R
3、逻辑结构设计
3.1、E-R图向关系模式转换,定义实体型和属性及其联系。
课程(课程编号,课程名称,教师编号,开课学期,学时,课程类型,学分)
教师(教师编号,教师姓名,性别,年龄,职称,电话)
学生(学号,姓名,班级编号,性别,年龄,生源地,已修学分)
学生成绩(学号,课程号,学期,成绩,教师编号)
班级(班级编号,名称,所属专业)
3.2、数据字典描述
A.数据字典是系统中各类数据描述的集合,是进行详细的数据收集和数据分析所获得的主要成果,数据字典是对系统所用到的所有表结构的描述,学生成绩管理系统的主要数据见下表。
班级信息表
序号
字段
别名
数据类型
长度
约束条件
主键
1
班级编号HSL
班级号
Char
20
Y
2
班级名称HSL
班级名称
Char
20
N
3
专业
HSL
专业
Char
20
N
学生信息表
序号
字段
别名
数据类型
长度
约束条件
主键
1
学号
HSL
学号
Char
20
Y
2
姓名
HSL
姓名
Char
20
N
3
性别
HSL
性别
Char
2
男or女
N
4
年龄
HSL
年龄
Int
>0
And<100
N
5
出生地
HSL
出生地
Char
20
N
6
已修学分
HSL
已修学分
Int
>0
N
7
班级编号
HSL
班级编号
Char
20
N
教师信息表
序号
字段
别名
数据类型
长度
约束条件
主键
1
教师编号HSL
教师编号
Char
20
Y
2
教师姓名
HSL
教师姓名
Char
20
N
3
教师性别
HSL
教师性别
Char
2
男or女
N
4
教师年龄
HSL
教师年龄
Char
20
>0
And<100
N
5
教师职称
HSL
教师职称
Char
20
N
6
教师电话HSL
教师电话
Char
20
N
课程信息表
序号
字段
别名
数据类型
长度
约束条件
主键
1
课程编号
HSL
课程编号
Char
20
Y
2
课程名称
HSL
课程名称
Char
20
N
3
教师编号
HSL
教师编号
Char
20
N
4
开课学期HSL
开课学期
Char
20
N
5
学分
HSL
学分
Int
>0
N
6
课程类型
HSL
课程类型
Char
20
考查or考试
N
7
学时
HSL
学时
Int
>0
N
学生成绩信息表
序号
字段
别名
数据类型
长度
约束条件
主键
1
学生学号HSL
学生学号
Char
20
Y
2
课程编号
HSL
课程编号
Char
20
Y
3
学期
HSL
学期
CHAR
20
N
4
成绩
HSL
成绩
Int
>0
N
5
教师编号
HSL
教师编号
Char
20
N
B.数据结构
数据结构反映了数据之间的组合关系。
一个数据结构可以由若干个数据项组成,也可以由若干个数据结构组成,或若干个数据项和数据结构混合组成。
经过数据项和用户需求的分析,我对本系统一共分了5个组,具体如下表所示:
数据结构名
含义说明
组成部分
学生基本信息
这是学生成绩管理系统的主要数据结构,定义一个学生的基本信息
学号,姓名,班级,性别,年龄,生源地,已修学分
教师基本信息
这是学生成绩管理系统的主要数据结构,定义一个老师的基本信息
教师编号,姓名,性别,年龄,职称,电话
课程基本信息
这是学生成绩管理系统的主要数据结构,描述课程的相关信息,老师的授课信息,以及班级学生的选课信息
课程编号,课程名称,教师编号,开课学期,学分,课程类型,学时
学生成绩管理
描述学生相关课程的成绩情况
学生学号,课程编号,学期,教师编号,成绩
3.3关系模式的优化:
规范化处理,模式的评价与修正
优化全局E-R模式的几个原则:
1)实体型的合并。
这里的合并不是指"公共实体型"的局部E-R模式合并,而是指两个有联系的实体型的合并。
2)冗余属性的消除。
通常在各个局部E-R模式中式不允许冗余属性存在的,但在合并为全局E-R模式后,可能产生全局范围内的冗余属性。
3)冗余联系的消除。
由于上述关系模式都为BCNF,因此不需要对他们进行规范化了。
4、物理结构设计
4.1聚簇设计
聚簇是将有关的数据元组集中存放于一个物理块内或若干相邻物理块内或同一柱面内,以提高查询效率的数据存储结构。
聚簇设计就是根据用户需求确定每个关系是否需要建立聚簇,如果需要,则应确定在该关系的哪些属性列上建立聚簇。
一般在遇到以下一些特定情况时才考虑对一个关系建立聚簇:
a,当对一个关系的某些属性列的访问时该关系的主要应用,而对其他属性的访问很少或是次要应用时,可以考虑对该关系在这些属性列上建立聚簇
b,如果一个关系在某些属性列上的值重复率很高,则可以考虑对该关系在这些组属性列上建立聚簇。
c,如果一个关系一旦装入数据,某些属性列的值很少修改,也很少增加或删除元组,则可以考虑对该关系对该关系在这些组属性列上建立聚簇。
基于以上要求,该成绩管理系统可建立的聚簇索引有:
学生(学生号)
教师(教师号)
课程(课程号)
事实上,SQL在建表的过程中已经相应地在各个表中建立了聚簇索引。
4.2索引设计
索引也是按照关系的某些属性列建立的,它与聚簇的不同之处在于,当索引属性列发生变化,或增加,删除元组时,只有索引发生变化,而关系中原先得元组的存放位置不受影响。
此外,每个关系只能建立一个聚簇,但却可以同时建立多个索引。
对于一个确定的关系,通常在下列情况下可以考虑建立索引:
a,在在主属性列和外键属性列上通常都可以分别建立索引,不仅有助于唯一性检测和完整性检查,而且可以加快连接查询的速度
b,以查询为主的关系可以建立尽可能多的索引。
c,对等值连接,但满足条件的元组较少的查询可考虑建立索引。
d,如果查询可以从索引直接得到结果而不必访问关系,则对此种查询可建立索引。
例如,为查询某个属性的MIN,MAX,AVG,SUM,COUNT等函数值,可在该属性列上建立索引。
根据以上要求,本关系的课程表,学生表,教师表分别按照课程号,学号,教师编号的升序建立索引。
4.3分区设计
磁盘分区设计的一般原则:
(1)减少访问冲突,提高I/O并发性。
多个事物并发访问同一磁盘时,会产生磁盘访问冲突而导致效率低下,如果事务访问数据均能分布于不同磁盘上,则I/O可并发执行,从而提高数据库访问速度。
(2)分散热点数据,均衡I/O负担。
在数据库中数据访问的频率是不均匀的,那些经常被访问的数据成为热点数据,此类数据宜分散存在于不同的磁盘上,以均衡各个磁盘的负荷,充分发挥多磁盘的并行操作的优势。
(3)保证关键数据快速访问,缓解系统瓶颈。
在数据库中有些数据如数据字典等的访问频率很高,为保证对它的访问不直接影响整个系统的效率,可以将其存放在某一固定磁盘上,以保证其快速访问。
该成绩管理系统由于程序较小,所以不进行分区设计。
统一储存在F盘:
/数据库大型实验。
5、数据库实施
5.1基本表的建立
数据库D01hushaoli的建立
基本表班级HSL的建立
createtable班级HSL
(
班级编号HSLCHAR(20)PRIMARYKEY,
班级名称HSLCHAR(20)NOTNULL,
专业HSLCHAR(20)NOTNULL
)
基本表学生HSL的建立
createtable学生HSL
(
学号HSLchar(20)PRIMARYKEY,
姓名HSLchar(20)NOTNULL,
性别HSLchar
(2)check(性别hsl='男'or性别hsl='女')NOTNULL,
年龄HSLintcheck(年龄hsl>0and年龄hsl<100),
出生地HSLchar(20)NOTNULL,
已修学分HSLint,
班级编号HSLchar(20),
constraintFK_班级_学生foreignkey(班级编号HSL)references班级HSL
)
基本表教师HSL的建立
createtable教师HSL
(
教师编号HSLCHAR(20)PRIMARYKEY,
教师姓名HSLCHAR(20)NOTNULL,
教师性别HSLCHAR
(2)CHECK(教师性别HSL='男'or教师性别HSL='女')NOTNULL,
教师年龄HSLINTCHECK(教师年龄HSL>0AND教师年龄HSL<100),
教师职称HSLCHAR(20),
教师电话HSLchar(20)
)
基本表课程HSL的建立
createtable课程HSL
(
课程编号HSLCHAR(20)PRIMARYKEY,
课程名称HSLCHAR(20)NOTNULL,
教师编号HSLCHAR(20)NOTNULL,
开课学期HSLCHAR(20)NOTNULL,
课程类型HSLCHAR(20)CHECK(课程类型HSL='考试'or课程类型HSL='考查')NOTNULL,
学分HSLINT,
CONSTRAINTFK_老师_课程foreignkey(教师编号HSL)REFERENCES教师HSL
)
基本表学生成绩HSL的建立
CREATETABLE学生成绩HSL
(
学生学号HSLCHAR(20)NOTNULL,
课程编号HSLCHAR(20)NOTNULL,
学期HSLCHAR(20)NOTNULL,
成绩HSLFLOAT,
教师编号HSLCHAR(20)NOTNULL,
PRIMARYKEY(学生学号HSL,课程编号HSL),
CONSTRAINTFK_学生成绩_课程FOREIGNKEY(课程编号HSL)REFERENCES课程HSL,
CONSTRAINTFK_学生成绩_学生FOREIGNKEY(学生学号HSL)REFERENCES学生HSL,
CONSTRAINTFK_学生成绩_教师FOREIGNKEY(教师编号HSL)REFERENCES教师HSL
)
基本表开课HSL的建立
createtable开课HSL
(
班级编号HSLCHAR(20),
课程编号HSLCHAR(20)PRIMARYKEY,
CONSTRAINTFK_开课_班级FOREIGNKEY(班级编号HSL)REFERENCES班级HSL,
CONSTRAINTFK_开课_课程FOREIGNKEY(课程编号HSL)REFERENCES课程HSL
)
5.2视图的建立
视图学生成绩统计HSL的创建
createview学生成绩统计HSL
AS
SELECT学生HSL.学号HSL,学生HSL.姓名HSL,课程HSL.课程编号HSL,
课程HSL.课程名称HSL,学生成绩HSL.学期HSL,学生成绩HSL.成绩HSL
FROM学生HSL,课程HSL,学生成绩HSL
WHERE学生HSL.学号HSL=学生成绩HSL.学生学号HSL
AND课程HSL.课程编号HSL=学生成绩HSL.课程编号HSL
视图每门课平均成绩统计HSL的创建
createview课程平均成绩HSL
AS
SELECT学生成绩HSL.课程编号HSL,AVG(学生成绩HSL.成绩HSL)平均成绩HSL
FROM学生成绩HSL
GROUPBY学生成绩HSL.课程编号HSL
视图学生所学课程及学分统计HSL的创建
createview学生所学课程及学分统计HSL
as
select学生成绩HSL.学生学号HSL,学生成绩HSL.课程编号HSL,课程HSL.学分HSL
FROM学生成绩HSL,课程HSL
WHERE学生成绩HSL.课程编号HSL=课程HSL.课程编号HSL
教师任课查询HSL的建立
CREATEVIEW教师任课查询HSL
AS
SELECT教师HSL.教师编号HSL,教师HSL.教师姓名HSL,课程HSL.课程名称HSL,
课程HSL.开课学期HSL,课程HSL.课程类型HSL
FROM教师HSL,课程HSL
WHERE教师HSL.教师编号HSL=课程HSL.教师编号HSL
视图班级开设课程的建立
createview班级开设课程HSL
as
select班级HSL.班级编号HSL,班级HSL.班级名称HSL,课程HSL.课程名称HSL
FROM开课HSL,课程HSL,班级HSL
WHERE班级HSL.班级编号HSL=开课HSL.班级编号HSL
and开课HSL.课程编号HSL=课程HSL.课程名称HSL
5.3索引的建立
CREATEUNIQUEINDEX学生HSL_学号HSLON学生HSL(学号HSL)
CREATEUNIQUEINDEX教师HSL_教师编号HSLON教师HSL(教师编号HSL)
CREATEUNIQUEINDEX班级HSL_班级编号HSLON班级HSL(班级编号HSL)
CREATEUNIQUEINDEX课程HSL_课程编号HSLON课程HSL(课程编号HSL)
5.4触发器的建立
1使用自定义完整性实验中的学生成绩HSL表。
为此表建立触发器UPD_学生成绩HSL,当插入或使更新表中的数据时,保证所操作的纪录的学生成绩成绩HSL值为0到100之间的数。
CREATETRIGGERUPD_学生成绩HSLON学生成绩HSL
FORINSERT,UPDATE
AS
IF(SELECT成绩HSLFROMINSERTED)<0
OR
(SELECT成绩HSLFROMINSERTED)>100
BEGIN
PRINT'学生成绩必须是零到一百之间的数!
操作失败'
ROLLBACKTRANSACTION
END
2.使用自定义完整性实验中的课程表。
为此表建立触发器学分HSL,当插入或使更新表中的数据时,保证所操作的纪录的学生成绩课程学分HSL大于0的数。
CREATETRIGGER学分HSLON课程HSL
FORINSERT,UPDATE
AS
IF(SELECT学分HSLFROMINSERTED)<0
BEGIN
PRINT'学分必须大于零的数!
操作失败'
ROLLBACKTRANSACTION
END
5.5存储过程的建立
创建一个存储过程(insertResult)添加学生成绩,要求输入(学号,课程名,分数)
如果输入的学号不存在,则提示“学生基本信息表中不存在此学号,请检查后重新输入”,
如果输入的课程不存在,则提示“还没有这门课程,请检查后重新输入”,
最后添加成绩,若成功,则显示"成绩添加成功"。
建立存储过程如下:
CREATEPROCEDUREInsertResult
(@学号HSLchar(20),
@课程编号HSLchar(20),
@学生成绩HSLfloat
)
AS
SETNOCOUNTON
DECLARE@nCountintSET@nCount=0
DECLARE@nCourseintSET@nCourse=0
DECLARE@nExistAchievementintSET@nExistAchievement=0
SELECT@nCount=COUNT(学号HSL)
FROM学生HSL
WHERE学生HSL.学号HSL=@学号HSL
IF@nCount<1
BEGIN
PRINT'学生基本信息表中不存在此学号,请检查后重新输入'
RETURN
END
SELECT@nCourse=COUNT(课程编号HSL)
FROM课程HSL
WHERE课程HSL.课程编号HSL=@课程编号HSL
IF@nCourse<1
BEGIN
PRINT'还没有这门课程,请检查后重新输入'
RETURN
END
UPDATE
学生成绩HSL
SET学生成绩HSL.成绩HSL=@学生成绩HSL
WHERE学生成绩HSL.学生学号HSL=@学号HSL
PRINT'成绩添加成功'
5.6数据维护
6、应用系统开发与试运行
6.1开发平台和开发环境介绍
(1)硬件环境:
键盘、鼠标、显示器、打印机
(2)软件环境:
windows操作系统、MicrosoftSQLSever2008iis6.0,MacromediaDreamweaver8
6.2前台界面与后台数据库连接说明,代码实现
<%
'=========================================================
'File:
conn.asp
'ScriptWrittenby胡绍利
'=========================================================
Dimco