Exercice : ajouter des données relatives aux dons suggérés

Effectué

Dans cette étape du processus de développement, vous mettez à jour le code fourni dans le dossier de projet de démarrage, en ajoutant des fonctionnalités pour le « don suggéré » à l’application. Le fichier project.cs de démarrage doit être ouvert dans Visual Studio Code. Revenez à l’unité de préparation précédente si vous avez besoin d’instructions pour commencer.

Créer les fonctionnalités « Don suggéré »

Les fonctionnalités de don ajoutées vous obligent à créer une variable suggestedDonation et à développer le tableau ourAnimals pour prendre en charge les nouvelles données de don. En outre, vous devez ajouter les montants de don suggéré pour chaque animal et implémenter un montant par défaut quand il manque des informations sur les dons suggérés.

Ajouter la prise en charge des données de don suggéré

Vous devez créer une variable destinée à contenir les dons suggérés et développer le tableau ourAnimals pour y stocker les nouvelles données.

  1. Notez le code sous le commentaire n° 1 qui déclare les variables utilisées pour remplir le tableau ourAnimals pour chaque animal.

    Vous devez en déclarer une autre variable string pour les données de don suggérés.

    // #1 the ourAnimals array will store the following: 
    string animalSpecies = "";
    string animalID = "";
    string animalAge = "";
    string animalPhysicalDescription = "";
    string animalPersonalityDescription = "";
    string animalNickname = "";
    
  2. Créez la variable suggestedDonation sous la déclaration pour animalNickname.

    La déclaration pour les suggestedDonation est ajoutée avec le code suivant :

    string suggestedDonation = "";
    
  3. Recherchez le code pour créer le tableau ourAnimals après le commentaire n° 3.

    La ligne de code suivante crée le tableau :

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

    Les tailles définissant les deux dimensions du tableau sont le nombre maximal d’animaux domestiques maxPets et le nombre 6 des six chaînes définies à l’origine, mais sans espace pour les nouvelles données suggestedDonation.

  4. Mettez à jour le tableau ourAnimals pour qu’il contiennent 7 « colonnes » de données pour chaque animal au lieu de 6.

    La ligne suivante montre le code mis à jour :

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

    Vous avez étendu le ourAnimals tableau pour prendre en charge les suggestedDonation données ajoutées.

Ajouter les montants suggestedDonation à l’échantillon de données

  1. Prenez une minute pour passer en revue la section case 0: dans l’instruction switch après le commentaire n° 4.

    Le code suivant définit l’échantillon de données pour le premier animal avant la création des données suggestedDonation. Ces dernières iraient très bien en dessous de la ligne 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. Insérez une valeur suggestedDonation au-dessus de l’instruction break pour case 0; jusqu’à default: avec les valeurs suivantes :

    • Cas 0 : suggestedDonation = "85.00";
    • Cas 1 : suggestedDonation = "49.99";
    • Cas 2 : suggestedDonation = "40.00";
    • Cas 3 : suggestedDonation = "";
    • par défaut : suggestedDonation = "";

    Le code suivant montre le code case 0: avec l’ajout 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. Dans votre fichier project.cs, recherchez le tableau suivant rempli avec les données d’animaux de compagnie provenant des instructions case (juste avant le commentaire 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. Notez que les données suggestedDonation ne sont pas incluses dans le cadre du code de démarrage de l’échantillon de données pour le remplissage du tableau.

    Il est logique de remplir le tableau avec une instruction telle que :

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

    Mais vous n’ajoutez pas ce code. Dans la section suivante, vous allez utiliser une autre approche.

Validation des données avec TryParse()

La variable suggestedDonation est destinée à être une valeur numérique, mais elle est collectée et stockée en tant que string. Considérez les cas futurs où vous devez valider que suggestedDonation représente une décimale et que vous pouvez le convertir en une décimale de manière à ce qu’il soit disponible pour les calculs de facturation. Pour éviter les erreurs lorsque les utilisateurs entrent des nombres au format texte, vous devez utiliser la validation twenty, par exemple TryParse.

Remarque

Les exemples de code de cet exercice sont conçus en fonction des paramètres culturels américains et l’utilisation du point (.) sert de séparateur décimal. La création et l’exécution du code avec un paramètre de culture qui utilise un séparateur décimal différent (par exemple, une virgule ,) donne fréquemment des résultats ou des erreurs inattendus. Pour résoudre ce problème, remplacez les points séparateurs de décimale dans les exemples de code par votre séparateur décimal local (, par exemple). Vous pouvez également exécuter un programme à l’aide du paramètre de culture en-US, ajouter : using System.Globalization;en haut de votre programme. Et après toute autre using instruction, ajoutez CultureInfo.CurrentCulture = new CultureInfo("en-US");.

  1. Avant de commenter n° 5, à la fin du bloc de code, ajoutez le code permettant de valider que suggestedDonation peut être casté en décimale.

    Vous ajoutez le code suivant :

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

    Si la suggestedDonation variable ne peut pas être castée en tant que decimal, le code affecte une valeur decimalDonation = 45.00m;par défaut. Si le cast réussit, TryParse remplit decimalDonation. Dans les deux cas, decimalDonation représente une décimale appropriée.

  2. Assurez-vous que votre code de validation est au bon endroit !

    Les deux lignes que vous avez ajoutées doivent apparaître dans le code comme les deux premières lignes du code suivant :

        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
    

    Notez que la validation ne fonctionne toujours pas. Gardez à l’esprit qu’il faut déclarer decimalDonation pour l’utiliser dans le code.

  3. Après le commentaire n° 2, déclarez decimalDonation, après string menuSelection = ""; :

    decimal decimalDonation = 0.00m;
    

    Enfin, vous êtes prêt à remplir les données suggestedDonation pour chaque animal.

  4. Précisément avant le commentaire n° 5, immédiatement après la fin du crochet fermant TryParse}, insérez le code suivant :

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

    Vous avez utilisé la version decimalDonation des données de don suggéré. Vous avez également utilisé l’interpolation de chaîne et la mise en forme monétaire dans la sortie.

  5. Prenez une minute pour passer en revue la façon dont les données de don suggérée sont finalement intégrées au tableau ourAnimals.

    Le code suivant remplit le tableau ourAnimals dans le contexte de 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
    

    Notez que, à l’aide du code {decimalDonation:C2}, le don suggéré, à partir de decimalDonation, s’affiche avec le symbole monétaire local et deux décimales, comme indiqué par la mise en forme monétaire :C2.

Passer en revue et mettre à jour l’emplacement où le tableau ourAnimals doit être utilisé

L’ajout des données suggestedDonation créées nécessite d’autres mises à jour. L’option de menu "1. List all of our current pet information" ne contient pas les données ajoutées.

  1. Notez le code sous le commentaire n° 5, pour la boucle de menu dans case 1.

    La boucle interne « for (int j = 0; j < 6; j++) » qui affiche les attributs des animaux doit prendre en compte les données suggestedDonation ajoutées.

  2. Mettez à jour la condition de sortie du code de boucle interne. Augmentation de la condition de sortie par « 1 », de sorte qu’elle devient j <7. Vérifiez que votre code correspond au code suivant :

    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]);
            }
        }
    }
    

Vue d’ensemble du test

Après avoir procédé à plusieurs ajouts de code, vous devez vérifier que votre code fonctionne comme prévu. Les deux principaux domaines de test sont les suivants :

  1. Le code se compile sans erreurs.

  2. Quand l’option de menu 1 est sélectionnée, toutes les informations sur les animaux de compagnie s’affichent :

    • La sortie inclut toutes les informations sur les échantillons d’animaux de compagnie, notamment : ID, espèce, âge, nom, description physique et description de la personnalité.
    • Pour chaque animal de compagnie, le don suggéré s’affiche avec un symbole monétaire et deux décimales de précision.

Vérifier votre travail

Générez le code et exécutez-le afin de le tester. Utilisez ces étapes chaque fois que vous devez tester votre code.

  1. Dans le menu Fichier de Visual Studio Code, sélectionnez Enregistrer.

  2. Dans la vue EXPLORATEUR, cliquez avec le bouton droit sur Starter, puis sélectionnez Ouvrir dans le terminal intégré.

    Un panneau TERMINAL doit s’ouvrir sous la zone de l’éditeur de code.

    Il existe plusieurs façons d’ouvrir le terminal intégré de Visual Studio Code. Par exemple, le menu du haut permet d’accéder au panneau TERMINAL à la fois depuis le menu Affichage et depuis le menu Terminal. En outre, les raccourcis clavier qui ouvrent le panneau TERMINAL constituent une option précieuse pour augmenter votre efficacité de codage. Chaque méthode est acceptable.

  3. Notez que le panneau TERMINAL inclut une invite de ligne de commande et que cette invite montre le chemin du dossier actif. Par exemple :

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

    Vous pouvez utiliser le panneau TERMINAL pour exécuter des commandes d’interface de ligne de commande (CLI), comme dotnet build et dotnet run. La commande dotnet build compile votre code et affiche les messages d’erreur et d’avertissement relatifs à la syntaxe de votre code.

    Important

    Vous devez vérifier que l’invite de commandes du terminal est ouverte à la racine de l’espace de travail de votre projet. Dans le cas présent, la racine de l’espace de travail du projet est le dossier Starter, où se trouvent les fichiers Starter.csproj et Program.cs. Lorsque vous exécutez des commandes dans le terminal, les commandes essaient d’effectuer des actions à l’aide de l’emplacement du dossier actuel. Si vous essayez d’exécuter les dotnet build commandes à dotnet run partir d’un emplacement de dossier qui ne contient pas les fichiers, les commandes génèrent des messages d’erreur.

  4. À l’invite de commandes du TERMINAL, pour générer le code de votre projet, entrez la commande suivante : dotnet build

    Après quelques secondes, vous devriez voir un message vous indiquant que votre build a réussi, et que vous avez 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)
    

    Remarque

    Utilisez les étapes dotnet build et dotnet run chaque fois que vous devez tester votre code dans les exercices qui suivent ce module.

  5. Si vous voyez des messages d’erreur ou d’avertissement, vous devez les corriger avant de continuer.

    Les messages d’erreur et d’avertissement indiquent la ligne de code où le problème est trouvé. Le message suivant est un exemple de message d’erreur Build FAILED :

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

    Ce message vous indique le type d’erreur détecté et où le trouver. Dans le cas présent, le message vous indique que le fichier Program.cs contient une erreur : error CS1002: ; expected. Le ; expected suggère que vous avez oublié d’inclure un ; à la fin d’une instruction. La partie Program.cs(53,18) du message indique l’emplacement de l’erreur, en l’occurrence sur la ligne de code 53, à 18 caractères à partir de la gauche.

    Une erreur de syntaxe comme celle-ci empêche la réussite de la build (ÉCHEC de la build). Certains messages de génération fournissent un « avertissement » au lieu d’une « erreur », ce qui signifie qu’il y a quelque chose à craindre, mais vous pouvez essayer d’exécuter le programme de toute façon (Générer réussi).

    Une fois que vous avez résolu les problèmes et enregistré vos mises à jour, vous pouvez réexécuter la dotnet build commande. Continuez jusqu’à ce que vous ayez 0 Warning(s) and 0 Error(s).

    Si vous rencontrez des difficultés à résoudre un problème par vous-même, examinez le code Program.cs dans le dossier Final inclus dans le téléchargement terminé pendant l’installation. Le code Program.cs dans le dossier Final représente la conclusion de tous les exercices de ce module. Il inclut donc le code que vous n’avez pas encore créé.

    Le code de solution semble souvent différent du code Program.cs que vous avez développé à ce stade dans le projet guidé. Toutefois, vous pouvez examiner le code Program.cs final pour vous aider à isoler et résoudre un problème dans votre code.

    Évitez de vous appuyer sur le code de la solution lors du développement de votre propre solution. Rappelez-vous que vous apprenez de vos erreurs et que chaque développeur passe du temps à rechercher et à corriger des erreurs.

  6. Testez l’application console mise à jour. À l’invite de commandes du TERMINAL, générez et exécutez votre code de projet avec une seule commande en entrant : dotnet run. Quand le code s’exécute, deux éléments de menu s’affichent.

    • Entrez « 1 » pour tester la sortie de l’affichage de tous les animaux domestiques.
    • Entrez « 2 » pour tester le message d’espace réservé « En cours de construction »

    La sortie associée à l’élément de menu n° 1 doit être très proche de l’exemple suivant :

    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 tout a fonctionné comme prévu, félicitations ! Sinon, recherchez l’erreur en consultant les étapes d’instruction de code impliquées. Si nécessaire, recommencez avec un nouveau fichier Project.cs de démarrage et si vous rencontrez toujours des problèmes, consultez le code du dossier de solution pour cet exercice.

  7. Tapez exit, dans le menu de l’application, pour mettre fin au programme, puis fermez le panneau du terminal.