Øvelse – Tilføj hundesøgning

Fuldført

I denne øvelse skal du føje funktionen "Vis alle hunde med en angivet egenskab" (menupunkt #2) til programmet. Øvelsen bruger løsningsprojektet fra den forrige øvelse, der tilføjede suggestedDonation data.

Seddel

Dette projekt er en MVP-funktion (minimalt levedygtigt produkt). MVP-funktioner er beregnet til at være en grundlæggende arbejdsprototype til en funktion, der muliggør hurtig og nem levering. En MVP er normalt ikke et færdigt produkt, dens formål er at hjælpe dig med at arbejde dig igennem en idé, teste den og indsamle yderligere krav.

Søgefunktionen beder brugeren om et enkelt søgeinputudtryk (eller -udtryk), der beskriver en egenskab, der ønskes hos et kæledyr, der skal adoptere. Derefter søges beskrivelserne for adoptable hunde efter nøjagtige match af brugerinput. Oplysninger om de hunde, der matcher, er output til konsollen. Hvis der ikke identificeres nogen match, vises meddelelsen "Ingen af vores hunde er et match" sammen med det anvendte søgeord.

De opgaver, du udfører i denne øvelse, er:

  1. Indsaml brugerinput for det karakteristiske søgeord for kæledyr
  2. Sløjfe gennem dyrenes matrix og identificere "hunde"
  3. Søg efter et ordmatch for hver hunds kæledyrsbeskrivelse
  4. Vis de hunde, der har et ordmatch

I Visual Studio Code skal du åbne den fuldførte Project.cs fil fra den forrige øvelse, der tilføjede donationsoplysningerne for at komme i gang.

  1. Gennemse menuparametersætningen efter kommentar nr. 5 i Project.cs-koden. Du finder den kode, der viser meddelelsen "UNDER CONSTRUCTION" .

  2. Slet koden Console.WriteLine("\nUNDER CONSTRUCTION - please check back next month to see progress."); mellem case "2": og sætningen Console.WriteLine("Press the Enter key to continue."); , så koden svarer til følgende eksempel:

    case "2":
        // Display all dogs with a specified characteristic
        Console.WriteLine("Press the Enter key to continue.");
        readResult = Console.ReadLine();
        break; 
    
  3. Tilføj kode for at indsamle brugerinput for strengen dogCharacteristic . Indsaml inputtet kræver en while løkke, der fortsætter med at spørge brugeren, indtil vedkommende sender et input. Løkken giver brugeren besked om at Enter one desired dog characteristic to search for. Hvis du angiver en tom streng, gentages løkken. Placer følgende kode efter case "2: lige før sætningen break; som vist:

    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;
    

    Gennemse den tilføjede kode. De vigtigste funktioner i case "2": koden omfatter:

    • Koden starter med en strengerklæring string dogCharacteristic = ""; , der er begrænset til case "2":. Du kan ikke bruge dogCharacteristic nogen steder uden for koden for sagssætningen.
    • Når Console.ReadLine() brugerinput er indsamlet, da dogCharacteristic det sikrer, at værdien ikke er null, og indstiller strengen til små bogstaver og trimmer de omgivende mellemrum.
    • Hvis dogCharacteristic har en null-værdi, gentager løkken indsamlingsinput.
  4. Gem din kode, kompiler derefter ved hjælp dotnet build af i TERMINAL (du kan se trinnene i den forrige øvelse) og rette eventuelle fejl.

  5. Kør koden ved hjælp dotnet runaf .

  6. Hvis du vil teste funktionaliteten af søgeudtryksinput i appen, skal du angive 2, vælge Menuindstilling 2for at søge.

  7. Tryk på "Enter" uden at angive data ved prompten "Angiv den ønskede hundeegenskab, der skal søges efter" . Programmet skal vende tilbage til prompten Enter one desired dog characteristics to search for .

  8. Programmet skal vende tilbage til prompten, indtil der indtastes tegn.

  9. Ved prompten skal du teste indtastning af søgeord med golden som din indtastning. Programmet bør vende tilbage til menuen uden fejl.

  10. Skriv "Afslut" i menuen for at afslutte programmet.

Identificer, hvilke dyr der er hunde

Nu kan du tilføje en funktion for at søge ved hjælp af brugerinputtet dogCharacteristic i hundebeskrivelserne efter den forrige kode under case "2". Men først skal du identificere hundene.

  1. Tilføj følgende kode i slutningen af case "2" koden lige før koden Console.WriteLine("\n\rPress the Enter key to continue");, som er før break;:

    // #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. Brug et minut på at undersøge den løkke, der er føjet til slutningen af case "2": koden.

    Kodefiltrene for "hunde" ved hjælp af ourAnimals[i,1], hvor animalSpecies data gemmes. Hvis animalSpecies gemmer "hund" som sin værdi, flyttes koden til parenteserne i if-sætningen, hvor søgningen i de kombinerede beskrivelser kan finde sted.

  3. Kompiler din kode ved hjælp dotnet build af og ret eventuelle fejl.

Søg i den kombinerede beskrivelse af hunde

Den forrige kode sikrer, at du kun søger efter hundebeskrivelser. Nu skal du søge i hundens beskrivelser og outputoplysninger om match.

Mens du tænker på beskrivelserne, indser du, at der er to beskrivelser animalPhysicalDescription og animalPersonalityDescription;. Teamet diskuterer funktionaliteten og beslutter, at en kombineret beskrivelse er relevant for søgningen.

Seddel

Nogle udviklere henviser til tilføjelsen af krav under udvikling som "scope creep". Selvom det ikke er meget arbejde at kombinere beskrivelserne, tilføjer det stadig tid og kompleksitet. Derfor skal du fortælle teamet, at de tilføjede krav ofte forsinker projektets fuldførelse.

Du skal deklarere en streng for dogDescription at bevare de kombinerede data, der stammer fra animalPhysicalDescription og animalPersonalityDescription;.

  1. Deklarer dogDescription lige før kommentar nr. 6 med følgende kode:

    string dogDescription = "";
    

    Brug nu den tidligere erklærede dogDescription streng, og udfyld den med de fysiske og personlighedsbeskrivelser for hvert dyr

  2. Udfyld variablen dogDescription med værdierne for animalPhysicalDescription og animalPersonalityDescription;.

    Tilføj følgende kode efter kommentar nr. 7:

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

Søg i de kombinerede beskrivelser af hunde og skærm

Nu kan du tilføje søgningen efter dogCharacteristic i de kombinerede data for dogDescription. Du skal tilføje en if sætning for at afgøre, om du har et match for søgningen efter hver hund.

  1. Opdater koden efter kommentar nr. 7 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);
    }
    

    Undersøg det forrige kodeeksempel, når sætningen if finder et match for dogCharacteristic i dogDescription en meddelelse om hundematch, og beskrivelsen er output til konsollen. Du skal stadig tage højde for meddelelsen "Der blev ikke fundet nogen forekomster".

  2. Tilføj koden noMatchesDog = true:

    Tilføj følgende kode lige før kommentar nr. 6:

    bool noMatchesDog = true;
    

    Nu kan du spore, når der ikke findes nogen match med denne sporingsvariabel. Når standardindstillingen er angivet til true , betyder det "det er sandt, at ingen hunde matcher søgningen". Nu, når en hund er fundet, kan du "vende" fra noMatchesDogtrue til false

  3. Tilføj følgende kode i sætningens if (dogDescription.Contains(dogCharacteristic)) parenteser:

    noMatchesDog = false;
    
  4. Gennemse, at din kode i parenteserne i if (dogDescription.Contains(dogCharacteristic)) er angivet korrekt.

    Du skal have følgende kode:

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

    Til sidst skal du oprette kode, der bestemmer, om meddelelsen "Der blev ikke fundet nogen forekomster" skal skrives til konsollen.

  5. Tilføj følgende kode i slutningen af case "2" koden lige før koden Console.WriteLine("\n\rPress the Enter key to continue");, som er før break;:

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

    Dette kodeeksempel er den endelige kode for denne øvelse!

  6. Gem ændringerne.

Kontrollér dit arbejde

  1. Angiv følgende kommando ved kommandoprompten TERMINAL for at oprette projektkoden: dotnet build.

    Hvis der er fejl, skal du læse fejlmeddelelserne, løse problemer og foretage rettelser eller gennemse løsningskoden i mappen "Endelig".

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

Når koden kører, vises der to menupunkter.

  1. I menuen skal du skrive "2" og "Enter" for at teste hundesøgningen gentagne gange.

     - 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
    

    Hvis alt fungerede som forventet i begge trin, tillykke! Ellers skal du kigge efter fejlene ved at kontrollere øvelsestrinnene. Hvis det er nødvendigt, skal du starte forfra eller kontrollere den endelige mappekode for løsningskoden i denne øvelse.

  2. Skriv exiti appmenuen for at afslutte programmet, og luk derefter terminalpanelet.