Exerciții - Adăugați căutarea câinilor

Finalizat

Î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:

  1. Colectați intrările utilizatorului pentru termenul de căutare caracteristic pentru animale de companie
  2. Buclă prin matricea animalelor și identificați "câini"
  3. Căutați descrierea fiecărui câine pentru o potrivire de termeni
  4. 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.

  1. Revizuiți instrucțiunea comutatorului de meniu după comentariul nr. 5 din codul Project.cs. Descoperiți codul care afișează mesajul "UNDER CONSTRUCTION".

  2. Ștergeți codul Console.WriteLine("\nUNDER CONSTRUCTION - please check back next month to see progress."); dintre case "2": și Console.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; 
    
  3. Adăugați cod pentru a colecta intrări de utilizator pentru dogCharacteristic șir. Colectarea intrării necesită o while buclă 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 imediat case "2: înainte de instrucțiunea break; 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 în case "2":. Nu puteți utiliza dogCharacteristic nicăieri în afara codului de instrucțiune a cazului.
    • După ce Console.ReadLine() colectează intrările utilizatorului, deoarece dogCharacteristic asigură că valoarea nu este nulă și setează șirul la litere mici și trunchiază spațiile înconjurătoare.
    • Dacă dogCharacteristic are o valoare nulă, atunci bucla repetă colectarea intrărilor.
  4. Salvați codul, apoi compilați utilizând dotnet build TERMINAL (puteți să consultați pașii din exercițiul anterior) și să remediați orice erori.

  5. Rulați codul utilizând dotnet run.

  6. Pentru a testa funcționalitatea de introducere a termenilor de căutare a aplicației, introduceți 2, selectați Opțiune 2meniu , pentru căutare.

  7. 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 for solicitare.

  8. Programul ar trebui să revină la solicitare până la intrarea caracterelor.

  9. La solicitare, testați termenul de căutare, cu golden drept intrare. Programul ar trebui să revină la meniu fără eroare.

  10. Î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.

  1. La sfârșitul codului, chiar înainte de case "2" cod Console.WriteLine("\n\rPress the Enter key to continue");, care este înainte de break;, 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
        }
    }
    
  2. Examinați bucla adăugată la sfârșitul case "2": codului.

    Codul filtrează pentru "câini" utilizând ourAnimals[i,1], unde animalSpecies sunt stocate datele. Dacă animalSpecies stochează "câine" ca valoare, atunci codul se mută între paranteze ale instrucțiunii if unde poate apărea căutarea descrierilor combinate.

  3. 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.

Trebuie să declarați un șir pentru dogDescription a reține datele combinate care provin de la animalPhysicalDescription și animalPersonalityDescription;.

  1. Declarați dogDescription chiar înainte de comentariul nr. 6 cu următorul cod:

    string dogDescription = "";
    

    Acum utilizați șirul declarat dogDescription anterior și îl populați cu descrieri fizice și de personalitate pentru fiecare animal

  2. Populați variabila dogDescription cu valorile pentru animalPhysicalDescription și animalPersonalityDescription;.

    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.

  1. 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 if găsește o potrivire pentru dogCharacteristic într-un dogDescription mesaj 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".

  2. 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 true aceasta î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" de noMatchesDog la la truefalse

  3. În parantezele instrucțiunii if (dogDescription.Contains(dogCharacteristic)) , adăugați următorul cod:

    noMatchesDog = false;
    
  4. 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ă.

  5. La sfârșitul codului, chiar înainte de case "2" cod Console.WriteLine("\n\rPress the Enter key to continue");, care este înainte de break;, 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!

  6. Salvați modificările.

Verificați-vă activitatea

  1. Î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".

  2. Rulați codul de proiect în terminal cu dotnet run.

După ce rulează codul, se afișează două elemente de meniu.

  1. Î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 match
    

    Dacă 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.

  2. Tastați exit, în meniul aplicației, pentru a încheia programul, apoi închideți panoul terminal.