From ed1d66f3d111a878cc30624da268bf5c3e5831b6 Mon Sep 17 00:00:00 2001 From: obai Date: Mon, 11 Nov 2024 18:38:36 +0100 Subject: [PATCH] Unfertiges Ausleiheprozess --- .gitignore | 2 + Bibliotheksverwaltungssystem/fragen.txt | 6 +++ .../src/domain/Ausleihe.java | 5 -- .../src/domain/AusleiheSystem.java | 33 +++++++++++++ .../src/domain/Benutzer/Benutzer.java | 9 ++-- .../src/domain/BibSystem.java | 49 ++++++++++++++++--- .../BenutzerNichtAngemeldetException.java | 8 +++ .../MediumNichtGefundenException.java | 8 +++ .../src/domain/JTests/AusleihenJTest.java | 32 ++++++++++++ .../src/domain/Medium/Brettspiel.java | 5 +- .../src/domain/Medium/Buch.java | 15 ++++-- .../src/domain/Medium/Cd.java | 4 +- .../src/domain/Medium/Dvd.java | 5 +- .../src/domain/Medium/Medium.java | 39 +++++++++++---- .../src/domain/Medium/Videospiel.java | 12 ++++- .../src/domain/MediumZumAusleihen.java | 45 +++++++++++++++++ Bibliotheksverwaltungssystem/src/tui/Tui.java | 1 + 17 files changed, 239 insertions(+), 39 deletions(-) delete mode 100644 Bibliotheksverwaltungssystem/src/domain/Ausleihe.java create mode 100644 Bibliotheksverwaltungssystem/src/domain/AusleiheSystem.java create mode 100644 Bibliotheksverwaltungssystem/src/domain/ExceptionsKlassen/BenutzerNichtAngemeldetException.java create mode 100644 Bibliotheksverwaltungssystem/src/domain/ExceptionsKlassen/MediumNichtGefundenException.java create mode 100644 Bibliotheksverwaltungssystem/src/domain/JTests/AusleihenJTest.java create mode 100644 Bibliotheksverwaltungssystem/src/domain/MediumZumAusleihen.java diff --git a/.gitignore b/.gitignore index 5ece98e..f53876d 100644 --- a/.gitignore +++ b/.gitignore @@ -179,3 +179,5 @@ fabric.properties # Android studio 3.1+ serialized cache file .idea/caches/build_file_checksums.ser +/.classpath +/.project diff --git a/Bibliotheksverwaltungssystem/fragen.txt b/Bibliotheksverwaltungssystem/fragen.txt index 4c77525..2517ed5 100644 --- a/Bibliotheksverwaltungssystem/fragen.txt +++ b/Bibliotheksverwaltungssystem/fragen.txt @@ -17,3 +17,9 @@ Zum Ausleihen von Medien muss sich der Benutzer laut Anforderung vorher im Syste Frage: Wie wird jedoch der Ausleihprozess gehandhabt, wenn der Benutzer die Medien direkt vor Ort in der Bibliothek ausleihen möchte? Ist eine Anmeldung im System dafür zwingend erforderlich, oder gibt es eine andere Möglichkeit für den Vor-Ort-Ausleihprozess? + +Aspekt4: +gibt es in der Bib begrenzte Anzahl von der Mediums oder wie? + +Aspekt5: +wie viel soll die Benutzer Gebühren bezahlen diff --git a/Bibliotheksverwaltungssystem/src/domain/Ausleihe.java b/Bibliotheksverwaltungssystem/src/domain/Ausleihe.java deleted file mode 100644 index 8dd7b33..0000000 --- a/Bibliotheksverwaltungssystem/src/domain/Ausleihe.java +++ /dev/null @@ -1,5 +0,0 @@ -package domain; - -public class Ausleihe { - -} diff --git a/Bibliotheksverwaltungssystem/src/domain/AusleiheSystem.java b/Bibliotheksverwaltungssystem/src/domain/AusleiheSystem.java new file mode 100644 index 0000000..71bc6cc --- /dev/null +++ b/Bibliotheksverwaltungssystem/src/domain/AusleiheSystem.java @@ -0,0 +1,33 @@ +package domain; + +import java.util.ArrayList; + +import domain.Benutzer.Benutzer; +import domain.ExceptionsKlassen.MediumNichtGefundenException; +import domain.Medium.Medium; + +public class AusleiheSystem { + + private ArrayList mediums; + private Benutzer benutzer; + + public AusleiheSystem(ArrayList mediums) { + this.mediums = mediums; + } + + public void mediumAusleihen(Benutzer benutzer, String eindutigenummer) throws MediumNichtGefundenException { + this.benutzer = benutzer; + Medium mediumAusleihen = findMedium(eindutigenummer); + MediumZumAusleihen medium = new MediumZumAusleihen(); + medium.getMedium(mediumAusleihen); + benutzer.getAusgeliehenenMedien().add(medium); + System.out.println(benutzer.getAusgeliehenenMedien().toString()); + } + + private Medium findMedium(String eindeutigeKennung) throws MediumNichtGefundenException { + return mediums.stream() + .filter(m -> m.getKennungNummer().equalsIgnoreCase(eindeutigeKennung)) + .findFirst() + .orElseThrow(() -> new MediumNichtGefundenException("Das ausgewählte Medium ist nicht verfügbar")); + } +} diff --git a/Bibliotheksverwaltungssystem/src/domain/Benutzer/Benutzer.java b/Bibliotheksverwaltungssystem/src/domain/Benutzer/Benutzer.java index 916cd5b..a421746 100644 --- a/Bibliotheksverwaltungssystem/src/domain/Benutzer/Benutzer.java +++ b/Bibliotheksverwaltungssystem/src/domain/Benutzer/Benutzer.java @@ -2,6 +2,7 @@ package domain.Benutzer; import java.util.ArrayList; +import domain.MediumZumAusleihen; import domain.Medium.Medium; public abstract class Benutzer { @@ -10,7 +11,7 @@ public abstract class Benutzer { private String name; private int alter; private boolean istStudent; - private ArrayList ausgeliehenenMedien; + private ArrayList ausgeliehenenMedien; private boolean angemeldet; @@ -56,15 +57,15 @@ public abstract class Benutzer { this.istStudent = istStudent; } - public ArrayList getAusgeliehenenMedien() { + public ArrayList getAusgeliehenenMedien() { return ausgeliehenenMedien; } - public void addMedium(Medium medium) { + public void ausleihen(MediumZumAusleihen medium) { this.ausgeliehenenMedien.add(medium); } - public void removeMedium(Medium medium) { + public void removeMedium(MediumZumAusleihen medium) { this.ausgeliehenenMedien.remove(medium); } diff --git a/Bibliotheksverwaltungssystem/src/domain/BibSystem.java b/Bibliotheksverwaltungssystem/src/domain/BibSystem.java index a58758f..e9eebd7 100644 --- a/Bibliotheksverwaltungssystem/src/domain/BibSystem.java +++ b/Bibliotheksverwaltungssystem/src/domain/BibSystem.java @@ -5,12 +5,20 @@ import java.util.stream.Stream; import domain.Benutzer.*; import domain.ExceptionsKlassen.*; +import domain.Medium.Buch; +import domain.Medium.Medium; public class BibSystem { private ArrayList alleBibBenutzer; + private ArrayList alleMediums; + private AusleiheSystem ausleiheSystem; public BibSystem() { + this.alleBibBenutzer = new ArrayList<>(); + this.alleMediums = new ArrayList<>(); + this.ausleiheSystem = new AusleiheSystem(alleMediums); + mediumAufladen(); } public String userRegistrieren(String name, String type, int alter,String istAdmin) throws FalscheEingabeException { @@ -32,19 +40,48 @@ public class BibSystem { } public boolean userAnmdelden(int kartennummer) throws BenutzerNichtGefundenException { - Benutzer tempUser = findBenutzer(kartennummer); - if (tempUser == null) - throw new BenutzerNichtGefundenException("Benutzer mit Kartennummer " + kartennummer + " nicht gefunden"); - + Benutzer tempUser = findBenutzer(kartennummer); tempUser.setAngemeldet(true); return tempUser.isAngemeldet(); } - private Benutzer findBenutzer(int kartennummer) { + public void mediumAusleihen(int kartennummer, String eindeutigeKennung) throws BenutzerNichtAngemeldetException, BenutzerNichtGefundenException, MediumNichtGefundenException { + Benutzer tempBenutzer = findBenutzer(kartennummer); + + if (!checkIfUserImSystemAngemeldetIst(kartennummer)) + throw new BenutzerNichtAngemeldetException("Sie müssen sich erst im System anmelden"); + + + ausleiheSystem.mediumAusleihen(tempBenutzer,eindeutigeKennung); + + } + + private void mediumAufladen() { + + alleMediums.add(new Buch("B001","Effektives Java Programmieren",2018,"Joshua Bloch")); + } + + + + + + + + + + + private boolean checkIfUserImSystemAngemeldetIst(int kartennummer) { + + return alleBibBenutzer.stream() + .anyMatch(user -> user.isAngemeldet()); + + } + + private Benutzer findBenutzer(int kartennummer) throws BenutzerNichtGefundenException { return alleBibBenutzer.stream() .filter(k -> k.getBibAusweis().getKartenNummer() == kartennummer) .findFirst() // nimmt das erste Element des Streams, das die Filterbedingung erfüllt. - .orElse(null); + .orElseThrow(() -> new BenutzerNichtGefundenException ("Benutzer mit Kartennummer " + kartennummer + " nicht gefunden")); } } diff --git a/Bibliotheksverwaltungssystem/src/domain/ExceptionsKlassen/BenutzerNichtAngemeldetException.java b/Bibliotheksverwaltungssystem/src/domain/ExceptionsKlassen/BenutzerNichtAngemeldetException.java new file mode 100644 index 0000000..b8c39f6 --- /dev/null +++ b/Bibliotheksverwaltungssystem/src/domain/ExceptionsKlassen/BenutzerNichtAngemeldetException.java @@ -0,0 +1,8 @@ +package domain.ExceptionsKlassen; + +public class BenutzerNichtAngemeldetException extends Exception { + + public BenutzerNichtAngemeldetException(String error) { + super(error); + } +} diff --git a/Bibliotheksverwaltungssystem/src/domain/ExceptionsKlassen/MediumNichtGefundenException.java b/Bibliotheksverwaltungssystem/src/domain/ExceptionsKlassen/MediumNichtGefundenException.java new file mode 100644 index 0000000..b9f89b1 --- /dev/null +++ b/Bibliotheksverwaltungssystem/src/domain/ExceptionsKlassen/MediumNichtGefundenException.java @@ -0,0 +1,8 @@ +package domain.ExceptionsKlassen; + +public class MediumNichtGefundenException extends Exception { + + public MediumNichtGefundenException(String error) { + super(error); + } +} diff --git a/Bibliotheksverwaltungssystem/src/domain/JTests/AusleihenJTest.java b/Bibliotheksverwaltungssystem/src/domain/JTests/AusleihenJTest.java new file mode 100644 index 0000000..b47c5df --- /dev/null +++ b/Bibliotheksverwaltungssystem/src/domain/JTests/AusleihenJTest.java @@ -0,0 +1,32 @@ +package domain.JTests; + +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import domain.BibSystem; +import domain.ExceptionsKlassen.BenutzerNichtAngemeldetException; +import domain.ExceptionsKlassen.BenutzerNichtGefundenException; +import domain.ExceptionsKlassen.FalscheEingabeException; +import domain.ExceptionsKlassen.MediumNichtGefundenException; + +class AusleihenJTest { + + private BibSystem bib; + + @BeforeEach + void setUp() throws Exception { + this.bib = new BibSystem(); + } + + @Test + void test() throws FalscheEingabeException, BenutzerNichtAngemeldetException, BenutzerNichtGefundenException, MediumNichtGefundenException { + + bib.userRegistrieren("obai", "student", 15, "nein"); + bib.userAnmdelden(1000); + bib.mediumAusleihen(1000,"B001" ); + + } + +} diff --git a/Bibliotheksverwaltungssystem/src/domain/Medium/Brettspiel.java b/Bibliotheksverwaltungssystem/src/domain/Medium/Brettspiel.java index 7295ac4..6fbf072 100644 --- a/Bibliotheksverwaltungssystem/src/domain/Medium/Brettspiel.java +++ b/Bibliotheksverwaltungssystem/src/domain/Medium/Brettspiel.java @@ -1,11 +1,10 @@ package domain.Medium; -import java.util.Date; public class Brettspiel extends Medium { - public Brettspiel(int kennungNummer, String title, Date erscheinungsjahr, String autor) { - super(kennungNummer, title, erscheinungsjahr, autor); + public Brettspiel(String eindeutigeKennung, String title, int erscheinungsjahr, String autor) { + super(eindeutigeKennung, title, erscheinungsjahr, autor); } } diff --git a/Bibliotheksverwaltungssystem/src/domain/Medium/Buch.java b/Bibliotheksverwaltungssystem/src/domain/Medium/Buch.java index e1d4358..7bcc93e 100644 --- a/Bibliotheksverwaltungssystem/src/domain/Medium/Buch.java +++ b/Bibliotheksverwaltungssystem/src/domain/Medium/Buch.java @@ -3,9 +3,16 @@ package domain.Medium; import java.util.Date; public class Buch extends Medium { - - public Buch(int kennungNummer, String title, Date erscheinungsjahr, String autor) { - super(kennungNummer, title, erscheinungsjahr, autor); + + private int anzahlVerlängerung; + public Buch(String eindeutigeKennung, String title, int erscheinungsjahr, String autor) { + super(eindeutigeKennung, title, erscheinungsjahr, autor); + } + + public int getAnzahlVerlängerung() { + return anzahlVerlängerung; + } + public void setAnzahlVerlängerung(int anzahlVerlängerung) { + this.anzahlVerlängerung = anzahlVerlängerung; } - } diff --git a/Bibliotheksverwaltungssystem/src/domain/Medium/Cd.java b/Bibliotheksverwaltungssystem/src/domain/Medium/Cd.java index aa60e3e..801ac9a 100644 --- a/Bibliotheksverwaltungssystem/src/domain/Medium/Cd.java +++ b/Bibliotheksverwaltungssystem/src/domain/Medium/Cd.java @@ -4,8 +4,8 @@ import java.util.Date; public class Cd extends Medium { - public Cd(int kennungNummer, String title, Date erscheinungsjahr, String autor) { - super(kennungNummer, title, erscheinungsjahr, autor); + public Cd(String eindeutigeKennung, String title, int erscheinungsjahr, String autor) { + super(eindeutigeKennung, title, erscheinungsjahr, autor); } } diff --git a/Bibliotheksverwaltungssystem/src/domain/Medium/Dvd.java b/Bibliotheksverwaltungssystem/src/domain/Medium/Dvd.java index dcad69d..ff89ab3 100644 --- a/Bibliotheksverwaltungssystem/src/domain/Medium/Dvd.java +++ b/Bibliotheksverwaltungssystem/src/domain/Medium/Dvd.java @@ -1,11 +1,10 @@ package domain.Medium; -import java.util.Date; public class Dvd extends Medium { - public Dvd(int kennungNummer, String title, Date erscheinungsjahr, String autor) { - super(kennungNummer, title, erscheinungsjahr, autor); + public Dvd(String eindeutigeKennung, String title, int erscheinungsjahr, String autor) { + super(eindeutigeKennung, title, erscheinungsjahr, autor); } } diff --git a/Bibliotheksverwaltungssystem/src/domain/Medium/Medium.java b/Bibliotheksverwaltungssystem/src/domain/Medium/Medium.java index 2cae1d2..4f01efc 100644 --- a/Bibliotheksverwaltungssystem/src/domain/Medium/Medium.java +++ b/Bibliotheksverwaltungssystem/src/domain/Medium/Medium.java @@ -4,25 +4,27 @@ import java.util.Date; public abstract class Medium { - private int KennungNummer; + private String eindeutigeKennung; private String title; - private Date erscheinungsjahr; + private int erscheinungsjahr; private String autor; + private int anzahlWochen; - public Medium(int kennungNummer, String title, Date erscheinungsjahr, String autor) { + public Medium(String eindeutigeKennung, String title, int erscheinungsjahr, String autor) { super(); - KennungNummer = kennungNummer; + this.eindeutigeKennung = eindeutigeKennung; this.title = title; this.erscheinungsjahr = erscheinungsjahr; this.autor = autor; + this.anzahlWochen = 0; } - public int getKennungNummer() { - return KennungNummer; + public String getKennungNummer() { + return eindeutigeKennung; } - public void setKennungNummer(int kennungNummer) { - KennungNummer = kennungNummer; + public void setKennungNummer(String kennungNummer) { + eindeutigeKennung = kennungNummer; } public String getTitle() { @@ -33,11 +35,11 @@ public abstract class Medium { this.title = title; } - public Date getErscheinungsjahr() { + public int getErscheinungsjahr() { return erscheinungsjahr; } - public void setErscheinungsjahr(Date erscheinungsjahr) { + public void setErscheinungsjahr(int erscheinungsjahr) { this.erscheinungsjahr = erscheinungsjahr; } @@ -48,6 +50,23 @@ public abstract class Medium { public void setAutor(String autor) { this.autor = autor; } + + public int getAnzahlWochen() { + return anzahlWochen; + } + + public void setAnzahlWochen(int anzahlWochen) { + this.anzahlWochen = anzahlWochen; + } + + @Override + public String toString() { + return "Medium [eindeutigeKennung=" + eindeutigeKennung + ", title=" + title + ", erscheinungsjahr=" + + erscheinungsjahr + ", autor=" + autor + ", anzahlWochen=" + anzahlWochen + "]"; + } + + + } diff --git a/Bibliotheksverwaltungssystem/src/domain/Medium/Videospiel.java b/Bibliotheksverwaltungssystem/src/domain/Medium/Videospiel.java index 95946e5..b701630 100644 --- a/Bibliotheksverwaltungssystem/src/domain/Medium/Videospiel.java +++ b/Bibliotheksverwaltungssystem/src/domain/Medium/Videospiel.java @@ -3,9 +3,17 @@ package domain.Medium; import java.util.Date; public class Videospiel extends Medium { - - public Videospiel(int kennungNummer, String title, Date erscheinungsjahr, String autor) { + + private int anzahlVerlängerung; + public Videospiel(String kennungNummer, String title, int erscheinungsjahr, String autor) { super(kennungNummer, title, erscheinungsjahr, autor); } + + public int getAnzahlVerlängerung() { + return anzahlVerlängerung; + } + public void setAnzahlVerlängerung(int anzahlVerlängerung) { + this.anzahlVerlängerung = anzahlVerlängerung; + } } diff --git a/Bibliotheksverwaltungssystem/src/domain/MediumZumAusleihen.java b/Bibliotheksverwaltungssystem/src/domain/MediumZumAusleihen.java new file mode 100644 index 0000000..b7b6f8f --- /dev/null +++ b/Bibliotheksverwaltungssystem/src/domain/MediumZumAusleihen.java @@ -0,0 +1,45 @@ +package domain; + +import java.util.Date; + +import domain.Medium.Medium; + +public class MediumZumAusleihen { + + private Date ausleihefrist; + private Medium medium; + + + public void getMedium(Medium medium) { + this.ausleihefrist = new Date(); + this.medium = medium; + } + + + public Date getAusleihefrist() { + return ausleihefrist; + } + + + public void setAusleihefrist(Date ausleihefrist) { + this.ausleihefrist = ausleihefrist; + } + + + public Medium getMedium() { + return medium; + } + + + public void setMedium(Medium medium) { + this.medium = medium; + } + + + @Override + public String toString() { + return "MediumZumAusleihen [ausleihefrist=" + ausleihefrist + ", medium=" + medium.toString() + "]"; + } + + +} diff --git a/Bibliotheksverwaltungssystem/src/tui/Tui.java b/Bibliotheksverwaltungssystem/src/tui/Tui.java index f68548e..7ceb8da 100644 --- a/Bibliotheksverwaltungssystem/src/tui/Tui.java +++ b/Bibliotheksverwaltungssystem/src/tui/Tui.java @@ -86,6 +86,7 @@ public class Tui { istAdmin = eingabe.nextLine(); try { fassade.userRegistrieren(name, type, alter, istAdmin); + registrierenProzess = false; startBibProgramm(); } catch (FalscheEingabeException e) { System.out.println(e.getMessage());