Erste Kommentare hinzugefügt als auch nach Tests erweiterung des Programms um Anforderungen zu erfüllen
parent
f29119eb09
commit
9a4e99d73c
|
@ -36,9 +36,4 @@ public class Admin extends User {
|
||||||
System.out.println("- " + medien.getTitel() + " (Rückgabedatum: " + medien.getRueckgabedat() + ")")
|
System.out.println("- " + medien.getTitel() + " (Rückgabedatum: " + medien.getRueckgabedat() + ")")
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void rolleAnzeigen() {
|
|
||||||
System.out.println("Admin: " + name);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package Bibliothek;
|
package Bibliothek;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
@ -9,6 +10,8 @@ public class Bibliotheksverwaltung {
|
||||||
private Map<String, Kunde> kundenListe;
|
private Map<String, Kunde> kundenListe;
|
||||||
private Map<String, Admin> adminListe;
|
private Map<String, Admin> adminListe;
|
||||||
private User eingeloggterBenutzer;
|
private User eingeloggterBenutzer;
|
||||||
|
private LocalDate aktuellesDatum = LocalDate.now();
|
||||||
|
|
||||||
|
|
||||||
public Bibliotheksverwaltung() {
|
public Bibliotheksverwaltung() {
|
||||||
medienBestand = new HashMap<>();
|
medienBestand = new HashMap<>();
|
||||||
|
@ -16,6 +19,9 @@ public class Bibliotheksverwaltung {
|
||||||
adminListe = new HashMap<>();
|
adminListe = new HashMap<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getter Methoden
|
||||||
|
*/
|
||||||
public Map<String, Kunde> getKundenListe() {
|
public Map<String, Kunde> getKundenListe() {
|
||||||
return kundenListe;
|
return kundenListe;
|
||||||
}
|
}
|
||||||
|
@ -28,24 +34,63 @@ public class Bibliotheksverwaltung {
|
||||||
return eingeloggterBenutzer;
|
return eingeloggterBenutzer;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Medien> sucheMedienNachTitel(String titel) {
|
public LocalDate getAktuellesDatum() {
|
||||||
|
return aktuellesDatum;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Setter für Datumsmanipulation
|
||||||
|
*
|
||||||
|
* @param datum
|
||||||
|
*/
|
||||||
|
public void setAktuellesDatum(LocalDate datum) {
|
||||||
|
this.aktuellesDatum = datum;
|
||||||
|
System.out.println("Systemdatum auf " + aktuellesDatum + " gesetzt.");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Methode mit der man nach Medien suchen kann und angezeigt bekommt ob die Medien geführt werden, ob sie
|
||||||
|
* verfügbar sind oder ob sie ausgeliehen sind sowohl als auch bis wann ausgeliehen
|
||||||
|
*
|
||||||
|
* @param titel
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public List<String> sucheMedienNachTitel(String titel) {
|
||||||
return medienBestand.values().stream()
|
return medienBestand.values().stream()
|
||||||
.filter(medien -> medien.getTitel().toLowerCase().contains(titel.toLowerCase()))
|
.filter(medien -> medien.getTitel().toLowerCase().contains(titel.toLowerCase()))
|
||||||
|
.map(medien -> {
|
||||||
|
String status = medien.verfuegbar()
|
||||||
|
? "[Verfügbar]"
|
||||||
|
: "[Ausgeliehen bis: " + medien.getRueckgabedat() + "]";
|
||||||
|
return medien.getDetails() + " " + status;
|
||||||
|
})
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Zeigt alle Medien die in der Bib geführt werden, ebenfalls mit der Info verfügbar oder ausgeliehen
|
||||||
|
*/
|
||||||
public void alleMedienAnzeigen() {
|
public void alleMedienAnzeigen() {
|
||||||
if (medienBestand.isEmpty()) {
|
if (medienBestand.isEmpty()) {
|
||||||
System.out.println("Keine Medien im Bestand.");
|
System.out.println("Keine Medien im Bestand.");
|
||||||
} else {
|
} else {
|
||||||
System.out.println("Medienbestand:");
|
System.out.println("Medienbestand:");
|
||||||
medienBestand.values().forEach(m ->
|
medienBestand.values().forEach(medien -> {
|
||||||
System.out.println("- " + m.getDetails() +
|
String status = medien.verfuegbar()
|
||||||
(m.verfuegbar() ? " [Verfügbar]" : " [Ausgeliehen]"))
|
? "[Verfügbar]"
|
||||||
);
|
: "[Ausgeliehen bis: " + medien.getRueckgabedat() + "]";
|
||||||
|
System.out.println("- " + medien.getDetails() + " " + status);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Methode um ein Medium auszuleihen
|
||||||
|
* Kunde muss dafür eingeloggt sein, Medium kann nicht mehrfach ausgeliehen werden
|
||||||
|
*
|
||||||
|
* @param medienId
|
||||||
|
*/
|
||||||
public void medienAusleihen(String medienId) {
|
public void medienAusleihen(String medienId) {
|
||||||
medienId = medienId.trim().toUpperCase(); // Normalisierung
|
medienId = medienId.trim().toUpperCase(); // Normalisierung
|
||||||
Medien medien = medienBestand.get(medienId);
|
Medien medien = medienBestand.get(medienId);
|
||||||
|
@ -68,12 +113,16 @@ public class Bibliotheksverwaltung {
|
||||||
System.out.println("Medium erfolgreich ausgeliehen: " + medien.getTitel());
|
System.out.println("Medium erfolgreich ausgeliehen: " + medien.getTitel());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Kunde gibt sein ausgeliehens Medium zurück, wenn er überzogen hat
|
||||||
|
* wird dem konto die Überziehungsgebühr addiert
|
||||||
|
*
|
||||||
|
* @param medienId
|
||||||
|
* @param kundenId
|
||||||
|
*/
|
||||||
public void medienZurueckgeben(String medienId, String kundenId) {
|
public void medienZurueckgeben(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) {
|
if (medien == null) {
|
||||||
System.out.println("Medium nicht gefunden.");
|
System.out.println("Medium nicht gefunden.");
|
||||||
return;
|
return;
|
||||||
|
@ -83,14 +132,20 @@ public class Bibliotheksverwaltung {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (kunde.getAusgelieheneMedien().contains(medien)) {
|
if (kunde.getAusgelieheneMedien().contains(medien)) {
|
||||||
|
double gebuehren = medien.berechneGebuehren(aktuellesDatum);
|
||||||
|
kunde.addGebuehren(gebuehren); // Gebühren hinzufügen
|
||||||
kunde.medienZurueckgeben(medien);
|
kunde.medienZurueckgeben(medien);
|
||||||
medien.setVerfuegbar(true);
|
medien.setVerfuegbar(true);
|
||||||
System.out.println("Medium erfolgreich zurückgegeben: " + medien.getTitel());
|
System.out.println("Medium erfolgreich zurückgegeben: " + medien.getTitel());
|
||||||
|
if (gebuehren > 0) {
|
||||||
|
System.out.println("Überziehungsgebühren: " + gebuehren + " € wurden dem Konto hinzugefügt.");
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
System.out.println("Dieses Medium wurde nicht von diesem Kunden ausgeliehen.");
|
System.out.println("Dieses Medium wurde nicht von diesem Kunden ausgeliehen.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void medienVerlaengern(String medienId, String kundenId, int aktuelleVerlaengerungen) {
|
public void medienVerlaengern(String medienId, String kundenId, int aktuelleVerlaengerungen) {
|
||||||
Medien medien = medienBestand.get(medienId);
|
Medien medien = medienBestand.get(medienId);
|
||||||
Kunde kunde = kundenListe.get(kundenId);
|
Kunde kunde = kundenListe.get(kundenId);
|
||||||
|
@ -157,6 +212,7 @@ public class Bibliotheksverwaltung {
|
||||||
System.out.println("Kein Benutzer ist eingeloggt.");
|
System.out.println("Kein Benutzer ist eingeloggt.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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()
|
||||||
|
@ -172,4 +228,32 @@ public class Bibliotheksverwaltung {
|
||||||
return neuerKunde;
|
return neuerKunde;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void zeigeAusgelieheneMedien() {
|
||||||
|
if (!(eingeloggterBenutzer instanceof Kunde)) {
|
||||||
|
System.out.println("Nur eingeloggte Kunden können ausgeliehene Medien anzeigen.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Kunde kunde = (Kunde) eingeloggterBenutzer;
|
||||||
|
List<Medien> ausgelieheneMedien = kunde.getAusgelieheneMedien();
|
||||||
|
if (ausgelieheneMedien.isEmpty()) {
|
||||||
|
System.out.println("Es wurden keine Medien ausgeliehen.");
|
||||||
|
} else {
|
||||||
|
System.out.println("Ausgeliehene Medien:");
|
||||||
|
ausgelieheneMedien.forEach(medien -> {
|
||||||
|
double gebuehren = medien.berechneGebuehren(aktuellesDatum);
|
||||||
|
String status = medien.verfuegbar()
|
||||||
|
? "[Verfügbar]"
|
||||||
|
: "[Ausgeliehen bis: " + medien.getRueckgabedat() + ", Gebühren: " + gebuehren + " €]";
|
||||||
|
System.out.println("- " + medien.getDetails() + " " + status);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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() + ")"));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@ public class Brettspiel extends Medien {
|
||||||
private int spieldauer;
|
private int spieldauer;
|
||||||
|
|
||||||
public Brettspiel(String titel, String id, int erscheinungsjahr, int spieleranzahl, int spieldauer) {
|
public Brettspiel(String titel, String id, int erscheinungsjahr, int spieleranzahl, int spieldauer) {
|
||||||
super(id, titel, erscheinungsjahr);
|
super(titel, id, erscheinungsjahr);
|
||||||
this.spieleranzahl = spieleranzahl;
|
this.spieleranzahl = spieleranzahl;
|
||||||
this.spieldauer = spieldauer;
|
this.spieldauer = spieldauer;
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@ public class Buch extends Medien {
|
||||||
private int seitenanzahl;
|
private int seitenanzahl;
|
||||||
|
|
||||||
public Buch(String titel, String id, int erscheinungsjahr, String autor, int seitenanzahl) {
|
public Buch(String titel, String id, int erscheinungsjahr, String autor, int seitenanzahl) {
|
||||||
super(titel ,id, erscheinungsjahr);
|
super(titel, id, erscheinungsjahr);
|
||||||
this.autor = autor;
|
this.autor = autor;
|
||||||
this.seitenanzahl = seitenanzahl;
|
this.seitenanzahl = seitenanzahl;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
package Bibliothek;
|
package Bibliothek;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
public class Kunde extends User {
|
public class Kunde extends User {
|
||||||
private boolean istStudent; // True, wenn Kunde ein Student ist
|
private boolean istStudent; // True, wenn Kunde ein Student ist
|
||||||
private double gebuehren; // Offene Gebühren
|
private double gebuehren;
|
||||||
|
; // Offene Gebühren
|
||||||
|
|
||||||
public Kunde(String id, String name, boolean istStudent) {
|
public Kunde(String id, String name, boolean istStudent) {
|
||||||
super(id, name);
|
super(id, name);
|
||||||
|
@ -20,26 +22,22 @@ public class Kunde extends User {
|
||||||
return gebuehren;
|
return gebuehren;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void addGebuehren(double betrag) {
|
||||||
|
if (betrag > 0) {
|
||||||
|
this.gebuehren += betrag;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void gebuehrenErhoehen(double betrag) {
|
public void gebuehrenErhoehen(double betrag) {
|
||||||
this.gebuehren += betrag;
|
this.gebuehren += betrag;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void berechneGebuehren() {
|
public double berechneGesamtgebuehren(LocalDate aktuellesDatum) {
|
||||||
// Gebühren berechnen basierend auf verspäteter Rückgabe
|
return ausgelieheneMedien.stream()
|
||||||
ausgelieheneMedien.forEach(medien -> {
|
.mapToDouble(medien -> medien.berechneGebuehren(aktuellesDatum))
|
||||||
if (medien.getRueckgabedat().isBefore(java.time.LocalDate.now())) {
|
.sum();
|
||||||
int ueberfaelligeTage = java.time.Period.between(
|
}
|
||||||
medien.getRueckgabedat(),
|
|
||||||
java.time.LocalDate.now()
|
|
||||||
).getDays();
|
|
||||||
|
|
||||||
double tagessatz = istStudent ? 0.5 : 1.0; // Studenten zahlen 50% weniger
|
|
||||||
gebuehren += ueberfaelligeTage <= 7
|
|
||||||
? ueberfaelligeTage * tagessatz
|
|
||||||
: (7 * tagessatz) + ((ueberfaelligeTage - 7) * 2);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean medienVerlaengern(Medien medien, int aktuelleVerlaengerungen) {
|
public boolean medienVerlaengern(Medien medien, int aktuelleVerlaengerungen) {
|
||||||
Consumer<Medien> verlaengerung = m -> {
|
Consumer<Medien> verlaengerung = m -> {
|
||||||
|
@ -52,9 +50,4 @@ public class Kunde extends User {
|
||||||
verlaengerung.accept(medien);
|
verlaengerung.accept(medien);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void rolleAnzeigen() {
|
|
||||||
System.out.println("Kunde: " + name + (istStudent ? " (Student)" : " (Erwachsener)"));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,25 +3,39 @@ package Bibliothek;
|
||||||
public class Main {
|
public class Main {
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
Bibliotheksverwaltung verwaltung = new Bibliotheksverwaltung();
|
Bibliotheksverwaltung verwaltung = new Bibliotheksverwaltung();
|
||||||
|
/**
|
||||||
Kunde kunde1 = new Kunde("S001", "Max Mustermann", true);
|
* Hart codierte Kunden und Admin
|
||||||
Kunde kunde2 = new Kunde("K001", "Lisa Müller", false);
|
*/
|
||||||
|
Kunde kunde1 = new Kunde("S1", "Max Mustermann", true);
|
||||||
|
Kunde kunde2 = new Kunde("K1", "Lisa Müller", false);
|
||||||
verwaltung.getKundenListe().put(kunde1.getId(), kunde1);
|
verwaltung.getKundenListe().put(kunde1.getId(), kunde1);
|
||||||
verwaltung.getKundenListe().put(kunde2.getId(), kunde2);
|
verwaltung.getKundenListe().put(kunde2.getId(), kunde2);
|
||||||
|
|
||||||
Admin admin = new Admin("A001", "Anna Schmidt");
|
Admin admin = new Admin("A1", "Anna Schmidt");
|
||||||
verwaltung.getAdminListe().put(admin.getId(), admin);
|
verwaltung.getAdminListe().put(admin.getId(), admin);
|
||||||
|
|
||||||
Medien buch1 = new Buch("Der Herr der Ringe", "B001", 1954, "J.R.R. Tolkien", 1200);
|
/**
|
||||||
Medien buch2 = new Buch("Game of Thrones 1: Der Winter naht", "B002", 1996, "George R.R. Martin", 576);
|
* Hart codierte Medien
|
||||||
Medien buch3 = new Buch("Harry Potter and the Prisoner of Azkaban", "B003", 2014, "J.K. Rowling", 480);
|
*/
|
||||||
Medien dvd1 = new DVD("Inception", "D001", 2010, "Christopher Nolan", 148);
|
Medien buch1 = new Buch("Der Herr der Ringe", "B1", 1954, "J.R.R. Tolkien", 1200);
|
||||||
Medien dvd2 = new DVD("Batman 'The Dark Knight'", "D002", 2008, "Christopher Nolan", 152);
|
Medien buch2 = new Buch("Game of Thrones 1: Der Winter naht", "B2", 1996, "George R.R. Martin", 576);
|
||||||
Medien dvd3 = new DVD("Star Wars: Episode 3 'Die Rache der Sith'", "D003", 2005, "George Lucas", 140);
|
Medien buch3 = new Buch("Harry Potter and the Prisoner of Azkaban", "B3", 2014, "J.K. Rowling", 480);
|
||||||
Medien cd1 = new CD("Black Ice", "CD001", 2001, "ACDC", 15);
|
Medien dvd1 = new DVD("Inception", "D1", 2010, "Christopher Nolan", 148);
|
||||||
Medien cd2 = new CD("From Zero", "CD002", 2024, "Linkin Park", 11);
|
Medien dvd2 = new DVD("Batman 'The Dark Knight'", "D2", 2008, "Christopher Nolan", 152);
|
||||||
Medien cd3 = new CD("The War to end all Wars", "CD003", 2022, "Sabaton", 10);
|
Medien dvd3 = new DVD("Star Wars: Episode 3 'Die Rache der Sith'", "D3", 2005, "George Lucas", 140);
|
||||||
|
Medien cd1 = new CD("Black Ice", "CD1", 2001, "ACDC", 15);
|
||||||
|
Medien cd2 = new CD("From Zero", "CD2", 2024, "Linkin Park", 11);
|
||||||
|
Medien cd3 = new CD("The War to end all Wars", "CD3", 2022, "Sabaton", 10);
|
||||||
|
Medien br1 = new Brettspiel("Wizard", "BR1", 1984, 4, 50);
|
||||||
|
Medien br2 = new Brettspiel("Mensch Ärgere dich nicht", "BR2", 1910, 6, 50);
|
||||||
|
Medien br3 = new Brettspiel("Monopoly Star Wars Edition", "BR3", 2016, 4, 60);
|
||||||
|
Medien vd1 = new Videospiel("Cyberpunk2077", "VD1", 2022, "PC/PS5/XBOX", "CD Projekt Red");
|
||||||
|
Medien vd2 = new Videospiel("Landwirtschafts-Simulator 25", "VD2", 2024, "PC/PS5/XBOX", "Giants");
|
||||||
|
Medien vd3 = new Videospiel("CFB25", "VD3", 2024, "PC/PS5/XBOX", "EA-Sports");
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hinzufügen Methode der hart codierten Medien
|
||||||
|
*/
|
||||||
verwaltung.medienHinzufuegen(buch1);
|
verwaltung.medienHinzufuegen(buch1);
|
||||||
verwaltung.medienHinzufuegen(buch2);
|
verwaltung.medienHinzufuegen(buch2);
|
||||||
verwaltung.medienHinzufuegen(buch3);
|
verwaltung.medienHinzufuegen(buch3);
|
||||||
|
@ -31,6 +45,12 @@ public class Main {
|
||||||
verwaltung.medienHinzufuegen(cd1);
|
verwaltung.medienHinzufuegen(cd1);
|
||||||
verwaltung.medienHinzufuegen(cd2);
|
verwaltung.medienHinzufuegen(cd2);
|
||||||
verwaltung.medienHinzufuegen(cd3);
|
verwaltung.medienHinzufuegen(cd3);
|
||||||
|
verwaltung.medienHinzufuegen(br1);
|
||||||
|
verwaltung.medienHinzufuegen(br2);
|
||||||
|
verwaltung.medienHinzufuegen(br3);
|
||||||
|
verwaltung.medienHinzufuegen(vd1);
|
||||||
|
verwaltung.medienHinzufuegen(vd2);
|
||||||
|
verwaltung.medienHinzufuegen(vd3);
|
||||||
|
|
||||||
// Starte UI
|
// Starte UI
|
||||||
UI tui = new UI(verwaltung);
|
UI tui = new UI(verwaltung);
|
||||||
|
|
|
@ -15,15 +15,19 @@ public abstract class Medien {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.erscheinungsjahr = erscheinungsjahr;
|
this.erscheinungsjahr = erscheinungsjahr;
|
||||||
}
|
}
|
||||||
|
|
||||||
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 getId() {
|
public String getId() {
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setId(String id) {
|
public void setId(String id) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
}
|
}
|
||||||
|
@ -32,19 +36,24 @@ public abstract class Medien {
|
||||||
return rueckgabedat;
|
return rueckgabedat;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean verfuegbar(){
|
public boolean verfuegbar() {
|
||||||
return verfuegbar;
|
return verfuegbar;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getErscheinungsjahr() {
|
public int getErscheinungsjahr() {
|
||||||
return erscheinungsjahr;
|
return erscheinungsjahr;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setErscheinungsjahr(int er) {
|
public void setErscheinungsjahr(int er) {
|
||||||
this.erscheinungsjahr = er;
|
this.erscheinungsjahr = er;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setVerfuegbar(boolean verfuegbar) {
|
public void setVerfuegbar(boolean verfuegbar) {
|
||||||
this.verfuegbar = verfuegbar;
|
this.verfuegbar = verfuegbar;
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract int getAusleihdauer();
|
public abstract int getAusleihdauer();
|
||||||
|
|
||||||
public abstract int getMaxVerlaengerungen();
|
public abstract int getMaxVerlaengerungen();
|
||||||
|
|
||||||
public void ausleihen() {
|
public void ausleihen() {
|
||||||
|
@ -75,5 +84,19 @@ public abstract class Medien {
|
||||||
rueckgabedat = null;
|
rueckgabedat = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean istUeberzogen(LocalDate aktuellesDatum) {
|
||||||
|
return rueckgabedat != null && rueckgabedat.isBefore(aktuellesDatum);
|
||||||
|
}
|
||||||
|
|
||||||
|
public double berechneGebuehren(LocalDate aktuellesDatum) {
|
||||||
|
if (rueckgabedat == null || !istUeberzogen(aktuellesDatum)) {
|
||||||
|
return 0.0; // Keine Gebühren, wenn nicht überzogen
|
||||||
|
}
|
||||||
|
|
||||||
|
long ueberzogeneTage = java.time.temporal.ChronoUnit.DAYS.between(rueckgabedat, aktuellesDatum);
|
||||||
|
return ueberzogeneTage * 0.50; // Beispiel: 0.50 Euro pro überzogenem Tag
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public abstract String getDetails();
|
public abstract String getDetails();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package Bibliothek;
|
package Bibliothek;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
import java.util.Scanner;
|
import java.util.Scanner;
|
||||||
|
|
||||||
public class UI {
|
public class UI {
|
||||||
|
@ -35,6 +36,8 @@ public class UI {
|
||||||
System.out.println("10. Gebühren anzeigen");
|
System.out.println("10. Gebühren anzeigen");
|
||||||
System.out.println("11. Gebühren verbuchen (Admin)");
|
System.out.println("11. Gebühren verbuchen (Admin)");
|
||||||
System.out.println("12. Medien hinzufügen (Admin)");
|
System.out.println("12. Medien hinzufügen (Admin)");
|
||||||
|
System.out.println("13. Meine ausgeliehenen Medien anzeigen");
|
||||||
|
System.out.println("14. Datum einstellen");
|
||||||
System.out.println("0. Beenden");
|
System.out.println("0. Beenden");
|
||||||
System.out.print("Auswahl: ");
|
System.out.print("Auswahl: ");
|
||||||
}
|
}
|
||||||
|
@ -53,11 +56,16 @@ public class UI {
|
||||||
case "10" -> gebuehrenAnzeigen();
|
case "10" -> gebuehrenAnzeigen();
|
||||||
case "11" -> gebuehrenVerbuchen();
|
case "11" -> gebuehrenVerbuchen();
|
||||||
case "12" -> medienHinzufuegen();
|
case "12" -> medienHinzufuegen();
|
||||||
|
case "13" -> ausgeliehenenMedienAnzeigen();
|
||||||
|
case "14" -> datumEinstellen();
|
||||||
case "0" -> System.out.println("Beende das Programm...");
|
case "0" -> System.out.println("Beende das Programm...");
|
||||||
default -> System.out.println("Ungültige Auswahl. Bitte erneut versuchen.");
|
default -> System.out.println("Ungültige Auswahl. Bitte erneut versuchen.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Wartet auf die Eingabe der Kunden-Id, wenn diese existiert wird der User eingeloggt
|
||||||
|
*/
|
||||||
private void loginKunde() {
|
private void loginKunde() {
|
||||||
System.out.print("Kunden-ID eingeben: ");
|
System.out.print("Kunden-ID eingeben: ");
|
||||||
String kundenId = scanner.nextLine();
|
String kundenId = scanner.nextLine();
|
||||||
|
@ -92,7 +100,6 @@ public class UI {
|
||||||
Kunde neuerKunde = verwaltung.registriereKunde(name, istStudent);
|
Kunde neuerKunde = verwaltung.registriereKunde(name, istStudent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void medienDurchsuchen() {
|
private void medienDurchsuchen() {
|
||||||
System.out.print("Suchbegriff eingeben: ");
|
System.out.print("Suchbegriff eingeben: ");
|
||||||
String suchbegriff = scanner.nextLine();
|
String suchbegriff = scanner.nextLine();
|
||||||
|
@ -102,7 +109,7 @@ public class UI {
|
||||||
System.out.println("Keine Medien gefunden.");
|
System.out.println("Keine Medien gefunden.");
|
||||||
} else {
|
} else {
|
||||||
System.out.println("Suchergebnisse:");
|
System.out.println("Suchergebnisse:");
|
||||||
ergebnisse.forEach(medien -> System.out.println("- " + medien.getDetails()));
|
ergebnisse.forEach(System.out::println);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -152,13 +159,15 @@ public class UI {
|
||||||
|
|
||||||
private void gebuehrenAnzeigen() {
|
private void gebuehrenAnzeigen() {
|
||||||
if (!(verwaltung.getEingeloggterBenutzer() instanceof Kunde)) {
|
if (!(verwaltung.getEingeloggterBenutzer() instanceof Kunde)) {
|
||||||
System.out.println("Bitte loggen Sie sich als Kunde ein, um Gebühren anzuzeigen.");
|
System.out.println("Nur eingeloggte Kunden können ihre Gebühren anzeigen.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Kunde kunde = (Kunde) verwaltung.getEingeloggterBenutzer();
|
Kunde kunde = (Kunde) verwaltung.getEingeloggterBenutzer();
|
||||||
System.out.println("Gebühren von " + kunde.getName() + ": " + kunde.getGebuehren() + "€");
|
double gesamtgebuehren = kunde.berechneGesamtgebuehren(verwaltung.getAktuellesDatum());
|
||||||
|
System.out.println("Gesamtgebühren: " + gesamtgebuehren + " €");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void gebuehrenVerbuchen() {
|
private void gebuehrenVerbuchen() {
|
||||||
if (!(verwaltung.getEingeloggterBenutzer() instanceof Admin)) {
|
if (!(verwaltung.getEingeloggterBenutzer() instanceof Admin)) {
|
||||||
System.out.println("Nur Admins können Gebühren verbuchen. Bitte als Admin einloggen.");
|
System.out.println("Nur Admins können Gebühren verbuchen. Bitte als Admin einloggen.");
|
||||||
|
@ -171,7 +180,6 @@ public class UI {
|
||||||
System.out.println("Kunde nicht gefunden.");
|
System.out.println("Kunde nicht gefunden.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
System.out.print("Betrag eingeben: ");
|
System.out.print("Betrag eingeben: ");
|
||||||
try {
|
try {
|
||||||
double betrag = Double.parseDouble(scanner.nextLine());
|
double betrag = Double.parseDouble(scanner.nextLine());
|
||||||
|
@ -245,4 +253,21 @@ public class UI {
|
||||||
System.out.println("Ungültige Eingabe. Bitte eine Zahl eingeben.");
|
System.out.println("Ungültige Eingabe. Bitte eine Zahl eingeben.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void ausgeliehenenMedienAnzeigen() {
|
||||||
|
verwaltung.zeigeAusgelieheneMedien();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void datumEinstellen() {
|
||||||
|
System.out.print("Neues Datum eingeben (YYYY-MM-DD): ");
|
||||||
|
String eingabe = scanner.nextLine();
|
||||||
|
try {
|
||||||
|
LocalDate neuesDatum = LocalDate.parse(eingabe);
|
||||||
|
verwaltung.setAktuellesDatum(neuesDatum);
|
||||||
|
} catch (Exception e) {
|
||||||
|
System.out.println("Ungültiges Datum. Bitte im Format YYYY-MM-DD eingeben.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,6 +45,4 @@ public abstract class User {
|
||||||
System.out.println("'" + medien.getTitel() + "' wurde nicht von " + name + " ausgeliehen.");
|
System.out.println("'" + medien.getTitel() + "' wurde nicht von " + name + " ausgeliehen.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract void rolleAnzeigen();
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@ public class Videospiel extends Medien {
|
||||||
private String entwickler;
|
private String entwickler;
|
||||||
|
|
||||||
public Videospiel(String titel, String id, int erscheinungsjahr, String plattform, String entwickler) {
|
public Videospiel(String titel, String id, int erscheinungsjahr, String plattform, String entwickler) {
|
||||||
super(id, titel, erscheinungsjahr);
|
super(titel, id, erscheinungsjahr);
|
||||||
this.plattform = plattform;
|
this.plattform = plattform;
|
||||||
this.entwickler = entwickler;
|
this.entwickler = entwickler;
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue