Verlängerung korrigiert und auch mehr Kommentare eingefügt

development
Leon Maximilian Löhle 2024-11-19 11:17:05 +01:00
parent 9a4e99d73c
commit f587243209
19 changed files with 77 additions and 34 deletions

View File

@ -145,23 +145,32 @@ public class Bibliotheksverwaltung {
} }
} }
/**
public void medienVerlaengern(String medienId, String kundenId, int aktuelleVerlaengerungen) { *Wenn ein Kunde ein von Ihm ausgeliehenes Medium verlängern möchte und das Medium verlängert werden kann
*wird das Medium um die erlaubte Zeit verlänegrt
* @param medienId
* @param kundenId
*/
public void medienVerlaengern(String medienId, String kundenId) {
Medien medien = medienBestand.get(medienId); Medien medien = medienBestand.get(medienId);
Kunde kunde = kundenListe.get(kundenId); Kunde kunde = kundenListe.get(kundenId);
if (medien != null && kunde != null) { if (medien != null && kunde != null) {
boolean erfolg = kunde.medienVerlaengern(medien, aktuelleVerlaengerungen); boolean erfolg = kunde.medienVerlaengern(medien);
if (erfolg) { if (erfolg) {
System.out.println("Medium erfolgreich verlängert: " + medien.getTitel()); System.out.println("Medium erfolgreich verlängert: " + medien.getTitel());
} else { } else {
System.out.println("Verlängerung nicht möglich: Maximale Anzahl erreicht."); System.out.println("Verlängerung nicht möglich: Maximale Anzahl erreicht oder Medium ist nicht verlängerbar.");
} }
} else { } else {
System.out.println(medien == null ? "Medium nicht gefunden." : "Kunde nicht gefunden."); System.out.println(medien == null ? "Medium nicht gefunden." : "Kunde nicht gefunden.");
} }
} }
/**
* Erlaubt es neue Medien hinzuzufügen mit ihrer Id und es wird überprüft ob die ID schon vorhanden ist
* @param medien
*/
public void medienHinzufuegen(Medien medien) { public void medienHinzufuegen(Medien medien) {
String id = medien.getId().trim().toUpperCase(); // Normalisierung String id = medien.getId().trim().toUpperCase(); // Normalisierung
if (medienBestand.containsKey(id)) { if (medienBestand.containsKey(id)) {
@ -172,6 +181,12 @@ public class Bibliotheksverwaltung {
System.out.println("Medium hinzugefügt: " + medien.getTitel() + " (ID: " + id + ")"); System.out.println("Medium hinzugefügt: " + medien.getTitel() + " (ID: " + id + ")");
} }
/**
* Erlaubt es einem registrierten Kunden sich einzuloggen, wenn der Kunde bereits eingeloggt ist,
* wird eine Nachricht darüber zurückgegeben sowie auch wenn der Kunde noch nicht existiert
* @param kundenId
* @return
*/
public boolean loginKunde(String kundenId) { public boolean loginKunde(String kundenId) {
if (eingeloggterBenutzer != null) { if (eingeloggterBenutzer != null) {
System.out.println("Ein Benutzer ist bereits eingeloggt: " + eingeloggterBenutzer.getName()); System.out.println("Ein Benutzer ist bereits eingeloggt: " + eingeloggterBenutzer.getName());
@ -188,6 +203,11 @@ public class Bibliotheksverwaltung {
} }
} }
/**
* Erlaubt es einem Admin sich einzuloggen so wie es auch beim Kunden läuft
* @param adminId
* @return
*/
public boolean loginAdmin(String adminId) { public boolean loginAdmin(String adminId) {
if (eingeloggterBenutzer != null) { if (eingeloggterBenutzer != null) {
System.out.println("Ein Benutzer ist bereits eingeloggt: " + eingeloggterBenutzer.getName()); System.out.println("Ein Benutzer ist bereits eingeloggt: " + eingeloggterBenutzer.getName());
@ -204,6 +224,9 @@ public class Bibliotheksverwaltung {
} }
} }
/**
* loggt den Benutzer aus, sollte allerdings keiner eingeloggt sein wird eine Fehlermeldung ausgegeben
*/
public void logout() { public void logout() {
if (eingeloggterBenutzer != null) { if (eingeloggterBenutzer != null) {
System.out.println("Benutzer " + eingeloggterBenutzer.getName() + " wurde ausgeloggt."); System.out.println("Benutzer " + eingeloggterBenutzer.getName() + " wurde ausgeloggt.");
@ -213,6 +236,13 @@ public class Bibliotheksverwaltung {
} }
} }
/**
* Erstellt einen neuen Kunden mit dem K oder S präfix sowie einer hochzählenden Nummer um erkenntlich zu machen
* ob ein Student oder ein normaler Kunde vorhanden ist
* @param name
* @param istStudent
* @return
*/
public Kunde registriereKunde(String name, boolean istStudent) { public Kunde registriereKunde(String name, boolean istStudent) {
String prefix = istStudent ? "S" : "K"; String prefix = istStudent ? "S" : "K";
int maxId = kundenListe.keySet().stream() int maxId = kundenListe.keySet().stream()
@ -228,6 +258,9 @@ public class Bibliotheksverwaltung {
return neuerKunde; return neuerKunde;
} }
/**
* Erlaubt es dem Kunden seine ausgeliehenen Medien anzusehen als auch ob überziehungskosten entstanden sind
*/
public void zeigeAusgelieheneMedien() { public void zeigeAusgelieheneMedien() {
if (!(eingeloggterBenutzer instanceof Kunde)) { if (!(eingeloggterBenutzer instanceof Kunde)) {
System.out.println("Nur eingeloggte Kunden können ausgeliehene Medien anzeigen."); System.out.println("Nur eingeloggte Kunden können ausgeliehene Medien anzeigen.");
@ -249,11 +282,4 @@ public class Bibliotheksverwaltung {
} }
} }
public void pruefeUeberzogeneMedien() {
System.out.println("Überzogene Medien (Stand: " + aktuellesDatum + "):");
medienBestand.values().stream()
.filter(medien -> !medien.verfuegbar() && medien.istUeberzogen(aktuellesDatum))
.forEach(medien -> System.out.println("- " + medien.getDetails() + " (Rückgabedatum: " + medien.getRueckgabedat() + ")"));
}
} }

View File

@ -12,12 +12,12 @@ public class Brettspiel extends Medien {
@Override @Override
public int getAusleihdauer() { public int getAusleihdauer() {
return 3; return 2;
} }
@Override @Override
public int getMaxVerlaengerungen() { public int getMaxVerlaengerungen() {
return 1; return 0;
} }
@Override @Override

View File

@ -17,7 +17,7 @@ public class CD extends Medien {
@Override @Override
public int getMaxVerlaengerungen() { public int getMaxVerlaengerungen() {
return 2; return 0;
} }
@Override @Override

View File

@ -17,7 +17,7 @@ public class DVD extends Medien {
@Override @Override
public int getMaxVerlaengerungen() { public int getMaxVerlaengerungen() {
return 1; return 0;
} }
@Override @Override

View File

@ -38,10 +38,16 @@ public class Kunde extends User {
.sum(); .sum();
} }
public Medien sucheAusgeliehenesMedium(String medienId) {
return ausgelieheneMedien.stream()
.filter(medien -> medien.getId().equalsIgnoreCase(medienId))
.findFirst()
.orElse(null);
}
public boolean medienVerlaengern(Medien medien, int aktuelleVerlaengerungen) { public boolean medienVerlaengern(Medien medien) {
Consumer<Medien> verlaengerung = m -> { Consumer<Medien> verlaengerung = m -> {
if (ausgelieheneMedien.contains(m) && m.verlaengern(aktuelleVerlaengerungen)) { if (ausgelieheneMedien.contains(m) && m.verlaengern()) { // Kein Argument übergeben
System.out.println("Medium verlängert: " + m.getTitel()); System.out.println("Medium verlängert: " + m.getTitel());
} else { } else {
System.out.println("Verlängerung nicht möglich."); System.out.println("Verlängerung nicht möglich.");
@ -50,4 +56,5 @@ public class Kunde extends User {
verlaengerung.accept(medien); verlaengerung.accept(medien);
return false; return false;
} }
} }

View File

@ -70,13 +70,21 @@ public abstract class Medien {
return verlaengerungen; return verlaengerungen;
} }
public boolean verlaengern(int aktuelleVerlaengerungen) { public boolean verlaengern() {
if (aktuelleVerlaengerungen < getMaxVerlaengerungen()) { if (getMaxVerlaengerungen() == 0) {
System.out.println("Dieses Medium kann nicht verlängert werden.");
return false;
}
if (verlaengerungen < getMaxVerlaengerungen()) {
verlaengerungen++; verlaengerungen++;
rueckgabedat = rueckgabedat.plusWeeks(getAusleihdauer()); rueckgabedat = rueckgabedat.plusWeeks(getAusleihdauer());
System.out.println("Das Medium wurde verlängert. Neues Rückgabedatum: " + rueckgabedat);
return true; return true;
} else {
System.out.println("Maximale Verlängerungsanzahl erreicht.");
return false;
} }
return false;
} }
public void zurueckgeben() { public void zurueckgeben() {

View File

@ -140,20 +140,22 @@ public class UI {
} }
private void medienVerlaengern() { private void medienVerlaengern() {
if (!(verwaltung.getEingeloggterBenutzer() instanceof Kunde)) {
System.out.println("Bitte loggen Sie sich als Kunde ein, um Medien zu verlängern.");
return;
}
System.out.print("Medium-ID eingeben: "); System.out.print("Medium-ID eingeben: ");
String medienId = scanner.nextLine(); String medienId = scanner.nextLine();
System.out.print("Anzahl bisheriger Verlängerungen eingeben: "); if (!(verwaltung.getEingeloggterBenutzer() instanceof Kunde)) {
int verlaengerungen; System.out.println("Nur Kunden können Medien verlängern.");
try { return;
verlaengerungen = Integer.parseInt(scanner.nextLine()); }
Kunde kunde = (Kunde) verwaltung.getEingeloggterBenutzer(); Kunde kunde = (Kunde) verwaltung.getEingeloggterBenutzer();
verwaltung.medienVerlaengern(medienId, kunde.getId(), verlaengerungen); Medien medien = kunde.sucheAusgeliehenesMedium(medienId); // Suche im Kundenbestand
} catch (NumberFormatException e) { if (medien == null) {
System.out.println("Ungültige Eingabe für Verlängerungen. Bitte eine Zahl eingeben."); System.out.println("Medium wurde nicht gefunden oder gehört nicht zu diesem Kunden.");
return;
}
// Versuch, das Medium zu verlängern
if (!medien.verlaengern()) {
System.out.println("Die Verlängerung war nicht erfolgreich.");
} }
} }

View File

@ -12,12 +12,12 @@ public class Videospiel extends Medien {
@Override @Override
public int getAusleihdauer() { public int getAusleihdauer() {
return 2; return 4;
} }
@Override @Override
public int getMaxVerlaengerungen() { public int getMaxVerlaengerungen() {
return 2; return 1;
} }
@Override @Override