随机抽题
1. 简介
1.1 案例简介
高校、教育行业或者是公司年终考核时,希望可以在简道云内实现在线考试的需求。考试一般要求基于已有题库随机给每位考生生成一个随机试卷,并且根据考生答案来自动生成考生的考试得分。
1.2 设计思路
针对这一场景,一共提出两种解决方案:
1)方案一
先设置试卷库,试卷库内有多套试卷,考生考试时系统随机抽取试卷库内的一套试卷,并且计算考卷总分。
2)方案二
先设置一个题库,考生考试时,系统随机从每一种题型内抽取若干题组成一张试卷,并且计算考试总分。
1.3 预期效果
1)试卷库形式
能够从试卷库中,随机给每位考生抽取其中一套试卷。
2)随机抽题形式
能够从题库当中,随机抽取每种题型的若干题组成一套试卷。
注:在学习之前建议安装 随机抽题 应用模板,本文将按照模板中的示例数据进行讲解。
2. 试卷库-AB卷形式
以一张试卷包含 2 道单选题、2 道多选题、1 道判断题为例,设计步骤如下所示:
1)设置试卷库。
2)利用 RAND函数 得到随机编号。
3)利用编号进行数据联动。
4)生成考卷。
2.1 设置试卷库
打开「试卷库」基础信息表,表单中有试卷名称、试卷编号、题目编号以及答案等信息。
进入编辑表单页面,在试卷库的数据管理内,根据试卷的相关信息录入试卷的对应数据,如试卷名称、试卷编号、题干以及答案等内容。
答案字段的录入形式,同一个题目有多个答案则用英文逗号“,”分隔开,如第三题答案为ACD,那么录入为「A,C,D」。
2.2 随机抽取试卷生成考卷
打开「考卷」基础信息表,表单中有考卷名称、考卷编号、题目、答题选项按钮组。考卷中添加了每个题目的参考答案以及总分等辅助信息。
1)配置考卷辅助信息
由于辅助信息是为了后面的公式调用,不需要在考卷当中展示出现。故进入编辑表单页面,将所有的辅助信息都设置为不可见。
示例:第三题参考答案设置为不可见。
虽然辅助信息为不可见,但是依然要在数据管理当中显示。故应在表单属性当中,将不可见字段赋值设置为始终重新计算。
2)设置考卷编号
考卷编号字段利用 RAND函数 随机抽取,生成 1 到试卷总数中间的任意一个随机整数作为考卷的编号。比如试卷库内一共有 2 张试卷,则考卷编号应生成一个大于等于 1 小于 2 的随机整数。其公式设置为INT(RAND()*(3-1)+1):
3)联动生成考卷
通过数据联动,将试卷库里与该试卷编号相关的内容,如试卷名称、题干、参考答案等一一关联过来。其中,联动表单选用「试卷库」,联动条件设置为「试卷编号」等于「试卷编号」。
示例:试卷名称的数据联动
2.3 计算考卷总分
1)判断逻辑
将试卷内每一题的答案与参考答案一一进行对比,利用 IF函数 判断每个题目得分情况,如果答案正确,则得分,否则为 0。比如第一题选择正确,则其逻辑公式为:IF(第一题正确,5,0),最后再将所有题目得分加起来,可借助 SUM函数 来进行计算,那么总分的计算逻辑为:SUM(IF(第一题正确,5,0),IF(第二题正确,5,0),IF(第三题正确,10,0),IF(第四题正确,10,0),IF(第五题正确,5,0))。
2)计算公式
单选题和判断题只需要判断选择的答案和参考答案是否完全一致即可。
而多选题分为两种情况:
- 选用复选框组。由于复选框组的选项顺序是固定的,所以只需要判断选择的答案和参考答案是否完全一致即可。
- 选用下拉复选框。由于下拉复选框的选项是随机的,所以无法直接根据选择答案和参考是否相等直接进行判断,可以参考之前的解决思路:多选题得分判断
试卷库中的多选题选用了复选框组形式,所以可以直接进行判断,那么总分字段的计算公式为:SUM(IF(第一题答案==第一题参考答案,5,0),IF(第二题答案==第二题参考答案,5,0),IF(第三题答案==第三题参考答案,10,0),IF(第四题答案==第四题参考答案,10,0),IF(第五题答案==第五题参考答案,5,0))。
3)特别注意
复制公式到公式编辑框之后,要将所有红色报错部分替换为当前表单中的字段。
示例:替换第一题答案和第一题参考答案。
2.4 效果演示
能够从试卷库中随机抽取一张试卷,并且计算总分。
3. 随机题库抽题形式
为了避免这种情况,在基于题型的基础之上,如题库中有 X 道单选题:那么我们就用 RAND 函数抽取单选题第一题的题号,在第一题的题号上加上 1、2、3…X-1,那么我们就的得到了 X 道单选题不重复的题号,再基于这个题号去联动出题干就可以了。
设计步骤如下所示:
1)设置题库。
2)利用 RAND函数 生成随机编号。
3)编号与序号相加生出抽题题号。
4)根据题号进行数据联动抽题。
注:每一种题目类型的抽取思路是固定的,以单选题为例说明设置抽题思路。
3.1 设置题库
打开「题库」基础信息表,表单中有不同类型的题目,题库表单包含 4 个字段:题型、题号、题干、参考答案。
1)设置题库数据
进入编辑表单页面, 在题库的数据管理内,根据题库的相关信息录入/导入不同题型之间的多条数据。
- 录入数据。根据题库信息添加数据。
- 导入数据。在已有题库数据的情况下,一条一条添加比较麻烦,故可以选择直接将题库数据导入的方法,可下载 题库-数据模板 .xlsx 进行体验。具体导入设置可参照:导入/导出数据。
2)特别注意
- 参考答案如果是多选,多个选项之间要用英文逗号“,”间隔。如第一题答案是 BCD,那么录入为 「B,C,D」。
- 题号是数字字段,是基于不同的题型进行编号的,每种题型都要从 1 开始编号;题干是为了后面调用显示清晰,故要使用多行文本。
3.2 随机抽题生成考卷
打开「考卷」基础信息表,表单中有考生姓名、学号、单选题、多选题、判断题等基础信息;
同时有单选题总数、单选题随机数、多选题总数、多选题随机数、判断题总数、判断题随机数、总分等辅助信息;在题目类型的子表单内存在序号、题号、参考答案得分等辅助信息。
1) 配置考卷辅助信息
由于辅助信息是为了后面的公式调用,不必在考卷中显示。故进入编辑表单页面,将所有的辅助信息设置为不可见。
示例:设置单选题总数为不可见。
虽然辅助信息为不可见,但是依然要在数据管理当中显示。故应在表单属性当中,将不可见字段赋值设置为始终重新计算。
2)设置随机抽题
- 单选题总数的设置
「单选题总数」选用数字字段,使用 MAPX函数 计算出题库内单选题的总数,则公式编辑为:MAPX('max','单选',题目类型,题号),由于MAPX函数可以进行跨表单使用,故公式中绿色部分字段为所有表单字段中的题库内字段。
- 单选题随机数的设置
「单选题随机数」选用数字字段,利用 RAND函数 在 1 到题目总数之间随机抽取一个整数作为单选题第一题的题号。则公式编辑为:INT(RAND()*(单选题总数+1-1)+1),复制公式到公式编辑框之后,要将所有红色报错部分替换为当前表单中的字段。
- 子表单.序号的设置
「子表单.序号」选用数字字段,并且将子表单整体默认值进行填写,抽取 5 道题目则设置 5 行默认值,抽取 20 道题目则设置为 20 行默认值,抽取 n 道题则设置为 n 行默认值从 1 填写到 n。
示例:单选题抽取 5 道题目,则默认值从 1 填写到 5。
- 子表单.题号的设置
「子表单.题号」选用数字字段,利用 IF函数 进行条件判断,得到实际的题号。在单选题第一题题号的基础上加上子表单的序号,如果加上序号之后大于单选题的总数,则减去单选题的总数。则公式编辑为:IF(单选题随机数+一、单选题(10分/题,共5题).序号<=单选题总数,单选题随机数+一、单选题(10分/题,共5题).序号,单选题随机数+一、单选题(10分/题,共5题).序号-单选题总数),复制公式到公式编辑框之后,要将所有红色报错部分替换为「当前表单」中的字段。
示例:替换「单选题随机数」及「一、单选题(10分/题,共5题).序号」。
- 其他类型题目的抽取
其他题型的抽取是类似的,区别在于:如果是多选题,则在「请选择答案」设置中应选用下拉复选框字段,计算题目得分时应参考: 多选题得分判断
4)联动生成考卷
通过数据联动,将题库里与该题号相关的内容,如题干、参考答案等一一关联过来。其中,联动表单选用「题库」,联动条件设置为题目类型等于单选;题号等于单选题.题号。
示例:子表单内单选题题干进行联动
3.3 计算考卷总分
1)计算每个题目得分
将得分设置为数字字段,利用 IF函数 进行条件判断,如果选择的答案等于参考答案,得 10 分,否则得 0 分。则公式编辑为:IF(一、单选题(10分/题,共5题).请选择答案==一、单选题(10分/题,共5题).参考答案,10,0),复制公式到公式编辑框之后,要将所有红色报错部分替换为「当前表单」中的字段。
2)计算总分
将总分设置为数字字段,利用 SUM函数 把单选题题目得分和多选题、判断题题目得分相加。则公式编辑为:SUM(一、单选题 (10分/题,共5题).得分)+SUM(二、多选题 (10分/题,共3题).得分)+SUM(三、判断题 (10分/题,T表示正确,F表示错误,共2题).得分)。复制公式到公式编辑框之后,要将所有红色报错部分替换为「当前表单」中的字段。
3.4 效果演示
能够从题库中随机抽出若干题生成试卷,并且计算总分。