1. 功能设计

  1. 自动组卷

    根据设置的题型、题量、难度、考查的知识点等属性自动组合成一张试卷

    难度可以选择简单、普通、困难

    可以添加各种题库(章节)

    在每个题库中可以输入每种题型的数量

    以上面的选择为依据使用算法生成一张测试试卷

  2. 审核组卷

    老师可对系统生成的试卷进行人工审核、修改、打印和存档

    • 比如:删除题目、替换题目、审核通过自动生成的试卷、将试卷下载下来
  • 安全性:只有老师或者管理员能使用该部分功能

2. 数据库设计

本部分涉及到的数据表有

  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) 题目类型
  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 答案内容(简答题,应用题,算法分析题,算法设计题)
  5. 试卷表 testpaper

    参数 类型 描述 非空
    id varchar(64) 试卷id
    title varchar(64) 试卷标题,如:树章节测试
    create_time datetime 创建时间
  6. 试卷题目表 testpapermx

    参数 类型 描述 非空
    id varchar(64) 试卷题目id
    testpaper_id varchar(64) 试卷id
    selected_qu varchar(64) 选择的题目id

3. 接口设计

智能组卷

  1. 功能说明

    根据组卷算法生成一套试卷

  2. 接口说明

    请求方式:POST

    请求地址:http://ip:port/test/generateexamination

    请求参数:ave_level,repository,*_count

  3. 请求参数

    参数名 类型 说明
    ave_level int(11) 试卷难度
    repository Object 选择的题库
    multi_selectedcount int(11) 输入的多选题数量
    judge_selectedcount int(11) 输入的判断题数量
  4. 返回参数

    参数名 类型 说明
    data Object 题目集合
    status String 状态:1-成功,0-失败
    httpCode String Http返回码
    errCode String 错误码
    errMessage String 错误信息

    data:

    参数名 类型 说明
    testpaper_id varchar(64) 试卷id
    question List 题目集合
  • 示例:

    {"status": 1,"data": {"testpaper_id","question":{"question{$num}":["qu_id","question_type","level","content","analysis",],"question{$num}":["qu_id","question_type","level","content","analysis",],...}},"httpCode": 200,"errCode": 0,"errMessage": ""
    }
    

4. 算法设计

准备使用遗传算法

/*遗传算法* 入参:* questionsDB题库* expectedExam:期望试题* 出参:* TempExam resultUnit最终试题* */
public TempExam geneticAlgorithm(List<Questions> questionsDB,TempExam expectedExam) {//最终试题TempExam resultUnit=null,resultUnitTemp=null;//迭代次数计数器int count=1;//初始化种群List<TempExam> unitList=generatePaperService.cszq(20, expectedExam, questionsDB);resultUnitTemp=getMaxAdapterUnit(unitList);System.out.println("----------------遗传算法组卷---------------------------------------");System.out.println("初始种群-------------");showUnit(unitList);System.out.println("-----------------------开始迭代-------------------------");boolean flag=false;while(!generatePaperService.isEnd(unitList, Constants.EXPAND_ADATPER)) {System.out.println("在"+(count++)+"代未得到结果----------"+unitList.size()+"------------------");if(count>Constants.RUN_Count) {System.out.println("计算"+Constants.RUN_Count+"代仍没有结果,请重新设置条件");break;}//经过选择、交叉后种群数量只剩1或只剩0退出if(unitList.size()<=1) {System.out.println("没有结果");flag=true;break;}//选择--个数一定小于初始化种群unitList=generatePaperService.select(unitList, 10);//交叉unitList=generatePaperService.cross(unitList, 20, expectedExam);//判断是否可以结束if(generatePaperService.isEnd(unitList, Constants.EXPAND_ADATPER)) {break;}//变异unitList=generatePaperService.change(unitList, questionsDB, expectedExam);}if(count<=Constants.RUN_Count&&flag==false) {System.out.println("在第"+count+"代得到结果,结果为:**********************************");System.out.println("期望难度系数:"+expectedExam.getDifficultyLevel());showResult(unitList,Constants.EXPAND_ADATPER);//如果有多个,取适应度最大的if(unitList.size()>=1) {resultUnit=getMaxAdapterUnit(unitList);}}else {//没有得到结果,取初始群种中适应度最大的resultUnit=resultUnitTemp;}//最终结果试题System.out.println("------------------最终试题---------------------");if(resultUnit!=null) {System.out.println("试卷id:"+resultUnit.geteId());System.out.println("题目数量\t知识点分布\t\t难度系数\t\t适应度");System.out.println(resultUnit.getQuestionList().size()+"\t"+resultUnit.getKpCoverage()+"\t"+resultUnit.getDifficultyLevel()+"\t"+resultUnit.getAdapterDegree());}  return resultUnit;
}

数据结构自动组卷系统设计文档相关推荐

  1. 基于ACCESS在线考试自动组卷系统设计

    基于ACCESS在线考试自动组卷系统设计-VB(论文+系统+开题报告+答辩PPT) [摘要]随着当今计算机技术的飞速发展,利用计算机进行试题库的管理和考试分析已成为学校推动教学改革.提高教学质量的重要 ...

  2. 小学自动组卷系统C语言,题库管理自动组卷系统设计-PB(源程序+论文+开题报告+答辩PPT)...

    题库管理自动组卷系统设计-PB(源程序+论文+开题报告+答辩PPT) 摘 要 本文首先分析了自动组卷系统在具体的教学活动过程中的实际需求,然后以C语言程序设计的教学为背景,设计与实现了一个实际通用的自 ...

  3. Python版自动组卷评卷考试系统,具有考试定时、自动组卷、客观题自动判卷、自动评分和考试界面设计功能

    一.实验项目名称: 自动组卷评卷考试系统 二.实验内容 用Python语言编程实现自动组卷评卷考试系统,软件主要功能包括:从题库中随机抽取试题自动组成试卷(满分100分):实现考生考试答题操作界面:实 ...

  4. Python课程设计:Python语言实现自动组卷评卷考试系统

    Python实现自动组卷评卷考试系统 课程设计要求 一.各个模块介绍及实现 1. Configure.py 2. File_Texture_Tree.py 3. 后端:Test_Problem_Con ...

  5. (附源码)计算机毕业设计SSM自动组卷系统

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

  6. 基于Python 实现自动组卷评卷考试系统【100010913】

    自动组卷评卷考试系统 实验内容 用Python语言编程实现自动组卷评卷考试系统,软件主要功能包括:从题库中随机抽取试题自动组成试卷(满分100分):实现考生考试答题操作界面:实现自动阅卷评分功能:等等 ...

  7. 自动生成python接口文档_Django自动生成Swagger接口文档

    Django自动生成Swagger接口文档 1. 前言 当接口开发完成,紧接着需要编写接口文档.传统的接口文档通常都是使用Word或者一些接口文档管理平台进行编写,但此类接口文档维护更新比较麻烦,每次 ...

  8. 计算机毕业设计(附源码)python自动组卷系统

    项目运行 环境配置: Pychram社区版+ python3.7.7 + Mysql5.7 + HBuilderX+list pip+Navicat11+Django+nodejs. 项目技术: dj ...

  9. FastAPI 自动生成的docs文档没法使用

    FastAPI 自动生成的docs文档没法使用,当展开路径时候一直在转圈,具体就是这样 这个是由于swagger-ui 3.30.1 中的bug导致,具体bug可以看这里 我们可以通过在FastAPI ...

最新文章

  1. 【IT基础】常见的开发文档
  2. C++设计模式:Template Method
  3. 《Credit Risk Scorecard》第八章: Scorecard Implementation
  4. 【转贴】pentaho4.5汉化攻略及汉化文件
  5. IDEA把Springboot打成可执行jar包,内嵌tomcat 这个可以用
  6. birt脚本for循环语句_如何使用 for 循环语句嵌套方法!
  7. Java之 == 和 equals() 区别 hashCode() 解析
  8. 【文章收藏】阿里云破了四个世界纪录
  9. 部署Vista(7)——创建一个最基本的应答文件
  10. VMware Workstation虚拟机安装
  11. python 第三周测试答案_Python 基础学习 (第三周)
  12. 图像处理:同态滤波(Homomorphic filter)
  13. (Python)裁剪人脸图片获得人脸的嘴唇区域
  14. 【论文笔记】Exploring Self-attention for Image Recognition
  15. android+反编译加广告,追书神器Android版,反编译去广告基本教程
  16. 网课python程序设计答案_中国大学MOOCPython程序设计网课答案
  17. 全球与中国生物质颗粒市场深度研究分析报告
  18. 软件测试基础——概念篇
  19. TokenGazer一问到底 | 第29期:研究员 vs IRISnet
  20. 计算长方形的周长和面积(类和对象)

热门文章

  1. JavaScript函数柯里化详解
  2. 编码的奥秘:二进制数
  3. Android自定义动态布局 — 多图片上传
  4. 靖西市民族高中2021年高考成绩查询,靖西民族高中2019高考成绩喜报、一本二本上线人数情况...
  5. java jettison_Java常用Json库性能对比
  6. camunda_01_documents
  7. CSS 鼠标悬停提示文字
  8. python 多线程 廖雪峰_Python 一篇学会多线程
  9. 开启1521端口监听_Oracle开放1521端口 telnet不通解决办法
  10. mysql连接池的原理_数据库连接池的实现及原理