Ejercicio: Incorporación de datos de donación sugeridos

Completado

En este paso del proceso de desarrollo, actualizará el código proporcionado en la carpeta del proyecto de inicio y agregará características para la "donación sugerida" a la aplicación. El archivo project.cs de inicio debe estar abierto en Visual Studio Code. Vuelva a la unidad de preparación anterior si necesita instrucciones para empezar.

Creación de las características de "Donaciones sugeridas"

Las características de donación agregadas requieren que cree una variable suggestedDonation y que expanda la matriz ourAnimals para acomodar los nuevos datos de donación. Además, debe agregar las cantidades de donación sugeridas para cada animal e implementar una cantidad predeterminada cuando falte información de donación sugerida.

Adición de soporte técnico para datos de donación sugeridos

Debe crear una nueva variable para contener donaciones sugeridas y expandir la matriz ourAnimals para contener los nuevos datos.

  1. Observe el código bajo el comentario n.º 1 que declara las variables usadas para rellenar la matriz ourAnimals para cada animal.

    Debe declarar otro string para los datos de donación sugerida.

    // #1 the ourAnimals array will store the following: 
    string animalSpecies = "";
    string animalID = "";
    string animalAge = "";
    string animalPhysicalDescription = "";
    string animalPersonalityDescription = "";
    string animalNickname = "";
    
  2. Cree la variable suggestedDonation debajo de la declaración para animalNickname.

    La declaración de suggestedDonation se agrega con el código siguiente:

    string suggestedDonation = "";
    
  3. Busque el código para crear la matriz ourAnimals siguiendo el comentario n.º 3.

    La siguiente línea de código crea la matriz:

    string[,] ourAnimals = new string[maxPets, 6];

    Los tamaños que definen las dos dimensiones de la matriz son el número máximo de mascotas maxPets y el número 6 de las seis cadenas definidas originalmente, pero sin espacio para los nuevos datos suggestedDonation.

  4. Actualice la matriz ourAnimals para contener "columnas" 7 de datos para cada animal en lugar de 6.

    En la línea siguiente se muestra el código actualizado:

    string[,] ourAnimals = new string[maxPets, 7];

    Tú expandiste la ourAnimals matriz para soportar los datos agregados suggestedDonation.

Agregar cantidades suggestedDonation a los datos de ejemplo

  1. Tómese un minuto para revisar case 0: dentro de la instrucción switch después del comentario n.º 4.

    El código siguiente que define los datos de ejemplo para la primera mascota antes de crear los datos suggestedDonation. Se ajustaría muy bien debajo de animalNickname

        case 0:
            animalSpecies = "dog";
            animalID = "d1";
            animalAge = "2";
            animalPhysicalDescription = "medium sized cream colored female golden retriever weighing about 45 pounds. housebroken.";
            animalPersonalityDescription = "loves to have her belly rubbed and likes to chase her tail. gives lots of kisses.";
            animalNickname = "lola";
            break;
    
  2. Inserte un valor suggestedDonation encima de la instrucción break para case 0; a través de default: con los valores siguientes:

    • Caso 0: suggestedDonation = "85.00";
    • Caso 1: suggestedDonation = "49.99";
    • Caso 2: suggestedDonation = "40.00";
    • Caso 3: suggestedDonation = "";
    • valor predeterminado: suggestedDonation = "";

    En el código siguiente se muestra el código case 0: con la adición de "suggestedDonation":

        case 0:
            animalSpecies = "dog";
            animalID = "d1";
            animalAge = "2";
            animalPhysicalDescription = "medium sized cream colored female golden retriever weighing about 45 pounds. housebroken.";
            animalPersonalityDescription = "loves to have her belly rubbed and likes to chase her tail. gives lots of kisses.";
            animalNickname = "lola";
            suggestedDonation = "85.00";
            break;
    
  3. En el archivo project.cs, localice la siguiente matriz rellenada con los datos de mascotas de las instrucciones case (es justo antes del comentario n.º 5):

        ourAnimals[i, 0] = "ID #: " + animalID;
        ourAnimals[i, 1] = "Species: " + animalSpecies;
        ourAnimals[i, 2] = "Age: " + animalAge;
        ourAnimals[i, 3] = "Nickname: " + animalNickname;
        ourAnimals[i, 4] = "Physical description: " + animalPhysicalDescription;
        ourAnimals[i, 5] = "Personality: " + animalPersonalityDescription;
    
  4. Tenga en cuenta que los datos suggestedDonation no se incluyen como parte del código de inicio de datos de ejemplo para rellenar la matriz.

    Tiene sentido rellenar la matriz con una instrucción como:

    ourAnimals[i, 6] = "Suggested Donation: "  + suggestedDonation;
    

    Pero no agregará ese código. En la siguiente sección, usarás otro enfoque.

Validación de datos con TryParse()

La variable suggestedDonation está pensada para ser un valor numérico, pero se recopila y almacena como string. Considere los casos futuros en los que tenga que validar que suggestedDonation representa un decimal y que puede convertirlo en un decimal para que esté disponible para su uso para los cálculos de facturación. Para evitar errores cuando los usuarios escriben números en formato de texto, como twenty, debe usar TryParse la validación.

Nota

Los ejemplos de código de este ejercicio están diseñados en función de la configuración cultural en-US y usan un punto (.) como separador decimal. La compilación y ejecución del código con una configuración de referencia cultural que usa un separador decimal diferente (por ejemplo, una coma ,) suele dar resultados o errores inesperados. Para corregir este problema, reemplace los separadores decimales de punto en los ejemplos de código por el separador decimal local (por ejemplo, ,). Como alternativa, para ejecutar un programa mediante la configuración de referencia cultural en-US, agregue: using System.Globalization;a la parte superior del programa. Y después de cualquier otra using declaración, agregue CultureInfo.CurrentCulture = new CultureInfo("en-US");.

  1. Antes del comentario n.º 5, dentro del final del bloque de código, agregue el código para validar que suggestedDonation se puede convertir en decimal.

    Agregue el código siguiente:

    if (!decimal.TryParse(suggestedDonation, out decimalDonation)){
        decimalDonation = 45.00m; // if suggestedDonation NOT a number, default to 45.00
    }
    

    Si la suggestedDonation variable no se puede convertir como , decimalel código asigna un valor decimalDonation = 45.00m;predeterminado. Si la conversión se realiza correctamente, TryParse rellena decimalDonation. En cualquier caso, decimalDonation representa un decimal adecuado.

  2. Asegúrese de que el código de validación está en el lugar correcto.

    Las dos líneas que agregó deben aparecer en el código como las dos líneas superiores del código siguiente:

        if (!decimal.TryParse(suggestedDonation, out decimalDonation)){
            decimalDonation = 45.00m; // if suggestedDonation NOT a number, default to 45.00
        }
    }
    
    // #5 display the top-level menu options
    

    Tenga en cuenta que la validación sigue sin funcionar. No se olvide de la necesidad de declarar decimalDonation para usarlo en el código.

  3. Después del comentario n.º 2, declare decimalDonation, después de string menuSelection = "";:

    decimal decimalDonation = 0.00m;
    

    Por último, está a punto para rellenar los datos suggestedDonation de cada mascota.

  4. Antes del comentario n.º 5, inmediatamente después del TryParse corchete de cierre } que completó, agregue el código siguiente:

    ourAnimals[i, 6] = $"Suggested Donation: {decimalDonation:C2}";
    

    Ha usado la versión decimalDonation de los datos de donación sugerida. También ha usado la interpolación de cadenas y el formato de moneda en la salida.

  5. Dedique un minuto a revisar cómo los datos de donación sugerida finalmente llegan a la matriz ourAnimals.

    El siguiente código rellena la matriz ourAnimals en el contexto del archivo TryParse():

    if (!decimal.TryParse(suggestedDonation, out decimalDonation)){
        decimalDonation = 45.00m; // if suggestedDonation NOT a number, default to 45.00
        }
    ourAnimals[i, 6] = $"Suggested Donation: {decimalDonation:C2}";
    }
    
    // #5 display the top-level menu options
    

    Observe que, mediante el uso del código {decimalDonation:C2}, la donación sugerida, de decimalDonation, se muestra utilizando el símbolo de la moneda local y dos cifras decimales según se indica en el formato de moneda :C2.

Revisión y actualización de dónde se debe usar la matriz ourAnimals

La adición de los datos suggestedDonation creó la necesidad de actualizaciones adicionales. La opción del menú "1. List all of our current pet information" no dispone de los datos agregados.

  1. Observe el código en el comentario n.º 5 para el bucle del menú dentro de case 1.

    El bucle interno "for (int j = 0; j < 6; j++)" que imprime los atributos de mascota debe tener en cuenta los datos suggestedDonation agregados.

  2. Actualice la condición de salida del código de bucle interno. Se ha aumentado la condición de salida por "1", por lo que se convierte en j <7. Compruebe que el código coincide con el código siguiente:

    case "1":
    // list all pet info
    for (int i = 0; i < maxPets; i++)
    {
        if (ourAnimals[i, 0] != "ID #: ")
        {
            Console.WriteLine();
            for (int j = 0; j < 7; j++) // increased exit condition
            {
                Console.WriteLine(ourAnimals[i, j]);
            }
        }
    }
    

Introducción a las pruebas

Con varias adiciones de código implementadas, debe confirmar que el código funciona según lo previsto. Las dos áreas de prueba significativas son:

  1. El código cumple sin errores.

  2. Al seleccionar la opción de menú 1 se muestra toda la información de las mascotas:

    • La salida incluye toda la información de la mascota de ejemplo, incluyendo: id. , especie, edad, alias, descripción física y descripción de personalidad.
    • Para cada mascota, la donación sugerida se muestra con un símbolo de moneda y con dos posiciones decimales de precisión.

Compruebe su trabajo

Compile y ejecute para probar el código. Siga estos pasos cada vez que necesite probar el código.

  1. En el menú Archivo de Visual Studio Code, seleccione Guardar.

  2. En la vista EXPLORER, haga clic con el botón derecho en Starter y, a continuación, seleccione Abrir en terminal integrado.

    Debería abrirse un panel TERMINAL debajo del área Editor de código.

    Hay varias maneras de abrir el terminal integrado de Visual Studio Code. Por ejemplo, el menú superior proporciona acceso al panel TERMINAL desde el menú Ver y el menú Terminal . Además, los métodos abreviados de teclado que abren el panel TERMINAL son una opción valiosa para aumentar la eficacia de la codificación. Cada método es aceptable.

  3. Observe que el panel TERMINAL incluye un símbolo de la línea de comandos y que el símbolo del sistema muestra la ruta de acceso de la carpeta actual. Por ejemplo:

    C:\Users\someuser\Desktop\GuidedProject\Starter>
    

    Puede usar el panel TERMINAL para ejecutar comandos de interfaz de la línea de comandos (CLI), como dotnet build y dotnet run. El comando dotnet build compila el código y muestra los mensajes de error y advertencia relacionados con la sintaxis del código.

    Importante

    Asegúrese de que el símbolo del sistema del terminal está abierto para la raíz del área de trabajo del proyecto. En este caso, la raíz del área de trabajo del proyecto es la carpeta de inicio, donde se encuentran los archivos Starter.csproj y Program.cs. Al ejecutar comandos en el terminal, los comandos intentan realizar acciones mediante la ubicación de carpeta actual. Si intenta ejecutar los dotnet build comandos o dotnet run desde una ubicación de carpeta que no contiene los archivos, los comandos generan mensajes de error.

  4. En el símbolo del sistema de TERMINAL, para compilar el código del proyecto, escriba el siguiente comando: dotnet build

    Después de un par de segundos, debería ver un mensaje que le indica que la compilación se realizó correctamente y que tiene 0 Warnings and 0 Errors.

    Determining projects to restore...
    All projects are up-to-date for restore.
    Starter -> C:\Users\someuser\Desktop\GuidedProject\Starter\bin\Debug\net10.0\Starter.dll
    
    Build succeeded.
        0 Warning(s)
        0 Error(s)
    

    Nota

    Use los pasos anteriores dotnet build y dotnet run cada vez que necesite probar el código en los ejercicios siguientes en este módulo.

  5. Si ve mensajes de error o de advertencia, debe corregirlos antes de continuar.

    Los mensajes de error y advertencia muestran la línea de código donde se encuentra el problema. A continuación, se presenta un ejemplo de mensaje de error Build FAILED:

    C:\Users\someuser\Desktop\GuidedProject\Starter\Program.cs(53,18): error CS1002: ; expected [C:\Users\someuser\Desktop\GuidedProject\Starter\Starter.csproj]

    Este mensaje indica el tipo de error que se detectó y dónde encontrarlo. En este caso, el mensaje indica que el archivo Program.cs contiene un error: error CS1002: ; expected. ; expected Sugiere que olvidó incluir ; al final de una instrucción. La parte Program.cs(53,18) del mensaje indica que el error se encuentra en la línea de código 53, en una posición de 18 caracteres a la izquierda.

    Un error de sintaxis como este impide que la compilación se realice correctamente (ERROR de compilación). Algunos mensajes de compilación proporcionan una "Advertencia" en lugar de un "error", lo que significa que hay algo con el que preocuparse, pero puede intentar ejecutar el programa de todos modos (compilación correcta).

    Una vez corregidos los problemas y guardados las actualizaciones, puede volver a ejecutar el dotnet build comando. Continúe hasta que tenga 0 Warning(s) and 0 Error(s).

    Si tiene dificultades para resolver un problema por su cuenta, examine el código de Program.cs en la carpeta Final incluida en la descarga completada durante la instalación. El Program.cs código de la carpeta Final representa la conclusión de todos los ejercicios de este módulo, por lo que incluye código que aún no se ha creado.

    El código de la solución suele ser diferente del código de Program.cs que desarrolló hasta este punto en el proyecto guiado. Sin embargo, puede examinar el código de Program.cs en Final para ayudarle a aislar y corregir un problema en el código.

    Evite confiar en el código de la solución mientras desarrolla su propia solución. Recuerde que se aprende de los errores y que cada desarrollador dedica tiempo a buscar y corregir errores.

  6. Pruebe la aplicación de consola actualizada; en el símbolo del sistema de TERMINAL compile y ejecute el código del proyecto con un comando escribiendo: dotnet run. Cuando el código se ejecuta, se muestran dos elementos de menú.

    • Escriba "1" para probar la salida "mostrar todas las mascotas"
    • Escriba "2" para probar el mensaje del marcador de posición "En construcción".

    La salida del elemento de menú n.º 1 debe coincidir estrechamente con el ejemplo siguiente:

    ID #: d1
    Species: dog
    Age: 2
    Nickname: lola
    Physical description: medium sized cream colored female golden retriever weighing about 45 pounds. housebroken.
    Personality: loves to have her belly rubbed and likes to chase her tail. gives lots of kisses.
    Suggested Donation: $85.00
    
    ID #: d2
    Species: dog
    Age: 9
    Nickname: gus
    Physical description: large reddish-brown male golden retriever weighing about 85 pounds. housebroken.
    Personality: loves to have his ears rubbed when he greets you at the door, or at any time! loves to lean-in and give doggy hugs.
    Suggested Donation: $49.99
    
    ID #: c3
    Species: cat
    Age: 1
    Nickname: snow
    Physical description: small white female weighing about 8 pounds. litter box trained.
    Personality: friendly
    Suggested Donation: $40.00
    
    ID #: c4
    Species: cat
    Age:
    Nickname: lion
    Physical description:
    Personality:
    Suggested Donation: $45.00
    

    Si todo funcionó según lo previsto, enhorabuena. De lo contrario, busque el error comprobando los pasos de instrucción de código implicados. Si es necesario, vuelva a empezar con un nuevo archivo Project.cs de inicio y, si sigue teniendo problemas, compruebe el código de la carpeta de solución para este ejercicio.

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