Das Tool fertigstellen
Teil des Abschnitts Logik & Ablauf der C++-Journey von Coddy. Lektion 22 von 56.
Aufgabe
EinfachVervollständige dein Tool für Aufgabenlisten, indem du die Hauptprogrammschleife implementierst, die alle Funktionen miteinander verbindet. Diese abschließende Lektion erstellt eine vollständig funktionsfähige Aufgabenverwaltungsanwendung, die das Menü wiederholt anzeigt und Benutzerbefehle verarbeitet, bis der Benutzer das Programm beendet.
Die folgenden Eingaben werden bereitgestellt:
- Eine Reihe von Menüauswahlen (Ganzzahlen: 1 für Aufgabe hinzufügen, 2 für Aufgaben anzeigen, 3 für Aufgabe entfernen, 4 für Beenden)
- Für Aufgabe hinzufügen (Auswahl 1): eine Zeichenkette, die die Aufgabenbeschreibung darstellt
- Für Aufgabe entfernen (Auswahl 3): eine Ganzzahl, die die zu entfernende Aufgabennummer darstellt (1-basierte Indizierung)
Dein Programm sollte:
- Mit derselben Einrichtung wie in den vorherigen Lektionen starten (leerer
std::vector<std::string>namenstasksund Begrüßungsnachricht) - Eine Hauptschleife erstellen, die fortgesetzt wird, bis der Benutzer das Programm beendet
- Das Menü anzeigen und die Auswahl des Benutzers für jede Iteration einlesen
- Jede Menüoption verarbeiten:
- Auswahl 1: Eine Aufgabenbeschreibung einlesen und sie mit
push_back()hinzufügen - Auswahl 2: Alle Aufgaben nummeriert anzeigen oder bei einer leeren Liste „No tasks available.“ ausgeben
- Auswahl 3: Eine Aufgabennummer einlesen, sie validieren und die Aufgabe mit
.erase()entfernen - Auswahl 4: Die Programmschleife verlassen
- Auswahl 1: Eine Aufgabenbeschreibung einlesen und sie mit
- Bei ungültigen Menüauswahlen eine Fehlermeldung anzeigen und die Schleife fortsetzen
- Beim Beenden des Programms eine Abschiedsnachricht ausgeben
Verwende das folgende exakte Ausgabeformat:
Anfangseinrichtung 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 Aufgabe hinzufügen (Auswahl 1):
Task "[task description]" added successfully!
Total tasks: [number of tasks]Für Aufgaben anzeigen (Auswahl 2) mit vorhandenen Aufgaben:
Your Tasks:
1. [first task]
2. [second task]
...
Total tasks: [number of tasks]Für Aufgaben anzeigen (Auswahl 2) bei einer leeren Liste:
No tasks available.Für Aufgabe entfernen (Auswahl 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 Aufgabe entfernen (Auswahl 3) mit ungültiger Aufgabennummer:
Error: Invalid task number. Please enter a number between 1 and [total tasks].Für eine ungültige Menüauswahl:
Invalid choice. Please try again.Wenn der Benutzer das Programm beendet (Auswahl 4):
Thank you for using Task List Tool!Verwende eine while-Schleife, die fortgesetzt wird, bis der Benutzer 4 eingibt. Denke bei der Funktion zum Entfernen von Aufgaben daran, zu validieren, dass die Aufgabennummer zwischen 1 und tasks.size() liegt, bevor du tasks.erase(tasks.begin() + index) verwendest. Wenn die Liste nach dem Entfernen leer ist, gib „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Übe selbstständig: Online-C++-Compiler