Exerciții - Adăugați căutarea câinilor
În acest exercițiu, adăugați caracteristica "Afișați toți câinii cu o caracteristică specificată" (element de meniu nr. 2) la aplicație. Exercițiul utilizează proiectul soluției din exercițiul anterior care a adăugat suggestedDonation date.
Notă
Acest proiect este o caracteristică "produs viabil minimal" (MVP). Caracteristicile MVP sunt menite să fie un prototip de bază de lucru al unei caracteristici care permite livrarea rapidă și ușoară. Un MVP nu este de obicei un produs final, scopul său este de a vă ajuta să lucrați printr-o idee, să-l testați și să adunați cerințe suplimentare.
Caracteristica de căutare îi solicită utilizatorului un singur termen de intrare de căutare (sau o expresie) care descrie o caracteristică dorită de un animal de companie de adoptat. Apoi, descrierile pentru câini adoptabili sunt căutate pentru potriviri exacte ale intrării utilizatorului. Informații despre câinii care se potrivesc sunt ieșire la consolă. Dacă nu sunt identificate potriviri, atunci se afișează un mesaj "Niciunul dintre câinii noștri nu este o potrivire" împreună cu termenul de căutare utilizat.
Activitățile pe care le efectuați în timpul acestui exercițiu sunt:
- Colectați intrările utilizatorului pentru termenul de căutare caracteristic pentru animale de companie
- Buclă prin matricea animalelor și identificați "câini"
- Căutați descrierea fiecărui câine pentru o potrivire de termeni
- Afișarea câinilor care au o potrivire de termeni
În Visual Studio Code, deschideți fișierul Project.cs finalizat din exercițiul anterior care a adăugat informațiile despre donație pentru a începe.
Colectați intrările utilizatorului pentru căutarea caracteristică pentru animale
Revizuiți instrucțiunea comutatorului de meniu după comentariul nr. 5 din codul Project.cs. Descoperiți codul care afișează mesajul "UNDER CONSTRUCTION".
Ștergeți codul
Console.WriteLine("\nUNDER CONSTRUCTION - please check back next month to see progress.");dintrecase "2":șiConsole.WriteLine("Press the Enter key to continue.");instrucțiunea, astfel încât codul să corespundă următorului exemplu:case "2": // Display all dogs with a specified characteristic Console.WriteLine("Press the Enter key to continue."); readResult = Console.ReadLine(); break;Adăugați cod pentru a colecta intrări de utilizator pentru
dogCharacteristicșir. Colectarea intrării necesită owhilebuclă care continuă să îi solicite utilizatorului până când trimite o intrare. Bucla instruiește utilizatorul săEnter one desired dog characteristic to search for. Introducerea unui șir gol repetă bucla. Plasați următorul cod imediatcase "2:înainte de instrucțiuneabreak;indicată: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;Revizuiți codul adăugat. Principalele caracteristici ale
case "2":codului includ:- Codul începe cu o declarație
string dogCharacteristic = "";de șir care este definit încase "2":. Nu puteți utilizadogCharacteristicnicăieri în afara codului de instrucțiune a cazului. - După ce
Console.ReadLine()colectează intrările utilizatorului, deoarecedogCharacteristicasigură că valoarea nu este nulă și setează șirul la litere mici și trunchiază spațiile înconjurătoare. - Dacă
dogCharacteristicare o valoare nulă, atunci bucla repetă colectarea intrărilor.
- Codul începe cu o declarație
Salvați codul, apoi compilați utilizând
dotnet buildTERMINAL (puteți să consultați pașii din exercițiul anterior) și să remediați orice erori.Rulați codul utilizând
dotnet run.Pentru a testa funcționalitatea de introducere a termenilor de căutare a aplicației, introduceți
2, selectați Opțiune2meniu , pentru căutare.Apăsați "Enter" fără a introduce date în solicitarea "Introduceți un câine dorit pentru a căuta". Programul ar trebui să revină la
Enter one desired dog characteristics to search forsolicitare.Programul ar trebui să revină la solicitare până la intrarea caracterelor.
La solicitare, testați termenul de căutare, cu
goldendrept intrare. Programul ar trebui să revină la meniu fără eroare.În meniu, tastați "Ieșire" pentru a ieși din program.
Identificarea animalelor care sunt câini
Acum adăugați o caracteristică de căutat utilizând intrările dogCharacteristic utilizatorului din descrierile câinelui, urmând codul anterior, sub case "2". Dar mai întâi trebuie să identificați câinii.
La sfârșitul codului, chiar înainte de
case "2"codConsole.WriteLine("\n\rPress the Enter key to continue");, care este înainte debreak;, adăugați următorul cod:// #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 } }Examinați bucla adăugată la sfârșitul
case "2":codului.Codul filtrează pentru "câini" utilizând
ourAnimals[i,1], undeanimalSpeciessunt stocate datele. DacăanimalSpeciesstochează "câine" ca valoare, atunci codul se mută între paranteze ale instrucțiunii if unde poate apărea căutarea descrierilor combinate.Compilați codul utilizând
dotnet buildși remediați toate erorile.
Căutarea informațiilor de descriere combinate ale câinilor
Codul anterior asigură că căutați doar descrieri pentru câini. Acum trebuie să căutați descrierile câinelui și să obțineți informații despre potriviri.
În timp ce vă gândiți la descrieri, vă dați seama că există două descrieri animalPhysicalDescription și animalPersonalityDescription;. Echipa discută funcționalitatea și decide că o descriere combinată este potrivită pentru căutare.
Notă
Unii dezvoltatori se referă la adăugarea cerințelor în timpul dezvoltării ca "domeniu de înfiorare". Deși combinarea descrierilor nu funcționează mult, ea adaugă totuși timp și complexitate. Din acest motiv, ar trebui să anunțați echipa că cerințele adăugate întârzie adesea finalizarea proiectului.
Combinați descrierile câinilor pentru a facilita căutarea
Trebuie să declarați un șir pentru dogDescription a reține datele combinate care provin de la animalPhysicalDescription și animalPersonalityDescription;.
Declarați
dogDescriptionchiar înainte de comentariul nr. 6 cu următorul cod:string dogDescription = "";Acum utilizați șirul declarat
dogDescriptionanterior și îl populați cu descrieri fizice și de personalitate pentru fiecare animalPopulați variabila
dogDescriptioncu valorile pentruanimalPhysicalDescriptionșianimalPersonalityDescription;.Adăugați următorul cod după comentariul nr. 7:
dogDescription = ourAnimals[i, 4] + "\n" + ourAnimals[i, 5];
Se caută descrierile combinate ale câinilor și se afișează
Acum adăugați căutarea dogCharacteristic în datele combinate din dogDescription. Trebuie să adăugați o if instrucțiune pentru a determina dacă aveți o potrivire pentru căutarea fiecărui câine.
Actualizați codul următor comentariu #7, după
dogDescription = ourAnimals[i, 4] + "\n" + ourAnimals[i, 5];cod:if (dogDescription.Contains(dogCharacteristic)) { Console.WriteLine($"\nOur dog {ourAnimals[i, 3]} is a match!"); Console.WriteLine(dogDescription); }Examinați exemplul anterior de cod, atunci când instrucțiunea
ifgăsește o potrivire pentrudogCharacteristicîntr-undogDescriptionmesaj despre meciul de câine și descriere este rezultatul pe consolă. Tot trebuie să țină cont pentru mesajul "nu s-a găsit nicio potrivire".Adăugați codul
noMatchesDog = true:Adăugați următorul cod chiar înainte de comentariul nr. 6:
bool noMatchesDog = true;Acum puteți urmări când nu se găsesc potriviri cu această variabilă de urmărire. Atunci când valoarea implicită este setată la
trueaceasta înseamnă "este adevărat că niciun câine nu se potrivește pentru căutare". Acum, când un câine este găsit puteți "flip" denoMatchesDogla latruefalseÎn parantezele instrucțiunii
if (dogDescription.Contains(dogCharacteristic)), adăugați următorul cod:noMatchesDog = false;Revizuiți dacă ați introdus corect codul între paranteze
if (dogDescription.Contains(dogCharacteristic)).Ar trebui să aveți următorul cod:
if (dogDescription.Contains(dogCharacteristic)) { Console.WriteLine($"\nOur dog {ourAnimals[i, 3]} is a match!"); Console.WriteLine(dogDescription); noMatchesDog = false; }În sfârșit, trebuie să creați cod care decide dacă mesajul "nu s-a găsit nicio potrivire" ar trebui să fie scris pe consolă.
La sfârșitul codului, chiar înainte de
case "2"codConsole.WriteLine("\n\rPress the Enter key to continue");, care este înainte debreak;, adăugați următorul cod:if (noMatchesDog) { Console.WriteLine("None of our dogs are a match found for: " + dogCharacteristic); }Acest exemplu de cod este codul final pentru acest exercițiu!
Salvați modificările.
Verificați-vă activitatea
În linia de comandă TERMINAL, pentru a construi codul proiectului, introduceți următoarea comandă:
dotnet build.Dacă există erori de care aveți nevoie să citiți mesajele de eroare, probleme la împușcături și faceți remedieri sau revizuiți codul soluției în folderul "Final".
Rulați codul de proiect în terminal cu
dotnet run.
După ce rulează codul, se afișează două elemente de meniu.
În meniu, introduceți "
2" și "Enter" pentru a testa căutarea de câine în mod repetat.- 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 matchDacă totul a funcționat așa cum vă așteptați în ambii pași, felicitări! În caz contrar, căutați erorile verificând pașii pentru exerciții. Dacă este necesar, reîncepeți sau verificați codul de folder final pentru codul soluției pentru acest exercițiu.
Tastați
exit, în meniul aplicației, pentru a încheia programul, apoi închideți panoul terminal.