Das Tool fertigstellen
Teil des Abschnitts Logik & Ablauf der C++-Journey von Coddy — Lektion 22 von 56.
Aufgabe
EinfachVervollständigen Sie Ihr Aufgabenlisten-Tool, indem Sie die Hauptprogrammschleife implementieren, die alle Funktionen miteinander verbindet. Diese letzte Lektion erstellt eine voll funktionsfähige Aufgabenverwaltungsanwendung, die wiederholt das Menü anzeigt und Benutzerbefehle verarbeitet, bis der Benutzer sich entscheidet, das Programm zu beenden.
Die folgenden Eingaben werden bereitgestellt:
- Eine Reihe von Menüoptionen (Ganzzahlen: 1 für "Add Task", 2 für "View Tasks", 3 für "Remove Task", 4 für "Quit")
- Für "Add Task" (Option 1): eine Zeichenfolge, die die Aufgabenbeschreibung darstellt
- Für "Remove Task" (Option 3): eine Ganzzahl, die die Nummer der zu entfernenden Aufgabe darstellt (1-basierte Indizierung)
Ihr Programm sollte:
- Mit dem gleichen Setup aus den vorherigen Lektionen beginnen (ein leerer
std::vector<std::string>namenstasksund eine Willkommensnachricht) - Eine Hauptschleife erstellen, die fortgesetzt wird, bis der Benutzer sich entscheidet, das Programm zu beenden
- Das Menü anzeigen und die Wahl des Benutzers bei jeder Iteration einlesen
- Jede Menüoption verarbeiten:
- Option 1: Eine Aufgabenbeschreibung einlesen und mit
push_back()hinzufügen - Option 2: Alle Aufgaben im nummerierten Format anzeigen oder "No tasks available." anzeigen, falls die Liste leer ist
- Option 3: Eine Aufgabennummer einlesen, diese validieren und die Aufgabe mit
.erase()entfernen - Option 4: Die Programmschleife beenden
- Option 1: Eine Aufgabenbeschreibung einlesen und mit
- Bei ungültigen Menüoptionen eine Fehlermeldung anzeigen und die Schleife fortsetzen
- Eine Abschiedsnachricht ausgeben, wenn der Benutzer das Programm beendet
Verwenden Sie das folgende exakte Ausgabeformat:
Initiales Setup und Menüanzeige:
Welcome to Task List Tool!
Menu Options:
1. Add Task
2. View Tasks
3. Remove Task
4. Quit
Task list system initialized and ready!Für jede Menüiteration anzeigen:
Choose an option: Für "Add Task" (Option 1):
Task "[task description]" added successfully!
Total tasks: [number of tasks]Für "View Tasks" (Option 2) mit Aufgaben:
Your Tasks:
1. [first task]
2. [second task]
...
Total tasks: [number of tasks]Für "View Tasks" (Option 2), wenn leer:
No tasks available.Für "Remove Task" (Option 3) mit gültiger Aufgabennummer:
Task "[removed task description]" removed successfully!
Remaining Tasks:
1. [first remaining task]
...
Total tasks: [updated number of tasks]Für "Remove Task" (Option 3) mit ungültiger Aufgabennummer:
Error: Invalid task number. Please enter a number between 1 and [total tasks].Für eine ungültige Menüoption:
Invalid choice. Please try again.Wenn der Benutzer das Programm beendet (Option 4):
Thank you for using Task List Tool!Verwenden Sie eine while-Schleife, die fortgesetzt wird, bis der Benutzer 4 eingibt. Denken Sie bei der Funktionalität "Remove Task" daran, zu validieren, dass die Aufgabennummer zwischen 1 und tasks.size() liegt, bevor Sie tasks.erase(tasks.begin() + index) verwenden. Wenn die Liste nach dem Entfernen leer wird, geben Sie "No tasks remaining." anstelle der Liste der verbleibenden Aufgaben aus.
Probier es selbst
#include <iostream>
#include <vector>
#include <string>
int main() {
std::vector<std::string> tasks;
std::cout << "Welcome to Task List Tool!" << std::endl;
std::cout << std::endl;
std::cout << "Menu Options:" << std::endl;
std::cout << "1. Add Task" << std::endl;
std::cout << "2. View Tasks" << std::endl;
std::cout << "3. Quit" << std::endl;
std::cout << std::endl;
std::cout << "Task list system initialized and ready!" << std::endl;
int n;
std::cin >> n;
std::cin.ignore();
for (int i = 0; i < n; i++) {
std::string task;
std::getline(std::cin, task);
tasks.push_back(task);
}
int taskNumber;
std::cin >> taskNumber;
if (taskNumber < 1 || taskNumber > tasks.size()) {
std::cout << "Error: Invalid task number. Please enter a number between 1 and " << tasks.size() << "." << std::endl;
} else {
std::string removedTask = tasks[taskNumber - 1];
tasks.erase(tasks.begin() + (taskNumber - 1));
std::cout << "Task \"" << removedTask << "\" removed successfully!" << std::endl;
if (tasks.empty()) {
std::cout << "No tasks remaining." << std::endl;
} else {
std::cout << "Remaining Tasks:" << std::endl;
for (int i = 0; i < tasks.size(); i++) {
std::cout << (i + 1) << ". " << tasks[i] << std::endl;
}
}
std::cout << "Total tasks: " << tasks.size() << std::endl;
}
return 0;
}Alle Lektionen in Logik & Ablauf
1Pointer und Speicher
Was ist ein Pointer?AdressoperatorDereferenzierungsoperatorNull-PointerPointer und ArraysDynamischer Speicher mit 'new'Speicher freigeben mit 'delete'Zusammenfassung – Pointer-Übung2Vektoren (Dynamische Arrays)
Einführung in std::vectorEinen Vector erstellenElemente hinzufügenAuf Elemente zugreifenVector-GrößeIterieren mit einer For-SchleifeRange-based For-SchleifeElemente entfernenZusammenfassung – Vector-Operationen3Projekt: Aufgabenlisten-Tool
ProjektübersichtEine Aufgabe hinzufügen