学习计划表:鸿蒙AI应用开发实战——AI学习规划,高效备考不焦虑

一、引言

“我要学习!”——这是很多人立下的flag,但真正执行起来却困难重重。没有明确的学习计划、不知道每天学什么、如何分配时间,这些问题往往导致学习效率低下、半途而废。

学习计划表 正是为了解决这一痛点而诞生的鸿蒙AI应用。用户只需输入科目名称、选择学习天数(1-30天)和每天学习时长,AI即可根据4阶段学习法(基础30%/核心35%/实战25%/复习10%)自动生成按天分解的学习任务表,让学习计划变得科学、可执行。

本文将从应用架构设计、鸿蒙核心技术实现、AI应用亮点等维度,深度剖析这款应用的开发全流程。


在这里插入图片描述

二、应用架构设计:Model-Service-Page 三层架构

2.1 架构概览

┌─────────────────────────────────────────────────────────┐
│                     Page 层 (UI)                         │
│             StudyPlanPage.ets                            │
│   @State 动态生成 / Stepper 天数 / Slider 时长 / Scroll│
├─────────────────────────────────────────────────────────┤
│                   Service 层 (业务逻辑)                  │
│            StudyPlanService.ets                          │
│   4阶段学习法 / 任务分配算法 / 动态天数适应            │
├─────────────────────────────────────────────────────────┤
│                    Model 层 (数据模型)                   │
│            StudyPlanModel.ets                            │
│   DayPlan / PhasePlan / StudyData / SPMessage          │
└─────────────────────────────────────────────────────────┘

2.2 Model 层:数据结构定义

核心数据类

  • DayPlan:单日学习计划,包含天号和任务列表
  • PhasePlan:学习阶段,包含名称、比例和任务模板
  • StudyData:完整学习计划,包含每日计划列表

关键常量

  • SP_DAYS_RANGE:最大天数范围30

2.3 Service 层:4阶段学习算法

Service 层实现了基于4阶段学习法的计划生成算法:

getStudyPlan(subject: string, days: number, hoursPerDay: number): StudyData {
    const phases: PhasePlan[] = [
        new PhasePlan('基础入门', 0.3, ['学习基础概念和术语', '阅读入门教材/文档', '搭建学习环境/工具']),
        new PhasePlan('核心知识', 0.35, ['深入学习核心知识点', '动手练习经典案例', '整理笔记和思维导图']),
        new PhasePlan('实战应用', 0.25, ['完成实战项目', '解决实际场景问题', '总结踩坑经验']),
        new PhasePlan('复习巩固', 0.1, ['回顾重点难点', '整理错题/问题集', '模拟测试/面试准备'])
    ]
    // 按比例分配天数,生成每日计划
}

2.4 Page 层:UI展示

Page 层实现了科目输入、天数选择、时长选择等交互,以及按天分解的学习计划展示。


三、鸿蒙技术深度解析

3.1 @State 动态生成计划

本应用的核心状态管理围绕科目、天数和时长展开:

@State selectedSubject: string = ''       // 科目名称
@State selectedDays: number = 7            // 学习天数
@State selectedHours: number = 2           // 每天学习时长
@State currentData: StudyData | null = null  // 生成的学习计划
@State isLoading: boolean = false          // 加载状态

动态生成流程

  1. 用户输入科目名称、选择天数和每天时长
  2. 点击"生成学习计划"按钮
  3. Service 层根据三个参数计算每日任务
  4. 结果通过 @State 驱动 UI 渲染
private onGenerate(): void {
    this.isLoading = true
    this.currentData = null
    setTimeout(() => {
        const data = this.service.getStudyPlan(this.selectedSubject, this.selectedDays, this.selectedHours)
        this.currentData = data
        this.isLoading = false
    }, 1500)
}

3.2 Stepper 天数选择 + Slider 时长选择

本应用同时使用了两种选择器——Slider 用于天数选择和时长选择:

天数选择(1-30天,步进1):

Slider({
    value: this.selectedDays,
    min: 1, max: 30, step: 1,
    style: SliderStyle.InSet
})
.blockColor(COLOR_PRIMARY)
.onChange((value: number) => { this.selectedDays = value })

时长选择(1-8小时,步进1):

Slider({
    value: this.selectedHours,
    min: 1, max: 8, step: 1,
    style: SliderStyle.InSet
})
.blockColor(COLOR_PRIMARY)
.onChange((value: number) => { this.selectedHours = value })

双Slider的设计要点

  • 天数范围1-30,覆盖短期冲刺到长期规划
  • 时长范围1-8小时,覆盖轻度学习到深度学习
  • 当前值实时显示:Text('当前:${this.selectedDays}天')Text('当前:每天${this.selectedHours}小时')
  • 两个 Slider 相互独立,互不影响

3.3 Scroll 滚动展示

学习计划可能包含30天的内容,使用 Scroll 确保完整展示:

if (this.currentData !== null) {
    Scroll() {
        Column() {
            this.buildResultCard(this.currentData)
        }
        .padding({ bottom: 20 })
    }
    .layoutWeight(1)
    .scrollBar(BarState.Off)
}

3.4 ForEach 渲染每日计划

每日计划使用 ForEach 循环渲染,每行包含天号和任务列表:

ForEach(data.plan, (dayPlan: DayPlan, idx: number) => {
    Column() {
        Row() {
            Column() {
                Text('D${dayPlan.day}')
                    // 圆形天号标识
            }
            Column() {
                ForEach(dayPlan.tasks, (task: string) => {
                    Text('• ${task}')
                })
            }
        }
    }
    // 卡片样式
    .backgroundColor(idx % 2 === 0 ? COLOR_SELECTED_BG : COLOR_CARD)
})

设计亮点

  • 天号使用圆形标识(D1、D2、D3…),视觉突出
  • 任务列表使用圆点前缀,清晰可辨
  • 交替背景色(奇偶行不同),提高可读性

四、AI 应用亮点分析

4.1 4阶段学习法

应用采用科学规划的4阶段学习法,将学习过程分为四个阶段:

阶段1:基础入门 — 30% 时间
- 学习基础概念和术语
- 阅读入门教材/文档
- 搭建学习环境/工具

阶段2:核心知识 — 35% 时间
- 深入学习核心知识点
- 动手练习经典案例
- 整理笔记和思维导图

阶段3:实战应用 — 25% 时间
- 完成实战项目
- 解决实际场景问题
- 总结踩坑经验

阶段4:复习巩固 — 10% 时间
- 回顾重点难点
- 整理错题/问题集
- 模拟测试/面试准备

4阶段学习法的科学性

  • 基础入门(30%):打好基础,建立知识框架
  • 核心知识(35%):投入最多时间,深入掌握核心内容
  • 实战应用(25%):通过实践巩固知识,提升应用能力
  • 复习巩固(10%):查漏补缺,强化记忆

4.2 任务时长自动分配

系统根据每天的学习时长和任务数量,自动计算每个任务的分配时间:

const totalMinutesPerDay = hoursPerDay * 60
const taskCount = phases[p].tasks.length
const minutesPerTask = Math.round(totalMinutesPerDay / taskCount)

分配示例(每天2小时=120分钟,每个阶段3个任务):

  • 每个任务:120 ÷ 3 = 40分钟
  • 任务描述:'学习基础概念和术语(40分钟)'

4.3 动态天数适应

系统根据用户选择的总天数,按比例分配到4个阶段,并确保每个阶段至少分配1天:

for (let p = 0; p < phases.length; p++) {
    const phaseDays = Math.max(1, Math.round(days * phases[p].ratio))
    const phaseEnd = Math.min(dayIndex + phaseDays - 1, days)
    // 生成该阶段每天的详细任务
}

天数分配示例(总天数=30天):

  • 基础入门:30 × 30% = 9天
  • 核心知识:30 × 35% = 10天(四舍五入)
  • 实战应用:30 × 25% = 8天(四舍五入)
  • 复习巩固:30 × 10% = 3天

天数分配示例(总天数=5天):

  • 基础入门:max(1, 5×30%) = 2天
  • 核心知识:max(1, 5×35%) = 2天
  • 实战应用:max(1, 5×25%) = 1天
  • 复习巩固:max(1, 5×10%) = 1天

五、关键技术挑战与解决方案

5.1 挑战一:4阶段的时间分配

挑战:需要将总天数按比例分配到4个阶段,同时确保整数天数和至少1天。

解决方案

  • 使用 Math.round 进行四舍五入取整
  • 使用 Math.max(1, ...) 确保每个阶段至少1天
  • 使用 Math.min(phaseEnd, days) 防止超出总天数
  • 使用 dayIndex 变量追踪当前分配进度

5.2 挑战二:每日任务的分钟数分配

挑战:需要将每天的学习时长均匀分配到各个任务上。

解决方案

  • 将小时转换为分钟(hoursPerDay * 60
  • 除以任务数量得到每个任务的分钟数
  • 使用 Math.round 处理取整
  • 任务描述中附带分钟数,方便用户执行

5.3 挑战三:大量数据的滚动展示

挑战:30天的学习计划内容量大,需要高效渲染。

解决方案

  • 使用 Scroll 组件支持纵向滚动
  • 每日计划使用 ForEach 循环渲染
  • 交替背景色提高可读性
  • 隐藏滚动条保持界面清爽

六、用户交互体验设计

6.1 靛色的学习主题

应用采用靛蓝色系配色(#EEF2FF背景、#6366F1主题色),传达专业、专注的学习氛围:

const COLOR_BG = '#EEF2FF'
const COLOR_PRIMARY = '#6366F1'
const COLOR_SELECTED_BG = '#E0E7FF'

6.2 清晰的三步配置

  1. 输入科目名称:TextInput 输入
  2. 选择学习天数:Slider 选择1-30天
  3. 选择每天时长:Slider 选择1-8小时

6.3 时间线式结果展示

每日计划以时间线样式展示:

  • 天号使用圆形标识(D1, D2, D3…)
  • 任务列表使用圆点前缀
  • 交替背景色增强可读性
  • 每天的任务包含具体的分钟数分配

七、总结

学习计划表 应用展示了鸿蒙 ArkTS 在教育领域的应用潜力,三个核心技术亮点值得关注:

  1. 4阶段学习法算法:基础30%/核心35%/实战25%/复习10%的科学时间分配
  2. 双Slider参数选择:天数选择和时长选择两个 Slider 的联动使用
  3. 动态天数适应:根据总天数自动分配各阶段的时间,确保计划合理性

未来展望:未来可以引入更多学习法(如番茄工作法、费曼学习法)、支持自定义学习阶段、添加学习进度追踪、学习成果统计、AI智能调整学习计划等功能,打造更完整的智能学习规划工具。

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐