محتوى الدرس : في الدروس السابقة، بنينا نظام إدارة طلاب، لكن بمجرد إغلاق البرنامج تضيع كل البيانات! اليوم سنتعلم كيف نحول “كائنات الطلاب” إلى نصوص تُحفظ في ملف خارجي، وكيف نسترجعها عند تشغيل البرنامج مرة أخرى. هذا هو الفرق بين “تطبيق تجريبي” و”منتج حقيقي”.
الكود البرمجي (قابل للنسخ):
:class Student
:def __init__(self, name, grade)
self.name = name
self.grade = grade
# دالة لتحويل بيانات الطالب إلى سطر نصي لحفظه
:def to_string(self)
return f”{self.name},{self.grade}\n”
# 1. إنشاء طلاب
(“ميمون”, 98)s1 = Student
(“ياسين”, 85) s2 = Student
# 2. حفظ الطلاب في ملف (Database مصغرة)
:with open(“students_db.txt”, “a”, encoding=”utf-8″) as file
file.write(s1.to_string())
file.write(s2.to_string())
(” ! تم حفظ بيانات الطلاب في الملف بنجاح✅”)print
# 3. قراءة البيانات وعرضها
("--- البيانات المسترجعة من الملف ---n\")print
:with open("students_db.txt", "r", encoding="utf-8") as file
:for line in file
=name, grade
(",") line.strip().split
("{grade}: الدرجة | {name}:الطالب "f)print
شرح الخطوات (للنسخ تحت الكود):
:()to_stringدالة قمنا بابتكارها لتحويل خصائص الكائن إلى نص مفصول بفاصلة (CSV Format) لسهولة حفظه.
‘:a’ (Append) استخدمنا وضع الإضافة حتى لا نمسح الطلاب السابقين عند إضافة طالب جديد.
:()strip دالة تنظف السطر من أي مسافات أو أسطر زائدة عند القراءة.
:(“,”) split تقص السطر عند الفاصلة لتعيد لنا الاسم والدرجة كمتغيرات منفصلة.
💡 رسالة تحفيزية من أكاديمية قياوي:
“بقدرتك على حفظ البيانات واسترجاعها، أنت الآن تضع حجر الأساس لبناء أنظمة المحاسبة، المواقع الإلكترونية، وقواعد البيانات. البيانات هي نفط العصر الحديث، وأنت الآن تعلمت كيف تستخرجها وتخزنها!”
🎯 التحدي التطبيقي (الدرس 25):
حاول إضافة ميزة “البحث”: اطلب من المستخدم إدخال اسم طالب، واجعل البرنامج يفتح الملف ويبحث عن هذا الاسم ويطبع درجته فقط.