إدارة الطلاب: إنشاء ملف طالب (ID، اسم، سنة، قسم، مستوى)، تعديل، حذف، عرض السجلات.
إدارة المقررات: رمز المقرر، اسم، عدد وحدات، قائمة شروط سابقة (prereqs)، السعة القصوى، المدرس، جدول (يوم/وقت/قاعت).
تسجيل الطلاب في المقررات: تسجيل/إلغاء تسجيل مع تحقق من السعة والشروط والتصادم في الجدول.
جداول ومحاضرات: عرض جدول طالب ومواعيد المقررات.
حفظ واسترجاع البيانات: تخزين الطلاب والمقررات والتسجيلات في ملفات أو قاعدة بيانات.
تقارير: قائمة المسجلين في مقرر، رصيد الطالب من الوحدات، قائمة المقررات الممتلئة، إلخ.
المتطلبات غير الوظيفية
أداء مناسب لآلاف السجلات (اعتمادًا على طريقة التخزين).
واجهة مستخدم نصية (CLI) كبداية، وإمكانية إضافة واجهة رسومية لاحقًا.
تخزين دائم (ملفات CSV/JSON أو SQLite).
قابلية اختبار وسهولة صيانة (تصميم كائني).
المكونات/الوحدات المقترحة
Module: Core Models
Student (id, name, department, year, enrolledCourses(list of course IDs), maxUnitsAllowed)
Course (code, title, credits, capacity, enrolledStudents(list of student IDs), prerequisites(list of course codes), schedule)
ScheduleEntry (day, startTime, endTime, room)
Module: Repository / Storage
StudentRepository (load/save/search)
CourseRepository (load/save/search)
RegistrationRepository (tracks تسجيل / إلغاء)
خيارات التخزين: ملفات CSV/JSON أو SQLite (أفضل للموثوقية والبحث).
Module: Business Logic / Services
RegistrationService: وظائف أساسية: attemptRegistration(student, course) → success/failure + reason
يتحقق من: السعة، شروط المقرر، تصادم جدول، تجاوز الحد الأقصى للوحدات.
CourseManagementService: إضافة/تعديل/حذف مقرر، إدارة السعة، إدارة الشروط.
StudentManagementService: إضافة/تعديل/حذف طالب.