在日常生活和工作中,高效管理时间是成功的关键之一。通过一个简单的日程管理工具,我们可以轻松地记录待办事项、设定提醒时间,并追踪任务的完成情况。在这篇博客中,我们将使用 Python 来开发一个简单的日程管理工具,从基本功能到数据存储再到用户交互界面,帮助你构建一个实用的应用程序。
1. 功能设计
我们的日程管理工具将具备以下功能:
- 添加任务:记录任务名称、截止时间和备注。
- 查看任务列表:以友好的格式展示当前任务。
- 更新任务状态:标记任务为完成或未完成。
- 删除任务:移除已完成或不需要的任务。
- 数据存储:将任务数据保存到本地文件以便后续加载。
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. 功能扩展
- 支持优先级:为任务添加优先级,并按优先级排序。
- 定时提醒:结合
schedule
或time
库实现任务提醒功能。 - 多用户支持:为不同用户提供独立的任务管理。
- 图形界面:使用
Tkinter
或PyQt
实现 GUI 界面,提升用户体验。
6. 总结
通过本文,我们用 Python 构建了一个功能完整的日程管理工具,从任务添加、查看到状态更新和删除都得到了实现。该项目不仅实用,还能帮助初学者掌握文件读写、用户交互和数据操作等核心技能。
希望这篇博客能为你带来启发!如果你有其他改进建议或功能需求,欢迎在评论区讨论。一起用 Python 优化我们的工作和生活吧! 🎉
如果需要更多扩展功能的实现,比如结合数据库或实现跨平台应用,可以随时告诉我!