Verbesserungen, Berechnung der Gebühren muss noch verbessert werden
parent
af98476a1a
commit
1faa14fd5f
|
@ -1,4 +1,4 @@
|
||||||
package LibrarySystem.UI;
|
/*package LibrarySystem.UI;
|
||||||
|
|
||||||
import LibrarySystem.domain.benutzern.*;
|
import LibrarySystem.domain.benutzern.*;
|
||||||
import LibrarySystem.domain.medien.*;
|
import LibrarySystem.domain.medien.*;
|
||||||
|
@ -22,8 +22,8 @@ public class BibTest {
|
||||||
system.benutzerRegistrieren(student);
|
system.benutzerRegistrieren(student);
|
||||||
|
|
||||||
// Medien erstellen
|
// Medien erstellen
|
||||||
Medium buch = new Buch(123, "Java Programmieren", "BP", 2020,"Buch");
|
Medium buch = new Buch("123", "Java Programmieren", "BP", 2020,"Buch");
|
||||||
Medium dvd = new DVD(456, "Der große Film", "JP",2018, "DVD");
|
Medium dvd = new DVD("456", "Der große Film", "JP",2018, "DVD");
|
||||||
|
|
||||||
// Datum setzen und Ausleihe simulieren
|
// Datum setzen und Ausleihe simulieren
|
||||||
system.datumAendern(LocalDate.of(2024, 11, 10));
|
system.datumAendern(LocalDate.of(2024, 11, 10));
|
||||||
|
@ -34,7 +34,7 @@ public class BibTest {
|
||||||
|
|
||||||
// Rückgabe simulieren
|
// Rückgabe simulieren
|
||||||
system.datumAendern(LocalDate.of(2024, 12, 15)); // Datum ändern
|
system.datumAendern(LocalDate.of(2024, 12, 15)); // Datum ändern
|
||||||
student.rueckgabe(456, system.getAktuellesDatum());
|
student.rueckgabe("456", system.getAktuellesDatum());
|
||||||
|
|
||||||
//Bezahlung der Gebühren simulieren
|
//Bezahlung der Gebühren simulieren
|
||||||
system.zeigeGebuehren(erwachsener);
|
system.zeigeGebuehren(erwachsener);
|
||||||
|
@ -55,4 +55,4 @@ public class BibTest {
|
||||||
System.out.println("Jahresgebühr: " + admin.getJahresgebuehr() + " EUR");
|
System.out.println("Jahresgebühr: " + admin.getJahresgebuehr() + " EUR");
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}*/
|
|
@ -8,12 +8,6 @@ public class BibliothekTest {
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
BibliothekSystem system = new BibliothekSystem();
|
BibliothekSystem system = new BibliothekSystem();
|
||||||
|
|
||||||
// Beispiel: Benutzer und Admin hinzufügen
|
|
||||||
Benutzer student = new Student("Ana Misk", 21);
|
|
||||||
Admin admin = new Admin("Alisa Admin", 40);
|
|
||||||
system.benutzerRegistrieren(student);
|
|
||||||
system.benutzerRegistrieren(admin);
|
|
||||||
|
|
||||||
// UI starten
|
// UI starten
|
||||||
UI ui = new UI(system);
|
UI ui = new UI(system);
|
||||||
ui.starten();
|
ui.starten();
|
||||||
|
|
|
@ -16,90 +16,86 @@ public class UI {
|
||||||
|
|
||||||
public void starten() {
|
public void starten() {
|
||||||
while (true) {
|
while (true) {
|
||||||
System.out.println("Willkommen in der Bibliothek!");
|
System.out.println("Willkommen in der Bibliothek!\n");
|
||||||
System.out.println("1. Anmelden");
|
System.out.println("1. Anmelden");
|
||||||
System.out.println("2. Medien durchsuchen");
|
System.out.println("2. Medien durchsuchen");
|
||||||
System.out.println("3. Ausleihen eines Mediums");
|
System.out.println("3. Ausleihen eines Mediums");
|
||||||
System.out.println("4. Rückgabe eines Mediums");
|
System.out.println("4. Rückgabe eines Mediums");
|
||||||
System.out.println("5. Zeige ausgeliehene Gegenstände 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("0. Beenden");
|
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();
|
||||||
scanner.nextLine();
|
scanner.nextLine();
|
||||||
|
|
||||||
switch (auswahl) {
|
switch (auswahl) {
|
||||||
case 1:
|
case 1 -> anmelden();
|
||||||
anmelden();
|
case 2 -> durchsuchenMedien();
|
||||||
break;
|
case 3 -> ausleihenMedium();
|
||||||
case 2:
|
case 4 -> rueckgabeMedium();
|
||||||
durchsuchenMedien();
|
case 5 -> zeigeAusgelieheneMedienUndGebuehren();
|
||||||
break;
|
case 6 -> verlaengernLeihfrist();
|
||||||
case 3:
|
case 7 -> adminLogin();
|
||||||
ausleihenMedium();
|
case 0 -> {
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
rueckgabeMedium();
|
|
||||||
break;
|
|
||||||
case 5:
|
|
||||||
zeigeAusgelieheneMedienUndGebuehren();
|
|
||||||
break;
|
|
||||||
case 6:
|
|
||||||
verlaengernLeihfrist();
|
|
||||||
break;
|
|
||||||
case 7:
|
|
||||||
adminLogin();
|
|
||||||
break;
|
|
||||||
case 0:
|
|
||||||
System.out.println("Auf Wiedersehen!");
|
System.out.println("Auf Wiedersehen!");
|
||||||
return;
|
return;
|
||||||
default:
|
}
|
||||||
System.out.println("Ungültige Auswahl, bitte erneut versuchen.");
|
default -> System.out.println("Ungültige Auswahl, bitte erneut versuchen.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void anmelden() {
|
//1. Anmelden
|
||||||
System.out.print("Bitte geben Sie Ihre Kartennummer ein: ");
|
private void anmelden() {
|
||||||
String kartennummer = scanner.nextLine();
|
System.out.print("Bitte geben Sie Ihre Kartennummer ein: ");
|
||||||
Benutzer benutzer = system.anmelden(kartennummer);
|
String kartennummer = scanner.nextLine();
|
||||||
if (benutzer != null) {
|
Benutzer benutzer = system.anmelden(kartennummer);
|
||||||
System.out.println("Erfolgreich angemeldet als: " + benutzer.getName());
|
if (benutzer != null) {
|
||||||
}
|
System.out.println("Willkommen! Erfolgreich angemeldet als: " + benutzer.getName());
|
||||||
}
|
} else {
|
||||||
|
System.out.println("Flasche Kartennummer. Bitte erneut versuchen!");
|
||||||
private void durchsuchenMedien() {
|
}
|
||||||
System.out.println("Durchsuchen der Medien: (bitte nur Titel und Medienart eingeben)");
|
|
||||||
System.out.println("Titel: ");
|
|
||||||
String titel = scanner.nextLine();
|
|
||||||
System.out.println("Medienart: ");
|
|
||||||
String medienart = scanner.nextLine();
|
|
||||||
system.durchsuchenMedien(titel, medienart);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ausleihenMedium() {
|
|
||||||
System.out.print("Bitte geben Sie die ID des Mediums ein, das Sie ausleihen möchten: ");
|
|
||||||
String mediumId = scanner.nextLine();
|
|
||||||
// Beispiel: Medium finden und ausleihen
|
|
||||||
System.out.println("Medium mit ID " + mediumId + " ausgeliehen.");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//2. Medien durchsuchen
|
||||||
|
private void durchsuchenMedien() {
|
||||||
|
System.out.println("Durchsuchen der Medien: (bitte nur Titel und Medienart eingeben)");
|
||||||
|
System.out.println("Titel: ");
|
||||||
|
String titel = scanner.nextLine();
|
||||||
|
System.out.println("Medienart: ");
|
||||||
|
String medienart = scanner.nextLine();
|
||||||
|
system.durchsuchenMedien(titel, medienart);
|
||||||
|
}
|
||||||
|
|
||||||
|
//3. Ausleihe eines Mediums
|
||||||
|
private void ausleihenMedium() {
|
||||||
|
System.out.println("Bitte melden Sie sich mit der Kartennummer ein: ");
|
||||||
|
String kartennummer = scanner.nextLine();
|
||||||
|
System.out.print("Bitte geben Sie die ID des Mediums ein, das Sie ausleihen möchten: ");
|
||||||
|
String mediumID = scanner.nextLine();
|
||||||
|
system.ausleiheMedium(kartennummer, mediumID);
|
||||||
|
}
|
||||||
|
|
||||||
|
//4. Rückgabe eines Mediums
|
||||||
private void rueckgabeMedium() {
|
private void rueckgabeMedium() {
|
||||||
System.out.print("Bitte geben Sie die ID des Mediums ein, das Sie zurückgeben möchten: ");
|
System.out.print("Bitte geben Sie die ID des Mediums ein, das Sie zurückgeben möchten: ");
|
||||||
String mediumId = scanner.nextLine();
|
String mediumId = scanner.nextLine();
|
||||||
// Beispiel: Medium zurückgeben
|
system.rueckgabeMedium(mediumId);
|
||||||
System.out.println("Medium mit ID " + mediumId + " zurückgegeben.");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//5. Zeige ausgeliehene Medien und Gebühren
|
||||||
private void zeigeAusgelieheneMedienUndGebuehren() {
|
private void zeigeAusgelieheneMedienUndGebuehren() {
|
||||||
System.out.print("Bitte geben Sie Ihre Kartennummer ein: ");
|
System.out.print("Bitte geben Sie Ihre Kartennummer ein: ");
|
||||||
String kartennummer = scanner.nextLine();
|
String kartennummer = scanner.nextLine();
|
||||||
Benutzer benutzer = system.anmelden(kartennummer);
|
Benutzer benutzer = system.anmelden(kartennummer);
|
||||||
if (benutzer != null) {
|
if (benutzer != null) {
|
||||||
system.zeigeGebuehren(benutzer);
|
//system.zeigeGebuehren(benutzer);
|
||||||
|
benutzer.anzeigenAusleihen();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//6. Verlängern der Leihfrist
|
||||||
private void verlaengernLeihfrist() {
|
private void verlaengernLeihfrist() {
|
||||||
System.out.print("Bitte geben Sie die ID des Mediums ein, dessen Leihfrist Sie verlängern möchten: ");
|
System.out.print("Bitte geben Sie die ID des Mediums ein, dessen Leihfrist Sie verlängern möchten: ");
|
||||||
String mediumId = scanner.nextLine();
|
String mediumId = scanner.nextLine();
|
||||||
|
@ -107,6 +103,7 @@ public class UI {
|
||||||
// Logik zur Verlängerung der Leihfrist hinzufügen
|
// Logik zur Verlängerung der Leihfrist hinzufügen
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//7. Admin-Login
|
||||||
private void adminLogin() {
|
private void adminLogin() {
|
||||||
System.out.print("Bitte geben Sie Ihre Admin-Kartennummer ein: ");
|
System.out.print("Bitte geben Sie Ihre Admin-Kartennummer ein: ");
|
||||||
String kartennummer = scanner.nextLine();
|
String kartennummer = scanner.nextLine();
|
||||||
|
@ -125,7 +122,6 @@ public class UI {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,64 +0,0 @@
|
||||||
package LibrarySystem.domain.ausleihe;
|
|
||||||
|
|
||||||
import LibrarySystem.domain.medien.*;
|
|
||||||
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.time.LocalTime;
|
|
||||||
import java.time.temporal.ChronoUnit;
|
|
||||||
|
|
||||||
public class Ausleihe {
|
|
||||||
|
|
||||||
private Medium medium;
|
|
||||||
private LocalDate ausleiheDatum;
|
|
||||||
private LocalDate rueckgabeFrist;
|
|
||||||
private boolean zurueckgegeben;
|
|
||||||
|
|
||||||
public Ausleihe(Medium medium, LocalDate ausleiheDatum) {
|
|
||||||
this.medium = medium;
|
|
||||||
this.ausleiheDatum = ausleiheDatum;
|
|
||||||
this.rueckgabeFrist = ausleiheDatum.plusDays(medium.getAusleihdauer());
|
|
||||||
this.zurueckgegeben = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Methode zur Berechnung der Gebühren
|
|
||||||
public double berechneGebuehren(LocalDate aktuellesDatum) {
|
|
||||||
if (zurueckgegeben || aktuellesDatum.isBefore(rueckgabeFrist)) {
|
|
||||||
return 0.0; // Keine Gebühren, wenn noch rechtzeitig
|
|
||||||
}
|
|
||||||
|
|
||||||
long ueberfaelligeTage = ChronoUnit.DAYS.between(rueckgabeFrist, aktuellesDatum);
|
|
||||||
double gebuehren = 0.0;
|
|
||||||
|
|
||||||
if (ueberfaelligeTage <= 7) {
|
|
||||||
gebuehren = ueberfaelligeTage * 1.0; // 1€ pro Tag für die ersten 7 Tage
|
|
||||||
} else {
|
|
||||||
gebuehren = (7 * 1.0) + ((ueberfaelligeTage - 7) * 2.0); // 2€ pro Tag ab dem 8. Tag
|
|
||||||
}
|
|
||||||
|
|
||||||
return gebuehren;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isZurueckgegeben() {
|
|
||||||
return zurueckgegeben;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setZurueckgegeben(boolean zurueckgegeben) {
|
|
||||||
this.zurueckgegeben = zurueckgegeben;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Medium getMedium() {
|
|
||||||
return medium;
|
|
||||||
}
|
|
||||||
|
|
||||||
public LocalDate getRueckgabeFrist() {
|
|
||||||
return rueckgabeFrist;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return medium.getTitel() + " (Rückgabefrist: " + rueckgabeFrist + ")";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
|
@ -3,12 +3,10 @@ package LibrarySystem.domain.benutzern;
|
||||||
|
|
||||||
import LibrarySystem.domain.medien.Medium;
|
import LibrarySystem.domain.medien.Medium;
|
||||||
|
|
||||||
import java.time.LocalDate;
|
|
||||||
|
|
||||||
public class Admin extends Benutzer {
|
public class Admin extends Benutzer {
|
||||||
|
|
||||||
public Admin(String name, int alter) {
|
public Admin(String kartennummer, String name, int alter) {
|
||||||
super(name, alter, "A");
|
super(kartennummer,name, alter, "A");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -32,10 +30,5 @@ public class Admin extends Benutzer {
|
||||||
System.out.println("Keine offene Gebühren für " + benutzer.getName() + ".") ;
|
System.out.println("Keine offene Gebühren für " + benutzer.getName() + ".") ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void ausleihen(Medium medium, LocalDate datum) {
|
|
||||||
System.out.println("Admins können keine Medien ausleihen.");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,23 +1,19 @@
|
||||||
package LibrarySystem.domain.benutzern;
|
package LibrarySystem.domain.benutzern;
|
||||||
|
|
||||||
import LibrarySystem.domain.ausleihe.*;
|
|
||||||
import LibrarySystem.domain.medien.*;
|
import LibrarySystem.domain.medien.*;
|
||||||
|
|
||||||
import java.time.LocalDate;
|
import java.util.*;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
public abstract class Benutzer {
|
public abstract class Benutzer {
|
||||||
private String kartennummer;
|
private String kartennummer;
|
||||||
private String name;
|
private String name;
|
||||||
private int alter;
|
private int alter;
|
||||||
private List<Ausleihe> ausleihen;
|
private List<Medium> ausleihen;
|
||||||
private double offeneGebuehren;
|
private double offeneGebuehren;
|
||||||
private boolean gebuehrenBezahlt;
|
private boolean gebuehrenBezahlt;
|
||||||
|
|
||||||
Benutzer(String name, int alter, String prefix) {
|
Benutzer(String kartennummer, String name, int alter, String prefix) {
|
||||||
this.kartennummer = generiereKartennummer(prefix);
|
this.kartennummer = prefix + kartennummer;
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.alter = alter;
|
this.alter = alter;
|
||||||
this.ausleihen = new ArrayList<>();
|
this.ausleihen = new ArrayList<>();
|
||||||
|
@ -25,98 +21,54 @@ public abstract class Benutzer {
|
||||||
this.gebuehrenBezahlt = true; // Zu Beginn keine Gebühren offen
|
this.gebuehrenBezahlt = true; // Zu Beginn keine Gebühren offen
|
||||||
}
|
}
|
||||||
|
|
||||||
public void aktualisiereGebuehren(LocalDate aktuellesDatum) {
|
//Getter und Setter
|
||||||
if (gebuehrenBezahlt) return; // Keine Aktualisierung erforderlich, wenn bezahlt
|
public String getKartennummer() {return kartennummer;}
|
||||||
|
public void setkartennummer(String kartennummer) {this.kartennummer = kartennummer;}
|
||||||
offeneGebuehren = 0.0;
|
public String getName() {return name;}
|
||||||
for (Ausleihe ausleihe : ausleihen) {
|
public void setName(String name) {this.name = name;}
|
||||||
offeneGebuehren += ausleihe.berechneGebuehren(aktuellesDatum);
|
public int getAlter() {return alter;}
|
||||||
}
|
public void setAlter(int alter) {this.alter = alter;}
|
||||||
}
|
public List<Medium> getAusleihen() {return ausleihen;}
|
||||||
|
|
||||||
public void bezahleGebuehren() {
|
|
||||||
offeneGebuehren = 0.0;
|
|
||||||
gebuehrenBezahlt = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ausleihen(Medium medium, LocalDate datum) {
|
|
||||||
Ausleihe neueAusleihe = new Ausleihe(medium, datum);
|
|
||||||
ausleihen.add(neueAusleihe);
|
|
||||||
System.out.println(name + " hat \"" + medium.getTitel() + "\" ausgeliehen. Rückgabefrist: " + neueAusleihe.getRueckgabeFrist());
|
|
||||||
gebuehrenBezahlt = false; // Neue Ausleihe bedeutet potenziell offene Gebühren
|
|
||||||
}
|
|
||||||
|
|
||||||
public void rueckgabe(int mediumId, LocalDate aktuellesDatum) {
|
|
||||||
Ausleihe zuRueckgeben = null;
|
|
||||||
|
|
||||||
for (Ausleihe ausleihe : ausleihen) {
|
|
||||||
if (ausleihe.getMedium().getID() == mediumId) {
|
|
||||||
zuRueckgeben = ausleihe;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (zuRueckgeben != null) {
|
|
||||||
ausleihen.remove(zuRueckgeben);
|
|
||||||
System.out.println("Das Medium \"" + zuRueckgeben.getMedium().getTitel() + "\" wurde zurückgegeben.");
|
|
||||||
if (aktuellesDatum.isAfter(zuRueckgeben.getRueckgabeFrist())) {
|
|
||||||
long ueberfaelligeTage = aktuellesDatum.toEpochDay() - zuRueckgeben.getRueckgabeFrist().toEpochDay();
|
|
||||||
System.out.println("Achtung: Rückgabe verspätet! Überfällig um " + ueberfaelligeTage + " Tage.");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
System.out.println("Kein Medium mit der ID \"" + mediumId + "\" gefunden.");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Noch ausgeliehene Medien anzeigen
|
|
||||||
System.out.println("Aktuell ausgeliehene Medien:");
|
|
||||||
for (Ausleihe ausleihe : ausleihen) {
|
|
||||||
System.out.println(ausleihe);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void anzeigenAusleihen() {
|
|
||||||
System.out.println("Aktuell ausgeliehene Medien:");
|
|
||||||
for (Ausleihe ausleihe : ausleihen) {
|
|
||||||
System.out.println(ausleihe);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Generiert eine eindeutige Kartennummer mit Präfix
|
|
||||||
private String generiereKartennummer(String prefix) {
|
|
||||||
return prefix + UUID.randomUUID().toString().substring(0, 8);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Abstrakte Methode für die Jahresgebühr
|
// Abstrakte Methode für die Jahresgebühr
|
||||||
public abstract double getJahresgebuehr();
|
public abstract double getJahresgebuehr();
|
||||||
|
|
||||||
public String getKartennummer() {
|
//Methode fürs Ausleihen
|
||||||
return kartennummer;
|
public void ausleihen(Medium medium) {
|
||||||
|
if(!medium.istAusgeliehen()){
|
||||||
|
ausleihen.add(medium);
|
||||||
|
medium.ausleihen();
|
||||||
|
//System.out.println(name + " hat \"" + medium.getTitel() + "\" ausgeliehen. Rückgabefrist: " + medium.getRueckgabedatum());
|
||||||
|
} else{
|
||||||
|
System.out.println("Das Medium ist bereits ausgeliehen.");
|
||||||
|
}
|
||||||
|
//gebuehrenBezahlt = false; // Neue Ausleihe bedeutet potenziell offene Gebühren
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setkartennummer(String kartennummer) {
|
//Methode für die Rückgabe
|
||||||
this.kartennummer = kartennummer;
|
public void rueckgabe(Medium medium) {
|
||||||
}
|
if(ausleihen.contains(medium)){
|
||||||
|
ausleihen.remove(medium);
|
||||||
public String getName() {
|
medium.rueckgabeMedium();
|
||||||
return name;
|
}
|
||||||
}
|
else{
|
||||||
|
System.out.println("Dieses Medium von diesem Benutzer nicht ausgeliehen.");
|
||||||
public void setName(String name) {
|
}
|
||||||
this.name = name;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public int getAlter() {
|
//Methode zum Anzeigen der Ausleihen eines Benutzers
|
||||||
return alter;
|
public void anzeigenAusleihen() {
|
||||||
|
System.out.println("Aktuell ausgeliehene Medien von " + name + ":\n");
|
||||||
|
for (Medium medium : ausleihen) {
|
||||||
|
System.out.println("- " + medium.getTitel() + " (Fällig am: " + medium.getRueckgabedatum() + ")\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setAlter(int alter) {
|
public double setOffeneGebuehren(double gebuehren){
|
||||||
this.alter = alter;
|
return gebuehren+= gebuehren;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Ausleihe> getAusleihen() {
|
|
||||||
return ausleihen;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getOffeneGebuehren() {
|
public double getOffeneGebuehren() {
|
||||||
return offeneGebuehren;
|
return offeneGebuehren;
|
||||||
|
@ -126,6 +78,22 @@ public abstract class Benutzer {
|
||||||
return gebuehrenBezahlt;
|
return gebuehrenBezahlt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*public void aktualisiereGebuehren(Date aktuellesDatum) {
|
||||||
|
if (gebuehrenBezahlt) return; // Keine Aktualisierung erforderlich, wenn bezahlt
|
||||||
|
offeneGebuehren = 0.0;
|
||||||
|
for (Medium ausleihe : ausleihen) {
|
||||||
|
offeneGebuehren += ausleihe.berechneGebuehren(aktuellesDatum);
|
||||||
|
}
|
||||||
|
}*/
|
||||||
|
|
||||||
|
public void bezahleGebuehren() {
|
||||||
|
offeneGebuehren = 0.0;
|
||||||
|
gebuehrenBezahlt = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "Name: " + name + ", Alter: " + alter + ", Kartennummer: " + kartennummer;
|
return "Name: " + name + ", Alter: " + alter + ", Kartennummer: " + kartennummer;
|
||||||
|
|
|
@ -2,10 +2,10 @@ package LibrarySystem.domain.benutzern;
|
||||||
|
|
||||||
public class Erwachsener extends Benutzer {
|
public class Erwachsener extends Benutzer {
|
||||||
|
|
||||||
private static final double JAHRESGEBUEHR = 20.0;
|
private static final double JAHRESGEBUEHR = 50.0;
|
||||||
|
|
||||||
public Erwachsener(String name, int alter) {
|
public Erwachsener(String kartennummer,String name, int alter) {
|
||||||
super(name, alter, "E");
|
super(kartennummer, name, alter, "E");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -2,10 +2,10 @@ package LibrarySystem.domain.benutzern;
|
||||||
|
|
||||||
public class Student extends Benutzer {
|
public class Student extends Benutzer {
|
||||||
|
|
||||||
private static final double JAHRESGEBUEHR_ERMAESSIGT = 10.0;
|
private static final double JAHRESGEBUEHR_ERMAESSIGT = 25.0;
|
||||||
|
|
||||||
public Student(String name, int alter) {
|
public Student(String kartennummer, String name, int alter) {
|
||||||
super(name, alter, "S");
|
super(kartennummer, name, alter, "S");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package LibrarySystem.domain.medien;
|
package LibrarySystem.domain.medien;
|
||||||
|
|
||||||
public interface Ausleihbar {
|
public interface Ausleihbar {
|
||||||
int getAusleihdauer();
|
void ausleihen();
|
||||||
boolean getVerlaengerbar();
|
void rueckgabeMedium();
|
||||||
|
boolean istOverdue();
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,19 +4,24 @@ package LibrarySystem.domain.medien;
|
||||||
public class Brettspiel extends Medium {
|
public class Brettspiel extends Medium {
|
||||||
private static final int AUSLEIHDAUER = 14; // 2 Wochen
|
private static final int AUSLEIHDAUER = 14; // 2 Wochen
|
||||||
|
|
||||||
public Brettspiel(int ID, String titel, String autor, int erscheinungsjahr, String medienart) {
|
public Brettspiel(String ID, String titel, String autor, int erscheinungsjahr, String medienart) {
|
||||||
super(ID, titel, autor, erscheinungsjahr, medienart);
|
super(ID, titel, autor, erscheinungsjahr, medienart);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean getVerlaengerbar() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getAusleihdauer() {
|
public int getAusleihdauer() {
|
||||||
return AUSLEIHDAUER;
|
return AUSLEIHDAUER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean istVerlaengerbar() {
|
||||||
|
return false; //Keine Verlängerung
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void verlaengern() {
|
||||||
|
System.out.println("Brettspiele können nicht verlängert werden.");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,19 +4,32 @@ package LibrarySystem.domain.medien;
|
||||||
|
|
||||||
public class Buch extends Medium {
|
public class Buch extends Medium {
|
||||||
private static final int AUSLEIHDAUER = 28; //4 Wochen in Tagen
|
private static final int AUSLEIHDAUER = 28; //4 Wochen in Tagen
|
||||||
|
private int verlaengerungen = 3;
|
||||||
|
|
||||||
public Buch(int ID, String titel, String autor, int erscheinungsjahr, String medienart) {
|
public Buch(String ID, String titel, String autor, int erscheinungsjahr, String medienart) {
|
||||||
super(ID, titel, autor, erscheinungsjahr, medienart);
|
super(ID, titel, autor, erscheinungsjahr, medienart);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean getVerlaengerbar() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getAusleihdauer() {
|
public int getAusleihdauer() {
|
||||||
return AUSLEIHDAUER;
|
return AUSLEIHDAUER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean istVerlaengerbar() {
|
||||||
|
return verlaengerungen >0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void verlaengern() {
|
||||||
|
if (istVerlaengerbar()) {
|
||||||
|
verlaengerungen--;
|
||||||
|
rechneRueckgabedatum(); //Verlängerung
|
||||||
|
} else{
|
||||||
|
System.out.println("Keine Verlängerung mehr möglich.");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,18 +3,24 @@ package LibrarySystem.domain.medien;
|
||||||
public class CD extends Medium {
|
public class CD extends Medium {
|
||||||
public static final int AUSLEIHDAUER = 14; // 2 Wochen
|
public static final int AUSLEIHDAUER = 14; // 2 Wochen
|
||||||
|
|
||||||
public CD(int ID, String titel, String autor, int erscheinungsjahr, String medienart) {
|
public CD(String ID, String titel, String autor, int erscheinungsjahr, String medienart) {
|
||||||
super(ID, titel, autor, erscheinungsjahr, medienart);
|
super(ID, titel, autor, erscheinungsjahr, medienart);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean getVerlaengerbar() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getAusleihdauer() {
|
public int getAusleihdauer() {
|
||||||
return AUSLEIHDAUER;
|
return AUSLEIHDAUER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean istVerlaengerbar() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void verlaengern() {
|
||||||
|
System.out.println("CDs können nicht verlängert werden.");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,19 +3,25 @@ package LibrarySystem.domain.medien;
|
||||||
public class DVD extends Medium {
|
public class DVD extends Medium {
|
||||||
private static final int AUSLEIHDAUER = 7; // 1 Woche
|
private static final int AUSLEIHDAUER = 7; // 1 Woche
|
||||||
|
|
||||||
public DVD(int ID, String titel, String autor, int erscheinungsjahr, String medienart) {
|
public DVD(String ID, String titel, String autor, int erscheinungsjahr, String medienart) {
|
||||||
super(ID, titel, autor, erscheinungsjahr, medienart);
|
super(ID, titel, autor, erscheinungsjahr, medienart);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean getVerlaengerbar() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getAusleihdauer() {
|
public int getAusleihdauer() {
|
||||||
return AUSLEIHDAUER;
|
return AUSLEIHDAUER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean istVerlaengerbar() {
|
||||||
|
return false; //Keine Verlängerung
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void verlaengern() {
|
||||||
|
System.out.println("DVDs können nicht verlängert werden.");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,78 +1,100 @@
|
||||||
package LibrarySystem.domain.medien;
|
package LibrarySystem.domain.medien;
|
||||||
|
|
||||||
public abstract class Medium implements Ausleihbar {
|
import java.time.LocalDate;
|
||||||
private int ID;
|
import java.time.temporal.ChronoUnit;
|
||||||
|
import java.util.Calendar;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
public abstract class Medium implements Ausleihbar{
|
||||||
|
private String ID;
|
||||||
private String titel;
|
private String titel;
|
||||||
private String autor;
|
private String autor;
|
||||||
private int erscheinungsjahr;
|
private int erscheinungsjahr;
|
||||||
private String medienart;
|
private String medienart;
|
||||||
private boolean istAusgeliehen;
|
private boolean ausgeliehen;
|
||||||
|
private Date rueckgabedatum;
|
||||||
|
|
||||||
public Medium(int ID, String titel, String autor, int erscheinungsjahr, String medienart) {
|
public Medium(String ID, String titel, String autor, int erscheinungsjahr, String medienart) {
|
||||||
this.ID = ID;
|
this.ID = ID;
|
||||||
this.titel = titel;
|
this.titel = titel;
|
||||||
this.autor = autor;
|
this.autor = autor;
|
||||||
this.erscheinungsjahr = erscheinungsjahr;
|
this.erscheinungsjahr = erscheinungsjahr;
|
||||||
this.medienart = medienart;
|
this.medienart = medienart;
|
||||||
this.istAusgeliehen = false;
|
this.ausgeliehen = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Abstrakte Methoden: Jede Unterklasse definiert ihre Ausleihdauer und Verlängerbarkeit
|
|
||||||
public abstract boolean getVerlaengerbar();
|
|
||||||
|
|
||||||
public abstract int getAusleihdauer();
|
//Getter und Setter
|
||||||
|
public String getID() {
|
||||||
public int getID() {
|
|
||||||
return ID;
|
return ID;
|
||||||
}
|
}
|
||||||
|
public void setID(String ID) {
|
||||||
public void setID(int ID) {
|
|
||||||
this.ID = ID;
|
this.ID = ID;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getTitel() {
|
public String getTitel() {
|
||||||
return titel;
|
return titel;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setTitel(String titel) {
|
public void setTitel(String titel) {
|
||||||
this.titel = titel;
|
this.titel = titel;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getAutor() {
|
public String getAutor() {
|
||||||
return autor;
|
return autor;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setAutor(String autor) {
|
public void setAutor(String autor) {
|
||||||
this.autor = autor;
|
this.autor = autor;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getErscheinungsjahr() {
|
public int getErscheinungsjahr() {
|
||||||
return erscheinungsjahr;
|
return erscheinungsjahr;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setErscheinungsjahr(int erscheinungsjahr) {
|
public void setErscheinungsjahr(int erscheinungsjahr) {
|
||||||
this.erscheinungsjahr = erscheinungsjahr;
|
this.erscheinungsjahr = erscheinungsjahr;
|
||||||
}
|
}
|
||||||
|
public String getMedienart() {return medienart;}
|
||||||
|
public void setMedienart(String Medienart) {this.medienart = Medienart;}
|
||||||
|
public boolean istAusgeliehen() {return ausgeliehen;}
|
||||||
|
public void setAusgeliehen() {this.ausgeliehen = true;}
|
||||||
|
public void setRueckgabe(){this.ausgeliehen = false;}
|
||||||
|
public Date getRueckgabedatum(){return rueckgabedatum;}
|
||||||
|
public void setRueckgabedatum(Date rueckgabedatum){this.rueckgabedatum = rueckgabedatum;}
|
||||||
|
|
||||||
public String getMedienart() {
|
|
||||||
return medienart;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setMedienart(String Medienart) {
|
//Andere nützliche Methoden
|
||||||
this.medienart = Medienart;
|
public Date rechneRueckgabedatum(){
|
||||||
}
|
Calendar calendar = Calendar.getInstance();
|
||||||
|
calendar.add(Calendar.DAY_OF_YEAR, getAusleihdauer());
|
||||||
|
this.rueckgabedatum = calendar.getTime();
|
||||||
|
return rueckgabedatum;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean istAusgeliehen() {
|
//Abstrakte Methoden
|
||||||
return istAusgeliehen;
|
public abstract int getAusleihdauer();
|
||||||
}
|
public abstract boolean istVerlaengerbar();
|
||||||
|
public abstract void verlaengern();
|
||||||
|
|
||||||
public void setIstAusgeliehen(boolean istAusgeliehen) {
|
@Override
|
||||||
this.istAusgeliehen = istAusgeliehen;
|
public void ausleihen() {
|
||||||
}
|
if(!istAusgeliehen()){
|
||||||
|
setAusgeliehen();
|
||||||
|
rechneRueckgabedatum();
|
||||||
|
} else{
|
||||||
|
System.out.println("Medium ist bereits ausgeliehen.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
public void rueckgabeMedium() {
|
||||||
|
setRueckgabe();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean istOverdue() {
|
||||||
|
return new Date().after(getRueckgabedatum());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@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;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,19 +2,31 @@ package LibrarySystem.domain.medien;
|
||||||
|
|
||||||
public class Videospiel extends Medium {
|
public class Videospiel extends Medium {
|
||||||
private static final int AUSLEIHDAUER = 28; // 4 Wochen
|
private static final int AUSLEIHDAUER = 28; // 4 Wochen
|
||||||
|
private int verlaengerungen = 1;
|
||||||
|
|
||||||
public Videospiel(int ID, String titel, String autor, int erscheinungsjahr, String medienart) {
|
public Videospiel(String ID, String titel, String autor, int erscheinungsjahr, String medienart) {
|
||||||
super(ID, titel, autor, erscheinungsjahr, medienart);
|
super(ID, titel, autor, erscheinungsjahr, medienart);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean getVerlaengerbar() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getAusleihdauer() {
|
public int getAusleihdauer() {
|
||||||
return AUSLEIHDAUER;
|
return AUSLEIHDAUER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean istVerlaengerbar() {
|
||||||
|
return verlaengerungen>0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void verlaengern() {
|
||||||
|
if (istVerlaengerbar()){
|
||||||
|
verlaengerungen--;
|
||||||
|
rechneRueckgabedatum(); //Verlängerung
|
||||||
|
} else {
|
||||||
|
System.out.println("Keine Verlängerung mehr möglich");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,56 +1,88 @@
|
||||||
package LibrarySystem.facade;
|
package LibrarySystem.facade;
|
||||||
|
|
||||||
|
//Imports aus domain
|
||||||
import LibrarySystem.domain.benutzern.*;
|
import LibrarySystem.domain.benutzern.*;
|
||||||
import LibrarySystem.domain.medien.*;
|
import LibrarySystem.domain.medien.*;
|
||||||
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class BibliothekSystem {
|
public class BibliothekSystem {
|
||||||
private List<Benutzer> benutzerListe;
|
private List<Benutzer> benutzerListe;
|
||||||
private LocalDate aktuellesDatum;
|
private Date aktuellesDatum;
|
||||||
private List<Medium> medienListe;
|
private List<Medium> medienListe;
|
||||||
|
|
||||||
public BibliothekSystem() {
|
public BibliothekSystem() {
|
||||||
this.benutzerListe = new ArrayList<>();
|
this.benutzerListe = new ArrayList<>();
|
||||||
this.aktuellesDatum = LocalDate.now();
|
this.aktuellesDatum = new Date();
|
||||||
this.medienListe = new ArrayList<>();
|
this.medienListe = new ArrayList<>();
|
||||||
initialMedienHinzufuegen();
|
initialMedienHinzufuegen();
|
||||||
|
initialBenutzerHinzufuegen();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Methode zum Hinzufügen von Medien
|
// Methode zum Hinzufügen von Medien
|
||||||
private void initialMedienHinzufuegen() {
|
private void initialMedienHinzufuegen() {
|
||||||
// Beispiel-Medien hinzufügen
|
// Beispiel-Medien hinzufügen
|
||||||
Buch buch1 = new Buch(123,"Java lernen", "Max Mustermann", 2020, "Buch");
|
Buch buch1 = new Buch("123","Java lernen", "Max Mustermann", 2020, "Buch");
|
||||||
Buch buch2 = new Buch(234,"Java für Einsteiger", "Erika Musterfrau", 2014, "Buch");
|
Buch buch2 = new Buch("234","Java für Einsteiger", "Erika Musterfrau", 2014, "Buch");
|
||||||
DVD dvd1 = new DVD(345,"Die Matrix", "Lana Wachowski", 2014, "DVD");
|
Buch buch3 = new Buch("2345","Java für Einsteiger", "Erika Musterfrau", 2014, "Buch");
|
||||||
CD cd1 = new CD(456,"Best of Mozart", "-", 1850, "CD");
|
DVD dvd1 = new DVD("345","Die Matrix", "Lana Wachowski", 2014, "DVD");
|
||||||
Brettspiel brettspiel1 = new Brettspiel(567,"Monopoly", "-",2010, "Brettspiel");
|
DVD dvd2 = new DVD("543","Die Matrix", "Lana Wachowski", 2014, "DVD");
|
||||||
Videospiel videospiel1 = new Videospiel(678,"Minecraft", "-", 2011, "Videospiel");
|
CD cd1 = new CD("456","Best of Mozart", "-", 1850, "CD");
|
||||||
|
CD cd2 = new CD("654","Christmas Carols", "-", 2000, "CD");
|
||||||
|
Brettspiel brettspiel1 = new Brettspiel("567","Monopoly", "-",2010, "Brettspiel");
|
||||||
|
Brettspiel brettspiel2 = new Brettspiel("765","Siedler von Catan", "-",2014, "Brettspiel");
|
||||||
|
Videospiel videospiel1 = new Videospiel("678","Minecraft", "-", 2011, "Videospiel");
|
||||||
|
Videospiel videospiel2 = new Videospiel("876","Call of Duty", "-", 2017, "Videospiel");
|
||||||
|
|
||||||
// Medien zur Bibliothek hinzufügen
|
// Medien zur Bibliothek hinzufügen
|
||||||
addMedium(buch1);
|
addMedium(buch1);
|
||||||
addMedium(buch2);
|
addMedium(buch2);
|
||||||
|
addMedium(buch3);
|
||||||
addMedium(dvd1);
|
addMedium(dvd1);
|
||||||
|
addMedium(dvd2);
|
||||||
addMedium(cd1);
|
addMedium(cd1);
|
||||||
|
addMedium(cd2);
|
||||||
addMedium(brettspiel1);
|
addMedium(brettspiel1);
|
||||||
|
addMedium(brettspiel2);
|
||||||
addMedium(videospiel1);
|
addMedium(videospiel1);
|
||||||
|
addMedium(videospiel2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Methode zum Hinzufügen von Medien in die Medienliste
|
||||||
public void addMedium(Medium medium) {
|
public void addMedium(Medium medium) {
|
||||||
medienListe.add(medium);
|
medienListe.add(medium);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Methode zum Hinzufügen von Benutzern und Admin
|
||||||
|
private void initialBenutzerHinzufuegen(){
|
||||||
|
Benutzer student = new Student("1234567", "Ana Misk", 21);
|
||||||
|
Benutzer erwachsener = new Erwachsener("2345678","Paul Mark", 34);
|
||||||
|
Admin admin = new Admin("3456789", "Alisa Admin", 40);
|
||||||
|
benutzerRegistrieren(student);
|
||||||
|
benutzerRegistrieren(erwachsener);
|
||||||
|
benutzerRegistrieren(admin);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Methode zum Anmelden eines Benutzers
|
||||||
|
public Benutzer anmelden(String kartennummer) {
|
||||||
|
for (Benutzer benutzer : benutzerListe) {
|
||||||
|
if (benutzer.getKartennummer().equals(kartennummer)) {
|
||||||
|
return benutzer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
System.out.println("Benutzer nicht gefunden.");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
// Durchsuchen der Medien nach einem Titel (Teilstring) und Filterung nach Eigenschaften
|
// Durchsuchen der Medien nach einem Titel (Teilstring) und Filterung nach Eigenschaften
|
||||||
public List<Medium> durchsuchenMedien(String titelTeil, String medienart) {
|
public List<Medium> durchsuchenMedien(String titelTeil, String medienart) {
|
||||||
List medienliste = medienListe.stream()
|
List medienliste = medienListe.stream()
|
||||||
.filter(m -> m.getTitel().toLowerCase().contains(titelTeil.toLowerCase())) // Titel-Filter
|
.filter(m -> m.getTitel().toLowerCase().contains(titelTeil.toLowerCase())) // Titel-Filter
|
||||||
.filter(m -> medienart == null || m.getMedienart().equalsIgnoreCase(medienart)) // Medienart-Filter
|
.filter(m -> medienart == null || m.getMedienart().equalsIgnoreCase(medienart)) // Medienart-Filter
|
||||||
//.filter(m -> istAusgeliehen == null || m.istAusgeliehen() == istAusgeliehen) // Ausleihstatus-Filter
|
//.filter(m -> ausgeliehen == null || m.istAusgeliehen() == istAusgeliehen) // Ausleihstatus-Filter
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
if(medienliste.isEmpty()) {
|
if(medienliste.isEmpty()) {
|
||||||
|
@ -62,12 +94,101 @@ public class BibliothekSystem {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void datumAendern(LocalDate neuesDatum) {
|
// Methode zum Ausleihen eines Mediums
|
||||||
|
public void ausleiheMedium(String kartennummer, String mediumID){
|
||||||
|
Benutzer benutzer = anmelden(kartennummer);
|
||||||
|
Medium medium = findeMedium(mediumID);
|
||||||
|
if (benutzer != null && medium != null && !medium.istAusgeliehen()) {
|
||||||
|
benutzer.ausleihen(medium);
|
||||||
|
medium.setRueckgabedatum(medium.rechneRueckgabedatum());
|
||||||
|
System.out.println(benutzer.getName() + " hat " + medium.getTitel() + " ausgeliehen.");
|
||||||
|
System.out.println("Rückgabedatum: " + medium.getRueckgabedatum());
|
||||||
|
} else {
|
||||||
|
System.out.println("Ausleihe nicht möglich.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Methode zum Rückgeben eines Mediums
|
||||||
|
public void rueckgabeMedium(String mediumID){
|
||||||
|
Medium medium = findeMedium(mediumID);
|
||||||
|
Benutzer ausleiher = null;
|
||||||
|
if(medium == null) {
|
||||||
|
System.out.println("Medium mit der ID " + mediumID + " nicht gefunden.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if(!medium.istAusgeliehen()) {
|
||||||
|
System.out.println("Medium '"+medium.getTitel()+"' nicht gefunden.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Benutzer finden, der das Medium ausgeliehen hat
|
||||||
|
for(Benutzer benutzer : benutzerListe) {
|
||||||
|
if(benutzer.getAusleihen().contains(medium)){
|
||||||
|
ausleiher = benutzer;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(ausleiher == null) {
|
||||||
|
System.out.println("Kein Benutzer gefunden, der dieses Medium ausgeliehen hat.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Medium zurückgeben
|
||||||
|
try {
|
||||||
|
ausleiher.rueckgabe(medium);
|
||||||
|
System.out.println("Medium '"+medium.getTitel()+"' wurde erfolgreich zurückgegeben.");
|
||||||
|
|
||||||
|
if(aktuellesDatum.after(medium.getRueckgabedatum())){
|
||||||
|
long overdueTage = (aktuellesDatum.getTime() - medium.getRueckgabedatum().getTime()) / (1000 * 60 * 60 * 24);
|
||||||
|
System.out.println("überfällige Tagen: " + overdueTage);
|
||||||
|
double gebuehr = rechneOverdueGebuehren(overdueTage);
|
||||||
|
ausleiher.setOffeneGebuehren(gebuehr);
|
||||||
|
System.out.println("Überfällige Gebühren für " + ausleiher.getName() + gebuehr + " Eur.");
|
||||||
|
}else {
|
||||||
|
System.out.println("Keine überfällige Gebühren.");
|
||||||
|
}
|
||||||
|
|
||||||
|
ausleiher.anzeigenAusleihen();
|
||||||
|
} catch (Exception e) {
|
||||||
|
System.out.println(e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Methode zum Verlängern eines Mediums
|
||||||
|
public void verlaengernMedium(String kartennummer,String mediumID){
|
||||||
|
Benutzer benutzer = anmelden(kartennummer);
|
||||||
|
Medium medium = findeMedium(mediumID);
|
||||||
|
if (benutzer != null && medium != null && medium.istAusgeliehen()) {
|
||||||
|
medium.verlaengern();
|
||||||
|
System.out.println("Leihfrist für '" + medium.getTitel() + "' verlängert.");
|
||||||
|
System.out.println("Neues Rückgabedatum: " + medium.getRueckgabedatum());
|
||||||
|
} else {
|
||||||
|
System.out.println("Verlängerung nicht möglich.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Methode zum Finden eines Benutzers
|
||||||
|
public Benutzer findeBenutzer(String kartennummer) {
|
||||||
|
return benutzerListe.get(Integer.parseInt(kartennummer));
|
||||||
|
}
|
||||||
|
|
||||||
|
//Methode zum Finden eines Mediums
|
||||||
|
public Medium findeMedium(String ID) {
|
||||||
|
return medienListe.stream()
|
||||||
|
.filter(m -> m.getID().equals(ID))
|
||||||
|
.findFirst()
|
||||||
|
.orElse(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//Methode, um das Systemdatum zu setzen
|
||||||
|
public void setAktuellesDatum(Date neuesDatum) {
|
||||||
this.aktuellesDatum = neuesDatum;
|
this.aktuellesDatum = neuesDatum;
|
||||||
System.out.println("Systemdatum geändert auf: " + aktuellesDatum);
|
System.out.println("Systemdatum geändert auf: " + aktuellesDatum);
|
||||||
}
|
}
|
||||||
|
|
||||||
public LocalDate getAktuellesDatum() {
|
public Date getAktuellesDatum() {
|
||||||
return aktuellesDatum;
|
return aktuellesDatum;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -76,7 +197,7 @@ public class BibliothekSystem {
|
||||||
System.out.println("Benutzer registriert: " + benutzer);
|
System.out.println("Benutzer registriert: " + benutzer);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void zeigeGebuehren(Benutzer benutzer) {
|
/*public void zeigeGebuehren(Benutzer benutzer) {
|
||||||
benutzer.aktualisiereGebuehren(aktuellesDatum);
|
benutzer.aktualisiereGebuehren(aktuellesDatum);
|
||||||
|
|
||||||
if (benutzer.sindGebuehrenBezahlt()) {
|
if (benutzer.sindGebuehrenBezahlt()) {
|
||||||
|
@ -84,16 +205,10 @@ public class BibliothekSystem {
|
||||||
} else {
|
} else {
|
||||||
System.out.println("Aktuelle Gebühren für " + benutzer.getName() + ": " + benutzer.getOffeneGebuehren() + "€");
|
System.out.println("Aktuelle Gebühren für " + benutzer.getName() + ": " + benutzer.getOffeneGebuehren() + "€");
|
||||||
}
|
}
|
||||||
|
}*/
|
||||||
|
|
||||||
|
public double rechneOverdueGebuehren(long overdueTagen) {
|
||||||
|
return overdueTagen * 1; // 1 euro pro Tag
|
||||||
}
|
}
|
||||||
|
|
||||||
public Benutzer anmelden(String kartennummer) {
|
|
||||||
for (Benutzer benutzer : benutzerListe) {
|
|
||||||
if (benutzer.getKartennummer().equals(kartennummer)) {
|
|
||||||
System.out.println("Willkommen, " + benutzer.getName() + "!");
|
|
||||||
return benutzer;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
System.out.println("Benutzer nicht gefunden.");
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue