一起学习网 一起学习网


# 使用Python实现一个简易的Todo任务列表管理系统

开发 # 使用Python实现一个简易的Todo任务列表管理系统,一起学习网, 学习交流平台, 在线学习, 学习资源, 教育平台, 学习社区, 学生论坛, 学习工具, 学习技巧, 学习经验 02-02

使用Python实现一个简易的Todo任务列表管理系统

功能描述

在日常生活和工作中,任务管理是一项基础需求。我们将使用Python编写一个简易的Todo任务列表管理系统,支持以下功能:

  • 添加任务
  • 查看任务列表
  • 标记任务为已完成
  • 删除任务
  • 保存任务到文件
  • 从文件加载任务

方案设计

系统将使用Python的内置json模块来保存和加载任务数据。交互界面将基于命令行实现,用户可以通过选择菜单项进行操作。任务数据将存储在列表中,每个任务包含以下信息:

  • id: 唯一标识符
  • name: 任务名称
  • completed: 是否完成

编码实现

以下是逐步实现方案的代码与说明。

第一步:初始化主程序结构

我们首先定义任务管理系统的骨架结构,包括主菜单和运行逻辑代码。

import json

# 全局任务列表
tasks = []
next_id = 1  # 任务ID的计数器

def main():
    print("=== Todo任务列表管理系统 ===")
    while True:
        print("\n请选择操作:")
        print("1. 添加任务")
        print("2. 查看任务列表")
        print("3. 标记任务为已完成")
        print("4. 删除任务")
        print("5. 保存任务到文件")
        print("6. 从文件加载任务")
        print("7. 退出程序")
        
        choice = input("\n请输入操作编号:")
        
        if choice == "1":
            add_task()
        elif choice == "2":
            view_tasks()
        elif choice == "3":
            complete_task()
        elif choice == "4":
            delete_task()
        elif choice == "5":
            save_tasks_to_file()
        elif choice == "6":
            load_tasks_from_file()
        elif choice == "7":
            print("\n感谢使用,再见!")
            break
        else:
            print("无效的输入,请重新选择。")

if __name__ == "__main__":
    main()

说明:上述代码构造了任务管理系统的主框架,并循环展示一个用户菜单。


第二步:实现添加任务功能

实现add_task()函数,允许用户输入任务名称并将其加入到任务列表中。

def add_task():
    global next_id
    name = input("\n请输入任务名称:").strip()
    if not name:
        print("任务名称不能为空!")
        return
    
    task = {"id": next_id, "name": name, "completed": False}
    tasks.append(task)
    print(f"任务'{name}'已成功添加!")
    next_id += 1

功能说明:新增的任务将自动分配一个唯一ID并按照未完成状态加入。


第三步:实现查看任务功能

编写view_tasks()函数,用户可以查看所有任务,包括完成状态。

def view_tasks():
    if not tasks:
        print("\n当前没有任何任务。")
        return
    
    print("\n=== 当前任务列表 ===")
    for task in tasks:
        status = "完成" if task["completed"] else "未完成"
        print(f"ID: {task['id']}, 名称: {task['name']}, 状态: {status}")

功能说明:任务状态会直观显示“完成”或“未完成”。


第四步:实现标记任务完成

用户可以通过任务ID标记某任务为已完成。

def complete_task():
    task_id = input("\n请输入要标记为已完成的任务ID:").strip()
    if not task_id.isdigit():
        print("请输入有效的数字ID!")
        return
    
    task_id = int(task_id)
    for task in tasks:
        if task["id"] == task_id:
            if task["completed"]:
                print(f"任务'{task['name']}'已经是完成状态!")
            else:
                task["completed"] = True
                print(f"任务'{task['name']}'已成功标记为完成!")
            return
    
    print("未找到该任务,请确认输入的ID。")

第五步:实现删除任务

允许用户通过ID删除某个任务。

def delete_task():
    task_id = input("\n请输入要删除的任务ID:").strip()
    if not task_id.isdigit():
        print("请输入有效的数字ID!")
        return
    
    task_id = int(task_id)
    for task in tasks:
        if task["id"] == task_id:
            tasks.remove(task)
            print(f"任务'{task['name']}'已成功删除!")
            return
    
    print("未找到该任务,请确认输入的ID。")

第六步:保存任务到文件

将当前任务列表保存到JSON文件中,以便后续加载。

def save_tasks_to_file():
    file_name = input("\n请输入保存文件的名称(例如 tasks.json):").strip()
    if not file_name:
        print("文件名不能为空!")
        return
    
    try:
        with open(file_name, 'w', encoding='utf-8') as file:
            json.dump(tasks, file, ensure_ascii=False, indent=4)
        print(f"任务已成功保存到文件'{file_name}'!")
    except Exception as e:
        print(f"保存文件时发生错误:{e}")

第七步:从文件加载任务

从JSON文件中加载任务列表。

def load_tasks_from_file():
    global tasks, next_id
    file_name = input("\n请输入加载文件的名称(例如 tasks.json):").strip()
    if not file_name:
        print("文件名不能为空!")
        return
    
    try:
        with open(file_name, 'r', encoding='utf-8') as file:
            tasks = json.load(file)
            if tasks:
                next_id = max(task['id'] for task in tasks) + 1
            else:
                next_id = 1
        print(f"任务已成功从文件'{file_name}'加载!")
    except FileNotFoundError:
        print(f"文件'{file_name}'不存在!")
    except Exception as e:
        print(f"加载文件时发生错误:{e}")

使用示例

  1. 启动程序后,会显示操作菜单。
  2. 选择1添加任务,输入任务名称。
  3. 选择2查看当前任务。
  4. 选择3输入ID完成任务。
  5. 选择4删除某任务。
  6. 选择56保存/加载任务。

总结

通过以上实现,我们创建了一个简易的Todo任务管理系统。它不仅涵盖了基本的增删改查操作,还支持文件持久化功能,能够有效提高管理任务的效率。


编辑:一起学习网