Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung | |||
de:modul:m319:learningunits:lu20:aufgaben:bibliothek [2025/06/23 07:45] – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | de:modul:m319:learningunits:lu20:aufgaben:bibliothek [2025/06/23 07:45] (aktuell) – ↷ Seite von modul:m319:learningunits:lu20:aufgaben:bibliothek nach de:modul:m319:learningunits:lu20:aufgaben:bibliothek verschoben msuter | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== LU20.A01 - Bibliotheksverwaltung ====== | ||
+ | |||
+ | <WRAP center round todo 60%> | ||
+ | Realisieren Sie die verschiedenen Programmteile der Applikation " | ||
+ | </ | ||
+ | |||
+ | ===== Allgemeine Infos ===== | ||
+ | |||
+ | |||
+ | ==== Vorlage ==== | ||
+ | Im Vorlage-Repository sind alle Funktionen als rudimentäre Stubs realisiert. Diese Stubs liefern, soweit nötig, einen statischen Returnwert. | ||
+ | Die Logik der Methode " | ||
+ | |||
+ | ==== Vorgehen ==== | ||
+ | Wie immer beim Programmieren gilt: | ||
+ | - Wählen Sie einen Programmteil aus, dessen Vorgänger korrekt funktioniert. | ||
+ | - Codieren Sie den neuen Programmteil. | ||
+ | - Testen Sie den neuen Programmteil, | ||
+ | - Falls die Tests nicht erfolgreich sind, gehen Sie zurück zu Schritt 2. | ||
+ | - Führen Sie alle Tests mit '' | ||
+ | - Falls mehr Tests erfolgreich sind als zuvor: Commit & Push. | ||
+ | |||
+ | ^ Nr ^ Programmteil ^ Vorgänger ^ Tests ^ | ||
+ | | 1 | Dataclass - Rental | - | rental_test.py > '' | ||
+ | | 2 | cost | 1 | rental_test.py > '' | ||
+ | | 3 | read_rental | 1,7,8 | library_test.py > '' | ||
+ | | 4 | init_books | 1 | library_test.py > '' | ||
+ | | 5 | add_rental | 1, 3, 4 | library_test.py > '' | ||
+ | | 6 | show_balance | 1, 2 | library_test.py > '' | ||
+ | | 7 | read_int | - | library_test.py > '' | ||
+ | | 8 | read_date | - | library_test.py > '' | ||
+ | |||
+ | ==== Testing ==== | ||
+ | Die einzelnen Programmteile (Funktionen, | ||
+ | |||
+ | ===== Beschreibungen ===== | ||
+ | Der Code stellt ein terminalbasiertes Bibliotheksverwaltungssystem zur Verwaltung von Buchausleihen dar. Es wird mit einer Reihe von Büchern ("Herr der Ringe" | ||
+ | |||
+ | **Fürs Testen:** | ||
+ | |||
+ | Es gibt nur 3 Bücher, '' | ||
+ | |||
+ | < | ||
+ | <iframe src=" | ||
+ | </ | ||
+ | |||
+ | ==== Modul rental.py ==== | ||
+ | |||
+ | <WRAP center round box 100%> | ||
+ | === Dataclass - Rental === | ||
+ | * Datum der Ausleihe: Datum | ||
+ | * Rückgabedatum: | ||
+ | * Anzahl inkludierte Miettage: Ganzzahl | ||
+ | </ | ||
+ | |||
+ | |||
+ | <WRAP center round box 100%> | ||
+ | === @property cost() === | ||
+ | | Argumente | self | | ||
+ | | Rückgabewerte | Kosten des Ausleihens (Dezimalzahl) | | ||
+ | **Logik** | ||
+ | |||
+ | Die Funktion berechnet die Kosten der Buchausleihe. | ||
+ | Die Kosten für die Buchausleihe sind normalerweise CHF 4.50 für die gesamte Zeitdauer der '' | ||
+ | Wird diese Frist jedoch überschritten wird eine Strafgebühr von CHF 3.35 pro angefangene 24 Stunden berechnet. | ||
+ | Die effektive Anzahl Miettage wird berechnet aus '' | ||
+ | |||
+ | Der Returnwert wird auf 2 Nachkommastellen gerundet: | ||
+ | '' | ||
+ | |||
+ | </ | ||
+ | |||
+ | ==== Modul library.py ==== | ||
+ | <WRAP center round box 100%> | ||
+ | === main() === | ||
+ | | Argumente | keine | | ||
+ | | Rückgabewerte | keine | | ||
+ | **Logik** | ||
+ | |||
+ | Die Logik dieser Funktion ist bereits **vollständig umgesetzt**. Beachten Sie die Argumente und Returnwerte der jeweiligen Funktionen. | ||
+ | </ | ||
+ | |||
+ | |||
+ | <WRAP center round box 100%> | ||
+ | === read_rental() === | ||
+ | | Argumente | keine | | ||
+ | | Rückgabewerte | '' | ||
+ | |||
+ | **Logik** | ||
+ | |||
+ | Der Benutzer wird aufgefordert, | ||
+ | * Datum der Ausleihe | ||
+ | * Anzahl Miettage | ||
+ | * Rückgabedatum | ||
+ | |||
+ | Verwenden Sie für das Einlesen der Werte die passende Einleser-Funktion '' | ||
+ | |||
+ | </ | ||
+ | |||
+ | <WRAP center round box 100%> | ||
+ | === init_books() === | ||
+ | | Argumente | keine | | ||
+ | | Rückgabewerte | Dictionary mit Büchern | | ||
+ | |||
+ | **Logik** | ||
+ | |||
+ | Die Funktion erstellt einen neuen Dictionary. Es werden drei Elemente in das Dictionary eingefügt: | ||
+ | ^Schlüssel^ Inhalt (Wert)^ | ||
+ | |'' | ||
+ | |'' | ||
+ | |'' | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | <WRAP center round box 100%> | ||
+ | === add_rental() === | ||
+ | | Argumente | Dictionary mit Büchern und Ausleihungen | | ||
+ | | Rückgabewerte | keiner | | ||
+ | |||
+ | **Logik** | ||
+ | |||
+ | Der Benutzer wird aufgefordert, | ||
+ | Anschliessend wird '' | ||
+ | |||
+ | Dieses '' | ||
+ | Anschliessend wird der Benutzer gefragt, ob er die Erfassung beenden will. Solange der Benutzer **'' | ||
+ | </ | ||
+ | |||
+ | |||
+ | <WRAP center round box 100%> | ||
+ | === show_balance() === | ||
+ | | Argumente | Dictionary mit Büchern und Ausleihungen | | ||
+ | | Rückgabewerte | keiner | | ||
+ | |||
+ | **Logik** | ||
+ | |||
+ | Die Funktion gibt für jedes Buch … | ||
+ | * … den Buchtitel aus. | ||
+ | * … für jede Buchung (Ausleihe) des Buchs … | ||
+ | * … das Datum der Miete und die Kosten dieser Miete aus. | ||
+ | * … das Total aller Buchungen aus. | ||
+ | Beachten Sie die Darstellung gemäss diesem Beispiel: | ||
+ | |||
+ | < | ||
+ | Statement for LOTR 1 | ||
+ | - 05.01.2023: CHF 4.50 | ||
+ | - 06.03.2023: CHF 7.85 | ||
+ | Total: CHF 12.35 | ||
+ | Statement for LOTR 2 | ||
+ | - 06.01.2023: CHF 4.50 | ||
+ | - 23.02.2023: CHF 4.50 | ||
+ | Total: CHF 9.00 | ||
+ | Statement for LOTR 3 | ||
+ | - 06.01.2023: CHF 4.50 | ||
+ | - 23.02.2023: CHF 14.55 | ||
+ | Total: CHF 19.05 | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | <WRAP center round box 100%> | ||
+ | === read_int() === | ||
+ | | Argumente | prompt: String | | ||
+ | | ::: | minimum: Integer (Optional) | | ||
+ | | ::: | maximum: Integer (Optional) | | ||
+ | | Rückgabewerte | Benutzereingabe als Ganzzahl | | ||
+ | |||
+ | **Logik** | ||
+ | |||
+ | Die Funktion fordert den Benutzer zur Eingabe einer Ganzzahl von '' | ||
+ | Falls die Eingabe keine gültige Ganzzahl ist, wird … | ||
+ | * … die Meldung " | ||
+ | * … der Benutzer zur erneuten Eingabe aufgefordert. | ||
+ | Falls die Eingabe zu klein / zu gross ist, wird … | ||
+ | * … die Meldung " | ||
+ | * … die Meldung " | ||
+ | * … der Benutzer zur erneuten Eingabe aufgefordert. | ||
+ | </ | ||
+ | |||
+ | <WRAP center round box 100%> | ||
+ | === read_date() === | ||
+ | | Argumente | prompt: String | | ||
+ | | Rückgabewerte | Benutzereingabe als Datum/ | ||
+ | |||
+ | **Logik** | ||
+ | |||
+ | Die Funktion fordert den Benutzer zur Eingabe eines Zeitpunkts auf. | ||
+ | Die Eingabe muss im Format '' | ||
+ | Falls die Eingabe kein gültiger Zeitpunkt ist, wird … | ||
+ | * … die Meldung " | ||
+ | * … der Benutzer zur erneuten Eingabe aufgefordert. | ||
+ | </ | ||
+ | |||
+ | |||
+ | ---- | ||
+ | < | ||
+ | < | ||
+ | GitHub Repository https:// | ||
+ | |||
+ | //Lernende am BZZ **müssen** den Link zum GitHub Classroom Assignment verwenden// | ||
+ | </ | ||
+ | |||
+ | {{tag> | ||
+ | [[https:// | ||
+ | |||
+ | |||