Exercice - Ajouter une recherche de chiens

Effectué

Dans cet exercice, vous ajoutez la fonctionnalité « Afficher tous les chiens avec une caractéristique spécifiée » (élément de menu n°2) à l’application. L’exercice utilise le projet de solution de l’exercice précédent, qui a ajouté des données suggestedDonation.

Remarque

Ce projet est une fonctionnalité « produit minimal viable » (MVP). Les fonctionnalités MVP sont destinées à être un prototype de travail de base d’une fonctionnalité qui permet une livraison rapide et facile. Un MVP n’est généralement pas un produit final, son objectif est de vous aider à travailler sur une idée, à le tester et à recueillir d’autres exigences.

La fonctionnalité de recherche invite l’utilisateur à entrer un seul terme d’entrée de recherche (ou expression) qui décrit une caractéristique souhaitée dans un animal de compagnie à adopter. Ensuite, les descriptions des chiens adoptables sont recherchées pour obtenir des correspondances exactes de l’entrée utilisateur. Information sur les chiens qui correspondent au critère sont affichées sur la console. Si aucune correspondance n’est identifiée, un message « Aucun de nos chiens n’est une correspondance » s’affiche avec le terme de recherche utilisé.

Les tâches que vous effectuez pendant cet exercice sont les suivantes :

  1. Collecter l’entrée utilisateur du terme de recherche de la caractéristique des animaux
  2. Parcourez le tableau des animaux et identifiez les « chiens »
  3. Rechercher la description de chaque chien pour obtenir une correspondance de terme
  4. Afficher les chiens qui ont une correspondance avec le terme

Dans Visual Studio Code, ouvrez le fichier de Project.cs terminé à partir de l’exercice précédent qui a ajouté les informations de don pour commencer.

  1. Passez en revue l’instruction switch de menu suivant le commentaire 5 dans le code Project.cs. Vous découvrez le code qui affiche le message « UNDER CONSTRUCTION ».

  2. Supprimez le code Console.WriteLine("\nUNDER CONSTRUCTION - please check back next month to see progress."); entre case "2": et l’instruction Console.WriteLine("Press the Enter key to continue."); afin que le code corresponde à l’exemple suivant :

    case "2":
        // Display all dogs with a specified characteristic
        Console.WriteLine("Press the Enter key to continue.");
        readResult = Console.ReadLine();
        break; 
    
  3. Ajoutez du code pour collecter les entrées utilisateur pour la dogCharacteristic chaîne. Collecter l’entrée nécessite une while boucle qui continue d’inviter l’utilisateur jusqu’à ce qu’il envoie une entrée. La boucle indique à l’utilisateur de Enter one desired dog characteristic to search for. Si l’utilisateur entre une chaîne vide, la boucle se répète. Placez le code suivant case "2: juste avant l’instruction break; comme indiqué :

    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;
    

    Passez en revue le code ajouté. Les principales fonctionnalités du case "2": code sont les suivantes :

    • Le code commence par une déclaration string dogCharacteristic = ""; de chaîne limitée à case "2":. Vous ne pouvez utiliser dogCharacteristic nulle part en dehors du code de l’instruction Case.
    • Après Console.ReadLine() avoir rassemblé l'entrée de l'utilisateur, comme dogCharacteristic, elle garantit que la valeur n'est pas nulle et définit la chaîne en minuscules, tout en supprimant les espaces environnants.
    • Si dogCharacteristic elle a une valeur Null, la boucle répète la collecte d’entrée.
  4. Enregistrez votre code, puis utilisez dotnet build dans le TERMINAL pour le compiler (vous pouvez vous référer aux étapes de l’exercice précédent) et corriger toutes les erreurs.

  5. Exécutez le code à l'aide de dotnet run.

  6. Pour tester la fonctionnalité d’entrée de terme de recherche de l’application, entrez 2, sélectionnez l’option 2de menu , pour la recherche.

  7. Appuyez sur « Entrée » sans entrer de données à l’invite « Entrer une caractéristique de chien souhaitée pour rechercher ». Le programme doit revenir à l’invite Enter one desired dog characteristics to search for.

  8. Le programme doit revenir à l’invite jusqu’à ce que des caractères soient entrés.

  9. À l’invite, testez l’entrée de terme de recherche, avec golden comme entrée. Le programme doit revenir au menu sans erreur.

  10. Dans le menu, tapez « Quitter » pour quitter le programme.

Identifier les animaux qui sont des chiens

Vous ajoutez maintenant une fonctionnalité pour effectuer une recherche à l’aide de l’entrée dogCharacteristic utilisateur dans les descriptions de chiens en suivant le code précédent sous case "2". Mais tout d’abord, vous devez identifier les chiens.

  1. À la fin du case "2" code, juste avant le code Console.WriteLine("\n\rPress the Enter key to continue");, qui est avant le break;, ajoutez le code suivant :

    // #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. Prenez une minute pour examiner la boucle ajoutée à la fin du case "2": code.

    Le code filtre « dogs » (chiens) en utilisant ourAnimals[i,1], où les données de animalSpecies sont stockées. Si animalSpecies stocke « dog » comme valeur, le code se déplace à l'intérieur des accolades de l'instruction if, où la recherche des descriptions combinées peut avoir lieu.

  3. Compilez votre code en utilisant dotnet build et corrigez toutes les erreurs.

Rechercher les informations de description combinées des chiens

Le code précédent garantit que vous recherchez uniquement des descriptions de chiens. Vous devez maintenant rechercher dans les descriptions des chiens et afficher les informations sur les correspondances.

En pensant aux descriptions, vous réalisez qu’il y a deux descriptions animalPhysicalDescription et animalPersonalityDescription;. L’équipe discute des fonctionnalités et décide qu’une description combinée est appropriée pour la recherche.

Remarque

Certains développeurs font référence à l’ajout d’exigences pendant le développement comme étant « le glissement de portée ». Bien que la combinaison des descriptions ne fonctionne pas beaucoup, elle ajoute encore du temps et de la complexité. Pour cette raison, vous devez informer l’équipe que les exigences ajoutées retardent souvent l’achèvement du projet.

Vous devez déclarer une chaîne dogDescription pour contenir les données combinées provenant de animalPhysicalDescription et animalPersonalityDescription;.

  1. Déclarez dogDescription juste avant le commentaire #6 avec le code suivant :

    string dogDescription = "";
    

    Utilisez maintenant la chaîne précédemment déclarée dogDescription et remplissez-la avec les descriptions physiques et de personnalité pour chaque animal

  2. Remplissez la dogDescription variable avec les valeurs pour animalPhysicalDescription et animalPersonalityDescription;.

    Ajoutez le code suivant après le commentaire n° 7 :

    dogDescription = ourAnimals[i, 4] + "\n" + ourAnimals[i, 5];
    

Effectuer la recherche des descriptions combinées des chiens et afficher les résultats

Vous ajoutez maintenant la recherche dogCharacteristic dans les données combinées de dogDescription. Vous devez ajouter une if instruction pour déterminer si vous avez un résultat correspondant à la recherche de chaque chien.

  1. Mettez à jour le code en suivant le commentaire #7, après dogDescription = ourAnimals[i, 4] + "\n" + ourAnimals[i, 5];, avec le code :

    if (dogDescription.Contains(dogCharacteristic))
    {
        Console.WriteLine($"\nOur dog {ourAnimals[i, 3]} is a match!");
        Console.WriteLine(dogDescription);
    }
    

    Examinez l’exemple de code précédent, quand l’instruction if trouve une correspondance pour dogCharacteristic dans dogDescription, un message sur la correspondance du chien et sa description sont affichés dans la console. Vous devez néanmoins prendre en compte le message « no matches found » (pas de correspondance trouvée).

  2. Ajoutez le code noMatchesDog = true:

    Ajoutez le code suivant juste avant le commentaire #6 :

    bool noMatchesDog = true;
    

    Vous pouvez maintenant suivre quand aucune correspondance n’est trouvée avec cette variable de suivi. Lorsque la valeur par défaut est définie true, cela signifie que « c’est vrai qu’aucun chien ne correspond à la recherche ». Maintenant, quand un chien est trouvé, vous pouvez « changer » noMatchesDog de true à false.

  3. Entre crochets de l’instruction if (dogDescription.Contains(dogCharacteristic)) , ajoutez le code suivant :

    noMatchesDog = false;
    
  4. Vérifiez que votre code entre crochets if (dogDescription.Contains(dogCharacteristic)) a été entré correctement.

    Vous devez disposer du code suivant :

        if (dogDescription.Contains(dogCharacteristic))
        {
            Console.WriteLine($"\nOur dog {ourAnimals[i, 3]} is a match!");
            Console.WriteLine(dogDescription);
    
            noMatchesDog = false;
        }
    

    Enfin, vous devez créer du code qui décide si le message « aucune correspondance trouvée » doit être écrit dans la console.

  5. À la fin du case "2" code, juste avant le code Console.WriteLine("\n\rPress the Enter key to continue");, qui est avant le break;, ajoutez le code suivant :

    if (noMatchesDog)
    {
        Console.WriteLine("None of our dogs are a match found for: " + dogCharacteristic);
    }
    
    

    Cet exemple de code est le code final de cet exercice !

  6. Enregistrez vos modifications.

Vérifier votre travail

  1. À l’invite de commandes TERMINAL, pour générer le code de votre projet, entrez la commande suivante : dotnet build.

    S’il existe des erreurs, vous avez besoin de lire les messages d’erreur, de tirer des problèmes et de corriger ou de passer en revue le code de la solution dans le dossier « Final ».

  2. Exécutez le code de votre projet dans le terminal avec dotnet run.

Une fois le code exécuté, deux éléments de menu sont affichés.

  1. Dans le menu, entrez «2 » et « Entrée » pour tester la recherche de chiens plusieurs fois.

     - 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
    

    Si tout fonctionnait comme prévu dans les deux étapes, félicitations ! Sinon, recherchez les erreurs en vérifiant les étapes de l’exercice. Si nécessaire, recommencez ou vérifiez le dossier Final pour trouver le code de solution de cet exercice.

  2. Tapez exit dans le menu de l’application pour mettre fin au programme, puis fermez le panneau du terminal.