Cvičení – přidejte vyhledávání psů
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:
- Získání uživatelských vstupů pro hledaný termín týkající se vlastností domácího mazlíčka
- Projděte pole zvířat a identifikujte "psy".
- Prohledejte popis každého psa pro shodu termínu
- 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.
Získání uživatelského vstupu pro vyhledávání vlastností domácího mazlíčka
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" .
Odstraňte kód
Console.WriteLine("\nUNDER CONSTRUCTION - please check back next month to see progress.");mezicase "2":a příkazemConsole.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;Přidejte kód pro řetězec
dogCharacteristic, který shromáždí uživatelský vstup. Shromáždění vstupu vyžaduje smyčkawhile, která bude uživateli stále zobrazovat výzvu, dokud neodešle vstup. Smyčka dává uživateli pokyn, abyEnter 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 zacase "2:těsně před příkazbreak;, 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 nacase "2":. Nemůžete využívatdogCharacteristicnikde mimo kód příkazu case. - Jakmile
Console.ReadLine()shromáždí uživatelský vstup jakodogCharacteristic, zajistí, že hodnota není null, nastaví řetězec na malá písmena a ořízne okolní mezery. - Pokud
dogCharacteristicmá hodnotu null, smyčka opakuje shromažďování vstupu.
- Kód začíná řetězcovou deklarací
Uložte kód a pak ho zkompilujte pomocí
dotnet buildterminálu (můžete se podívat na kroky v předchozím cvičení) a opravte případné chyby.Spusťte kód pomocí příkazu
dotnet run.K otestování funkce zadávání hledaného termínu v aplikaci zadejte
2, poté vyberte možnost2v nabídce a proveďte vyhledávání.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.Program by se měl vrátit k příkazovému řádku, dokud nebudou zadány znaky.
U výzvy otestujte zadání hledaného termínu s
goldenjako vaším vstupem. Aplikace by se měla vrátit do menu bez chyby.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.
Na konec
case "2"kódu těsně před kódConsole.WriteLine("\n\rPress the Enter key to continue");, který je předbreak;, 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 } }Zkuste chvíli prozkoumat smyčku přidanou na konec
case "2":kódu.Kód filtruje "psy" pomocí
ourAnimals[i,1], kdeanimalSpeciesjsou uložena data. PokudanimalSpeciesjako 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ů.Zkompilujte kód pomocí
dotnet builda 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.
Zkombinujte popisy psů, abyste usnadnili hledání.
Potřebujete deklarovat řetězec, dogDescription který bude držet sloučená data pocházející z animalPhysicalDescription a animalPersonalityDescription;.
Deklarujte
dogDescriptiontě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.Naplňte proměnnou
dogDescriptionhodnotami proanimalPhysicalDescriptionaanimalPersonalityDescription;.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.
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ž
ifpříkaz najdedogCharacteristicshodu vedogDescription, 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".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"noMatchesDogztruenafalse.Do závorek
if (dogDescription.Contains(dogCharacteristic))příkazu přidejte následující kód:noMatchesDog = false;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.
Na konec
case "2"kódu těsně před kódConsole.WriteLine("\n\rPress the Enter key to continue");, který je předbreak;, 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í.
Uložte změny.
Zkontroluj svou práci
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".
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.
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 matchPokud 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í.
Napište
exit, v nabídce aplikace ukončete program a pak zavřete panel terminálu.