پروژه: سیستم مدیریت وظایف با ساختار داده
پروژه عملی: ساخت سیستم مدیریت وظایف با ترکیب جدول هش، صف اولویتدار (هیپ) و مرتبسازی — همه آموختههای دوره
معرفی پروژه
در این پروژه نهایی، یک سیستم مدیریت وظایف (Task Manager) میسازیم که چند ساختار داده را با هم ترکیب میکند — درست مثل سیستمهای واقعی:
- جدول هش: دسترسی سریع به وظیفه با شناسه
- هیپ (صف اولویتدار): استخراج فوریترین وظیفه
- مرتبسازی: گزارش وظایف بر اساس مهلت/اولویت
- پشته: تاریخچه عملیات برای Undo
نیازمندیهای سیستم
- افزودن وظیفه با (عنوان، اولویت، مهلت)
- دریافت فوریترین وظیفه (کمترین اولویت عددی)
- جستجوی سریع وظیفه با شناسه
- گزارش وظایف مرتب بر اساس مهلت
- Undo آخرین عملیات
طراحی ساختارها
| نیاز | ساختار | پیچیدگی |
|---|---|---|
| جستجو با شناسه | جدول هش (dict) | O(1) |
| فوریترین وظیفه | هیپ مین | O(log n) |
| گزارش مرتب | مرتبسازی | O(n log n) |
| Undo | پشته | O(1) |
نکات طراحی
- هر وظیفه شناسه یکتا دارد (شمارنده خودکار)
- هیپ روی (اولویت، شناسه) کار میکند — شناسه برای شکست تساوی
- هنگام حذف از هیپ، از dict هم حذف میکنیم (همگامسازی!)
- برای Undo، نوع عملیات + داده لازم ذخیره میشود
تمرین برای شما
- قابلیت «ویرایش وظیفه» اضافه کنید (با Undo)
- گزارش «وظایف سرسیدشده» بسازید
- دستهبندی وظایف با جدول هش اضافه کنید
- ذخیره و بارگذاری از JSON پیاده کنید
نکته: در دنیای واقعی همین الگوست! سیستمهای صف کار (Job Queue)، زمانبند سیستمعامل و مدیریت صف پیام همگی ترکیب همین ساختارها هستند.
جمعبندی
- مسئله واقعی = ترکیب چند ساختار داده
- هر عملیات با ساختار بهینهاش: هش برای جستجو، هیپ برای اولویت، پشته برای Undo
- همگامسازی بین ساختارها، چالش اصلی طراحی است
این مبحث بخشی از دوره آموزش کامل ساختار داده و الگوریتم است.