当前位置:文档之家› 网上学习系统数据库课程设计

网上学习系统数据库课程设计

课程设计课程名称____数据库系统概论____ 题目名称____网上学习系统______ 学生学院_______计算机_________ 专业班级_ _学号___________学生姓名_______ _________指导教师_______左亚尧_________ 2012年1 月9 日目录一、课程设计目的 (1)二、系统定义 (1)三、需求分析 (1)四、系统设计 (3)五、详细设计 (6)六、课程设计总结 (13)七、附录 (13)一、课程设计目的学习使用某个RDBMS,利用合适的应用系统开发工具为某个应用背景设计和开发一个数据库应用系统。

学习数据库原理及应用目的就是能创建和管理一个真实的数据库,通过规划设计一个小型数据库系统。

掌握数据库规划设计的基本技术,熟悉数据库的设计的基本方法和步骤,明白数据库设计各阶段的任务,加深对数据库系统概念和特点的理解。

二、系统定义随着识识经济的到来,我们的学习模式受到了前所未有的冲击,各种新的学习模式如潮水般涌现,在所有学习模式中,最具有冲击力的便是随着网络技术发展而出现的网络化学习,又称网上学习,它是通过在网上建立教育平台,学员应用网络进行在线学习的一种全新方式。

这种在线学习方式是由多媒体网络学习资源、网上学习社区及网络技术平台构成的全新的学习环境。

相对于其他的学习模式来说,它具有无可比拟的优势。

网上学习的一个好处就是不受时间、地点、空间的限制,并且可以实现和现实当中一样的互动。

管理员可以随时随地更换系统中的学习资料,并且管理学生信息,学生可以对系统中的内容进行学习,还可以进行自我测试,学生可以查看自己的成绩。

三、需求分析(一)系统综合需求从总体上考虑,系统的任务是实现学生在网上进行学习。

主要分为以下功能:1、对管理员来说,包括考生管理、题库管理、成绩管理。

1)考生管理:管理员可以查看数据库中的学生信息和添加新学生。

2)题库管理:管理员可以对题库中的试题进行三种基本操作:添加新的学习资料、删除旧有学习资料、修改原有学习资料;另外对于测试的题目,管理员也可以有同样的操作。

3)成绩管理:管理员可以查看学生的测试成绩。

2、对学生来说,包括网上学习、自我测试和查询测试成绩。

1)网上学习:可以查看系统当前有的学习资料。

2)自我测试:学生可以进行自我检查,考察自己当前的学习情况。

3)查询测试成绩:学生可以查询自己测试之后的成绩。

(二)系统逻辑模型1、数据流程图根据根据系统功能的要求,可将系统分为下列几个模块2、数据字典该系统的数据库由下述6张数据表组成:管理员表:Administrator列名数据类型约束编号Char(10) 主键姓名Char(10) 非空密码Char(10) 非空学生表:Student列名数据类型约束学号Char(10) 主键姓名Char(10) 非空密码Char(10) 非空主修科目编号Char(10) 外键、非空性别Char(10) 非空列名数据类型约束科目编号Char(10) 主键科目名Char(10) 非空列名数据类型约束题目编号int 主键所属科目编号Char(10) 外键内容Char(50) 非空考试题目表:Questions成绩表:Score四、系统设计(一)数据库概念设计分析前面的系统功能要求,需要一个表来存储管理员的信息,另外,还需要一个表来存储和管理学生信息,使系统能够接受学生原始的各项数据,以实现数据录入、查询或统计学生信息等功能。

为了能实现查询和统计学生的学习和测试情况等功能,必须有一个表来存储和管理题库的信息。

此外,还需要一个表来存储题目所属的科目信息,及科目类别,学生的测试成绩信息也需要一个表来存储和管理。

据此可以绘出系统数据库的E-R图如下:实体属性列表如下:实体属性管理员编号姓名密码学生学号姓名密码主修科目性别科目类别科目编号科目名称(二)数据库的逻辑设计将数据库的概念模型转换为关系模型:实体转换成的关系模式有:管理员(编号,姓名,密码)学生(学号,姓名,密码,主修科目,性别)科目类别(科目编号,科目名称)学习题库(题目编号,所属科目,内容,难度)测试题库(题目编号,所属科目,题干,选项A,选项B,选项C,答案,分数)成绩(学号,分数)(三)数据库与数据表设计——物理结构设计1、数据库与数据表设计:管理员表:其中,编号是主码,唯一标识一个管理员。

科目类别表:科目编号是主码,用来唯一标识每门课。

学生表:学号是主码,用来标识每一个学生,主修课目编号是外键,与科目类别表的主码(科目编号)关联。

学习题库表:题目编号是主码,用来唯一标识每一道题目。

其中,所属科目编号是外键,与科目类别表的主键相关联。

测试题库表:成绩表:2、数据完整性约束1)每一个表都有一个主键,用来唯一标识每一个元组。

管理员表:主键编号,此项非空学生表:主键学号,此项非空科目类别表:主键科目编号,此项非空学习题库表:主键题目编号,此项非空测试题库表:主键题目编号,此项非空2)实施CHECK约束学生表中建立一个检查约束,即学生性别不是‘男’就是‘女’CHECK(性别 IN('男','女')成绩表中建立一个对于分数的检查约束,即分数在0-100之间check (成绩>=0 and 成绩<=100)3)外键约束学生表中主修课目为外键。

学习题库和测试题库中所属科目编号为外键。

FOREIGN KEY(主修科目编号)REFERENCES Course (科目编号) FOREIGN KEY (所属科目编号)REFERENCES Course (科目编号)五、详细设计1、建立数据库USE masterGOCREATE DATABASE课程设计ON primaryNAME= sc,FILENAME='e:\DataBase\课程设计.mdf',SIZE= 10,FILEGROWTH= 10%)LOG ON(NAME= Sc_log,FILENAME='e:\DataBase\课程设计.ldf',SIZE= 3MB,FILEGROWTH= 1MB)2、建表CREATE TABLE Administrator(编号char(10) PRIMARY KEY,姓名char(10)NOT NULL,密码char(10)NOT NULL);CREATE TABLE Course(科目编号char(10) PRIMARY KEY,科目名称char(10)NOT NULL);CREATE TABLE Student(学号char(10)PRIMARY KEY,姓名char(10)NOT NULL,密码char(10)NOT NULL,主修科目编号char(10)NOT NULL, --外键性别char(10)CHECK (性别IN ('男','女')), --CHECK约束FOREIGN KEY(主修科目编号)REFERENCES Course (科目编号) );CREATE TABLE Topic(题目编号int PRIMARY KEY,所属科目编号char(10), --外键内容char(50)NOT NULL,难度char(10)NOT NULL,FOREIGN KEY (所属科目编号)REFERENCES Course (科目编号) );CREATE TABLE Questions(编号int PRIMARY KEY,所属科目编号char(10), --外键题干char(50)NOT NULL,选项A char(10)NOT NULL,选项B char(10)NOT NULL,选项C char(10)NOT NULL,答案char(10)NOT NULL,分值int NOT NULL,FOREIGN KEY(所属科目编号)REFERENCES Course (科目编号) );CREATE TABLE Score(学号char(10)PRIMARY KEY,成绩int CHECK(成绩>=0 AND成绩<=100) --CHECK约束);3、插入信息:1)插入管理员信息INSERTINTO Administrator (编号,姓名,密码)V ALUES('10000','admit','admit');2)插入科目信息INSERTINTO Course (科目编号,科目名称)V ALUES('100','高数');INSERTINTO Course (科目编号,科目名称)V ALUES('101','大英');INSERTINTO Course (科目编号,科目名称)V ALUES('102','大物');INSERTINTO Course (科目编号,科目名称)V ALUES('103','计算机');3)插入学生信息INSERTINTO Student (学号,姓名,密码,主修科目编号,性别)V ALUES('3110006214','杨广富','3110006214','100','男');INSERTINTO Student (学号,姓名,密码,主修科目编号,性别)V ALUES('3110006215','杨浩涛','3110006215','101','男');INSERTINTO Student (学号,姓名,密码,主修科目编号,性别)V ALUES('3110006216','叶显青','3110006216','102','男');INSERTINTO Student (学号,姓名,密码,主修科目编号,性别)V ALUES('3110006217','袁德诚','3110006217','103','男');4)插入题目信息INSERTINTO Topic (题目编号,所属科目编号,内容,难度)V ALUES('1','100','1+1=2','A');INSERTINTO Topic (题目编号,所属科目编号,内容,难度)V ALUES('2','101','You are a student.','B');INSERTINTO Topic (题目编号,所属科目编号,内容,难度)V ALUES('3','102','电梯上升时人会感到超重。

相关主题