Übung: Hinzufügen der Hundesuche

Abgeschlossen

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:

  1. Sammeln von Benutzereingaben für den Suchbegriff für Haustiermerkmale
  2. Durchlaufen Sie das Tierfeld und identifizieren Sie "Hunde"
  3. Durchsucht die Haustierbeschreibung jedes Hundes nach einer Begriffsübereinstimmung.
  4. 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.

  1. Ü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.

  2. Löschen Sie den Code Console.WriteLine("\nUNDER CONSTRUCTION - please check back next month to see progress."); zwischen case "2": und der Console.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; 
    
  3. Fügen Sie Code hinzu, um Benutzereingaben für die dogCharacteristic Zeichenfolge zu sammeln. Die Erfassung der Eingabe erfordert eine while Schleife, 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 nach case "2: und direkt vor der break;-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 = "";, die case "2": zugeordnet ist. Sie können dogCharacteristic an keiner Stelle außerhalb des Codes der Case-Anweisung verwenden.
    • Nachdem Console.ReadLine() Benutzereingaben gesammelt hat, prüft dogCharacteristic, ob der Wert nicht null ist, und setzt die Zeichenfolge auf Kleinbuchstaben und entfernt die umgebenden Leerzeichen.
    • Wenn dogCharacteristic einen Nullwert hat, wird die Schleife erneut ausgeführt, um Eingaben zu sammeln.
  4. Speichern Sie den Code, kompilieren Sie ihn dann mithilfe von dotnet build im TERMINAL (siehe hierzu die Schritte in der vorherigen Übung), und beheben Sie alle Fehler.

  5. Führen Sie den Code mit dotnet run aus.

  6. Um die Suchfunktion der App zu testen, geben Sie 2 ein und wählen Sie die Menüoption 2 für die Suche aus.

  7. 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 for Eingabeaufforderung zurückkehren.

  8. Das Programm sollte zur Eingabeaufforderung zurückkehren, bis Zeichen eingegeben werden.

  9. Testen Sie am Prompt den Suchbegriffeintrag mit golden als Eintrag. Das Programm sollte ohne Fehler zum Menü zurückkehren.

  10. 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.

  1. Fügen Sie am Ende des case "2" Codes unmittelbar vor dem Code Console.WriteLine("\n\rPress the Enter key to continue");, der sich vor dem break;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
        }
    }
    
  2. 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], wo animalSpecies Daten gespeichert sind. Wenn animalSpecies"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.

  3. Kompilieren Sie Ihren Code mithilfe von dotnet build und 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.

Sie müssen eine Zeichenfolge deklarieren, dogDescription um die kombinierten Daten zu speichern, die von animalPhysicalDescription und animalPersonalityDescription; stammen.

  1. Deklarieren Sie dogDescription direkt vor dem Kommentar #6 mit dem folgenden Code:

    string dogDescription = "";
    

    Verwenden Sie nun die zuvor deklarierte dogDescription Zeichenfolge und füllen Sie sie mit den physischen und Persönlichkeitsbeschreibungen für jedes Tier auf.

  2. Füllen Sie die dogDescription Variable mit den Werten für animalPhysicalDescription und animalPersonalityDescription;.

    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.

  1. 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ür dogCharacteristic in dogDescription findet, 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.

  2. 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 true festgelegt ist, bedeutet dies, „es stimmt, dass keine Hunde mit der Suche übereinstimmen“. Wenn ein Hund gefunden wird, können Sie noMatchesDog von true in false „tauschen“.

  3. Fügen Sie in den Klammern der if (dogDescription.Contains(dogCharacteristic)) Anweisung den folgenden Code hinzu:

    noMatchesDog = false;
    
  4. Ü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.

  5. Fügen Sie am Ende des case "2" Codes unmittelbar vor dem Code Console.WriteLine("\n\rPress the Enter key to continue");, der sich vor dem break;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!

  6. Speichern Sie Ihre Änderungen.

Überprüfen Sie Ihre Arbeit

  1. Geben Sie an der TERMINAL-Eingabeaufforderung den folgenden Befehl ein, um den Projektcode zu erstellen: dotnet build

    Wenn 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.

  2. Führen Sie Ihren Projektcode im Terminalfenster mit dotnet run aus.

Sobald der Code ausgeführt wird, werden zwei Menüelemente angezeigt.

  1. 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 match
    

    Wenn 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.

  2. Geben Sie exit im App-Menü ein, um das Programm zu beenden, und schließen Sie dann das TERMINAL-Panel.