From 42eee93eac1d38600f8d3349bbd1b086d728afef Mon Sep 17 00:00:00 2001 From: 3009594 Date: Thu, 14 Nov 2024 12:21:39 +0100 Subject: [PATCH] Ausleihe Prozess fertig implementiert --- .../src/domain/AusleiheSystem/Ausleihe.java | 4 +- .../domain/AusleiheSystem/AusleiheSystem.java | 4 +- .../src/domain/Benutzer/Benutzer.java | 30 ++++++++++++- .../src/domain/Benutzer/Kunde.java | 5 +++ .../src/domain/Benutzer/Mitarbeiter.java | 8 ++++ .../MedienSuchenTest.java | 2 +- .../Mediensuchen.java | 2 +- .../src/domain/Medium/Mediumverwalter.java | 14 +++--- .../src/domain/fassade/BibSystem.java | 23 +++++++--- .../domain/fassade/MediumDurchsuchenTest.java | 43 ------------------- Bibliotheksverwaltungssystem/src/tui/Tui.java | 7 ++- 11 files changed, 78 insertions(+), 64 deletions(-) rename Bibliotheksverwaltungssystem/src/domain/{MedienDurchsuchen => Bibliothekskatalog}/MedienSuchenTest.java (98%) rename Bibliotheksverwaltungssystem/src/domain/{MedienDurchsuchen => Bibliothekskatalog}/Mediensuchen.java (98%) delete mode 100644 Bibliotheksverwaltungssystem/src/domain/fassade/MediumDurchsuchenTest.java diff --git a/Bibliotheksverwaltungssystem/src/domain/AusleiheSystem/Ausleihe.java b/Bibliotheksverwaltungssystem/src/domain/AusleiheSystem/Ausleihe.java index a303e2d..61469f1 100644 --- a/Bibliotheksverwaltungssystem/src/domain/AusleiheSystem/Ausleihe.java +++ b/Bibliotheksverwaltungssystem/src/domain/AusleiheSystem/Ausleihe.java @@ -11,12 +11,14 @@ public class Ausleihe { private SimpleDateFormat simpleFormatter; private Date ausleiheBeginn, ausleiheEnde; private Mediumverwalter medium; + private int verlängerungen; public Ausleihe(Mediumverwalter medium,Date ausleiheBeginn, Date ausleiheEnde) { this.medium = medium; this.ausleiheBeginn = ausleiheBeginn; this.ausleiheEnde = ausleiheEnde; this.simpleFormatter = new SimpleDateFormat("dd-MM-yyyy HH:mm"); + this.verlängerungen = 0; } public Date getAusleiheBeginn() { @@ -41,6 +43,6 @@ public class Ausleihe { @Override public String toString() { - return "Ausgeliehene Mediums= "+ medium.toStringOhneAnzahl() + " Ausleihe Beginn= " +simpleFormatter.format(ausleiheBeginn) + " ,Ausleihe Ende= " + simpleFormatter.format(ausleiheEnde); + return "Ausgeliehene Mediums= "+ medium.toStringOhneAnzahl() + " Ausleihe Beginn= " +simpleFormatter.format(ausleiheBeginn) + " ,Ausleihe Ende= " + simpleFormatter.format(ausleiheEnde) + " ,verlängerungen= " + verlängerungen; } } diff --git a/Bibliotheksverwaltungssystem/src/domain/AusleiheSystem/AusleiheSystem.java b/Bibliotheksverwaltungssystem/src/domain/AusleiheSystem/AusleiheSystem.java index 19ad83f..98756b2 100644 --- a/Bibliotheksverwaltungssystem/src/domain/AusleiheSystem/AusleiheSystem.java +++ b/Bibliotheksverwaltungssystem/src/domain/AusleiheSystem/AusleiheSystem.java @@ -24,14 +24,16 @@ public class AusleiheSystem { throw new MediumNichtGefundenException("Das Medium ist ausgeliehen"); mediumAusleihen.setIstAusgeliehen(true); + mediumAusleihen.setAnzahl(mediumAusleihen.getAnzahl() - 1); this.ausleiheBeginn = new Date(); this.calendar = Calendar.getInstance(); calendar.setTime(ausleiheBeginn); - calendar.add(Calendar.WEEK_OF_YEAR, mediumAusleihen.getWocheAnzahlZumAusleihen()); + calendar.add(Calendar.WEEK_OF_YEAR, mediumAusleihen.getLeihdauer()); this.ausleiheEnde = calendar.getTime(); Ausleihe neueAusleihe = new Ausleihe(mediumAusleihen,ausleiheBeginn,ausleiheEnde); benutzer.ausleihen(neueAusleihe); + return neueAusleihe; } diff --git a/Bibliotheksverwaltungssystem/src/domain/Benutzer/Benutzer.java b/Bibliotheksverwaltungssystem/src/domain/Benutzer/Benutzer.java index 19b0838..6d6233b 100644 --- a/Bibliotheksverwaltungssystem/src/domain/Benutzer/Benutzer.java +++ b/Bibliotheksverwaltungssystem/src/domain/Benutzer/Benutzer.java @@ -1,6 +1,9 @@ package domain.Benutzer; +import java.text.ParseException; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Date; import domain.AusleiheSystem.Ausleihe; import domain.Medium.Medium; @@ -14,7 +17,8 @@ public abstract class Benutzer { private ArrayList ausgeliehenenMedien; private boolean angemeldet; private double gebühren; - + private Date anmeldebeginn,anmeldeEnde; + private SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy"); public Benutzer(Ausweis bibAusweis, String name, int alter, boolean istStudent) { super(); @@ -24,6 +28,8 @@ public abstract class Benutzer { this.istStudent = istStudent; this.ausgeliehenenMedien = new ArrayList<>(); this.angemeldet = false; + this.gebühren = 0; + this.anmeldebeginn = new Date(); } public Ausweis getBibAusweis() { @@ -86,11 +92,31 @@ public abstract class Benutzer { public void setGebühren(double gebühren) { this.gebühren = gebühren; } + + + + public Date getAnmeldebeginn() { + return anmeldebeginn; + } + + public void setAnmeldebeginn(String anmeldebeginn) throws ParseException { + this.anmeldebeginn = formatter.parse(anmeldebeginn); + } + + public Date getAnmeldeEnde() { + return anmeldeEnde; + } + + public void setAnmeldeEnde(String anmeldeEnde) throws ParseException { + this.anmeldeEnde= formatter.parse(anmeldeEnde); + } + + public abstract double getJahresgebühr(); @Override public String toString() { return "Benutzer [bibAusweisNummer= " + bibAusweis.getKartenNummer() + ", name=" + name + ", alter=" + alter + ", istStudent=" - + istStudent + ", ist im System Online = " + angemeldet + "Gebühren= "+ gebühren + ", ausgeliehenenMedien=" + ausgeliehenenMedien + "]"; + + istStudent + ", ist im System Online = " + angemeldet + "Gebühren= "+ gebühren +"Anmeldet seit= " + formatter.format(anmeldeEnde) + ", ausgeliehenenMedien=" + ausgeliehenenMedien + "]"; } diff --git a/Bibliotheksverwaltungssystem/src/domain/Benutzer/Kunde.java b/Bibliotheksverwaltungssystem/src/domain/Benutzer/Kunde.java index adab651..6e78019 100644 --- a/Bibliotheksverwaltungssystem/src/domain/Benutzer/Kunde.java +++ b/Bibliotheksverwaltungssystem/src/domain/Benutzer/Kunde.java @@ -6,4 +6,9 @@ public class Kunde extends Benutzer { super(bibAusweis, name, alter, istStudent); } + @Override + public double getJahresgebühr() { + return 25.0; + } + } diff --git a/Bibliotheksverwaltungssystem/src/domain/Benutzer/Mitarbeiter.java b/Bibliotheksverwaltungssystem/src/domain/Benutzer/Mitarbeiter.java index afb687b..cfbb8a9 100644 --- a/Bibliotheksverwaltungssystem/src/domain/Benutzer/Mitarbeiter.java +++ b/Bibliotheksverwaltungssystem/src/domain/Benutzer/Mitarbeiter.java @@ -6,4 +6,12 @@ public class Mitarbeiter extends Benutzer { super(bibAusweis, name, alter, istStudent); } + @Override + public double getJahresgebühr() { + return 50.0; + } + + public void gebührVerbuchen(Benutzer benutzer) { + benutzer.setGebühren(getGebühren() * 0); + } } diff --git a/Bibliotheksverwaltungssystem/src/domain/MedienDurchsuchen/MedienSuchenTest.java b/Bibliotheksverwaltungssystem/src/domain/Bibliothekskatalog/MedienSuchenTest.java similarity index 98% rename from Bibliotheksverwaltungssystem/src/domain/MedienDurchsuchen/MedienSuchenTest.java rename to Bibliotheksverwaltungssystem/src/domain/Bibliothekskatalog/MedienSuchenTest.java index 2b8291a..65477f0 100644 --- a/Bibliotheksverwaltungssystem/src/domain/MedienDurchsuchen/MedienSuchenTest.java +++ b/Bibliotheksverwaltungssystem/src/domain/Bibliothekskatalog/MedienSuchenTest.java @@ -1,4 +1,4 @@ -package domain.MedienDurchsuchen; +package domain.Bibliothekskatalog; import static org.junit.jupiter.api.Assertions.*; diff --git a/Bibliotheksverwaltungssystem/src/domain/MedienDurchsuchen/Mediensuchen.java b/Bibliotheksverwaltungssystem/src/domain/Bibliothekskatalog/Mediensuchen.java similarity index 98% rename from Bibliotheksverwaltungssystem/src/domain/MedienDurchsuchen/Mediensuchen.java rename to Bibliotheksverwaltungssystem/src/domain/Bibliothekskatalog/Mediensuchen.java index 6e30857..919d4c8 100644 --- a/Bibliotheksverwaltungssystem/src/domain/MedienDurchsuchen/Mediensuchen.java +++ b/Bibliotheksverwaltungssystem/src/domain/Bibliothekskatalog/Mediensuchen.java @@ -1,4 +1,4 @@ -package domain.MedienDurchsuchen; +package domain.Bibliothekskatalog; import java.util.*; import java.util.stream.Collectors; diff --git a/Bibliotheksverwaltungssystem/src/domain/Medium/Mediumverwalter.java b/Bibliotheksverwaltungssystem/src/domain/Medium/Mediumverwalter.java index 48207e1..b7d6a8e 100644 --- a/Bibliotheksverwaltungssystem/src/domain/Medium/Mediumverwalter.java +++ b/Bibliotheksverwaltungssystem/src/domain/Medium/Mediumverwalter.java @@ -4,15 +4,15 @@ public class Mediumverwalter { private boolean verlängerbar; private int anzahl; - private int wocheAnzahlZumAusleihen; + private int leihdauer; private Medium medium; private boolean istAusgeliehen; - public Mediumverwalter(boolean verlängerbar, int anzahl, int wocheAnzahlZumAusleihen, Medium medium) { + public Mediumverwalter(boolean verlängerbar, int anzahl, int leihdauer, Medium medium) { super(); this.verlängerbar = verlängerbar; this.anzahl = anzahl; - this.wocheAnzahlZumAusleihen = wocheAnzahlZumAusleihen; + this.leihdauer = leihdauer; this.medium = medium; } @@ -29,8 +29,8 @@ public class Mediumverwalter { this.anzahl = anzahl; } - public int getWocheAnzahlZumAusleihen() { - return wocheAnzahlZumAusleihen; + public int getLeihdauer(){ + return leihdauer; } public Medium getMedium() { @@ -48,8 +48,8 @@ public class Mediumverwalter { @Override public String toString() { - return "Medium=" + medium.toString() + " ,verlängerbar=" + verlängerbar + ", anzahl=" + anzahl + ",ist Ausgeliehen= " + istAusgeliehen + ", wocheAnzahlZumAusleihen=" - + wocheAnzahlZumAusleihen ; + return "Medium=" + medium.toString() + " ,verlängerbar=" + verlängerbar + ", anzahl=" + anzahl + ",ist Ausgeliehen= " + istAusgeliehen + ", Leihdauer=" + + leihdauer ; } diff --git a/Bibliotheksverwaltungssystem/src/domain/fassade/BibSystem.java b/Bibliotheksverwaltungssystem/src/domain/fassade/BibSystem.java index 692fa1b..f84fac3 100644 --- a/Bibliotheksverwaltungssystem/src/domain/fassade/BibSystem.java +++ b/Bibliotheksverwaltungssystem/src/domain/fassade/BibSystem.java @@ -1,6 +1,9 @@ package domain.fassade; +import java.text.ParseException; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map.Entry; @@ -11,8 +14,8 @@ import java.util.stream.Stream; import domain.AusleiheSystem.Ausleihe; import domain.AusleiheSystem.AusleiheSystem; import domain.Benutzer.*; +import domain.Bibliothekskatalog.Mediensuchen; import domain.ExceptionsKlassen.*; -import domain.MedienDurchsuchen.Mediensuchen; import domain.Medium.Brettspiel; import domain.Medium.Buch; import domain.Medium.Medium; @@ -25,12 +28,15 @@ public class BibSystem { private HashMap medien; private ArrayList ausleihe; private AusleiheSystem ausleiheSystem; - + private Date heutigesDatum; + private SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy"); + public BibSystem() { this.alleBibBenutzer = new ArrayList<>(); this.medien = new HashMap<>(); this.ausleiheSystem = new AusleiheSystem(medien); + this.heutigesDatum = new Date(); mediumsAufladen(); } @@ -85,11 +91,14 @@ public class BibSystem { ausleihe.add(neueAusleihe); } - - - - - + public Date getHeutigesDatum() { + return heutigesDatum; + } + + public void setHeutigesDatum(String heutigesDatum) throws ParseException { + this.heutigesDatum = formatter.parse(heutigesDatum); + } + // Temporäre Test Methode private void mediumsAufladen() { Mediumverwalter buch = new Mediumverwalter(true, 10, 4, new Buch("Effektives Java Programmieren", 2018, "Joshua Bloch")); diff --git a/Bibliotheksverwaltungssystem/src/domain/fassade/MediumDurchsuchenTest.java b/Bibliotheksverwaltungssystem/src/domain/fassade/MediumDurchsuchenTest.java deleted file mode 100644 index f189647..0000000 --- a/Bibliotheksverwaltungssystem/src/domain/fassade/MediumDurchsuchenTest.java +++ /dev/null @@ -1,43 +0,0 @@ -package domain.fassade; - -import static org.junit.jupiter.api.Assertions.*; - -import java.util.ArrayList; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.Test; - -import domain.Benutzer.Benutzer; -import domain.ExceptionsKlassen.BenutzerNichtAngemeldetException; -import domain.ExceptionsKlassen.BenutzerNichtGefundenException; -import domain.ExceptionsKlassen.FalscheEingabeException; -import domain.ExceptionsKlassen.MediumNichtGefundenException; -import domain.UserRegistieren.Registieren; - -class MediumDurchsuchenTest { - - BibSystem fassade; - @BeforeEach - void setUp() throws Exception { - fassade = new BibSystem(); - } - - @Disabled - void testMediumsuchen() throws FalscheEingabeException, BenutzerNichtGefundenException, MediumNichtGefundenException, BenutzerNichtAngemeldetException { - fassade.userRegistrieren("obai", "student", 15, "nein"); - assertTrue(fassade.userAnmdelden("K1000")); - ArrayList treffer = (ArrayList) fassade.mediumDurchsuchen("Effektives Java Programmieren", "B001"); - treffer.forEach(System.out::println); - } - - @Test - void testMediumNichtGefunden() throws FalscheEingabeException, BenutzerNichtGefundenException, MediumNichtGefundenException, BenutzerNichtAngemeldetException { - fassade.userRegistrieren("obai", "student", 15, "nein"); - assertTrue(fassade.userAnmdelden("K1000")); - assertThrows(MediumNichtGefundenException.class, () -> fassade.mediumDurchsuchen("C++ Programmieren", "B001")); - - } - - -} diff --git a/Bibliotheksverwaltungssystem/src/tui/Tui.java b/Bibliotheksverwaltungssystem/src/tui/Tui.java index 37f8b02..d29aaff 100644 --- a/Bibliotheksverwaltungssystem/src/tui/Tui.java +++ b/Bibliotheksverwaltungssystem/src/tui/Tui.java @@ -31,7 +31,7 @@ public class Tui { System.out.println("6.Ausgeliehene Gegenstände, Fälligkeitsdaten und aufgelaufene Gebühren anzeigen"); System.out.println("7.Verlängern der Leihfrist"); System.out.println("8.Verbuchen von überfälligen Gebühren (Admin)"); - System.out.println("9.Abmlden"); + System.out.println("9.Gebühren berechnen"); System.out.println("Wählen Sie bitte eine Aktion aus: "); System.out.print(">"); aktion = eingabe.nextLine(); @@ -69,6 +69,11 @@ public class Tui { System.out.println("Geben Sie bitte die eindutige Kennung des Mediums"); System.out.print(">"); eindutigeKennung = eingabe.nextLine(); + + System.out.println("Geben Sie bitte den Datum ein"); + System.out.println("Geben Sie bitte die Ausleihebeginn"); + + try { fassade.mediumAusleihen(kartennummer, eindutigeKennung);