英语四六级考试系统+爬虫获取试题的系统(数据库设计)的开发思路

曾经开发过的一个四六级模拟考试系统,分享一下开发的部分思路以及数据库设计

     一个通过爬虫爬取到的试题聚合成在线模拟考试系统:通过JavaEE语言设计,利用网络爬虫技术Jsoup爬取网络上各大英语四六级学习网站的数据,聚合数据到本系统并以简洁的界面展示出来,为用户提供学习四六级资源的检索和模拟四六级考试的练习。
      系统分为几大模块:系统管理模块、爬虫聚合试题模块、考试试题学习模块、在线模拟考试模块。其中,核心在线模拟考试和爬取聚合试题模块,爬取模块有两种聚合数据方式:第一种是统一爬取页面的听力、作文、翻译等页面,然后获取标题页面列表和超链接,再爬取标题超链接的页面主要内容 ,数据保存在Tomcat服务器硬盘上,第二种爬取方式是分类爬取试题的作文题、完形填空题、翻译题、阅读题等题目,保存到数据库表上。

框架:SpringMVC+Mybatis的web项目框架

系统流程图

英语四六级考试系统+爬虫获取试题的系统(数据库设计)的开发思路_第1张图片


Lucence开放源代码的全文检索引擎工具包,提供完整的查询引擎和索引引擎,在传统全文检索引擎的倒排索引的基础上,实现了分块索引,能够针对新的文件建立小文件索引,提升索引速度。


数据库设计

  1. 一份英语试卷只要由作文题、听力题、完形填空题、阅读题、信息匹配题、翻译题等大题以及每道大题下面有小题组成,把这些题目抽象成表:题型表、大题表、小题表、科目表
  2. 把试卷相关的信息抽象:试卷表、作答表(答题表)、试卷-试题中间表、
  3. 用户信息以及参加考试记录抽象:用户表、考试记录表
  4. 爬虫标志表

英语四六级考试系统+爬虫获取试题的系统(数据库设计)的开发思路_第2张图片

表3-1 ANSWER作答表

字段名 类型 长度 非空 注释
A_ID NUMBER 12 True 主键(自增)
A_ANSWER VARCHAR2 2000 False 考生答案
A_RESULT NUMBER 1 False 对错
A_SCORE NUMBER 5 True 分数
A_EXAMLOG_ID NUMBER 10 True 外键(考试记录ID)
A_QUESTIONES_ID NUMBER 10 True 外键(大题ID)
A_QUESTION_ID NUMBER 10 False 外键(小题ID)

表3-2 EPAPER试卷表

字段名 类型 长度 非空 注释
EP_ID NUMBER 8 True 主键(自增)
EP_NAME VARCHAR2 90 True 试卷名称
EP_TIME NUMBER 5 True 考试时长
EP_SCORE NUMBER 5 True 总分
EP_PASS_SCORE NUMBER 5 True 合格分数
EP_CREATE_TIME TIMESTAMP 3 True 创建时间
EP_SUBJECT_ID NUMBER 6 True 外键(科目ID)
EP_CREATE_USER_ID NUMBER 10 True 外键(创建者)

表3-3 EPAPER_QUESTIONES试卷-试题中间表

字段名 类型 长度 非空 注释
EPQ_EPAPER_ID NUMBER 8 True 外键(试卷ID)
EPQ_QUESTIONES_ID NUMBER 10 True 外键(试题ID)
EPQ_QS_PRIORITY NUMBER 2 True 试题优先级

表3-4 EXAMLOG考试记录表

字段名 类型 长度 非空 注释
EL_ID NUMBER 10 True 主键(自增)
EL_ANSWER_TIME TIMESTAMP 3 True 开考时间
EL_SUBMIT_TIME TIMESTAMP 3 False 交卷时间
EL_TOTAL_SCORE NUMBER 5 True 总成绩
EL_USER_ID NUMBER 10 True 外键(用户ID)
EL_EPAPER_ID NUMBER 8 True 外键(试卷ID)

表3-6 QTYPES题型表

字段名 类型 长度 非空 注释
QT_ID NUMBER 6 True 主键(自增)
QT_NAME NVARCHAR2 30 True 题型名称
QT_DESCRIPTION NVARCHAR2 500 False 题型描述
QT_CATEGORY NVARCHAR2 30 True 题型分类
QT_OPTIONS NUMBER 2 False 题型选项

表3-7 QUESTION小题表

字段名 类型 长度 非空 注释
Q_ID NUMBER 10 True 主键(自增)
Q_TITLE VARCHAR2 4000 True 小题题目
Q_ANSWER VARCHAR2 4000 True 小题答案
Q_SCORE NUMBER 5 True 小题分值
Q_PRIORITY NUMBER 2 True 小题优先级
Q_QUESTIONES_ID NUMBER 10 True 外键(大题ID)

表3-8 QUESTIONES大题表

字段名 类型 长度 非空 注释
QS_ID NUMBER 10 True 主键(自增)
QS_DESCRIPTION VARCHAR2 4000 False 大题描述
QS_TITLE VARCHAR2 4000 True 大题题目
QS_ANSWER VARCHAR2 4000 False 大题答案
QS_SCORE NUMBER 5 True 大题分值
QS_CREATE_TIME TIMESTAMP 3 True 创建时间
QS_QTYPES_ID NUMBER 6 True 外键(题型ID)
SUBJECT_ID NUMBER 10 True 外键(科目ID)

表3-9 reptilia爬虫标志表

字段名 类型 长度 非空 注释
ID NUMBER 10 True 主键(自增)
TITLE NVARCHAR2 20 True 标题
LINK NVARCHAR2 32 True 连接
TIME TIMESTAMP 3 True 时间

你可能感兴趣的:(java)