毕业设计数据库 网上学习系统.docx
- 文档编号:23672159
- 上传时间:2023-05-19
- 格式:DOCX
- 页数:20
- 大小:135.66KB
毕业设计数据库 网上学习系统.docx
《毕业设计数据库 网上学习系统.docx》由会员分享,可在线阅读,更多相关《毕业设计数据库 网上学习系统.docx(20页珍藏版)》请在冰豆网上搜索。
毕业设计数据库网上学习系统
课程设计
课程名称____数据库系统概论____
题目名称____网上学习系统______
学生学院_______计算机_________
专业班级_
学号_________
学生姓名_______________
指导教师_______左亚尧_________
2012年1月9日
目录
1、课程设计目的………………………………………………………1
2、系统定义……………………………………………………………1
三、需求分析…………………………………………………………….1
四、系统设计…………………………………………………………….3
五、详细设计……………………………………………………………6
六、课程设计总结………………………………………………………13
七、附录…………………………………………………………………13
一、课程设计目的
学习使用某个RDBMS,利用合适的应用系统开发工具为某个应用背景设计和开发一个数据库应用系统。
学习数据库原理及应用目的就是能创建和管理一个真实的数据库,通过规划设计一个小型数据库系统。
掌握数据库规划设计的基本技术,熟悉数据库的设计的基本方法和步骤,明白数据库设计各阶段的任务,加深对数据库系统概念和特点的理解。
二、系统定义
随着识识经济的到来,我们的学习模式受到了前所未有的冲击,各种新的学习模式如潮水般涌现,在所有学习模式中,最具有冲击力的便是随着网络技术发展而出现的网络化学习,又称网上学习,它是通过在网上建立教育平台,学员应用网络进行在线学习的一种全新方式。
这种在线学习方式是由多媒体网络学习资源、网上学习社区及网络技术平台构成的全新的学习环境。
相对于其他的学习模式来说,它具有无可比拟的优势。
网上学习的一个好处就是不受时间、地点、空间的限制,并且可以实现和现实当中一样的互动。
管理员可以随时随地更换系统中的学习资料,并且管理学生信息,学生可以对系统中的内容进行学习,还可以进行自我测试,学生可以查看自己的成绩。
3、需求分析
(一)系统综合需求
从总体上考虑,系统的任务是实现学生在网上进行学习。
主要分为以下功能:
1、对管理员来说,包括考生管理、题库管理、成绩管理。
1)考生管理:
管理员可以查看数据库中的学生信息和添加新学生。
2)题库管理:
管理员可以对题库中的试题进行三种基本操作:
添加新的学习资料、删除旧有学习资料、修改原有学习资料;另外对于测试的题目,管理员也可以有同样的操作。
3)成绩管理:
管理员可以查看学生的测试成绩。
2、对学生来说,包括网上学习、自我测试和查询测试成绩。
1)网上学习:
可以查看系统当前有的学习资料。
2)自我测试:
学生可以进行自我检查,考察自己当前的学习情况。
3)查询测试成绩:
学生可以查询自己测试之后的成绩。
(2)系统逻辑模型
1、数据流程图
根据根据系统功能的要求,可将系统分为下列几个模块
2、数据字典
该系统的数据库由下述6张数据表组成:
管理员表:
Administrator
列名
数据类型
约束
编号
Char(10)
主键
姓名
Char(10)
非空
密码
Char(10)
非空
学生表:
Student
列名
数据类型
约束
学号
Char(10)
主键
姓名
Char(10)
非空
密码
Char(10)
非空
主修科目编号
Char(10)
外键、非空
性别
Char(10)
非空
科目类别表:
Course
列名
数据类型
约束
科目编号
Char(10)
主键
科目名
Char(10)
非空
题库表:
Topic
列名
数据类型
约束
题目编号
int
主键
所属科目编号
Char(10)
外键
内容
Char(50)
非空
难度
Char(10)
非空
考试题目表:
Questions
列名
数据类型
约束
编号
int
主键
所属科目编号
Char(10)
外键
题干
Char(50)
非空
选项A
Char(10)
非空
选项B
Char(10)
非空
选项C
Char(10)
非空
正确答案
Char(10)
非空
分值
int
非空
成绩表:
Score
列名
数据类型
约束
学号
Char(10)
主键
成绩
int
4、系统设计
(1)数据库概念设计
分析前面的系统功能要求,需要一个表来存储管理员的信息,另外,还需要一个表来存储和管理学生信息,使系统能够接受学生原始的各项数据,以实现数据录入、查询或统计学生信息等功能。
为了能实现查询和统计学生的学习和测试情况等功能,必须有一个表来存储和管理题库的信息。
此外,还需要一个表来存储题目所属的科目信息,及科目类别,学生的测试成绩信息也需要一个表来存储和管理。
据此可以绘出系统数据库的E-R图如下:
实体属性列表如下:
实体
属性
管理员
编号
姓名
密码
学生
学号
姓名
密码
主修科目
性别
科目类别
科目编号
科目名称
(2)数据库的逻辑设计
将数据库的概念模型转换为关系模型:
实体转换成的关系模式有:
管理员(编号,姓名,密码)
学生(学号,姓名,密码,主修科目,性别)
科目类别(科目编号,科目名称)
学习题库(题目编号,所属科目,内容,难度)
测试题库(题目编号,所属科目,题干,选项A,选项B,选项C,答案,分数)
成绩(学号,分数)
(三)数据库与数据表设计——物理结构设计
1、数据库与数据表设计:
管理员表:
其中,编号是主码,唯一标识一个管理员。
科目类别表:
科目编号是主码,用来唯一标识每门课。
学生表:
学号是主码,用来标识每一个学生,主修课目编号是外键,与科目类别表的主码(科目编号)关联。
学习题库表:
题目编号是主码,用来唯一标识每一道题目。
其中,所属科目编号是外键,与科目类别表的主键相关联。
测试题库表:
成绩表:
2、数据完整性约束
1)每一个表都有一个主键,用来唯一标识每一个元组。
管理员表:
主键编号,此项非空
学生表:
主键学号,此项非空
科目类别表:
主键科目编号,此项非空
学习题库表:
主键题目编号,此项非空
测试题库表:
主键题目编号,此项非空
2)实施CHECK约束
学生表中建立一个检查约束,即学生性别不是‘男’就是‘女’
CHECK(性别IN('男','女')
成绩表中建立一个对于分数的检查约束,即分数在0-100之间
check(成绩>=0and成绩<=100)
3)外键约束
学生表中主修课目为外键。
学习题库和测试题库中所属科目编号为外键。
FOREIGNKEY(主修科目编号)REFERENCESCourse(科目编号)
FOREIGNKEY(所属科目编号)REFERENCESCourse(科目编号)
5、详细设计
1、建立数据库
USEmaster
GO
CREATEDATABASE课程设计
ONprimary
(
NAME=sc,
FILENAME='e:
\DataBase\课程设计.mdf',
SIZE=10,
FILEGROWTH=10%)
LOGON
(
NAME=Sc_log,
FILENAME='e:
\DataBase\课程设计.ldf',
SIZE=3MB,
FILEGROWTH=1MB)
2、建表
CREATETABLEAdministrator
(
编号char(10)PRIMARYKEY,
姓名char(10)NOTNULL,
密码char(10)NOTNULL
);
CREATETABLECourse
(
科目编号char(10)PRIMARYKEY,
科目名称char(10)NOTNULL
);
CREATETABLEStudent
(
学号char(10)PRIMARYKEY,
姓名char(10)NOTNULL,
密码char(10)NOTNULL,
主修科目编号char(10)NOTNULL,--外键
性别char(10)CHECK(性别IN('男','女')),--CHECK约束
FOREIGNKEY(主修科目编号)REFERENCESCourse(科目编号)
);
CREATETABLETopic
(
题目编号intPRIMARYKEY,
所属科目编号char(10),--外键
内容char(50)NOTNULL,
难度char(10)NOTNULL,
FOREIGNKEY(所属科目编号)REFERENCESCourse(科目编号)
);
CREATETABLEQuestions
(
编号intPRIMARYKEY,
所属科目编号char(10),--外键
题干char(50)NOTNULL,
选项Achar(10)NOTNULL,
选项Bchar(10)NOTNULL,
选项Cchar(10)NOTNULL,
答案char(10)NOTNULL,
分值intNOTNULL,
FOREIGNKEY(所属科目编号)REFERENCESCourse(科目编号)
);
CREATETABLEScore
(
学号char(10)PRIMARYKEY,
成绩intCHECK(成绩>=0AND成绩<=100)--CHECK约束
);
3、插入信息:
1)插入管理员信息
INSERT
INTOAdministrator(编号,姓名,密码)
VALUES('10000','admit','admit');
2)插入科目信息
INSERT
INTOCourse(科目编号,科目名称)
VALUES('100','高数');
INSERT
INTOCourse(科目编号,科目名称)
VALUES('101','大英');
INSERT
INTOCourse(科目编号,科目名称)
VALUES('102','大物');
INSERT
INTOCourse(科目编号,科目名称)
VALUES('103','计算机');
3)插入学生信息
INSERT
INTOStudent(学号,姓名,密码,主修科目编号,性别)
VALUES('3110006214','杨广富','3110006214','100','男');
INSERT
INTOStudent(学号,姓名,密码,主修科目编号,性别)
VALUES('3110006215','杨浩涛','3110006215','101','男');
INSERT
INTOStudent(学号,姓名,密码,主修科目编号,性别)
VALUES('3110006216','叶显青','3110006216','102','男');
INSERT
INTOStudent(学号,姓名,密码,主修科目编号,性别)
VALUES('3110006217','袁德诚','3110006217','103','男');
4)插入题目信息
INSERT
INTOTopic(题目编号,所属科目编号,内容,难度)
VALUES('1','100','1+1=2','A');
INSERT
INTOTopic(题目编号,所属科目编号,内容,难度)
VALUES('2','101','Youareastudent.','B');
INSERT
INTOTopic(题目编号,所属科目编号,内容,难度)
VALUES('3','102','电梯上升时人会感到超重。
','C');
INSERT
INTOTopic(题目编号,所属科目编号,内容,难度)
VALUES('4','103','第一台计算机是年诞生的。
','D');
5)插入考试题目信息
INSERT
INTOQuestions(编号,所属科目编号,题干,选项A,选项B,选项C,答案,分值)
VALUES('1','100','1+1=?
','1','2','3','B','25');
INSERT
INTOQuestions(编号,所属科目编号,题干,选项A,选项B,选项C,答案,分值)
VALUES('2','101','Youarea?
','student','teacher','master','A','25');
INSERT
INTOQuestions(编号,所属科目编号,题干,选项A,选项B,选项C,答案,分值)
VALUES('3','102','电梯上升时会感到?
','失重','正常','超重','C','25');
INSERT
INTOQuestions(编号,所属科目编号,题干,选项A,选项B,选项C,答案,分值)
VALUES('4','103','第一台计算机是哪一年诞生的?
','1921','1946','1949','B','25');
6)插入成绩信息
INSERT
INTOScore(学号,成绩)
VALUES('3110006215','10');
4、建立视图
建立一个视图查询学生的成绩:
CREATEVIEW学生_成绩
AS
SELECTStudent.姓名,Score.*
FROMStudent,Score
WHEREStudent.学号=Score.学号
5、触发器
在系统中建立了两个触发器,一个是当有新的同学添加到系统时,会输出“欢迎新同学的到来”。
另一个是当成绩出来后,不允许修改成绩。
1)
CreateTriggerT1
OnStudent
forinsert
as
print'欢迎新同学的到来!
'
INSERT
INTOStudent(学号,姓名,密码,主修科目编号,性别)
VALUES('3110006215','杨浩涛','3110006215','101','男');
2)
CreateTriggerT2
OnScore
ForUpdate
As
IfUpdate(Score)
Begin
Print'成绩不允许修改!
'
Rollback
End
UPDATEScoreSET成绩='100'WHERE学号='3110006215'
6、建立存储过程
建立一个存储过程输入一个成绩得到该成绩的所有学生的信息:
CREATEProcedurelist_Student_info
@成绩int
AS
SELECT*
FROMStudent,Score
WHEREScore.成绩=@成绩ANDStudent.学号=Score.学号;
EXEClist_Student_info'100';
7、维护和运行
1)关系图的建立:
2)简单查询
①查询所有的学习题目:
select*fromTopic
②查询测试过的学生的姓名,性别,主修科目和成绩:
selectStudent.姓名,Student.性别,Course.科目名称,Score.成绩
fromStudent,Course,Score
whereStudent.学号=Score.学号
ANDStudent.主修科目编号=Course.科目编号
③查询成绩高于或等于50分的学生姓名、性别和成绩:
selectStudent.姓名,Student.性别,Score.成绩
fromStudent,Score
whereStudent.学号=Score.学号
ANDScore.成绩>=50;
6、课程设计总结
经过这一周的时间,从安装数据库到完成课程设计,整个流程下来给我的感触很多,收获也很多。
因为之前都是在实验室里完成的实验,而且对于实验的内容在实验指导书都几乎写清楚了,只需要按照它的步骤一步一步完成就行了。
但是课程设计不一样,它要一个更高的层次,在选完题目之后,要自己设计一个数据库,要靠自己从无到有创建出来。
从开始做课程设计之后,本以为会很简单就完成,但是在找完资料后安装数据库的过程中就出现了许多问题,在查找了更多的资料和与同学交流后终于成功地安装了。
后来在开始设计数据库的时候也遇到很多问题,在需求分析那里我觉得是花时间最多的一个环节,因为要设计一个好的数据库要有一个好的开始。
在后面的设计过程中,完成了一些基本的操作,完成了对数据的增、删、查、改的基本功能。
在系统中,可以添加和查看学生基本信息。
另外,管理员还可以对学习题库和测试题库进行修改,删除,增加和查看的基本操作。
除此之外,系统还设有触发器和一些复杂的查询能。
总之,经过这次课程设计之后,我感觉收获到很多东西,不仅仅是学习上和能力上的,同时也让我锻炼到和其他同学的沟通和交流上,增进了我们彼此间的感情。
同时,对于数据库的了解也更深了一层,我觉得数据库是一门很有趣的学科,怎样设计一个好的数据库需要有足够缜密的想法和深厚的功底,在今后的学习中,我会更加努力学好专业知识。
7、附录
部分源代码
更改数据:
USE课程设计
GO
UPDATEStudentSET主修课程标号='104'WHERE学号='3110006214'
UPDATEStudentSET主修课程标号='103'WHERE学号='3110006215'
UPDATEStudentSET主修课程标号='102'WHERE学号='3110006216'
UPDATEStudentSET主修课程标号='101'WHERE学号='3110006217'
删除数据:
USE课程设计
GO
DELETEFROMStudentWHERE学号='3110006215';
建立统计不及格情况的视图
USE课程设计
GO
CREATEVIEWfail_student_view
AS
SELECTStudent.学号,姓名
FROMStudent,Score
WHEREstudent.学号=Score.学号ANDScore.成绩<60;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业设计数据库 网上学习系统 毕业设计 数据库 网上 学习 系统