基于SSM在线考试系统的核心功能之一–>自动组卷的实现
大家都知道,在考试系统中有个核心的功能 就是组卷的过程
- 什么是组卷呢?
组卷分成 : 手动组卷 和 随机组卷
手动组卷就是操作人选择对应的试卷,然后在选择对应的问题。把这个问题挂到卷子上面,这个过程
就叫组卷;
比如下面的图示:

组好卷之后,点击预览试卷

-
随机组卷(自动组卷):
操作人 点击左侧的试卷树,然后点击右侧的随机组卷,弹出表单 填写设定的规则,最后设定好之后,点击保存,
后台就会自动的完成组卷

组卷完之后,也可以点击预览试卷
这篇博客文章 主要给大家说一下 随机组卷;
3 . 随机组卷的核心
(1)前后传递对应的组卷参数
比如 前台传递:
{“paperId”:1,“xztNum”:1,“tktNum”:2,“pdtNum”:1,“jdtNum”:1}
$.ajax({
url: "/paper/randomPapperQuestion",
async: false,
type: "POST",
dataType : "json",
data: JSON.stringify(randomPaperQuestionObj),
contentType:'application/json;charset=utf-8',
success: function (data) {
if (data.isSuccess) {
$.confirm({
title: '温馨提示:',
content: '保存成功',
type: 'green',
buttons: {omg: {text: '谢谢', btnClass: 'btn-green',}
}
});
window.location.href="/paper/appendQuestion"
}
}
});
后台接收
//随机组卷 randomPapperQuestion
@RequestMapping("/paper/randomPapperQuestion")
@ResponseBody
public AjaxResult randomPapperQuestion(@RequestBody RandomQuestionVO randomQuestionVO){
try {
paperService.randomPapperQuestion(randomQuestionVO);
} catch (Exception e) {
e.printStackTrace();
return new AjaxResult("随机组卷失败");
}
return new AjaxResult();
}
调用业务层 完成组卷
//核心代码
//得到选择题的id集合 比如: {111,222,333,444}
List xztIds = questionMapper.queryQuestionIdByTypeId(1L);
//随机选出对应的id号
for(int i=0;i<randomQuestionVO.getXztNum();i++) {
Object target = xztIds.get(new Random().nextInt(xztIds.size()));
ids.add(target);
xztIds.remove(target);
}
//把对应的数据保存到数据库完成随机组卷的过程
4 赶快去实现一下吧,小伙伴们!!!
试卷管理系统完整实现 需要源码 进入码仔分享交流圈 Q群 六七零三零四零零三 !!!
本文探讨了在线考试系统中的自动组卷功能,包括手动组卷和随机组卷的概念。重点讲述了随机组卷的实现,强调了前后端传递组卷参数的过程,并提到了后台接收参数后调用业务层完成组卷的操作。有兴趣获取源码的读者可以加入指定的Q群进行交流。
1520





