From 51a8f346e9751234c7ec87e376997b1d59ff55cd Mon Sep 17 00:00:00 2001 From: swasti Date: Thu, 16 Oct 2025 22:43:08 +0530 Subject: [PATCH 1/2] todo list program added --- Src/To-Do-List/todo.cpp | 139 ++++++++++++++++++++++++++++++++++++++++ Src/To-Do-List/todo.exe | Bin 0 -> 86259 bytes 2 files changed, 139 insertions(+) create mode 100644 Src/To-Do-List/todo.cpp create mode 100644 Src/To-Do-List/todo.exe diff --git a/Src/To-Do-List/todo.cpp b/Src/To-Do-List/todo.cpp new file mode 100644 index 0000000..6c27b8f --- /dev/null +++ b/Src/To-Do-List/todo.cpp @@ -0,0 +1,139 @@ +#include +#include +#include +using namespace std; + +// Class representing a single Task +class Task { +private: + string title; + bool isCompleted; + +public: + // Constructor + Task(string t) { + title = t; + isCompleted = false; + } + + // Mark task as completed + void markCompleted() { + isCompleted = true; + } + + // Get task title + string getTitle() const { + return title; + } + + // Check completion status + bool getStatus() const { + return isCompleted; + } +}; + +// Class representing the To-Do List +class ToDoList { +private: + vector tasks; + +public: + // Add a new task + void addTask(const string& title) { + tasks.push_back(Task(title)); + cout << "Task added successfully!\n"; + } + + // Display all tasks + void showTasks() const { + if (tasks.empty()) { + cout << "No tasks available!\n"; + return; + } + + cout << "\n------ To-Do List ------\n"; + for (size_t i = 0; i < tasks.size(); ++i) { + cout << i + 1 << ". " << tasks[i].getTitle() + << " [" << (tasks[i].getStatus() ? "Done" : "Pending") << "]\n"; + } + cout << "------------------------\n"; + } + + // Mark a task as completed + void markTaskCompleted(int index) { + if (index < 1 || index > (int)tasks.size()) { + cout << "Invalid task number!\n"; + return; + } + tasks[index - 1].markCompleted(); + cout << "Task marked as completed!\n"; + } + + // Delete a task + 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 successfully!\n"; + } +}; + +// Main program +int main() { + ToDoList todo; + int choice; + string title; + int index; + + cout << "\n===== TO-DO LIST APPLICATION =====\n"; + cout << "Manage your daily tasks efficiently.\n"; + + do { + cout << "\nMenu:\n"; + cout << "1. Add Task\n"; + cout << "2. View 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 handle newline + + switch (choice) { + case 1: + cout << "Enter task title: "; + getline(cin, title); + todo.addTask(title); + break; + + case 2: + todo.showTasks(); + break; + + case 3: + cout << "Enter task number to mark completed: "; + cin >> index; + todo.markTaskCompleted(index); + break; + + case 4: + cout << "Enter task number to delete: "; + cin >> index; + todo.deleteTask(index); + break; + + case 5: + cout << "Exiting program. Goodbye!\n"; + break; + + default: + cout << "Invalid choice. Try again!\n"; + } + } while (choice != 5); + + return 0; +} + + diff --git a/Src/To-Do-List/todo.exe b/Src/To-Do-List/todo.exe new file mode 100644 index 0000000000000000000000000000000000000000..f9b0ab16300aad2ec0c66550919ac20447a54208 GIT binary patch literal 86259 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 literal 0 HcmV?d00001 From cea0574ceaf03f69ed0f63929ff41349ffbb578e Mon Sep 17 00:00:00 2001 From: swasti Date: Wed, 22 Oct 2025 14:45:23 +0530 Subject: [PATCH 2/2] fix: input validation and empty task title check in To-Do List --- Src/To-Do-List/todo.cpp | 80 +++++++++++++++++++++------------------- Src/To-Do-List/todo.exe | Bin 86259 -> 88334 bytes 2 files changed, 43 insertions(+), 37 deletions(-) diff --git a/Src/To-Do-List/todo.cpp b/Src/To-Do-List/todo.cpp index 6c27b8f..e39ad8a 100644 --- a/Src/To-Do-List/todo.cpp +++ b/Src/To-Do-List/todo.cpp @@ -1,93 +1,105 @@ #include #include + + #include +#include using namespace std; -// Class representing a single Task + class Task { private: string title; - bool isCompleted; + bool isCompleted; public: - // Constructor - Task(string t) { - title = t; - isCompleted = false; - } - // Mark task as completed + Task(string t) : title(t), isCompleted(false) {} + void markCompleted() { isCompleted = true; } - // Get task title string getTitle() const { return title; } - // Check completion status - bool getStatus() const { + bool getStatus() const { return isCompleted; } }; -// Class representing the To-Do List -class ToDoList { + class ToDoList { private: vector tasks; public: - // Add a new task + void addTask(const string& title) { + if (title.empty()) { + cout << "❌ Task title cannot be empty!\n"; + return; + } tasks.push_back(Task(title)); - cout << "Task added successfully!\n"; + cout << " ✅ Task added successfully!\n"; } - // Display all tasks void showTasks() const { if (tasks.empty()) { - cout << "No tasks available!\n"; + cout << "📭 No tasks available!\n"; return; } cout << "\n------ To-Do List ------\n"; for (size_t i = 0; i < tasks.size(); ++i) { cout << i + 1 << ". " << tasks[i].getTitle() - << " [" << (tasks[i].getStatus() ? "Done" : "Pending") << "]\n"; + << " [" << (tasks[i].getStatus() ? "✅ Done" : "🕓 Pending") << "]\n"; } cout << "------------------------\n"; } - // Mark a task as completed void markTaskCompleted(int index) { if (index < 1 || index > (int)tasks.size()) { - cout << "Invalid task number!\n"; + cout << "⚠️ Invalid task number!\n"; return; } tasks[index - 1].markCompleted(); - cout << "Task marked as completed!\n"; + cout << "✅ Task marked as completed!\n"; } - // Delete a task void deleteTask(int index) { if (index < 1 || index > (int)tasks.size()) { - cout << "Invalid task number!\n"; + cout << "⚠️ Invalid task number!\n"; return; } tasks.erase(tasks.begin() + index - 1); - cout << "Task deleted successfully!\n"; + cout << "🗑️ Task deleted successfully!\n"; } }; -// Main program +int getValidInt(const string& prompt) { + int value; + while (true) { + cout << prompt; + cin >> value; + if (cin.fail()) { + cout << "❌ Invalid input! Please enter a number.\n"; + cin.clear(); + cin.ignore(numeric_limits::max(), '\n'); + } else { + cin.ignore(numeric_limits::max(), '\n'); + return value; + } + } +} + int main() { ToDoList todo; int choice; string title; int index; - cout << "\n===== TO-DO LIST APPLICATION =====\n"; + cout << "\n===== 📝 TO-DO LIST APPLICATION =====\n"; cout << "Manage your daily tasks efficiently.\n"; do { @@ -97,9 +109,7 @@ int main() { 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 handle newline + choice = getValidInt("Enter your choice: "); switch (choice) { case 1: @@ -113,27 +123,23 @@ int main() { break; case 3: - cout << "Enter task number to mark completed: "; - cin >> index; + index = getValidInt("Enter task number to mark completed: "); todo.markTaskCompleted(index); break; case 4: - cout << "Enter task number to delete: "; - cin >> index; + index = getValidInt("Enter task number to delete: "); todo.deleteTask(index); break; case 5: - cout << "Exiting program. Goodbye!\n"; + cout << "👋 Exiting program. Goodbye!\n"; break; default: - cout << "Invalid choice. Try again!\n"; + cout << "⚠️ Invalid choice. Try again!\n"; } } while (choice != 5); return 0; } - - diff --git a/Src/To-Do-List/todo.exe b/Src/To-Do-List/todo.exe index f9b0ab16300aad2ec0c66550919ac20447a54208..d803ea4b0bab634f607e43fe207442448e75faa8 100644 GIT binary patch delta 19893 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%0DZO4sbEFKu3{Zg-ba)TJ_a{;c_?= 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 ConYhu