Menu
Coddy logo textTech

סיכום – רשומות תלמידים

חלק מהיחידה תכנות מונחה עצמים במסלול ה-C# של Coddy. שיעור 35 מתוך 70.

challenge icon

אתגר

קל

בואו נבנה מערכת לניהול רשומות תלמידים שמאגדת את כל טכניקות הכימוס שלמדת בפרק הזה. תיצור מערכת מאובטחת שבה נתוני התלמידים מוגנים כראוי, הציונים עוברים אימות, ומידע מסוים נשאר בלתי ניתן לשינוי לאחר היצירה.

תארגן את הקוד שלך בשני קבצים:

  • Student.cs: צור מחלקה Student במרחב השמות Records שמדגימה כימוס נכון. למחלקת התלמיד שלך צריכים להיות:
    • שדה readonly בשם Name (מחרוזת) שזמין לציבור, אך אפשר להגדיר אותו רק בזמן יצירת האובייקט
    • שדה פרטי readonly עבור מזהה התלמיד (מחרוזת) — אסור שתהיה גישה ישירה אליו מבחוץ
    • רשימה פרטית לאחסון ציונים (מספרים שלמים)
    • מאפיין ציבורי לקריאה בלבד Average שמחשב ומחזיר את הממוצע של כל הציונים, או 0 אם אין ציונים
    • מתודה ציבורית AddGrade(int grade) שמקבלת רק ציונים בין 0 ל־100 (כולל) — יש להתעלם בשקט מציונים לא תקינים
    • מתודה ציבורית GetGradeCount() שמחזירה כמה ציונים תקינים נרשמו
    • מתודה ציבורית GetStudentInfo() שמחזירה מחרוזת בתבנית "{Name} (ID: {last 4 characters of student ID})" — שים לב שאתה חושף רק גרסה מוסתרת של המזהה!
    הבנאי צריך לקבל את השם ואת מזהה התלמיד, בסדר הזה.
  • Program.cs: בקובץ הראשי שלך, צור תלמיד והוסף כמה ציונים כדי להדגים איך הכימוס עובד. תראה שציונים תקינים מתקבלים, ציונים לא תקינים נדחים, והממוצע מחושב נכון.

תקבל חמש קלטים:

  • שם התלמיד
  • מזהה התלמיד (באורך של 4 תווים לפחות)
  • הציון הראשון להוספה (מספר שלם)
  • הציון השני להוספה (מספר שלם, עשוי להיות לא תקין כמו -5 או 150)
  • הציון השלישי להוספה (מספר שלם)

הדפס את הפלט בתבנית הזו:

{GetStudentInfo() result}
Grades recorded: {GetGradeCount()}
Average: {Average}

לדוגמה, אם הקלטים הם Emma Wilson, STU12345, 85, 150 ו־90, הפלט צריך להיות:

Emma Wilson (ID: 2345)
Grades recorded: 2
Average: 87.5

שים לב שהציון הלא תקין 150 נדחה בשקט, ולכן נרשמו רק שני ציונים. מזהה התלמיד מוגן — קוד חיצוני לעולם לא יכול לראות את המזהה המלא, אלא רק את הגרסה המוסתרת שלו דרך GetStudentInfo(). אפשר לקרוא את השם, אך אי אפשר לשנות אותו. כך הכימוס פועל ומשתלב ליצירת מחלקה חזקה ומוגנת היטב!

נסו בעצמכם

using System;
using Records;

class Program
{
    public static void Main(string[] args)
    {
        // קרא את הקלט
        string name = Console.ReadLine();
        string studentId = Console.ReadLine();
        int grade1 = Convert.ToInt32(Console.ReadLine());
        int grade2 = Convert.ToInt32(Console.ReadLine());
        int grade3 = Convert.ToInt32(Console.ReadLine());

        // TODO: צור אובייקט Student עם name ו-studentId

        // TODO: הוסף את כל שלושת הציונים באמצעות המתודה AddGrade

        // TODO: הדפס את הפלט בפורמט הנדרש:
        // {התוצאה של GetStudentInfo()}
        // Grades recorded: {GetGradeCount()}
        // ממוצע: {Average}
    }
}

כל השיעורים ביחידה תכנות מונחה עצמים

תרגלו בעצמכם: קומפיילר C# אונליין