Übung: Hinzufügen der Hundesuche
In dieser Übung fügen Sie der Anwendung das Feature "Alle Hunde mit einem bestimmten Merkmal anzeigen" (Menüelement #2) hinzu. Die Übung verwendet das Lösungsprojekt aus der vorherigen Übung, das suggestedDonation Daten hinzugefügt hat.
Hinweis
Bei diesem Projekt handelt es sich um ein MVP-Feature (Minimal Viable Product). MVP-Features sollen ein einfacher funktionierender Prototyp eines Features sein, das eine schnelle und einfache Zustellung ermöglicht. Ein MVP ist in der Regel kein Endprodukt, es dient dazu, Sie bei der Arbeit durch eine Idee zu unterstützen, sie zu testen und weitere Anforderungen zu sammeln.
Die Suchfunktion fordert den Benutzer zur Eingabe eines einzelnen Sucheingabebegriffs (oder Ausdrucks) auf, der ein in einem Haustier gewünschtes Merkmal beschreibt. Anschließend werden die Beschreibungen für adoptierbare Hunde nach exakten Übereinstimmungen der Benutzereingabe gesucht. Informationen zu den Hunden, die übereinstimmen, werden an die Konsole ausgegeben. Wenn keine Übereinstimmungen identifiziert werden, wird zusammen mit dem verwendeten Suchbegriff eine Meldung "Keine unserer Hunde ist eine Übereinstimmung" angezeigt.
Die Aufgaben, die Sie während dieser Übung ausführen, sind:
- Sammeln von Benutzereingaben für den Suchbegriff für Haustiermerkmale
- Durchlaufen Sie das Tierfeld und identifizieren Sie "Hunde"
- Durchsucht die Haustierbeschreibung jedes Hundes nach einer Begriffsübereinstimmung.
- Anzeigen der Hunde mit übereinstimmenden Begriffen
Öffnen Sie in Visual Studio Code die abgeschlossene Project.cs Datei aus der vorherigen Übung, in der die Spendeninformationen hinzugefügt wurden, um zu beginnen.
Sammeln von Benutzereingaben für die Suche nach Haustiermerkmalen
Überprüfen Sie die Menüschalter-Anweisung nach dem Kommentar Nr. 5 im Project.cs Code. Sie ermitteln den Code, der die Meldung "UNTER KONSTRUKTION" anzeigt.
Löschen Sie den Code
Console.WriteLine("\nUNDER CONSTRUCTION - please check back next month to see progress.");zwischencase "2":und derConsole.WriteLine("Press the Enter key to continue.");Anweisung, damit der Code dem folgenden Beispiel entspricht:case "2": // Display all dogs with a specified characteristic Console.WriteLine("Press the Enter key to continue."); readResult = Console.ReadLine(); break;Fügen Sie Code hinzu, um Benutzereingaben für die
dogCharacteristicZeichenfolge zu sammeln. Die Erfassung der Eingabe erfordert einewhileSchleife, die den Benutzer weiterhin auffordert, bis er eine Eingabe übermittelt. Die Schleife weist den Benutzer an,Enter one desired dog characteristic to search for. Wenn Sie eine leere Zeichenfolge eingeben, wird die Schleife wiederholt. Platzieren Sie den folgenden Code nachcase "2:und direkt vor derbreak;-Anweisung wie im Folgenden gezeigt:case "2": // Display all dogs with a specified characteristic string dogCharacteristic = ""; while (dogCharacteristic == "") { // have the user enter physical characteristics to search for Console.WriteLine($"\nEnter one desired dog characteristics to search for"); readResult = Console.ReadLine(); if (readResult != null) { dogCharacteristic = readResult.ToLower().Trim(); } } Console.WriteLine("Press the Enter key to continue."); readResult = Console.ReadLine(); break;Überprüfen Sie den hinzugefügten Code. Zu den Hauptfunktionen des
case "2":Codes gehören:- Der Code beginnt mit der Zeichenfolgendeklaration
string dogCharacteristic = "";, diecase "2":zugeordnet ist. Sie könnendogCharacteristican keiner Stelle außerhalb des Codes der Case-Anweisung verwenden. - Nachdem
Console.ReadLine()Benutzereingaben gesammelt hat, prüftdogCharacteristic, ob der Wert nicht null ist, und setzt die Zeichenfolge auf Kleinbuchstaben und entfernt die umgebenden Leerzeichen. - Wenn
dogCharacteristiceinen Nullwert hat, wird die Schleife erneut ausgeführt, um Eingaben zu sammeln.
- Der Code beginnt mit der Zeichenfolgendeklaration
Speichern Sie den Code, kompilieren Sie ihn dann mithilfe von
dotnet buildim TERMINAL (siehe hierzu die Schritte in der vorherigen Übung), und beheben Sie alle Fehler.Führen Sie den Code mit
dotnet runaus.Um die Suchfunktion der App zu testen, geben Sie
2ein und wählen Sie die Menüoption2für die Suche aus.Drücken Sie die EINGABETASTE, ohne Daten an der Eingabeaufforderung "Geben Sie ein gewünschtes Hundemerkmal ein, nach dem gesucht werden soll" einzugeben. Das Programm sollte zur
Enter one desired dog characteristics to search forEingabeaufforderung zurückkehren.Das Programm sollte zur Eingabeaufforderung zurückkehren, bis Zeichen eingegeben werden.
Testen Sie am Prompt den Suchbegriffeintrag mit
goldenals Eintrag. Das Programm sollte ohne Fehler zum Menü zurückkehren.Geben Sie im Menü "Exit" ein, um das Programm zu beenden.
Identifizieren, welche Tiere Hunde sind
Nun fügen Sie ein Feature hinzu, um mithilfe der Benutzereingabe dogCharacteristic in den Hundebeschreibungen nach dem vorherigen Code unter case "2" zu suchen. Aber zuerst müssen Sie die Hunde identifizieren.
Fügen Sie am Ende des
case "2"Codes unmittelbar vor dem CodeConsole.WriteLine("\n\rPress the Enter key to continue");, der sich vor dembreak;Code befindet, den folgenden Code hinzu:// #6 loop through the ourAnimals array to search for matching animals for (int i = 0; i < maxPets; i++) { if (ourAnimals[i, 1].Contains("dog")) { // #7 Search combined descriptions and report results } }Nehmen Sie sich eine Minute Zeit, um die am Ende des
case "2":Codes hinzugefügte Schleife zu untersuchen.Der Code filtert nach "Hunden" mit Hilfe von
ourAnimals[i,1], woanimalSpeciesDaten gespeichert sind. WennanimalSpecies"Hund" als Wert gespeichert wird, wird der Code in die Klammern der If-Anweisung verschoben, in der die Suche nach den kombinierten Beschreibungen erfolgen kann.Kompilieren Sie Ihren Code mithilfe von
dotnet buildund beheben Sie alle Fehler.
Durchsuchen der kombinierten Beschreibungsinformationen von Hunden
Der vorherige Code stellt sicher, dass Nur Hundebeschreibungen durchsucht werden. Durchsuchen Sie nun die Hundebeschreibungen und die ausgegebenen Informationen zu den Übereinstimmungen.
Während Sie über die Beschreibungen nachdenken, erkennen Sie, dass es zwei Beschreibungen animalPhysicalDescription gibt und animalPersonalityDescription;. Das Team erläutert die Funktionalität und entscheidet, dass eine kombinierte Beschreibung für die Suche geeignet ist.
Hinweis
Einige Entwickler bezeichnen das Hinzufügen von Anforderungen während der Entwicklung als "Scope Creep". Obwohl die Kombination der Beschreibungen nicht viel Arbeit ist, fügt es immer noch Zeit und Komplexität hinzu. Aus diesem Grund sollten Sie dem Team mitteilen, dass die hinzugefügten Anforderungen häufig den Abschluss des Projekts verzögern.
Kombinieren Sie die Hundebeschreibungen, um die Suche zu vereinfachen
Sie müssen eine Zeichenfolge deklarieren, dogDescription um die kombinierten Daten zu speichern, die von animalPhysicalDescription und animalPersonalityDescription; stammen.
Deklarieren Sie
dogDescriptiondirekt vor dem Kommentar #6 mit dem folgenden Code:string dogDescription = "";Verwenden Sie nun die zuvor deklarierte
dogDescriptionZeichenfolge und füllen Sie sie mit den physischen und Persönlichkeitsbeschreibungen für jedes Tier auf.Füllen Sie die
dogDescriptionVariable mit den Werten füranimalPhysicalDescriptionundanimalPersonalityDescription;.Fügen Sie den folgenden Code nach kommentar # 7 hinzu:
dogDescription = ourAnimals[i, 4] + "\n" + ourAnimals[i, 5];
Suchen nach und Anzeigen von kombinierten Hundebeschreibungen
Nun fügen Sie die Suche nach dogCharacteristic in die kombinierten Daten von dogDescription hinzu. Sie müssen eine if-Anweisung hinzufügen, um festzustellen, ob Sie eine Übereinstimmung für die Suche nach dem jeweiligen Hund haben.
Aktualisieren Sie den Code nach dem Kommentar Nr. 7 nach
dogDescription = ourAnimals[i, 4] + "\n" + ourAnimals[i, 5];mit dem folgenden Code:if (dogDescription.Contains(dogCharacteristic)) { Console.WriteLine($"\nOur dog {ourAnimals[i, 3]} is a match!"); Console.WriteLine(dogDescription); }Sehen Sie sich das vorherige Codebeispiel an. Wenn die
if-Anweisung eine Übereinstimmung fürdogCharacteristicindogDescriptionfindet, wird eine Nachricht über die Übereinstimmung und die Beschreibung des Hundes an die Konsole ausgegeben. Sie müssen weiterhin die Meldung "Keine Übereinstimmungen gefunden" berücksichtigen.Fügen Sie den Code
noMatchesDog = truehinzu:Fügen Sie den folgenden Code direkt vor dem Kommentar #6 hinzu:
bool noMatchesDog = true;Jetzt können Sie nachverfolgen, wann keine Übereinstimmungen mit dieser Nachverfolgungsvariable gefunden werden. Wenn der Standardwert auf
truefestgelegt ist, bedeutet dies, „es stimmt, dass keine Hunde mit der Suche übereinstimmen“. Wenn ein Hund gefunden wird, können SienoMatchesDogvontrueinfalse„tauschen“.Fügen Sie in den Klammern der
if (dogDescription.Contains(dogCharacteristic))Anweisung den folgenden Code hinzu:noMatchesDog = false;Überprüfen Sie, dass Ihr Code in den Klammern
if (dogDescription.Contains(dogCharacteristic))richtig eingegeben wurde.Sie sollten über den folgenden Code verfügen:
if (dogDescription.Contains(dogCharacteristic)) { Console.WriteLine($"\nOur dog {ourAnimals[i, 3]} is a match!"); Console.WriteLine(dogDescription); noMatchesDog = false; }Schließlich müssen Sie Code erstellen, der entscheidet, ob die Meldung "Keine Übereinstimmungen gefunden" in die Konsole geschrieben werden soll.
Fügen Sie am Ende des
case "2"Codes unmittelbar vor dem CodeConsole.WriteLine("\n\rPress the Enter key to continue");, der sich vor dembreak;Code befindet, den folgenden Code hinzu:if (noMatchesDog) { Console.WriteLine("None of our dogs are a match found for: " + dogCharacteristic); }Dieses Codebeispiel ist der endgültige Code für diese Übung!
Speichern Sie Ihre Änderungen.
Überprüfen Sie Ihre Arbeit
Geben Sie an der TERMINAL-Eingabeaufforderung den folgenden Befehl ein, um den Projektcode zu erstellen:
dotnet buildWenn Fehler vorhanden sind, müssen Sie die Fehlermeldungen lesen, Probleme lösen und Korrekturen vornehmen oder den Lösungscode im Ordner "Endgültig" überprüfen.
Führen Sie Ihren Projektcode im Terminalfenster mit
dotnet runaus.
Sobald der Code ausgeführt wird, werden zwei Menüelemente angezeigt.
Geben Sie im Menü "
2" und "Enter" ein, um die Hundesuche wiederholt zu testen.- Enter nothing as input to test the null entry behavior - Enter "scuba" as input to test the "match not found" - Enter "golden" to get two matches - Enter "medium" to get one matchWenn alles in beiden Schritten wie erwartet funktioniert hat, herzlichen Glückwunsch! Suchen Sie andernfalls nach den Fehlern, indem Sie die Übungsschritte überprüfen. Fangen Sie bei Bedarf von vorne an oder überprüfen Sie den Code im Finalordner, um die Lösung für diese Übung zu finden.
Geben Sie
exitim App-Menü ein, um das Programm zu beenden, und schließen Sie dann das TERMINAL-Panel.