LU09.A01 - Schulverwaltung

TODO: show_report in Student entfernen. Die Methode macht das gleiche wie das property

Sie können in einer komplexen Anwendung selbständig

  • die Klassen erstellen
  • die Beziehungen einpflegen (einseitig, zweiseitig, mehrfache)
  • den nötigen Ablauf selbst festlegen
  • die gefordeten Ausgaben erzeugen

Vorgehen

Auftrag

Es ist eine einfache Schulverwaltung gemäss folgendem Klassendiagramm zu implementieren.

Dabei nutzen Sie Ihr Wissen zu ein- und zweiseitiger Beziehung sowie den 4 gezeigten Fällen der Referenzzuweisung. Ebenso verwenden Sie Mehrfachbeziehungen.

Vorgehen

Die Beschreibung der Klassen und Methoden erfolgt von links nach rechts und von oben nach unten. Erstellen Sie selbständig einen Plan, in welcher Reihenfolge Sie die Klassen erstellt wollen. Ein paar Tipps:

Hinweise

SchoolClass

Konstruktor

add_student

count_students

take_student(index)

show_student_list

Max
Pia
Cem

show_student_report(name)

Zeugnis für: Cem
	  Mathe     :  4.25
	  Deutsch   :  5.50
	  Turnen    :  5.50

Die Methode erzeugt selber keine Liste, sie ruft lediglich eine Methode in einem anderen Objekt auf.

Student

Konstruktor

show_report

Gibt die Referenz auf das report-Objekt aus dem Attribut zurück.

StudentReport

Konstruktor

add_subject

take_subject

show_overview

Zeugnis für: Cem
	  Mathe     :  4.25
	  Deutsch   :  5.50
	  Turnen    :  5.50

show_details

Fach: Mathe      mit 2 Noten
 - 1: 5.00 am 01.01.2011
 - 2: 3.50 am 02.02.2022
 Schnitt: 4.25
Fach: Deutsch    mit 3 Noten
 - 1: 5.50 am 03.03.2033
 - 2: 6.00 am 04.04.2044
 - 3: 5.00 am 05.05.2055
 Schnitt: 5.50

Subject

Konstruktor

Die Schreibweise grades[] : Grade im Klassendiagramm zeigt an, dass es sich um eine Liste (Array) handelt. Initialisieren Sie das Attribut als leere Liste.

add_grade

take_grade

count_grades

average

Unit tests

Grade

Die Klasse Grade wird als @dataclass realisiert.

Konstruktor

date.setter

Diese Methode ist bereits vorgegeben.

main

In der main-Methode erzeugen Sie die verschiedenen Objekte und zeigen die Zeugnisse an.

Ausgabe

Moritz
Pia
Cem

----
Zeugnis für: Moritz
	  Mathe     :  4.25
	  Deutsch   :  5.00
	  Turnen    :  5.00
----
Zeugnis für: Pia
	  Mathe     :  5.50
	  Deutsch   :  5.33
	  Turnen    :  5.25
----
Zeugnis für: Cem
	  Mathe     :  4.25
	  Deutsch   :  5.50
	  Turnen    :  5.50
----
Student Theo nicht gefunden
Fach: Mathe      mit 2 Noten
 - 1: 5.00 am 01.01.2011
 - 2: 3.50 am 02.02.2022
 Schnitt: 4.25
Fach: Deutsch    mit 3 Noten
 - 1: 5.50 am 03.03.2033
 - 2: 6.00 am 04.04.2044
 - 3: 5.00 am 05.05.2055
 Schnitt: 5.50
Fach: Turnen     mit 4 Noten
 - 1: 4.50 am 06.06.2066
 - 2: 6.00 am 07.07.1977
 - 3: 6.00 am 08.08.1988
 - 4: 5.50 am 09.09.1999
 Schnitt: 5.50

Dauer

4 - 6 Stunden

Abgabe

Mittels Push ins GitHub Repository


⇒ GitHub Repo für externe Besucher

GitHub Repository https://github.com/templates-python/m320-lu09-a01-school

Lernende am BZZ müssen den Link zum GitHub Classroom Assignment verwenden

René Probst, bearbeitet durch Marcel Suter