Aufgaben 1-5, BibTest muss noch mit der login-Funktion ausprobiert werden, todo: Aufgaben 6,7,8
parent
85f1a90903
commit
a851d8796f
|
@ -1,4 +0,0 @@
|
||||||
package LibrarySystem;
|
|
||||||
|
|
||||||
public class Main {
|
|
||||||
}
|
|
|
@ -0,0 +1,56 @@
|
||||||
|
package LibrarySystem.UI;
|
||||||
|
|
||||||
|
import LibrarySystem.domain.benutzern.*;
|
||||||
|
import LibrarySystem.domain.medien.*;
|
||||||
|
import LibrarySystem.facade.*;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
|
||||||
|
// Testklasse zum Erstellen und Verwalten von Benutzern
|
||||||
|
public class BibTest {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
// Bibliothekssystem initialisieren
|
||||||
|
BibliothekSystem system = new BibliothekSystem();
|
||||||
|
|
||||||
|
// Benutzer erstellen
|
||||||
|
Benutzer erwachsener = new Erwachsener("Max" , "Mustermann", 35);
|
||||||
|
Benutzer student = new Student("Anna", "Beispiel", 21);
|
||||||
|
Admin admin = new Admin("Lisa", "Admin", 40);
|
||||||
|
|
||||||
|
system.benutzerRegistrieren(erwachsener);
|
||||||
|
system.benutzerRegistrieren(student);
|
||||||
|
|
||||||
|
// Medien erstellen
|
||||||
|
Medium buch = new Buch(123, "Java Programmieren", "BP", 2020);
|
||||||
|
Medium dvd = new DVD(456, "Der große Film", "JP",2018);
|
||||||
|
|
||||||
|
// Datum setzen und Ausleihe simulieren
|
||||||
|
system.datumAendern(LocalDate.of(2024, 11, 10));
|
||||||
|
erwachsener.ausleihen(buch, system.getAktuellesDatum());
|
||||||
|
student.ausleihen(dvd, system.getAktuellesDatum());
|
||||||
|
system.zeigeGebuehren(erwachsener);
|
||||||
|
|
||||||
|
|
||||||
|
// Rückgabe simulieren
|
||||||
|
system.datumAendern(LocalDate.of(2024, 12, 15)); // Datum ändern
|
||||||
|
student.rueckgabe(456, system.getAktuellesDatum());
|
||||||
|
system.zeigeGebuehren(erwachsener);
|
||||||
|
admin.bestaetigeGebuehrenzahlung(erwachsener);
|
||||||
|
system.zeigeGebuehren(erwachsener);
|
||||||
|
|
||||||
|
// Medien anzeigen
|
||||||
|
erwachsener.anzeigenAusleihen();
|
||||||
|
|
||||||
|
// Benutzerinformationen anzeigen
|
||||||
|
System.out.println(erwachsener);
|
||||||
|
System.out.println("Jahresgebühr: " + erwachsener.getJahresgebuehr() + " EUR");
|
||||||
|
|
||||||
|
System.out.println(student);
|
||||||
|
System.out.println("Jahresgebühr: " + student.getJahresgebuehr() + " EUR");
|
||||||
|
|
||||||
|
System.out.println(admin);
|
||||||
|
System.out.println("Jahresgebühr: " + admin.getJahresgebuehr() + " EUR");
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,6 +0,0 @@
|
||||||
package LibrarySystem.domain;
|
|
||||||
|
|
||||||
public interface Ausleihbar {
|
|
||||||
int ausleihdauer();
|
|
||||||
boolean verlängerbar();
|
|
||||||
}
|
|
|
@ -1,19 +0,0 @@
|
||||||
package LibrarySystem.domain;
|
|
||||||
|
|
||||||
public class Brettspiel extends Medium implements Ausleihbar {
|
|
||||||
private static final int AUSLEIHDAUER = 14; // 2 Wochen
|
|
||||||
|
|
||||||
public Brettspiel(String ID, String titel, String autor, int erscheinungsjahr) {
|
|
||||||
super(ID, titel, autor, erscheinungsjahr);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int ausleihdauer() {
|
|
||||||
return AUSLEIHDAUER;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean verlängerbar() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,20 +0,0 @@
|
||||||
package LibrarySystem.domain;
|
|
||||||
|
|
||||||
|
|
||||||
class Buch extends Medium implements Ausleihbar {
|
|
||||||
private static final int AUSLEIHDAUER = 28; //4 Wochen in Tagen
|
|
||||||
|
|
||||||
public Buch(String ID, String titel, String autor, int erscheinungsjahr) {
|
|
||||||
super(ID, titel, autor, erscheinungsjahr);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int ausleihdauer() {
|
|
||||||
return AUSLEIHDAUER;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean verlängerbar() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,19 +0,0 @@
|
||||||
package LibrarySystem.domain;
|
|
||||||
|
|
||||||
public class CD extends Medium implements Ausleihbar {
|
|
||||||
public static final int AUSLEIHDAUER = 14; // 2 Wochen
|
|
||||||
|
|
||||||
public CD(String ID, String titel, String autor, int erscheinungsjahr) {
|
|
||||||
super(ID, titel, autor, erscheinungsjahr);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int ausleihdauer() {
|
|
||||||
return AUSLEIHDAUER;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean verlängerbar() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,19 +0,0 @@
|
||||||
package LibrarySystem.domain;
|
|
||||||
|
|
||||||
public class DVD extends Medium implements Ausleihbar {
|
|
||||||
private static final int AUSLEIHDAUER = 7; // 1 Woche
|
|
||||||
|
|
||||||
public DVD(String ID, String titel, String autor, int erscheinungsjahr) {
|
|
||||||
super(ID, titel, autor, erscheinungsjahr);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int ausleihdauer() {
|
|
||||||
return AUSLEIHDAUER;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean verlängerbar() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,20 +0,0 @@
|
||||||
package LibrarySystem.domain;
|
|
||||||
|
|
||||||
public class Videospiel extends Medium implements Ausleihbar {
|
|
||||||
private static final int AUSLEIHDAUER = 28; // 4 Wochen
|
|
||||||
|
|
||||||
public Videospiel(String ID, String titel, String autor, int erscheinungsjahr) {
|
|
||||||
super(ID, titel, autor, erscheinungsjahr);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int ausleihdauer() {
|
|
||||||
return AUSLEIHDAUER;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean verlängerbar() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,64 @@
|
||||||
|
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 + ")";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,41 @@
|
||||||
|
package LibrarySystem.domain.benutzern;
|
||||||
|
|
||||||
|
|
||||||
|
import LibrarySystem.domain.medien.Medium;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
|
||||||
|
public class Admin extends Benutzer {
|
||||||
|
|
||||||
|
public Admin(String vorname, String nachname, int alter) {
|
||||||
|
super(vorname, nachname, alter, "A");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getJahresgebuehr() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Admin-spezifische Methoden: Benutzerübersicht anzeigen
|
||||||
|
public void anzeigenBenutzer(Benutzer[] benutzerListe) {
|
||||||
|
System.out.println("\nBenutzerübersicht:");
|
||||||
|
for (Benutzer b : benutzerListe) {
|
||||||
|
System.out.println(b);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void bestaetigeGebuehrenzahlung(Benutzer benutzer) {
|
||||||
|
if(benutzer.getOffeneGebuehren() > 0) {
|
||||||
|
benutzer.bezahleGebuehren();
|
||||||
|
System.out.println("Gebühren von " + benutzer.getVorname() + " " + benutzer.getNachname() + " wurden erfolgreich bezahlt.");
|
||||||
|
} else {
|
||||||
|
System.out.println("Keine offene Gebühren für " + benutzer.getVorname() + " " + benutzer.getNachname() + ".") ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void ausleihen(Medium medium, LocalDate datum) {
|
||||||
|
System.out.println("Admins können keine Medien ausleihen.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,142 @@
|
||||||
|
package LibrarySystem.domain.benutzern;
|
||||||
|
|
||||||
|
import LibrarySystem.domain.ausleihe.*;
|
||||||
|
import LibrarySystem.domain.medien.*;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public abstract class Benutzer {
|
||||||
|
private String kartennummer;
|
||||||
|
private String vorname;
|
||||||
|
private String nachname;
|
||||||
|
private int alter;
|
||||||
|
private List<Ausleihe> ausleihen;
|
||||||
|
private double offeneGebuehren;
|
||||||
|
private boolean gebuehrenBezahlt;
|
||||||
|
|
||||||
|
Benutzer(String vorname, String nachname, int alter, String prefix) {
|
||||||
|
this.kartennummer = generiereKartennummer(prefix);
|
||||||
|
this.vorname = vorname;
|
||||||
|
this.nachname = nachname;
|
||||||
|
this.alter = alter;
|
||||||
|
this.ausleihen = new ArrayList<>();
|
||||||
|
this.offeneGebuehren = 0.0;
|
||||||
|
this.gebuehrenBezahlt = true; // Zu Beginn keine Gebühren offen
|
||||||
|
}
|
||||||
|
|
||||||
|
public void aktualisiereGebuehren(LocalDate aktuellesDatum) {
|
||||||
|
if (gebuehrenBezahlt) return; // Keine Aktualisierung erforderlich, wenn bezahlt
|
||||||
|
|
||||||
|
offeneGebuehren = 0.0;
|
||||||
|
for (Ausleihe ausleihe : ausleihen) {
|
||||||
|
offeneGebuehren += ausleihe.berechneGebuehren(aktuellesDatum);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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(vorname + " " + nachname + " 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
|
||||||
|
public abstract double getJahresgebuehr();
|
||||||
|
|
||||||
|
public String getKartennummer() {
|
||||||
|
return kartennummer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setkartennummer(String kartennummer) {
|
||||||
|
this.kartennummer = kartennummer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getVorname() {
|
||||||
|
return vorname;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setVorname(String vorname) {
|
||||||
|
this.vorname = vorname;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNachname() {
|
||||||
|
return nachname;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNachname(String nachname) {
|
||||||
|
this.nachname = nachname;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getAlter() {
|
||||||
|
return alter;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAlter(int alter) {
|
||||||
|
this.alter = alter;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Ausleihe> getAusleihen() {
|
||||||
|
return ausleihen;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getOffeneGebuehren() {
|
||||||
|
return offeneGebuehren;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean sindGebuehrenBezahlt() {
|
||||||
|
return gebuehrenBezahlt;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "Vorame: " + vorname + ", Nachname: " + nachname + ", Alter: " + alter + ", Kartennummer: " + kartennummer;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,15 @@
|
||||||
|
package LibrarySystem.domain.benutzern;
|
||||||
|
|
||||||
|
public class Erwachsener extends Benutzer {
|
||||||
|
|
||||||
|
private static final double JAHRESGEBUEHR = 20.0;
|
||||||
|
|
||||||
|
public Erwachsener(String vorname, String nachname, int alter) {
|
||||||
|
super(vorname, nachname, alter, "E");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getJahresgebuehr() {
|
||||||
|
return JAHRESGEBUEHR;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,15 @@
|
||||||
|
package LibrarySystem.domain.benutzern;
|
||||||
|
|
||||||
|
public class Student extends Benutzer {
|
||||||
|
|
||||||
|
private static final double JAHRESGEBUEHR_ERMAESSIGT = 10.0;
|
||||||
|
|
||||||
|
public Student(String vorname, String nachname, int alter) {
|
||||||
|
super(vorname, nachname, alter, "S");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getJahresgebuehr() {
|
||||||
|
return JAHRESGEBUEHR_ERMAESSIGT;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
package LibrarySystem.domain.medien;
|
||||||
|
|
||||||
|
public interface Ausleihbar {
|
||||||
|
int getAusleihdauer();
|
||||||
|
boolean getVerlaengerbar();
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
package LibrarySystem.domain.medien;
|
||||||
|
|
||||||
|
|
||||||
|
public class Brettspiel extends Medium {
|
||||||
|
private static final int AUSLEIHDAUER = 14; // 2 Wochen
|
||||||
|
|
||||||
|
public Brettspiel(int ID, String titel, String autor, int erscheinungsjahr) {
|
||||||
|
super(ID, titel, autor, erscheinungsjahr);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean getVerlaengerbar() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getAusleihdauer() {
|
||||||
|
return AUSLEIHDAUER;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
package LibrarySystem.domain.medien;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public class Buch extends Medium {
|
||||||
|
private static final int AUSLEIHDAUER = 28; //4 Wochen in Tagen
|
||||||
|
|
||||||
|
public Buch(int ID, String titel, String autor, int erscheinungsjahr) {
|
||||||
|
super(ID, titel, autor, erscheinungsjahr);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean getVerlaengerbar() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getAusleihdauer() {
|
||||||
|
return AUSLEIHDAUER;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
package LibrarySystem.domain.medien;
|
||||||
|
|
||||||
|
public class CD extends Medium {
|
||||||
|
public static final int AUSLEIHDAUER = 14; // 2 Wochen
|
||||||
|
|
||||||
|
public CD(int ID, String titel, String autor, int erscheinungsjahr) {
|
||||||
|
super(ID, titel, autor, erscheinungsjahr);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean getVerlaengerbar() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getAusleihdauer() {
|
||||||
|
return AUSLEIHDAUER;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
package LibrarySystem.domain.medien;
|
||||||
|
|
||||||
|
public class DVD extends Medium {
|
||||||
|
private static final int AUSLEIHDAUER = 7; // 1 Woche
|
||||||
|
|
||||||
|
public DVD(int ID, String titel, String autor, int erscheinungsjahr) {
|
||||||
|
super(ID, titel, autor, erscheinungsjahr);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean getVerlaengerbar() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getAusleihdauer() {
|
||||||
|
return AUSLEIHDAUER;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -1,24 +1,28 @@
|
||||||
package LibrarySystem.domain;
|
package LibrarySystem.domain.medien;
|
||||||
|
|
||||||
abstract class Medium {
|
public abstract class Medium implements Ausleihbar {
|
||||||
private String ID;
|
private int ID;
|
||||||
private String titel;
|
private String titel;
|
||||||
private String autor;
|
private String autor;
|
||||||
private int erscheinungsjahr;
|
private int erscheinungsjahr;
|
||||||
|
|
||||||
public Medium(String ID, String titel, String autor, int erscheinungsjahr) {
|
public Medium(int ID, String titel, String autor, int erscheinungsjahr) {
|
||||||
this.ID = ID;
|
this.ID = ID;
|
||||||
this.titel = titel;
|
this.titel = titel;
|
||||||
this.autor = autor;
|
this.autor = autor;
|
||||||
this.erscheinungsjahr = erscheinungsjahr;
|
this.erscheinungsjahr = erscheinungsjahr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Abstrakte Methoden: Jede Unterklasse definiert ihre Ausleihdauer und Verlängerbarkeit
|
||||||
|
public abstract boolean getVerlaengerbar();
|
||||||
|
|
||||||
public String getID() {
|
public abstract int getAusleihdauer();
|
||||||
|
|
||||||
|
public int getID() {
|
||||||
return ID;
|
return ID;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setID(String ID) {
|
public void setID(int ID) {
|
||||||
this.ID = ID;
|
this.ID = ID;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
package LibrarySystem.domain.medien;
|
||||||
|
|
||||||
|
public class Videospiel extends Medium {
|
||||||
|
private static final int AUSLEIHDAUER = 28; // 4 Wochen
|
||||||
|
|
||||||
|
public Videospiel(int ID, String titel, String autor, int erscheinungsjahr) {
|
||||||
|
super(ID, titel, autor, erscheinungsjahr);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean getVerlaengerbar() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getAusleihdauer() {
|
||||||
|
return AUSLEIHDAUER;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,54 @@
|
||||||
|
package LibrarySystem.facade;
|
||||||
|
|
||||||
|
import LibrarySystem.domain.benutzern.*;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class BibliothekSystem {
|
||||||
|
private List<Benutzer> benutzerListe;
|
||||||
|
private LocalDate aktuellesDatum;
|
||||||
|
|
||||||
|
public BibliothekSystem() {
|
||||||
|
this.benutzerListe = new ArrayList<>();
|
||||||
|
this.aktuellesDatum = LocalDate.now();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void datumAendern(LocalDate neuesDatum) {
|
||||||
|
this.aktuellesDatum = neuesDatum;
|
||||||
|
System.out.println("Systemdatum geändert auf: " + aktuellesDatum);
|
||||||
|
}
|
||||||
|
|
||||||
|
public LocalDate getAktuellesDatum() {
|
||||||
|
return aktuellesDatum;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void benutzerRegistrieren(Benutzer benutzer) {
|
||||||
|
benutzerListe.add(benutzer);
|
||||||
|
System.out.println("Benutzer registriert: " + benutzer);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void zeigeGebuehren(Benutzer benutzer) {
|
||||||
|
benutzer.aktualisiereGebuehren(aktuellesDatum);
|
||||||
|
|
||||||
|
if (benutzer.sindGebuehrenBezahlt()) {
|
||||||
|
System.out.println("Alle Gebühren von " + benutzer.getVorname() + " " + benutzer.getNachname() + " sind bezahlt.");
|
||||||
|
} else {
|
||||||
|
System.out.println("Aktuelle Gebühren für " + benutzer.getVorname() + " " + benutzer.getNachname() + ": " + benutzer.getOffeneGebuehren() + "€");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Benutzer anmelden(String kartennummer) {
|
||||||
|
for (Benutzer benutzer : benutzerListe) {
|
||||||
|
if (benutzer.getKartennummer().equals(kartennummer)) {
|
||||||
|
System.out.println("Willkommen, " + benutzer.getVorname() + " " + benutzer.getNachname() + "!");
|
||||||
|
return benutzer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
System.out.println("Benutzer nicht gefunden.");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue