Oefening: hondenzoeking toevoegen
In deze oefening voegt u de functie 'Alle honden met een opgegeven kenmerk weergeven' (menu-item 2) toe aan de toepassing. Tijdens de oefening wordt het oplossingsproject uit de vorige oefening gebruikt dat suggestedDonation gegevens heeft toegevoegd.
Opmerking
Dit project is een MVP-functie (minimal viable product). MVP-functies zijn bedoeld als een eenvoudig werkend prototype van een functie die snelle en eenvoudige levering mogelijk maakt. Een MVP is meestal geen eindproduct, het doel ervan is om u te helpen een idee te doorlopen, te testen en verdere vereisten te verzamelen.
De zoekfunctie vraagt de gebruiker om één zoekterm (of woordgroep) die een kenmerk beschrijft dat gewenst is in een huisdier om te adopteren. Vervolgens worden de beschrijvingen voor adopteerbare honden gezocht naar exacte overeenkomsten van de gebruikersinvoer. Informatie over de honden die overeenkomen, wordt naar de console uitgevoerd. Als er geen overeenkomsten worden geïdentificeerd, wordt een bericht 'Geen van onze honden is een overeenkomst' weergegeven, samen met de gebruikte zoekterm.
De taken die u tijdens deze oefening hebt voltooid, zijn:
- Gebruikersinvoer verzamelen voor de zoekterm voor huisdierkenmerken
- Loop door de dierenmatrix en identificeer "honden"
- Afzoeken naar een termovereenkomst in de beschrijving van iedere hond
- Toon de honden die overeenkomen met de term
Open in Visual Studio Code het voltooide Project.cs-bestand uit de vorige oefening waarin de donatiegegevens zijn toegevoegd om aan de slag te gaan.
Gebruikersinvoer verzamelen voor de zoekfunctie voor huisdierkenmerken
Controleer de instructie voor de menuswitch na opmerking #5 in de Project.cs code. U ontdekt de code die het bericht 'UNDER CONSTRUCTION' weergeeft.
Verwijder de code
Console.WriteLine("\nUNDER CONSTRUCTION - please check back next month to see progress.");tussencase "2":en deConsole.WriteLine("Press the Enter key to continue.");instructie, zodat de code overeenkomt met het volgende voorbeeld:case "2": // Display all dogs with a specified characteristic Console.WriteLine("Press the Enter key to continue."); readResult = Console.ReadLine(); break;Voeg code toe om gebruikersinvoer voor de
dogCharacteristictekenreeks te verzamelen. Voor het verzamelen van de invoer is eenwhilelus vereist die de gebruiker blijft vragen totdat deze een invoer verzendt. De lus geeft de gebruiker de opdracht omEnter one desired dog characteristic to search for. Een lege tekenreeks invoeren herhaalt de lus. Plaats de volgende codecase "2:net vóór debreak;instructie, zoals wordt weergegeven: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;Controleer de toegevoegde code. De belangrijkste functies van de
case "2":code zijn:- De code begint met een tekenreeksdeclaratie
string dogCharacteristic = "";die is gericht opcase "2":. U kuntdogCharacteristicnergens buiten de code van de case-instructie gebruiken. - Nadat
Console.ReadLine()gebruikersinvoer heeft verzameld alsdogCharacteristic, zorgt het ervoor dat de waarde niet null is, zet het de tekenreeks om in kleine letters en verwijdert het de omringende spaties. - Als
dogCharacteristiceen null-waarde heeft, blijft de lus opnieuw invoer verzamelen.
- De code begint met een tekenreeksdeclaratie
Sla uw code op en compileer vervolgens met behulp van
dotnet buildterminal (u kunt de stappen in de vorige oefening raadplegen) en eventuele fouten oplossen.Voer de code uit met behulp van
dotnet run.Om de invoerfunctionaliteit van de zoekterm in de app te testen, voert u
2in en selecteert u menuoptie2om te zoeken.Druk op Enter zonder gegevens in te voeren bij de prompt 'Voer één gewenste hondenkenmerk in om naar te zoeken' . Het programma moet terugkeren naar de
Enter one desired dog characteristics to search forprompt.Het programma moet terugkeren naar de prompt totdat tekens zijn ingevoerd.
Test de zoektermvermelding bij de prompt, met
goldenals uw vermelding. Het programma moet zonder fouten terugkeren naar het menu.Typ 'Afsluiten' in het menu om het programma af te sluiten.
Bepalen welke dieren honden zijn
Nu voegt u een functie toe om te zoeken met behulp van de gebruikersinvoer dogCharacteristic in de beschrijvingen van de hond na de vorige code onder case "2". Maar eerst moet je de honden identificeren.
Voeg aan het einde van de
case "2"code, net vóór deConsole.WriteLine("\n\rPress the Enter key to continue");code, die zich vóór debreak;bevindt, de volgende code toe:// #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 } }Neem even de tijd om de lus te bekijken die is toegevoegd aan het einde van de
case "2":code.De codefilters voor 'honden' met behulp van
ourAnimals[i,1], waaranimalSpeciesgegevens worden opgeslagen. AlsanimalSpecies'hond' als waarde wordt opgeslagen, wordt de code verplaatst naar de haakjes van de if-instructie waar de gecombineerde beschrijvingen kunnen worden doorzocht.Compileer uw code door eventuele fouten te gebruiken
dotnet builden op te lossen.
De gecombineerde beschrijvingsinformatie van honden doorzoeken
De vorige code zorgt ervoor dat u alleen hondenbeschrijvingen doorzoekt. Nu moet u de hondenbeschrijvingen doorzoeken en informatie over overeenkomsten presenteren.
Terwijl u nadenkt over de beschrijvingen, realiseert u zich dat er twee beschrijvingen animalPhysicalDescription zijn en animalPersonalityDescription;. Het team bespreekt de functionaliteit en besluit dat een gecombineerde beschrijving geschikt is voor de zoekopdracht.
Opmerking
Sommige ontwikkelaars verwijzen naar de toevoeging van vereisten tijdens de ontwikkeling als 'scope creep'. Hoewel het combineren van de beschrijvingen niet veel werk is, voegt het toch tijd en complexiteit toe. Daarom moet u het team laten weten dat extra vereisten vaak de voltooiing van het project vertragen.
Combineer de hondenbeschrijvingen om het gemakkelijker te maken om te zoeken
U moet een tekenreeks declareren, dogDescription om de gecombineerde gegevens te bewaren die afkomstig zijn van animalPhysicalDescription en animalPersonalityDescription;.
Declareer
dogDescriptionnet vóór opmerking 6 met de volgende code:string dogDescription = "";Gebruik nu de eerder gedeclareerde
dogDescriptiontekenreeks en vul deze met de fysieke en persoonlijkheidsbeschrijvingen voor elk dierVul de
dogDescriptionvariabele in met de waarden vooranimalPhysicalDescriptionenanimalPersonalityDescription;.Voeg de volgende code toe na opmerking 7:
dogDescription = ourAnimals[i, 4] + "\n" + ourAnimals[i, 5];
Zoek in de gecombineerde beschrijvingen van honden en toon ze
Nu voegt u de zoekopdracht toe dogCharacteristic in de gecombineerde gegevens van dogDescription. U moet een if instructie toevoegen om te bepalen of u een match hebt voor de zoekopdracht naar iedere hond.
Werk de code bij volgens opmerking #7, na
dogDescription = ourAnimals[i, 4] + "\n" + ourAnimals[i, 5];met de code:if (dogDescription.Contains(dogCharacteristic)) { Console.WriteLine($"\nOur dog {ourAnimals[i, 3]} is a match!"); Console.WriteLine(dogDescription); }Wanneer u het vorige codevoorbeeld bekijkt, en de
ifinstructie een overeenkomst voordogCharacteristicindogDescriptionvindt, wordt er een bericht over de overeenkomst van de hond en de beschrijving naar de console uitgevoerd. U moet nog steeds rekening houden met het bericht 'geen overeenkomsten gevonden'.Voeg de code
noMatchesDog = truetoe:Voeg de volgende code toe vlak voor opmerking 6:
bool noMatchesDog = true;U kunt nu bijhouden wanneer er geen overeenkomsten worden gevonden met deze traceringsvariabele. Als de standaardwaarde is ingesteld op
true, betekent dat dat er geen honden overeenkomen met de zoekopdracht. Als er nu een hond wordt gevonden, kunt u denoMatchesDogvantruenaarfalse"flippen".Voeg de volgende code toe aan de haakjes van de
if (dogDescription.Contains(dogCharacteristic))instructie:noMatchesDog = false;Controleer of uw code binnen de haakjes
if (dogDescription.Contains(dogCharacteristic))correct is ingevoerd.U moet de volgende code hebben:
if (dogDescription.Contains(dogCharacteristic)) { Console.WriteLine($"\nOur dog {ourAnimals[i, 3]} is a match!"); Console.WriteLine(dogDescription); noMatchesDog = false; }Ten slotte moet u code maken waarmee wordt bepaald of het bericht 'geen overeenkomsten gevonden' naar de console moet worden geschreven.
Voeg aan het einde van de
case "2"code, net vóór deConsole.WriteLine("\n\rPress the Enter key to continue");code, die zich vóór debreak;bevindt, de volgende code toe:if (noMatchesDog) { Console.WriteLine("None of our dogs are a match found for: " + dogCharacteristic); }Dit codevoorbeeld is de laatste code voor deze oefening.
Sla uw wijzigingen op.
Controleer uw werk
Voer bij de TERMINAL-opdrachtprompt de volgende opdracht in om uw projectcode te bouwen:
dotnet buildAls er fouten zijn, moet u de foutberichten lezen, problemen oplossen, oplossingen aanbrengen of de oplossingscode controleren in de laatste map.
Voer uw projectcode uit in de terminal met
dotnet run.
Zodra de code wordt uitgevoerd, worden er twee menu-items weergegeven.
Voer in het menu '
2' en 'Enter' in om de hondzoekfunctie herhaaldelijk te testen.- 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 matchAls alles in beide stappen werkt zoals verwacht, gefeliciteerd! Zoek anders naar de fouten door de stappen van de oefening te controleren. Begin zo nodig opnieuw of controleer de uiteindelijke mapcode voor oplossingscode voor deze oefening.
Typ
exitin het app-menu om het programma te beëindigen en sluit vervolgens het terminalpaneel.