Cvičení – přidání navrhovaných dat o darování

Dokončeno

V tomto kroku procesu vývoje aktualizujete kód uvedený ve složce počátečního projektu a přidáte do aplikace funkce navrhovaného daru. Počáteční project.cs soubor by měl být otevřený v editoru Visual Studio Code. Pokud potřebujete pokyny pro začátek, vraťte se k předchozí lekci přípravy.

Vytvoření funkcí Navrhované dary

Přidané funkce darování vyžadují, abyste vytvořili suggestedDonation proměnnou a rozšířili ourAnimals pole tak, aby vyhovovalo novým datům o darování. Musíte také přidat navrhované částky darů pro každé zvíře a implementovat výchozí částku, pokud chybí navrhované informace o darech.

Přidání podpory navrhovaných údajů o darování

Potřebujete vytvořit novou proměnnou, která bude obsahovat navrhované dary, a rozšířit pole tak, aby se chytá ourAnimals nová data.

  1. Všimněte si kódu pod komentářem č. 1, který deklaruje proměnné použité k naplnění ourAnimals pole pro každé zvíře.

    Musíte deklarovat další string pro navrhované údaje o darování.

    // #1 the ourAnimals array will store the following: 
    string animalSpecies = "";
    string animalID = "";
    string animalAge = "";
    string animalPhysicalDescription = "";
    string animalPersonalityDescription = "";
    string animalNickname = "";
    
  2. Vytvořte proměnnou suggestedDonation pod deklarací pro animalNickname.

    Deklarace pro tuto suggestedDonation deklaraci je přidána s následujícím kódem:

    string suggestedDonation = "";
    
  3. Vyhledejte kód pro vytvoření pole s následujícím komentářem ourAnimals č. 3.

    Následující řádek kódu vytvoří pole:

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

    Velikosti definující dvě dimenze pole jsou maximální počet domácích zvířat maxPets a číslo 6 šesti původně definovaných řetězců, ale bez místa pro nová suggestedDonation data.

  4. Aktualizujte ourAnimals pole tak, aby drželo 7 "sloupce" dat pro každé zvíře místo 6.

    Následující řádek ukazuje aktualizovaný kód:

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

    Rozšířili jste pole ourAnimals, aby podporovalo přidaná data suggestedDonation.

Přidání suggestedDonation částek do ukázkových dat

  1. Nahlédněte do case 0: příkazu switch s následujícím komentářem č. 4.

    Následující kód, který definuje ukázková data pro prvního domácího mazlíčka suggestedDonation před vytvořením dat. Dobře by se vešla pod 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. suggestedDonation Vložte hodnotu nad break příkaz pro case 0; průchozí default: s následujícími hodnotami:

    • Případ 0: suggestedDonation = "85.00";
    • Případ 1: suggestedDonation = "49.99";
    • Případ 2: suggestedDonation = "40.00";
    • Případ 3: suggestedDonation = "";
    • výchozí: suggestedDonation = "";

    Následující kód ukazuje case 0: kód s přidáním funkce "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. V souboru project.cs vyhledejte následující pole naplněné daty domácích mazlíčků z příkazů case (je těsně před komentářem č. 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. Všimněte si, že suggestedDonation data nejsou zahrnutá jako součást vzorového počátečního kódu dat pro naplnění pole.

    Dává smysl naplnit pole příkazem, jako je:

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

    Tento kód ale nepřidáte. V další části použijete jiný přístup.

Ověření dat pomocí TryParse()

Proměnná suggestedDonation je určena jako číselná hodnota, ale je shromažďována a uložena stringjako . Zvažte budoucí případy, kdy musíte ověřit, že suggestedDonation představuje desetinné číslo a že ho můžete převést na desetinné číslo, aby bylo možné ho použít pro výpočty fakturace. Abyste se vyhnuli chybám, když uživatelé zadávají čísla v textovém formátu, třeba twenty, musíte použít TryParse ověření.

Poznámka:

Ukázky kódu v tomto cvičení jsou navrženy na základě nastavení jazykové verze en-US a jako oddělovač desetinných míst použijte tečku (.). Sestavení a spuštění kódu s nastavením jazykové verze, které používá jiný oddělovač desetinných míst (například čárku ,), často poskytuje neočekávané výsledky nebo chyby. Pokud chcete tento problém vyřešit, nahraďte oddělovače desetinných míst tečky v ukázkách kódu místním oddělovačem desetinných míst (například ,). Pokud chcete program spustit pomocí nastavení jazykové verze prostředí en-US, přidejte na začátek programu: using System.Globalization; A za jakékoli jiné using příkazy přidejte CultureInfo.CurrentCulture = new CultureInfo("en-US");.

  1. Před komentář č. 5 přidejte do konce bloku kódu kód, který ověří, že suggestedDonation se dá přetypovat jako desetinné číslo.

    Přidáte následující kód:

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

    suggestedDonation Pokud proměnnou nelze přetypovat jako hodnotu decimal, kód přiřadí výchozí hodnotu decimalDonation = 45.00m;. Pokud je přetypování úspěšné, TryParse naplní decimalDonationse . V obou směrech decimalDonation představuje správné desetinné číslo.

  2. Ujistěte se, že je váš ověřovací kód na správném místě.

    Dva řádky, které jste přidali, by se měly v kódu zobrazit jako horní dva řádky následujícího kódu:

        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
    

    Upozorňujeme, že ověřování stále nefunguje. Nezapomeňte, že je potřeba ji deklarovat decimalDonation , aby se používala v kódu.

  3. Za komentářem č. 2 deklarujte decimalDonation, za string menuSelection = "";:

    decimal decimalDonation = 0.00m;
    

    Nakonec jste připraveni naplnit suggestedDonation data pro každého domácího mazlíčka.

  4. Těsně před komentář č. 5, hned po uzavírací závorku TryParse, kterou jste dokončili, přidejte následující kód:

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

    Použili decimalDonation jste verzi navrhovaných údajů o darování. Ve výstupu jste také použili interpolaci řetězců a formátování měny.

  5. Chvíli si přečtěte, jak se navrhovaná data darování nakonec zpřístupní do ourAnimals pole.

    Následující kód naplní ourAnimals pole v kontextu 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
    

    Všimněte si, že pomocí kódu {decimalDonation:C2} se navrhovaný dar decimalDonation zobrazí se symbolem místní měny a dvěma desetinnými místy, jak je určeno formátováním měny :C2.

Kontrola a aktualizace místa ourAnimals použití pole

Přidání dat vytvořených suggestedDonation pro další aktualizace. V nabídce "1. List all of our current pet information" chybí přidaná data.

  1. Všimněte si kódu pod komentářem č. 5 pro smyčku nabídky uvnitř case 1.

    Vnitřní smyčka "for (int j = 0; j < 6; j++)", která vytiskne atributy domácího mazlíčka, musí zohlednit suggestedDonation přidaná data.

  2. Aktualizujte ukončovací podmínku kódu vnitřní smyčky. Zvýšil se výstupní stav o "1", takže se stane j <7. Zkontrolujte, že kód odpovídá následujícímu kódu:

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

Přehled testování

Po několika doplňcích kódu je potřeba ověřit, že váš kód funguje podle očekávání. Mezi dvě významné testovací oblasti patří:

  1. Kód splňuje bez chyb.

  2. Výběr možnosti nabídky 1 zobrazí všechny informace o domácích zvířatech:

    • Výstup obsahuje všechny ukázkové informace o domácích zvířatech, včetně ID, druhu, věku, přezdívky, fyzického popisu a popisu osobnosti.
    • Pro každého domácího mazlíčka se navrhovaný dar zobrazí se symbolem měny a se dvěma desetinnými místy přesnosti.

Kontrola práce

Sestavte a spusťte test kódu. Tyto kroky použijte pokaždé, když potřebujete otestovat kód.

  1. V nabídce Soubor editoru Visual Studio Code vyberte Uložit.

  2. V zobrazení PRŮZKUMNÍK klepněte pravým tlačítkem myši Starter a pak vyberte Otevřít v integrovaném terminálu.

    Pod oblastí Editor kódu by se měl otevřít panel TERMINÁL.

    Existuje několik způsobů, jak otevřít integrovaný terminál editoru Visual Studio Code. Například horní nabídka poskytuje přístup k panelu TERMINÁL jak z nabídky Zobrazení , tak z nabídky Terminál . Klávesové zkratky, které otevřou panel TERMINAL, jsou také užitečnou možností pro zvýšení efektivity psaní kódu. Každá metoda je přijatelná.

  3. Všimněte si, že panel TERMINÁL obsahuje příkazový řádek a že se na příkazovém řádku zobrazuje aktuální cesta ke složce. Příklad:

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

    Pomocí panelu TERMINAL můžete spouštět příkazy rozhraní příkazového řádku (CLI), například dotnet build a dotnet run. Příkaz dotnet build zkompiluje váš kód a zobrazí chybové a výstražné zprávy související se syntaxí kódu.

    Důležité

    Musíte zajistit, aby byl příkazový řádek terminálu otevřený v kořenovém adresáři vašeho pracovního prostoru projektu. V tomto případě je kořenem pracovního prostoru projektu složka Starter, kde jsou umístěné soubory Starter.csproj a Program.cs. Při spuštění příkazů v terminálu se příkazy pokusí provést akce pomocí aktuálního umístění složky. Pokud se pokusíte spustit příkazy dotnet build nebo dotnet run z umístění, které neobsahuje potřebné soubory, příkazy vygenerují chybové zprávy.

  4. Na příkazovém řádku TERMINAL zadejte kód projektu a zadejte následující příkaz: dotnet build

    Po několika sekundách by se měla zobrazit zpráva s oznámením, že sestavení bylo úspěšné a že máte 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)
    

    Poznámka:

    Použijte předchozí kroky dotnet build a dotnet run pokaždé, když potřebujete otestovat svůj kód v následujících cvičeních tohoto modulu.

  5. Pokud se zobrazí chybové nebo upozorňující zprávy, musíte je před pokračováním opravit.

    Chybové zprávy a zprávy s upozorněním uvádějí řádek kódu, ve kterém se problém nachází. Příkladem chybové zprávy je Build FAILED následující zpráva:

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

    Tato zpráva vám řekne typ chyby, která byla zjištěna a kde ji najít. V tomto případě vám zpráva oznámí, že soubor Program.cs obsahuje chybu - error CS1002: ; expected. Návrhy ; expected , které jste zapomněli zahrnout ; na konec příkazu. Část Program.cs(53,18) zprávy informuje o umístění chyby na řádku kódu 53 na pozici 18 znaků zleva.

    Podobná chyba syntaxe zabrání úspěšnému sestavení (sestavení selhalo). Některé zprávy sestavení poskytují "varování" místo "chyby," což znamená, že je něco, čeho byste si měli být vědomi, ale přesto můžete zkusit spustit program (sestavení úspěšné).

    Jakmile problémy opravíte a uložíte aktualizace, můžete příkaz spustit dotnet build znovu. Pokračujte, dokud nebudete mít 0 Warning(s) and 0 Error(s).

    Pokud narazíte na potíže s řešením problému sami, projděte si kód Program.cs ve složce Final, která je součástí stahování dokončeného během instalace. Kód Program.cs ve složce Final představuje závěr všech cvičení v tomto modulu, takže obsahuje kód, který jste ještě nevytvořili.

    Kód řešení často vypadá jinak než Program.cs kód, který jste v tomto okamžiku vyvinuli v projektu s asistencí. Můžete ale prozkoumat kód Program.cs v konečném znění, který vám pomůže izolovat a opravit problém v kódu.

    Při vývoji vlastního řešení se vyhněte závislosti na kódu řešení. Mějte na paměti, že se učíte z chyb a že každý vývojář tráví čas hledáním a opravou chyb.

  6. Otestujte aktualizovanou konzolovou aplikaci, na příkazovém řádku TERMINÁLU sestavte a spusťte kód projektu jedním příkazem zadáním: dotnet run. Když kód spustí dvě položky nabídky, zobrazí se.

    • Zadáním "1" otestujete výstup "display all pets" (zobrazit všechna domácí zvířata).
    • Zadáním "2" otestujete zástupnou zprávu "pod konstrukcí".

    Výstup položky nabídky #1 by měl přesně odpovídat následující ukázce:

    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
    

    Pokud všechno fungovalo podle očekávání, blahopřejeme! V opačném případě vyhledejte chybu kontrolou kroků pokynů kódu. V případě potřeby začněte znovu s novým počátečním souborem Project.cs a pokud stále máte problémy, zkontrolujte kód složky řešení pro toto cvičení.

  7. Napište exit, v nabídce aplikace ukončete program a pak zavřete panel terminálu.