Cvičení – přidání navrhovaných dat o darování
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.
Všimněte si kódu pod komentářem č. 1, který deklaruje proměnné použité k naplnění
ourAnimalspole pro každé zvíře.Musíte deklarovat další
stringpro 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 = "";Vytvořte proměnnou
suggestedDonationpod deklarací proanimalNickname.Deklarace pro tuto
suggestedDonationdeklaraci je přidána s následujícím kódem:string suggestedDonation = "";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
maxPetsa číslo6šesti původně definovaných řetězců, ale bez místa pro novásuggestedDonationdata.Aktualizujte
ourAnimalspole tak, aby drželo7"sloupce" dat pro každé zvíře místo6.Následující řádek ukazuje aktualizovaný kód:
string[,] ourAnimals = new string[maxPets,7];Rozšířili jste pole
ourAnimals, aby podporovalo přidaná datasuggestedDonation.
Přidání suggestedDonation částek do ukázkových dat
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
suggestedDonationpřed vytvořením dat. Dobře by se vešla podanimalNickname!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;suggestedDonationVložte hodnotu nadbreakpříkaz procase 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;- Případ 0:
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;Všimněte si, že
suggestedDonationdata 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");.
Před komentář č. 5 přidejte do konce bloku kódu kód, který ověří, že
suggestedDonationse 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 }suggestedDonationPokud proměnnou nelze přetypovat jako hodnotudecimal, kód přiřadí výchozí hodnotudecimalDonation = 45.00m;. Pokud je přetypování úspěšné,TryParsenaplnídecimalDonationse . V obou směrechdecimalDonationpředstavuje správné desetinné číslo.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 optionsUpozorňujeme, že ověřování stále nefunguje. Nezapomeňte, že je potřeba ji deklarovat
decimalDonation, aby se používala v kódu.Za komentářem č. 2 deklarujte
decimalDonation, zastring menuSelection = "";:decimal decimalDonation = 0.00m;Nakonec jste připraveni naplnit
suggestedDonationdata pro každého domácího mazlíčka.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
decimalDonationjste verzi navrhovaných údajů o darování. Ve výstupu jste také použili interpolaci řetězců a formátování měny.Chvíli si přečtěte, jak se navrhovaná data darování nakonec zpřístupní do
ourAnimalspole.Následující kód naplní
ourAnimalspole v kontextuTryParse():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 optionsVšimněte si, že pomocí kódu
{decimalDonation:C2}se navrhovaný dardecimalDonationzobrazí 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.
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í zohlednitsuggestedDonationpřidaná data.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ří:
Kód splňuje bez chyb.
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.
V nabídce Soubor editoru Visual Studio Code vyberte Uložit.
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á.
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 buildadotnet run. Příkazdotnet buildzkompiluje 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 buildnebodotnet runz umístění, které neobsahuje potřebné soubory, příkazy vygenerují chybové zprávy.Na příkazovém řádku TERMINAL zadejte kód projektu a zadejte následující příkaz:
dotnet buildPo 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 buildadotnet runpokaždé, když potřebujete otestovat svůj kód v následujících cvičeních tohoto modulu.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 FAILEDná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. ČástProgram.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 buildznovu. Pokračujte, dokud nebudete mít0 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.
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.00Pokud 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í.
- Zadáním "
Napište
exit, v nabídce aplikace ukončete program a pak zavřete panel terminálu.