篮球口袋教练 HarmonyOS 学习应用(06):测验结果页的解释型反馈
测验页面的价值不止是给出分数。对于学习者,知道“这一题错了”还不够,还要能看到正确选项和解释;完成一组题后,结果页还应给出本次成绩与历史最佳成绩。篮球口袋教练把逐题反馈和结果汇总分为两个阶段,避免在答题过程中丢失题目上下文。
一、单题反馈保存题目上下文
用户选择选项后,页面根据当前题的正确答案计算对错,并展示正确选项与解释文本。解释来自题目模型,不是页面临时拼接的通用提示,因此不同知识点可以保留各自的学习原因。
const correct = question.options[selectedIndex] === question.answer this.feedback = correct ? '回答正确' : '答案不正确' this.explanation = question.explanation题目、用户选择、正确答案和解释要在当前题切换前一起保留。否则页面一进入下一题,用户只能看到结果颜色,无法知道自己在哪个概念上出现偏差。
二、完成结果以模块为单位归档
答完后,服务记录模块 id、得分、题目总数与时间。历史最佳成绩从同一模块的结果集合中计算,因此体能训练的成绩不会覆盖战术策略的成绩。
static bestScore(moduleId: string): number { return QuizService.allResults() .filter(item => item.moduleId === moduleId) .reduce((best, item) => Math.max(best, item.score), 0) }| 页面阶段 | 关注信息 | 用户能得到什么 |
|---|---|---|
| 作答中 | 当前题、所选答案、解释 | 立即理解对错原因 |
| 提交后 | 得分、总题数、正确率 | 了解本次完成度 |
| 再次进入 | 模块历史最佳 | 判断是否超过过去表现 |
三、运行回读结果
模拟器中逐题选择答案后,页面回读到正确选项、对错反馈和当前题解释。完成体能训练模块 6 道题后,结果页显示6/6、100%、“满分”和“历史最高:6/6”。这证明解释反馈与结果汇总都在真实答题动作链中出现。
四、解释型反馈的边界
解释型反馈不等于给用户直接公布所有题目的答案。正确的顺序是先接受用户选择,再显示该题的判定与解释;结果页只汇总已经完成的题目。若题目集合为空,页面应阻止进入作答并提示暂无内容,而不是生成 0 分的伪结果。
五、后续扩展的切入点
当前模型已经以模块 id 分隔成绩,后续可以在不改变题目反馈逻辑的前提下增加错题回练、按知识点统计和阶段性复习。关键是继续让题目解释、作答过程和成绩持久化各自承担单一职责,避免把所有规则堆进结果页。
