Verlängerung korrigiert und auch mehr Kommentare eingefügt
parent
9a4e99d73c
commit
f587243209
|
@ -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() + ")"));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -17,7 +17,7 @@ public class CD extends Medien {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getMaxVerlaengerungen() {
|
public int getMaxVerlaengerungen() {
|
||||||
return 2;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -17,7 +17,7 @@ public class DVD extends Medien {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getMaxVerlaengerungen() {
|
public int getMaxVerlaengerungen() {
|
||||||
return 1;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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() {
|
||||||
|
|
|
@ -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.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue