zoukankan      html  css  js  c++  java
  • 基于SSM在线考试系统的核心功能,随机组卷的实现

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

    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

     

  • 相关阅读:
    [转]wireshark 实用过滤表达式(针对ip、协议、端口、长度和内容) 实例介绍
    [转]HTTPS连接的前几毫秒发生了什么
    将生成的数据写入文件
    linux查看网络监听端口
    [转] Linux下移动virtualbox虚拟硬盘丢失eth0
    sockaddr结构体
    以十六进制形式打印字符串
    pta5-9 Huffman Codes (30分)
    pat1068. Find More Coins (30)
    hduoj 2955Robberies
  • 原文地址:https://www.cnblogs.com/Coder1988/p/13058949.html
Copyright © 2011-2022 走看看