python项目开发——个人任务管理系统

发布于:2024-06-03 ⋅ 阅读:(133) ⋅ 点赞:(0)

项目名称:个人任务管理系统 (Personal Task Management System)

  • 项目简介

开发一个个人任务管理系统,帮助用户记录和管理日常任务。该系统应具备添加任务、查看任务、更新任务状态和删除任务等基本功能,并将数据存储在文件中。通过完成该项目,学员将综合运用Python编程能力,并撰写项目开发报告。

  • 项目需求

1. 用户界面

   提供简易的命令行界面供用户操作。

   用户可以选择不同的操作:添加任务、查看任务、更新任务状态、删除任务和退出程序。

2. 功能模块

  1. 添加任务

     用户输入任务标题、描述、截止日期和优先级。

     将任务信息保存到一个数据结构中(如列表)。

  1. 查看任务

     显示所有已记录的任务。

     每条记录包括任务标题、描述、截止日期、优先级和状态。

  1. 更新任务状态

     用户可以选择某个任务并更新其状态(如完成、进行中、未开始)。

  1. 删除任务

     用户可以按任务标题删除特定的任务记录。

  1. 退出程序

     用户选择退出程序后,系统保存所有任务记录到一个文件中,以便下次启动时读取。

3. 数据存储

   使用JSON文件保存和读取任务记录,确保数据在程序关闭后不丢失。

  •  项目开发步骤

1. 需求分析

   分析用户需要的功能和操作流程。

   确定数据存储格式和文件结构。

2. 系统设计

   设计程序的模块结构和功能函数。

   设计数据存储结构(如列表存储任务)。

   确定用户界面和交互方式。

3. 开发源码

   编写添加任务、查看任务、更新任务状态、删除任务和文件读写等功能函数。

   创建用户交互界面,接收用户输入并调用相应的功能模块。

   处理异常情况和错误输入。

4. 测试与验证

   测试各个功能模块,确保其正常工作。

   验证数据存储和读取功能,确保数据持久化。

   进行综合测试,模拟用户操作流程,检查系统整体功能。

  • 项目开发报告
  • 项目需求分析

1. 用户需要一个命令行界面操作系统,可以添加、查看、更新和删除任务。

2. 任务信息包括标题、描述、截止日期、优先级和状态。

3. 数据需要持久化存储,确保程序关闭后数据不丢失。

  • 系统设计

1. 模块结构

   添加任务模块

   查看任务模块

   更新任务状态模块

   删除任务模块

   文件读写模块

2. 数据存储结构

   使用列表存储任务,每个任务是一个字典,包含标题、描述、截止日期、优先级和状态等信息。

   使用JSON文件保存和读取任务数据。

3. 用户界面

   命令行界面,提供操作菜单供用户选择。

  • 测试与验证

1. 功能模块测试

   添加任务:输入不同任务信息,查看是否正确保存。

   查看任务:添加多个任务后,查看是否显示所有任务。

   更新任务状态:更新任务状态,查看状态是否正确更新。

   删除任务:删除任务后,查看任务列表是否正确更新。

2. 数据存储测试

   添加任务后退出程序,再次启动程序,查看任务是否正确读取。

3. 综合测试

   模拟用户操作流程,进行添加、查看、更新、删除任务的操作,验证系统整体功能。

  • 模块展示

任务列表

tasks = []

这是一个全局变量tasks,用于存储所有任务的信息,初始值为空列表。

加载任务数据

def load():
    if os.path.exists('task.json'):
        with open('task.json', 'r', encoding='utf-8') as file:
            global tasks
            tasks = json.load(file)
            print("任务数据加载成功")
    else:
        print("存储的数据文件不翼而飞了!!")

功能:从文件task.json中加载任务数据到全局变量tasks

  • 首先检查文件是否存在。
  • 如果文件存在,打开并读取文件内容,将其解析为Python对象并赋值给tasks
  • 如果文件不存在,打印一条错误消息。

保存任务数据

def save():
    with open('task.json', 'w', encoding='utf-8') as file:
        json.dump(tasks, file, ensure_ascii=False, indent=4)
        print("任务保存成功,记得完成!!")

功能:将当前的任务数据保存到文件task.json中。

  • 打开文件task.json,以写模式。
  • tasks的内容以JSON格式写入文件中。
  • 打印保存成功的消息。

添加任务

def add():
    title = input("任务名字: ")
    details = input("任务内容是: ")
    due_date = input("任务截止到(格式:YYYY-MM-DD): ")
    priority = input("任务重要否: ")
    task = {
        '标题': title,
        '内容': details,
        '截止日期': due_date,
        '优先级': priority,
        '状态': '未开始'
    }
    tasks.append(task)
    print("添加成功")

功能:添加一个新的任务到任务列表中。

  • 通过用户输入,获取任务的标题、内容、截止日期和优先级。
  • 将这些信息封装成一个字典对象,并设置任务状态为"未开始"。
  • 将这个任务对象添加到tasks列表中。
  • 打印任务添加成功的消息。

查看任务

def cat():
    if not tasks:
        print("还没有任务")
    else:
        for idx, task in enumerate(tasks, start=1):
            print(
                f"{idx}. 标题: {task['标题']}, 内容: {task['内容']}, 截止日期: {task['截止日期']}, 重要度: {task['优先级']}, 状态: {task['状态']}")

功能:查看并显示所有任务的详细信息。

  • 检查任务列表是否为空。
  • 如果为空,打印没有任务的消息。
  • 如果不为空,遍历任务列表,并打印每个任务的详细信息,包括编号、标题、内容、截止日期、优先级和状态。

更新任务状态

def update():
    cat()
    index = int(input("请选择要更新状态的任务编号:")) - 1
    if 0 <= index < len(tasks):
        status = input("请输入新的任务状态(已完成、正进行、待完成):")
        tasks[index]['状态'] = status
        print("更新成功")
    else:
        print("编号无效")

功能:更新指定任务的状态。

  • 调用cat()函数显示所有任务。
  • 通过用户输入,获取要更新状态的任务编号,并将其转换为列表索引。
  • 检查输入的编号是否有效。
  • 如果有效,获取新的任务状态并更新任务的状态字段。
  • 打印状态更新成功的消息。
  • 如果编号无效,打印错误消息。

删除任务

def delete():
    cat()
    index = int(input("输入删除的任务编号:")) - 1
    if 0 <= index < len(tasks):
        del tasks[index]
        print("任务删除成功")
    else:
        print("编号无效")

功能:删除指定的任务。

  • 调用cat()函数显示所有任务。
  • 通过用户输入,获取要删除的任务编号,并将其转换为列表索引。
  • 检查输入的编号是否有效。
  • 如果有效,删除指定的任务。
  • 打印任务删除成功的消息。
  • 如果编号无效,打印错误消息。

主程序

def main():
    load()
    while True:
        print("\n请选择:")
        print("1. 添加")
        print("2. 查看")
        print("3. 更新")
        print("4. 删除")
        print("5. 退出")
        choice = input("输入选择:")
        if choice == '1':
            add()
        elif choice == '2':
            cat()
        elif choice == '3':
            update()
        elif choice == '4':
            delete()
        elif choice == '5':
            save()
            print("程序退出")
            break
        else:
            print("选择无效,重新输入")

功能:主程序入口,提供用户交互界面。

  • 加载任务数据。
  • 显示操作菜单,提供添加、查看、更新、删除任务和退出程序的选项。
  • 根据用户输入的选择,调用相应的函数进行操作。
  • 如果用户选择退出,保存任务数据并退出程序。
  • 如果用户输入无效,提示重新输入。

主程序入口

if __name__ == "__main__":
    main()

功能:检查当前模块是否作为主程序运行。如果是,则调用main()函数启动程序。

  • 完整代码呈现:
import json
import os

# 任务列表
tasks = []


# 加载任务数据
def load():
    if os.path.exists('task.json'):
        with open('task.json', 'r', encoding='utf-8') as file:
            global tasks
            tasks = json.load(file)
            print("任务数据加载成功")
    else:
        print("存储的数据文件不翼而飞了!!")


# 保存任务数据
def save():
    with open('task.json', 'w', encoding='utf-8') as file:
        json.dump(tasks, file, ensure_ascii=False, indent=4)
        print("任务保存成功,记得完成!!")


# 添加任务
def add():
    title = input("任务名字: ")
    details = input("任务内容是: ")
    due_date = input("任务截止到(格式:YYYY-MM-DD): ")
    priority = input("任务重要否: ")
    task = {
        '标题': title,
        '内容': details,
        '截止日期': due_date,
        '优先级': priority,
        '状态': '未开始'
    }
    tasks.append(task)
    print("添加成功")


# 查看任务
def cat():
    if not tasks:
        print("还没有任务")
    else:
        for idx, task in enumerate(tasks, start=1):
            print(
                f"{idx}. 标题: {task['标题']}, 内容: {task['内容']}, 截止日期: {task['截止日期']}, 重要度: {task['优先级']}, 状态: {task['状态']}")


# 更新任务状态
def update():
    cat()
    index = int(input("请选择要更新状态的任务编号:")) - 1
    if 0 <= index < len(tasks):
        status = input("请输入新的任务状态(已完成、正进行、待完成):")
        tasks[index]['状态'] = status
        print("更新成功")
    else:
        print("编号无效")


# 删除任务
def delete():
    cat()
    index = int(input("输入删除的任务编号:")) - 1
    if 0 <= index < len(tasks):
        del tasks[index]
        print("任务删除成功")
    else:
        print("编号无效")


# 主程序
def main():
    load()
    while True:
        print("\n请选择:")
        print("1. 添加")
        print("2. 查看")
        print("3. 更新")
        print("4. 删除")
        print("5. 退出")
        choice = input("输入选择:")
        if choice == '1':
            add()
        elif choice == '2':
            cat()
        elif choice == '3':
            update()
        elif choice == '4':
            delete()
        elif choice == '5':
            save()
            print("程序退出")
            break
        else:
            print("选择无效,重新输入")


if __name__ == "__main__":
    main()

网站公告

今日签到

点亮在社区的每一天
去签到