Oefening: voorgestelde donatiegegevens toevoegen
In deze stap van het ontwikkelingsproces werkt u de code bij die is opgegeven in de map startersproject, waarbij u functies voor 'voorgestelde donatie' toevoegt aan de toepassing. Het starter-project.cs-bestand moet zijn geopend in Visual Studio Code. Ga terug naar de vorige voorbereidingseenheid als u instructies nodig hebt om aan de slag te gaan.
De functies Voorgestelde donatie maken
Voor de toegevoegde donatiefuncties moet u een variabele maken suggestedDonation en de ourAnimals matrix uitbreiden voor de nieuwe donatiegegevens. U moet ook de voorgestelde donatiebedragen voor elk dier toevoegen en een standaardbedrag implementeren wanneer er voorgestelde donatiegegevens ontbreken.
Ondersteuning toevoegen voor voorgestelde donatiegegevens
U moet een nieuwe variabele maken om voorgestelde donaties vast te houden en de ourAnimals matrix uit te breiden om de nieuwe gegevens te bewaren.
Let op de code onder opmerking 1 die variabelen declareert die worden gebruikt voor het vullen van de
ourAnimalsmatrix voor elk dier.U moet nog een declareren
stringvoor de voorgestelde donatiegegevens.// #1 the ourAnimals array will store the following: string animalSpecies = ""; string animalID = ""; string animalAge = ""; string animalPhysicalDescription = ""; string animalPersonalityDescription = ""; string animalNickname = "";Maak de
suggestedDonationvariabele onder de declaratie vooranimalNickname.De declaratie voor de
suggestedDonationdeclaratie wordt toegevoegd met de volgende code:string suggestedDonation = "";Zoek de code om de
ourAnimalsmatrix te maken met de volgende opmerking # 3.Met de volgende coderegel wordt de matrix gemaakt:
string[,] ourAnimals = new string[maxPets,6];De grootten die de twee dimensies van de matrix definiëren, zijn het maximum aantal huisdieren
maxPetsen het getal6voor de zes tekenreeksen die oorspronkelijk zijn gedefinieerd, maar zonder ruimte voor de nieuwesuggestedDonationgegevens.Werk
ourAnimalsde matrix bij voor het opslaan7van 'kolommen' met gegevens voor elk dier in plaats van6.De volgende regel toont de bijgewerkte code:
string[,] ourAnimals = new string[maxPets,7];U hebt de
ourAnimalsmatrix uitgebreid ter ondersteuning van de toegevoegdesuggestedDonationgegevens.
Bedragen toevoegen suggestedDonation aan de voorbeeldgegevens
Neem even de tijd om de switch-instructie na opmerking 4 te bekijken
case 0:.De volgende code waarmee voorbeeldgegevens voor het eerste huisdier worden gedefinieerd voordat de
suggestedDonationgegevens worden gemaakt. Het zou mooi onder deanimalNickname!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;Voeg een
suggestedDonationwaarde toe boven debreakinstructie voorcase 0;doordefault:met de volgende waarden:- Geval 0:
suggestedDonation = "85.00"; - Geval 1:
suggestedDonation = "49.99"; - Geval 2:
suggestedDonation = "40.00"; - Geval 3:
suggestedDonation = ""; - De standaardwaarde is
suggestedDonation = "";
De volgende code toont
case 0:code met de toevoeging van '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;- Geval 0:
Zoek in uw project.cs bestand de volgende matrix die is gevuld met de huisdiergegevens uit case-instructies (dit is net vóór opmerking # 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;U ziet dat
suggestedDonationgegevens niet zijn opgenomen als onderdeel van de starterscode voor voorbeeldgegevens voor het invullen van de matrix.Het is zinvol om de matrix te vullen met een instructie zoals:
ourAnimals[i, 6] = "Suggested Donation: " + suggestedDonation;Maar u voegt die code niet toe. In de volgende sectie gebruikt u een andere benadering.
Gegevensvalidatie met TryParse()
De variabele suggestedDonation is bedoeld als numerieke waarde, maar wordt verzameld en opgeslagen als een string. Houd rekening met toekomstige gevallen waarin u moet valideren dat suggestedDonation een decimaal vertegenwoordigt en dat u deze kunt converteren naar een decimaal, zodat deze beschikbaar is voor factureringsberekeningen. Als u fouten wilt voorkomen wanneer gebruikers getallen invoeren in tekstindeling, zoals twenty, moet u validatie gebruiken TryParse .
Notitie
De codevoorbeelden in deze oefening zijn ontworpen op basis van en-US-cultuurinstellingen en gebruiken een punt (.) als decimaalteken. Het bouwen en uitvoeren van de code met een cultuurinstelling die gebruikmaakt van een ander decimaalteken (zoals een komma ,) geeft vaak onverwachte resultaten of fouten. U kunt dit probleem oplossen door de puntdecimaaltekens in de codevoorbeelden te vervangen door het lokale decimaalteken (zoals ,).
Als u een programma wilt uitvoeren met behulp van de en-US cultuurinstelling, voegt u het volgende using System.Globalization;toe aan het begin van uw programma. En voeg na eventuele andere using instructies toe CultureInfo.CurrentCulture = new CultureInfo("en-US");.
Voeg vóór opmerking #5, binnen het einde van het codeblok, de code toe om te valideren dat
suggestedDonationkan worden omgezet als een decimaal.U voegt de volgende code toe:
if (!decimal.TryParse(suggestedDonation, out decimalDonation)){ decimalDonation = 45.00m; // if suggestedDonation NOT a number, default to 45.00 }Als de
suggestedDonationvariabele niet kan worden gecast als eendecimal, wijst de code een standaardwaardedecimalDonation = 45.00m;toe. Als de cast is geslaagd, wordt hetTryParsebestand ingevulddecimalDonation. In beide gevallendecimalDonationvertegenwoordigt u een juiste decimaal.Zorg ervoor dat uw validatiecode zich op de juiste plaats bevindt.
De twee regels die u hebt toegevoegd, moeten in de code worden weergegeven als de bovenste twee regels van de volgende code:
if (!decimal.TryParse(suggestedDonation, out decimalDonation)){ decimalDonation = 45.00m; // if suggestedDonation NOT a number, default to 45.00 } } // #5 display the top-level menu optionsOpmerking: validatie werkt nog steeds niet. U kunt het niet vergeten, de noodzaak om
decimalDonationhet te gebruiken in de code.Als u de opmerking #2 volgt, declareert
decimalDonationu, nastring menuSelection = "";:decimal decimalDonation = 0.00m;Ten slotte bent u klaar om gegevens voor elk huisdier te vullen
suggestedDonation.Voeg net vóór opmerking #5, direct na het
TryParseafsluitende haakje}dat u hebt voltooid, de volgende code toe:ourAnimals[i, 6] = $"Suggested Donation: {decimalDonation:C2}";U hebt de
decimalDonationversie van de voorgestelde donatiegegevens gebruikt. U hebt ook tekenreeksinterpolatie en valutaopmaak gebruikt in de uitvoer.Neem even de tijd om te bekijken hoe de voorgestelde donatiegegevens uiteindelijk in de
ourAnimalsmatrix worden geplaatst.Met de volgende code wordt de matrix in de
ourAnimalscontext van hetTryParse()volgende ingevuld: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 optionsU merkt dat door gebruik te maken van de code
{decimalDonation:C2}de voorgestelde donatie, vandecimalDonation, wordt weergegeven met het lokale valutasymbool en twee decimalen zoals bepaald door de valutanotatie:C2.
Controleren en bijwerken waar ourAnimals matrix moet worden gebruikt
De toevoeging van de suggestedDonation gegevens die zijn gemaakt, moet verder worden bijgewerkt. De menuoptie "1. List all of our current pet information" ontbreekt in de toegevoegde gegevens.
Let op de code onder opmerking #5, voor de menulus binnen
case 1.De binnenste lus '
for (int j = 0; j <6; j++)' die de kenmerken van het huisdier afdrukt, moet rekening houden metsuggestedDonationde toegevoegde gegevens.Werk de afsluitvoorwaarde van de binnenste luscode bij. Verhoogde de afsluitvoorwaarde met '1', dus wordt het
j <7. Controleer of uw code overeenkomt met de volgende code: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]); } } }
Overzicht van testen
Als er verschillende code-toevoegingen zijn, moet u controleren of uw code werkt zoals verwacht. De twee belangrijke testgebieden zijn:
De code voldoet zonder fouten.
Als u menuoptie 1 selecteert, worden alle huisdiergegevens weergegeven:
- De uitvoer bevat alle voorbeeldgegevens van huisdieren, waaronder: ID, soort, leeftijd, bijnaam, fysieke beschrijving en beschrijving van persoonlijkheid.
- Voor elk huisdier wordt de voorgestelde donatie weergegeven met een valutasymbool en met twee decimalen precisie.
Controleer uw werk
Bouw en voer deze uit om de code te testen. Gebruik deze stappen telkens wanneer u uw code moet testen.
Selecteer Opslaan in het menu Visual Studio Code File.
Klik in de EXPLORER-weergave met de rechtermuisknop op Starter en selecteer Openen in geïntegreerde terminal.
Een TERMINAL-deelvenster moet worden geopend onder het code-editorgebied.
Er zijn verschillende manieren om de geïntegreerde terminal van Visual Studio Code te openen. Het bovenste menu biedt bijvoorbeeld toegang tot het TERMINAL-deelvenster vanuit zowel het menu Beeld als het Terminal-menu . Sneltoetsen die het TERMINAL-paneel openen, zijn ook een waardevolle optie voor het verhogen van uw coderingsefficiëntie. Elke methode is acceptabel.
U ziet dat het TERMINAL-deelvenster een opdrachtregelprompt bevat en dat de prompt het huidige mappad weergeeft. Voorbeeld:
C:\Users\someuser\Desktop\GuidedProject\Starter>U kunt het TERMINAL-deelvenster gebruiken om CLI-opdrachten (Opdrachtregelinterface) uit te voeren, zoals
dotnet buildendotnet run. Dedotnet buildopdracht compileert uw code en geeft fout- en waarschuwingsberichten weer die betrekking hebben op uw codesyntaxis.Belangrijk
U moet ervoor zorgen dat de terminalopdrachtprompt is geopend in de hoofdmap van uw projectwerkruimte. In dit geval is de hoofdmap van de projectwerkruimte de map Starter, waar de Bestanden Starter.csproj en Program.cs zich bevinden. Wanneer u opdrachten uitvoert in de terminal, proberen de opdrachten acties uit te voeren met behulp van de huidige maplocatie. Als u probeert de
dotnet buildofdotnet runopdrachten uit te voeren vanaf een maplocatie die de bestanden niet bevat, genereren de opdrachten foutberichten.Voer bij de TERMINAL-opdrachtprompt de volgende opdracht in om uw projectcode te bouwen:
dotnet buildNa een paar seconden zou u een bericht moeten zien dat aangeeft dat uw build is geslaagd en dat u
0 Warnings and 0 Errorshebt.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)Notitie
Gebruik de eerder genoemde
dotnet build- endotnet run-stappen telkens wanneer u uw code wilt testen in de oefeningen die op deze module volgen.Als u foutberichten of waarschuwingen ziet, moet u deze oplossen voordat u doorgaat.
In foutberichten en waarschuwingsberichten wordt de coderegel vermeld waar het probleem wordt gevonden. Het volgende bericht is een voorbeeld van een
Build FAILEDfoutbericht:C:\Users\someuser\Desktop\GuidedProject\Starter\Program.cs(53,18): error CS1002: ; expected [C:\Users\someuser\Desktop\GuidedProject\Starter\Starter.csproj]Dit bericht geeft aan welk type fout is gedetecteerd en waar u deze kunt vinden. In dit geval geeft het bericht aan dat het Program.cs bestand een fout bevat -
error CS1002: ; expected. De; expectedsuggesties dat u bent vergeten een;aan het einde van een instructie op te nemen. HetProgram.cs(53,18)gedeelte van het bericht vertelt u de foutlocatie, op coderegel 53, op een positie van 18 tekens aan de linkerkant.Een syntaxisfout zoals deze voorkomt dat de build slaagt (Build FAILED). Sommige build-berichten bevatten een waarschuwing in plaats van een 'Fout', wat betekent dat er iets moet gebeuren, maar u kunt proberen het programma toch uit te voeren (build is voltooid).
Nadat u de problemen hebt opgelost en uw updates hebt opgeslagen, kunt u de
dotnet buildopdracht opnieuw uitvoeren. Ga door totdat je0 Warning(s) and 0 Error(s).Als u problemen ondervindt bij het oplossen van een probleem, controleert u de Program.cs code in de map Definitief die is opgenomen in de download die tijdens de installatie is voltooid. De Program.cs code in de map Definitief vertegenwoordigt de conclusie van alle oefeningen in deze module, dus bevat deze code die u nog niet hebt gemaakt.
De oplossingscode ziet er vaak anders uit dan de Program.cs code die u op dit punt in het begeleide project hebt ontwikkeld. U kunt echter de Program.cs code in Final onderzoeken om u te helpen bij het isoleren en oplossen van een probleem in uw code.
Vermijd het vertrouwen op de oplossingscode tijdens het ontwikkelen van uw eigen oplossing. Houd er rekening mee dat u leert van fouten en dat elke ontwikkelaar tijd besteedt aan het vinden en oplossen van fouten.
Test de bijgewerkte console-app op de TERMINAL-opdrachtprompt build en voer uw projectcode uit met één opdracht door het volgende in te voeren.
dotnet runWanneer de code twee menu-items weergeeft.- Voer '
1' in om de uitvoer 'Alle huisdieren weergeven' te testen - Voer '
2' in om het bericht 'under construction' te testen
De uitvoer voor menu-item 1 moet nauw overeenkomen met het volgende voorbeeld:
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.00Als alles werkt zoals verwacht, gefeliciteerd! Zoek anders naar de fout door de betrokken code-instructies te controleren. Begin indien nodig opnieuw met een nieuw startersbestand Project.cs en als u nog steeds problemen ondervindt, controleert u de mapcode van de oplossing voor deze oefening.
- Voer '
Typ
exitin het app-menu om het programma te beëindigen en sluit vervolgens het terminalpaneel.