تمرين - إضافة بيانات التبرع المقترحة

مكتمل

في هذه الخطوة من عملية التطوير، يمكنك تحديث التعليمات البرمجية المتوفرة في مجلد مشروع البداية، وإضافة ميزات "التبرع المقترح" إلى التطبيق. يجب أن يكون ملف project.cs البداية مفتوحا في Visual Studio Code. ارجع إلى وحدة الإعداد السابقة إذا كنت بحاجة إلى إرشادات للبدء.

إنشاء ميزات "التبرع المقترح"

تتطلب ميزات التبرع المضافة إنشاء suggestedDonation متغير، وتوسيع ourAnimals الصفيف لاستيعاب بيانات التبرع الجديدة. تحتاج أيضا إلى إضافة مبالغ التبرع المقترحة لكل، وتنفيذ مبلغ افتراضي عند فقدان معلومات التبرع المقترحة.

إضافة دعم لبيانات التبرع المقترحة

تحتاج إلى إنشاء متغير جديد للاحتفاظ بالتبرعات المقترحة وتوسيع ourAnimals الصفيف للاحتفاظ بالبيانات الجديدة.

  1. لاحظ التعليمات البرمجية ضمن التعليق رقم 1 التي تعلن عن المتغيرات المستخدمة لملء ourAnimals الصفيف لكل.

    تحتاج إلى الإعلان عن آخر string لبيانات التبرع المقترحة.

    // #1 the ourAnimals array will store the following: 
    string animalSpecies = "";
    string animalID = "";
    string animalAge = "";
    string animalPhysicalDescription = "";
    string animalPersonalityDescription = "";
    string animalNickname = "";
    
  2. suggestedDonation قم بإنشاء المتغير أسفل الإعلان ل animalNickname.

    تتم إضافة الإعلان عن suggestedDonation مع التعليمات البرمجية التالية:

    string suggestedDonation = "";
    
  3. حدد موقع التعليمات البرمجية ourAnimals لإنشاء الصفيف التالي التعليق رقم 3.

    ينشئ السطر التالي من التعليمات البرمجية الصفيف:

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

    الأحجام التي تحدد بعدي الصفيف هي الحد الأقصى لعدد الأليفة وعدد maxPets السلاسل الست المعرفة في الأصل، ولكن دون مساحة للبيانات 6 الجديدةsuggestedDonation.

  4. تحديث ourAnimals الصفيف للاحتفاظ 7 ب "أعمدة" البيانات لكل بدلا من 6.

    يعرض السطر التالي التعليمات البرمجية المحدثة:

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

    قمت بتوسيع ourAnimals الصفيف لدعم البيانات المضافة suggestedDonation .

إضافة suggestedDonation مبالغ إلى بيانات العينة

  1. خذ دقيقة للمراجعة 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;
    
  2. 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;
    
  3. في ملف 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;
    
  4. لاحظ أن 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");.

  1. قبل التعليق رقم 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 يمثل رقما عشريا مناسبا.

  2. تأكد من أن رمز التحقق من الصحة الخاص بك في المكان الصحيح!

    يجب أن يظهر الخطان اللذان أضفهما في التعليمات البرمجية كأعلى سطرين من التعليمات البرمجية التالية:

        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 عن استخدامه في التعليمات البرمجية.

  3. بعد التعليق رقم 2، قم بتعريف decimalDonation، بعد string menuSelection = "";:

    decimal decimalDonation = 0.00m;
    

    وأخيرا أنت مستعد لملء suggestedDonation البيانات لكل أليف.

  4. قبل التعليق رقم 5 مباشرة بعد قوس TryParse الإغلاق الذي } أكملته، أضف التعليمات البرمجية التالية:

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

    لقد استخدمت decimalDonation إصدار بيانات التبرع المقترحة. كما استخدمت استنتاج السلسلة وتنسيق العملة في الإخراج.

  5. خذ دقيقة لمراجعة كيفية تحويل بيانات التبرع المقترحة 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" القائمة إلى البيانات المضافة.

  1. لاحظ التعليمات البرمجية ضمن التعليق #5، لحلقة القائمة داخل case 1.

    تحتاج الحلقة الداخلية "for (int j = 0; j < 6; j++)" التي تطبع سمات الأليفة إلى حساب suggestedDonation البيانات المضافة.

  2. تحديث شرط إنهاء التعليمات البرمجية للحلقة الداخلية. زيادة شرط الخروج من قبل "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. تتوافق التعليمات البرمجية دون أخطاء.

  2. تحديد خيار القائمة 1 يتم عرض جميع معلومات الأليفة:

    • يتضمن الإخراج جميع معلومات الأليفة النموذجية، بما في ذلك: المعرف والأنواع والعمر والكنية والوصف المادي ووصف الشخصية.
    • لكل أليف، يتم عرض التبرع المقترح برمز عملة وبمكانين عشريين من الدقة.

راجع عملك

قم بالبناء والتشغيل لاختبار التعليمات البرمجية. استخدم هذه الخطوات في كل مرة تحتاج فيها إلى اختبار التعليمات البرمجية الخاصة بك.

  1. في قائمة Visual Studio Code File ، حدد Save.

  2. في طريقة عرض EXPLORER، انقر بزر الماوس الأيمن فوق Starter، ثم حدد Open in Integrated Terminal.

    يجب فتح لوحة TERMINAL أسفل منطقة محرر التعليمات البرمجية.

    هناك عدة طرق لفتح المحطة الطرفية المتكاملة ل Visual Studio Code. على سبيل المثال، توفر القائمة العلوية الوصول إلى لوحة TERMINAL من كل من القائمة View وقائمة Terminal . أيضا، تعد اختصارات لوحة المفاتيح التي تفتح لوحة TERMINAL خيارا قيما لزيادة كفاءة الترميز. كل أسلوب مقبول.

  3. لاحظ أن لوحة TERMINAL تتضمن موجه سطر أوامر، وأن المطالبة تعرض مسار المجلد الحالي. على سبيل المثال:

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

    يمكنك استخدام لوحة TERMINAL لتشغيل أوامر واجهة سطر الأوامر (CLI)، مثل dotnet build و dotnet run. يقوم dotnet build الأمر بتجميع التعليمات البرمجية وعرض رسائل الخطأ والتحذير المتعلقة ببناء جملة التعليمات البرمجية.

    هام

    تحتاج إلى التأكد من أن موجه الأوامر الطرفية مفتوح إلى جذر مساحة عمل المشروع. في هذه الحالة، يكون جذر مساحة عمل المشروع هو مجلد Starter، حيث توجد ملفات Starter.csproj و Program.cs. عند تشغيل الأوامر في المحطة الطرفية، تحاول الأوامر تنفيذ إجراءات باستخدام موقع المجلد الحالي. إذا حاولت تشغيل dotnet build الأوامر أو dotnet run من موقع مجلد لا يحتوي على الملفات، فإن الأوامر تنشئ رسائل خطأ.

  4. في موجه الأوامر 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 في كل مرة تحتاج فيها إلى اختبار التعليمات البرمجية الخاصة بك في التدريبات التالية في هذه الوحدة النمطية.

  5. إذا رأيت رسائل خطأ أو تحذير، فستحتاج إلى إصلاحها قبل المتابعة.

    تسرد رسائل الخطأ والتحذير سطر التعليمات البرمجية حيث تم العثور على المشكلة. الرسالة التالية هي مثال على 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 لمساعدتك في عزل مشكلة في التعليمات البرمجية وإصلاحها.

    تجنب الاعتماد على التعليمات البرمجية للحل أثناء تطوير الحل الخاص بك. تذكر أنك تتعلم من الأخطاء وأن كل مطور يقضي بعض الوقت في العثور على الأخطاء وإصلاحها.

  6. اختبر تطبيق وحدة التحكم المحدثة، في إنشاء موجه الأوامر 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 جديد، وإذا كانت لا تزال لديك مشكلات، فتحقق من رمز مجلد الحل لهذا التمرين.

  7. اكتب exit، في قائمة التطبيق، لإنهاء البرنامج ثم أغلق لوحة المحطة الطرفية.