|
|
|
@ -0,0 +1,60 @@
|
|
|
|
|
Wie soll die Interaktion zwischen Benutzer und System aussehen?
|
|
|
|
|
|
|
|
|
|
1. Benutzer darf nur mit der UI kommunizieren;
|
|
|
|
|
2. Die UI darf nur das Bibliothekssystem (facade) sehen, vielleicht auch die Benutzer-Klasse, um sinnvoll eine Liste
|
|
|
|
|
der Benutzerverwalten zu können.
|
|
|
|
|
3. In der Domain sollen alle anderen Klassen sein, also Medium mit ihren Subklassen und Benutzer mit ihren Subklassen.
|
|
|
|
|
4. Die Klasse Bibliothekssystem darf die Klassen der Domain sehen und auf diese zugreifen können -> das kann man mit
|
|
|
|
|
'import' realisieren.
|
|
|
|
|
|
|
|
|
|
Iterationen:
|
|
|
|
|
|
|
|
|
|
1. Anmelden
|
|
|
|
|
Benutzer wählt 1 für Anmelden in die UI -> System fragt nach Kartennummer -> Eingabe durch Benutzer -> bei einer richtige
|
|
|
|
|
Eingabe (bzw. Benutzer befindet sich in die Benutzerliste) gilt der Benutzer als angemeldet und darf weiter machen
|
|
|
|
|
|
|
|
|
|
2. Medien durchsuchen
|
|
|
|
|
Benutzer wählt dafür 2 in der UI -> System fragt nach Titel und Medienart -> Eingabe durch Benutzer -> das System bildet
|
|
|
|
|
ein Stream und durchsucht die Liste für Medien nach den passenden Kriterien -> bei einer richtige Eingabe durch den
|
|
|
|
|
Benutzer wird das gesuchte Medium zurückgegeben mit ID, Titel, Autor, Erscheinungsjahr und Status der Ausleihe
|
|
|
|
|
|
|
|
|
|
3. Ausleihe eines Mediums
|
|
|
|
|
Benutzer wählt dafür 3 in der UI -> System fragt nach Kartennummer (für die Anmeldung) -> falls Benutzer existiert wird
|
|
|
|
|
nach ID des Mediums gefragt bzw. Benutzer muss diese eingeben -> stimmen die beiden Nummern, so wird das Medium in der
|
|
|
|
|
Liste mit Ausleihen des Benutzers hinzugefügt und das Rückgabedatum wird berechnet -> Benutzer bekommt die Benachrichtigung,
|
|
|
|
|
ob die Ausleihe erfolgreich war, zusammen mit dem Rückgabedatum
|
|
|
|
|
|
|
|
|
|
4. Rückgabe eines Mediums
|
|
|
|
|
Benutzer wählt dafür 4 in der UI -> System fragt nur nach Medium ID (eine Eingabe der Kartennummer ist nicht notwendig) ->
|
|
|
|
|
System sucht nach dem Medium mit der ergebenen Medium ID, und nennt der Benutzer erstmal nur Ausleiher, weiterhin unbekannt
|
|
|
|
|
ist -> System setzt den Benutzer gleich dem Ausleiher, falls in der Liste der Benutzer einen Benutzer gibt, der dieses
|
|
|
|
|
Medium in seiner Liste der Ausleihen drin hat -> Falls das richtig ist, entfernt das System das Medium aus der Liste der
|
|
|
|
|
Ausleihen des Benutzers -> System macht dann mit der Berechnung der Gebühren weiter, falls das aktuelle Datum über das
|
|
|
|
|
Rückgabedatum liegt (overdue) -> Benutzer bekommt die Ausgabe über die aktuelle Gebühren und eine Liste mit Ausleihen,
|
|
|
|
|
die der Benutzer noch hat
|
|
|
|
|
|
|
|
|
|
5. Zeige ausgeliehene Medien und Gebühren
|
|
|
|
|
Benutzer wählt dafür 5 in der UI -> System fragt nach Kartennummer (für die Anmeldung) -> falls Benutzer existiert schaut
|
|
|
|
|
das System nach seinen offenen Gebühren -> System gibt die offenen Gebühren, sowie die Liste mit der Ausleihen des
|
|
|
|
|
Benutzers an
|
|
|
|
|
|
|
|
|
|
6. Verlängern der Leihfrist
|
|
|
|
|
Benutzer wählt dafür 6 in der UI -> System fragt nach Kartennummer (für die Anmeldung) und Medium ID für das Medium,
|
|
|
|
|
das verlängert sein sollte -> Eingabe durch den Benutzer -> Falls Benutzer existiert und Medium ist von ihm ausgeliehen,
|
|
|
|
|
schaut das System, ob dieses Medium überhaupt verlängerbar ist -> falls ja, so werden die Verlängerungen um 1 niedriger
|
|
|
|
|
und das Rückgabedatum wird zurückgesetzt -> Benutzer bekommt die Ausgabe mit der neuen Leihfrist und wie viele weitere
|
|
|
|
|
Verlängerungen möglich sind für dieses eine Medium
|
|
|
|
|
|
|
|
|
|
7. Admin-Login (Überfällige Gebühren verbuchen)
|
|
|
|
|
Benutzer wählt dafür 7 in der UI -> System fragt nach Kartennummer (für die Anmeldung) -> falls die Kartennummer eine A
|
|
|
|
|
am Anfang hat, meldet das System den Benutzer als Admin an -> wenn das erfolgreich war, gibt der Admin die Kartennummer
|
|
|
|
|
des Benutzers an, der seine Gebühren bezahlen will -> falls die Kartennummer richtig ist und der Benutzer hat offenen
|
|
|
|
|
Gebühren, so werden diese passend von Benutzer bezahlt -> Admin setzt das Gebührenkonto auf 0 zurück und der Benutzer
|
|
|
|
|
hat keine offene Gebühren mehr
|
|
|
|
|
|
|
|
|
|
8.Systemdatum manuell ändern (zum Testzwecken)
|
|
|
|
|
Benutzer wählt dafür 8 in der UI -> Benutzer gibt das gewünschte Datum in YYYY-MM-DD an -> System ändert das aktuelle
|
|
|
|
|
Datum des Systems auf das neu eingebene Datum, womit er ab diesen Punkt weiter macht
|
|
|
|
|
|
|
|
|
|
0. Beenden
|
|
|
|
|
Benutzer wählt dafür 8 in der UI -> Programm wird beendet
|