一、案例效果
点击《随机测试题》拷贝模板
二、应用场景
(一)需求简介:
大部分企业、单位具有对内/对外的科普/宣传、培训的答题H5需求,针对宣传目标或考核目标设置一定的题目内容及数量、统计得分及得分用时,还会根据得分情况给用户划分不同的“段位”或称号。
常见答题规则如:
1、单选、多选、判断类型,选择选项为主,题目数量在20~30答题以内。
2、假设总题目数量20道题,答题数量限制为每人答题10道,每题固定分值为10分,总分合计100分。
3、每次答题都会将每一题的分数累积,最后累加至总分(一般是一个全局类的变量)。
4、答题顺序按照随机方式处理,从20道题随机抽取题目,直到答题数量达10个,给到用户最终总分结果。
5、答题时间有限。答完10道题结束时,计时停止,并给到用时,如一共39秒。
6、根据总分结果划分区间,如0~60分是结果1及格;70~80分是结果2良好;90~100分是结果3优秀。并根据每位用户的总分给出对应的结果。
7、更多规则(较复杂,仅供了解)
1)每个微信用户只能答题一次
2)在答题过程中需记录用户每道题的答题情况,一般是需要记录答题序号、题目、选择结
果、选择正误,可以边答题边提交答题结果,也可以全部答完再提交;提交后记录总分以
及答题用时。
3)已经提交过的用户再次点开h5可以看见答题记录和分数及用时。
本次教程以8道题为总数,答题数量为5道题为例,讲解随机答题的基本实现方式。
(二)需求分析延伸(仅供了解):
根据以上需求场景做功能分析:
1、如果是每人答题1次,要考虑:
1)如果用户之前答过题,再次进入H5点击开始答题前,需要提示用户:您的答题次数已用完,请勿重复答题。
2)如果用户未答过题,答题结束点击提交按钮,提交答题结果到数据库。这里需要考虑一个界限:用户开始答题时提交数据 还是 答完题 提交答题数据。
理想状态是:用户点击开始答题时,我们在答题数据表里初始化1条数据,即新建1条数据,并获取到数据ID,等答完第10道题时,再去把当前用户的答题结果分数、用时等更新到后台数据表。
2、每个微信用户答题1次,就限制了该H5只能在微信环境下发布,包括电脑端微信和手机端微信。
如果需要用其他方式限制每人答题1次,如手机号、员工号等唯一性编码,且不只在微信环境下发布,用户每次进入H5都需要输入唯一性编码;如果不想让用户频繁输入,就需要联系意派平台配合开发缓存用户输入记录的类似功能。
三、功能设置
1、先用页面铺设整体框架。随机测试题基本分为几部分:开始答题部分、测试题部分、结果部分。
1)开始答题部分相对简单,一般主要是用于录入答题人的相关数据如姓名、手机号或其他信息。
2)测试题部分。主要为多个单选题/多选题/判断题等类型的题目,可以是一个页面1个题目。
3)结果页部分。
2、梳理随机部分的逻辑,流程图的方式。
点击《随机测试题流程图》可查看在线版本流程图:
2、测试题部分制作。
如果是制作单选题,可以借助测试题组件和图片按钮组件/新文字按钮组件完成;
如果是制作多选题,可以借助参数变量+图片按钮/新文字按钮组件结合的方式。
本次不详细讲解每个题目的制作过程,主要讲解随机逻辑部分。测试题组件相关教程:
3、如果我们之前对Masterpage页(后简称M页)有了解,可知道M页面的元素在所有页面都可以显示,且M页的元素支持被选中进行触发设置。
3.1、一般测试题答题过程中会进行分数的累加,我们一般会用放在M页的参数变量进行分数累加。
在M页面放一个参数变量,命名为“总分”,类型为整数(也可以是小数),触发方式为等待触发,初始值为0。
3.2、总分=不同值或处于不同的分值区间时,可以跳转到不同的结果页。本次案例的结果页面是页面9~11,因此三个条件分别对应跳转到这三个页面。
4.1、因为是随机答题,且每个题目分布在不同的页面,需要一个参数变量可以全局分配参数,决定跳转到不同的题目页。需借助参数变量的随机数类型,进行题目的随机跳转。
参照下图切换到M页并添加参数变量,命名为“随机跳转参数”。设置参数类型为“随机数”,触发方式为等待触发;取值范围1~8,因为本次答题只有8道题我们设置为1~8,即从8个数里进行随机。如果我们有20道题,取值范围就是1~20。更多道题目以此类推。
4.2、了解每道题目分布的页面编码。
4.3、通过跳转页面切换题目。恰好本次的页面编码范围是1~8,可以在跳转页面时,根据随机数的值跳转到对应页面:
* 当随机参数=1时,跳转页面到页1;
* 当随机参数=2时,跳转页面到页2;
* 当随机参数=3时,跳转页面到页3;
* 当随机参数=4时,跳转页面到页4;
...
* 当随机参数=8时,跳转页面到页8。
以上设置我们称触发条件,只有随机参数等于具体某个值时,这些条件才会对应执行,每次执行参数判断仅执行1个条件。
延伸思考:当测试题的页面编码范围是3~10,当随机参数=1~8时,分别跳转到页面几呢?
答案:分别跳转到页面3~10。
5、因为我们是在8道题里选择选择5道题进行答题,因此还需在每次答题前后统计答题个数,多为每道题答题结束时进行个数参数的累加。
因为要统计每个测试题页面的题目个数,也是一个全局的概念,因此同样是在M页添加参数变量,命名为“答题”个数,类型为整数,触发方式为等待触发,初始值为0。
6、答题个数是否满5个,需要执行不同的判断。
6.1、不满5个就继续去答题,但是答哪道题呢?需要先让随机参数给到新的参数值,我们称参数变量——重置。
6.2、随机数重置完毕后,就需要根据随机数的值判断跳转到哪一题,即执行随机数的参数判断。
7.1、满5个就要根据总分给到不同结果,因此需要去执行总分参数变量的判断。
8、切换回页面,在每道题答题结束时,设置每道题的分数累加到总分,并且累加个数。
9、累加完分数和个数,要判断个数是否达到5个。
10、到目前为止,随机答题的整体逻辑设置完成。
补充说明:关于参数变量为何要设置为等待触发。我们需要统计个数、分数、随机数重置时的参数变量,按照指定的顺序和条件去执行参数判断,所以必须是等待触发。
四、相关Q/A