个人任务管理器 (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. 代码组织

  • 模块化设计
  • 清晰的项目结构
  • 代码复用和维护性

🎓 扩展练习

初级扩展

  1. 任务编辑: 添加修改任务信息的功能
  2. 任务排序: 按优先级、截止日期排序
  3. 颜色标记: 为不同优先级使用不同颜色

中级扩展

  1. 子任务: 支持任务分解为子任务
  2. 标签系统: 为任务添加多个标签
  3. 提醒功能: 临近截止日期时提醒

高级扩展

  1. GUI界面: 使用tkinter创建图形界面
  2. 数据库: 使用SQLite替代JSON存储
  3. 网络同步: 支持多设备数据同步
  4. 导入导出: 支持CSV、Excel格式

🧪 测试

运行单元测试:

python -m pytest tests/

或者运行简单测试:

python tests/test_todo.py

📝 代码规范

  • 使用有意义的变量和函数名
  • 添加适当的注释和文档字符串
  • 遵循PEP 8编码规范
  • 处理异常情况
  • 编写单元测试

🔧 故障排除

常见问题

  1. 文件权限错误

    解决方案: 确保程序有读写data目录的权限
    
  2. JSON格式错误

    解决方案: 删除data/tasks.json文件,程序会重新创建
    
  3. 日期格式错误

    解决方案: 使用YYYY-MM-DD格式,如2024-01-15
    

💡 学习建议

  1. 理解代码: 仔细阅读每个类和方法的实现
  2. 动手修改: 尝试添加新功能或修改现有功能
  3. 调试技巧: 学会使用print语句和调试器
  4. 测试驱动: 先写测试,再实现功能
  5. 重构代码: 不断改进代码结构和可读性

开始构建您的任务管理器吧! 📝✨

上次更新:
贡献者: Joe