Files
2026-08-10 17:26:38 +08:00

53 lines
1.8 KiB
Python

# 第 2-9 课完整示例:多文件任务管理程序入口
#
# 直接运行本文件会创建当前课程目录下的 task_data/tasks.json。
# 该文件是练习数据,已通过 .gitignore 排除,不会被提交到 Git。
from pathlib import Path
from task_service import add_task, build_task_report, complete_task, generate_pending_tasks
from task_store import load_tasks, save_tasks
LESSON_DIR = Path(__file__).parent
DATA_FILE = LESSON_DIR / "task_data" / "tasks.json"
def print_task(task: dict[str, object]) -> None:
"""按统一格式输出一条任务。"""
status_text = "已完成" if task["completed"] else "未完成"
print(f"[{task['id']}] {task['title']}|优先级:{task['priority']}|状态:{status_text}")
def main() -> None:
"""按照读取、修改、保存和汇总的顺序运行完整示例。"""
tasks = load_tasks(DATA_FILE)
print(f"读取到 {len(tasks)} 条已有任务。")
try:
first_task = add_task(tasks, "整理本课学习笔记", "")
second_task = add_task(tasks, "运行任务管理程序", "")
except ValueError as error:
# 本示例会传入合法标题;这里演示业务错误的安全处理方式。
print(f"添加任务失败:{error}")
return
complete_task(tasks, int(first_task["id"]))
save_tasks(DATA_FILE, tasks)
print("\n本次新增的任务:")
print_task(first_task)
print_task(second_task)
print("\n未完成任务:")
for task in generate_pending_tasks(tasks):
print_task(task)
report = build_task_report(tasks)
print("\n任务汇总:")
print(f"全部:{report['total']} 条,已完成:{report['completed']} 条,未完成:{report['pending']} 条。")
if __name__ == "__main__":
main()