Ejercicio: incorporación de la búsqueda de perros
En este ejercicio, agregará la característica "Mostrar todos los perros con una característica especificada" (elemento de menú n.º 2) a la aplicación. El ejercicio utiliza el proyecto de solución del ejercicio anterior que añadió datos suggestedDonation.
Nota:
Este proyecto es una característica de "producto mínimo viable" (MVP). Las características de MVP están diseñadas para ser un prototipo de trabajo básico de una característica que permite una entrega rápida y sencilla. Un MVP no suele ser un producto final, su propósito es ayudarle a trabajar a través de una idea, probarlo y recopilar más requisitos.
La característica de búsqueda solicita al usuario un único término de entrada de búsqueda (o frase) que describe una característica deseada en una mascota que se va a adoptar. A continuación, se busca que las descripciones de los perros adoptables coincidan exactamente con la entrada del usuario. Información sobre los perros que coinciden se muestra en la consola. Si no se identifican coincidencias, se muestra un mensaje "Ninguno de nuestros perros es una coincidencia" junto con el término de búsqueda utilizado.
Las tareas que ha completado durante este ejercicio son:
- Recopilación de la entrada del usuario para el término de búsqueda de características de mascotas
- Recorrer la matriz de animales e identificar "perros"
- Buscar en la descripción de cada perro una coincidencia de términos
- Mostrar los perros que tienen una coincidencia de términos
En Visual Studio Code, abra el archivo completado Project.cs del ejercicio anterior que agregó la información de donación para empezar.
Recoger datos del usuario para buscar características de mascotas
Revise la instrucción del modificador de menú después del comentario n.º 5 en el código de Project.cs. Descubre el código que muestra el mensaje "UNDER CONSTRUCTION".
Elimine el código
Console.WriteLine("\nUNDER CONSTRUCTION - please check back next month to see progress.");entrecase "2":y laConsole.WriteLine("Press the Enter key to continue.");instrucción para que el código coincida con el ejemplo siguiente:case "2": // Display all dogs with a specified characteristic Console.WriteLine("Press the Enter key to continue."); readResult = Console.ReadLine(); break;Agregue código para recopilar la entrada del usuario para la
dogCharacteristiccadena. La recopilación de la entrada requiere unwhilebucle que sigue solicitando al usuario hasta que envíe una entrada. El bucle indica al usuario queEnter one desired dog characteristic to search for. Al escribir una cadena vacía, se repite el bucle. Coloque el códigocase "2:siguiente justo antes de labreak;instrucción como se muestra: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;Revise el código agregado. Entre las características principales del
case "2":código se incluyen las siguientes:- El código comienza con una declaración de cadena
string dogCharacteristic = "";que está limitada al ámbitocase "2":. No se puede usardogCharacteristicen ningún lugar fuera del código de instrucción case. - Después de que
Console.ReadLine()recopila la entrada de usuario comodogCharacteristic, garantiza que el valor no es null y establece la cadena en minúsculas y recorta los espacios circundantes. - Si
dogCharacteristictiene un valor NULL, el bucle repite la entrada de recopilación.
- El código comienza con una declaración de cadena
Guarde el código y, a continuación, compile con
dotnet builden terminal (puede hacer referencia a los pasos del ejercicio anterior) y corregir los errores.Ejecute el código mediante
dotnet run.Para probar la funcionalidad de entrada del término de búsqueda de la aplicación, escriba
2, seleccione Opción de menú2para buscar.Presione "Entrar" sin escribir datos en el mensaje "Escriba una característica de perro deseada para buscar". El programa debe volver al símbolo del
Enter one desired dog characteristics to search forsistema.El programa debe volver al símbolo del sistema hasta que se escriban caracteres.
En el símbolo del sistema, pruebe la entrada del término de búsqueda con
goldencomo entrada. El programa debe volver al menú sin error.En el menú, escriba "Salir" para salir del programa.
Identificar qué animales son perros
Ahora agregas una funcionalidad para buscar mediante la entrada dogCharacteristic del usuario en las descripciones de los perros siguiendo el código anterior bajo case "2". Pero primero debes identificar a los perros.
Al final del
case "2"código, justo antes del códigoConsole.WriteLine("\n\rPress the Enter key to continue");, que está antes delbreak;, agregue el siguiente código.// #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 } }Dedique un minuto a examinar el bucle agregado al final del
case "2":código.El código filtra por "perros" utilizando
ourAnimals[i,1], donde los datos se almacenan enanimalSpecies. SianimalSpeciesalmacena "dog" como valor, el código se mueve entre corchetes de la instrucción if donde se puede producir la búsqueda de las descripciones combinadas.Compile el código mediante
dotnet buildy corrija los errores.
Buscar la información de descripción combinada de perros
El código anterior garantiza que solo busque descripciones de perros. Ahora necesitas buscar las descripciones de los perros y obtener información sobre las coincidencias.
Mientras piensa en las descripciones, se da cuenta de que hay dos descripciones animalPhysicalDescription y animalPersonalityDescription;. El equipo analiza la funcionalidad y decide que una descripción combinada es adecuada para la búsqueda.
Nota:
Algunos desarrolladores hacen referencia a la adición de requisitos durante el desarrollo como "creación de ámbito." Aunque combinar las descripciones no es mucho trabajo, todavía agrega tiempo y complejidad. Por este motivo, debe informar al equipo de que los requisitos agregados a menudo retrasan la finalización del proyecto.
Combinar las descripciones del perro para facilitar la búsqueda
Debe declarar una cadena dogDescription para contener los datos combinados que se originaron en animalPhysicalDescription y animalPersonalityDescription;.
Declare
dogDescriptionjusto antes del comentario n.º 6 con el código siguiente:string dogDescription = "";Ahora use la cadena declarada
dogDescriptionanteriormente y lléntela con las descripciones físicas y de personalidad de cada animalRellene la
dogDescriptionvariable con los valores deanimalPhysicalDescriptionyanimalPersonalityDescription;.Agregue el código siguiente después del comentario n.º 7:
dogDescription = ourAnimals[i, 4] + "\n" + ourAnimals[i, 5];
Buscar y mostrar las descripciones combinadas de perros
Ahora añade la búsqueda de dogCharacteristic en los datos combinados de dogDescription. Debe agregar una instrucción if para determinar si tiene una coincidencia para la búsqueda de cada perro.
Actualice el código siguiendo el comentario n.º 7, después de
dogDescription = ourAnimals[i, 4] + "\n" + ourAnimals[i, 5];con el código:if (dogDescription.Contains(dogCharacteristic)) { Console.WriteLine($"\nOur dog {ourAnimals[i, 3]} is a match!"); Console.WriteLine(dogDescription); }Examine el ejemplo de código anterior, cuando la instrucción
ifencuentra una coincidencia paradogCharacteristicendogDescription, un mensaje sobre la coincidencia del perro y la descripción se genera en la consola. Todavía tiene que tener en cuenta el mensaje "no se encontraron coincidencias".Agregue el código
noMatchesDog = true:Agregue el código siguiente justo antes del comentario n.º 6:
bool noMatchesDog = true;Ahora puede realizar un seguimiento cuando no se encuentren coincidencias con esta variable de seguimiento. Cuando el valor predeterminado se establece
trueen, significa "es cierto que no hay perros coincidentes para la búsqueda." Ahora, cuando se encuentra un perro, puede "voltear"noMatchesDogdetrueafalseEn los corchetes de la
if (dogDescription.Contains(dogCharacteristic))instrucción, agregue el código siguiente:noMatchesDog = false;Revise que el código entre corchetes de
if (dogDescription.Contains(dogCharacteristic))se especificó correctamente.Debe tener el siguiente código:
if (dogDescription.Contains(dogCharacteristic)) { Console.WriteLine($"\nOur dog {ourAnimals[i, 3]} is a match!"); Console.WriteLine(dogDescription); noMatchesDog = false; }Por último, debe crear código que decida si el mensaje "no se encontraron coincidencias" debe escribirse en la consola.
Al final del
case "2"código, justo antes del códigoConsole.WriteLine("\n\rPress the Enter key to continue");, que está antes delbreak;, agregue el siguiente código.if (noMatchesDog) { Console.WriteLine("None of our dogs are a match found for: " + dogCharacteristic); }Este ejemplo de código es el código final de este ejercicio.
Guarde los cambios.
Revisa tu trabajo
En la terminal de comandos, para compilar el código del proyecto, escriba el siguiente comando:
dotnet build.Si hay errores, debe leer los mensajes de error, solucionar los problemas y hacer correcciones, o revisar el código de solución en la carpeta "Final".
Ejecute el código del proyecto en el terminal con
dotnet run.
Una vez que se ejecuta el código, se muestran dos elementos de menú.
En el menú, escriba "
2" y "Entrar" para probar la búsqueda de perros repetidamente.- 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 todo funcionó según lo esperado en ambos pasos, ¡felicitaciones! De lo contrario, busque los errores comprobando los pasos del ejercicio. Si es necesario, comience de nuevo o compruebe el código de la carpeta Final para el código de la solución de este ejercicio.
Escriba
exit, en el menú de la aplicación, para finalizar el programa y cerrar el panel del terminal.