Вправа – додавання пошуку собак
У цій вправі ви додаєте до програми функцію "Показати всіх собак із вказаною характеристикою" (пункт меню #2). У вправі використовується проект рішення з попередньої вправи, яка додала suggestedDonation дані.
Примітка
Цей проект є функцією "мінімально життєздатний продукт" (MVP). Функції MVP призначені для базового робочого прототипу функції, яка забезпечує швидку та легку доставку. MVP зазвичай не є кінцевим продуктом, його мета полягає в тому, щоб допомогти вам працювати через ідею, перевірити його і зібрати подальші вимоги.
Функція пошуку пропонує користувачу один пошуковий ввід (або фразу), який описує характеристику, бажану у вихованця, щоб прийняти. Потім описи усиновлюваних собак шукають точні збіги введених користувачем даних. Відомості про собак, які збігаються, виводяться на консоль. Якщо збігів не виявлено, разом із використаним пошуковим терміном відображається повідомлення "Жодна з наших собак не збігається".
Завдання, які виконуються під час цієї вправи:
- Зберіть введені користувачем дані для умов пошуку характеристик домашньої тварини
- Цикл через масив тварин і визначити "собаки"
- Пошук опису домашньої тварини кожної собаки для відповідності терміну
- Відображення собак, у яких збігається термін
У Visual Studio Code відкрийте завершений файл Project.cs з попередньої вправи, яка додала відомості про пожертви, щоб почати роботу.
Збирання вхідних даних користувача для пошуку характеристик домашньої тварини
Перегляньте інструкцію перемикача меню після примітки #5 у коді Project.cs. Ви виявите код, який відображає повідомлення "UNDER CONSTRUCTION".
Видаліть код
Console.WriteLine("\nUNDER CONSTRUCTION - please check back next month to see progress.");міжcase "2":і інструкцією,Console.WriteLine("Press the Enter key to continue.");щоб код відповідають такому зразку:case "2": // Display all dogs with a specified characteristic Console.WriteLine("Press the Enter key to continue."); readResult = Console.ReadLine(); break;Додайте код, щоб зібрати введені користувачем дані для
dogCharacteristicрядка. Для збирання вводу потрібенwhileцикл, який продовжує запитувати користувача, доки він не надішле ввід. Цикл інструктує користувача .Enter one desired dog characteristic to search forВведення пустого рядка повторює цикл. Поставте наведений нижчеcase "2:код безпосередньо перед інструкцієюbreak;, як показано нижче.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;Перегляньте доданий код. До основних функцій коду належать
case "2"::- Код починається з оголошення рядка
string dogCharacteristic = "";, призначеного дляcase "2":. Ви не можете використовуватиdogCharacteristicбудь-де за межами коду оператора інциденту. - Після
Console.ReadLine()збору введених користувачем даних, оскількиdogCharacteristicце гарантує, що значення не має значення null, і задає рядок нижньому регістру та обтинає навколишні пробіли. - Якщо
dogCharacteristicмає null-значення, то цикл повторює введення збору.
- Код починається з оголошення рядка
Збережіть код, а потім скомпілюйте його за допомогою
dotnet buildфункції TERMINAL (ви можете посилатися на дії, описані в попередній вправі) і виправте будь-які помилки.Запустіть код за допомогою
dotnet run.Щоб перевірити функціональність введення термінів пошуку в програмі, введіть
2, виберіть Пункт2меню , для пошуку.Натисніть клавішу "Enter", не вводячи дані в запиті "Введіть одну бажану характеристику собаки для пошуку". Програма має повернутися до
Enter one desired dog characteristics to search forзапиту.Програма має повернутися до запиту, доки не буде введено символи.
Коли з'явиться запит, перевірте запис терміна пошуку як
goldenзапис. Програма має повернутися до меню без помилок.У меню введіть "Exit", щоб вийти з програми.
Визначити, які тварини є собаками
Тепер ви додаєте функцію для пошуку за допомогою введення dogCharacteristic користувачем в описах собак після попереднього коду в розділі case "2". Але спочатку потрібно ідентифікувати собак.
Наприкінці
case "2"коду перед кодомConsole.WriteLine("\n\rPress the Enter key to continue");, який передувати ,break;додайте такий код:// #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 } }Щоб перевірити цикл, доданий до кінця коду, знадобиться хвилина
case "2":.Код фільтрує для "собак" за допомогою
ourAnimals[i,1], деanimalSpeciesзберігаються дані. ЯкщоanimalSpecies« собака» зберігає як значення, код переміщується в дужки інструкції IF, де може відбуватися пошук об'єднаних описів.Скомпілюйте код, використовуючи
dotnet buildта виправляйте помилки.
Пошук об'єднаних відомостей про опис собак
Попередній код забезпечує пошук лише описів собак. Тепер вам потрібно шукати описи собак і вихідні відомості про збіги.
Замислюючись про описи, ви розумієте, що є два описи animalPhysicalDescription та animalPersonalityDescription;. Команда обговорює функціональні можливості та вирішує, чи підходить об'єднаний опис для пошуку.
Примітка
Деякі розробники називають додавання вимог під час розробки "областю повзучості". Хоча поєднання описів не так багато роботи, це все одно додає часу і складності. З цієї причини слід повідомити команді, що додані вимоги часто затримують завершення проекту.
Об'єднання описів собак, щоб спростити пошук
Потрібно оголосити рядок, dogDescription щоб зберегти об'єднані дані, які походять із animalPhysicalDescription і animalPersonalityDescription;.
Оголосити
dogDescriptionбезпосередньо перед коментарем #6 за допомогою такого коду:string dogDescription = "";Тепер використовуйте раніше оголошений
dogDescriptionрядок і заповнюйте його фізичними і особистими описами для кожної твариниЗаповніть змінну
dogDescriptionзначеннями дляanimalPhysicalDescriptionтаanimalPersonalityDescription;.Додайте наступний код після примітки # 7:
dogDescription = ourAnimals[i, 4] + "\n" + ourAnimals[i, 5];
Пошук об'єднаних описів собак і відображення
Тепер ви додаєте пошук dogCharacteristic до об'єднаних dogDescriptionданих . Щоб визначити, чи є у вас збіги для пошуку кожної собаки, потрібно додати інструкцію if .
Оновіть код після примітки #7 після
dogDescription = ourAnimals[i, 4] + "\n" + ourAnimals[i, 5];коду:if (dogDescription.Contains(dogCharacteristic)) { Console.WriteLine($"\nOur dog {ourAnimals[i, 3]} is a match!"); Console.WriteLine(dogDescription); }Перегляньте попередній приклад коду, коли
ifінструкція знаходить збігdogCharacteristicу повідомленніdogDescriptionпро відповідність собаки, а опис виводиться на консоль. Усе одно потрібно врахувати повідомлення "збігів не знайдено".Додайте код
noMatchesDog = true:Додайте такий код безпосередньо перед приміткою #6:
bool noMatchesDog = true;Тепер можна відстежувати, коли не знайдено збігів із цією змінною відстеження. Коли за замовчуванням установлено цей
trueпараметр, це означає, що "це правда, що жодні собаки не відповідають пошуку". Тепер, коли собака знайдений, ви можете "гортати"noMatchesDogвідtrueдоfalseУ дужках
if (dogDescription.Contains(dogCharacteristic))інструкції додайте такий код:noMatchesDog = false;Перевірте, чи правильно введено код у дужках
if (dogDescription.Contains(dogCharacteristic)).У вас має бути такий код:
if (dogDescription.Contains(dogCharacteristic)) { Console.WriteLine($"\nOur dog {ourAnimals[i, 3]} is a match!"); Console.WriteLine(dogDescription); noMatchesDog = false; }Нарешті, потрібно створити код, який вирішує, чи слід записувати повідомлення "збігів не знайдено" на консоль.
Наприкінці
case "2"коду перед кодомConsole.WriteLine("\n\rPress the Enter key to continue");, який передувати ,break;додайте такий код:if (noMatchesDog) { Console.WriteLine("None of our dogs are a match found for: " + dogCharacteristic); }Цей зразок коду є остаточним кодом для цієї вправи!
Збережіть зміни.
Перевірити свою роботу
У командному рядку TERMINAL, щоб створити код проекту, введіть таку команду:
dotnet build.Якщо є помилки, які потрібно прочитати в повідомленнях про помилку, не вдається виконати зйомку та виправити або переглянути код рішення в папці "Final".
Запустіть код проекту в терміналі за допомогою
dotnet run.
Після запуску коду відобразяться два елементи меню.
У меню введіть "
2" і "Enter", щоб перевірити пошук собаки кілька разів.- 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Якщо все працювало належним чином в обох кроках, вітаємо! В іншому разі знайдіть помилки, перевіривши кроки виконання. За потреби почніть знову або перевірте код кінцевої папки, щоб отримати код рішення для цієї вправи.
Введіть
exit, у меню програми, щоб завершити програму, а потім закрийте панель терміналів.