Thuta Learning
ရှာဖွေရန်
ProjectsProgrammingbeginner

Project: Contact Book – Part 2 (Search + Update + Delete)

စိတ်လျှော့ပါ။ ဒီခန်းကို စာအုပ်လိုမဟုတ်ဘဲ စကားပြောသလိုပဲ၊ နားလည်လွယ်အောင် ရှင်းပါမယ်။

ဒီခန်းပြီးရင် ဘာတတ်သွားမလဲ

  • Project: Contact Book – Part 2 (Search + Update + Delete) ကို လက်တွေ့ project ထဲမှာ အသုံးချတတ်မယ်
  • ကိုယ်တိုင် code ရေးပြီး run ကြည့်တတ်မယ်
  • Project တစ်ခုလုံးကို အဆင့်လိုက် ဆောက်တတ်မယ်

ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်

Part 1 မှာ Add နဲ့ Show All ကို ရေးထားပြီးပါပြီ၊ Part 2 မှာတော့ Contact Book ကို ပိုအသုံးဝင်အောင် Search, Update, Delete features တွေ ထည့်သွားမှာပါ။ Intermediate/Advanced chapter က LINQ (Where, FirstOrDefault) နဲ့ List methods တွေကို ဒီနေရာမှာ လက်တွေ့ အသုံးချရမှာပါ။ Name အလိုက် search လုပ်တာနဲ့ contact တစ်ခုချင်းစီရဲ့ information ကို update/delete လုပ်တာက real-world app တွေမှာ အရေးကြီးဆုံး CRUD operations တွေပါ။ ဒီ part ကို ပြီးရင် Contact Book က functional application တစ်ခု အနေနဲ့ တကယ်အလုပ်လုပ်နိုင်ပါပြီ။

လက်တွေ့ ဆောက်ကြည့်မယ်

ContactManager class ထဲမှာ FindByName(string name) method ကို LINQ ရဲ့ FirstOrDefault() သုံးပြီး ရေးပါ။ UpdateContact(string name, string newPhone, string newEmail) method ထည့်ပြီး FindByName() နဲ့ ရှာတွေ့တဲ့ contact ရဲ့ Phone/Email ကို ပြင်ပါ။ DeleteContact(string name) method ထည့်ပြီး Remove() method သုံးကာ contact ကို list ထဲကနေ ဖျက်ပါ။ Menu ထဲမှာ "3. Search", "4. Update", "5. Delete" options တွေ ထပ်ထည့်ပြီး user input နဲ့ ချိတ်ပါ။ Contact မတွေ့ရင် "Contact not found" message ပြပေးပါ။

Code နမူနာ

csharp
using System.Linq;

class ContactManager
{
    private List<Contact> contacts = new List<Contact>();

    public void AddContact(Contact c) => contacts.Add(c);

    public Contact FindByName(string name)
    {
        return contacts.FirstOrDefault(c => c.Name.ToLower() == name.ToLower());
    }

    public bool UpdateContact(string name, string newPhone, string newEmail)
    {
        Contact c = FindByName(name);
        if (c == null) return false;

        c.Phone = newPhone;
        c.Email = newEmail;
        return true;
    }

    public bool DeleteContact(string name)
    {
        Contact c = FindByName(name);
        if (c == null) return false;

        contacts.Remove(c);
        return true;
    }

    public void ShowAll()
    {
        foreach (Contact c in contacts)
            Console.WriteLine($"{c.Name} | {c.Phone} | {c.Email}");
    }
}

// Menu ထဲက Search branch ဥပမာ
// else if (choice == "3")
// {
//     Console.Write("Search name: ");
//     string searchName = Console.ReadLine();
//     Contact found = manager.FindByName(searchName);
//     if (found != null)
//         Console.WriteLine($"Found: {found.Name} | {found.Phone} | {found.Email}");
//     else
//         Console.WriteLine("Contact not found");
// }
You should see
Contact name ဖြင့် ရှာနိုင်၊ ရှိပြီးသား contact ရဲ့ phone/email ကို ပြင်နိုင်၊ လိုအပ်ရင် contact ကို ဖျက်နိုင်တဲ့ app ဖြစ်လာမှာပါ။

၅ မိနစ် စမ်းကြည့်

SearchByPhone(string phone) method တစ်ခု ထပ်ရေးပြီး, phone number အပိုင်းအစနဲ့ ("09" လို) match ဖြစ်တဲ့ contacts အားလုံးကို LINQ Where() နဲ့ ပြန်ပေးအောင် လုပ်ကြည့်ပါ။

သတိလေးတစ်ချက်

LINQ FirstOrDefault() က result မတွေ့ရင် null ပြန်ပေးတာကို သတိထားပြီး အမြဲ null check လုပ်ပါ။

ဒီနေရာမှာ လူအများမှားတတ်တယ်

  • String comparison လုပ်တဲ့အခါ case sensitivity ကို ထည့်မစဉ်းစားဘဲ Name == name လိုမျိုး တိုက်ရိုက်နှိုင်းယှဉ်ပြီး "Contact not found" ဖြစ်တတ်တာ
  • FindByName() က null ပြန်လာနိုင်တာကို မစစ်ဘဲ Update/Delete ထဲမှာ တိုက်ရိုက် property access လုပ်လိုက်လို့ NullReferenceException တက်တတ်တာ

အခု ကိုယ်တိုင် စမ်းကြည့်

SearchByPhone(string phone) method တစ်ခု ထပ်ရေးပြီး, phone number အပိုင်းအစနဲ့ ("09" လို) match ဖြစ်တဲ့ contacts အားလုံးကို LINQ Where() နဲ့ ပြန်ပေးအောင် လုပ်ကြည့်ပါ။

You'll know it worked when: Contact name ဖြင့် ရှာနိုင်၊ ရှိပြီးသား contact ရဲ့ phone/email ကို ပြင်နိုင်၊ လိုအပ်ရင် contact ကို ဖျက်နိုင်တဲ့ app ဖြစ်လာမှာပါ။

Project: Contact Book – Part 2 (Search + Update + Delete) | Thuta Learning