Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <string>
- using namespace std;
- class Task {
- private:
- string task;
- bool isCompleted;
- public:
- Task(string task) : task(task), isCompleted(false) {}
- void markComplete() {
- isCompleted = true;
- }
- string getTask() const {
- return task;
- }
- bool getStatus() const {
- return isCompleted;
- }
- void display(int index) const {
- cout << index + 1 << ". [" << (isCompleted ? "X" : " ") << "] " << task << endl;
- }
- };
- class Todo {
- private:
- vector<Task> tasks;
- public:
- void addTask(const string& todo) {
- tasks.push_back(Task(todo));
- }
- void listTasks() const {
- if (tasks.empty()) {
- cout << "No tasks available.\n";
- return;
- }
- cout << "Your Tasks:\n";
- for (size_t i = 0; i < tasks.size(); ++i) {
- tasks[i].display(i);
- }
- }
- void markTaskCompleted(int index) {
- if (index < 1 || index > (int)tasks.size()) {
- cout << "Invalid task number.\n";
- return;
- }
- tasks[index - 1].markComplete();
- cout << "Task marked as completed.\n";
- }
- void deleteTask(int index) {
- if (index < 1 || index > (int)tasks.size()) {
- cout << "Invalid task number.\n";
- return;
- }
- tasks.erase(tasks.begin() + index - 1);
- cout << "Task deleted.\n";
- }
- };
- int main() {
- Todo myTodo;
- int choice;
- string task;
- int index;
- while (true) {
- cout << "\n--- TODO MENU ---\n";
- cout << "1. Add Task\n";
- cout << "2. List Tasks\n";
- cout << "3. Mark Task as Completed\n";
- cout << "4. Delete Task\n";
- cout << "5. Exit\n";
- cout << "Enter your choice: ";
- cin >> choice;
- cin.ignore(); // To consume newline left by cin
- switch (choice) {
- case 1:
- cout << "Enter task: ";
- getline(cin, task);
- myTodo.addTask(task);
- break;
- case 2:
- myTodo.listTasks();
- break;
- case 3:
- cout << "Enter task number to mark complete: ";
- cin >> index;
- myTodo.markTaskCompleted(index);
- break;
- case 4:
- cout << "Enter task number to delete: ";
- cin >> index;
- myTodo.deleteTask(index);
- break;
- case 5:
- cout << "Exiting...\n";
- return 0;
- default:
- cout << "Invalid choice.\n";
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement