跳到主要内容

如何实现随机抽取考卷作答

场景/功能描述

随机抽取考题,考题分为多种类型,需求是实现随机抽取作答

思路流程

需要创建一个考卷基础表,用于录入不同考卷和考题,使用者可以用批量导入的方式快速导入考卷

创建考试应用,用代码块的方式对考题排序进行随机,再通过关联的方式拉取考题作答。

配置过程

表单设计

考卷基础表

image.png

image.png

其中:【考卷编号】、【正确答案】为单行文本,【题目类型】为下拉选择(包含单选、多选、不定项选择、判断题),【题目序号】为数字字段,【题干】是多行文字

考试应用

image.pngimage.pngimage.pngimage.pngimage.pngimage.png

字段详情

【最终得分】

image.png

【得分等级】

image.png

【考试日期】

image.png

【考生】

image.png

【考卷编号】

image.png

【随机抽取考卷】

image.png

var num1 = qf_field.{单选题数量$$1876B9AB2$$}
var num2 = qf_field.{多选题数量$$1876B9AC8$$}
var num3 = qf_field.{不定项选择题数量$$1876B9AC9$$}
var num4 = qf_field.{判断题数量$$1876B9ACA$$}

var fullData = {
"单选": generate(num1),
"多选": generate(num2),
"不定项": generate(num3),
"判断": generate(num4)
}
function generate(num) {
var data = [];
var newData = [];
var table = {};
var result = [];
for (var i = 0; i < num; i++) {
var n = Math.random()
data.push(n)
}
newData = [...data];
// 升序排序
newData.sort();
// 结果降序
//newData.reverse();
for (var i = 0; i < newData.length; i++) {
table[newData[i]] = i + 1;
}
for (var i = 0; i < num; i++) {
var no = table[data[i]].toString()
result.push(
{
"排序号": no
}
)
}
return result;
}

qf_output = fullData

image.pngimage.pngimage.png

【单选题共计得分】

image.png

【单选题表格】

image.pngimage.png

【表格.题干】

image.png

【表格.正确答案】

image.png

【表格.得分】

image.png

(其余题型类似)

实现效果

在考卷基础表中导入考卷image.png

在考卷应用中选择考卷编号,选择考题数量,自动随机拉取考卷进行作答。

image.png

image.png

小计和总分会根据答题情况自动算分。

可以创建一个门户来展示考试报表数据

image.png

ps.根据具体场景修改字段权限和流程。