码迷,mamicode.com
首页 > 其他好文 > 详细

基于SSM在线考试系统的核心功能,随机组卷的实现

时间:2020-06-07 11:04:04      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:数据库   trace   catch   手动   stack   失败   博客   code   random   

大家都知道,在考试系统中有个核心的功能 就是组卷的过程

  1. 什么是组卷呢?

组卷分成 : 手动组卷 和 随机组卷

手动组卷就是操作人选择对应的试卷,然后在选择对应的问题。把这个问题挂到卷子上面,这个过程

就叫组卷;

 

比如下面的图示:

技术图片

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

技术图片

  1. 随机组卷(自动组卷):

    操作人 点击左侧的试卷树,然后点击右侧的随机组卷,弹出表单 填写设定的规则,最后设定好之后,点击保存,

    后台就会自动的完成组卷

    技术图片

组卷完之后,也可以点击预览时间

这篇博客文章 主要给大家说一下 随机组卷;

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

 

基于SSM在线考试系统的核心功能,随机组卷的实现

标签:数据库   trace   catch   手动   stack   失败   博客   code   random   

原文地址:https://www.cnblogs.com/Coder1988/p/13058949.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!