个人任务管理器 (Todo Manager)
一个功能完整的命令行任务管理应用,帮助您组织和跟踪日常任务。
🎯 项目概述
这个项目演示了如何使用Python的面向对象编程来构建一个实用的应用程序。您将学习到类设计、数据持久化、用户交互和错误处理等重要概念。
✨ 功能特性
- ✅ 任务管理: 添加、删除、修改、完成任务
- 🏷️ 分类管理: 为任务设置分类(工作、学习、生活等)
- ⭐ 优先级: 设置任务优先级(高、中、低)
- 📅 截止日期: 为任务设置截止日期
- 💾 数据持久化: 自动保存到JSON文件
- 🔍 搜索过滤: 按分类、优先级、状态搜索任务
- 📊 统计报告: 查看任务完成情况统计
- 🎨 彩色输出: 美观的命令行界面
📁 项目结构
todo-manager/
├── README.md # 项目说明
├── main.py # 主程序入口
├── todo_manager/ # 核心模块
│ ├── __init__.py
│ ├── task.py # 任务类
│ ├── manager.py # 任务管理器
│ ├── storage.py # 数据存储
│ └── ui.py # 用户界面
├── data/ # 数据文件
│ └── tasks.json # 任务数据(自动生成)
└── tests/ # 测试文件
└── test_todo.py # 单元测试
🚀 快速开始
1. 运行程序
cd todo-manager
python main.py
2. 基本操作
=== 个人任务管理器 ===
1. 添加任务
2. 查看所有任务
3. 完成任务
4. 删除任务
5. 搜索任务
6. 统计报告
0. 退出
请选择操作 (0-6):
3. 示例使用
# 添加任务
请选择操作: 1
任务标题: 完成Python作业
任务描述: 完成面向对象编程练习
分类 (工作/学习/生活): 学习
优先级 (高/中/低): 高
截止日期 (YYYY-MM-DD, 可选): 2024-01-15
# 查看任务
请选择操作: 2
ID | 标题 | 分类 | 优先级 | 状态 | 截止日期
1 | 完成Python作业 | 学习 | 高 | 待完成 | 2024-01-15
🏗️ 核心类设计
Task 类 (task.py)
class Task:
"""任务类 - 表示单个任务"""
def __init__(self, title, description="", category="生活",
priority="中", due_date=None):
self.id = None
self.title = title
self.description = description
self.category = category
self.priority = priority
self.due_date = due_date
self.completed = False
self.created_at = datetime.now()
self.completed_at = None
TodoManager 类 (manager.py)
class TodoManager:
"""任务管理器 - 管理所有任务"""
def __init__(self, storage_file="data/tasks.json"):
self.tasks = []
self.storage = JsonStorage(storage_file)
self.load_tasks()
def add_task(self, task):
"""添加任务"""
def complete_task(self, task_id):
"""完成任务"""
def delete_task(self, task_id):
"""删除任务"""
📚 学习重点
1. 面向对象设计
- 单一职责原则: 每个类只负责一个功能
- 封装: 隐藏内部实现细节
- 继承: 可扩展的类层次结构
2. 数据持久化
- JSON文件读写
- 数据序列化和反序列化
- 错误处理和数据验证
3. 用户交互
- 命令行界面设计
- 输入验证和错误处理
- 用户友好的提示信息
4. 代码组织
- 模块化设计
- 清晰的项目结构
- 代码复用和维护性
🎓 扩展练习
初级扩展
- 任务编辑: 添加修改任务信息的功能
- 任务排序: 按优先级、截止日期排序
- 颜色标记: 为不同优先级使用不同颜色
中级扩展
- 子任务: 支持任务分解为子任务
- 标签系统: 为任务添加多个标签
- 提醒功能: 临近截止日期时提醒
高级扩展
- GUI界面: 使用tkinter创建图形界面
- 数据库: 使用SQLite替代JSON存储
- 网络同步: 支持多设备数据同步
- 导入导出: 支持CSV、Excel格式
🧪 测试
运行单元测试:
python -m pytest tests/
或者运行简单测试:
python tests/test_todo.py
📝 代码规范
- 使用有意义的变量和函数名
- 添加适当的注释和文档字符串
- 遵循PEP 8编码规范
- 处理异常情况
- 编写单元测试
🔧 故障排除
常见问题
文件权限错误
解决方案: 确保程序有读写data目录的权限JSON格式错误
解决方案: 删除data/tasks.json文件,程序会重新创建日期格式错误
解决方案: 使用YYYY-MM-DD格式,如2024-01-15
💡 学习建议
- 理解代码: 仔细阅读每个类和方法的实现
- 动手修改: 尝试添加新功能或修改现有功能
- 调试技巧: 学会使用print语句和调试器
- 测试驱动: 先写测试,再实现功能
- 重构代码: 不断改进代码结构和可读性
开始构建您的任务管理器吧! 📝✨
