Advertisement
DrAungWinHtut

todo1.cpp

May 21st, 2025
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.73 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <string>
  4.  
  5. using namespace std;
  6.  
  7. class Task {
  8. private:
  9.     string task;
  10.     bool isCompleted;
  11.  
  12. public:
  13.     Task(string task) : task(task), isCompleted(false) {}
  14.  
  15.     void markComplete() {
  16.         isCompleted = true;
  17.     }
  18.  
  19.     string getTask() const {
  20.         return task;
  21.     }
  22.  
  23.     bool getStatus() const {
  24.         return isCompleted;
  25.     }
  26.  
  27.     void display(int index) const {
  28.         cout << index + 1 << ". [" << (isCompleted ? "X" : " ") << "] " << task << endl;
  29.     }
  30. };
  31.  
  32. class Todo {
  33. private:
  34.     vector<Task> tasks;
  35.  
  36. public:
  37.     void addTask(const string& todo) {
  38.         tasks.push_back(Task(todo));
  39.     }
  40.  
  41.     void listTasks() const {
  42.         if (tasks.empty()) {
  43.             cout << "No tasks available.\n";
  44.             return;
  45.         }
  46.  
  47.         cout << "Your Tasks:\n";
  48.         for (size_t i = 0; i < tasks.size(); ++i) {
  49.             tasks[i].display(i);
  50.         }
  51.     }
  52.  
  53.     void markTaskCompleted(int index) {
  54.         if (index < 1 || index > (int)tasks.size()) {
  55.             cout << "Invalid task number.\n";
  56.             return;
  57.         }
  58.         tasks[index - 1].markComplete();
  59.         cout << "Task marked as completed.\n";
  60.     }
  61.  
  62.     void deleteTask(int index) {
  63.         if (index < 1 || index > (int)tasks.size()) {
  64.             cout << "Invalid task number.\n";
  65.             return;
  66.         }
  67.         tasks.erase(tasks.begin() + index - 1);
  68.         cout << "Task deleted.\n";
  69.     }
  70. };
  71.  
  72. int main() {
  73.     Todo myTodo;
  74.     int choice;
  75.     string task;
  76.     int index;
  77.  
  78.     while (true) {
  79.         cout << "\n--- TODO MENU ---\n";
  80.         cout << "1. Add Task\n";
  81.         cout << "2. List Tasks\n";
  82.         cout << "3. Mark Task as Completed\n";
  83.         cout << "4. Delete Task\n";
  84.         cout << "5. Exit\n";
  85.         cout << "Enter your choice: ";
  86.         cin >> choice;
  87.         cin.ignore(); // To consume newline left by cin
  88.  
  89.         switch (choice) {
  90.             case 1:
  91.                 cout << "Enter task: ";
  92.                 getline(cin, task);
  93.                 myTodo.addTask(task);
  94.                 break;
  95.             case 2:
  96.                 myTodo.listTasks();
  97.                 break;
  98.             case 3:
  99.                 cout << "Enter task number to mark complete: ";
  100.                 cin >> index;
  101.                 myTodo.markTaskCompleted(index);
  102.                 break;
  103.             case 4:
  104.                 cout << "Enter task number to delete: ";
  105.                 cin >> index;
  106.                 myTodo.deleteTask(index);
  107.                 break;
  108.             case 5:
  109.                 cout << "Exiting...\n";
  110.                 return 0;
  111.             default:
  112.                 cout << "Invalid choice.\n";
  113.         }
  114.     }
  115. }
  116.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement