Øvelse – Tilføj foreslåede donationsdata
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.
Bemærk koden under kommentar nr. 1, der deklarerer variabler, der bruges til at udfylde matrixen
ourAnimalsfor hvert dyr.Du skal deklarere en anden
stringfor de foreslåede donationsdata.// #1 the ourAnimals array will store the following: string animalSpecies = ""; string animalID = ""; string animalAge = ""; string animalPhysicalDescription = ""; string animalPersonalityDescription = ""; string animalNickname = "";Opret variablen
suggestedDonationunder erklæringen foranimalNickname.Erklæringen for
suggestedDonationtilføjes med følgende kode:string suggestedDonation = "";Find den kode, der skal bruges til at oprette matrixen
ourAnimalsefter 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
maxPetsog tallet6for de seks strenge, der oprindeligt blev defineret, men uden plads til de nyesuggestedDonationdata.Opdater
ourAnimalsmatrixen, så den indeholder7"kolonner" med data for hvert dyr i stedet for6.Følgende linje viser den opdaterede kode:
string[,] ourAnimals = new string[maxPets,7];Du har udvidet matrixen
ourAnimalsfor at understøtte de tilføjedesuggestedDonationdata.
Føj suggestedDonation beløb til eksempeldataene
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
suggestedDonationdataene oprettes. Det ville passe pænt underanimalNickname!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;Indsæt en
suggestedDonationværdi over sætningenbreakforcase 0;throughdefault: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;- Sag 0:
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;Bemærk, at
suggestedDonationdata 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");.
Før kommentar nr. 5 skal du i slutningen af kodeblokken tilføje koden for at validere, der
suggestedDonationkan 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
suggestedDonationikke kan angives som endecimal, tildeler koden en standardværdidecimalDonation = 45.00m;. Hvis castet lykkes,TryParseudfyldesdecimalDonation. Repræsenterer i begge tilfældedecimalDonationen korrekt decimal.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 optionsBemærk! Valideringen fungerer stadig ikke. Du kan ikke glemme, at det er nødvendigt at deklarere
decimalDonationfor at bruge det i koden.Efter kommentaren #2 skal du deklarere
decimalDonationefterstring menuSelection = "";:decimal decimalDonation = 0.00m;Endelig er du klar til at udfylde
suggestedDonationdata for hvert kæledyr.Lige før kommentar nr. 5, umiddelbart efter den
TryParseslutparentes}, du har fuldført, skal du tilføje følgende kode:ourAnimals[i, 6] = $"Suggested Donation: {decimalDonation:C2}";Du brugte versionen
decimalDonationaf de foreslåede donationsdata. Du har også brugt strenginterpolering og valutaformatering i outputtet.Brug et øjeblik på at gennemgå, hvordan de foreslåede donationsdata endelig kommer ind i matrixen
ourAnimals.Følgende kode udfylder matrixen
ourAnimalsi kontekstenTryParse()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 optionsBemærk, at ved hjælp af koden
{decimalDonation:C2}vises den foreslåede donation fradecimalDonationmed 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.
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 forsuggestedDonationde tilføjede data.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:
Koden overholder uden fejl.
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.
Vælg Gemi menuen Visual Studio Code File .
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.
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. ogdotnet run. Kommandoendotnet buildkompilerer 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 buildellerdotnet runfra en mappeplacering, der ikke indeholder filerne, genererer kommandoerne fejlmeddelelser.Angiv følgende kommando ved kommandoprompten TERMINAL for at oprette projektkoden:
dotnet buildEfter 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 buildtrin ogdotnet runtrin, hver gang du har brug for at teste din kode i de øvelser, der følger i dette modul.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 FAILEDfejlmeddelelse: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.; expectedforeslår, at du har glemt at inkludere en;i slutningen af en sætning. DenProgram.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 buildkommandoen igen. Fortsæt, indtil du har0 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.
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.00Hvis 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.
- Angiv "
Skriv
exiti appmenuen for at afslutte programmet, og luk derefter terminalpanelet.