Övning – Lägga till hundsökning

Slutförd

I den här övningen lägger du till funktionen "Visa alla hundar med en angiven egenskap" (menyalternativ nr 2) i programmet. I övningen används lösningsprojektet från föregående övning som lade till suggestedDonation data.

Anmärkning

Det här projektet är en MVP-funktion (minimal livskraftig produkt). MVP-funktioner är avsedda att vara en grundläggande fungerande prototyp av en funktion som möjliggör snabb och enkel leverans. En MVP är vanligtvis inte en slutprodukt, dess syfte är att hjälpa dig att arbeta igenom en idé, testa den och samla in ytterligare krav.

Sökfunktionen uppmanar användaren att ange ett enda sökord (eller en fras) som beskriver en egenskap som önskas hos ett husdjur för adoption. Sedan söks beskrivningarna för adopterbara hundar efter exakta matchningar av användarindata. Information om de hundar som matchar skrivs ut till konsolen. Om inga matchningar identifieras visas ett meddelande "Ingen av våra hundar är en matchning" tillsammans med den söktermen som används.

De uppgifter som du utför under den här övningen är:

  1. Samla in användarindata för söktermen för husdjursegenskaper
  2. Loopa genom djurmatrisen och identifiera "hundar"
  3. Sök efter en termmatchning i varje hunds husdjursbeskrivning
  4. Visa de hundar med termpassning

I Visual Studio Code öppnar du den slutförda Project.cs filen från föregående övning som lade till donationsinformationen för att komma igång.

  1. Granska menyväxelns instruktion efter kommentar nr 5 i Project.cs-koden. Du upptäcker koden som visar meddelandet "UNDER KONSTRUKTION" .

  2. Ta bort koden Console.WriteLine("\nUNDER CONSTRUCTION - please check back next month to see progress."); mellan case "2": och -instruktionen Console.WriteLine("Press the Enter key to continue."); så att koden matchar följande exempel:

    case "2":
        // Display all dogs with a specified characteristic
        Console.WriteLine("Press the Enter key to continue.");
        readResult = Console.ReadLine();
        break; 
    
  3. Lägg till kod för att samla in användarindata för strängen dogCharacteristic . Samla indata kräver en while loop som fortsätter att fråga användaren tills de skickar in en indata. Loopen instruerar användaren att Enter one desired dog characteristic to search for. Om du anger en tom sträng upprepas loopen. Placera följande kod precis efter case "2: och just innan break;-instruktionen enligt följande:

    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;
    

    Granska den tillagda koden. De viktigaste funktionerna i case "2": koden är:

    • Koden börjar med en strängdeklaration string dogCharacteristic = ""; som är begränsad till case "2":. Du kan inte använda dogCharacteristic någonstans utanför ärendeutdragskoden.
    • När Console.ReadLine() har samlat in användarindata, och dogCharacteristic säkerställer att värdet inte är null, sätts strängen till gemener och trimmas de omgivande mellanslagen.
    • Om dogCharacteristic har ett null-värde upprepar loopen insamlingsindata.
  4. Spara koden och kompilera sedan med hjälp dotnet build av i TERMINAL (du kan läsa stegen i föregående övning) och åtgärda eventuella fel.

  5. Kör koden genom att använda dotnet run.

  6. Om du vill testa söktermens indatafunktioner i appen anger du 2, väljer Menyalternativ 2, för sökning.

  7. Tryck på "Retur" utan att ange data vid prompten "Ange en önskad hundegenskap att söka efter". Programmet bör återgå till prompten Enter one desired dog characteristics to search for.

  8. Programmet ska återgå till kommandoprompten tills tecken har angetts.

  9. Vid prompten testar du angivandet av söktermen med golden som din inmatning. Programmet bör återgå till menyn utan fel.

  10. På menyn skriver du "Avsluta" för att avsluta programmet.

Identifiera vilka djur som är hundar

Nu lägger du till en funktion för att söka med hjälp av användarens indata dogCharacteristic i hundbeskrivningarna efter föregående kod under case "2". Men först måste du identifiera hundarna.

  1. I slutet av case "2" koden, precis före koden Console.WriteLine("\n\rPress the Enter key to continue");, som är före break;, lägger du till följande kod:

    // #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. Ta en minut att undersöka loopen som lades till i slutet av case "2": koden.

    Koden filtrerar för "hundar" med hjälp av ourAnimals[i,1], där animalSpecies data lagras. Om animalSpecies lagrar "hund" som dess värde flyttas koden till hakparenteserna i if-instruktionen där sökningen av de kombinerade beskrivningarna kan ske.

  3. Kompilera koden genom att använda dotnet build och åtgärda eventuella fel.

Sök i den kombinerade beskrivningsinformationen för hundar

Den tidigare koden säkerställer att du endast söker efter hundbeskrivningar. Nu måste du söka efter hundbeskrivningar och utdatainformation om matchningar.

När du tänker på beskrivningarna inser du att det finns två beskrivningar animalPhysicalDescription och animalPersonalityDescription;. Teamet diskuterar funktionerna och bestämmer att en kombinerad beskrivning är lämplig för sökningen.

Anmärkning

Vissa utvecklare kallar tillägg av krav under utveckling för "omfångskrypning". Även om det inte är mycket arbete att kombinera beskrivningarna lägger det fortfarande till tid och komplexitet. Därför bör du meddela teamet att ytterligare krav ofta fördröjer projektets slutförande.

Du måste deklarera en sträng dogDescription för att lagra de kombinerade data som kommer från animalPhysicalDescription och animalPersonalityDescription;.

  1. Deklarera dogDescription precis före kommentar nr 6 med följande kod:

    string dogDescription = "";
    

    Använd nu den tidigare deklarerade dogDescription strängen och fyll i den med beskrivningarna för fysiska och personligheter för varje djur

  2. Fyll i variabeln dogDescription med värdena för animalPhysicalDescription och animalPersonalityDescription;.

    Lägg till följande kod efter kommentar nr 7:

    dogDescription = ourAnimals[i, 4] + "\n" + ourAnimals[i, 5];
    

Sök i de kombinerade beskrivningarna av hundar och visa

Nu lägger du till sökningen efter dogCharacteristic i kombinerade data för dogDescription. Du måste lägga till en if instruktion för att avgöra om du har en matchning för sökningen efter varje hund.

  1. Uppdatera koden efter kommentar nr 7 efter dogDescription = ourAnimals[i, 4] + "\n" + ourAnimals[i, 5]; med koden:

    if (dogDescription.Contains(dogCharacteristic))
    {
        Console.WriteLine($"\nOur dog {ourAnimals[i, 3]} is a match!");
        Console.WriteLine(dogDescription);
    }
    

    Granska föregående kodexempel. När if-instruktionen hittar en matchning för dogCharacteristic i dogDescription, skrivs ett meddelande om hundmatchningen och dess beskrivning ut på konsolen. Du måste fortfarande ta hänsyn till meddelandet "inga matchningar hittades".

  2. Lägg till koden noMatchesDog = true:

    Lägg till följande kod precis före kommentar nr 6:

    bool noMatchesDog = true;
    

    Nu kan du spåra när inga matchningar hittas med den här spårningsvariabeln. När standardvärdet är inställt true på betyder det "det är sant att inga hundar matchar sökningen". Nu, när en hund hittas kan du "vända" noMatchesDog från true till false

  3. Lägg till följande kod inom hakparenteserna för if (dogDescription.Contains(dogCharacteristic)) -instruktionen:

    noMatchesDog = false;
    
  4. Granska att din kod inom if (dogDescription.Contains(dogCharacteristic)) hakparenteserna har angivits korrekt.

    Du bör ha följande kod:

        if (dogDescription.Contains(dogCharacteristic))
        {
            Console.WriteLine($"\nOur dog {ourAnimals[i, 3]} is a match!");
            Console.WriteLine(dogDescription);
    
            noMatchesDog = false;
        }
    

    Slutligen måste du skapa kod som avgör om meddelandet "inga matchningar hittades" ska skrivas till konsolen.

  5. I slutet av case "2" koden, precis före koden Console.WriteLine("\n\rPress the Enter key to continue");, som är före break;, lägger du till följande kod:

    if (noMatchesDog)
    {
        Console.WriteLine("None of our dogs are a match found for: " + dogCharacteristic);
    }
    
    

    Det här kodexemplet är den sista koden för den här övningen!

  6. Spara ändringarna.

Kontrollera ditt arbete

  1. I kommandotolken TERMINAL anger du följande kommando för att skapa projektkoden: dotnet build.

    Om det finns fel behöver du läsa felmeddelandena, felsöka och åtgärda eller granska lösningskoden i mappen "Final".

  2. Kör projektkoden i terminalen med dotnet run.

När koden har körts visas två menyalternativ.

  1. På menyn anger du "2" och "Enter" för att testa hundsökning flera gånger.

     - 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
    

    Om allt fungerade som förväntat i båda stegen, grattis! Annars letar du efter felen genom att kontrollera övningsstegen. Om det behövs startar du om eller kontrollerar den slutliga mappkoden för lösningskod i den här övningen.

  2. Skriv exitpå appmenyn för att avsluta programmet och stäng sedan terminalpanelen.