Øvelse – Tilføj foreslåede donationsdata

Fuldført

I dette trin i udviklingsprocessen skal du opdatere den kode, der er angivet i startprojektmappen, og føje funktioner til "foreslået donation" til programmet. Startfilen project.cs skal være åben i Visual Studio Code. Gå tilbage til det forrige forberedelsesmodul, hvis du har brug for instruktioner til at komme i gang.

Opret funktionerne "Foreslået donation"

De tilføjede donationsfunktioner kræver, at du opretter suggestedDonation en variabel og udvider matrixen ourAnimals , så den passer til de nye donationsdata. Du skal også tilføje de foreslåede donationsbeløb for hvert dyr og implementere et standardbeløb, når der mangler foreslåede donationsoplysninger.

Tilføj understøttelse af foreslåede donationsdata

Du skal oprette en ny variabel for at holde foreslåede donationer i venteposition og udvide matrixen ourAnimals , så den indeholder de nye data.

  1. Bemærk koden under kommentar nr. 1, der deklarerer variabler, der bruges til at udfylde matrixen ourAnimals for hvert dyr.

    Du skal deklarere en anden string for de foreslåede donationsdata.

    // #1 the ourAnimals array will store the following: 
    string animalSpecies = "";
    string animalID = "";
    string animalAge = "";
    string animalPhysicalDescription = "";
    string animalPersonalityDescription = "";
    string animalNickname = "";
    
  2. Opret variablen suggestedDonation under erklæringen for animalNickname.

    Erklæringen for suggestedDonation tilføjes med følgende kode:

    string suggestedDonation = "";
    
  3. Find den kode, der skal bruges til at oprette matrixen ourAnimals efter kommentar nr. 3.

    Følgende kodelinje opretter matrixen:

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

    De størrelser, der definerer matrixens to dimensioner, er det maksimale antal kæledyr maxPets og tallet 6 for de seks strenge, der oprindeligt blev defineret, men uden plads til de nye suggestedDonation data.

  4. Opdater ourAnimals matrixen, så den indeholder 7 "kolonner" med data for hvert dyr i stedet for 6.

    Følgende linje viser den opdaterede kode:

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

    Du har udvidet matrixen ourAnimals for at understøtte de tilføjede suggestedDonation data.

Føj suggestedDonation beløb til eksempeldataene

  1. Brug et minut på at gennemse case 0: i switch-sætningen efter kommentar #4.

    Følgende kode, der definerer eksempeldata for det første kæledyr, før suggestedDonation dataene oprettes. Det ville passe pænt under 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. Indsæt en suggestedDonation værdi over sætningen break for case 0; through default: med følgende værdier:

    • Sag 0: suggestedDonation = "85.00";
    • Sag 1: suggestedDonation = "49.99";
    • Sag 2: suggestedDonation = "40.00";
    • Sag 3: suggestedDonation = "";
    • standard: suggestedDonation = "";

    Følgende kode viser case 0: kode med tilføjelsen af '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. I din project.cs-fil skal du finde følgende matrix, der er udfyldt med kæledyrsdata fra case-sætninger (det er lige før kommentar nr. 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. Bemærk, at suggestedDonation data ikke er inkluderet som en del af eksempeldatastartkoden til udfyldelse af matrixen.

    Det giver mening at udfylde matrixen med en sætning som f.eks.:

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

    Men du tilføjer ikke den kode. I næste afsnit skal du bruge en anden fremgangsmåde.

Datavalidering med TryParse()

Variablen suggestedDonation er beregnet til at være en numerisk værdi, men indsamles og gemmes som en string. Overvej fremtidige tilfælde, hvor du skal validere, der suggestedDonation repræsenterer et decimaltal, og at du kan konvertere det til et decimaltal, så det er tilgængeligt til faktureringsberegninger. Hvis du vil undgå fejl, når brugerne angiver tal i tekstformat, f.eks twenty. , skal du bruge TryParse validering.

Seddel

Kodeeksempler i denne øvelse er designet på baggrund af en-US kulturindstillinger og bruger et punktum (.) som decimalseparator. Oprettelse og kørsel af koden med en kulturindstilling, der bruger en anden decimalseparator (f.eks. komma ,), giver ofte uventede resultater eller fejl. Du kan løse problemet ved at erstatte punktumkommaseparatorerne i kodeeksempler med den lokale decimalseparator (f.eks. ,). Du kan også køre et program ved hjælp af indstillingen en-US kultur ved at tilføje: using System.Globalization;øverst i dit program. Og efter alle andre using sætninger skal du tilføje CultureInfo.CurrentCulture = new CultureInfo("en-US");.

  1. Før kommentar nr. 5 skal du i slutningen af kodeblokken tilføje koden for at validere, der suggestedDonation kan angives som et decimaltal.

    Du tilføjer følgende kode:

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

    Hvis variablen suggestedDonation ikke kan angives som en decimal, tildeler koden en standardværdi decimalDonation = 45.00m;. Hvis castet lykkes, TryParse udfyldes decimalDonation. Repræsenterer i begge tilfælde decimalDonation en korrekt decimal.

  2. Sørg for, at valideringskoden er på det rigtige sted!

    De to linjer, du har tilføjet, skal vises i koden som de to øverste linjer i følgende kode:

        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
    

    Bemærk! Valideringen fungerer stadig ikke. Du kan ikke glemme, at det er nødvendigt at deklarere decimalDonation for at bruge det i koden.

  3. Efter kommentaren #2 skal du deklarere decimalDonationefter string menuSelection = "";:

    decimal decimalDonation = 0.00m;
    

    Endelig er du klar til at udfylde suggestedDonation data for hvert kæledyr.

  4. Lige før kommentar nr. 5, umiddelbart efter den TryParse slutparentes } , du har fuldført, skal du tilføje følgende kode:

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

    Du brugte versionen decimalDonation af de foreslåede donationsdata. Du har også brugt strenginterpolering og valutaformatering i outputtet.

  5. Brug et øjeblik på at gennemgå, hvordan de foreslåede donationsdata endelig kommer ind i matrixen ourAnimals .

    Følgende kode udfylder matrixen ourAnimals i konteksten TryParse()af :

    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
    

    Bemærk, at ved hjælp af koden {decimalDonation:C2} vises den foreslåede donation fra decimalDonationmed symbolet for den lokale valuta og to decimaler i henhold til valutaformateringen :C2.

Gennemse og opdater, hvor ourAnimals matrixen skal bruges

Tilføjelsen af de suggestedDonation oprettede data kræver yderligere opdateringer. Menuindstillingen "1. List all of our current pet information" mangler de tilføjede data.

  1. Bemærk koden under kommentar nr. 5 for menuløkken i case 1.

    Den indre løkke "for (int j = 0; j < 6; j++)", der udskriver kæledyrsattributterne, skal tage højde for suggestedDonation de tilføjede data.

  2. Opdater afslutningsbetingelsen for den indre løkkekode. Øget afslutningsbetingelsen med "1", så den bliver j <7. Kontrollér, at din kode stemmer overens med den følgende kode:

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

Oversigt over test

Med flere kodetilføjelser på plads skal du bekræfte, at din kode fungerer som forventet. De to væsentlige testområder er:

  1. Koden overholder uden fejl.

  2. Hvis du vælger menupunkt 1, vises alle oplysninger om kæledyr:

    • Outputtet indeholder alle oplysninger om kæledyrseksemplet, herunder: ID, art, alder, kaldenavn, fysisk beskrivelse og personlighedsbeskrivelse.
    • For hvert kæledyr vises den foreslåede donation med et valutasymbol og med to decimalpladser med præcision.

Kontrollér dit arbejde

Byg og kør for at teste koden. Brug disse trin, hver gang du har brug for at teste din kode.

  1. Vælg Gemi menuen Visual Studio Code File .

  2. Højreklik på Starter i STIFINDER-visningen, og vælg derefter Åbn i integreret terminal.

    Der skal åbnes et TERMINAL-panel under kodeeditorområdet.

    Der er flere måder at åbne Visual Studio Codes integrerede terminal på. Den øverste menu giver f.eks. adgang til terminalpanelet fra både menuen Vis og menuen Terminal . Tastaturgenveje, der åbner TERMINAL-panelet, er også en værdifuld mulighed for at øge din kodningseffektivitet. Hver metode er acceptabel.

  3. Bemærk, at TERMINAL-panelet indeholder en kommandolinjeprompt, og at prompten viser den aktuelle mappesti. Det kan f.eks. være:

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

    Du kan bruge terminalpanelet til at køre kommandolinjegrænsefladekommandoer, f.eks dotnet build . og dotnet run. Kommandoen dotnet build kompilerer din kode og viser fejlmeddelelser og advarsler, der er relateret til kodesyntaksen.

    Vigtigt!

    Du skal sikre dig, at terminalkommandoprompten er åben i roden af dit projektarbejdsområde. I dette tilfælde er roden af projektarbejdsområdet mappen Starter, hvor Filerne Starter.csproj og Program.cs er placeret. Når du kører kommandoer i terminalen, forsøger kommandoerne at udføre handlinger ved hjælp af den aktuelle mappeplacering. Hvis du forsøger at køre kommandoerne dotnet build eller dotnet run fra en mappeplacering, der ikke indeholder filerne, genererer kommandoerne fejlmeddelelser.

  4. Angiv følgende kommando ved kommandoprompten TERMINAL for at oprette projektkoden: dotnet build

    Efter et par sekunder får du vist en meddelelse om, at dit build lykkedes, og at du har 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)
    

    Seddel

    Brug de tidligere dotnet build trin og dotnet run trin, hver gang du har brug for at teste din kode i de øvelser, der følger i dette modul.

  5. Hvis du får vist fejlmeddelelser eller advarsler, skal du rette dem, før du fortsætter.

    Fejlmeddelelser og advarsler indeholder en liste over den kodelinje, hvor problemet blev fundet. Følgende meddelelse er et eksempel på en Build FAILED fejlmeddelelse:

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

    Denne meddelelse fortæller dig, hvilken type fejl der blev registreret, og hvor du kan finde den. I dette tilfælde fortæller meddelelsen dig, at den Program.cs fil indeholder en fejl - error CS1002: ; expected. ; expected foreslår, at du har glemt at inkludere en ; i slutningen af en sætning. Den Program.cs(53,18) del af meddelelsen, der fortæller dig fejlplaceringen på kodelinjen 53 på en position på 18 tegn fra venstre.

    En syntaksfejl som denne forhindrer buildet i at lykkes (Build FAILED). Nogle Build-meddelelser indeholder en "advarsel" i stedet for en "Fejl", hvilket betyder, at der er noget at bekymre sig om, men du kan prøve at køre programmet alligevel (Build lykkedes).

    Når du har løst problemerne og gemt dine opdateringer, kan du køre dotnet build kommandoen igen. Fortsæt, indtil du har 0 Warning(s) and 0 Error(s).

    Hvis du oplever problemer med at løse et problem på egen hånd, skal du undersøge Program.cs-koden i den endelige mappe, der er inkluderet i overførslen, som blev fuldført under installationen. Den Program.cs kode i mappen Slut repræsenterer afslutningen af alle øvelser i dette modul, så den indeholder kode, som du ikke har oprettet endnu.

    Løsningskoden ser ofte anderledes ud end den Program.cs kode, du udviklede til dette punkt i automatiseret projekt. Du kan dog undersøge Program.cs-koden i Final for at hjælpe dig med at isolere og løse et problem i din kode.

    Undgå at være afhængig af løsningskoden, mens du udvikler din egen løsning. Husk, at du lærer af fejl, og at alle udviklere bruger tid på at finde og rette fejl.

  6. Test den opdaterede konsolapp ved ATP-kommandoprompten build & kør projektkoden med én kommando ved at angive: dotnet run. Når koden kører to menupunkter vises.

    • Angiv "1" for at teste outputtet "Vis alle kæledyr"
    • Skriv "2" for at teste pladsholdermeddelelsen "under oprettelse"

    Outputtet for menupunktet #1 skal stemme tæt overens med følgende eksempel:

    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
    

    Hvis alt fungerede som forventet, tillykke! Ellers skal du kigge efter fejlen ved at kontrollere trinnene i kodeinstruktionen. Hvis det er nødvendigt, skal du starte forfra med en ny start Project.cs fil, og hvis du stadig har problemer, skal du kontrollere koden for løsningsmappen for denne øvelse.

  7. Skriv exiti appmenuen for at afslutte programmet, og luk derefter terminalpanelet.