تمرين - إضافة بيانات التبرع المقترحة
في هذه الخطوة من عملية التطوير، يمكنك تحديث التعليمات البرمجية المتوفرة في مجلد مشروع البداية، وإضافة ميزات "التبرع المقترح" إلى التطبيق. يجب أن يكون ملف project.cs البداية مفتوحا في Visual Studio Code. ارجع إلى وحدة الإعداد السابقة إذا كنت بحاجة إلى إرشادات للبدء.
إنشاء ميزات "التبرع المقترح"
تتطلب ميزات التبرع المضافة إنشاء suggestedDonation متغير، وتوسيع ourAnimals الصفيف لاستيعاب بيانات التبرع الجديدة. تحتاج أيضا إلى إضافة مبالغ التبرع المقترحة لكل، وتنفيذ مبلغ افتراضي عند فقدان معلومات التبرع المقترحة.
إضافة دعم لبيانات التبرع المقترحة
تحتاج إلى إنشاء متغير جديد للاحتفاظ بالتبرعات المقترحة وتوسيع ourAnimals الصفيف للاحتفاظ بالبيانات الجديدة.
لاحظ التعليمات البرمجية ضمن التعليق رقم 1 التي تعلن عن المتغيرات المستخدمة لملء
ourAnimalsالصفيف لكل.تحتاج إلى الإعلان عن آخر
stringلبيانات التبرع المقترحة.// #1 the ourAnimals array will store the following: string animalSpecies = ""; string animalID = ""; string animalAge = ""; string animalPhysicalDescription = ""; string animalPersonalityDescription = ""; string animalNickname = "";suggestedDonationقم بإنشاء المتغير أسفل الإعلان لanimalNickname.تتم إضافة الإعلان عن
suggestedDonationمع التعليمات البرمجية التالية:string suggestedDonation = "";حدد موقع التعليمات البرمجية
ourAnimalsلإنشاء الصفيف التالي التعليق رقم 3.ينشئ السطر التالي من التعليمات البرمجية الصفيف:
string[,] ourAnimals = new string[maxPets,6];الأحجام التي تحدد بعدي الصفيف هي الحد الأقصى لعدد الأليفة وعدد
maxPetsالسلاسل الست المعرفة في الأصل، ولكن دون مساحة للبيانات6الجديدةsuggestedDonation.تحديث
ourAnimalsالصفيف للاحتفاظ7ب "أعمدة" البيانات لكل بدلا من6.يعرض السطر التالي التعليمات البرمجية المحدثة:
string[,] ourAnimals = new string[maxPets,7];قمت بتوسيع
ourAnimalsالصفيف لدعم البيانات المضافةsuggestedDonation.
إضافة suggestedDonation مبالغ إلى بيانات العينة
خذ دقيقة للمراجعة
case 0:داخل عبارة التبديل التالية التعليق رقم 4.التعليمات البرمجية التالية التي تحدد بيانات العينة للحيوان الأليف الأول قبل
suggestedDonationإنشاء البيانات. سيكون مناسبا بشكل جيد أسفل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;suggestedDonationإدراج قيمة أعلى العبارةbreakل من خلالcase 0;default:بالقيم التالية:- الحالة 0:
suggestedDonation = "85.00"; - الحالة 1:
suggestedDonation = "49.99"; - الحالة 2:
suggestedDonation = "40.00"; - الحالة 3:
suggestedDonation = ""; - الإعداد الافتراضي:
suggestedDonation = "";
تظهر
case 0:التعليمات البرمجية التالية التعليمات البرمجية مع إضافة "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;- الحالة 0:
في ملف project.cs، حدد موقع الصفيف التالي المملوء ببيانات الأليفة من عبارات الحالة (إنه قبل التعليق رقم 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;لاحظ أن
suggestedDonationالبيانات غير مضمنة كجزء من نموذج التعليمات البرمجية لبدء البيانات لملء الصفيف.من المنطقي ملء الصفيف ببيان مثل:
ourAnimals[i, 6] = "Suggested Donation: " + suggestedDonation;ولكن، لا تضيف هذه التعليمة البرمجية. في القسم التالي، ستستخدم نهجا آخر.
التحقق من صحة البيانات باستخدام TryParse()
الغرض من المتغير suggestedDonation هو أن يكون قيمة رقمية، ولكن يتم جمعه وتخزينه ك string. ضع في اعتبارك الحالات المستقبلية التي يتعين عليك فيها التحقق من صحة ما suggestedDonation يمثل رقما عشريا، ويمكنك تحويله إلى رقم عشري بحيث يكون متاحا للاستخدام في حسابات الفوترة. لتجنب الأخطاء عندما يقوم المستخدمون بإدخال أرقام بتنسيق نصي، مثل twenty، تحتاج إلى استخدام TryParse التحقق من الصحة.
إشعار
تم تصميم نماذج التعليمات البرمجية في هذا التمرين استنادا إلى إعدادات الثقافة في الولايات المتحدة، وتستخدم نقطة (.) كفاصل عشري. يؤدي إنشاء التعليمات البرمجية وتشغيلها باستخدام إعداد ثقافة يستخدم فاصل عشري مختلف (مثل الفاصلة ,) بشكل متكرر إلى نتائج أو أخطاء غير متوقعة. لإصلاح هذه المشكلة، استبدل فواصل الفاصلة العشرية في نماذج التعليمات البرمجية بالفاصل العشري المحلي (مثل ,).
بدلا من ذلك، لتشغيل برنامج باستخدام إعداد الثقافة en-US، أضف: using System.Globalization;إلى أعلى البرنامج. وبعد أي عبارات أخرى using ، أضف CultureInfo.CurrentCulture = new CultureInfo("en-US");.
قبل التعليق رقم 5، داخل نهاية كتلة التعليمات البرمجية، أضف التعليمات البرمجية للتحقق من الصحة التي
suggestedDonationيمكن تحويلها كعدد عشري.يمكنك إضافة التعليمات البرمجية التالية:
if (!decimal.TryParse(suggestedDonation, out decimalDonation)){ decimalDonation = 45.00m; // if suggestedDonation NOT a number, default to 45.00 }suggestedDonationإذا تعذر تحويل المتغير كdecimal، فإن التعليمات البرمجية تعين قيمةdecimalDonation = 45.00m;افتراضية . إذا نجح الإرسال، يتمTryParseملءdecimalDonation. وفي كلتا الحالتين،decimalDonationيمثل رقما عشريا مناسبا.تأكد من أن رمز التحقق من الصحة الخاص بك في المكان الصحيح!
يجب أن يظهر الخطان اللذان أضفهما في التعليمات البرمجية كأعلى سطرين من التعليمات البرمجية التالية:
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ملاحظة، لا يزال التحقق من الصحة لا يعمل. لا يمكنك نسيان، الحاجة إلى الإعلان
decimalDonationعن استخدامه في التعليمات البرمجية.بعد التعليق رقم 2، قم بتعريف
decimalDonation، بعدstring menuSelection = "";:decimal decimalDonation = 0.00m;وأخيرا أنت مستعد لملء
suggestedDonationالبيانات لكل أليف.قبل التعليق رقم 5 مباشرة بعد قوس
TryParseالإغلاق الذي}أكملته، أضف التعليمات البرمجية التالية:ourAnimals[i, 6] = $"Suggested Donation: {decimalDonation:C2}";لقد استخدمت
decimalDonationإصدار بيانات التبرع المقترحة. كما استخدمت استنتاج السلسلة وتنسيق العملة في الإخراج.خذ دقيقة لمراجعة كيفية تحويل بيانات التبرع المقترحة
ourAnimalsأخيرا إلى الصفيف.التعليمات البرمجية
ourAnimalsالتالية تملأ الصفيف في سياق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لاحظ أنه باستخدام التعليمات البرمجية
{decimalDonation:C2}، يعرض التبرع المقترح، منdecimalDonation، مع رمز العملة المحلية ومنزلتين عشريتين كما هو موجه بواسطة تنسيق العملة:C2.
مراجعة وتحديث المكان الذي يجب استخدام الصفيف فيه ourAnimals
إضافة البيانات التي suggestedDonation تم إنشاؤها تحتاج إلى مزيد من التحديثات. يفتقد خيار "1. List all of our current pet information" القائمة إلى البيانات المضافة.
لاحظ التعليمات البرمجية ضمن التعليق #5، لحلقة القائمة داخل
case 1.تحتاج الحلقة الداخلية "
for (int j = 0; j <6; j++)" التي تطبع سمات الأليفة إلى حسابsuggestedDonationالبيانات المضافة.تحديث شرط إنهاء التعليمات البرمجية للحلقة الداخلية. زيادة شرط الخروج من قبل "1"، بحيث يصبح
j <7. تحقق من تطابق التعليمات البرمجية مع التعليمات البرمجية التالية: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]); } } }
نظرة عامة على الاختبار
مع وجود العديد من إضافات التعليمات البرمجية، تحتاج إلى تأكيد عمل التعليمات البرمجية الخاصة بك كما هو متوقع. مجالا الاختبار المهمان هما:
تتوافق التعليمات البرمجية دون أخطاء.
تحديد خيار القائمة 1 يتم عرض جميع معلومات الأليفة:
- يتضمن الإخراج جميع معلومات الأليفة النموذجية، بما في ذلك: المعرف والأنواع والعمر والكنية والوصف المادي ووصف الشخصية.
- لكل أليف، يتم عرض التبرع المقترح برمز عملة وبمكانين عشريين من الدقة.
راجع عملك
قم بالبناء والتشغيل لاختبار التعليمات البرمجية. استخدم هذه الخطوات في كل مرة تحتاج فيها إلى اختبار التعليمات البرمجية الخاصة بك.
في قائمة Visual Studio Code File ، حدد Save.
في طريقة عرض EXPLORER، انقر بزر الماوس الأيمن فوق Starter، ثم حدد Open in Integrated Terminal.
يجب فتح لوحة TERMINAL أسفل منطقة محرر التعليمات البرمجية.
هناك عدة طرق لفتح المحطة الطرفية المتكاملة ل Visual Studio Code. على سبيل المثال، توفر القائمة العلوية الوصول إلى لوحة TERMINAL من كل من القائمة View وقائمة Terminal . أيضا، تعد اختصارات لوحة المفاتيح التي تفتح لوحة TERMINAL خيارا قيما لزيادة كفاءة الترميز. كل أسلوب مقبول.
لاحظ أن لوحة TERMINAL تتضمن موجه سطر أوامر، وأن المطالبة تعرض مسار المجلد الحالي. على سبيل المثال:
C:\Users\someuser\Desktop\GuidedProject\Starter>يمكنك استخدام لوحة TERMINAL لتشغيل أوامر واجهة سطر الأوامر (CLI)، مثل
dotnet buildوdotnet run. يقومdotnet buildالأمر بتجميع التعليمات البرمجية وعرض رسائل الخطأ والتحذير المتعلقة ببناء جملة التعليمات البرمجية.هام
تحتاج إلى التأكد من أن موجه الأوامر الطرفية مفتوح إلى جذر مساحة عمل المشروع. في هذه الحالة، يكون جذر مساحة عمل المشروع هو مجلد Starter، حيث توجد ملفات Starter.csproj و Program.cs. عند تشغيل الأوامر في المحطة الطرفية، تحاول الأوامر تنفيذ إجراءات باستخدام موقع المجلد الحالي. إذا حاولت تشغيل
dotnet buildالأوامر أوdotnet runمن موقع مجلد لا يحتوي على الملفات، فإن الأوامر تنشئ رسائل خطأ.في موجه الأوامر TERMINAL، لإنشاء التعليمات البرمجية للمشروع، أدخل الأمر التالي:
dotnet buildبعد بضع ثوان، يجب أن تشاهد رسالة تخبرك بنجاح البناء الخاص بك، وأن لديك
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)إشعار
استخدم الخطوات السابقة
dotnet buildوdotnet runفي كل مرة تحتاج فيها إلى اختبار التعليمات البرمجية الخاصة بك في التدريبات التالية في هذه الوحدة النمطية.إذا رأيت رسائل خطأ أو تحذير، فستحتاج إلى إصلاحها قبل المتابعة.
تسرد رسائل الخطأ والتحذير سطر التعليمات البرمجية حيث تم العثور على المشكلة. الرسالة التالية هي مثال على
Build FAILEDرسالة خطأ:C:\Users\someuser\Desktop\GuidedProject\Starter\Program.cs(53,18): error CS1002: ; expected [C:\Users\someuser\Desktop\GuidedProject\Starter\Starter.csproj]تخبرك هذه الرسالة بنوع الخطأ الذي تم اكتشافه ومكان العثور عليه. في هذه الحالة، تخبرك الرسالة أن ملف Program.cs يحتوي على خطأ -
error CS1002: ; expected.; expectedيقترح أنك نسيت تضمين;في نهاية عبارة .Program.cs(53,18)يخبرك جزء الرسالة بموقع الخطأ، في سطر التعليمات البرمجية 53، في موضع 18 حرفا من اليسار.يمنع خطأ في بناء الجملة مثل هذا نجاح البنية (فشل الإنشاء). توفر بعض رسائل الإنشاء "تحذير" بدلا من "خطأ"، مما يعني أن هناك شيئا يجب الاهتمام به، ولكن يمكنك محاولة تشغيل البرنامج على أي حال (نجح الإنشاء).
بمجرد إصلاح المشكلات وحفظ التحديثات، يمكنك تشغيل
dotnet buildالأمر مرة أخرى. تابع حتى يكون لديك0 Warning(s) and 0 Error(s).إذا واجهت صعوبة في حل مشكلة بنفسك، فافحص التعليمات البرمجية Program.cs في المجلد النهائي المضمن في التنزيل المكتمل أثناء الإعداد. تمثل التعليمات البرمجية Program.cs في المجلد النهائي ختام جميع التدريبات في هذه الوحدة النمطية، لذلك تتضمن التعليمات البرمجية التي لم تقم بإنشائها بعد.
غالبا ما تبدو التعليمات البرمجية للحل مختلفة عن التعليمات البرمجية Program.cs التي قمت بتطويرها إلى هذه النقطة في المشروع الإرشادي. ومع ذلك، يمكنك فحص التعليمات البرمجية Program.cs في Final لمساعدتك في عزل مشكلة في التعليمات البرمجية وإصلاحها.
تجنب الاعتماد على التعليمات البرمجية للحل أثناء تطوير الحل الخاص بك. تذكر أنك تتعلم من الأخطاء وأن كل مطور يقضي بعض الوقت في العثور على الأخطاء وإصلاحها.
اختبر تطبيق وحدة التحكم المحدثة، في إنشاء موجه الأوامر TERMINAL وتشغيل التعليمات البرمجية لمشروعك بأمر واحد عن طريق إدخال:
dotnet run. عندما تقوم التعليمات البرمجية بتشغيل عرض عنصري القائمة.- أدخل "
1" لاختبار إخراج "عرض جميع الأليفة" - أدخل "
2" لاختبار رسالة العنصر النائب "قيد الإنشاء"
يجب أن يتطابق إخراج عنصر القائمة #1 بشكل وثيق مع النموذج التالي:
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إذا كان كل شيء يعمل كما هو متوقع، تهانينا! وإلا، ابحث عن الخطأ عن طريق التحقق من خطوات تعليمات التعليمات البرمجية المتضمنة. إذا لزم الأمر، ابدأ من جديد بملف Project.cs جديد، وإذا كانت لا تزال لديك مشكلات، فتحقق من رمز مجلد الحل لهذا التمرين.
- أدخل "
اكتب
exit، في قائمة التطبيق، لإنهاء البرنامج ثم أغلق لوحة المحطة الطرفية.