Chapter 2: Design a Library Management System (စာကြည့်တိုက်စနစ်)
အေ သင်ခန်းစာမှာ Data Structures (Array, Stack, Queue, Hash Map) တိကို လက်တွိ့ ဇာနီရာမှာ ရွီးချယ်သုံးရဖို့လဲ ဆိုစွာ လေ့လာကတ်ပါဖို့။
၁။ လိုအပ်ချက်များ (Requirements)
- စာအုပ်နာမည် ရိုက်ရှာကေ ချက်ချင်း တွိရပါဖို့။
- စာအုပ်ငှားချင်ရေလူတိကို အလှည့်ကျ စောင့်ခိုင်းရပါဖို့။
- စာအုပ်ပြန်အပ်ကေ လှည်း (Cart) မာ တင်ထားမေ၊ စာကြည့်တိုက်မှူးက နောက်ဆုံးအပ်စွာကို အရင်ယူပနာ စင်ထက်ပြန်တင်မေ။
၂။ Data Structure ရွီးချယ်ခြင်း
ပြဿနာ ၁: စာအုပ်ရှာဖွီခြင်း (Searching)
စာအုပ်ပေါင်း ၁ သိန်းဟိရေ။ "Harry Potter" လို့ ရှာလိုက်စွာနန့် ဇာစင်မှာဟိလဲ ချက်ချင်း သိချင်ပါရေ။
- Option A (Array): တစ်အုပ်ချင်းစီ လိုက်ရှာမေ (ကြာမေ)။
- Option B (Hash Map):
Titleကို Key လုပ်ပနာLocationကို Value ထားမေ။Map["Harry Potter"]ဆိုစာနန့် ချက်ချင်း အဖြေထွက်ဖို့။ - Decision: Hash Map ကို သုံးသင့်ပါရေ။ (အယင်ဆုံးမို့လို့ပါ)
ပြဿနာ ၂: စာအုပ်ငှားဖို့ စောင့်ခြင်း (Waiting List)
စာအုပ်တစ်အုပ်တည်းကို လူ ၅ ယောက်လောက် လိုချင်နီကတ်ပါရေ။
- စည်းကမ်း: အရင်လာရေလူ အရင်ရရဖို့ (First Come, First Served).
- Decision: Queue (FIFO) ကို သုံးရပါဖို့။ လူ A လာကေ
Enqueue(A), လူ B လာကေEnqueue(B)။ စာအုပ်အားစာနန့်Dequeue()လုပ်ပနာ A ကို ပီးလိုက်မေ။
ပြဿနာ ၃: စာအုပ်ပြန်စီခြင်း (Restocking)
ပြန်အပ်ထားရေ စာအုပ်ပုံ (Return Pile) ကို လှည်းပေါ်တင်ထားရေ။
- သဘောသဘာဝ: စင်ထက်ကို နောက်ဆုံးမှ တင်လိုက်တေ စာအုပ်က အထက်ဆုံးမှာ ရောက်နီမေ။ ယူကေ ထိပ်ဆုံးက စာကိုရာ အရင်ယူလို့ရမေ။
- Decision: Stack (LIFO) သဘောတရား ဖြစ်နီပါရေ။ နောက်ဆုံးအပ်တေစာအုပ် (Last In) ကို အရင်ယူပနာ (First Out) စင်ပေါ်တင်ရပါဖို့။
၃။ System Visualization
[ Library System ]
|
|-- (1) Searching: Hash Map { "Title" : "Shelf A-1" }
|
|-- (2) Reservation: Queue [ User 1 -> User 2 -> User 3 ]
|
|-- (3) Returns: Stack [ Book C (Top) | Book B | Book A (Bottom) ]
သင်ခန်းစာ အကျဉ်းချုပ်
- Hash Map: အယင်ဆုံး ရှာဖွေဖို့ သုံးသည်။
- Queue: အလှည့်ကျ စနစ်တိ (First-come-first-serve) အတွက် သုံးသည်။
- Stack: နောက်ဆုံးလုပ်စာ အယင်ပြန်ဖျက်/ပြန်ယူ (Last-in-first-out) အတွက် သုံးသည်။
လေ့ကျင့်ခန်း (Exercises)
- Undo Feature: စာကြည့်တိုက်မှူးက စာအုပ်အချက်အလက်ကို ပြင်နီယင်း မှားဖျက်မိလားရေ။ "Undo" နှိပ်ပနာ အရင်အခြီအနီကို ပြန်လားချင်ကေ ဇာ Data Structure က အသင့်တော်ဆုံးလဲ? (Hint: Stack vs Queue)
- Books by Author: စာရွီးဆရာ နာမည်တူ စာအုပ်တိကို စုထားချင်ရေ။ Array နန့် သိမ်းစွာ ကောင်းလား၊ Linked List နန့် ချိတ်ထားစွာ ကောင်းလား?