试题库数据库设计.docx
《试题库数据库设计.docx》由会员分享,可在线阅读,更多相关《试题库数据库设计.docx(16页珍藏版)》请在冰豆网上搜索。
试题库数据库设计
数据库设计说明书
--试题库系统
年级
学号
XX
班级
一、数据库设计原则
1.系统架构:
本子系统的模块结构如下:
1、在线考试模块。
2、在线练习模块。
a)传统的试卷读取。
b)自动组卷。
除了以上主要模块外,还有一些不是重点但是同样重要的模块,包括学生登陆,密码修改,
学生信息维护等等。
2.系统流程分析
在需求分析,总体设计之后,该系统的初步轮廓已经确定,为了实现既定需求,同时综合对系统的安全性,实用性与合理性各方面的考虑,根据软件工程的思想,本系统的流程图如图1-1所示。
2.用例图〔在线考试子系统中主要用到了学生用例图〕:
〔1〕
〔2〕
3.试卷内容分类:
1.填空题
2.判断题
3.单选题
4.多选题
5.问答题
4.设计工具:
SQLServer企业管理器,PowerDesigner,powerbuilder,
VisualBasic
二.数据元素定义
1.教师基本信息表
教师基本信息表存放教师类用户的基本信息。
与学生基本信息表不同的是,它不包括成绩字段。
具体设计如表2-1所示。
表2-1Teacher表
字段名称
字段说明
字段类型
字段大小
备注
TeacherID
教师编号
数字
长整型
主关键字
TeacherName
教师XX
文本
10B
不能为空
TeacherPassword
教师登录口令
文本
20B
不能为空
2.管理员账号表
管理人员账号表主要是为对访问系统的教师与学生类人员的信息进行管理,以维护本系统的正常运行,确保系统的安全性和可靠性而创建的。
其字段结构如表2-2所示。
表2-2Admin表
字段名称
字段说明
字段类型
字段大小
备注
AdministratorID
管理人员编号
数字
长整型
主关键字
AdministratorName
管理人员XX
文本
10B
不能为空
AdministratorPassword
管理人员口令
文本
20B
不能为空
3.试卷信息表
每次考试之前,由教师类用户创建本次考试的试卷。
相应的试卷信息被保存在试卷信息表中。
当学生类用户参加考试时,完成的试卷答案也被保存到试卷信息表中,以备评阅。
在试卷信息表中还保存了试卷评阅结果,其表结构如表2-3所示。
表2-3QuestionPaper表
字段名称
字段说明
字段类型
字段大小
备注
PaperSerial
试卷中的题目编号
数字
长整型
主关键字
QuestionID
试题原编号
数字
长整型
不能为空
QuestionType
试题类型
数字
字节型
主关键字
UserAnswer
学生答案
备注
Score
该题分值
数字
单精度
小数位数一位
Commence
教师实际判分
数字
单精度
允许空
填空题库信息表:
填空题库信息表用于存储填空题的基本信息,表中各字段功能定义如表2-4所示。
表2-4Filling表
字段名称
字段说明
字段类型
字段大小
备注
QuestionID
题目编号
数字
长整型
主关键字
Question
题目内容
文本
250B
不能为空
Answer
参考答案
文本
50B
不能为空
Score
题目分值
数字
单精度
小数位数一位,不能为空
TeacherID
出题教师编号
数字
长整型
不能为空
QuesDifficult
难度系数
数字
字节
1:
易,2:
中,3:
难
判断题库信息表:
判断题库信息表用于存储判断题的基本信息,其中为迎合人们的通常习惯,将判断题描述为“对〞或“错〞两种结果。
表中各字段功能定义如表2-5所示。
表2-5RightOrWrong表
字段名称
字段说明
字段类型
字段大小
备注
QuestionID
题目编号
数字
长整型
主关键字
Question
题目内容
文本
250B
不能为空
Answer
参考答案
文本
对/错
Score
题目分值
数字
单精度
小数位数一位,不能为空
TeacherID
出题教师编号
数字
长整型
不能为空
QuesDifficult
难度系数
数字
字节
1:
易,2:
中,3:
难
单选题库信息表:
单选题类型的题目与填空题不同的是:
除问题本身外,应该具有4个可选项,其表定义如表2-6所示。
表2-6SingleSel表
字段名称
字段说明
字段类型
字段大小
备注
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-7MultiSel表
字段名称
字段说明
字段类型
字段大小
备注
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-8EssayQuestion表
字段名称
字段说明
字段类型
字段大小
备注
QuestionID
题目编号
数字
长整型
主关键字
Question
题目内容
文本
250B
不能为空
Answer
参考答案
备注
Score
题目分值
数字
单精度
小数位数一位,不能为空
TeacherID
出题教师编号
数字
长整型
不能为空
QuesDifficult
难度系数
数字
字节
1:
易,2:
中,3:
难
三.命名规X
1.卷类窗体的设计:
本系统将试卷信息定义为一个名为QuestionPaper的类,QuestionPaper类的对象实例Qpaper将提供对试卷创建、试卷修改、答题、评阅等主要功能的支持。
QuestionPaper类方法与说明如表3-1所示。
表3-1QuestionPaper类方法与说明
方法名称
功能说明
方法名称
功能说明
AddQuestion
向试卷添加题目
GetQID
获取随即问题号,私有方法
Check
评阅试卷
GetQuestion
获取题目内容
Create
创建试卷
GetQuestionID
获取问题编号
DelQuestion
删除试卷中的一个题目
GetType
获取试题类型
GetChoice
获取选择题的各选项
GetUserAnswer
获取用户答案
GetDBRS
获取题库数据集,私有方法
ReportToFile
输出试卷到文件
GetQAnswer
获取问题参考答案
SetAnswer
回答试卷
GetQSerial
获取第n条试题的编号
四.数据库表结构的SQL建表语句
--用户表id密码权限科室
createtableusers(
idvarchar(20)notnull,
upwdvarchar(20)notnull,
urightint,
uroomvarchar(20)notnull,
unamevarchar(8)notnull,
constraintPK_userprimarykey(id)
);
--用户组表组ID组名
createtableugroup(
ugidintnotnull,
15
namevarchar(20)notnull,
constraintPK_ugroupprimarykey(ugid)
);
--组权限表组ID菜单tag权限
createtablegright(
ugidintnotnull,
menu_tagvarchar(20)notnull,
mrightint,
constraintPK_grightprimarykey(ugid)
);
--学生表id密码XX性别年级专业班级
createtablestudents(
stu_idvarchar(20)notnull,
pwdvarchar(20)notnull,
namevarchar(8)notnull,
sexvarchar
(2),
gradevarchar(4)notnull,
majorvarchar(30)notnull,
classvarchar(4)notnull,
constraintPK_studentsprimarykey(stu_id)
);
--课程表id课程名
createtablecourse(
cidvarchar(20)notnull,
cnamevarchar(30)notnull,
constraintPK_courseprimarykey(cid)
);
--题型表题型编号,题型,在试卷中的顺序位置
createtablestyles(
sidintnotnull,
snamevarchar(20)notnull,
sorderintnotnull,
constraintPK_stylesprimarykey(sid)
);
--课程题型关联表课程ID题型ID
createtablecourse_styles(
cidvarchar(20)notnull,
16
sidintnotnull,
constraintPK_course_stylesprimarykey(cid,sid)
);
--学生课程关联表
createtablestudents_course(
stu_idvarchar(20)notnull,
cidvarchar(20)notnull,
constraintPK_students_courseprimarykey(stu_id,cid)
);
--题目表id题目内容课程id题型id章节关键词难度添加时间添加人审核审核人
createtablequestions(
qidintnotnull,
contenttextnotnull,
cidvarchar(20)notnull,
sidvarchar
(2)notnull,
chapterintnotnull,
pointvarchar(50),
qlevelintnotnull,
add_timedatetimenotnull,
add_uservarchar(20)notnull,
auditintnotnull,
auditteachervarchar(20)
constraintPK_questionsprimarykey(qid)
);
--题目附加信息表附加id附加题标题附加内容
createtableextra_questions(
eidintnotnull,
etitlevarchar(100),
contenttextnotnull
constraintPK_extra_questionsprimarykey(eid)
);
--题目-附加信息关联表
createtableq_e(
eidintnotnull,
qidintnotnull,
constraintPK_e_qprimarykey(eid,qid)
);
--题目-图片关联表
17
createtablep_q(
qidintnotnull,
pidintnotnull,
constraintPK_p_qprimarykey(qid,pid)
);
--答案表
createtableanswers(
aidintnotnull,
qidintnotnull,
optionsnamevarchar
(1)notnull,
optionsvarchar(300)notnull,
answerint,
constraintPK_answersprimarykey(aid)
);
--图片列表
createtablepics(
pidintnotnull,
pnamevarchar(30),
pBlobimage,
constraintPK_picsprimarykey(pid)
);
--试卷列表id,name考试时间,课程代号,考试与否{0练习,1考试},试卷类型,考试方式{0传统,1
在线},审核,审核人ID,考试与否{0未考,1已考
}
createtabletestpaper_list(
paper_idintnotnull,
paper_namevarchar(50)notnull,
paper_timedatetimenotnull,
cidvarchar(20)notnull,
testintnotnull,
paper_stylesvarchar
(1),
testwayint,
auditintnotnull,
auditteachervarchar(20)notnull,
sysstatent,
constraintPK_testpaper_listprimarykey(paper_id)
);
--试卷详细信息
createtabletestpaper(
paper_idintnotnull,
18
qidintnotnull,
q_numint,
qscoreint,
constraintPK_testpaperprimarykey(paper_id,qid)
);
--参加考试学生表试卷Id学号{0未考,1已考,2作弊}
createtablepaper_students(
paper_idintnotnull,
stu_idvarchar(20)notnull,
stu_stateint,
constraintPK_paper_studentsprimarykey(paper_id,stu_id)
);
--已考的试卷
createtablepaper_done(
paper_idintnotnull,
stu_idvarchar(20)notnull,
qidintnotnull,
q_numint,
answervarchar(200)notnull,
stu_scoreint,
grade_teachervarchar(20),
grade_timedatetime,
audit_teachervarchar(20),
audit_timedatetime,
constraintPK_paper_doneprimarykey(paper_id,stu_id,qid)
);