weitere Verbesserungen, vorgehen.txt hinzugefügt

devIoana
ioana 2024-11-19 10:03:08 +01:00
parent beae8953c7
commit 25f5896a5f
5 changed files with 66 additions and 5 deletions

View File

@ -27,7 +27,7 @@ public class UI {
System.out.println("5. Zeige ausgeliehene Medien und Gebühren"); System.out.println("5. Zeige ausgeliehene Medien und Gebühren");
System.out.println("6. Verlängern der Leihfrist"); System.out.println("6. Verlängern der Leihfrist");
System.out.println("7. Admin-Login (Überfällige Gebühren verbuchen)"); System.out.println("7. Admin-Login (Überfällige Gebühren verbuchen)");
System.out.println("8. Systemdatum manuell ändern."); System.out.println("8. Systemdatum manuell ändern");
System.out.println("0. Beenden\n"); System.out.println("0. Beenden\n");
System.out.print("Bitte wählen Sie eine Option: "); System.out.print("Bitte wählen Sie eine Option: ");
int auswahl = scanner.nextInt(); int auswahl = scanner.nextInt();

View File

@ -1,7 +1,7 @@
ich: erstelle eine Methode, die das Medienkatalog nach Titel, medienart und ob es ausgeliehen ist durchsucht ich: erstelle eine Methode, die der Medienkatalog nach Titel, medienart und ob es ausgeliehen ist durchsucht
AI: Hier ist die Methode durchsuchenMedien(String titelTeil, String medienart, Boolean istAusgeliehen), AI: Hier ist die Methode durchsuchenMedien(String titelTeil, String medienart, Boolean istAusgeliehen),
die das Medienkatalog nach Titel, medienart und ob es ausgeliehen ist durchsucht die der Medienkatalog nach Titel, medienart und ob es ausgeliehen ist durchsucht
Java Code: Java Code:
// Durchsuchen der Medien nach einem Titel (Teilstring) und Filterung nach Eigenschaften // Durchsuchen der Medien nach einem Titel (Teilstring) und Filterung nach Eigenschaften

View File

@ -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

View File

@ -96,7 +96,7 @@ public abstract class Medium implements Ausleihbar{
@Override @Override
public String toString() { public String toString() {
return "ID: " + ID + ", Titel: " + titel + ", Autor: " + autor + ", Erscheinungsjahr: " + erscheinungsjahr; return "ID: " + ID + ", Titel: " + titel + ", Autor: " + autor + ", Erscheinungsjahr: " + erscheinungsjahr + ", Ausgeliehen: " + ausgeliehen;
} }
} }

View File

@ -182,6 +182,7 @@ public class BibliothekSystem {
if (medium.istVerlaengerbar()) { if (medium.istVerlaengerbar()) {
if (medium.istVerlaengerbar()) { if (medium.istVerlaengerbar()) {
medium.verlaengerungen--; medium.verlaengerungen--;
//setAktuellesDatum(aktuellesDatum); //hier Änderung gemacht, wohin stand setzeAktuellesDatumZurueck
setzeAktuellesDatumZurueck(); setzeAktuellesDatumZurueck();
medium.setRueckgabedatum(medium.rechneRueckgabedatum(aktuellesDatum)); medium.setRueckgabedatum(medium.rechneRueckgabedatum(aktuellesDatum));
} else{ } else{
@ -195,7 +196,7 @@ public class BibliothekSystem {
} }
} else { } else {
System.out.println("Verlängerung nicht möglich, da Kartennummer flasch ist oder Medium existiert nicht."); System.out.println("Verlängerung nicht möglich, da Kartennummer falsch ist oder Medium existiert nicht.");
} }
} }