一起学习网 一起学习网


Python实现Todo任务管理应用

开发 Python, Todo, task management, command line, JSON 01-23

使用Python实现简单的Todo任务管理应用

在本教程中,我们将使用Python构建一个可执行的命令行Todo任务管理程序。这将帮助您理解如何通过Python操作文件、处理用户输入,以及如何使用字典或列表维护简单的内存数据库。


功能描述

  • 添加任务:用户可以添加任务到任务列表。
  • 查看任务列表:显示用户现有的任务。
  • 标记任务为完成:设置任务完成状态。
  • 删除任务:允许用户删除不需要的任务。
  • 持久化存储:将任务保存到本地文件中,即使程序退出后仍然可以加载任务。

实现方案

我们将使用Python内置模块 json 进行数据持久化,os 模块用于检查文件是否存在。

  1. 核心数据结构: 使用列表存储任务,每个任务是一个字典。
  2. 功能实现: 创建一个循环式命令行菜单,用户可以选择不同功能。
  3. 持久化: 在程序启动时加载任务数据,并在退出时保存数据到本地JSON文件。

步骤实现

1. 准备环境

确保您安装了Python 3.6及以上版本。JSON模块是Python自带的,无需额外安装。

2. 创建项目结构

创建一个Python文件(如 todo_manager.py),程序会生成一个本地文件(如 tasks.json)来保存任务。

touch todo_manager.py

3. 编写代码

3.1 主程序结构
import json
import os

# 定义任务文件名称
TASKS_FILE = 'tasks.json'

def load_tasks():
    """加载任务数据"""
    if os.path.exists(TASKS_FILE):
        with open(TASKS_FILE, 'r') as file:
            return json.load(file)
    return []

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

def show_menu():
    """打印菜单"""
    print("\nTodo任务管理 - 菜单")
    print("1. 查看任务列表")
    print("2. 添加新任务")
    print("3. 标记任务为完成")
    print("4. 删除任务")
    print("5. 退出程序")

3.2 核心功能
def view_tasks(tasks):
    """查看任务列表"""
    if not tasks:
        print("当前没有任何任务")
    else:
        print("\n任务列表:")
        for idx, task in enumerate(tasks, start=1):
            status = '✓' if task['completed'] else '✗'
            print(f"{idx}. [{status}] {task['title']}")

def add_task(tasks):
    """添加新任务"""
    title = input('请输入任务描述: ').strip()
    if title:
        tasks.append({"title": title, "completed": False})
        print("任务添加成功!")
    else:
        print("任务描述不能为空。")

def mark_task_completed(tasks):
    """标记任务为完成"""
    view_tasks(tasks)
    try:
        task_num = int(input("请输入要标记完成的任务编号: "))
        if task_num < 1 or task_num > len(tasks):
            print("无效编号!")
        else:
            tasks[task_num - 1]['completed'] = True
            print("任务已标记为完成!")
    except ValueError:
        print("请输入有效整数编号。")

def delete_task(tasks):
    """删除任务"""
    view_tasks(tasks)
    try:
        task_num = int(input("请输入要删除的任务编号: "))
        if task_num < 1 or task_num > len(tasks):
            print("无效编号!")
        else:
            tasks.pop(task_num - 1)
            print("任务已删除!")
    except ValueError:
        print("请输入有效整数编号。")

3.3 主程序入口
def main():
    print("欢迎使用Todo任务管理程序!")
    tasks = load_tasks()

    while True:
        show_menu()
        choice = input("\n请输入操作编号: ").strip()
        
        if choice == '1':
            view_tasks(tasks)
        elif choice == '2':
            add_task(tasks)
        elif choice == '3':
            mark_task_completed(tasks)
        elif choice == '4':
            delete_task(tasks)
        elif choice == '5':
            save_tasks(tasks)
            print("任务已保存,程序退出。")
            break
        else:
            print("无效输入,请重试!")

if __name__ == "__main__":
    main()

4. 运行程序

运行程序:

python todo_manager.py

程序将展示菜单,用户可以根据提示完成任务的添加、查看、完成标记和删除操作。退出程序后,任务会自动保存到 tasks.json 文件。


示例输出

欢迎使用Todo任务管理程序!

Todo任务管理 - 菜单
1. 查看任务列表
2. 添加新任务
3. 标记任务为完成
4. 删除任务
5. 退出程序

请输入操作编号: 2
请输入任务描述: 完成Python作业
任务添加成功!

Todo任务管理 - 菜单
1. 查看任务列表
2. 添加新任务
3. 标记任务为完成
4. 删除任务
5. 退出程序

请输入操作编号: 1

任务列表:
1. [✗] 完成Python作业

总结

通过这个教程,您学习了如何使用Python构建一个命令行交互程序,并掌握了以下技能:

  • 使用JSON实现简单的持久化存储。
  • 通过os模块检查文件存在性。
  • 使用Python列表和字典管理数据。

该项目可以进一步扩展,比如增加截止日期、分类等功能。祝学习愉快!


编辑:一起学习网