وصف مشروع نظام إدارة النادي الرياضي (Sports Club Management System)
فكرة المشروع
نظام إدارة نادي رياضي شامل يهدف إلى أتمتة وتنظيم العمليات الإدارية في الأندية الرياضية. يوفر المشروع منصة متكاملة تربط بين ثلاثة أطراف رئيسية:
الأطراف المستفيدة:
1.الإدارة (Management): لوحة تحكم لمراقبة جميع عمليات النادي وعرض الإحصائيات
2.المدربين (Trainers): إدارة ملفاتهم الشخصية ومتابعة المتدربين المرتبطين بهم
3.المتدربين (Trainees): التسجيل في الرياضات المختلفة واختيار المدربين وإدارة الاشتراكات
المشكلة التي يحلها المشروع:
•صعوبة إدارة بيانات المتدربين والمدربين يدوياً
•تعقيد حساب رسوم الاشتراكات (يومي/شهري/سنوي)
•عدم وجود نظام موحد لربط المتدربين بالمدربين حسب الرياضة
•صعوبة تتبع الإحصائيات والأداء العام للنادي
________________________________________
معمارية المشروع (Architecture)
المشروع مبني على N-Tier Architecture مكونة من 3 طبقات رئيسية:
1.Presentation Layer (Club.Web)
2.Business Logic Layer (Club.BLL)
3.Data Access Layer (Club.DAL)
________________________________________
أنماط التصميم المستخدمة (Design Patterns)
1. Repository Pattern
المستودعات:
- IGenericRepository<T> (مستودع عام لجميع الكيانات)
- ISportsRepository (مستودع متخصص للرياضات)
- ITrainersRepository (مستودع متخصص للمدربين)
الفائدة: فصل منطق الوصول للبيانات عن منطق الأعمال
2. Unit of Work Pattern
تم تطبيقه ضمنياً في DbContext عبر SaveChangesAsync()
3. Specification Pattern
- BaseSpecification<T>
- SportSSpecifications (لتحميل الرياضات مع المدربين والمتدربين)
الفائدة: بناء استعلامات معقدة بطريقة قابلة لإعادة الاستخدام
4. Dependency Injection (DI)
جميع الخدمات مسجلة في Program.cs
5. Table Per Hierarchy (TPH) Inheritance
جميع أنواع المستخدمين في جدول واحد مع عمود Discriminator
AppUser → Trainer, Trainee, Management
6. Soft Delete Pattern
لا يتم حذف البيانات فعلياً بل تُعلَّم كمحذوفة (ISoftDelete)
7. MVC Pattern
فصل واضح بين Model - View - Controller
8. ViewModel Pattern
فصل بيانات العرض عن كيانات قاعدة البيانات
________________________________________
التقنيات المستخدمة (Technologies Stack)
Backend Technologies
التقنيةالإصدارالاستخدام
ASP.NET Core MVC6.0+إطار العمل الرئيسي
Entity Framework Core6.0+ORM للتعامل مع قاعدة البيانات
ASP.NET Core Identity6.0+نظام المصادقة والتخويل
SQL Server2019+قاعدة البيانات
AutoMapper12.0+تحويل الكائنات تلقائياً
C# 10-لغة البرمجة
Frontend Technologies
التقنيةالإصدارالاستخدام
Razor Pages-محرك العرض
Bootstrap 55.3+إطار عمل التصميم
jQuery3.6+التفاعلية والـ AJAX
Chart.js3.0+الرسوم البيانية التفاعلية
Font Awesome6.0+الأيقونات
CSS3-التنسيقات المخصصة
Additional Libraries & Tools
•Cookie-based Authentication: لإدارة الجلسات
•JSON Serialization: لتعبئة البيانات الأولية
•IFormFile: لرفع الملفات
•Fluent API: لتكوين قاعدة البيانات
•Data Annotations: للتحقق من صحة البيانات
________________________________________
️ هيكل قاعدة البيانات (Database Schema)
الجداول الرئيسية:
1.AspNetUsers (TPH)
oيحتوي على: Trainers, Trainees, Management
oعمود UserType للتمييز بين الأنواع
2.Sports
oالرياضات المتاحة في النادي
3.AspNetRoles
oالأدوار: Trainer, Trainee, Management
4.AspNetUserClaims
oClaims مخصصة لكل مستخدم
العلاقات:
•One-to-Many: Sport → Trainers
•One-to-Many: Sport → Trainees
•One-to-Many: Trainer → Trainees
•Computed Column: حساب الرسوم تلقائياً بناءً على نوع الاشتراك
معادلة حساب الرسوم:
sql
Fees = CASE
WHEN registeration='PerSession' THEN NoOfAttendedSessions * 80
WHEN registeration='PerMonth' THEN NoOfAttendedSessions * 1000 / 12
ELSE NoOfAttendedSessions * 120000 / 144
END
________________________________________
الميزات الرئيسية (Key Features)
1- نظام المصادقة والتخويل
•تسجيل مستخدمين جدد (مدرب/متدرب)
•تسجيل دخول موحد
•نظام أدوار (Role-Based Authorization)
•نظام Claims للصلاحيات
•Cookie Authentication
2- إدارة الملفات الشخصية
•عرض وتعديل البيانات الشخصية
•رفع وتحديث الصور الشخصية
•حذف الحساب (Soft Delete)
•تحديث Claims تلقائياً عند التعديل
3- إدارة الرياضات والمدربين
•اختيار الرياضة عند التسجيل
•تحميل المدربين ديناميكياً حسب الرياضة (AJAX)
•ربط المتدربين بالمدربين تلقائياً
4- أنظمة الاشتراك
•Per Session: دفع لكل جلسة (80 جنيه/جلسة)
•Per Month: اشتراك شهري
•Per Year: اشتراك سنوي
•حساب الرسوم تلقائياً (Computed Column)
5- لوحة التحكم الإدارية
•عرض إحصائيات شاملة
•Pie Chart: توزيع المتدربين على الرياضات
•Bar Chart: رواتب المدربين
•عدد المدربين والمتدربين لكل رياضة
6- AJAX Dynamic Forms
•تحميل المدربين عند اختيار الرياضة
•إرسال البيانات بدون إعادة تحميل الصفحة
•عرض الرسوم البيانية ديناميكياً
7- إدارة الملفات
•رفع الصور بصيغ مختلفة
•حفظ الصور في مجلدات منفصلة
•حذف الصور القديمة عند التحديث
•توليد أسماء فريدة (GUID)
8- Audit Trail
•تسجيل من أنشأ السجل ومتى
•تسجيل من عدّل السجل ومتى
•تسجيل من حذف السجل ومتى
________________________________________
بيانات الدخول الافتراضية (Default Credentials)
1- مدرب (Trainer):
Email: [من ملف trainers.json]
Password: [اسم_المستخدم]@123
2- متدرب (Trainee):
Email: [من ملف trainees.json]
Password: [اسم_المستخدم]@123
3- إدارة (Management):
Email: [من ملف Management.json]
Password: [اسم_المستخدم]@123
________________________________________
سيناريوهات الاستخدام (Use Cases)
سيناريو 1: تسجيل متدرب جديد
1.المستخدم يزور صفحة التسجيل
2.يختار نوع الاشتراك (يومي/شهري/سنوي)
3.يختار الرياضة المفضلة
4.يتم تحميل المدربين المتخصصين في هذه الرياضة (AJAX)
5.يختار المدرب
6.يرفع صورته الشخصية
7.النظام:
oينشئ حساب Identity
oيحسب كلمة المرور
oيضيف Role "Trainee"
oيضيف Claims
oيحفظ الصورة
oيربطه بالمدرب والرياضة
سيناريو 2: تعديل ملف مدرب
1.المدرب يسجل دخول
2.يذهب لصفحة الملف الشخصي
3.يضغط "تعديل"
4.يغير بياناته (الاسم/العمر/الصورة/الرياضة)
5.النظام:
oيحذف الصورة القديمة
oيحفظ الصورة الجديدة
oيحدث البيانات في قاعدة البيانات
oيحدّث Claims
oيسجل من عدّل ومتى (Audit)
سيناريو 3: عرض إحصائيات النادي
1.الإدارة تسجل دخول
2.تذهب للوحة التحكم
3.النظام يعرض:
oPie Chart: توزيع المتدربين على الرياضات
oBar Chart: رواتب المدربين
oعدد المدربين والمتدربين الإجمالي
________________________________________
الأمان (Security Features)
•Password Hashing: باستخدام PasswordHasher<AppUser>
•Authorization Attributes: [Authorize] على Controllers/Actions الحساسة
•Role-Based Access Control: فصل الصلاحيات حسب الدور
•Claims-Based Authorization: صلاحيات دقيقة لكل مستخدم
•Anti-Forgery Tokens: حماية من CSRF
•Input Validation: Data Annotations + Client-Side Validation
•SQL Injection Prevention: استخدام EF Core (Parameterized Queries)
________________________________________
التحسينات المستقبلية (Future Enhancements)
•إرسال بريد إلكتروني عند التسجيل
•نظام رسائل بين المدربين والمتدربين
•نظام حجز جلسات تدريبية
•تطبيق موبايل (Xamarin/MAUI)
•إشعارات فورية (SignalR)
•بوابة دفع إلكتروني
•تقارير Excel/PDF
•دعم تعدد اللغات (Localization)
•نظام بحث متقدم
•نظام تقييم المدربين
________________________________________
ملاحظات مهمة (Important Notes)
1.كلمات المرور الافتراضية: [اسم_المستخدم]@123
2.الصور المرفوعة تُحفظ في wwwroot/images/[trainers|trainees|sports]
3.Migration تلقائي عند أول تشغيل للمشروع
4.Data Seeding تلقائي يحدث مرة واحدة فقط
5.Soft Delete: السجلات لا تُحذف فعلياً من قاعدة البيانات
________________________________________