Prüfungsvorbereitung

Kursinhalte
- Zeitansatz 75 Minuten
Prüfungsaufgabe: Bücherverwaltungssystem
Ausgangslage:
Sie arbeiten in einer kleinen Bibliothek, die ihre Buchverwaltung digitalisieren möchte. Derzeit gibt es eine JSON-Datei mit einer Liste an Büchern. Jedes Buch enthält Titel, Autor, Erscheinungsjahr und Verfügbarkeit.
Datei: buecher.json
[
{
"titel": "Der Prozess",
"autor": "Franz Kafka",
"erscheinungsjahr": 1925,
"verfuegbar": true
},
{
"titel": "Faust",
"autor": "Johann Wolfgang von Goethe",
"erscheinungsjahr": 1808,
"verfuegbar": false
}
]
Bereits vorhandene Python-Dateien:
class Buch:
def __init__(self, titel, autor, erscheinungsjahr, verfuegbar):
self.titel = titel
self.autor = autor
self.erscheinungsjahr = erscheinungsjahr
self.verfuegbar = verfuegbar
def anzeigen(self):
status = "verfügbar" if self.verfuegbar else "ausgeliehen"
print(f"{self.titel} von {self.autor} ({self.erscheinungsjahr}) – {status}")
# TODO: Hier soll später die Hauptlogik stehen
Ihre Aufgabe:
Erweitern Sie das Projekt um folgende Funktionalitäten:
- Modulstruktur:
- Importieren Sie die Klasse
Buch
ausbuch.py
inmain.py
.
- Importieren Sie die Klasse
- Dateiverarbeitung und JSON:
- Lesen Sie die Datei
buecher.json
ein und erzeugen Sie für jeden Eintrag ein Objekt der KlasseBuch
. - Geben Sie alle Bücher mit der Methode
anzeigen()
aus.
- Lesen Sie die Datei
- Neue Funktionalität hinzufügen:
- Erstellen Sie eine Funktion, mit der ein neues Buch über Benutzereingabe hinzugefügt wird.
- Speichern Sie die aktualisierte Liste wieder in
buecher.json
.
Hinweise zur Bewertung:
- Saubere Modultrennung
- Fehlerfreies Einlesen und Schreiben von JSON-Daten
- Korrekte Verwendung von Klassen und Objekten
- Funktionierende Interaktion mit der Benutzereingabe
Musterlösung
Zum Anzeigen der Lösung die Lehrkraft fragen.
Hinweis: Die Musterlösung ist als solche zu betrachten. Nicht alle Details aus der Musterlösung müssen für eine volle Punktzahl erfüllt sein. Wichtig ist, dass die Kernfunktionen gegeben sind. Wie diese erreicht werden, wird nicht benotet.
Datei: main.py
import json
from buch import Buch
DATEINAME = "buecher.json"
def buecher_laden():
"""Lädt Bücher aus der JSON-Datei und gibt eine Liste von Buch-Objekten zurück."""
try:
with open(DATEINAME, "r", encoding="utf-8") as f:
daten = json.load(f)
return [Buch(**eintrag) for eintrag in daten]
except FileNotFoundError:
print("Datei nicht gefunden. Es wird eine leere Liste erstellt.")
return []
except json.JSONDecodeError:
print("Fehler beim Lesen der JSON-Datei.")
return []
def buecher_speichern(buecher_liste):
"""Speichert die aktuelle Liste der Bücher in der JSON-Datei."""
daten = [
{
"titel": buch.titel,
"autor": buch.autor,
"erscheinungsjahr": buch.erscheinungsjahr,
"verfuegbar": buch.verfuegbar
}
for buch in buecher_liste
]
with open(DATEINAME, "w", encoding="utf-8") as f:
json.dump(daten, f, ensure_ascii=False, indent=2)
def neues_buch_hinzufuegen():
"""Fragt Benutzereingaben ab und gibt ein neues Buch-Objekt zurück."""
print("\n--- Neues Buch hinzufügen ---")
titel = input("Titel: ")
autor = input("Autor: ")
try:
erscheinungsjahr = int(input("Erscheinungsjahr: "))
except ValueError:
print("Ungültiges Jahr. Standardwert 2000 wird gesetzt.")
erscheinungsjahr = 2000
verfuegbar_input = input("Verfügbar? (ja/nein): ").strip().lower()
verfuegbar = verfuegbar_input == "ja"
return Buch(titel, autor, erscheinungsjahr, verfuegbar)
def main():
buecher = buecher_laden()
print("\n--- Bücherliste ---")
for buch in buecher:
buch.anzeigen()
buch_neu = neues_buch_hinzufuegen()
buecher.append(buch_neu)
buecher_speichern(buecher)
print("\nDas Buch wurde erfolgreich hinzugefügt und gespeichert.")
if __name__ == "__main__":
main()
Datei: buecher.json
[
{
"titel": "Der Prozess",
"autor": "Franz Kafka",
"erscheinungsjahr": 1925,
"verfuegbar": true
},
{
"titel": "Faust",
"autor": "Johann Wolfgang von Goethe",
"erscheinungsjahr": 1808,
"verfuegbar": false
}
]