标签:数据库 trace catch 手动 stack 失败 博客 code random
大家都知道,在考试系统中有个核心的功能 就是组卷的过程
什么是组卷呢?
组卷分成 : 手动组卷 和 随机组卷
手动组卷就是操作人选择对应的试卷,然后在选择对应的问题。把这个问题挂到卷子上面,这个过程
就叫组卷;
比如下面的图示:
组好卷之后,点击预览试卷
随机组卷(自动组卷):
操作人 点击左侧的试卷树,然后点击右侧的随机组卷,弹出表单 填写设定的规则,最后设定好之后,点击保存,
后台就会自动的完成组卷
组卷完之后,也可以点击预览时间
这篇博客文章 主要给大家说一下 随机组卷;
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 赶快去实现一下吧,小伙伴们!!!
5 源码下载地址 https://gitee.com/soul_PreCoder/exam
标签:数据库 trace catch 手动 stack 失败 博客 code random
原文地址:https://www.cnblogs.com/Coder1988/p/13058949.html