Øvelse – Tilføj hundesøgning
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:
- Indsaml brugerinput for det karakteristiske søgeord for kæledyr
- Sløjfe gennem dyrenes matrix og identificere "hunde"
- Søg efter et ordmatch for hver hunds kæledyrsbeskrivelse
- 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.
Indsaml brugerinput til søgning efter kæledyrsegenskaber
Gennemse menuparametersætningen efter kommentar nr. 5 i Project.cs-koden. Du finder den kode, der viser meddelelsen "UNDER CONSTRUCTION" .
Slet koden
Console.WriteLine("\nUNDER CONSTRUCTION - please check back next month to see progress.");mellemcase "2":og sætningenConsole.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;Tilføj kode for at indsamle brugerinput for strengen
dogCharacteristic. Indsaml inputtet kræver enwhileløkke, der fortsætter med at spørge brugeren, indtil vedkommende sender et input. Løkken giver brugeren besked om atEnter one desired dog characteristic to search for. Hvis du angiver en tom streng, gentages løkken. Placer følgende kode eftercase "2:lige før sætningenbreak;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 tilcase "2":. Du kan ikke brugedogCharacteristicnogen steder uden for koden for sagssætningen. - Når
Console.ReadLine()brugerinput er indsamlet, dadogCharacteristicdet sikrer, at værdien ikke er null, og indstiller strengen til små bogstaver og trimmer de omgivende mellemrum. - Hvis
dogCharacteristichar en null-værdi, gentager løkken indsamlingsinput.
- Koden starter med en strengerklæring
Gem din kode, kompiler derefter ved hjælp
dotnet buildaf i TERMINAL (du kan se trinnene i den forrige øvelse) og rette eventuelle fejl.Kør koden ved hjælp
dotnet runaf .Hvis du vil teste funktionaliteten af søgeudtryksinput i appen, skal du angive
2, vælge Menuindstilling2for at søge.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.Programmet skal vende tilbage til prompten, indtil der indtastes tegn.
Ved prompten skal du teste indtastning af søgeord med
goldensom din indtastning. Programmet bør vende tilbage til menuen uden fejl.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.
Tilføj følgende kode i slutningen af
case "2"koden lige før kodenConsole.WriteLine("\n\rPress the Enter key to continue");, som er førbreak;:// #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 } }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], hvoranimalSpeciesdata gemmes. HvisanimalSpeciesgemmer "hund" som sin værdi, flyttes koden til parenteserne i if-sætningen, hvor søgningen i de kombinerede beskrivelser kan finde sted.Kompiler din kode ved hjælp
dotnet buildaf 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.
Kombiner beskrivelserne af hunden for at gøre det nemmere at søge
Du skal deklarere en streng for dogDescription at bevare de kombinerede data, der stammer fra animalPhysicalDescription og animalPersonalityDescription;.
Deklarer
dogDescriptionlige før kommentar nr. 6 med følgende kode:string dogDescription = "";Brug nu den tidligere erklærede
dogDescriptionstreng, og udfyld den med de fysiske og personlighedsbeskrivelser for hvert dyrUdfyld variablen
dogDescriptionmed værdierne foranimalPhysicalDescriptionoganimalPersonalityDescription;.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.
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
iffinder et match fordogCharacteristicidogDescriptionen meddelelse om hundematch, og beskrivelsen er output til konsollen. Du skal stadig tage højde for meddelelsen "Der blev ikke fundet nogen forekomster".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" franoMatchesDogtruetilfalseTilføj følgende kode i sætningens
if (dogDescription.Contains(dogCharacteristic))parenteser:noMatchesDog = false;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.
Tilføj følgende kode i slutningen af
case "2"koden lige før kodenConsole.WriteLine("\n\rPress the Enter key to continue");, som er førbreak;:if (noMatchesDog) { Console.WriteLine("None of our dogs are a match found for: " + dogCharacteristic); }Dette kodeeksempel er den endelige kode for denne øvelse!
Gem ændringerne.
Kontrollér dit arbejde
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".
Kør projektkoden i terminalen med
dotnet run.
Når koden kører, vises der to menupunkter.
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 matchHvis 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.
Skriv
exiti appmenuen for at afslutte programmet, og luk derefter terminalpanelet.