Menu
Coddy logo textTech

Zusammenfassung – Studentenverwaltungssystem

Teil des Abschnitts Objektorientierte Programmierung der PHP-Journey von Coddy — Lektion 43 von 91.

challenge icon

Aufgabe

Einfach

Lassen Sie uns ein Student-Records-System erstellen, das alle Kapselungskonzepte zusammenführt, die Sie in diesem Kapitel gelernt haben. Sie werden ein gut organisiertes System erstellen, das Studentendaten sicher verwaltet, indem es Constructor Promotion, private Eigenschaften, Getter und Setter mit Validierung sowie Information Hiding verwendet.

Sie werden Ihren Code über drei Dateien organisieren:

  • Student.php — Erstellen Sie eine Student-Klasse unter Verwendung von Constructor Promotion für ein privates $name (string) und ein privates $studentId (string). Fügen Sie außerdem eine private $grades Array-Eigenschaft hinzu (als leer initialisiert). Ihr Student sollte Folgendes haben:
    • getName() — gibt den Namen des Studenten zurück
    • getStudentId() — gibt die Studenten-ID zurück
    • addGrade(int $grade) — fügt eine Note nur hinzu, wenn sie zwischen 0 und 100 (einschließlich) liegt
    • getAverage() — gibt den Durchschnitt aller Noten als Float zurück (geben Sie 0.0 zurück, wenn keine Noten vorhanden sind)
    • getGradeCount() — gibt die Anzahl der erfassten Noten zurück
  • Classroom.php — Erstellen Sie eine Classroom-Klasse, die eine Sammlung von Studenten verwaltet. Verwenden Sie ein privates Array, um Studenten zu speichern. Binden Sie die Student-Datei ein. Ihr Klassenzimmer sollte Folgendes haben:
    • Ein Konstruktor, der ein privates $roomName (string) mittels Constructor Promotion akzeptiert
    • addStudent(Student $student) — fügt einen Studenten zum Klassenzimmer hinzu
    • getStudentCount() — gibt die Anzahl der eingeschriebenen Studenten zurück
    • getClassAverage() — berechnet den Durchschnitt der Durchschnitte aller Studenten (geben Sie 0.0 zurück, wenn keine Studenten oder keine Noten vorhanden sind)
    • getRoomName() — gibt den Namen des Klassenzimmers zurück
  • main.php — Binden Sie die Classroom-Datei ein. Sie erhalten fünf Eingaben: einen Raumnamen, einen Studentennamen, eine Studenten-ID und zwei Notenwerte. Erstellen Sie ein Classroom mit dem Raumnamen. Erstellen Sie ein Student mit dem Namen und der ID, fügen Sie beide Noten hinzu (in Integer umgewandelt) und fügen Sie dann den Studenten zum Klassenzimmer hinzu. Geben Sie vier Zeilen aus:
    • Der Raumname
    • Der Name des Studenten, gefolgt von seinem Durchschnitt, formatiert auf 1 Dezimalstelle: "[name]: [average]"
    • Die Anzahl der Noten für diesen Studenten
    • Der Klassendurchschnitt, formatiert auf 1 Dezimalstelle

Dieses System demonstriert eine ordnungsgemäße Kapselung: Noten sind vor direkter Manipulation geschützt, Durchschnitte werden intern berechnet, ohne die Rohdaten offenzulegen, und alle Daten fließen durch kontrollierte Methoden. Das Klassenzimmer muss nicht wissen, wie Studenten ihre Durchschnitte berechnen – es fragt einfach nach dem Ergebnis.

Probier es selbst

<?php

require_once 'Classroom.php';

// Eingaben lesen
$roomName = trim(fgets(STDIN));
$studentName = trim(fgets(STDIN));
$studentId = trim(fgets(STDIN));
$grade1 = intval(trim(fgets(STDIN)));
$grade2 = intval(trim(fgets(STDIN)));

// TODO: Erstelle ein Classroom-Objekt mit dem Raumnamen

// TODO: Erstelle einen Student mit dem Namen und der ID

// TODO: Füge dem Studenten beide Noten hinzu

// TODO: Füge den Studenten dem Klassenzimmer hinzu

// TODO: Gib den Raumnamen aus

// TODO: Gib den Namen des Studenten gefolgt von seinem Durchschnitt aus, formatiert auf 1 Dezimalstelle: "[name]: [average]"

// TODO: Gib die Anzahl der Noten für diesen Studenten aus

// TODO: Gib den Klassendurchschnitt formatiert auf 1 Dezimalstelle aus

?>

Alle Lektionen in Objektorientierte Programmierung