Menu
Coddy logo textTech

Wiederholung – System zur Verwaltung von Schülerdatensätzen

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

challenge icon

Aufgabe

Einfach

Lass uns ein Schülerdatensystem erstellen, das alle Konzepte der Kapselung zusammenführt, die du in diesem Kapitel gelernt hast. Du erstellst ein gut organisiertes System, das Schülerdaten sicher verwaltet und dabei Konstruktor-Promotion, private Eigenschaften, Getter und Setter mit Validierung sowie Informationsverbergung verwendet.

Du wirst deinen Code auf drei Dateien verteilen:

  • Student.php: Erstelle eine Student-Klasse mit Konstruktor-Promotion für ein privates $name (String) und eine private $studentId (String). Füge außerdem eine private Array-Eigenschaft $grades hinzu (als leer initialisiert). Dein Schüler sollte Folgendes haben:
    • getName(): gibt den Namen des Schülers zurück
    • getStudentId(): gibt die Schüler-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 (gibt 0.0 zurück, wenn keine Noten vorhanden sind)
    • getGradeCount(): gibt die Anzahl der erfassten Noten zurück
  • Classroom.php: Erstelle eine Classroom-Klasse, die eine Sammlung von Schülern verwaltet. Verwende ein privates Array, um die Schüler zu speichern. Binde die Student-Datei ein. Dein Klassenraum sollte Folgendes haben:
    • Einen Konstruktor, der einen privaten $roomName (String) mithilfe der Konstruktor-Promotion akzeptiert
    • addStudent(Student $student): fügt einen Schüler zum Klassenraum hinzu
    • getStudentCount(): gibt die Anzahl der eingeschriebenen Schüler zurück
    • getClassAverage(): berechnet den Durchschnitt der Durchschnittswerte aller Schüler (gibt 0.0 zurück, wenn keine Schüler oder keine Noten vorhanden sind)
    • getRoomName(): gibt den Namen des Klassenraums zurück
  • main.php: Binde die Classroom-Datei ein. Du erhältst fünf Eingaben: einen Raum-Namen, einen Schülernamen, eine Schüler-ID und zwei Notenwerte. Erstelle eine Classroom-Instanz mit dem Raum-Namen. Erstelle eine Student-Instanz mit dem Namen und der ID, füge beide Noten hinzu (in Ganzzahlen umgewandelt) und füge anschließend den Schüler zum Klassenraum hinzu. Gib vier Zeilen aus:
    • Den Raum-Namen
    • Den Namen des Schülers, gefolgt von seinem Durchschnitt, formatiert auf 1 Dezimalstelle: "[name]: [average]"
    • Die Anzahl der Noten dieses Schülers
    • Den Klassendurchschnitt, formatiert auf 1 Dezimalstelle

Dieses System demonstriert eine ordnungsgemäße Kapselung: Noten sind vor direkter Manipulation geschützt, Durchschnittswerte werden intern berechnet, ohne die Rohdaten offenzulegen, und alle Daten fließen durch kontrollierte Methoden. Der Klassenraum muss nicht wissen, wie Schüler ihre Durchschnittswerte berechnen. Er 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 mit dem Raumnamen

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

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

// TODO: Füge den Studenten zum Classroom hinzu

// TODO: Gib den Raumnamen aus

// TODO: Gib den Namen des Studenten gefolgt von seinem Durchschnitt formatiert auf 1 Dezimalstelle aus: "[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

Übe selbstständig: Online-PHP-Compiler