Övning – Lägga till hundsökning
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:
- Samla in användarindata för söktermen för husdjursegenskaper
- Loopa genom djurmatrisen och identifiera "hundar"
- Sök efter en termmatchning i varje hunds husdjursbeskrivning
- 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.
Samla in användarens input för sökning av husdjursegenskaper
Granska menyväxelns instruktion efter kommentar nr 5 i Project.cs-koden. Du upptäcker koden som visar meddelandet "UNDER KONSTRUKTION" .
Ta bort koden
Console.WriteLine("\nUNDER CONSTRUCTION - please check back next month to see progress.");mellancase "2":och -instruktionenConsole.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;Lägg till kod för att samla in användarindata för strängen
dogCharacteristic. Samla indata kräver enwhileloop som fortsätter att fråga användaren tills de skickar in en indata. Loopen instruerar användaren attEnter one desired dog characteristic to search for. Om du anger en tom sträng upprepas loopen. Placera följande kod precis eftercase "2:och just innanbreak;-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 tillcase "2":. Du kan inte användadogCharacteristicnågonstans utanför ärendeutdragskoden. - När
Console.ReadLine()har samlat in användarindata, ochdogCharacteristicsäkerställer att värdet inte är null, sätts strängen till gemener och trimmas de omgivande mellanslagen. - Om
dogCharacteristichar ett null-värde upprepar loopen insamlingsindata.
- Koden börjar med en strängdeklaration
Spara koden och kompilera sedan med hjälp
dotnet buildav i TERMINAL (du kan läsa stegen i föregående övning) och åtgärda eventuella fel.Kör koden genom att använda
dotnet run.Om du vill testa söktermens indatafunktioner i appen anger du
2, väljer Menyalternativ2, för sökning.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.Programmet ska återgå till kommandoprompten tills tecken har angetts.
Vid prompten testar du angivandet av söktermen med
goldensom din inmatning. Programmet bör återgå till menyn utan fel.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.
I slutet av
case "2"koden, precis före kodenConsole.WriteLine("\n\rPress the Enter key to continue");, som är förebreak;, 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 } }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äranimalSpeciesdata lagras. OmanimalSpecieslagrar "hund" som dess värde flyttas koden till hakparenteserna i if-instruktionen där sökningen av de kombinerade beskrivningarna kan ske.Kompilera koden genom att använda
dotnet buildoch å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.
Kombinera hundbeskrivningarna för att göra det enklare att söka
Du måste deklarera en sträng dogDescription för att lagra de kombinerade data som kommer från animalPhysicalDescription och animalPersonalityDescription;.
Deklarera
dogDescriptionprecis före kommentar nr 6 med följande kod:string dogDescription = "";Använd nu den tidigare deklarerade
dogDescriptionsträngen och fyll i den med beskrivningarna för fysiska och personligheter för varje djurFyll i variabeln
dogDescriptionmed värdena föranimalPhysicalDescriptionochanimalPersonalityDescription;.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.
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ördogCharacteristicidogDescription, skrivs ett meddelande om hundmatchningen och dess beskrivning ut på konsolen. Du måste fortfarande ta hänsyn till meddelandet "inga matchningar hittades".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
truepå betyder det "det är sant att inga hundar matchar sökningen". Nu, när en hund hittas kan du "vända"noMatchesDogfråntruetillfalseLägg till följande kod inom hakparenteserna för
if (dogDescription.Contains(dogCharacteristic))-instruktionen:noMatchesDog = false;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.
I slutet av
case "2"koden, precis före kodenConsole.WriteLine("\n\rPress the Enter key to continue");, som är förebreak;, 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!
Spara ändringarna.
Kontrollera ditt arbete
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".
Kör projektkoden i terminalen med
dotnet run.
När koden har körts visas två menyalternativ.
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 matchOm 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.
Skriv
exitpå appmenyn för att avsluta programmet och stäng sedan terminalpanelen.