Cvičení – přidejte vyhledávání psů

Dokončeno

V tomto cvičení přidáte do aplikace funkci Zobrazit všechny psy se zadanou charakteristikou (položka nabídky č. 2). Cvičení používá projekt řešení z předchozího cvičení, které přidalo suggestedDonation data.

Poznámka:

Tento projekt je funkce "minimálního realizovatelného produktu" (MVP). Funkce MVP jsou určeny jako základní funkční prototyp funkce, která umožňuje rychlé a snadné doručování. MVP obvykle není konečným produktem, jeho účelem je pomoct vám s prací na nápadu, otestovat ho a shromáždit další požadavky.

Funkce vyhledávání vyzve uživatele k zadání jednoho hledaného vstupního termínu (nebo fráze), který popisuje charakteristiku, kterou má domácí mazlíček přijmout. Poté se popisy adoptovatelných psů hledají pro přesné shody s uživatelským vstupem. Informace o psech, které odpovídají, jsou výstupem konzoly. Pokud nejsou nalezeny žádné shody, zobrazí se zpráva "Žádný z našich psů neodpovídá" spolu s použitým hledaným termínem.

Úkoly, které jste dokončili během tohoto cvičení, jsou:

  1. Získání uživatelských vstupů pro hledaný termín týkající se vlastností domácího mazlíčka
  2. Projděte pole zvířat a identifikujte "psy".
  3. Prohledejte popis každého psa pro shodu termínu
  4. Zobrazit psy, kteří mají shodu s termínem

V editoru Visual Studio Code otevřete dokončený soubor Project.cs z předchozího cvičení, ve kterém jste přidali informace o darování, abyste mohli začít.

  1. V kódu Project.cs zkontrolujte příkaz switch pro menu, který je zařazen pod komentářem č. 5. Zjistíte kód, který zobrazí zprávu "UNDER CONSTRUCTION" .

  2. Odstraňte kód Console.WriteLine("\nUNDER CONSTRUCTION - please check back next month to see progress."); mezi case "2": a příkazem Console.WriteLine("Press the Enter key to continue.");, aby kód odpovídal následující ukázce:

    case "2":
        // Display all dogs with a specified characteristic
        Console.WriteLine("Press the Enter key to continue.");
        readResult = Console.ReadLine();
        break; 
    
  3. Přidejte kód pro řetězec dogCharacteristic, který shromáždí uživatelský vstup. Shromáždění vstupu vyžaduje smyčka while, která bude uživateli stále zobrazovat výzvu, dokud neodešle vstup. Smyčka dává uživateli pokyn, aby Enter one desired dog characteristic to search for. Zadáním prázdného řetězce se smyčka opakuje. Umístěte následující kód za case "2: těsně před příkaz break;, jak je znázorněno:

    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;
    

    Zkontrolujte přidaný kód. Mezi hlavní funkce case "2": kódu patří:

    • Kód začíná řetězcovou deklarací string dogCharacteristic = ""; , která je vymezena na case "2":. Nemůžete využívat dogCharacteristic nikde mimo kód příkazu case.
    • Jakmile Console.ReadLine() shromáždí uživatelský vstup jako dogCharacteristic, zajistí, že hodnota není null, nastaví řetězec na malá písmena a ořízne okolní mezery.
    • Pokud dogCharacteristic má hodnotu null, smyčka opakuje shromažďování vstupu.
  4. Uložte kód a pak ho zkompilujte pomocí dotnet build terminálu (můžete se podívat na kroky v předchozím cvičení) a opravte případné chyby.

  5. Spusťte kód pomocí příkazu dotnet run.

  6. K otestování funkce zadávání hledaného termínu v aplikaci zadejte 2, poté vyberte možnost 2 v nabídce a proveďte vyhledávání.

  7. Stiskněte „Enter“ bez zadání údajů do výzvy „Zadejte jednu požadovanou vlastnost psa k vyhledávání“. Program by se měl vrátit k výzvě Enter one desired dog characteristics to search for .

  8. Program by se měl vrátit k příkazovému řádku, dokud nebudou zadány znaky.

  9. U výzvy otestujte zadání hledaného termínu s golden jako vaším vstupem. Aplikace by se měla vrátit do menu bez chyby.

  10. V nabídce zadejte "Exit" a ukončete program.

Určení, která zvířata jsou psi

Nyní přidáte funkci pro vyhledávání pomocí uživatelského vstupu dogCharacteristic v popisu psa za předchozím kódem v části case "2". Ale nejdřív musíte identifikovat psy.

  1. Na konec case "2" kódu těsně před kód Console.WriteLine("\n\rPress the Enter key to continue");, který je před break;, přidejte následující kód:

    // #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. Zkuste chvíli prozkoumat smyčku přidanou na konec case "2": kódu.

    Kód filtruje "psy" pomocí ourAnimals[i,1], kde animalSpecies jsou uložena data. Pokud animalSpecies jako hodnotu uloží "pes" , kód se přesune do závorek příkazu if, kde může dojít k hledání kombinovaných popisů.

  3. Zkompilujte kód pomocí dotnet build a opravte případné chyby.

Prohledat kombinované informace o popisu psů

Předchozí kód zajistí, že prohledáte pouze popisy psů. Teď potřebujete vyhledat popisy psů a zobrazit informace o shodách.

Při úvahách o popisech si uvědomíte, že existují dva popisy animalPhysicalDescription a animalPersonalityDescription;. Tým probere funkčnost a rozhodne se, že kombinovaný popis je vhodný pro hledání.

Poznámka:

Někteří vývojáři označují přidání požadavků během vývoje jako "rozšiřování rozsahu". I když kombinování popisů není moc práce, stále přidává čas a složitost. Z tohoto důvodu byste měli týmu dát vědět, že přidané požadavky často zpozdí dokončení projektu.

Potřebujete deklarovat řetězec, dogDescription který bude držet sloučená data pocházející z animalPhysicalDescription a animalPersonalityDescription;.

  1. Deklarujte dogDescription těsně před komentářem č. 6 s následujícím kódem:

    string dogDescription = "";
    

    Nyní použijte dříve deklarovaný dogDescription řetězec a naplňte ho fyzickými a osobnostmi popisy pro každé zvíře.

  2. Naplňte proměnnou dogDescription hodnotami pro animalPhysicalDescription a animalPersonalityDescription;.

    Za komentář č. 7 přidejte následující kód:

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

Prohledat kombinované popisy psů a zobrazit

Nyní přidáte hledání dogCharacteristic do sloučených dat dogDescription. Musíte přidat příkaz if, který určí, jestli máte shodu při hledání každého psa.

  1. Aktualizujte kód po komentáři č. 7 za dogDescription = ourAnimals[i, 4] + "\n" + ourAnimals[i, 5]; tímto kódem:

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

    Prozkoumejte předchozí příklad kódu. Když if příkaz najde dogCharacteristic shodu ve dogDescription, je na konzolu vypsána zpráva o shodě se psem a jeho popis. Ještě je potřeba počítat se zprávou "Nenašly se žádné shody".

  2. Přidejte kód noMatchesDog = true:

    Před komentář č. 6 přidejte následující kód:

    bool noMatchesDog = true;
    

    Nyní můžete pomocí této sledovací proměnné sledovat, kdy nejsou nalezeny žádné shody. Pokud je výchozí hodnota nastavena na true, znamená to, že "žádné psy neodpovídají hledání." Nyní, když se najde pes, můžete "přepnout" noMatchesDog z true na false.

  3. Do závorek if (dogDescription.Contains(dogCharacteristic)) příkazu přidejte následující kód:

    noMatchesDog = false;
    
  4. Zkontrolujte, že váš kód v hranatých if (dogDescription.Contains(dogCharacteristic)) závorkách byl zadán správně.

    Měli byste mít následující kód:

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

    Nakonec musíte vytvořit kód, který rozhodne, jestli se zpráva "nenašla žádná shoda" má být zapsána do konzoly.

  5. Na konec case "2" kódu těsně před kód Console.WriteLine("\n\rPress the Enter key to continue");, který je před break;, přidejte následující kód:

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

    Tento ukázkový kód je posledním kódem pro toto cvičení.

  6. Uložte změny.

Zkontroluj svou práci

  1. Na příkazovém řádku terminálu zadejte následující příkaz pro sestavení kódu projektu: dotnet build.

    Pokud se zobrazí chyby, je třeba si přečíst chybové zprávy, analyzovat problém a provádět opravy nebo zkontrolovat kód řešení ve složce "Final".

  2. Spusťte kód projektu v terminálu pomocí dotnet runpříkazu .

Po spuštění kódu se zobrazí dvě položky nabídky.

  1. V nabídce zadejte "2" a "Enter" a otestujte vyhledávání psa opakovaně.

     - 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
    

    Pokud všechno fungovalo podle očekávání v obou krocích, blahopřejeme! V opačném případě vyhledejte chyby kontrolou kroků cvičení. V případě potřeby začněte znovu nebo zkontrolujte kód konečné složky pro kód řešení v tomto cvičení.

  2. Napište exit, v nabídce aplikace ukončete program a pak zavřete panel terminálu.