算法刷题间隔复习提醒系统 —— 基于 艾宾浩斯遗忘曲线,帮助你科学安排算法题的复习计划。
- 📊 概览仪表盘 — 今日待复习/已完成任务一目了然
- 📝 刷题模式 — 专注刷题,标记"会了"/"不会"自动进入下一轮复习
- 📚 题库管理 — 浏览所有题目,查看复习状态与阶段
- ⚙️ 设置 — 自定义每日新题数量
- 🔄 间隔复习 — 内置艾宾浩斯间隔:[1, 2, 3, 7, 21] 天
- 📅 每日日志 — 自动记录每日任务完成情况,未完成任务自动顺延
- Python 3.11+
- tkinter — 原生 GUI 框架
- JSON — 本地数据存储
本项目仅依赖 Python 标准库,无需额外安装第三方包。
在项目根目录创建 problems.json,格式如下:
[
{
"id": 1,
"name": "两数之和",
"url": "https://leetcode.cn/problems/two-sum/"
},
{
"id": 2,
"name": "两数相加",
"url": "https://leetcode.cn/problems/add-two-numbers/"
}
]日常使用直接双击 启动.bat,不会显示控制台窗口。
排查问题时双击 启动-显示控制台.bat,会显示控制台并在异常退出时暂停。
或
python run.py隐藏启动模式下如果出现异常,可查看 logs/app.log。
AlgoLoop/
├── run.py # 启动入口
├── 启动.bat # Windows 快捷启动(隐藏控制台)
├── 启动-显示控制台.bat # Windows 排错启动(显示控制台)
├── problems.json # 题库数据
├── settings.json # 用户设置(运行时生成)
├── progress.json # 学习进度(运行时生成)
├── progress.json.bak # 进度备份
├── daily_log.json # 每日日志(运行时生成)
├── logs/ # 应用日志(运行时生成)
└── algo_reminder/ # 核心代码
├── __init__.py
├── main.py # 应用入口
├── app.py # 主框架(Tab 导航 + 内容区)
├── data.py # 数据管理(JSON 读写、进度计算、备份)
├── models.py # 常量、配色主题、字体定义
├── widgets.py # 通用 UI 组件
└── views/ # 页面视图
├── dashboard.py # 概览页
├── study.py # 刷题页
├── problems.py # 题库页
└── settings.py # 设置页
系统基于 艾宾浩斯遗忘曲线 设计了 6 个复习阶段:
| 阶段 | 说明 |
|---|---|
| 新题 | 首次学习 |
| 第1天 | 1 天后复习 |
| 第2天 | 2 天后复习 |
| 第3天 | 3 天后复习 |
| 第7天 | 7 天后复习 |
| 第21天 | 21 天后复习 |
| 已掌握 | 不再安排复习 |
所有数据以 JSON 文件形式存储在项目根目录:
problems.json— 题库(需手动准备)progress.json— 学习进度与复习计划settings.json— 用户设置daily_log.json— 每日任务日志
💡 以上运行时生成的文件已被
.gitignore排除,不会误提交到版本控制。