تمرين - إضافة بحث

مكتمل

في هذا التمرين، يمكنك إضافة الميزة "عرض جميع بخاصية محددة" (عنصر القائمة #2) إلى التطبيق. يستخدم التمرين مشروع الحل من التمرين السابق الذي أضاف suggestedDonation البيانات.

إشعار

هذا المشروع هو ميزة "الحد الأدنى من المنتجات القابلة للتطبيق" (MVP). تهدف ميزات MVP إلى أن تكون نموذجا أوليا أساسيا للعمل لميزة تتيح التسليم السريع والسهل. لا يكون MVP عادة منتجا نهائيا، والغرض منه هو مساعدتك في العمل من خلال فكرة واختبارها وجمع المزيد من المتطلبات.

تطالب ميزة البحث المستخدم بمصطلح إدخال بحث واحد (أو عبارة) يصف خاصية مطلوبة في أليف لاعتماده. بعد ذلك، يتم البحث عن أوصاف القابلة للتبني عن التطابقات الدقيقة لإدخال المستخدم. يتم إخراج معلومات حول التي تتطابق مع وحدة التحكم. إذا لم يتم تحديد أي تطابقات، عرض رسالة "لا شيء من كلابنا متطابقة" مع مصطلح البحث المستخدم.

المهام التي تكملها أثناء هذا التمرين هي:

  1. جمع إدخال المستخدم لمصطلح البحث الخاص بالحيوانات الأليفة
  2. حلقة من خلال صفيف وتحديد ""
  3. البحث في وصف كل أليف لكل عن مصطلح مطابق
  4. عرض التي تحتوي على تطابق مصطلح

في Visual Studio Code، افتح ملف Project.cs المكتمل من التمرين السابق الذي أضاف معلومات التبرع للبدء.

  1. راجع عبارة تبديل القائمة التالية للتعليق رقم 5 في التعليمات البرمجية Project.cs. يمكنك اكتشاف التعليمات البرمجية التي تعرض رسالة "UNDER CONSTRUCTION".

  2. احذف التعليمات البرمجية Console.WriteLine("\nUNDER CONSTRUCTION - please check back next month to see progress."); بين case "2": وعبارة Console.WriteLine("Press the Enter key to continue."); بحيث تتطابق التعليمات البرمجية مع النموذج التالي:

    case "2":
        // Display all dogs with a specified characteristic
        Console.WriteLine("Press the Enter key to continue.");
        readResult = Console.ReadLine();
        break; 
    
  3. أضف التعليمات البرمجية لجمع إدخال المستخدم للسلسلة dogCharacteristic . يتطلب جمع الإدخال تكرار حلقي while يستمر في مطالبة المستخدم حتى يرسل إدخالا. يرشد التكرار الحلقي المستخدم إلى Enter one desired dog characteristic to search for. يؤدي إدخال سلسلة فارغة إلى تكرار التكرار الحلقي. ضع التعليمات البرمجية التالية قبل case "2: العبارة break; كما هو موضح:

    case "2":
        // Display all dogs with a specified characteristic
        string dogCharacteristic = "";
    
        while (dogCharacteristic == "")
        {
            // have the user enter physical characteristics to search for
            Console.WriteLine($"\nEnter one desired dog characteristics to search for");
            readResult = Console.ReadLine();
            if (readResult != null)
            {
                dogCharacteristic = readResult.ToLower().Trim();
            }
        } 
        Console.WriteLine("Press the Enter key to continue.");
        readResult = Console.ReadLine();
        break;
    

    راجع التعليمات البرمجية المضافة. تتضمن الميزات الرئيسية للتعليمات البرمجية case "2": ما يلي:

    • تبدأ التعليمات البرمجية بإعلان string dogCharacteristic = ""; سلسلة يتم تحديد نطاقها إلى case "2":. لا يمكنك استخدام dogCharacteristic أي مكان خارج رمز بيان الحالة.
    • بعد Console.ReadLine() جمع إدخال المستخدم لأنه dogCharacteristic يضمن أن القيمة ليست خالية، ويعين السلسلة على أحرف صغيرة ويقتطاع المسافات المحيطة.
    • إذا كانت dogCharacteristic قيمة فارغة، فإن التكرار الحلقي يكرر جمع الإدخال.
  4. احفظ التعليمات البرمجية الخاصة بك، ثم قم بالتحويل البرمجي باستخدام dotnet build في TERMINAL (يمكنك الرجوع إلى الخطوات في التمرين السابق) وإصلاح أي أخطاء.

  5. قم بتشغيل التعليمات البرمجية باستخدام dotnet run.

  6. لاختبار وظيفة إدخال مصطلح البحث للتطبيق، أدخل 2، وحدد خيار 2القائمة ، للبحث.

  7. اضغط على "Enter" دون إدخال البيانات في المطالبة "أدخل خاصية المطلوبة للبحث عن". يجب أن يعود البرنامج إلى المطالبة Enter one desired dog characteristics to search for .

  8. يجب أن يعود البرنامج إلى المطالبة حتى يتم إدخال الأحرف.

  9. في المطالبة، اختبر إدخال مصطلح البحث، مع golden كمدخل. يجب أن يعود البرنامج إلى القائمة دون خطأ.

  10. في القائمة، اكتب "Exit" للخروج من البرنامج.

تحديد التي هي

الآن يمكنك إضافة ميزة للبحث باستخدام إدخال dogCharacteristic المستخدم ضمن أوصاف بعد التعليمات البرمجية السابقة ضمن case "2". لكن أولا عليك التعرف على

  1. في نهاية التعليمات البرمجية case "2" ، قبل التعليمات البرمجية Console.WriteLine("\n\rPress the Enter key to continue");، والتي تكون قبل break;، أضف التعليمات البرمجية التالية:

    // #6 loop through the ourAnimals array to search for matching animals
    for (int i = 0; i < maxPets; i++)
    {
        if (ourAnimals[i, 1].Contains("dog"))
        {
            // #7 Search combined descriptions and report results
        }
    }
    
  2. خذ دقيقة لفحص الحلقة المضافة إلى نهاية التعليمات البرمجية case "2": .

    تقوم التعليمات البرمجية بتصفية "" باستخدام ourAnimals[i,1]، حيث animalSpecies يتم تخزين البيانات. إذا كانت animalSpecies تخزن "dog" كقيمة لها، تنتقل التعليمات البرمجية إلى أقواس عبارة if حيث يمكن أن يحدث البحث عن الأوصاف المجمعة.

  3. قم بتجميع التعليمات البرمجية الخاصة بك باستخدام dotnet build أي أخطاء وإصلاحها.

البحث في معلومات الوصف المجمع للكلاب

تضمن التعليمات البرمجية السابقة البحث في أوصاف فقط. الآن تحتاج إلى البحث في أوصاف ومعلومات الإخراج حول التطابقات.

أثناء التفكير في الأوصاف، تدرك أن هناك وصفين animalPhysicalDescription و animalPersonalityDescription;. يناقش الفريق الوظيفة ويقرر أن الوصف المجمع مناسب للبحث.

إشعار

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

تحتاج إلى الإعلان عن سلسلة، dogDescription للاحتفاظ بالبيانات المجمعة التي نشأت من animalPhysicalDescription و animalPersonalityDescription;.

  1. الإعلان dogDescription قبل التعليق رقم 6 بالتعليمات البرمجية التالية:

    string dogDescription = "";
    

    الآن استخدم السلسلة المعلن عنها dogDescription مسبقا وقم بملئها بالأوصاف المادية والشخصية لكل

  2. قم بتعبئة dogDescription المتغير بقيم و animalPhysicalDescriptionanimalPersonalityDescription;.

    أضف التعليمات البرمجية التالية بعد التعليق رقم 7:

    dogDescription = ourAnimals[i, 4] + "\n" + ourAnimals[i, 5];
    

البحث في الأوصاف المجمعة للكلاب وعرضها

الآن يمكنك إضافة البحث dogCharacteristic عن في البيانات المجمعة من dogDescription. تحتاج إلى إضافة عبارة if لتحديد ما إذا كان لديك تطابق للبحث عن كل.

  1. تحديث التعليمات البرمجية التالية التعليق رقم 7، بعد dogDescription = ourAnimals[i, 4] + "\n" + ourAnimals[i, 5]; مع التعليمات البرمجية:

    if (dogDescription.Contains(dogCharacteristic))
    {
        Console.WriteLine($"\nOur dog {ourAnimals[i, 3]} is a match!");
        Console.WriteLine(dogDescription);
    }
    

    افحص مثال التعليمات البرمجية السابق، عندما تعثر العبارة if على تطابق في dogCharacteristicdogDescription رسالة حول تطابق ويتم إخراج الوصف إلى وحدة التحكم. لا تزال بحاجة إلى حساب رسالة "لم يتم العثور على تطابقات".

  2. أضف التعليمات البرمجية noMatchesDog = true:

    أضف التعليمات البرمجية التالية قبل التعليق #6:

    bool noMatchesDog = true;
    

    الآن يمكنك التعقب عندما لا يتم العثور على أي تطابقات مع متغير التعقب هذا. عندما يتم تعيين الإعداد الافتراضي على true هذا يعني "صحيح أنه لا توجد تطابق للبحث." الآن، عندما يتم العثور على يمكنك "قلب" noMatchesDog من true إلى false

  3. في أقواس العبارة if (dogDescription.Contains(dogCharacteristic)) ، أضف التعليمات البرمجية التالية:

    noMatchesDog = false;
    
  4. راجع أن التعليمات if (dogDescription.Contains(dogCharacteristic)) البرمجية الخاصة بك ضمن أقواس تم إدخالها بشكل صحيح.

    يجب أن يكون لديك التعليمات البرمجية التالية:

        if (dogDescription.Contains(dogCharacteristic))
        {
            Console.WriteLine($"\nOur dog {ourAnimals[i, 3]} is a match!");
            Console.WriteLine(dogDescription);
    
            noMatchesDog = false;
        }
    

    وأخيرا، تحتاج إلى إنشاء تعليمة برمجية تقرر ما إذا كان يجب كتابة رسالة "لم يتم العثور على تطابقات" إلى وحدة التحكم.

  5. في نهاية التعليمات البرمجية case "2" ، قبل التعليمات البرمجية Console.WriteLine("\n\rPress the Enter key to continue");، والتي تكون قبل break;، أضف التعليمات البرمجية التالية:

    if (noMatchesDog)
    {
        Console.WriteLine("None of our dogs are a match found for: " + dogCharacteristic);
    }
    
    

    عينة التعليمات البرمجية هذه هي التعليمات البرمجية النهائية لهذا التمرين!

  6. احفظ تغييراتك.

راجع عملك

  1. في موجه الأوامر TERMINAL، لإنشاء التعليمات البرمجية للمشروع، أدخل الأمر التالي: dotnet build.

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

  2. قم بتشغيل التعليمات البرمجية لمشروعك في المحطة الطرفية باستخدام dotnet run.

بمجرد تشغيل التعليمات البرمجية، يتم عرض عنصري قائمة.

  1. في القائمة، أدخل "2" و"Enter" لاختبار بحث بشكل متكرر.

     - Enter nothing as input to test the null entry behavior
     - Enter "scuba" as input to test the "match not found"
     - Enter "golden" to get two matches
     - Enter "medium" to get one match
    

    إذا كان كل شيء يعمل كما هو متوقع في كلتا الخطوتين، تهانينا! وإلا، ابحث عن الأخطاء عن طريق التحقق من خطوات التمرين. إذا لزم الأمر، ابدأ من جديد أو تحقق من رمز المجلد النهائي للحصول على رمز الحل لهذا التمرين.

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