Files
docs/usecases.md
Piet Ostendorp 2df2622cfc Add use case diagram and documentation
Added a PlantUML use case diagram and a markdown file describing the main use cases for the cinema system, including seat reservation, booking, cancellation, conversion, ticket status check, and statistics display for different user roles.
2025-10-16 01:50:12 +02:00

43 lines
5.1 KiB
Markdown

## Anwendungsfälle
### 🟦🟩 Programmübersicht anschauen
Ein Kunde oder Mitarbeiter (für einen Kunden) möchte sich über das aktuelle InfiniMotion-Kinoprogramm informieren. Das System zeigt dazu eine chronologisch sortierte Übersicht aller kommenden Vorstellungen an. Jede Vorstellung enthält relevante Filminformationen, darunter Titel, Beschreibung, Spieldauer und Sprache. Sofern eine Vorstellung noch nicht begonnen hat und nicht ausgebucht ist, bietet das System dem Benutzer die Möglichkeit, direkt aus der Programmübersicht heraus einen oder mehrere Sitzplätze entweder *zu reservieren* oder verbindlich *zu buchen*.
### 🟦🟩 Sitzplatz reservieren
Ein Kunde oder Mitarbeiter (für einen Kunden) kann einen oder mehrere Sitzplätze für eine bestimmte Vorstellung unverbindlich reservieren. Das System bietet dabei eine freie Sitzplatzwahl unter allen noch nicht reservierten oder gebuchten Sitzplätzen. Eine Sitzplatzreservierung ist nicht verbindlich und kann im Gegensatz zu einer *Sitzplatzbuchung* jederzeit *storniert* werden. Nach Abschluss der Reservierung werden die gewählten Sitzplätze im System blockiert und stehen anderen Benutzern nicht mehr zur Verfügung. Der Benutzer erhält eine Reservierungsbestätigung mit allen relevanten Informationen zur Vorstellung und den reservierten Plätzen sowie ein Reservierungscode, über den die Reservierung zu einem späteren Zeitpunkt in eine *Buchung umgewandelt und bezahlt* werden kann.
### 🟦🟩 Sitzplatz buchen
Ein Kunde oder Mitarbeiter (für einen Kunden) kann einen oder mehrere Sitzplätze für eine bestimmte Vorstellung verbindlich buchen. Das System bietet dabei eine freie Sitzplatzwahl unter allen noch nicht reservierten oder gebuchten Sitzplätzen. Eine Sitzplatzbuchung ist verbindlich und kann im Gegensatz zu einer *Sitzplatzreservierung* nicht storniert werden. Nach Abschluss der Buchung werden die gewählten Sitzplätze im System blockiert und stehen anderen Benutzern nicht mehr zur Verfügung. Der Buchungsprozess umfasst zudem die Zahlung der anfallenden Ticketkosten. Nach erfolgreicher Bezahlung erhält der Kunde eine Buchungsbestätigung mit allen relevanten Informationen zur Vorstellung und den gebuchten Plätzen sowie ein Ticketcode, welcher zur Einlasskontrolle (*Ticketstatus prüfen*) vorgezeigt werden kann.
### 🟦🟩 Sitzplatzreservierung stornieren
Ein Kunde oder Mitarbeiter (für einen Kunden) kann einen oder mehrere **reservierte** Sitzplätze stornieren. Nach der Stornierung der Sitzplätze werden die jeweiligen Sitzplätze wieder freigegeben und stehen anderen Benutzern wieder zur *Reservierung* oder *Buchung* zur Verfügung. Für die Stornierung ist der bei der *Reservierung* erhaltene Reservierungscode notwendig. Es können einzelne oder alle Sitzplätze einer Reservierung storniert werden. Eine Stornierung von gebuchten Sitzplätzen ist nicht möglich. Der Reservierungscode wird nach erfolgreicher Stornierung entweder ungültig, wenn alle Sitzplätze storniert wurden, oder auf die verbleibenden Sitzplätze angepasst, falls nur ein Teil storniert wurde.
### 🟦🟩 Sitzplatzreservierung in Buchung umwandeln
Ein Kunde oder Mitarbeiter (für einen Kunden) kann eine zuvor getätigte Reservierung in eine verbindliche Buchung umwandeln. Dazu ist der bei der *Reservierung* erhaltene Reservierungscode notwendig. Voraussetzung ist zudem, dass die jeweilige Vorstellung noch nicht stattgefunden hat. Es können einzelne oder alle Sitzplätze einer Reservierung in eine Buchung umgewandelt werden. Der Kunde zahlt die anfallenden Ticketkosten für die ausgewählten Sitzplätze.
Alle nicht gebuchten Sitzplätze der Reservierung werden anschließend freigegeben und stehen anderen Benutzern wieder zur *Reservierung* oder *Buchung* zur Verfügung. Nach erfolgreicher Zahlung wird der Reservierungscode in eine Ticketcode umgewandelt, welcher zur Einlasskontrolle (*Ticketstatus prüfen*) vorgezeigt werden kann.
### 🟩 Ticketstatus prüfen (Einlasskontrolle)
Ein Mitarbeiter kann beim Einlass das Ticket eines Kunden kontrollieren. Dazu ist der bei der *Buchung* erhaltene Ticketcode notwendig. Der Mitarbeiter scannt dazu das Ticket (gibt Ticketcode ein). Ist der Code **ungültig**, zeigt das System eine Fehlermeldung an und der Kunde wird nicht hereingelassen. Handelt es sich um einen **Reservierungscode** statt eines Ticketcodes, weist das System darauf hin, dass die Reservierung zunächst in eine Buchung umgewandelt werden muss. Der Kunde wird in diesem Fall ebenfalls nicht eingelassen. Ist der Code **gültig**, so wird der Kunde eingelassen. Voraussetzung hierfür ist allerdings, dass die Vorstellung innerhalb der nächsten Stunden beginnt und nicht schon beendet ist. Nach erfolgreicher Prüfung wird im System hinterlegt, dass das Ticket bereits verwendet wurde, sodass eine Mehrfachverwendung ausgeschlossen ist.
### 🟥 Kinostatistik anzeigen
Der Kinoinhaber kann sich Statistiken (gesamt, pro Vorstellung oder pro Film) zu seinem Kinobetrieb anzeigen lassen. \
Dazu gehören unter anderem:
* Besucheranzahl
* Einnahmen
* Anzahl reservierter/gebuchter Sitzplätze
* Beliebteste Filme basierend auf Besucheranzahlen
<br/>
### Legende
🟦 Kunde \
🟩 Mitarbeiter \
🟥 Inhaber