资源描述
数据库设计说明书
--试题库系统
年级
学号
姓名
班级
一、 数据库设计原则
1.系统架构:
本子系统的模块结构如下:
1、在线考试模块。
2、在线练习模块。
a) 传统的试卷读取。
b) 自动组卷。
除了以上主要模块外,还有一些不是重点但是同样重要的模块,包括学生登陆,密码修改,
学生信息维护等等。
2.系统流程分析
在需求分析,总体设计之后,该系统的初步轮廓已经确定,为了实现既定需求,同时综合对系统的安全性,实用性及合理性各方面的考虑,根据软件工程的思想,本系统的流程图如图1-1所示。
2.用例图(在线考试子系统中主要用到了学生用例图):
(1)
(2)
3.试卷内容分类:
1.填空题
2.判断题
3.单选题
4.多选题
5.问答题
4. 设计工具:
SQLServer企业管理器,PowerDesigner ,powerbuilder ,
Visual Basic
二.数据元素定义
1. 教师基本信息表
教师基本信息表存放教师类用户的基本信息。与学生基本信息表不同的是,它不包括成绩字段。具体设计如表2-1所示。
表2-1 Teacher表
字段名称
字段说明
字段类型
字段大小
备注
TeacherID
教师编号
数字
长整型
主关键字
TeacherName
教师姓名
文本
10B
不能为空
TeacherPassword
教师登录口令
文本
20B
不能为空
2.管理员账号表
管理人员账号表主要是为对访问系统的教师及学生类人员的信息进行管理,以维护本系统的正常运行,确保系统的安全性和可靠性而创建的。其字段结构如表2-2所示。
表2-2 Admin表
字段名称
字段说明
字段类型
字段大小
备注
AdministratorID
管理人员编号
数字
长整型
主关键字
AdministratorName
管理人员姓名
文本
10B
不能为空
AdministratorPassword
管理人员口令
文本
20B
不能为空
3. 试卷信息表
每次考试之前,由教师类用户创建本次考试的试卷。相应的试卷信息被保存在试卷信息表中。当学生类用户参加考试时,完成的试卷答案也被保存到试卷信息表中,以备评阅。
在试卷信息表中还保存了试卷评阅结果,其表结构如表2-3所示。
表2-3 QuestionPaper表
字段名称
字段说明
字段类型
字段大小
备注
PaperSerial
试卷中的题目编号
数字
长整型
主关键字
QuestionID
试题原编号
数字
长整型
不能为空
QuestionType
试题类型
数字
字节型
主关键字
UserAnswer
学生答案
备注
Score
该题分值
数字
单精度
小数位数一位
Commence
教师实际判分
数字
单精度
允许空
填空题库信息表: 填空题库信息表用于存储填空题的基本信息,表中各字段功能定义如表2-4所示。
表2-4 Filling表
字段名称
字段说明
字段类型
字段大小
备注
QuestionID
题目编号
数字
长整型
主关键字
Question
题目内容
文本
250B
不能为空
Answer
参考答案
文本
50B
不能为空
Score
题目分值
数字
单精度
小数位数一位,不能为空
TeacherID
出题教师编号
数字
长整型
不能为空
QuesDifficult
难度系数
数字
字节
1:易,2:中,3:难
判断题库信息表: 判断题库信息表用于存储判断题的基本信息,其中为迎合人们的通常习惯,将判断题描述为“对”或“错”两种结果。表中各字段功能定义如表2-5所示。
表2-5 RightOrWrong表
字段名称
字段说明
字段类型
字段大小
备注
QuestionID
题目编号
数字
长整型
主关键字
Question
题目内容
文本
250B
不能为空
Answer
参考答案
文本
对/错
Score
题目分值
数字
单精度
小数位数一位,不能为空
TeacherID
出题教师编号
数字
长整型
不能为空
QuesDifficult
难度系数
数字
字节
1:易,2:中,3:难
单选题库信息表: 单选题类型的题目与填空题不同的是:除问题本身外,应该具有4个可选项,其表定义如表2-6所示。
表2-6 SingleSel表
字段名称
字段说明
字段类型
字段大小
备注
QuestionID
题目编号
数字
长整型
主关键字
Question
题目内容
文本
250B
不能为空
ChoiceA
选项A
文本
50B
ChoiceB
选项B
文本
50B
ChoiceC
选项C
文本
50B
ChoiceD
选项D
文本
50B
Answer
参考答案
文本
10B
A、B、C、D
Score
题目分值
数字
单精度
小数位数一位,不能为空
TeacherID
出题教师编号
数字
长整型
不能为空
QuesDifficult
难度系数
数字
字节
1:易,2:中,3:难
多选题库信息表: 多选题同单选题类似,也包括四个可选项,与其稍微不同的是:多选题的答案包括不只一个选项。表结构如表2-7所示。
表2-7 MultiSel表
字段名称
字段说明
字段类型
字段大小
备注
QuestionID
题目编号
数字
长整型
主关键字
Question
题目内容
文本
250B
不能为空
续表6-4
ChoiceA
选项A
文本
50B
ChoiceB
选项B
文本
50B
ChoiceC
选项C
文本
50B
ChoiceD
选项D
文本
50B
Answer
参考答案
文本
10B
ABCD的组合
Score
题目分值
数字
单精度
小数位数一位,不能为空
TeacherID
出题教师编号
数字
长整型
不能为空
QuesDifficult
难度系数
数字
字节
1:易,2:中,3:难
问答题库信息表: 问答题库信息表存放问答题的基本信息。与填空题不同的是,问答题的答案往往字数较多,故将其定义为支持较长文本的类型。表结构如表2-8所示。
表2-8 EssayQuestion表
字段名称
字段说明
字段类型
字段大小
备注
QuestionID
题目编号
数字
长整型
主关键字
Question
题目内容
文本
250B
不能为空
Answer
参考答案
备注
Score
题目分值
数字
单精度
小数位数一位,不能为空
TeacherID
出题教师编号
数字
长整型
不能为空
QuesDifficult
难度系数
数字
字节
1:易,2:中,3:难
三.命名规范
1.卷类窗体的设计:
本系统将试卷信息定义为一个名为QuestionPaper的类,QuestionPaper类的对象实例Qpaper将提供对试卷创建、试卷修改、答题、评阅等主要功能的支持。
QuestionPaper类方法及说明如表3-1所示。
表3-1 QuestionPaper类方法及说明
方法名称
功能说明
方法名称
功能说明
AddQuestion
向试卷添加题目
GetQID
获取随即问题号,私有方法
Check
评阅试卷
GetQuestion
获取题目内容
Create
创建试卷
GetQuestionID
获取问题编号
DelQuestion
删除试卷中的一个题目
GetType
获取试题类型
GetChoice
获取选择题的各选项
GetUserAnswer
获取用户答案
GetDBRS
获取题库数据集,私有方法
ReportToFile
输出试卷到文件
GetQAnswer
获取问题参考答案
SetAnswer
回答试卷
GetQSerial
获取第n条试题的编号
四.数据库表结构的SQL建表语句
--用户表id 密码 权限 科室
create table users (
id varchar(20) not null,
upwd varchar(20) not null,
uright int,
uroom varchar(20) not null,
uname varchar(8) not null,
constraint PK_user primary key (id)
);
--用户组表组ID 组名
create table ugroup (
ugid int not null,
15
name varchar(20) not null,
constraint PK_ugroup primary key (ugid)
);
--组权限表组ID 菜单tag 权限
create table gright (
ugid int not null,
menu_tag varchar(20) not null,
mright int,
constraint PK_gright primary key (ugid)
);
--学生表id 密码姓名性别年级专业班级
create table students (
stu_id varchar(20) not null,
pwd varchar(20) not null,
name varchar(8) not null,
sex varchar(2),
grade varchar(4) not null,
major varchar(30) not null,
classvarchar(4) not null,
constraint PK_students primary key (stu_id)
);
--课程表id 课程名
create table course (
cid varchar(20) not null,
cname varchar(30) not null,
constraint PK_course primary key (cid)
);
--题型表题型编号,题型,在试卷中的顺序位置
create table styles (
sid int not null,
sname varchar(20) not null,
sorder int not null,
constraint PK_styles primary key(sid)
);
--课程题型关联表课程ID 题型ID
create table course_styles(
cid varchar(20) not null,
16
sid int not null,
constraint PK_course_styles primary key (cid,sid)
);
--学生课程关联表
create table students_course (
stu_id varchar(20) not null,
cid varchar(20) not null,
constraint PK_students_course primary key(stu_id,cid)
);
--题目表id 题目内容课程id 题型id 章节关键词难度添加时间添加人审核审核人
create table questions(
qid int not null,
content text not null,
cid varchar(20) not null,
sid varchar(2) not null,
chapter int not null,
point varchar(50),
qlevel int not null,
add_time datetime not null,
add_user varchar(20) not null,
auditint not null,
auditteacher varchar(20)
constraint PK_questions primary key (qid)
);
--题目附加信息表附加id 附加题标题附加内容
create table extra_questions (
eid int not null,
etitlevarchar(100),
content text not null
constraint PK_extra_questions primary key (eid)
);
--题目-附加信息关联表
create table q_e (
eid int not null,
qid int not null,
constraint PK_e_q primary key (eid,qid)
);
--题目-图片关联表
17
create table p_q (
qid int not null,
pid int not null,
constraint PK_p_q primary key (qid,pid)
);
--答案表
create table answers (
aid int not null,
qid int not null,
optionsname varchar(1) not null,
options varchar(300) not null,
answer int,
constraint PK_answers primary key (aid)
);
--图片列表
create table pics (
pid int not null,
pname varchar(30),
pBlob image,
constraint PK_pics primary key (pid)
);
--试卷列表id,name 考试时间,课程代号,考试与否{0 练习,1 考试},试卷类型,考试方式{0 传统,1
在线},审核,审核人ID,考试与否{0 未考,1 已考
}
create table testpaper_list(
paper_id int not null,
paper_name varchar(50) not null,
paper_time datetime not null,
cid varchar(20) not null,
test int not null,
paper_styles varchar(1),
testway int,
audit int not null,
auditteacher varchar(20) not null,
sysstate nt,
constraint PK_testpaper_list primary key (paper_id)
);
--试卷详细信息
create table testpaper(
paper_id int not null,
18
qid int not null,
q_num int,
qscore int,
constraint PK_testpaper primary key (paper_id,qid)
);
--参加考试学生表试卷Id 学号{0 未考,1 已考,2 作弊}
create table paper_students(
paper_id int not null,
stu_id varchar(20) not null,
stu_state int,
constraint PK_paper_students primary key (paper_id,stu_id)
);
--已考的试卷
create table paper_done (
paper_id int not null,
stu_id varchar(20) not null,
qid int not null,
q_num int,
answer varchar(200) not null,
stu_score int,
grade_teacher varchar(20),
grade_time datetime,
audit_teacher varchar(20),
audit_time datetime,
constraint PK_paper_done primary key (paper_id,stu_id,qid)
);
展开阅读全文