学习笔记——日常实现思路
要求:实现每个考生对于一套试卷进行乱序显示。
前提:由于所有考生的试卷是一套,且只有一份数据,并不是每个考生都生成了一份试卷。要想保证每个考生进入考试都看到不一样的顺序,以及要保留考生每次进去之后要与初次进入的乱序结果要一致。
思路:要乱序还要保留原始数据,则需缓存数据,缓存有两个方案:
1、考虑Redis进行缓存每个考生考试的试题和选项乱序顺序数据。
2、在考生开始考试后存储当前考生所有提交的试题答案数据,一道题一条数据(带有默认空答案)。此时存储当前试题的顺序,和选项顺序Id排列。
步骤:
1、考试提交答案数据关联着试卷Id、试题Id,需增加试题当前的顺序,试题对应的选项Id集合。
2、每次考生点击开始考试后,存储乱序后的试题和选项。
3、获取试卷试题数据时,根据答案数据反向去获取试题和选项数据进行组装。
考生进入后乱序试题生成实现代码块:
//原始数据试题Id集合
List<Integer> questionIdList = new ArrayList<Integer>();
//将试题Id乱序
Collections.shuffle(questionIdList);
//存放乱序后试题排序,key:试题Id,value:试题排