Oefening: hondenzoeking toevoegen

Voltooid

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:

  1. Gebruikersinvoer verzamelen voor de zoekterm voor huisdierkenmerken
  2. Loop door de dierenmatrix en identificeer "honden"
  3. Afzoeken naar een termovereenkomst in de beschrijving van iedere hond
  4. 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.

  1. Controleer de instructie voor de menuswitch na opmerking #5 in de Project.cs code. U ontdekt de code die het bericht 'UNDER CONSTRUCTION' weergeeft.

  2. Verwijder de code Console.WriteLine("\nUNDER CONSTRUCTION - please check back next month to see progress."); tussen case "2": en de Console.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; 
    
  3. Voeg code toe om gebruikersinvoer voor de dogCharacteristic tekenreeks te verzamelen. Voor het verzamelen van de invoer is een while lus vereist die de gebruiker blijft vragen totdat deze een invoer verzendt. De lus geeft de gebruiker de opdracht om Enter one desired dog characteristic to search for. Een lege tekenreeks invoeren herhaalt de lus. Plaats de volgende code case "2: net vóór de break; 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 op case "2":. U kunt dogCharacteristic nergens buiten de code van de case-instructie gebruiken.
    • Nadat Console.ReadLine() gebruikersinvoer heeft verzameld als dogCharacteristic, zorgt het ervoor dat de waarde niet null is, zet het de tekenreeks om in kleine letters en verwijdert het de omringende spaties.
    • Als dogCharacteristic een null-waarde heeft, blijft de lus opnieuw invoer verzamelen.
  4. Sla uw code op en compileer vervolgens met behulp van dotnet build terminal (u kunt de stappen in de vorige oefening raadplegen) en eventuele fouten oplossen.

  5. Voer de code uit met behulp van dotnet run.

  6. Om de invoerfunctionaliteit van de zoekterm in de app te testen, voert u 2 in en selecteert u menuoptie 2 om te zoeken.

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

  8. Het programma moet terugkeren naar de prompt totdat tekens zijn ingevoerd.

  9. Test de zoektermvermelding bij de prompt, met golden als uw vermelding. Het programma moet zonder fouten terugkeren naar het menu.

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

  1. Voeg aan het einde van de case "2" code, net vóór de Console.WriteLine("\n\rPress the Enter key to continue"); code, die zich vóór de break; 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
        }
    }
    
  2. 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], waar animalSpecies gegevens worden opgeslagen. Als animalSpecies'hond' als waarde wordt opgeslagen, wordt de code verplaatst naar de haakjes van de if-instructie waar de gecombineerde beschrijvingen kunnen worden doorzocht.

  3. Compileer uw code door eventuele fouten te gebruiken dotnet build en 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.

U moet een tekenreeks declareren, dogDescription om de gecombineerde gegevens te bewaren die afkomstig zijn van animalPhysicalDescription en animalPersonalityDescription;.

  1. Declareer dogDescription net vóór opmerking 6 met de volgende code:

    string dogDescription = "";
    

    Gebruik nu de eerder gedeclareerde dogDescription tekenreeks en vul deze met de fysieke en persoonlijkheidsbeschrijvingen voor elk dier

  2. Vul de dogDescription variabele in met de waarden voor animalPhysicalDescription en animalPersonalityDescription;.

    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.

  1. 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 if instructie een overeenkomst voor dogCharacteristic in dogDescription vindt, 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'.

  2. Voeg de code noMatchesDog = true toe:

    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 de noMatchesDog van true naar false "flippen".

  3. Voeg de volgende code toe aan de haakjes van de if (dogDescription.Contains(dogCharacteristic)) instructie:

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

  5. Voeg aan het einde van de case "2" code, net vóór de Console.WriteLine("\n\rPress the Enter key to continue"); code, die zich vóór de break; 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.

  6. Sla uw wijzigingen op.

Controleer uw werk

  1. Voer bij de TERMINAL-opdrachtprompt de volgende opdracht in om uw projectcode te bouwen: dotnet build

    Als er fouten zijn, moet u de foutberichten lezen, problemen oplossen, oplossingen aanbrengen of de oplossingscode controleren in de laatste map.

  2. Voer uw projectcode uit in de terminal met dotnet run.

Zodra de code wordt uitgevoerd, worden er twee menu-items weergegeven.

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

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

  2. Typ exitin het app-menu om het programma te beëindigen en sluit vervolgens het terminalpaneel.