🎓 שיעור 8: פרויקט גמר

⏱️ 2 שעות | 🎯 בניית מערכת שלמה

→ קודם 🏠 בית הבא ←

🎯 הפרויקט: מערכת ניהול בית ספר

מבנה הפרויקט

נבנה מערכת מלאה עם כל מה שלמדנו!

// Interface
interface IPerson
{
    void PrintInfo();
}

// Student class
class Student : IPerson
{
    public string Name;
    public int Id;
    public List<double> Grades;
    
    public Student(string name, int id)
    {
        Name = name;
        Id = id;
        Grades = new List<double>();
    }
    
    public void AddGrade(double grade)
    {
        Grades.Add(grade);
    }
    
    public double GetAverage()
    {
        if (Grades.Count == 0) return 0;
        return Grades.Sum() / Grades.Count;
    }
    
    public void PrintInfo()
    {
        Console.WriteLine($"תלמיד: {Name} ({Id})");
        Console.WriteLine($"ממוצע: {GetAverage():F2}");
    }
}

// Teacher class
class Teacher : IPerson
{
    public string Name;
    public string Subject;
    public List<Student> Students;
    
    public Teacher(string name, string subject)
    {
        Name = name;
        Subject = subject;
        Students = new List<Student>();
    }
    
    public void AddStudent(Student student)
    {
        Students.Add(student);
    }
    
    public void PrintInfo()
    {
        Console.WriteLine($"מורה: {Name}");
        Console.WriteLine($"מקצוע: {Subject}");
        Console.WriteLine($"מספר תלמידים: {Students.Count}");
    }
}

// Classroom class
class Classroom
{
    public string Name;
    public Teacher Teacher;
    public List<Student> Students;
    
    public Classroom(string name, Teacher teacher)
    {
        Name = name;
        Teacher = teacher;
        Students = new List<Student>();
    }
    
    public void AddStudent(Student student)
    {
        Students.Add(student);
        Teacher.AddStudent(student);
    }
    
    public double GetClassAverage()
    {
        if (Students.Count == 0) return 0;
        double sum = 0;
        foreach (Student s in Students)
            sum += s.GetAverage();
        return sum / Students.Count;
    }
    
    public void PrintReport()
    {
        Console.WriteLine($"\n=== כיתה {Name} ===");
        Teacher.PrintInfo();
        Console.WriteLine($"\nממוצע הכיתה: {GetClassAverage():F2}");
        Console.WriteLine("\nתלמידים:");
        foreach (Student s in Students)
        {
            Console.WriteLine($"  - {s.Name}: {s.GetAverage():F2}");
        }
    }
}

// School class
class School
{
    public string Name;
    public List<Classroom> Classrooms;
    public List<Teacher> Teachers;
    
    public School(string name)
    {
        Name = name;
        Classrooms = new List<Classroom>();
        Teachers = new List<Teacher>();
    }
    
    public void AddClassroom(Classroom classroom)
    {
        Classrooms.Add(classroom);
        if (!Teachers.Contains(classroom.Teacher))
            Teachers.Add(classroom.Teacher);
    }
    
    public Student FindStudent(int id)
    {
        foreach (Classroom c in Classrooms)
            foreach (Student s in c.Students)
                if (s.Id == id)
                    return s;
        return null;
    }
    
    public void PrintFullReport()
    {
        Console.WriteLine($"\n╔══════════════════════════════╗");
        Console.WriteLine($"║   בית ספר {Name}   ║");
        Console.WriteLine($"╚══════════════════════════════╝");
        
        foreach (Classroom c in Classrooms)
            c.PrintReport();
    }
}

class Program
{
    static void Main()
    {
        // יצירת בית ספר
        School school = new School("הרצל");
        
        // יצירת מורים
        Teacher teacher1 = new Teacher("דני כהן", "מתמטיקה");
        Teacher teacher2 = new Teacher("שרה לוי", "אנגלית");
        
        // יצירת כיתות
        Classroom class1 = new Classroom("ט1", teacher1);
        Classroom class2 = new Classroom("ט2", teacher2);
        
        // יצירת תלמידים
        Student s1 = new Student("יוסי", 101);
        s1.AddGrade(95);
        s1.AddGrade(88);
        s1.AddGrade(92);
        
        Student s2 = new Student("שרה", 102);
        s2.AddGrade(78);
        s2.AddGrade(85);
        s2.AddGrade(80);
        
        Student s3 = new Student("דוד", 103);
        s3.AddGrade(90);
        s3.AddGrade(94);
        s3.AddGrade(88);
        
        // הוספת תלמידים לכיתות
        class1.AddStudent(s1);
        class1.AddStudent(s2);
        class2.AddStudent(s3);
        
        // הוספת כיתות לבית ספר
        school.AddClassroom(class1);
        school.AddClassroom(class2);
        
        // דוח מלא
        school.PrintFullReport();
        
        // חיפוש תלמיד
        Student found = school.FindStudent(102);
        if (found != null)
        {
            Console.WriteLine($"\n\nנמצא תלמיד:");
            found.PrintInfo();
        }
    }
}

📋 משימות לביצוע

  1. הקלידו את כל הקוד (40 דק)
  2. הריצו ובדקו שהכל עובד (10 דק)
  3. הוסיפו תכונות נוספות (40 דק):
    • Method למציאת התלמיד עם הממוצע הגבוה ביותר
    • Method לרשימת תלמידים בסיכון (ממוצע < 60)
    • Method להוספת ציון לכל תלמידי כיתה
  4. תיעוד והצגה (30 דק)

🎉 מזל טוב!

יצרת מערכת מלאה עם: Classes, Lists, Interfaces, Methods, Properties!

→ קודם 🏠 בית סיכום ←