Skip to content

Python Mini Project: To-Do List Manager #27

Description

@asifmohammed1

Objective

Build a console-based To-Do List Manager using Python.

The application should allow users to create, update, delete, search, and mark tasks as completed.

Use Object-Oriented Programming (OOP) and organize your code using classes and functions.


Features

1. Add Task

Allow the user to add a new task.

Each task should contain:

  • Task ID
  • Task Name
  • Priority (High / Medium / Low)
  • Due Date
  • Status (Pending)

2. View All Tasks

Display all tasks in a formatted table.

Example:

ID   Task                  Priority   Due Date     Status
---------------------------------------------------------
1    Learn Python          High       10-07-2026   Pending
2    Complete Assignment   Medium     12-07-2026   Completed

3. Search Task

Search a task by:

  • Task ID
  • Task Name

4. Update Task

Allow the user to update:

  • Task Name
  • Priority
  • Due Date

5. Mark Task as Completed

Update the task status from:

  • Pending → Completed

6. Delete Task

Delete a task using Task ID.


7. View Pending Tasks

Display only tasks whose status is Pending.


8. View Completed Tasks

Display only tasks whose status is Completed.


9. Exit

Exit the application with a thank you message.


Class Design

Class: Task

Attributes

  • task_id
  • task_name
  • priority
  • due_date
  • status

Methods

  • display_task()
  • mark_completed()
  • update_task()

Class: TodoManager

Methods

  • add_task()
  • view_tasks()
  • search_task()
  • update_task()
  • delete_task()
  • mark_completed()
  • pending_tasks()
  • completed_tasks()
  • menu()

Sample Menu

===== TO-DO LIST =====

1. Add Task
2. View Tasks
3. Search Task
4. Update Task
5. Mark as Completed
6. Delete Task
7. View Pending Tasks
8. View Completed Tasks
9. Exit

Enter your choice:

Sample Data

Task(
    task_id=1,
    task_name="Learn Python",
    priority="High",
    due_date="10-07-2026",
    status="Pending"
)

Hints

Hint 1

Store all tasks in a list.

Example:

tasks = []

Hint 2

Each task should be an object.

Example:

task = Task(1, "Learn Python", "High", "10-07-2026", "Pending")
tasks.append(task)

Hint 3

Search a task by looping through the task list.

for task in tasks:
    if task.task_id == search_id:
        return task

Hint 4

Generate Task IDs automatically.

task_id = len(tasks) + 1

Hint 5

Delete a task using:

tasks.remove(task)

or

del tasks[index]

Hint 6

To display only pending tasks:

for task in tasks:
    if task.status == "Pending":
        task.display_task()

Hint 7

Keep each function responsible for one task only.

Example:

  • add_task()
  • search_task()
  • delete_task()
  • update_task()
  • mark_completed()

Python Topics Covered

  • Variables
  • Data Types
  • Strings
  • Lists
  • Classes
  • Objects
  • Constructors (__init__)
  • Functions
  • Loops
  • If-Else
  • Searching
  • Updating Objects
  • Basic OOP
  • Menu-Driven Programming

Bonus Challenges (Optional)

  • Save tasks to a JSON file.
  • Load tasks when the application starts.
  • Sort tasks by priority.
  • Display overdue tasks.
  • Count total, pending, and completed tasks.
  • Add task categories (Work, Personal, Study).

Expected Folder Structure

todo_app/
│
├── main.py
├── task.py
├── todo_manager.py
└── README.md

Goal

Build a simple and clean To-Do List Manager using classes, objects, lists, loops, functions, and conditional statements. Focus on writing modular, reusable code with a menu-driven interface.

Metadata

Metadata

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions