Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
modul:m320_2024:learningunits:lu09:aufgaben:schulverwaltung [2024/09/17 09:13] – [StudentReport] msutermodul:m320_2024:learningunits:lu09:aufgaben:schulverwaltung [2024/09/26 10:04] (aktuell) msuter
Zeile 1: Zeile 1:
 ====== LU09.A01 - Schulverwaltung ====== ====== LU09.A01 - Schulverwaltung ======
 +<nodisp>TODO: ''show_report'' in ''Student'' entfernen. Die Methode macht das gleiche wie das ''property''</nodisp>
 <WRAP center round todo 60%> <WRAP center round todo 60%>
  
Zeile 23: Zeile 23:
 Dabei nutzen Sie Ihr Wissen zu ein- und zweiseitiger Beziehung sowie den 4 gezeigten Fällen der Referenzzuweisung. Ebenso verwenden Sie Mehrfachbeziehungen. Dabei nutzen Sie Ihr Wissen zu ein- und zweiseitiger Beziehung sowie den 4 gezeigten Fällen der Referenzzuweisung. Ebenso verwenden Sie Mehrfachbeziehungen.
  
-{{https://ritholtz.com/wp-content/uploads/2020/03/dontpanic.jpg?400}}+{{https://ritholtz.com/wp-content/uploads/2020/03/dontpanic.jpg?300|}}
  
 ===== Vorgehen ===== ===== Vorgehen =====
Zeile 49: Zeile 49:
   * Beim Versuch mehr als 20 Studenten einzufügen, soll die Methode einen ''OverflowError'' werfen.   * Beim Versuch mehr als 20 Studenten einzufügen, soll die Methode einen ''OverflowError'' werfen.
  
-=== count_student ===+=== count_students ===
   * Gibt die Anzahl Studenten zurück.   * Gibt die Anzahl Studenten zurück.
  
Zeile 57: Zeile 57:
  
 === show_student_list === === show_student_list ===
-  * Diese Methode liefert eine Liste aller Studenten an. Die Ausgabe könnte wie folgt aussehen:+  * Diese Methode liefert eine Liste aller Studenten. Die Ausgabe könnte wie folgt aussehen:
  
 <code> <code>
Zeile 66: Zeile 66:
  
 === show_student_report(name) === === show_student_report(name) ===
-  * Diese Methode liefert das Zeugnis für einen Studenten mit allen Fächern und dem Notenschnitt an. Die Ausgabe könnte wie folgt aussehen:+  * Diese Methode liefert das Zeugnis für einen Studenten mit allen Fächern und dem Notenschnitt. Die Ausgabe könnte wie folgt aussehen:
  
 <code> <code>
-...+Zeugnis für: Cem 
 +   Mathe     :  4.25 
 +   Deutsch   :  5.50 
 +   Turnen    :  5.50
 </code> </code>
 +
 +<WRAP center round tip 60%>
 +Die Methode erzeugt selber keine Liste, sie ruft lediglich eine Methode in einem anderen Objekt auf.
 +</WRAP>
  
 ==== Student ==== ==== Student ====
 === Konstruktor === === Konstruktor ===
   * Beachten Sie die Parameter und Defaultwerte.   * Beachten Sie die Parameter und Defaultwerte.
- 
 === show_report === === show_report ===
-  * Diese Methode liefert das Zeugnis dieses Studenten mit allen Fächern und dem Notenschnitt. +Gibt die Referenz auf das ''report''-Objekt aus dem Attribut zurück.
- +
-Die Ausgabe könnte wie folgt aussehen: +
- +
-<code> +
-... +
-</code>+
  
 ==== StudentReport ==== ==== StudentReport ====
Zeile 138: Zeile 138:
   * Bei einem ungültigen Index soll ein ''IndexError'' ausgelöst werden.   * Bei einem ungültigen Index soll ein ''IndexError'' ausgelöst werden.
  
-=== calc_average ===+=== count_grades === 
 +  * Gibt die Anzahl Noten (''Grade'') zurück. 
 + 
 +=== average ===
   * Die Methode berechnet den Notendurchschnitt aus allen ''Grade''-Objekten in der Liste.   * Die Methode berechnet den Notendurchschnitt aus allen ''Grade''-Objekten in der Liste.
   * Falls keine ''Grade''-Objekte in der Liste vorhanden sind, wird der Wert ''0.00'' zurück gegeben.   * Falls keine ''Grade''-Objekte in der Liste vorhanden sind, wird der Wert ''0.00'' zurück gegeben.
Zeile 151: Zeile 154:
 === Konstruktor === === Konstruktor ===
   * Initialisieren Sie die Werte ''value'' und ''date'' gemäss Klassendiagramm.   * Initialisieren Sie die Werte ''value'' und ''date'' gemäss Klassendiagramm.
-  * Achten Sie auf die Zusicherung für den Wert von ''value''. Diese nehmen Sie im ''__post_init__'' vor.+  * Achten Sie auf die Zusicherung für den Wert von ''value''. Diese nehmen Sie im ''__post_init__'' vor. \\ Falls der Wert ungültig ist (keine Zahl, zu gross, zu klein) lösen Sie einen ''ValueError'' aus.
  
 === date.setter === === date.setter ===
Zeile 167: Zeile 170:
 ==== main ==== ==== main ====
 In der ''main''-Methode erzeugen Sie die verschiedenen Objekte und zeigen die Zeugnisse an. In der ''main''-Methode erzeugen Sie die verschiedenen Objekte und zeigen die Zeugnisse an.
- 
-  * Erzeugen Sie die Objekte in der Reihenfolge, wie sie auch für die Zuweisung in den Konstruktoren nötig sind. Wenn Sie unsicher sind, skizzieren Sie sich den Ablauf des Programms als Sequenzdiagramm auf.  
  
 === Ausgabe === === Ausgabe ===
-Das Programm liefert  
-   * eine Liste der Studenten 
-   * pro Student das Zeugnis (Report) mit dem Notenschnitt 
-   * für einen Studenten alle Einzelnoten. Sie können hier frei wählen, für wen die Noten ausgegeben werden. 
  
-Die Ausgabe soll in etwa wie folgt aussehen:\\ +<code> 
-{{:modul:m320:learningunits:lu05:aufgaben:lu03-aufg8-schulverwaltung-2.png?200|}}+Moritz 
 +Pia 
 +Cem 
 + 
 +---- 
 +Zeugnis fürMoritz 
 +   Mathe      4.25 
 +   Deutsch    5.00 
 +   Turnen     5.00 
 +---- 
 +Zeugnis fürPia 
 +   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 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 
 +</code>
  
 === Dauer === === Dauer ===
Zeile 188: Zeile 221:
 <details> <details>
 <summary>//=> GitHub Repo für externe Besucher//</summary> <summary>//=> GitHub Repo für externe Besucher//</summary>
-GitHub Repository https://github.com/templates-python/m319-lu10-a02-reader-module+GitHub Repository https://github.com/templates-python/m320-lu09-a01-school
  
 //Lernende am BZZ müssen den Link zum GitHub Classroom Assignment verwenden// //Lernende am BZZ müssen den Link zum GitHub Classroom Assignment verwenden//
  • modul/m320_2024/learningunits/lu09/aufgaben/schulverwaltung.1726557234.txt.gz
  • Zuletzt geändert: 2024/09/17 09:13
  • von msuter