Ejercicio: incorporación de la búsqueda de perros

Completado

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:

  1. Recopilación de la entrada del usuario para el término de búsqueda de características de mascotas
  2. Recorrer la matriz de animales e identificar "perros"
  3. Buscar en la descripción de cada perro una coincidencia de términos
  4. 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.

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

  2. Elimine el código Console.WriteLine("\nUNDER CONSTRUCTION - please check back next month to see progress."); entre case "2": y la Console.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; 
    
  3. Agregue código para recopilar la entrada del usuario para la dogCharacteristic cadena. La recopilación de la entrada requiere un while bucle que sigue solicitando al usuario hasta que envíe una entrada. El bucle indica al usuario que Enter one desired dog characteristic to search for. Al escribir una cadena vacía, se repite el bucle. Coloque el código case "2: siguiente justo antes de la break; 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 ámbito case "2":. No se puede usar dogCharacteristic en ningún lugar fuera del código de instrucción case.
    • Después de que Console.ReadLine() recopila la entrada de usuario como dogCharacteristic, garantiza que el valor no es null y establece la cadena en minúsculas y recorta los espacios circundantes.
    • Si dogCharacteristic tiene un valor NULL, el bucle repite la entrada de recopilación.
  4. Guarde el código y, a continuación, compile con dotnet build en terminal (puede hacer referencia a los pasos del ejercicio anterior) y corregir los errores.

  5. Ejecute el código mediante dotnet run.

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

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

  8. El programa debe volver al símbolo del sistema hasta que se escriban caracteres.

  9. En el símbolo del sistema, pruebe la entrada del término de búsqueda con golden como entrada. El programa debe volver al menú sin error.

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

  1. Al final del case "2" código, justo antes del código Console.WriteLine("\n\rPress the Enter key to continue");, que está antes del break;, 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
        }
    }
    
  2. 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 en animalSpecies. Si animalSpecies almacena "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.

  3. Compile el código mediante dotnet build y 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.

Debe declarar una cadena dogDescription para contener los datos combinados que se originaron en animalPhysicalDescription y animalPersonalityDescription;.

  1. Declare dogDescription justo antes del comentario n.º 6 con el código siguiente:

    string dogDescription = "";
    

    Ahora use la cadena declarada dogDescription anteriormente y lléntela con las descripciones físicas y de personalidad de cada animal

  2. Rellene la dogDescription variable con los valores de animalPhysicalDescription y animalPersonalityDescription;.

    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.

  1. 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 if encuentra una coincidencia para dogCharacteristic en dogDescription, 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".

  2. 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 true en, significa "es cierto que no hay perros coincidentes para la búsqueda." Ahora, cuando se encuentra un perro, puede "voltear" noMatchesDog de true a false

  3. En los corchetes de la if (dogDescription.Contains(dogCharacteristic)) instrucción, agregue el código siguiente:

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

  5. Al final del case "2" código, justo antes del código Console.WriteLine("\n\rPress the Enter key to continue");, que está antes del break;, 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.

  6. Guarde los cambios.

Revisa tu trabajo

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

  2. 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ú.

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

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

  2. Escriba exit, en el menú de la aplicación, para finalizar el programa y cerrar el panel del terminal.