Exercice - Ajouter une recherche de chiens
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 :
- Collecter l’entrée utilisateur du terme de recherche de la caractéristique des animaux
- Parcourez le tableau des animaux et identifiez les « chiens »
- Rechercher la description de chaque chien pour obtenir une correspondance de terme
- 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.
Recueillir les entrées des utilisateurs pour la recherche des caractéristiques des animaux
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 ».
Supprimez le code
Console.WriteLine("\nUNDER CONSTRUCTION - please check back next month to see progress.");entrecase "2":et l’instructionConsole.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;Ajoutez du code pour collecter les entrées utilisateur pour la
dogCharacteristicchaîne. Collecter l’entrée nécessite unewhileboucle qui continue d’inviter l’utilisateur jusqu’à ce qu’il envoie une entrée. La boucle indique à l’utilisateur deEnter one desired dog characteristic to search for. Si l’utilisateur entre une chaîne vide, la boucle se répète. Placez le code suivantcase "2:juste avant l’instructionbreak;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 utiliserdogCharacteristicnulle part en dehors du code de l’instruction Case. - Après
Console.ReadLine()avoir rassemblé l'entrée de l'utilisateur, commedogCharacteristic, elle garantit que la valeur n'est pas nulle et définit la chaîne en minuscules, tout en supprimant les espaces environnants. - Si
dogCharacteristicelle a une valeur Null, la boucle répète la collecte d’entrée.
- Le code commence par une déclaration
Enregistrez votre code, puis utilisez
dotnet builddans le TERMINAL pour le compiler (vous pouvez vous référer aux étapes de l’exercice précédent) et corriger toutes les erreurs.Exécutez le code à l'aide de
dotnet run.Pour tester la fonctionnalité d’entrée de terme de recherche de l’application, entrez
2, sélectionnez l’option2de menu , pour la recherche.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.Le programme doit revenir à l’invite jusqu’à ce que des caractères soient entrés.
À l’invite, testez l’entrée de terme de recherche, avec
goldencomme entrée. Le programme doit revenir au menu sans erreur.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.
À la fin du
case "2"code, juste avant le codeConsole.WriteLine("\n\rPress the Enter key to continue");, qui est avant lebreak;, 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 } }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 deanimalSpeciessont stockées. SianimalSpeciesstocke « 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.Compilez votre code en utilisant
dotnet buildet 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.
Combiner les descriptions des chiens pour faciliter la recherche
Vous devez déclarer une chaîne dogDescription pour contenir les données combinées provenant de animalPhysicalDescription et animalPersonalityDescription;.
Déclarez
dogDescriptionjuste avant le commentaire #6 avec le code suivant :string dogDescription = "";Utilisez maintenant la chaîne précédemment déclarée
dogDescriptionet remplissez-la avec les descriptions physiques et de personnalité pour chaque animalRemplissez la
dogDescriptionvariable avec les valeurs pouranimalPhysicalDescriptionetanimalPersonalityDescription;.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.
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
iftrouve une correspondance pourdogCharacteristicdansdogDescription, 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).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 »noMatchesDogdetrueàfalse.Entre crochets de l’instruction
if (dogDescription.Contains(dogCharacteristic)), ajoutez le code suivant :noMatchesDog = false;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.
À la fin du
case "2"code, juste avant le codeConsole.WriteLine("\n\rPress the Enter key to continue");, qui est avant lebreak;, 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 !
Enregistrez vos modifications.
Vérifier votre travail
À 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 ».
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.
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 matchSi 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.
Tapez
exitdans le menu de l’application pour mettre fin au programme, puis fermez le panneau du terminal.