Menu
Coddy logo textTech

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

חלק מהיחידה תכנות מונחה עצמים במסלול ה-PHP של Coddy. שיעור 43 מתוך 91.

challenge icon

אתגר

קל

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

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

  • Student.php: צור מחלקה בשם Student באמצעות קידום בנאי עבור $name פרטי (מחרוזת) ועבור $studentId פרטי (מחרוזת). כלול גם מאפיין מערך פרטי בשם $grades (שמאותחל כמערך ריק). למחלקת התלמיד צריכים להיות:
    • getName(): מחזירה את שם התלמיד
    • getStudentId(): מחזירה את מזהה התלמיד
    • addGrade(int $grade): מוסיפה ציון רק אם הוא בין 0 ל־100 (כולל)
    • getAverage(): מחזירה את הממוצע של כל הציונים כמספר עשרוני (מחזירה 0.0 אם אין ציונים)
    • getGradeCount(): מחזירה את מספר הציונים שנרשמו
  • Classroom.php: צור מחלקה בשם Classroom שמנהלת אוסף של תלמידים. השתמש במערך פרטי לאחסון התלמידים. כלול את קובץ Student. למחלקת הכיתה צריכים להיות:
    • בנאי שמקבל $roomName פרטי (מחרוזת) באמצעות קידום בנאי
    • addStudent(Student $student): מוסיפה תלמיד לכיתה
    • getStudentCount(): מחזירה את מספר התלמידים הרשומים
    • getClassAverage(): מחשבת את הממוצע של ממוצעי כל התלמידים (מחזירה 0.0 אם אין תלמידים או ציונים)
    • getRoomName(): מחזירה את שם הכיתה
  • main.php: כלול את קובץ Classroom. יתקבלו חמישה קלטים: שם של כיתה, שם של תלמיד, מזהה תלמיד ושני ערכי ציונים. צור Classroom עם שם הכיתה. צור Student עם השם והמזהה, הוסף את שני הציונים (לאחר המרתם למספרים שלמים), ואז הוסף את התלמיד לכיתה. הדפס ארבע שורות:
    • שם הכיתה
    • שם התלמיד ואחריו הממוצע שלו בפורמט של ספרה אחת אחרי הנקודה העשרונית: "[name]: [average]"
    • מספר הציונים של אותו תלמיד
    • ממוצע הכיתה בפורמט של ספרה אחת אחרי הנקודה העשרונית

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

נסו בעצמכם

<?php

require_once 'Classroom.php';

// קראו את הקלטים
$roomName = trim(fgets(STDIN));
$studentName = trim(fgets(STDIN));
$studentId = trim(fgets(STDIN));
$grade1 = intval(trim(fgets(STDIN)));
$grade2 = intval(trim(fgets(STDIN)));

// TODO: צרו Classroom עם שם הכיתה

// TODO: צרו Student עם השם וה-ID

// TODO: הוסיפו את שני הציונים לתלמיד

// TODO: הוסיפו את התלמיד לכיתה

// TODO: הדפיסו את שם הכיתה

// TODO: הדפיסו את שם התלמיד ואחריו את הממוצע שלו, מעוצב לספרה אחת אחרי הנקודה העשרונית: "[name]: [average]"

// TODO: הדפיסו את מספר הציונים של התלמיד הזה

// TODO: הדפיסו את ממוצע הכיתה, מעוצב לספרה אחת אחרי הנקודה העשרונית

?>

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

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