تفاصيل العمل

وصف مشروع نظام إدارة النادي الرياضي (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: السجلات لا تُحذف فعلياً من قاعدة البيانات

________________________________________

ملفات مرفقة

بطاقة العمل

اسم المستقل
عدد الإعجابات
0
عدد المشاهدات
3
تاريخ الإضافة
تاريخ الإنجاز
المهارات