From 8ada9aa90d7a5d86bf2f4ba42cf3ccd530c585b7 Mon Sep 17 00:00:00 2001 From: 3009594 Date: Wed, 13 Nov 2024 23:52:40 +0100 Subject: [PATCH] fortschritte bei der AusleiheProzess --- .../domain/AusleiheSystem/AusleiheJTest.java | 2 +- .../src/domain/Benutzer/Benutzer.java | 2 +- .../src/domain/BibSystem.java | 93 -------------- .../MedienDurchsuchen/MedienSuchenTest.java | 52 ++++++++ .../MedienDurchsuchen/Mediensuchen.java | 62 +++++++++ .../src/domain/Medium/Brettspiel.java | 6 +- .../src/domain/Medium/Buch.java | 6 +- .../src/domain/Medium/Cd.java | 6 +- .../src/domain/Medium/Dvd.java | 6 +- .../src/domain/Medium/Mediumverwalter.java | 2 +- .../src/domain/Medium/Videospiel.java | 6 +- .../UserRegistieren/RegistrierenTest.java | 2 +- .../src/domain/fassade/BibSystem.java | 119 ++++++++++++++++++ .../{ => fassade}/MediumDurchsuchenTest.java | 17 ++- .../src/domain/fassade/UserAnmeldenTest.java | 35 ++++++ Bibliotheksverwaltungssystem/src/tui/Tui.java | 32 ++++- Bibliotheksverwaltungssystem/vorgehen.txt | 7 ++ 17 files changed, 343 insertions(+), 112 deletions(-) delete mode 100644 Bibliotheksverwaltungssystem/src/domain/BibSystem.java create mode 100644 Bibliotheksverwaltungssystem/src/domain/MedienDurchsuchen/MedienSuchenTest.java create mode 100644 Bibliotheksverwaltungssystem/src/domain/MedienDurchsuchen/Mediensuchen.java create mode 100644 Bibliotheksverwaltungssystem/src/domain/fassade/BibSystem.java rename Bibliotheksverwaltungssystem/src/domain/{ => fassade}/MediumDurchsuchenTest.java (66%) create mode 100644 Bibliotheksverwaltungssystem/src/domain/fassade/UserAnmeldenTest.java diff --git a/Bibliotheksverwaltungssystem/src/domain/AusleiheSystem/AusleiheJTest.java b/Bibliotheksverwaltungssystem/src/domain/AusleiheSystem/AusleiheJTest.java index 117d400..08f4894 100644 --- a/Bibliotheksverwaltungssystem/src/domain/AusleiheSystem/AusleiheJTest.java +++ b/Bibliotheksverwaltungssystem/src/domain/AusleiheSystem/AusleiheJTest.java @@ -5,11 +5,11 @@ 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; +import domain.fassade.BibSystem; class AusleiheJTest { diff --git a/Bibliotheksverwaltungssystem/src/domain/Benutzer/Benutzer.java b/Bibliotheksverwaltungssystem/src/domain/Benutzer/Benutzer.java index 0c0aae6..19b0838 100644 --- a/Bibliotheksverwaltungssystem/src/domain/Benutzer/Benutzer.java +++ b/Bibliotheksverwaltungssystem/src/domain/Benutzer/Benutzer.java @@ -90,7 +90,7 @@ public abstract class Benutzer { @Override public String toString() { return "Benutzer [bibAusweisNummer= " + bibAusweis.getKartenNummer() + ", name=" + name + ", alter=" + alter + ", istStudent=" - + istStudent + ", ist im System Online = " + angemeldet + ", ausgeliehenenMedien=" + ausgeliehenenMedien + "]"; + + istStudent + ", ist im System Online = " + angemeldet + "Gebühren= "+ gebühren + ", ausgeliehenenMedien=" + ausgeliehenenMedien + "]"; } diff --git a/Bibliotheksverwaltungssystem/src/domain/BibSystem.java b/Bibliotheksverwaltungssystem/src/domain/BibSystem.java deleted file mode 100644 index 364bfce..0000000 --- a/Bibliotheksverwaltungssystem/src/domain/BibSystem.java +++ /dev/null @@ -1,93 +0,0 @@ -package domain; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map.Entry; -import java.util.stream.Collector; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import domain.AusleiheSystem.Ausleihe; -import domain.AusleiheSystem.AusleiheSystem; -import domain.Benutzer.*; -import domain.ExceptionsKlassen.*; -import domain.Medium.Brettspiel; -import domain.Medium.Buch; -import domain.Medium.Medium; -import domain.Medium.Mediumverwalter; -import domain.UserRegistieren.Registieren; - -public class BibSystem { - private ArrayList alleBibBenutzer; - private HashMap medien; - private ArrayList ausleihe; - private AusleiheSystem ausleiheSystem; - - public BibSystem() { - - this.alleBibBenutzer = new ArrayList<>(); - this.medien = new HashMap<>(); - this.ausleiheSystem = new AusleiheSystem(medien); - mediumsAufladen(); - } - - public List mediumDurchsuchen(String title, String bibKartenNummer) throws MediumNichtGefundenException, BenutzerNichtAngemeldetException { - if (!checkIfUserImSystemAngemeldetIst(bibKartenNummer)) - throw new BenutzerNichtAngemeldetException("Sie müssen sich erst im System anmelden"); - - List treffer = medien.values().stream() - .filter(t -> t.getMedium().getTitle().equalsIgnoreCase(title)) - .map(t -> t.toString()) - .collect(Collectors.toCollection(ArrayList::new)); - - return (ArrayList) treffer; - - } - - public void userRegistrieren(String name, String type, int alter,String istAdmin) throws FalscheEingabeException { - Benutzer bibBenutzer = Registieren.userRegistrieren(name, type, alter, istAdmin); - alleBibBenutzer.add(bibBenutzer); - } - - public boolean userAnmdelden(String kartennummer) throws BenutzerNichtGefundenException { - Benutzer bibBenutzer = findBenutzer(kartennummer); - bibBenutzer.setAngemeldet(true); - return bibBenutzer.isAngemeldet(); - } - - public void mediumAusleihen(String kartennummer, String eindeutigeKennung) throws Exception { - Benutzer tempBenutzer = findBenutzer(kartennummer); - - if (tempBenutzer instanceof Mitarbeiter) - throw new Exception("Mitarbeiter können keine Mediums ausleihen!"); - - if (!checkIfUserImSystemAngemeldetIst(kartennummer)) - throw new BenutzerNichtAngemeldetException("Sie müssen sich erst im System anmelden"); - - Ausleihe neueAusleihe = ausleiheSystem.mediumAusleihen(tempBenutzer,eindeutigeKennung); - ausleihe.add(neueAusleihe); - - } - - private void mediumsAufladen() { - medien.put("B001",new Mediumverwalter (true,10,4, new Buch("t",2018,"Joshua Bloch"))); - medien.put("B00", new Mediumverwalter (true,10,4, new Buch("Effektives Java Programmieren",2018,"Joshua Bloch"))); - medien.put("BG001", new Mediumverwalter (false,10,4, new Brettspiel("Die Siedler von Catan",2012,"XY Müller"))); - - } - - - private boolean checkIfUserImSystemAngemeldetIst(String kartennummer) { - return alleBibBenutzer.stream() - .anyMatch(user -> user.isAngemeldet()); - } - - private Benutzer findBenutzer(String kartennummer) throws BenutzerNichtGefundenException { - return alleBibBenutzer.stream() - .filter(k -> k.getBibAusweis().getKartenNummer().equalsIgnoreCase(kartennummer)) - .findFirst() // nimmt das erste Element des Streams, das die Filterbedingung erfüllt. - .orElseThrow(() -> new BenutzerNichtGefundenException ("Benutzer mit Kartennummer " + kartennummer + " nicht gefunden")); - } - -} diff --git a/Bibliotheksverwaltungssystem/src/domain/MedienDurchsuchen/MedienSuchenTest.java b/Bibliotheksverwaltungssystem/src/domain/MedienDurchsuchen/MedienSuchenTest.java new file mode 100644 index 0000000..2b8291a --- /dev/null +++ b/Bibliotheksverwaltungssystem/src/domain/MedienDurchsuchen/MedienSuchenTest.java @@ -0,0 +1,52 @@ +package domain.MedienDurchsuchen; + +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; +import domain.fassade.BibSystem; + +class MedienSuchenTest { + +private BibSystem fassade; + + @BeforeEach + void erstelleObjekt() throws FalscheEingabeException, BenutzerNichtGefundenException { + this.fassade = new BibSystem(); + fassade.userRegistrieren("obai", "student", 15, "nein"); + fassade.userAnmdelden("K1000"); + + } + + @Disabled + void testMedienSuchenNachTitle()throws MediumNichtGefundenException, FalscheEingabeException, BenutzerNichtAngemeldetException { + ArrayList nichtAusgeliehen = fassade.mediumDurchsuchen("Effektives Java Programmieren", "K1000"); + nichtAusgeliehen.forEach(System.out::println); + + } + + @Disabled + void testMedienSuchenNachMedienart()throws MediumNichtGefundenException, FalscheEingabeException, BenutzerNichtAngemeldetException { + ArrayList nichtAusgeliehen = fassade.mediumDurchsuchen("Videospiele", "K1000"); + nichtAusgeliehen.forEach(System.out::println); + + } + + @Test + void testMedienSuchenNachausgeliehen()throws MediumNichtGefundenException, FalscheEingabeException, BenutzerNichtAngemeldetException { + ArrayList nichtAusgeliehen = fassade.mediumDurchsuchen("ausgeliehen", "K1000"); + nichtAusgeliehen.forEach(System.out::println); + + } + +} diff --git a/Bibliotheksverwaltungssystem/src/domain/MedienDurchsuchen/Mediensuchen.java b/Bibliotheksverwaltungssystem/src/domain/MedienDurchsuchen/Mediensuchen.java new file mode 100644 index 0000000..6e30857 --- /dev/null +++ b/Bibliotheksverwaltungssystem/src/domain/MedienDurchsuchen/Mediensuchen.java @@ -0,0 +1,62 @@ +package domain.MedienDurchsuchen; + +import java.util.*; +import java.util.stream.Collectors; +import domain.Medium.*; + +public class Mediensuchen { + + public ArrayList title(String title, HashMap medien) { + return medien.entrySet().stream() + .filter(t -> t.getValue().getMedium().getTitle().equalsIgnoreCase(title)) + .map(t -> "Eindutige Kennung= " + t.toString()).collect(Collectors.toCollection(ArrayList::new)); + } + + public ArrayList ausgeliehen(String ausgeliehen, HashMap medien) { + return medien.entrySet().stream() + .filter(t -> t.getValue().isIstAusgeliehen()) + .map(t -> "Eindutige Kennung= " + t.toString()).collect(Collectors.toCollection(ArrayList::new)); + } + + public ArrayList nichtAusgeliehen(String ausgeliehen, HashMap medien) { + return medien.entrySet().stream() + .filter(t -> !(t.getValue().isIstAusgeliehen())) + .map(t -> "Eindutige Kennung= " + t.toString()).collect(Collectors.toCollection(ArrayList::new)); + } + + public ArrayList medienart(String medienart, HashMap medien) { + switch(medienart) { + case "Bücher": + return medien.entrySet().stream() + .filter(t -> t.getValue().getMedium() instanceof Buch) + .map(t -> "Eindutige Kennung= " + t.toString()).collect(Collectors.toCollection(ArrayList::new)); + + case "Brettspiele": + return medien.entrySet().stream() + .filter(t -> t.getValue().getMedium() instanceof Brettspiel) + .map(t -> "Eindutige Kennung= " + t.toString()).collect(Collectors.toCollection(ArrayList::new)); + + case "Dvds": + return medien.entrySet().stream() + .filter(t -> t.getValue().getMedium() instanceof Dvd) + .map(t -> "Eindutige Kennung= " + t.toString()).collect(Collectors.toCollection(ArrayList::new)); + + case "Cds": + return medien.entrySet().stream() + .filter(t -> t.getValue().getMedium() instanceof Cd) + .map(t -> "Eindutige Kennung= " + t.toString()).collect(Collectors.toCollection(ArrayList::new)); + + case "Videospiele": + return medien.entrySet().stream() + .filter(t -> t.getValue().getMedium() instanceof Videospiel) + .map(t -> "Eindutige Kennung= " + t.toString()).collect(Collectors.toCollection(ArrayList::new)); + + default: + return null; + + } + + + + } +} diff --git a/Bibliotheksverwaltungssystem/src/domain/Medium/Brettspiel.java b/Bibliotheksverwaltungssystem/src/domain/Medium/Brettspiel.java index f9fc42f..7a60a4f 100644 --- a/Bibliotheksverwaltungssystem/src/domain/Medium/Brettspiel.java +++ b/Bibliotheksverwaltungssystem/src/domain/Medium/Brettspiel.java @@ -6,7 +6,11 @@ public class Brettspiel extends Medium { public Brettspiel(String title, int erscheinungsjahr, String Verlag) { super(title, erscheinungsjahr); - this.Verlag = Verlag; + + if (Verlag.isEmpty()) + this.Verlag = "-"; + else + this.Verlag = Verlag; } public String getVerlag() { diff --git a/Bibliotheksverwaltungssystem/src/domain/Medium/Buch.java b/Bibliotheksverwaltungssystem/src/domain/Medium/Buch.java index 701e68c..cd11a22 100644 --- a/Bibliotheksverwaltungssystem/src/domain/Medium/Buch.java +++ b/Bibliotheksverwaltungssystem/src/domain/Medium/Buch.java @@ -7,7 +7,11 @@ public class Buch extends Medium { public Buch(String title, int erscheinungsjahr, String autor) { super(title, erscheinungsjahr); - this.autor = autor; + + if (autor.isEmpty()) + this.autor = "-"; + else + this.autor = autor; } diff --git a/Bibliotheksverwaltungssystem/src/domain/Medium/Cd.java b/Bibliotheksverwaltungssystem/src/domain/Medium/Cd.java index 9def9db..46129c3 100644 --- a/Bibliotheksverwaltungssystem/src/domain/Medium/Cd.java +++ b/Bibliotheksverwaltungssystem/src/domain/Medium/Cd.java @@ -7,7 +7,11 @@ public class Cd extends Medium { private String Künstler; public Cd(String title, int erscheinungsjahr,String Künstler) { super(title, erscheinungsjahr); - this.Künstler = Künstler; + + if (Künstler.isEmpty()) + this.Künstler = "-"; + else + this.Künstler = Künstler; } public String getKünstler() { diff --git a/Bibliotheksverwaltungssystem/src/domain/Medium/Dvd.java b/Bibliotheksverwaltungssystem/src/domain/Medium/Dvd.java index 4d516d5..845061e 100644 --- a/Bibliotheksverwaltungssystem/src/domain/Medium/Dvd.java +++ b/Bibliotheksverwaltungssystem/src/domain/Medium/Dvd.java @@ -6,7 +6,11 @@ public class Dvd extends Medium { private String regisseur; public Dvd(String title, int erscheinungsjahr,String regisseur) { super(title, erscheinungsjahr); - this.regisseur = regisseur; + + if (regisseur.isEmpty()) + this.regisseur = "-"; + else + this.regisseur = regisseur; } public String getRegisseur() { diff --git a/Bibliotheksverwaltungssystem/src/domain/Medium/Mediumverwalter.java b/Bibliotheksverwaltungssystem/src/domain/Medium/Mediumverwalter.java index f27ab04..48207e1 100644 --- a/Bibliotheksverwaltungssystem/src/domain/Medium/Mediumverwalter.java +++ b/Bibliotheksverwaltungssystem/src/domain/Medium/Mediumverwalter.java @@ -48,7 +48,7 @@ public class Mediumverwalter { @Override public String toString() { - return "Medium=" + medium.toString() + " ,verlängerbar=" + verlängerbar + ", anzahl=" + anzahl + ", wocheAnzahlZumAusleihen=" + return "Medium=" + medium.toString() + " ,verlängerbar=" + verlängerbar + ", anzahl=" + anzahl + ",ist Ausgeliehen= " + istAusgeliehen + ", wocheAnzahlZumAusleihen=" + wocheAnzahlZumAusleihen ; } diff --git a/Bibliotheksverwaltungssystem/src/domain/Medium/Videospiel.java b/Bibliotheksverwaltungssystem/src/domain/Medium/Videospiel.java index d4341ee..4fd00d2 100644 --- a/Bibliotheksverwaltungssystem/src/domain/Medium/Videospiel.java +++ b/Bibliotheksverwaltungssystem/src/domain/Medium/Videospiel.java @@ -8,7 +8,11 @@ public class Videospiel extends Medium { public Videospiel(String title, int erscheinungsjahr, String plattform) { super(title, erscheinungsjahr); - this.plattform = plattform; + + if (plattform.isEmpty()) + this.plattform = "-"; + else + this.plattform = plattform; } public String getPlattform() { diff --git a/Bibliotheksverwaltungssystem/src/domain/UserRegistieren/RegistrierenTest.java b/Bibliotheksverwaltungssystem/src/domain/UserRegistieren/RegistrierenTest.java index 981007f..c86ac23 100644 --- a/Bibliotheksverwaltungssystem/src/domain/UserRegistieren/RegistrierenTest.java +++ b/Bibliotheksverwaltungssystem/src/domain/UserRegistieren/RegistrierenTest.java @@ -5,7 +5,6 @@ import static org.junit.jupiter.api.Assertions.*; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import domain.BibSystem; import domain.Benutzer.Ausweis; import domain.Benutzer.Benutzer; import domain.Benutzer.Kunde; @@ -13,6 +12,7 @@ import domain.Benutzer.Mitarbeiter; import domain.ExceptionsKlassen.FalscheEingabeException; import domain.Medium.Buch; import domain.Medium.Mediumverwalter; +import domain.fassade.BibSystem; class RegistrierenTest { private BibSystem bib; diff --git a/Bibliotheksverwaltungssystem/src/domain/fassade/BibSystem.java b/Bibliotheksverwaltungssystem/src/domain/fassade/BibSystem.java new file mode 100644 index 0000000..692fa1b --- /dev/null +++ b/Bibliotheksverwaltungssystem/src/domain/fassade/BibSystem.java @@ -0,0 +1,119 @@ +package domain.fassade; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map.Entry; +import java.util.stream.Collector; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import domain.AusleiheSystem.Ausleihe; +import domain.AusleiheSystem.AusleiheSystem; +import domain.Benutzer.*; +import domain.ExceptionsKlassen.*; +import domain.MedienDurchsuchen.Mediensuchen; +import domain.Medium.Brettspiel; +import domain.Medium.Buch; +import domain.Medium.Medium; +import domain.Medium.Mediumverwalter; +import domain.Medium.Videospiel; +import domain.UserRegistieren.Registieren; + +public class BibSystem { + private ArrayList alleBibBenutzer; + private HashMap medien; + private ArrayList ausleihe; + private AusleiheSystem ausleiheSystem; + + public BibSystem() { + + this.alleBibBenutzer = new ArrayList<>(); + this.medien = new HashMap<>(); + this.ausleiheSystem = new AusleiheSystem(medien); + mediumsAufladen(); + } + + public ArrayList mediumDurchsuchen(String auswahl, String bibKartenNummer) throws FalscheEingabeException, MediumNichtGefundenException, BenutzerNichtAngemeldetException { + if (!checkIfUserImSystemAngemeldetIst(bibKartenNummer)) + throw new BenutzerNichtAngemeldetException("Sie müssen sich erst im System anmelden"); + + ArrayList treffer = new ArrayList<>(); + Mediensuchen medienSuchen = new Mediensuchen(); + + if(auswahl.equalsIgnoreCase("ausgeliehen")) + treffer = medienSuchen.ausgeliehen(auswahl, medien); + + else if(auswahl.equalsIgnoreCase("nicht Ausgeliehen")) + treffer = medienSuchen.nichtAusgeliehen(auswahl, medien); + + else if(auswahl.equalsIgnoreCase("Bücher") || auswahl.equalsIgnoreCase("Brettspiele") || auswahl.equalsIgnoreCase("Dvds") || auswahl.equalsIgnoreCase("Cds") || auswahl.equalsIgnoreCase("Videospiele") ) + treffer = medienSuchen.medienart(auswahl, medien); + + else + treffer = medienSuchen.title(auswahl, medien); + + + if (treffer.size() == 0) + throw new MediumNichtGefundenException("Kein treffer"); + + return treffer; + + } + + public void userRegistrieren(String name, String type, int alter,String istAdmin) throws FalscheEingabeException { + Benutzer bibBenutzer = Registieren.userRegistrieren(name, type, alter, istAdmin); + alleBibBenutzer.add(bibBenutzer); + } + + public boolean userAnmdelden(String bibKartenNummer) throws BenutzerNichtGefundenException { + Benutzer bibBenutzer = findeBenutzer(bibKartenNummer); + bibBenutzer.setAngemeldet(true); + return bibBenutzer.isAngemeldet(); + } + + public void mediumAusleihen(String bibKartenNummer, String eindeutigeKennung) throws Exception { + Benutzer tempBenutzer = findeBenutzer(bibKartenNummer); + + if (tempBenutzer instanceof Mitarbeiter) + throw new Exception("Mitarbeiter können keine Mediums ausleihen!"); + + if (!checkIfUserImSystemAngemeldetIst(bibKartenNummer)) + throw new BenutzerNichtAngemeldetException("Sie müssen sich erst im System anmelden"); + + Ausleihe neueAusleihe = ausleiheSystem.mediumAusleihen(tempBenutzer,eindeutigeKennung); + ausleihe.add(neueAusleihe); + + } + + + + + + // Temporäre Test Methode + private void mediumsAufladen() { + Mediumverwalter buch = new Mediumverwalter(true, 10, 4, new Buch("Effektives Java Programmieren", 2018, "Joshua Bloch")); + medien.put("B001",buch); + + Mediumverwalter buchIStAusgeliehen = new Mediumverwalter(true, 10, 4, new Buch("Effektives C++ Programmieren", 2018, "Joshua Bloch")); + buchIStAusgeliehen.setIstAusgeliehen(true); + medien.put("B00", buchIStAusgeliehen); + + Mediumverwalter buchIStNichtAusgeliehen = new Mediumverwalter(true, 10, 4, new Buch("Javascript lenren", 2018, "Joshua Bloch")); + medien.put("BG001",buchIStNichtAusgeliehen); + + Mediumverwalter Videospiel = new Mediumverwalter(true,2,1,new Videospiel ("The Legend of Zelda: Breath of the Wild", 2017,"Nintendo Switch")); + medien.put("BG00122",Videospiel); + } + + private boolean checkIfUserImSystemAngemeldetIst(String bibKartenNummer) { + return alleBibBenutzer.stream().anyMatch(user -> user.isAngemeldet()); + } + + private Benutzer findeBenutzer(String bibKartenNummer) throws BenutzerNichtGefundenException { + return alleBibBenutzer.stream() + .filter(k -> k.getBibAusweis().getKartenNummer().equalsIgnoreCase(bibKartenNummer)).findFirst() + .orElseThrow(() -> new BenutzerNichtGefundenException("Benutzer mit Kartennummer " + bibKartenNummer + " nicht gefunden")); + } + +} diff --git a/Bibliotheksverwaltungssystem/src/domain/MediumDurchsuchenTest.java b/Bibliotheksverwaltungssystem/src/domain/fassade/MediumDurchsuchenTest.java similarity index 66% rename from Bibliotheksverwaltungssystem/src/domain/MediumDurchsuchenTest.java rename to Bibliotheksverwaltungssystem/src/domain/fassade/MediumDurchsuchenTest.java index 99e0914..f189647 100644 --- a/Bibliotheksverwaltungssystem/src/domain/MediumDurchsuchenTest.java +++ b/Bibliotheksverwaltungssystem/src/domain/fassade/MediumDurchsuchenTest.java @@ -1,10 +1,11 @@ -package domain; +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; @@ -22,13 +23,21 @@ class MediumDurchsuchenTest { fassade = new BibSystem(); } - @Test + @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"); - System.out.println(treffer); - + 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/domain/fassade/UserAnmeldenTest.java b/Bibliotheksverwaltungssystem/src/domain/fassade/UserAnmeldenTest.java new file mode 100644 index 0000000..1a7a136 --- /dev/null +++ b/Bibliotheksverwaltungssystem/src/domain/fassade/UserAnmeldenTest.java @@ -0,0 +1,35 @@ +package domain.fassade; + +import static org.junit.Assert.assertThrows; +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import domain.ExceptionsKlassen.BenutzerNichtGefundenException; +import domain.ExceptionsKlassen.FalscheEingabeException; + +class UserAnmeldenTest { + + BibSystem fassade; + @BeforeEach + void setUp() throws Exception { + fassade = new BibSystem(); + } + + @Test + void testAnmelden() throws FalscheEingabeException, BenutzerNichtGefundenException { + + // True => User ist Angemeldet + fassade.userRegistrieren("obai", "Student", 15, "nein"); + assertTrue(fassade.userAnmdelden("K1000")); + } + + @Test + void testBenutzerIstNichtImSystem() throws FalscheEingabeException, BenutzerNichtGefundenException { + + // True, da Benutzer nicht im System ist + assertThrows( BenutzerNichtGefundenException.class, () -> fassade.userAnmdelden("K1000") ); + } + +} diff --git a/Bibliotheksverwaltungssystem/src/tui/Tui.java b/Bibliotheksverwaltungssystem/src/tui/Tui.java index caad55d..37f8b02 100644 --- a/Bibliotheksverwaltungssystem/src/tui/Tui.java +++ b/Bibliotheksverwaltungssystem/src/tui/Tui.java @@ -2,11 +2,11 @@ package tui; import java.util.Scanner; -import domain.BibSystem; import domain.ExceptionsKlassen.BenutzerNichtAngemeldetException; import domain.ExceptionsKlassen.BenutzerNichtGefundenException; import domain.ExceptionsKlassen.FalscheEingabeException; import domain.ExceptionsKlassen.MediumNichtGefundenException; +import domain.fassade.BibSystem; public class Tui { private BibSystem fassade; @@ -17,7 +17,7 @@ public class Tui { startBibProgramm(); } - private void startBibProgramm() { + private void startBibProgramm() throws FalscheEingabeException, MediumNichtGefundenException, BenutzerNichtAngemeldetException { String aktion; System.out.println("<< Willkommen in der Bibliothek >>"); @@ -69,7 +69,7 @@ public class Tui { System.out.println("Geben Sie bitte die eindutige Kennung des Mediums"); System.out.print(">"); eindutigeKennung = eingabe.nextLine(); - + try { fassade.mediumAusleihen(kartennummer, eindutigeKennung); @@ -81,8 +81,29 @@ public class Tui { } - private void mediumDurchsuchenProzess() { - + private void mediumDurchsuchenProzess() throws FalscheEingabeException, MediumNichtGefundenException, BenutzerNichtAngemeldetException { + String auswahl; + String bibKartennummer; + boolean mediumDurchsuchenProzess = true; + System.out.println("Wählen Sie bitte aus, wonache Sie suchen möchten"); + while (mediumDurchsuchenProzess) { + System.out.println("Katalog der Bibliothek: "); + System.out.println("Title"); + System.out.println("Ausgeliehene Medien"); + System.out.println("Nicht Ausgeliehene Medien"); + System.out.println("Medienart (Bücher,Brettspiele,Dvds,Cds oder Videospiele"); + System.out.println("zurück"); + auswahl = eingabe.nextLine(); + if (auswahl.equalsIgnoreCase("zurück")){ + mediumDurchsuchenProzess = false; + startBibProgramm(); + } + System.out.println("gebe Sie nun Ihre BibKartenummer"); + bibKartennummer = eingabe.nextLine(); + + fassade.mediumDurchsuchen(auswahl, bibKartennummer); + } + } private void anmeldenProzess() { @@ -90,7 +111,6 @@ public class Tui { System.out.println("Geben Sie bitte die Kartennummer Ihres Bibliotheksausweises an: "); System.out.print(">"); kartennummer = eingabe.nextLine(); - try { if (fassade.userAnmdelden(kartennummer)) System.out.println("Sie sind nun im System Angemeldet"); diff --git a/Bibliotheksverwaltungssystem/vorgehen.txt b/Bibliotheksverwaltungssystem/vorgehen.txt index df71115..dad8b79 100644 --- a/Bibliotheksverwaltungssystem/vorgehen.txt +++ b/Bibliotheksverwaltungssystem/vorgehen.txt @@ -3,6 +3,13 @@ Für das Bibliotheksverwaltungssystem werde ich zunächst eine gründliche Analy Hierbei werde ich festlegen, welche Funktionen und Ziele die Software erfüllen soll. Ein wesentlicher Aspekt ist auch, die unterschiedlichen Akteure zu identifizieren, die die Software verwenden werden, um ihre Bedürfnisse und Anforderungen zu berücksichtigen. +Das Bibsystem unterstützt 6 Aktionen: +Aktion1 : Registrieren +Also hier werde ich in der UI dem Benutzer die Möglichkeit seine Daten einzugeben(Name,alter,etc...) +die Fassade nimmt die Daten entgegen und erstellt für die Benutzer ein neues Konto und ein neuer Ausweis +hier soll der kunde eingeben, ob er normale Kunde ist oder ein Mitarbeiter(Admin) + + Design und Datenstrukturentscheidung: In diesem Schritt plane und entwerfe ich die grundlegende Klassenstruktur. Dazu werde ich ermitteln, wie viele Klassen benötigt werden und welche Attribute und Methoden jede Klasse enthalten soll.