Realisieren Sie die verschiedenen Programmteile der Applikation “library” gemäss den Beschreibungen.
Im Vorlage-Repository sind alle Funktionen als rudimentäre Stubs realisiert. Diese Stubs liefern, soweit nötig, einen statischen Returnwert. Die Logik der Methode “main()” ist bereits vollständig umgesetzt.
Wie immer beim Programmieren gilt:
pytest -vv
aus.Nr | Programmteil | Vorgänger | Tests |
---|---|---|---|
1 | Dataclass - Rental | - | rental_test.py > test_attribute_assignments |
2 | cost | 1 | rental_test.py > test_cost_no_overdue rental_test.py > test_cost_with_overdue |
3 | read_rental | 1,7,8 | library_test.py > test_read_rental |
4 | init_books | 1 | library_test.py > test_init_books |
5 | add_rental | 1, 3, 4 | library_test.py > test_add_rental_empty_books library_test.py > test_add_rental_existing_books library_test.py > test_add_rental_invalid_book_name library_test.py > test_add_rental_multiple_rentals |
6 | show_balance | 1, 2 | library_test.py > test_show_balance |
7 | read_int | - | library_test.py > test_read_int_valid_input library_test.py > test_read_int_invalid_input |
8 | read_date | - | library_test.py > test_read_date_valid_input library_test.py > test_read_date_invalid_input |
Die einzelnen Programmteile (Funktionen, Attribute, Property) werden mittels Unit Tests überprüft. Die Testfunktionen finden Sie in library_test.py
und rental_test.py
. Für jeden erfolgreichen Test erhalten Sie Punkte.
Der Code stellt ein terminalbasiertes Bibliotheksverwaltungssystem zur Verwaltung von Buchausleihen dar. Es wird mit einer Reihe von Büchern (“Herr der Ringe”-Trilogie) initialisiert und ermöglicht es den Benutzern, Ausleihdatensätze hinzuzufügen, indem sie Buchnamen und Ausleihdetails (Ausleih- und Rückgabedaten, Anzahl der Ausleihtage) eingeben. Das System berechnet und zeigt die Mietkosten an, einschließlich der Strafen für überfällige Rückgaben. Die Benutzer interagieren über ein einfaches Textmenü, in dem sie Optionen zum Hinzufügen von Vermietungen, zum Anzeigen von Salden oder zum Beenden des Programms auswählen. Die Schnittstelle besteht hauptsächlich aus dem Lesen von Benutzereingaben und dem Ausdrucken von Informationen direkt im Terminal.
Fürs Testen:
Es bibt nur 3 Bücher, LOTR 1
,LOTR 2
,LOTR 3
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 Anzahl Miettage
.
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 Rückgabedatum - Datum der Ausleihe
Der Returnwert wird auf 2 Nachkommastellen gerundet:
return round(Ausleihgebür,2)
Argumente | keine |
Rückgabewerte | keine |
Logik
Die Logik dieser Funktion ist bereits vollständig umgesetzt. Beachten Sie die Argumente und Returnwerte der jeweiligen Funktionen.
Argumente | keine |
Rückgabewerte | Rental -Objekt |
Logik
Der Benutzer wird aufgefordert, die Angaben zur Ausleihung einzugeben:
Die Benutzereingaben werden in ein neues Rental-Objekt gespeichert und zurückgegeben.
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) |
---|---|
LOTR 1 | Leere Liste [] |
LOTR 2 | Leere Liste [] |
LOTR 3 | Leere Liste [] |
Argumente | Dictionary mit Büchern und Ausleihungen |
Rückgabewerte | keiner |
Logik
Der Benutzer wird aufgefordert, einen Buchnamen einzugeben. Die Funktion wählt den Eintrag im Dictionary mit dem Buchnamen als Schlüssel.
Anschliessend wird read_rental()
aufgerufen um ein Rental-Objekt
zu erhalten.
Dieses Rental-Objekt
wird beim gewählten Dictionary-Element am Ende der Liste mit den Buchungen eingefügt.
Anschliessend wird der Benutzer gefragt, ob er die Erfassung beenden will. Solange der Benutzer y
eingibt, wird der gesamte Ablauf wiederholt.
Argumente | Dictionary mit Büchern und Ausleihungen |
Rückgabewerte | keiner |
Logik
Die Funktion gibt für jedes Buch …
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
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 minimum
bis maximum
auf.
Falls die Eingabe keine gültige Ganzzahl ist, wird …
Falls die Eingabe zu klein / zu gross ist, wird …
number
” angezeigt.number
” angezeigt.Argumente | prompt: String |
Rückgabewerte | Benutzereingabe als Datum/Uhrzeit-Objekt |
Logik
Die Funktion fordert den Benutzer zur Eingabe eines Zeitpunkts auf.
Die Eingabe muss im Format d(d).m(m).jjjj
erfolgen, z.B. 15.7.2023
Falls die Eingabe kein gültiger Zeitpunkt ist, wird …
GitHub Repository https://github.com/templates-python/m319-lu20-a01-library
Lernende am BZZ müssen den Link zum GitHub Classroom Assignment verwenden