Project Management Tool
Description:
Create a tool to manage tasks and projects, assign priorities, track progress, and
allow for task history, undo actions, and collaboration.
Features and Corresponding Data Structures:
1. Task Storage and Assignment:
o Array:
Store the list of all tasks with attributes like title, description,
priority, and status (e.g., pending, in progress, completed).
Example: tasks[] = [{id: 1, title: "Design UI", priority: "High"},
...]
2. Task Prioritization:
o Queue:
Use a priority queue to manage tasks based on their
urgency.
Tasks with higher priority are processed first.
3. Task History and Undo Actions:
o Stack:
Implement undo functionality for task actions (e.g., marking
as completed or deleting a task).
Push every action onto the stack; pop to undo.
4. Collaboration (Task Assignment):
o Linked List:
Use a linked list to represent dynamically assigned tasks to
team members.
Each node represents a user and links to their assigned tasks.
5. Task Scheduling:
o Queue:
Manage task scheduling using a queue (FIFO).
Tasks are processed in the order they are scheduled, ensuring
fairness and sequential task execution.
6. Project Progress Tracking:
o Array:
Track the overall status of the project by storing task statuses
in an array and calculating progress percentages dynamically.
Example: progress[] = ["Completed", "In Progress",
"Pending"].
7. Subtasks and Dependencies:
o Linked List:
Represent dependencies between tasks using a linked list
where each node connects to its dependent subtasks.
Example: A task like "Launch Campaign" could be linked to
subtasks like "Prepare Assets" → "Set Up Ads" → "Review".
8. Notification System:
o Queue:
Use a queue to manage notifications for task updates (e.g.,
"Task Assigned", "Task Due").
Notifications are delivered in the order they are generated.
9. Archived Tasks:
o Stack:
Maintain a stack of archived tasks for quick retrieval of
recently archived items.
Allows users to restore tasks if needed.
10.Search and Filter Functionality:
o Array:
Use arrays to implement search and filter operations, such as
finding tasks assigned to a specific user or filtering by priority.
Implementation Flow:
1. Task Creation:
o Add tasks to an array with details like priority and due dates.
2. Task Assignment:
o Assign tasks to team members using a linked list, allowing
dynamic addition and deletion.
3. Task Execution:
o Process tasks based on priority using a priority queue.
o Completed tasks are pushed onto a stack for history tracking.
4. Undo/Redo Actions:
o Maintain a stack of actions for undo/redo functionality, enabling
users to revert changes easily.
5. Task Dependencies:
o Represent dependent tasks using a linked list or graph structure.
Advanced Add-ons:
Gantt Chart:
o Use an array of linked lists to represent task timelines, where
each project is an array and each node in the list represents a task's
time slot.
Collaboration Queue:
o Allow a queue for comments or feedback on tasks, ensuring
messages are addressed in order.