3. Prüfungsvorbereitung

Kursinhalte
- Zeitansatz 45 Minuten
Prüfungsaufgabe: Reklamationsverwaltung
Ausgangslage:
In einem Reparaturservice für Elektrogeräte sollen Kundendaten und Reklamationen verwaltet werden. Es gibt bereits eine Datei kunde.py
, die eine Klasse Kunde
enthält, sowie eine JSON-Datei kunden.json
, in der alle Kundendaten gespeichert werden.
Datei: kunde.py
class Kunde:
def __init__(self, kunden_id, name, email):
self.kunden_id = kunden_id
self.name = name
self.email = email
def __str__(self):
return f"{self.kunden_id}: {self.name} ({self.email})"
Datei: kunden.json
[
{"kunden_id": 1, "name": "Mara Berger", "email": "m.berger@example.com"},
{"kunden_id": 2, "name": "Luca Klein", "email": "l.klein@example.com"}
]
Ihre Aufgabe:
Erweitern Sie die bestehende Anwendung um eine Funktion zur Verwaltung von Reklamationen. Die Reklamationen sollen in einer separaten JSON-Datei gespeichert werden. Jede Reklamation gehört zu genau einem Kunden.
Erstellen Sie dazu:
- Ein neues Modul
reklamation.py
, das eine KlasseReklamation
enthält. - Die Klasse
Reklamation
soll folgende Attribute haben:reklamations_id
(int)kunden_id
(int)produktname
(str)beschreibung
(str)status
(str, z. B. „offen“, „in Bearbeitung“, „erledigt“)
- Eine Methode
speichern_in_datei(self, dateiname)
, die die Reklamation im JSON-Format in eine Datei speichert. Wenn die Datei noch nicht existiert, soll sie erstellt werden. - Eine weitere Funktion
lade_reklamationen(dateiname: str) -> list[Reklamation]
, die alle Reklamationen aus einer Datei lädt und als Liste von Objekten zurückgibt.
# Projektstruktur
├── kunde.py # dient der Orientierung - kann, muss aber nicht verwendet werden
├── reklamation.py ← zu erstellen
├── kunden.json. # dient der Orientierung - kann, muss aber nicht verwendet werden
├── reklamationen.json ← wird durch Programm erstellt
└── main.py ← soll zur Ausführung erstellt werden
Hinweise zur Bewertung:
- Saubere Modultrennung
- Fehlerfreies Einlesen und Schreiben von JSON-Daten
- Korrekte Verwendung von Klassen und Objekten
Musterlösung:
Bei Lehrkraft hier freischalten lassen.
Datei: reklamation.py
import json
import os
class Reklamation:
def __init__(self, reklamations_id, kunden_id, produktname, beschreibung, status):
self.reklamations_id = reklamations_id
self.kunden_id = kunden_id
self.produktname = produktname
self.beschreibung = beschreibung
self.status = status
def speichern_in_datei(self, dateiname):
eintrag = self.__dict__
if os.path.exists(dateiname):
with open(dateiname, "r", encoding="utf-8") as f:
daten = json.load(f)
else:
daten = []
daten.append(eintrag)
with open(dateiname, "w", encoding="utf-8") as f:
json.dump(daten, f, indent=2)
def __str__(self):
return f"[{self.reklamations_id}] Produkt: {self.produktname}, Status: {self.status}"
def lade_reklamationen(dateiname):
reklamationen = []
try:
with open(dateiname, "r", encoding="utf-8") as f:
daten = json.load(f)
for eintrag in daten:
reklamation = Reklamation(**eintrag)
reklamationen.append(reklamation)
except FileNotFoundError:
pass
return reklamationen
Datei: main.py
from reklamation import Reklamation, lade_reklamationen
# Beispielhafte Erstellung einer Reklamation
reklamation1 = Reklamation(1001, 1, "Toaster X1", "Heizt nicht mehr", "offen")
reklamation1.speichern_in_datei("reklamationen.json")
# Laden und Ausgabe
alle = lade_reklamationen("reklamationen.json")
for r in alle:
print(r)