PR2-Testate/LibrarySystem/andereDateien/notizen/vorgehen.txt

61 lines
4.1 KiB
Plaintext

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