แบบฝึกหัด - เพิ่มการค้นหาสุนัข

เสร็จสมบูรณ์เมื่อ

ในแบบฝึกหัดนี้ คุณเพิ่มคุณลักษณะ "แสดงสุนัขทั้งหมดที่มีลักษณะเฉพาะ" (รายการเมนู #2) ในแอปพลิเคชัน แบบฝึกหัดใช้โครงการโซลูชันจากแบบฝึกหัดก่อนหน้าที่เพิ่ม suggestedDonation ข้อมูล

หมายเหตุ

โครงการนี้เป็นคุณลักษณะ "ผลิตภัณฑ์ที่ทํางานได้น้อยที่สุด" (MVP) ฟีเจอร์ MVP มีจุดมุ่งหมายเพื่อเป็นต้นแบบการทํางานพื้นฐานของคุณลักษณะที่ช่วยให้การส่งมอบทําได้ง่ายและรวดเร็ว MVP ไม่ใช่ผลิตภัณฑ์ขั้นสุดท้ายโดยทั่วไปวัตถุประสงค์คือการช่วยให้คุณทํางานผ่านแนวคิดทดสอบและรวบรวมข้อกําหนดเพิ่มเติม

คุณลักษณะการค้นหาพร้อมท์ผู้ใช้สําหรับคําสําหรับการป้อนคําที่ป้อนเข้าการค้นหาคําเดียว (หรือวลี) ที่อธิบายลักษณะที่ต้องการในสัตว์เลี้ยงเพื่อนํามาใช้ จากนั้นคําอธิบายสําหรับสุนัขที่นํามาใช้จะค้นหารายการที่ตรงกันของผู้ใช้ ข้อมูลเกี่ยวกับสุนัขที่ตรงกันจะถูกส่งออกไปยังคอนโซล ถ้าไม่มีการระบุรายการที่ตรงกัน ข้อความ "ไม่มีสุนัขของเราตรงกัน" จะแสดงขึ้นพร้อมกับคําค้นหาที่ใช้

งานที่คุณทําเสร็จสิ้นในระหว่างแบบฝึกหัดนี้ได้แก่:

  1. รวบรวมข้อมูลป้อนเข้าของผู้ใช้สําหรับคําค้นหาลักษณะสัตว์เลี้ยง
  2. วนรอบผ่านอาร์เรย์สัตว์และระบุ "สุนัข"
  3. ค้นหาคําอธิบายสัตว์เลี้ยงของสุนัขแต่ละรายสําหรับการจับคู่คํา
  4. แสดงสุนัขที่มีคําที่ตรงกัน

ใน Visual Studio Code ให้เปิดไฟล์ Project.cs ที่เสร็จสมบูรณ์จากแบบฝึกหัดก่อนหน้าที่เพิ่มข้อมูลการบริจาคเพื่อเริ่มต้นใช้งาน

  1. ตรวจทานคําสั่งสลับเมนูตามความคิดเห็น #5 ในรหัส Project.cs คุณค้นพบโค้ดที่แสดงข้อความ "ภายใต้การก่อสร้าง"

  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 ค่าไม่ใช่ null และตั้งค่าสตริงเป็นตัวพิมพ์เล็กและตัดแต่งช่องว่างโดยรอบ
    • ถ้า dogCharacteristic มีค่า null จากนั้นรอบ จะทําซ้ําการรวบรวมข้อมูลป้อนเข้า
  4. บันทึกโค้ดของคุณ จากนั้นคอมไพล์โดยใช้ dotnet build ใน TERMINAL (คุณสามารถอ้างอิงถึงขั้นตอนในแบบฝึกหัดก่อนหน้า) และแก้ไขข้อผิดพลาด

  5. เรียกใช้โค้ดโดยใช้dotnet run

  6. เมื่อต้องการทดสอบฟังก์ชันการป้อนข้อมูลของคําค้นหาของแอป ให้ป้อน 2โดยเลือกตัวเลือกเมนู 2สําหรับการค้นหา

  7. กด "Enter" โดยไม่ต้องป้อนข้อมูลที่พร้อมท์ "ป้อนสุนัขที่ต้องการเพื่อค้นหา" โปรแกรมควรกลับไปยังพร้อมท์Enter one desired dog characteristics to search for

  8. โปรแกรมควรกลับไปยังพร้อมท์จนกว่าจะป้อนอักขระ

  9. ที่พร้อมท์ ให้ทดสอบรายการคําค้นหาด้วย golden เป็นรายการของคุณ โปรแกรมควรกลับไปยังเมนูโดยไม่มีข้อผิดพลาด

  10. ที่เมนู พิมพ์ "ออก" เพื่อออกจากโปรแกรม

ระบุว่าสัตว์ตัวใดเป็นสุนัข

ในตอนนี้ คุณเพิ่มคุณลักษณะเพื่อค้นหาโดยใช้การป้อนข้อมูล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 จัดเก็บ "สุนัข" เป็นค่า รหัสจะย้ายไปยังวงเล็บของคําสั่ง if ที่การค้นหาคําอธิบายรวมสามารถเกิดขึ้นได้

  3. คอมไพล์โค้ดของคุณโดยใช้ dotnet build และแก้ไขข้อผิดพลาดใด ๆ

ค้นหาข้อมูลคําอธิบายรวมของสุนัข

โค้ดก่อนหน้านี้ช่วยให้แน่ใจว่าคุณค้นหาเฉพาะคําอธิบายสุนัขเท่านั้น ตอนนี้คุณต้องค้นหาคําอธิบายสุนัขและส่งออกข้อมูลเกี่ยวกับรายการที่ตรงกัน

ในขณะที่คิดเกี่ยวกับคําอธิบาย คุณตระหนักว่ามีสองคําอธิบาย animalPhysicalDescription และanimalPersonalityDescription; ทีมกล่าวถึงฟังก์ชันการทํางานและตัดสินใจว่าคําอธิบายรวมกันเหมาะสมสําหรับการค้นหา

หมายเหตุ

นักพัฒนาบางคนอ้างถึงการเพิ่มข้อกําหนดในระหว่างการพัฒนาเป็น "ขอบเขตที่คืบ" แม้ว่าการรวมคําอธิบายจะใช้งานไม่ได้มากแต่ก็ยังคงเพิ่มเวลาและความซับซ้อน ด้วยเหตุผลนี้ คุณควรแจ้งให้ทีมทราบว่าข้อกําหนดที่เพิ่มเข้ามามักจะหน่วงเวลาการเสร็จสิ้นโครงการ

คุณจําเป็นต้องประกาศสตริงdogDescriptionเพื่อเก็บข้อมูลรวมที่มาจาก animalPhysicalDescription และanimalPersonalityDescription;

  1. ประกาศ dogDescription ก่อนแสดงความคิดเห็น #6 ด้วยโค้ดต่อไปนี้:

    string dogDescription = "";
    

    ตอนนี้ใช้สตริงที่ dogDescription ประกาศก่อนหน้านี้และเติมมันด้วยคําอธิบายทางกายภาพและบุคลิกภาพสําหรับสัตว์แต่ละตัว

  2. เติมdogDescriptionตัวแปรด้วยค่า สําหรับ animalPhysicalDescription และanimalPersonalityDescription;

    เพิ่มโค้ดต่อไปนี้หลังจากข้อคิดเห็น # 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 คําสั่งพบรายการที่ตรงกันสําหรับ dogCharacteristic ใน dogDescription ข้อความเกี่ยวกับการจับคู่สุนัข และคําอธิบายจะถูกส่งออกไปยังคอนโซล คุณยังจําเป็นต้องระบุข้อความ "ไม่พบรายการที่ตรงกัน"

  2. เพิ่มรหัส noMatchesDog = true:

    เพิ่มโค้ดต่อไปนี้ก่อนแสดงความคิดเห็น #6:

    bool noMatchesDog = true;
    

    ในตอนนี้คุณสามารถติดตามได้เมื่อไม่พบรายการที่ตรงกันสําหรับตัวแปรการติดตามนี้ เมื่อค่าเริ่มต้นถูกตั้งค่า true เป็น หมายความว่า "เป็นความจริงที่ว่าไม่มีสุนัขตรงกับการค้นหา" ตอนนี้ เมื่อพบสุนัข คุณสามารถ "พลิก" จาก noMatchesDogtrue ถึง 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

    หากมีข้อผิดพลาดที่คุณจําเป็นต้องอ่านข้อความแสดงข้อผิดพลาด ให้เกิดปัญหาในการถ่ายภาพและแก้ไขหรือตรวจสอบรหัสโซลูชันในโฟลเดอร์ "Final"

  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ที่เมนูแอป เพื่อจบโปรแกรมและปิดแผงเทอร์มินัล