packages hinzugefügt

main
Zabih Mansuri 2024-12-01 23:25:29 +01:00
parent 5f61cdc46f
commit 58ad27c0ba
19 changed files with 291 additions and 254 deletions

View File

@ -1,5 +1,5 @@
Wie kann ich die Vererbung für Medienarten am besten strukturieren, um die unterschiedlichen Ausleihregeln und Fälligkeitsdaten zu unterstützen? Sollten die spezifischen Regeln (z. B. Ausleihfrist, Anzahl der Verlängerungen) direkt in den Medientypklassen definiert sein, oder wäre eine zentrale Verwaltung sinnvoller?
Wie kann ich die Vererbung für Medienarten am besten strukturieren, um die unterschiedlichen Ausleihregeln und Fälligkeitsdaten zu unterstützen? Sollten die spezifischen Regeln (z. B. Ausleihfrist, Anzahl der Verlängerungen) direkt in den Medientypklassen definiert sein, oder wäre eine zentrale fassade.Verwaltung sinnvoller?
Wie detailliert sollte die Benutzerverwaltung aufgebaut sein? Wäre es beispielsweise besser, getrennte Klassen für „Erwachsene“ und „Schüler/Studenten“ zu erstellen, oder würde eine allgemeine Benutzerklasse mit einem Attribut für den Benutzertyp ausreichen? Und wie lässt sich der Admin-Status am besten einbinden?
Wie detailliert sollte die Benutzerverwaltung aufgebaut sein? Wäre es beispielsweise besser, getrennte Klassen für „Erwachsene“ und „Schüler/Studenten“ zu erstellen, oder würde eine allgemeine Benutzerklasse mit einem Attribut für den Benutzertyp ausreichen? Und wie lässt sich der backend.benutzer.Admin-Status am besten einbinden?
Wie detailliert muss die Gebührenverwaltung implementiert sein, insbesondere für überfällige Medien? Soll die Logik für Gebührenberechnung und -verwaltung direkt in die Medien- oder Benutzerklassen integriert werden, oder wäre es besser, diese in eine separate Klasse oder ein Interface für mehr Flexibilität auszulagern?
Wie detailliert muss die Gebührenverwaltung implementiert sein, insbesondere für überfällige backend.medium.Medien? Soll die Logik für Gebührenberechnung und -verwaltung direkt in die backend.medium.Medien- oder Benutzerklassen integriert werden, oder wäre es besser, diese in eine separate Klasse oder ein Interface für mehr Flexibilität auszulagern?

View File

@ -1,30 +0,0 @@
class Creator {
// Factory-Methode für Benutzer
static Benutzer factoryBenutzer(String name, String nachname, int kundennummer, String art) {
if (art.equalsIgnoreCase("e")) {
return new Benutzer.Erwachsener(name, nachname, kundennummer); // Erstelle einen Erwachsenen
} else if (art.equalsIgnoreCase("s")) {
return new Benutzer.SchuelerStudent(name, nachname, kundennummer, art); // Erstelle einen Schüler/Studenten
} else {
return null; // Unbekannte Benutzerart
}
}
// Factory-Methode für Medien
public static Medien factoryMedien(String name, String regisseur, int id, String art, int erscheinungsjahr) {
switch (art.toLowerCase()) {
case "buch":
return new Medien.Book(name, regisseur, id, erscheinungsjahr);
case "dvd":
return new Medien.Dvds(name, regisseur, id);
case "cd":
return new Medien.Cds(name, id);
case "sb":
return new Medien.Brettspiel(name, id);
case "videospiel":
return new Medien.Videospiel(name, regisseur, id);
default:
throw new IllegalArgumentException("Unbekannter Medientyp: " + art);
}
}
}

View File

@ -1,162 +0,0 @@
// Interface für Medien, die ausgeliehen werden können
interface Ausleihbar {
int getMaxVerlängerungen(); // Gibt die maximale Anzahl an Verlängerungen zurück
boolean kannVerlängern(); // Prüft, ob das Medium verlängerbar ist
boolean verlängern(); // Verlängert das Medium, wenn möglich
}
// Abstrakte Basisklasse für alle Medien
public abstract class Medien implements Ausleihbar {
protected String name;
protected int id;
protected int frist; // Standard-Ausleihfrist in Wochen
protected int maxVerlängerungen; // Maximale Anzahl an möglichen Verlängerungen
protected int aktuelleVerlängerungen=1; // Aktuelle Anzahl an durchgeführten Verlängerungen
protected boolean istAusgeliehen; // Status, ob das Medium ausgeliehen ist
// Konstruktor
public Medien(String name, int id, int frist, int maxVerlängerungen) {
this.name = name;
this.id = id;
this.frist = frist;
this.maxVerlängerungen = maxVerlängerungen;
this.aktuelleVerlängerungen = 0; // Initialisierung ohne Verlängerungen
// Initialer Status: nicht ausgeliehen
}
// Getter-Methoden
public String getName() {
return name;
}
public int getId() {
return id;
}
// Implementierung der Ausleihbar-Methoden
@Override
public int getMaxVerlängerungen() {
return maxVerlängerungen;
}
@Override
public boolean kannVerlängern() {
return aktuelleVerlängerungen < maxVerlängerungen;
}
@Override
public boolean verlängern() {
if (kannVerlängern()) {
aktuelleVerlängerungen++;
return true; // Verlängerung erfolgreich
}
return false; // Keine Verlängerung mehr möglich
}
public boolean istAusgeliehen() {
return istAusgeliehen;
}
public void ausleihen() {
if (!istAusgeliehen) {
istAusgeliehen = true;
} else {
System.out.println("Das Medium ist bereits ausgeliehen.");
}
}
public void zurückgeben() {
istAusgeliehen = false;
}
// Unterklasse für Bücher
public static class Book extends Medien
{
private String autor;
private int erscheinungsjahr;
public Book(String name, String autor, int id, int erscheinungsjahr) {
super(name, id, 4, 3); // Frist für Bücher ist 4 Wochen, bis zu 3 Mal verlängerbar
this.autor = autor;
this.erscheinungsjahr = erscheinungsjahr;
}
// Getter-Methoden für spezifische Eigenschaften von Büchern
public String getAutor() {
return autor;
}
public int getErscheinungsjahr() {
return erscheinungsjahr;
}
@Override
public String toString() {
return "Buch: " + name + " von " + autor + " (ID: " + id + ", Jahr: " + erscheinungsjahr + ")";
}
}
// Unterklasse für DVDs
public static class Dvds extends Medien {
private String regisseur;
public Dvds(String name, String regisseur, int id) {
super(name, id, 7, 0); // Frist für DVDs ist 1 Woche, keine Verlängerung möglich
this.regisseur = regisseur;
}
// Getter-Methoden für spezifische Eigenschaften von DVDs
public String getRegisseur() {
return regisseur;
}
@Override
public String toString() {
return "DVD: " + name + " von " + regisseur + " (ID: " + id + ")";
}
}
// Unterklasse für CDs
public static class Cds extends Medien {
public Cds(String name, int id) {
super(name, id, 14, 0); // Frist für CDs ist 2 Wochen, keine Verlängerung möglich
}
@Override
public String toString() {
return "CD: " + name + " (ID: " + id + ")";
}
}
// Unterklasse für Brettspiele
public static class Brettspiel extends Medien {
public Brettspiel(String name, int id) {
super(name, id, 14, 0); // Frist für Brettspiele ist 2 Wochen, keine Verlängerung möglich
}
@Override
public String toString() {
return "Brettspiel: " + name + " (ID: " + id + ")";
}
}
// Unterklasse für Videospiele
public static class Videospiel extends Medien {
private String entwickler;
public Videospiel(String name, String entwickler, int id) {
super(name, id, 28 , 1); // Frist für Videospiele ist 4 Wochen, einmal verlängerbar
this.entwickler = entwickler;
}
// Getter-Methoden für spezifische Eigenschaften von Videospielen
public String getEntwickler() {
return entwickler;
}
@Override
public String toString() {
return "Videospiel: " + name + " von " + entwickler + " (ID: " + id + ")";
}
}
}

View File

@ -1,3 +1,10 @@
package UI;
import backend.creator.*; // Importiert alle Klassen aus dem benutzer-Paket
import fassade.*;
// Creator gehört zum benutzer-Paket
public class Main {
public static void main(String[] args) {
// Erstelle die Instanzen
@ -16,10 +23,10 @@ public class Main {
verwaltung.mediensListe.add(creator.factoryMedien("Minecraft", "Mojang", 9, "videospiel", 0));
verwaltung.mediensListe.add(creator.factoryMedien("The Witcher 3", "CD Projekt", 10, "videospiel", 0));
// Erstelle die Fassade mit der Verwaltung
// Erstelle die fassade mit der fassade
Fassade fassade = new Fassade(verwaltung);
// UI mit der Fassade initialisieren
// UI mit der fassade.Fassade initialisieren
Ui ui = new Ui(fassade);
// Anmeldung starten

View File

@ -1,8 +1,14 @@
package UI;
import backend.benutzer.*;
import fassade.*;
import java.time.LocalDate;
import java.util.Scanner;
import backend.creator.Creator;
public class Ui {
private final Fassade fassade;
private final Scanner scanner;
@ -15,11 +21,11 @@ public class Ui {
boolean weiter = true;
while (weiter) {
System.out.println("Bitte wählen Sie eine Option:");
System.out.println("1. Medien durchsuchen");
System.out.println("1.Medien durchsuchen");
System.out.println("2. Benutzer registrieren");
System.out.println("3. Benutzer anmelden");
System.out.println("4. Medien ausleihen");
System.out.println("5. Medien zurückgeben");
System.out.println("4. ausleihen");
System.out.println("5.Medien zurückgeben");
System.out.println("6. Medien verlängern");
System.out.println("7. Gebühren einsehen");
System.out.println("8. Zeit verschieben");
@ -44,11 +50,11 @@ public class Ui {
}
private void durchsuchenMedien() {
System.out.print("Suchbegriff (oder 'all' für alle Medien): ");
System.out.print("Suchbegriff (oder 'all' für alle backend.medium.Medien): ");
String suchbegriff = scanner.nextLine();
var ergebnisse = fassade.durchsuchenMedien(suchbegriff);
if (ergebnisse.isEmpty()) {
System.out.println("Keine Medien gefunden.");
System.out.println("Keine backend.medium.Medien gefunden.");
} else {
ergebnisse.forEach(m -> System.out.println(m));
}
@ -62,7 +68,7 @@ public class Ui {
System.out.print("Benutzertyp (e für Erwachsener, s für Schüler/Student): ");
String art = scanner.nextLine();
// Erstelle den Benutzer über die Creator-Fabrikmethode
// Erstelle den Benutzer über die backend.benutzer.Creator-Fabrikmethode
Benutzer benutzer = Creator.factoryBenutzer(vorname, nachname, 0, art); // Kundennummer könnte hier 0 sein, wenn sie noch nicht vergeben wurde.
if (benutzer != null) {
@ -87,7 +93,7 @@ public class Ui {
}
private void ausleihen() {
System.out.print("Medien ID: ");
System.out.print("backend.medium.Medien ID: ");
int medienId = scanner.nextInt();
System.out.print("Kundennummer: ");
int kundennummer = scanner.nextInt();
@ -105,7 +111,7 @@ public class Ui {
}
private void rueckgabe() {
System.out.print("Medien ID: ");
System.out.print("backend.medium.Medien ID: ");
int medienId = scanner.nextInt();
System.out.print("Kundennummer: ");
int kundennummer = scanner.nextInt();
@ -123,7 +129,7 @@ public class Ui {
}
private void verlaengern() {
System.out.print("Medien ID: ");
System.out.print("backend.medium.Medien ID: ");
int medienId = scanner.nextInt();
System.out.print("Kundennummer: ");
int kundennummer = scanner.nextInt();

View File

@ -1,9 +1,11 @@
package backend.benutzer;
class Admin {
private final String name = "zabih";
private final String nachname = "Mansuri";
private final int passwort = 1234;
private final String art = "Admin";
private final String art = "backend.benutzer.Admin";
// Getter-Methoden
public String getName() {
@ -24,7 +26,7 @@ class Admin {
@Override
public String toString() {
return "Admin{" +
return "backend.benutzer.Admin{" +
"Name='" + name + '\'' +
", Nachname='" + nachname + '\'' +
", Passwort=" + passwort +

View File

@ -1,4 +1,7 @@
abstract class Benutzer {
// Datei: Benutzer.java
package backend.benutzer;
public abstract class Benutzer {
private String name;
private String nachname;
private int kundennummer;
@ -66,21 +69,4 @@ abstract class Benutzer {
", Ausstehende Gebühren=" + gebuehren +
'}';
}
// Spezifische Benutzertypen als Unterklassen
public static class Erwachsener extends Benutzer {
public Erwachsener(String name, String nachname, int kundennummer) {
super(name, nachname, kundennummer, "Erwachsener");
}
}
public static class SchuelerStudent extends Benutzer {
public SchuelerStudent(String name, String nachname, int kundennummer,String art) {
super(name, nachname, kundennummer,art);
}
}
}

View File

@ -0,0 +1,8 @@
// Datei: Erwachsener.java
package backend.benutzer;
public class Erwachsener extends Benutzer {
public Erwachsener(String name, String nachname, int kundennummer) {
super(name, nachname, kundennummer, "Erwachsener");
}
}

View File

@ -0,0 +1,8 @@
// Datei: SchuelerStudent.java
package backend.benutzer;
public class SchuelerStudent extends Benutzer {
public SchuelerStudent(String name, String nachname, int kundennummer, String art) {
super(name, nachname, kundennummer, art);
}
}

View File

@ -0,0 +1,34 @@
package backend.creator; // Creator gehört zum benutzer-Paket
import backend.medium.*; // Importiert alle Klassen aus dem medium-Paket
import backend.benutzer.*;// Optional, falls du auf die anderen Benutzer-Klassen zugreifen möchtest
public class Creator {
// Factory-Methode für Benutzer
public static Benutzer factoryBenutzer(String name, String nachname, int kundennummer, String art) {
if (art.equalsIgnoreCase("e")) {
return new Erwachsener(name, nachname, kundennummer); // Erstelle einen Erwachsenen
} else if (art.equalsIgnoreCase("s")) {
return new SchuelerStudent(name, nachname, kundennummer, art); // Erstelle einen Schüler/Studenten
} else {
return null; // Unbekannte Benutzerart
}
}
// Factory-Methode für backend.medium.Medien
public static Medien factoryMedien(String name, String regisseur, int id, String art, int erscheinungsjahr) {
switch (art.toLowerCase()) {
case "buch":
return new Book(name, regisseur, id, erscheinungsjahr);
case "dvd":
return new Dvds(name, regisseur, id);
case "cd":
return new Cds(name, id);
case "sb":
return new Brettspiel(name, id);
case "videospiel":
return new Videospiel(name, regisseur, id);
default:
throw new IllegalArgumentException("Unbekannter Medientyp: " + art);
}
}
}

View File

@ -0,0 +1,26 @@
package backend.medium;
public class Book extends Medien {
private String autor;
private int erscheinungsjahr;
public Book(String name, String autor, int id, int erscheinungsjahr) {
super(name, id, 4, 3); // Frist für Bücher ist 4 Wochen, bis zu 3 Mal verlängerbar
this.autor = autor;
this.erscheinungsjahr = erscheinungsjahr;
}
// Getter-Methoden für spezifische Eigenschaften von Büchern
public String getAutor() {
return autor;
}
public int getErscheinungsjahr() {
return erscheinungsjahr;
}
@Override
public String toString() {
return "Buch: " + name + " von " + autor + " (ID: " + id + ", Jahr: " + erscheinungsjahr + ")";
}
}

View File

@ -0,0 +1,12 @@
package backend.medium;
public class Brettspiel extends Medien {
public Brettspiel(String name, int id) {
super(name, id, 14, 0); // Frist für Brettspiele ist 2 Wochen, keine Verlängerung möglich
}
@Override
public String toString() {
return "backend.medium.Brettspiel: " + name + " (ID: " + id + ")";
}
}

View File

@ -0,0 +1,12 @@
package backend.medium;
public class Cds extends Medien {
public Cds(String name, int id) {
super(name, id, 14, 0); // Frist für CDs ist 2 Wochen, keine Verlängerung möglich
}
@Override
public String toString() {
return "CD: " + name + " (ID: " + id + ")";
}
}

View File

@ -0,0 +1,20 @@
package backend.medium;
public class Dvds extends Medien {
private String regisseur;
public Dvds(String name, String regisseur, int id) {
super(name, id, 7, 0); // Frist für DVDs ist 1 Woche, keine Verlängerung möglich
this.regisseur = regisseur;
}
// Getter-Methoden für spezifische Eigenschaften von DVDs
public String getRegisseur() {
return regisseur;
}
@Override
public String toString() {
return "DVD: " + name + " von " + regisseur + " (ID: " + id + ")";
}
}

View File

@ -0,0 +1,76 @@
package backend.medium;
// Interface für backend.medium.Medien, die ausgeliehen werden können
interface Ausleihbar {
int getMaxVerlängerungen(); // Gibt die maximale Anzahl an Verlängerungen zurück
boolean kannVerlängern(); // Prüft, ob das Medium verlängerbar ist
boolean verlängern(); // Verlängert das Medium, wenn möglich
}
// Abstrakte Basisklasse für alle backend.medium.Medien
public abstract class Medien implements Ausleihbar {
protected String name;
protected int id;
protected int frist; // Standard-Ausleihfrist in Wochen
protected int maxVerlängerungen; // Maximale Anzahl an möglichen Verlängerungen
protected int aktuelleVerlängerungen = 0; // Aktuelle Anzahl an durchgeführten Verlängerungen
public boolean istAusgeliehen; // Status, ob das Medium ausgeliehen ist
// Konstruktor
public Medien(String name, int id, int frist, int maxVerlängerungen) {
this.name = name;
this.id = id;
this.frist = frist;
this.maxVerlängerungen = maxVerlängerungen;
}
// Getter-Methoden
public String getName() {
return name;
}
public int getId() {
return id;
}
// Implementierung der backend.medium.Ausleihbar-Methoden
@Override
public int getMaxVerlängerungen() {
return maxVerlängerungen;
}
@Override
public boolean kannVerlängern() {
return aktuelleVerlängerungen < maxVerlängerungen;
}
@Override
public boolean verlängern() {
if (kannVerlängern()) {
aktuelleVerlängerungen++;
return true; // Verlängerung erfolgreich
}
return false; // Keine Verlängerung mehr möglich
}
public boolean istAusgeliehen() {
return istAusgeliehen;
}
public void ausleihen() {
if (!istAusgeliehen) {
istAusgeliehen = true;
} else {
System.out.println("Das Medium ist bereits ausgeliehen.");
}
}
public int getAktuelleVerlängerungen() {
return aktuelleVerlängerungen;
}
public void zurückgeben() {
istAusgeliehen = false;
}
}

View File

@ -0,0 +1,20 @@
package backend.medium;
public class Videospiel extends Medien {
private String entwickler;
public Videospiel(String name, String entwickler, int id) {
super(name, id, 28, 1); // Frist für Videospiele ist 4 Wochen, einmal verlängerbar
this.entwickler = entwickler;
}
// Getter-Methoden für spezifische Eigenschaften von Videospielen
public String getEntwickler() {
return entwickler;
}
@Override
public String toString() {
return "backend.medium.Videospiel: " + name + " von " + entwickler + " (ID: " + id + ")";
}
}

View File

@ -1,3 +1,8 @@
package fassade;
import backend.medium.Medien;
import backend.benutzer.*;
import java.time.LocalDate;
public class Aausleihe {
@ -6,7 +11,7 @@ public class Aausleihe {
private LocalDate date; // Ausleihdatum
private LocalDate rueckgabeDatum; // Rückgabedatum
// Konstruktor für die Aausleihe
// Konstruktor für die fassade.Aausleihe
Aausleihe(Medien medien, Benutzer benutzer, LocalDate date, LocalDate rueckgabeDatum) {
this.medien = medien;
this.benutzer = benutzer;
@ -41,7 +46,7 @@ public class Aausleihe {
@Override
public String toString() {
return "Aausleihe{" +
return "fassade.Aausleihe{" +
"medien=" + medien +
", benutzer=" + benutzer +
", ausleihdatum=" + date +

View File

@ -1,3 +1,7 @@
package fassade;
import backend.medium.Medien;
import backend.benutzer.*;
import java.time.LocalDate;
import java.util.List;
@ -14,7 +18,7 @@ public class Fassade {
// Benutzer registrieren
public void registriereBenutzer(Benutzer benutzer) {
verwaltung.addBenutzer(benutzer); // Benutzer zur Verwaltung hinzufügen
verwaltung.addBenutzer(benutzer); // Benutzer zur fassade.Verwaltung hinzufügen
}
// Benutzer anmelden
@ -25,14 +29,14 @@ public class Fassade {
.orElse(null); // Gibt null zurück, wenn Benutzer nicht gefunden wurde
}
// Medien durchsuchen
// backend.medium.Medien durchsuchen
public List<Medien> durchsuchenMedien(String suchbegriff) {
// Rufe die Methode in der Verwaltung auf und übergebe die medienListe
// Rufe die Methode in der fassade.Verwaltung auf und übergebe die medienListe
return verwaltung.durchsuchenMedien(verwaltung.mediensListe, suchbegriff);
}
// Medien ausleihen
// backend.medium.Medien ausleihen
public void ausleihen(int medienId, Benutzer benutzer, LocalDate ausleihDatum, LocalDate rueckgabeDatum) {
Medien medien = verwaltung.mediensListe.stream()
.filter(m -> m.getId() == medienId)
@ -42,16 +46,16 @@ public class Fassade {
if (medien != null) {
verwaltung.addAL(medien, benutzer, ausleihDatum, rueckgabeDatum); // Leihe das Medium aus
} else {
System.out.println("Medien nicht gefunden.");
System.out.println("backend.medium.Medien nicht gefunden.");
}
}
// Medien zurückgeben
// backend.medium.Medien zurückgeben
public void rueckgabe(int medienId, Benutzer benutzer, LocalDate rueckgabeDatum) {
verwaltung.rueckgabe(medienId, benutzer, rueckgabeDatum); // Rückgabe des Mediums
}
// Medien verlängern
// backend.medium.Medien verlängern
public void verlaengern(int medienId, Benutzer benutzer) {
Medien medien = verwaltung.mediensListe.stream()
.filter(m -> m.getId() == medienId)
@ -61,7 +65,7 @@ public class Fassade {
if (medien != null) {
verwaltung.verlängern(medien, benutzer); // Verlängere die Leihfrist
} else {
System.out.println("Medien nicht gefunden.");
System.out.println("backend.medium.Medien nicht gefunden.");
}
}

View File

@ -1,4 +1,8 @@
import javax.crypto.spec.PSource;
package fassade;
import backend.benutzer.*;
import backend.medium.*;
import backend.creator.Creator;
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
import java.util.*;
@ -8,8 +12,8 @@ import java.util.stream.Collectors;
public class Verwaltung {
LinkedList<Medien> mediensListe = new LinkedList<>();
LinkedList<Benutzer> benutzerListe = new LinkedList<>();
public LinkedList<Medien> mediensListe = new LinkedList<>();
public LinkedList<Benutzer> benutzerListe = new LinkedList<>();
static LinkedList<Aausleihe> ausliste = new LinkedList<>();
Long wochenDauer;
@ -53,15 +57,15 @@ public class Verwaltung {
boolean gefunden = false;
// Überprüfe, ob die Art des Mediums im Suchbegriff enthalten ist
if (medien instanceof Medien.Book) {
if (medien instanceof Book) {
gefunden |= "buch".contains(suchbegriffKlein);
} else if (medien instanceof Medien.Dvds) {
} else if (medien instanceof Dvds) {
gefunden |= "dvd".contains(suchbegriffKlein);
} else if (medien instanceof Medien.Cds) {
} else if (medien instanceof Cds) {
gefunden |= "cd".contains(suchbegriffKlein);
} else if (medien instanceof Medien.Brettspiel) {
gefunden |= "sb".contains(suchbegriffKlein); // "sb" für Brettspiel
} else if (medien instanceof Medien.Videospiel) {
} else if (medien instanceof Brettspiel) {
gefunden |= "sb".contains(suchbegriffKlein); // "sb" für backend.medium.Brettspiel
} else if (medien instanceof Videospiel) {
gefunden |= "videospiel".contains(suchbegriffKlein);
}
@ -80,10 +84,10 @@ public class Verwaltung {
System.out.println("Das Medium ist bereits ausgeliehen.");
} else {
Aausleihe aausleihe = new Aausleihe(medien, benutzer, ausleihDatum,reuckgabeDatum); // Neues Aausleihe-Objekt erstellen
Aausleihe aausleihe = new Aausleihe(medien, benutzer, ausleihDatum,reuckgabeDatum); // Neues fassade.Aausleihe-Objekt erstellen
ausliste.add(aausleihe);
medien.istAusgeliehen = true;
medien.maxVerlängerungen--;
}
}
@ -132,9 +136,9 @@ public class Verwaltung {
void rueckgabe(int medienId, Benutzer benutzer, LocalDate rueckgabeDatum) {
// Durchsuche die Ausleihen (ausliste) nach einer Übereinstimmung mit Medien-ID und Benutzer-ID
// Durchsuche die Ausleihen (ausliste) nach einer Übereinstimmung mit backend.medium.Medien-ID und Benutzer-ID
for (Aausleihe ausleihe : ausliste) {
// Vergleiche Medien-ID und Benutzer-ID
// Vergleiche backend.medium.Medien-ID und Benutzer-ID
if (ausleihe.getMedien().getId() == medienId && ausleihe.getBenutzer().equals(benutzer)) {
// Wenn das Medium und der Benutzer übereinstimmen
ausleihe.setRueckgabeDatum(rueckgabeDatum); // Setze das Rückgabedatum
@ -153,7 +157,7 @@ public class Verwaltung {
public void verbuchenGebuehren(Benutzer benutzer) {
// Admin prüft, ob Gebühren vorhanden sind
// backend.benutzer.Admin prüft, ob Gebühren vorhanden sind
double gebuehren = benutzer.getGebuehren();
if (gebuehren > 0) {
System.out.println("Gebühren von " + gebuehren + "€ wurden erfolgreich verbucht.");
@ -168,10 +172,9 @@ public class Verwaltung {
for (Aausleihe aausleihe : ausliste) {
// Überprüfen, ob das richtige Medium und der richtige Benutzer vorliegen
if (aausleihe.getMedien().equals(medien) && aausleihe.getBenutzer().equals(benutzer)) {
if (medien.verlängern() && medien.kannVerlängern()) { // Medien.verlängern() prüft, ob noch Verlängerungen möglich sind
if (medien.kannVerlängern()) { // backend.medium.Medien.verlängern() prüft, ob noch Verlängerungen möglich sind
System.out.println("Das Medium wurde erfolgreich verlängert. Aktuelle Verlängerungen: " + medien.getMaxVerlängerungen());
medien.maxVerlängerungen--;
medien.aktuelleVerlängerungen++;
medien.verlängern();
} else {
System.out.println("Keine weitere Verlängerung möglich. Maximale Anzahl erreicht.");
}