# 使用Python实现一个简易的Todo任务列表管理系统
开发
使用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
查看当前任务。 - 选择
3
输入ID完成任务。 - 选择
4
删除某任务。 - 选择
5
或6
保存/加载任务。
总结
通过以上实现,我们创建了一个简易的Todo任务管理系统。它不仅涵盖了基本的增删改查操作,还支持文件持久化功能,能够有效提高管理任务的效率。
编辑:一起学习网