在日常生活和工作中,高效管理时间是成功的关键之一。通过一个简单的日程管理工具,我们可以轻松地记录待办事项、设定提醒时间,并追踪任务的完成情况。在这篇博客中,我们将使用 Python 来开发一个简单的日程管理工具,从基本功能到数据存储再到用户交互界面,帮助你构建一个实用的应用程序。


1. 功能设计

我们的日程管理工具将具备以下功能:

  1. 添加任务:记录任务名称、截止时间和备注。
  2. 查看任务列表:以友好的格式展示当前任务。
  3. 更新任务状态:标记任务为完成或未完成。
  4. 删除任务:移除已完成或不需要的任务。
  5. 数据存储:将任务数据保存到本地文件以便后续加载。

2. 项目结构

工具的文件结构如下:

todo_manager/
├── todo_manager.py  # 主程序
├── tasks.json       # 存储任务数据
└── README.md        # 项目说明文档
  • todo_manager.py 包含核心功能代码。
  • tasks.json 用于存储任务数据。
  • README.md 提供使用说明。

3. 核心代码实现

以下是日程管理工具的核心代码:

3.1 数据存储与加载

使用 JSON 文件存储和加载任务数据。

import json

# 加载任务数据
def load_tasks(file="tasks.json"):
    try:
        with open(file, "r") as f:
            return json.load(f)
    except FileNotFoundError:
        return []

# 保存任务数据
def save_tasks(tasks, file="tasks.json"):
    with open(file, "w") as f:
        json.dump(tasks, f, indent=4)

3.2 添加任务功能

通过用户输入添加新的任务。

from datetime import datetime

def add_task(tasks):
    name = input("请输入任务名称:").strip()
    deadline = input("请输入截止时间(格式 YYYY-MM-DD HH:MM):").strip()
    notes = input("请输入备注(可选):").strip()

    try:
        # 验证截止时间格式
        deadline = datetime.strptime(deadline, "%Y-%m-%d %H:%M")
        task = {
            "name": name,
            "deadline": deadline.strftime("%Y-%m-%d %H:%M"),
            "notes": notes,
            "completed": False
        }
        tasks.append(task)
        print("任务已添加!")
    except ValueError:
        print("截止时间格式不正确,请重新输入!")

3.3 查看任务列表

以清晰的格式展示任务列表。

def view_tasks(tasks):
    if not tasks:
        print("当前没有任务!")
        return

    print("\n任务列表:")
    for i, task in enumerate(tasks, start=1):
        status = "✅ 完成" if task["completed"] else "❌ 未完成"
        print(f"{i}. {task['name']} | 截止时间: {task['deadline']} | 状态: {status}")
        if task["notes"]:
            print(f"   备注: {task['notes']}")
    print()

3.4 更新任务状态

标记任务为完成或未完成。

def update_task_status(tasks):
    view_tasks(tasks)
    try:
        task_index = int(input("请输入要更新状态的任务编号:")) - 1
        if 0 <= task_index < len(tasks):
            tasks[task_index]["completed"] = not tasks[task_index]["completed"]
            print(f"任务状态已更新为 {'完成' if tasks[task_index]['completed'] else '未完成'}!")
        else:
            print("任务编号无效!")
    except ValueError:
        print("请输入有效的数字!")

3.5 删除任务

移除任务列表中的任务。

def delete_task(tasks):
    view_tasks(tasks)
    try:
        task_index = int(input("请输入要删除的任务编号:")) - 1
        if 0 <= task_index < len(tasks):
            removed_task = tasks.pop(task_index)
            print(f"任务 '{removed_task['name']}' 已删除!")
        else:
            print("任务编号无效!")
    except ValueError:
        print("请输入有效的数字!")

3.6 主程序逻辑

结合所有功能,构建主菜单。

def main():
    tasks = load_tasks()

    while True:
        print("\n=== 日程管理工具 ===")
        print("1. 添加任务")
        print("2. 查看任务列表")
        print("3. 更新任务状态")
        print("4. 删除任务")
        print("5. 退出")

        choice = input("请选择操作(1-5):").strip()

        if choice == "1":
            add_task(tasks)
        elif choice == "2":
            view_tasks(tasks)
        elif choice == "3":
            update_task_status(tasks)
        elif choice == "4":
            delete_task(tasks)
        elif choice == "5":
            save_tasks(tasks)
            print("任务已保存,退出程序!")
            break
        else:
            print("无效的选择,请重新输入!")

if __name__ == "__main__":
    main()

4. 功能演示

示例 1:添加任务

请输入任务名称:完成报告
请输入截止时间(格式 YYYY-MM-DD HH:MM):2023-12-25 18:00
请输入备注(可选):与客户确认内容
任务已添加!

示例 2:查看任务列表

任务列表:
1. 完成报告 | 截止时间: 2023-12-25 18:00 | 状态: ❌ 未完成
   备注: 与客户确认内容

示例 3:更新任务状态

请输入要更新状态的任务编号:1
任务状态已更新为 完成!

示例 4:删除任务

请输入要删除的任务编号:1
任务 '完成报告' 已删除!

5. 功能扩展

  1. 支持优先级:为任务添加优先级,并按优先级排序。
  2. 定时提醒:结合 scheduletime 库实现任务提醒功能。
  3. 多用户支持:为不同用户提供独立的任务管理。
  4. 图形界面:使用 TkinterPyQt 实现 GUI 界面,提升用户体验。

6. 总结

通过本文,我们用 Python 构建了一个功能完整的日程管理工具,从任务添加、查看到状态更新和删除都得到了实现。该项目不仅实用,还能帮助初学者掌握文件读写、用户交互和数据操作等核心技能。

希望这篇博客能为你带来启发!如果你有其他改进建议或功能需求,欢迎在评论区讨论。一起用 Python 优化我们的工作和生活吧! 🎉


如果需要更多扩展功能的实现,比如结合数据库或实现跨平台应用,可以随时告诉我!