Oefening: voorgestelde donatiegegevens toevoegen

Voltooid

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.

  1. Let op de code onder opmerking 1 die variabelen declareert die worden gebruikt voor het vullen van de ourAnimals matrix voor elk dier.

    U moet nog een declareren string voor de voorgestelde donatiegegevens.

    // #1 the ourAnimals array will store the following: 
    string animalSpecies = "";
    string animalID = "";
    string animalAge = "";
    string animalPhysicalDescription = "";
    string animalPersonalityDescription = "";
    string animalNickname = "";
    
  2. Maak de suggestedDonation variabele onder de declaratie voor animalNickname.

    De declaratie voor de suggestedDonation declaratie wordt toegevoegd met de volgende code:

    string suggestedDonation = "";
    
  3. Zoek de code om de ourAnimals matrix 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 maxPets en het getal 6 voor de zes tekenreeksen die oorspronkelijk zijn gedefinieerd, maar zonder ruimte voor de nieuwe suggestedDonation gegevens.

  4. Werk ourAnimals de matrix bij voor het opslaan 7 van 'kolommen' met gegevens voor elk dier in plaats van 6.

    De volgende regel toont de bijgewerkte code:

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

    U hebt de ourAnimals matrix uitgebreid ter ondersteuning van de toegevoegde suggestedDonation gegevens.

Bedragen toevoegen suggestedDonation aan de voorbeeldgegevens

  1. 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 suggestedDonation gegevens worden gemaakt. Het zou mooi onder 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. Voeg een suggestedDonation waarde toe boven de break instructie voor case 0; door default: 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;
    
  3. 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;
    
  4. U ziet dat suggestedDonation gegevens 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");.

  1. Voeg vóór opmerking #5, binnen het einde van het codeblok, de code toe om te valideren dat suggestedDonation kan 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 suggestedDonation variabele niet kan worden gecast als een decimal, wijst de code een standaardwaarde decimalDonation = 45.00m;toe. Als de cast is geslaagd, wordt het TryParse bestand ingevuld decimalDonation. In beide gevallen decimalDonation vertegenwoordigt u een juiste decimaal.

  2. 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 options
    

    Opmerking: validatie werkt nog steeds niet. U kunt het niet vergeten, de noodzaak om decimalDonation het te gebruiken in de code.

  3. Als u de opmerking #2 volgt, declareert decimalDonationu, na string menuSelection = "";:

    decimal decimalDonation = 0.00m;
    

    Ten slotte bent u klaar om gegevens voor elk huisdier te vullen suggestedDonation .

  4. Voeg net vóór opmerking #5, direct na het TryParse afsluitende haakje } dat u hebt voltooid, de volgende code toe:

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

    U hebt de decimalDonation versie van de voorgestelde donatiegegevens gebruikt. U hebt ook tekenreeksinterpolatie en valutaopmaak gebruikt in de uitvoer.

  5. Neem even de tijd om te bekijken hoe de voorgestelde donatiegegevens uiteindelijk in de ourAnimals matrix worden geplaatst.

    Met de volgende code wordt de matrix in de ourAnimals context van het TryParse()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 options
    

    U merkt dat door gebruik te maken van de code {decimalDonation:C2} de voorgestelde donatie, van decimalDonation, 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.

  1. 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 met suggestedDonation de toegevoegde gegevens.

  2. 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:

  1. De code voldoet zonder fouten.

  2. 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.

  1. Selecteer Opslaan in het menu Visual Studio Code File.

  2. 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.

  3. 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 build en dotnet run. De dotnet build opdracht 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 build of dotnet run opdrachten uit te voeren vanaf een maplocatie die de bestanden niet bevat, genereren de opdrachten foutberichten.

  4. Voer bij de TERMINAL-opdrachtprompt de volgende opdracht in om uw projectcode te bouwen: dotnet build

    Na een paar seconden zou u een bericht moeten zien dat aangeeft dat uw build is geslaagd en dat u 0 Warnings and 0 Errors hebt.

    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- en dotnet run-stappen telkens wanneer u uw code wilt testen in de oefeningen die op deze module volgen.

  5. 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 FAILED foutbericht:

    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 ; expected suggesties dat u bent vergeten een ; aan het einde van een instructie op te nemen. Het Program.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 build opdracht opnieuw uitvoeren. Ga door totdat je 0 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.

  6. 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 run Wanneer 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.00
    

    Als 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.

  7. Typ exitin het app-menu om het programma te beëindigen en sluit vervolgens het terminalpaneel.