แบบฝึกหัด - เพิ่มการค้นหาสุนัข
ในแบบฝึกหัดนี้ คุณเพิ่มคุณลักษณะ "แสดงสุนัขทั้งหมดที่มีลักษณะเฉพาะ" (รายการเมนู #2) ในแอปพลิเคชัน แบบฝึกหัดใช้โครงการโซลูชันจากแบบฝึกหัดก่อนหน้าที่เพิ่ม suggestedDonation ข้อมูล
หมายเหตุ
โครงการนี้เป็นคุณลักษณะ "ผลิตภัณฑ์ที่ทํางานได้น้อยที่สุด" (MVP) ฟีเจอร์ MVP มีจุดมุ่งหมายเพื่อเป็นต้นแบบการทํางานพื้นฐานของคุณลักษณะที่ช่วยให้การส่งมอบทําได้ง่ายและรวดเร็ว MVP ไม่ใช่ผลิตภัณฑ์ขั้นสุดท้ายโดยทั่วไปวัตถุประสงค์คือการช่วยให้คุณทํางานผ่านแนวคิดทดสอบและรวบรวมข้อกําหนดเพิ่มเติม
คุณลักษณะการค้นหาพร้อมท์ผู้ใช้สําหรับคําสําหรับการป้อนคําที่ป้อนเข้าการค้นหาคําเดียว (หรือวลี) ที่อธิบายลักษณะที่ต้องการในสัตว์เลี้ยงเพื่อนํามาใช้ จากนั้นคําอธิบายสําหรับสุนัขที่นํามาใช้จะค้นหารายการที่ตรงกันของผู้ใช้ ข้อมูลเกี่ยวกับสุนัขที่ตรงกันจะถูกส่งออกไปยังคอนโซล ถ้าไม่มีการระบุรายการที่ตรงกัน ข้อความ "ไม่มีสุนัขของเราตรงกัน" จะแสดงขึ้นพร้อมกับคําค้นหาที่ใช้
งานที่คุณทําเสร็จสิ้นในระหว่างแบบฝึกหัดนี้ได้แก่:
- รวบรวมข้อมูลป้อนเข้าของผู้ใช้สําหรับคําค้นหาลักษณะสัตว์เลี้ยง
- วนรอบผ่านอาร์เรย์สัตว์และระบุ "สุนัข"
- ค้นหาคําอธิบายสัตว์เลี้ยงของสุนัขแต่ละรายสําหรับการจับคู่คํา
- แสดงสุนัขที่มีคําที่ตรงกัน
ใน Visual Studio Code ให้เปิดไฟล์ Project.cs ที่เสร็จสมบูรณ์จากแบบฝึกหัดก่อนหน้าที่เพิ่มข้อมูลการบริจาคเพื่อเริ่มต้นใช้งาน
รวบรวมอินพุตผู้ใช้สําหรับการค้นหาลักษณะสัตว์เลี้ยง
ตรวจทานคําสั่งสลับเมนูตามความคิดเห็น #5 ในรหัส Project.cs คุณค้นพบโค้ดที่แสดงข้อความ "ภายใต้การก่อสร้าง"
ลบรหัส
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;เพิ่มรหัสเพื่อรวบรวมการป้อนข้อมูลของผู้ใช้สําหรับ
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 จากนั้นรอบ จะทําซ้ําการรวบรวมข้อมูลป้อนเข้า
- รหัสเริ่มต้นด้วยการประกาศ
บันทึกโค้ดของคุณ จากนั้นคอมไพล์โดยใช้
dotnet buildใน TERMINAL (คุณสามารถอ้างอิงถึงขั้นตอนในแบบฝึกหัดก่อนหน้า) และแก้ไขข้อผิดพลาดเรียกใช้โค้ดโดยใช้
dotnet runเมื่อต้องการทดสอบฟังก์ชันการป้อนข้อมูลของคําค้นหาของแอป ให้ป้อน
2โดยเลือกตัวเลือกเมนู2สําหรับการค้นหากด "Enter" โดยไม่ต้องป้อนข้อมูลที่พร้อมท์ "ป้อนสุนัขที่ต้องการเพื่อค้นหา" โปรแกรมควรกลับไปยังพร้อมท์
Enter one desired dog characteristics to search forโปรแกรมควรกลับไปยังพร้อมท์จนกว่าจะป้อนอักขระ
ที่พร้อมท์ ให้ทดสอบรายการคําค้นหาด้วย
goldenเป็นรายการของคุณ โปรแกรมควรกลับไปยังเมนูโดยไม่มีข้อผิดพลาดที่เมนู พิมพ์ "ออก" เพื่อออกจากโปรแกรม
ระบุว่าสัตว์ตัวใดเป็นสุนัข
ในตอนนี้ คุณเพิ่มคุณลักษณะเพื่อค้นหาโดยใช้การป้อนข้อมูลdogCharacteristicของผู้ใช้ภายในคําอธิบายสุนัขตามโค้ดก่อนหน้าภายใต้case "2" แต่ก่อนอื่นคุณต้องระบุสุนัข
ที่ส่วนท้ายของ
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 } }ใช้เวลาสักครู่ในการตรวจสอบรอบที่เพิ่มไปยังจุดสิ้นสุดของ
case "2":รหัสตัวกรองรหัสสําหรับ "สุนัข" โดยใช้
ourAnimals[i,1]ที่เก็บข้อมูลanimalSpeciesหากanimalSpeciesจัดเก็บ "สุนัข" เป็นค่า รหัสจะย้ายไปยังวงเล็บของคําสั่ง if ที่การค้นหาคําอธิบายรวมสามารถเกิดขึ้นได้คอมไพล์โค้ดของคุณโดยใช้
dotnet buildและแก้ไขข้อผิดพลาดใด ๆ
ค้นหาข้อมูลคําอธิบายรวมของสุนัข
โค้ดก่อนหน้านี้ช่วยให้แน่ใจว่าคุณค้นหาเฉพาะคําอธิบายสุนัขเท่านั้น ตอนนี้คุณต้องค้นหาคําอธิบายสุนัขและส่งออกข้อมูลเกี่ยวกับรายการที่ตรงกัน
ในขณะที่คิดเกี่ยวกับคําอธิบาย คุณตระหนักว่ามีสองคําอธิบาย animalPhysicalDescription และanimalPersonalityDescription; ทีมกล่าวถึงฟังก์ชันการทํางานและตัดสินใจว่าคําอธิบายรวมกันเหมาะสมสําหรับการค้นหา
หมายเหตุ
นักพัฒนาบางคนอ้างถึงการเพิ่มข้อกําหนดในระหว่างการพัฒนาเป็น "ขอบเขตที่คืบ" แม้ว่าการรวมคําอธิบายจะใช้งานไม่ได้มากแต่ก็ยังคงเพิ่มเวลาและความซับซ้อน ด้วยเหตุผลนี้ คุณควรแจ้งให้ทีมทราบว่าข้อกําหนดที่เพิ่มเข้ามามักจะหน่วงเวลาการเสร็จสิ้นโครงการ
รวมคําอธิบายของสุนัขเพื่อให้ง่ายต่อการค้นหา
คุณจําเป็นต้องประกาศสตริงdogDescriptionเพื่อเก็บข้อมูลรวมที่มาจาก animalPhysicalDescription และanimalPersonalityDescription;
ประกาศ
dogDescriptionก่อนแสดงความคิดเห็น #6 ด้วยโค้ดต่อไปนี้:string dogDescription = "";ตอนนี้ใช้สตริงที่
dogDescriptionประกาศก่อนหน้านี้และเติมมันด้วยคําอธิบายทางกายภาพและบุคลิกภาพสําหรับสัตว์แต่ละตัวเติม
dogDescriptionตัวแปรด้วยค่า สําหรับanimalPhysicalDescriptionและanimalPersonalityDescription;เพิ่มโค้ดต่อไปนี้หลังจากข้อคิดเห็น # 7:
dogDescription = ourAnimals[i, 4] + "\n" + ourAnimals[i, 5];
ค้นหาคําอธิบายรวมของสุนัขและจอแสดงผล
ในตอนนี้ คุณเพิ่มการค้นหาdogCharacteristicในข้อมูลรวมของdogDescription คุณจําเป็นต้องเพิ่มคําสั่ง if เพื่อตรวจสอบว่าคุณมีรายการที่ตรงกันสําหรับการค้นหาสําหรับสุนัขแต่ละตัวหรือไม่
อัปเดตโค้ดต่อไปนี้แสดงความคิดเห็น #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ข้อความเกี่ยวกับการจับคู่สุนัข และคําอธิบายจะถูกส่งออกไปยังคอนโซล คุณยังจําเป็นต้องระบุข้อความ "ไม่พบรายการที่ตรงกัน"เพิ่มรหัส
noMatchesDog = true:เพิ่มโค้ดต่อไปนี้ก่อนแสดงความคิดเห็น #6:
bool noMatchesDog = true;ในตอนนี้คุณสามารถติดตามได้เมื่อไม่พบรายการที่ตรงกันสําหรับตัวแปรการติดตามนี้ เมื่อค่าเริ่มต้นถูกตั้งค่า
trueเป็น หมายความว่า "เป็นความจริงที่ว่าไม่มีสุนัขตรงกับการค้นหา" ตอนนี้ เมื่อพบสุนัข คุณสามารถ "พลิก" จากnoMatchesDogtrueถึงfalseในวงเล็บของ
if (dogDescription.Contains(dogCharacteristic))คําสั่ง ให้เพิ่มโค้ดต่อไปนี้:noMatchesDog = false;ตรวจสอบว่าใส่โค้ดของคุณภายในวงเล็บของ
if (dogDescription.Contains(dogCharacteristic))อย่างถูกต้องคุณควรมีโค้ดต่อไปนี้:
if (dogDescription.Contains(dogCharacteristic)) { Console.WriteLine($"\nOur dog {ourAnimals[i, 3]} is a match!"); Console.WriteLine(dogDescription); noMatchesDog = false; }ในตอนท้าย คุณจําเป็นต้องสร้างโค้ดที่ตัดสินใจว่า ควรเขียนข้อความ "ไม่พบรายการที่ตรงกัน" ไปยังคอนโซลหรือไม่
ที่ส่วนท้ายของ
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); }ตัวอย่างรหัสนี้เป็นรหัสสุดท้ายสําหรับแบบฝึกหัดนี้!
บันทึกการเปลี่ยนแปลงของคุณ
ตรวจสอบงานของคุณ
ที่พร้อมท์คําสั่ง TERMINAL เพื่อสร้างรหัสโครงการของคุณ ให้ป้อนคําสั่งต่อไปนี้:
dotnet buildหากมีข้อผิดพลาดที่คุณจําเป็นต้องอ่านข้อความแสดงข้อผิดพลาด ให้เกิดปัญหาในการถ่ายภาพและแก้ไขหรือตรวจสอบรหัสโซลูชันในโฟลเดอร์ "Final"
เรียกใช้รหัสโครงการของคุณในเทอร์มินัลด้วย
dotnet run
เมื่อเรียกใช้โค้ดแล้ว ระบบจะแสดงรายการเมนูสองรายการ
ที่เมนู ให้ป้อน "
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ถ้าทุกอย่างทํางานตามที่คาดไว้ในทั้งสองขั้นตอนขอแสดงความยินดี! มิฉะนั้น ให้ค้นหาข้อผิดพลาดโดยตรวจสอบขั้นตอนแบบทดสอบ ถ้าจําเป็น ให้เริ่มต้นใหม่หรือตรวจสอบรหัสโฟลเดอร์ขั้นสุดท้ายสําหรับรหัสโซลูชันสําหรับแบบฝึกหัดนี้
พิมพ์
exitที่เมนูแอป เพื่อจบโปรแกรมและปิดแผงเทอร์มินัล