1. 错题本功能的设计理念与核心价值
在HarmonyOS应用开发中,错题本功能远不止是一个简单的错误记录工具,而是整个学习闭环中的关键环节。通过React框架实现的错题本系统,能够将用户的错误转化为有效的学习机会。
1.1 为什么传统错题本设计不够用
很多初级开发者在实现错题本时,往往只考虑最基本的存储功能。他们可能会这样设计:
typescript复制// 初级实现示例(不推荐)
let wrongAnswers = [];
function addWrongAnswer(questionId) {
wrongAnswers.push(questionId);
}
这种设计存在明显缺陷:
- 无法区分同一题目的多次错误
- 缺乏掌握状态跟踪
- 没有时间维度信息
- 无法支持智能复习排序
1.2 完整错题本系统的核心要素
一个成熟的错题本系统应该包含以下关键要素:
- 错误追踪:记录每次错误的详细信息
- 状态管理:跟踪题目的掌握程度
- 时间维度:记录错误发生和复习的时间
- 智能排序:基于多种因素优化复习顺序
- 闭环练习:可直接从错题本重新练习
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 服务层设计与实现
2.1 WrongAnswerService的核心结构
在HarmonyOS应用中,我们通过WrongAnswerService.ets文件实现错题本的核心逻辑。服务层主要包含以下关键部分:
typescript复制// WrongAnswerService.ets 核心结构
class WrongAnswerRecord {
questionId: string;
question: string;
userAnswer: number;
correctAnswer: number;
recordedAt: string;
attemptCount: number;
isMastered: boolean;
lastAttemptAt: string;
}
class WrongAnswerService {
static wrongAnswers: WrongAnswerRecord[] = [];
static async addWrongAnswer(question: InterviewQuestion, userAnswer: number): Promise<void> {
// 实现逻辑...
}
static markAsMastered(questionId: string): void {
// 实现逻辑...
}
static getAllWrongAnswers(): WrongAnswerRecord[] {
// 实现逻辑...
}
static getUnmasteredWrongAnswers(): WrongAnswerRecord[] {
// 实现逻辑...
}
}
2.2 addWrongAnswer方法的精妙设计
addWrongAnswer方法是错题本的核心逻辑之一,它的实现体现了几个关键设计思想:
typescript复制static async addWrongAnswer(question: InterviewQuestion, userAnswer: number): Promise<void> {
// 查找是否已有该题目的记录
const existingIndex = this.wrongAnswers.findIndex(
r => r.questionId === question.id
);
const now = new Date().toISOString();
if (existingIndex >= 0) {
// 更新现有记录
const existing = this.wrongAnswers[existingIndex];
existing.userAnswer = userAnswer;
existing.attemptCount += 1;
existing.lastAttemptAt = now;
existing.isMastered = false;
} else {
// 创建新记录
this.wrongAnswers.push({
questionId: question.id,
question: question.text,
