Python项目实战:构建一个功能强大的任务管理系统394


本文将详细介绍一个使用Python构建的任务管理系统的完整过程,涵盖需求分析、设计、编码和测试等关键环节。我们将使用面向对象编程的思想,结合常用的Python库,例如sqlite3 (数据库操作) 和 datetime (日期时间处理),创建一个具有添加任务、查看任务、标记完成和删除任务等功能的实用工具。

一、需求分析

我们的任务管理系统需要具备以下功能:
添加新任务:包括任务描述、截止日期和优先级。
查看任务列表:可以按优先级、截止日期等进行排序。
标记任务完成:将已完成的任务标记为已完成状态。
删除任务:删除不需要的任务。
持久化存储:将任务数据保存到本地数据库,以便下次启动时可以恢复。


二、系统设计

我们将使用面向对象编程的思想来设计系统。主要类包括:
Task 类:表示单个任务,包含任务描述 (description)、截止日期 (due_date)、优先级 (priority) 和完成状态 (completed) 等属性。
TaskManager 类:负责管理任务列表,提供添加、查看、标记完成和删除任务等方法。

我们将使用SQLite作为数据库,因为它轻量级且易于集成到Python中。

三、Python代码实现```python
import sqlite3
from datetime import datetime
class Task:
def __init__(self, description, due_date, priority):
= description
self.due_date = due_date
= priority
= False
def __str__(self):
status = "已完成" if else "未完成"
return f"描述: {}, 截止日期: {self.due_date}, 优先级: {}, 状态: {status}"

class TaskManager:
def __init__(self, db_name=""):
= (db_name)
= ()
self.create_table()
def create_table(self):
('''
CREATE TABLE IF NOT EXISTS tasks (
id INTEGER PRIMARY KEY AUTOINCREMENT,
description TEXT NOT NULL,
due_date TEXT,
priority INTEGER,
completed INTEGER
)
''')
()
def add_task(self, task):
("INSERT INTO tasks (description, due_date, priority, completed) VALUES (?, ?, ?, ?)",
(, task.due_date, , ))
()
def get_tasks(self, order_by="due_date"):
(f"SELECT * FROM tasks ORDER BY {order_by}")
return [Task(*row) for row in ()]
def mark_complete(self, task_id):
("UPDATE tasks SET completed = 1 WHERE id = ?", (task_id,))
()
def delete_task(self, task_id):
("DELETE FROM tasks WHERE id = ?", (task_id,))
()
def close(self):
()

if __name__ == "__main__":
manager = TaskManager()
while True:
print("任务管理系统")
print("1. 添加任务")
print("2. 查看任务")
print("3. 标记完成")
print("4. 删除任务")
print("5. 退出")
choice = input("请选择:")
if choice == '1':
description = input("请输入任务描述:")
due_date_str = input("请输入截止日期(YYYY-MM-DD): ")
try:
due_date = (due_date_str, "%Y-%m-%d").date()
except ValueError:
print("无效的日期格式")
continue
priority = int(input("请输入优先级(1-高, 2-中, 3-低): "))
task = Task(description, due_date, priority)
manager.add_task(task)
print("任务已添加")
elif choice == '2':
tasks = manager.get_tasks()
if tasks:
for task in tasks:
print(task)
else:
print("暂无任务")
elif choice == '3':
tasks = manager.get_tasks()
if tasks:
for i, task in enumerate(tasks):
print(f"{i+1}. {task}")
task_id = int(input("请选择要标记完成的任务序号: ")) -1
if 0

2025-06-15


上一篇:Python高效提取Excel数据:方法、技巧及最佳实践

下一篇:Python 函数内函数调用详解:提升代码效率与可读性的技巧