数据结构试题库设计与实现
这个系统针对的用户是教师和超级管理员
需求分析:
-
信息需求:系统需要知道登录进来教师或者管理员的 id
-
处理需求:
-
查看试题
-
增加试题
选择题,填空题,判断题,简答题,应用题,算法分析题,算法设计题,按章节、知识点、题型分类,并标注难度系数。
对题目和答案中涉及到的图形和表格进行存储和处理。
-
编辑试题
-
删除试题
-
-
安全需求:只有教师和超管才能进入改系统
-
完整性需求:参照完整性,一个教师或者超管对应多个题库和多个试题等
题库管理
按章节分类的话,初始想法把章节单独拿出来做一个表,做成题库管理,题库包括:
- 线性表题库
- 栈和队列题库
- 树与二叉树题库
- 图题库
- 查找题库
- 排序题库
- 之后可能还有算法设计与分析之类的题目,比如贪心,动态规划等,所以单独拿出来做一个题库管理。
题库可以进行增删改查
添加题库时,用户要填题库名和题库描述。
搜索题库可以按照题库名进行搜索
题库管理页面显示 题库名,各个类型题目(选择题,填空题,判断题,简答题,应用题,算法分析题,算法设计题)的数量和创建时间。
试题管理
试题管理页面显示题目类型,题目内容,提交的教师,所属题库,创建时间
添加试题时,用户要填
-
题目类型
-
难度等级 容易,一般,困难
-
归属题库 可以多选,因为一条题可能包含图和队列两个章节的内容
-
题目内容
-
题目整体分析 可选
-
答案
-
如果是单选题,多选,判断给出一个表格填写答案内容和答案解析以及正确答案
-
如果是简答题,应用题,算法分析题,算法设计题
- 将答案拍照放入数据库中,学生在 数据结构在线训练系统中写出的简答题,应用题,算法分析题,算法设计题也一样形成图片存储到数据库中。
-
搜索试题 可以按照题目类型或者归属题库或者题目内容或者教师名字形成动态sql进行搜索。
表的设计
教师/管理员 与 题库 一对多
教师 与 试题 一对多
问题 与 答案 一对多
问题 与 题库 一个题库有多个问题 多对多
系统E-R图如下:
以教师为例
表设计如下
该系统有四张表:
1. 题库表 repository:
参数 | 类型 | 描述 | 非空 |
---|---|---|---|
id | varchar(64) | 题库id | 是 |
user_id | varchar(64) | 教师/超管id | 是 |
title | varchar(255) | 题库标题 | 是 |
remark | varchar(255) | 题库描述 | 否 |
multi_count | int(11) | 多选题数量 | 是 |
judge_count | int(11) | 判断题数量 | 是 |
radio_count | int(11) | 单选题数量 | 是 |
saq_count | int(11) | 简答题数量 | 是 |
applied_count | int(11) | 应用题数量 | 是 |
aap_count | int(11) | 算法分析题数量 | 是 |
adp_count | int(11) | 算法设计题数量 | 是 |
create_time | datetime | 创建时间 | 是 |
update_time | datetime | 更新时间 | 是 |
2. 试题表 question:
参数 | 类型 | 描述 | 非空 |
---|---|---|---|
id | varchar(64) | 试题id | 是 |
user_id | varchar(64) | 教师/超管 id | 是 |
question_type | int(11) | 题目类型,比如1:单选,2:多选 | 是 |
level | int(11) | 难度等级。比如:1 简单,2:普通,3:难 | 是 |
content | varchar(2000) | 题目内容 | 是 |
analysis | varchar(2000) | 整题解析 | 否 |
create_time | datetime | 创建时间 | 是 |
update_time | datetime | 更新时间 | 是 |
由于题库和试题是多对多的关系,把这个关系拿出来单独做一个表
3. 试题题库表 qu_repo
参数 | 类型 | 描述 | 非空 |
---|---|---|---|
id | varchar(64) | 试题题库id | 是 |
qu_id | varchar(64) | 试题id | 是 |
repo_id | varchar(64) | 试题归属题库id | 是 |
qu_type | int(11) | 题目类型 | 是 |
这里有题目类型,主要是可以不通过 repository表、qu_repo表和question表连表查询而直接通过 repository表和qu_repo表连表查询更新各个试题的数量,减少查询时间。
4. 试题答案表 qu_answer
参数 | 类型 | 描述 | 非空 |
---|---|---|---|
id | varchar(64) | 答案id | 是 |
qu_id | varchar(64) | 试题id | 是 |
is_right | tinyint(3) | 是否正确 0错误 1正确 | 是 |
1_content | varchar(5000) | 答案内容(单选,多选,判断) | 是 |
analysis | varchar(5000) | 答案分析 | 否 |
2_content | MEDIUMBLOB | 答案内容(简答题,应用题,算法分析题,算法设计题) | 是 |
MEDIUMBLOB可以存储16MB以下的图片。