NahdaAIنهضة
Python • المستوى الرابع • الدرس 2

المشروع التطبيقي الشامل — أداة إدارة المهام وتحليل البيانات (Python CLI Project)

العودة لفهرس المستوى

أهداف المشروع الشامل

  • دمج مفاهيم Python المكتسبة: OOP، Dictionaries، Loops، و Functions.
  • بناء أداة حقيقية قابلة للاستخدام ومعالجة الإحصائيات البرمجية بمرونة.
  • تطبيق مبادئ OOP عبر تصميم Class بأساليب CRUD كاملة.
  • استخدام list comprehension و sum() لتوليد إحصائيات ديناميكية.

1. بنية Class إدارة المهام

يُمكّنك السكربت من حفظ قائمة المهام، تغيير حالة الإنجاز ديناميكياً، واستخراج نواتج وتحليلات الأداء عبر الحلقات والدوال التجميعية بأسلوب نقي وسريع.

python
class TaskManager:
    def __init__(self):
        self.tasks = []  # قائمة لتخزين جميع المهام

    def add_task(self, title, category):
        # إنشاء قاموس يمثل المهمة الجديدة
        task = {
            "id": len(self.tasks) + 1,
            "title": title,
            "category": category,
            "completed": False
        }
        self.tasks.append(task)
        return f"تمت إضافة المهمة: '{title}'"

    def complete_task(self, task_id):
        # البحث عن المهمة بواسطة المعرّف
        for t in self.tasks:
            if t["id"] == task_id:
                t["completed"] = True
                return f"تم إنجاز المهمة رقم {task_id}"
        return "المهمة غير موجودة!"

2. أهم المفاهيم البرمجية المستخدمة

Class & Objects
class TaskManager:
    def __init__(self):
        self.tasks = []
List Comprehension
[t for t in self.tasks
 if t['category'] == 'X']
sum() & Generator
sum(1 for t in self.tasks
    if t['completed'])
f-strings
f"الإجمالي: {total}\n"
f"نسبة: {progress:.1f}%"

3. تدفق تنفيذ البرنامج

1.إنشاء كائن manager من Class TaskManager.
2.إضافة المهام عبر add_task() — كل مهمة تحصل على ID تلقائي.
3.تحديث حالة الإنجاز عبر complete_task(id).
4.استخراج الإحصائيات عبر get_stats() — إجمالي، منجز، معلّق، ونسبة التقدم.
التطبيق العملي المباشر

تحدي إتمام المسار النهائي

قم بالتعديل على الكود بداخل المحرر أدناه لتطبيق المتطلبات التالية:

  1. أضف مهمة ثالثة جديدة باستخدام add_task().
  2. أضف دالة remove_task(task_id) لحذف مهمة بواسطة المعرّف.
  3. أضف دالة get_tasks_by_category(category) تُرجع مهام فئة معينة باستخدام list comprehension.
  4. حسّن دالة get_stats() لعرض نسبة التقدم progress.
  5. اطبع جميع الأقسام الخمسة باستخدام print().
⏳ جارٍ تحميل المحرر التفاعلي...