【2】简单考试系统开发-技术选型及数据结构

技术选型

因为本人长期从事JAVA开发,技术选型肯定是用JAVA方向的,使用当前比较流行的SpringBoot+MyBatisPlus+Redis+MySQL,因为比较简单,就做成单项目,方便演示部署。
后续如果大家有需要,可以进行模块划分、做成微服务、添加服务治理、增加接口网关、负载等等,以满足较大规模的并发访问。

后端技术

  • SpringBoot 整体框架/接口通讯等
  • MyBatisPlus 使用代码生成器轻松实现CRUD,只写业务逻辑即可
  • Redis 简单使用保存用户会话
  • MySQL 数据库

前端技术

  • Vue / vue-element-admin
    题主前端不怎么好,简单使用vue-element-admin作为前端框架,也封装了比较多的可用组件,基本能满足需求了。

系统功能

【2】简单考试系统开发-技术选型及数据结构

数据库设计

设计思想

数据库的设计、主要是考虑如何去生成试卷、考试完成后如何判卷并实时展示考试结果,并且要考虑性到能问题;

考试开始,通过考试规则从题库中复制题目到试卷中(其中包含了主要信息、是否正确项等),考试完成后直接比对用户答案并写入结果,计算分数时累计正确项的分数即可。

此设计会导致试卷产生比较多的数据,占用数据库容量较大;但是优点是阅卷性能较高、答案随机排列、考试过程中不受题库中试卷变化的影响等等!

数据字典


表名:el_course
说明:课程

参数 类型 描述 非空
id varchar(64) ID
code varchar(255) 课程编码
name varchar(255) 课程名称
content varchar(255) 课程描述
state int(11) 课程状态
rule_id varchar(64) 考试规则ID
create_time datetime 创建时间
update_time datetime 更新时间

表名:el_course_ware
说明:课件

参数 类型 描述 非空
id varchar(64) ID
course_id varchar(64) 课程ID
ori_file_name varchar(255) 显示文件名
ext varchar(255) 文件后缀
full_path varchar(255) 文件完整路径
need_learn int(11) 要求学习时长
create_time datetime 创建时间
update_time datetime 更新时间

表名:el_paper
说明:试卷

参数 类型 描述 非空
id varchar(64) 试卷ID
user_id varchar(64) 用户ID
rule_id varchar(64) 规则ID
course_id varchar(32) 课程ID
title varchar(64) 试卷标题
total_time int(11) 考试时长
user_time int(11) 用户时长
total_score int(11) 试卷总分
qualify_score int(11) 及格线
user_score int(11) 用户得分
state int(11) 试卷状态
create_time datetime 创建时间
update_time datetime 更新时间

表名:el_paper_qu
说明:试卷考题

参数 类型 描述 非空
id varchar(64) ID
paper_id varchar(64) 试卷ID
qu_id varchar(64) 题目ID
qu_type int(11) 题目类型
answered tinyint(3) 是否已答
sort int(11) 问题排序
score int(11) 单题分分值
is_right tinyint(3) 是否答对

表名:el_paper_qu_ansr
说明:试卷考题备选答案

参数 类型 描述 非空
id varchar(64) 自增ID
paper_id varchar(64) 试卷ID
ansr_id varchar(32) 回答项ID
qu_id varchar(32) 题目ID
is_right tinyint(11) 是否正确项
checked tinyint(11) 是否选中
sort int(11) 排序
abc varchar(64) 选项标签

表名:el_paper_rule
说明:试卷规则

参数 类型 描述 非空
id varchar(64) 规则编号
title varchar(255) 规则名称
total_score int(11) 总分
total_time int(65) 时长(分钟)
remark varchar(255) 备注信息
code varchar(64) 规则编号
state int(11) 状态
qualify_score int(11) 合格分数线

表名:el_paper_rule_repo
说明:规则题库

参数 类型 描述 非空
id varchar(64) ID
rule_id varchar(64) 规则ID
repo_id varchar(64) 题库ID
radio_count int(11) 单选题数量
radio_score int(11) 单选题分数
multi_count int(11) 多选题数量
multi_score int(11) 多选题分数

表名:el_qu
说明:问题题目

参数 类型 描述 非空
id varchar(64) 题目ID
qu_type int(11) 题目类型
content varchar(2000) 题目内容
create_time datetime 创建时间
update_time datetime 更新时间
remark varchar(255) 题目备注
analysis varchar(2000) 整题解析

表名:el_qu_ansr
说明:候选答案

参数 类型 描述 非空
id varchar(64) 答案ID
qu_id varchar(64) 问题ID
is_right tinyint(3) 是否正确
content varchar(5000) 答案内容
analysis varchar(5000) 答案分析

表名:el_qu_repo
说明:题库

参数 类型 描述 非空
id varchar(64) 题库ID
code varchar(255) 题库编号
title varchar(255) 题库名称
remark varchar(255) 题库备注
create_time datetime 创建时间
update_time datetime 更新时间

表名:el_qu_repo_ref
说明:试题题库

参数 类型 描述 非空
id varchar(64)
qu_id varchar(64) 试题
repo_id varchar(64) 归属题库

表名:el_qu_tag
说明:标签

参数 类型 描述 非空
id varchar(64) ID
tag_type int(11) 标签类型
tag_name varchar(255) 标签名称

表名:el_qu_tag_ref
说明:题目标签

参数 类型 描述 非空
id varchar(64) ID
qu_id varchar(64) 问题
tag_id varchar(64) 标签

表名:el_user_course
说明:用户课程状态

参数 类型 描述 非空
id varchar(32) 自然ID
user_id varchar(32) 用户ID
course_id varchar(32) 课程ID
study_state int(11) 学习状态
exam_state int(11) 考试状态
exam_result int(11) 考试结果
exam_score int(11) 最高分数
create_time datetime 创建时间
update_time datetime 更新时间

表名:el_user_ware
说明:课件阅读记录

参数 类型 描述 非空
id varchar(64) ID
user_id varchar(64) 用户ID
course_id varchar(64) 课程ID
ware_id varchar(64) 课件ID
need_min int(11) 需要分钟
learn_sec int(11) 已读秒数
create_time datetime 创建时间
update_time datetime 更新时间

表名:el_user_wrong_book
说明:错题本

参数 类型 描述 非空
id varchar(64) ID
user_id varchar(64) 用户ID
qu_id varchar(64) 题目ID
create_time datetime 加入时间
update_time datetime 最近错误时间
wrong_count int(11) 错误时间
title varchar(255) 题目标题
sort int(11) 错题序号

表名:sys_config
说明:通用配置

参数 类型 描述 非空
id varchar(32) ID
prepare int(11) 预热时长
rest_start time 休市开始时间
rest_end time 休市结束时间

表名:sys_log
说明:系统日志

参数 类型 描述 非空
id varchar(32) ID
title varchar(255) 日志名称
user_id varchar(32) 用户ID
user_name varchar(32) 用户名称
ip varchar(255) IP地址
ip_region varchar(255) IP归属地
create_time datetime 创建时间
data text 日志明细

表名:sys_role
说明:角色

参数 类型 描述 非空
id varchar(32) 角色ID
role_name varchar(255) 角色名称

表名:sys_user
说明:管理用户

参数 类型 描述 非空
id varchar(32) ID
user_name varchar(255) 用户名
avatar varchar(255) 头像
real_name varchar(255) 真实姓名
password varchar(255) 密码
salt varchar(255) 密码盐
role_ids varchar(500) 角色列表
create_time datetime 创建时间
update_time datetime 更新时间
state int(11) 状态


表名:sys_user_role
说明:用户角色

参数 类型 描述 非空
id varchar(32) ID
user_id varchar(32) 用户ID
role_id varchar(32) 角色ID

项目地址:https://gitee.com/davz/bool-exam
演示地址:http://exam.jeegen.com
QQ号:18365918
微信:a18365918
邮箱:[email protected]