Code-Verbesserung

main
obai 2024-11-18 19:00:14 +01:00
parent 194a7df9e0
commit 7858e0c1ce
10 changed files with 170 additions and 51 deletions

View File

@ -38,7 +38,8 @@ public class AusleiheSystem {
public ArrayList<String> mediumRückgabe(ArrayList<Ausleihe> ausleihe, String eindeutigeKennung) {
Ausleihe ausgelieheneMedium = ausleihe.stream()
.filter(k -> k.getMediumverwalter().getMedium().getID().equalsIgnoreCase(eindeutigeKennung)).findFirst()
.filter(k -> k.getMediumverwalter().getMedium().getID().equalsIgnoreCase(eindeutigeKennung))
.findFirst()
.orElse(null);
ArrayList<String> ausgeliehenMedien = new ArrayList<>();

View File

@ -2,12 +2,14 @@ package domain.AusleiheSystem;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
import java.util.ArrayList;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import domain.Benutzer.Benutzer;
import domain.fassade.BibSystem;
class MedienRückgabeTest {
@ -25,9 +27,13 @@ class MedienRückgabeTest {
bib.userAnmelden("K1001");
bib.mediumAusleihen("K1001", "B001");
double gebühren = bib.datumÄndern("B001", "2022-09-01", "2022-10-01", "2022-10-03");
assertEquals(2.0,gebühren);
Benutzer bibUser = bib.findeBenutzer("K1001");
double gebühren = bib.datumÄndern("B001", "2022-09-01", "2022-10-01", "2022-10-09");
assertEquals(9.0,gebühren);
assertTrue(bib.adminAnmelden("A1000"));
assertTrue(bib.getgbührenBenutzer("K1001") == 9.0);
bib.gebührenVerbuchen("K1001");
assertTrue (bibUser.getGebühren() == 0.0);
}

View File

@ -0,0 +1,14 @@
package domain.Benutzer;
public class Erwachsener extends Benutzer {
public Erwachsener(Ausweis bibAusweis, String name, int alter, boolean istStudent) {
super(bibAusweis, name, alter, istStudent);
}
@Override
public double getJahresgebühren() {
return 50.0;
}
}

View File

@ -9,7 +9,7 @@ public class Mitarbeiter extends Benutzer {
@Override
public double getJahresgebühren() {
return 50.0;
return 0.0;
}
public void gebührVerbuchen(Benutzer benutzer) {

View File

@ -1,10 +1,8 @@
package domain.Benutzer;
import java.time.LocalDate;
public class Studenten extends Benutzer {
public class Kunde extends Benutzer {
public Kunde(Ausweis bibAusweis, String name, int alter, boolean istStudent) {
public Studenten(Ausweis bibAusweis, String name, int alter, boolean istStudent) {
super(bibAusweis, name, alter, istStudent);
}

View File

@ -6,21 +6,31 @@ import domain.ExceptionsKlassen.FalscheEingabeException;
public class Registieren {
public static Benutzer userRegistrieren(String name, String type, int alter,String istAdmin) throws FalscheEingabeException {
Benutzer benutzer;
Ausweis ausweis;
if (!name.isEmpty() && (type.equalsIgnoreCase("schüler") || type.equalsIgnoreCase("student")) && istAdmin.equalsIgnoreCase("nein")) {
ausweis = new Ausweis("K");
benutzer = new Kunde(ausweis,name,alter,false);
}
else if (!name.isEmpty() && type.equalsIgnoreCase("mitarbeiter") && istAdmin.equalsIgnoreCase("ja")) {
ausweis = new Ausweis("A");
benutzer = new Mitarbeiter(ausweis,name,alter,true);
if (!name.isEmpty()) {
boolean admin = (istAdmin.equalsIgnoreCase("Ja"))? true : false;
if ((type.equalsIgnoreCase("schüler") || type.equalsIgnoreCase("student"))) {
ausweis = new Ausweis("K");
benutzer = new Studenten(ausweis,name,alter,admin);
}
else if (type.equalsIgnoreCase("erwachsener")) {
ausweis = new Ausweis("K");
benutzer = new Erwachsener(ausweis,name,alter,admin);
}
else if (type.equalsIgnoreCase("Mitarbeiter")) {
ausweis = new Ausweis("A");
benutzer = new Erwachsener(ausweis,name,alter,admin);
}
else
throw new FalscheEingabeException("Falsche Eingabe");
}
else
throw new FalscheEingabeException("Falsche Eingabe");
return benutzer;
}
}

View File

@ -3,15 +3,14 @@ package domain.UserRegistieren;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import domain.Benutzer.Ausweis;
import domain.Benutzer.Benutzer;
import domain.Benutzer.Kunde;
import domain.Benutzer.Erwachsener;
import domain.Benutzer.Mitarbeiter;
import domain.Benutzer.Studenten;
import domain.ExceptionsKlassen.FalscheEingabeException;
import domain.Medium.Buch;
import domain.Medium.Mediumverwalter;
import domain.fassade.BibSystem;
class RegistrierenTest {
@ -26,13 +25,18 @@ class RegistrierenTest {
void testKunde() throws FalscheEingabeException {
Benutzer benutzer = Registieren.userRegistrieren("obai", "student", 15, "nein");
// True, da Kunde ist
assertTrue(benutzer instanceof Kunde);
// True ist
assertTrue(benutzer instanceof Studenten);
String bibKartenNummer = "K1000";
assertTrue(benutzer.getBibAusweis().getKartenNummer().equalsIgnoreCase(bibKartenNummer));
Benutzer erwachsener = Registieren.userRegistrieren("obai", "erwachsener", 15, "nein");
// True
assertTrue(erwachsener instanceof Erwachsener);
}
@Test
@Disabled
void testMitarbeiter() throws FalscheEingabeException {
Benutzer benutzer = Registieren.userRegistrieren("obai", "mitarbeiter", 15, "ja");

View File

@ -21,7 +21,7 @@ public class BibSystem {
this.medien = new HashMap<>();
this.ausleiheSystem = new AusleiheSystem(medien);
this.ausleihe = new ArrayList<>();
bibAdmin = new Mitarbeiter(new Ausweis("A"),"XY Müller",20,false);
this.bibAdmin = new Mitarbeiter(new Ausweis("A"),"Xy Müller",20,false);
mediumsAufladen();
}
@ -68,15 +68,6 @@ public class BibSystem {
return treffer;
}
public ArrayList<String> ausgeliehenGegenstände(String bibKartennummer) throws BenutzerNichtGefundenException{
Benutzer bibUser = findeBenutzer(bibKartennummer);
ArrayList<String> treffer = new ArrayList<>();
for (Ausleihe ausleihe:bibUser.getAusgeliehenenMedien())
treffer.add(ausleihe.toString());
return treffer;
}
/*
* Aufgaben des Leihsystems:
@ -106,16 +97,35 @@ public class BibSystem {
Benutzer benutzer = findeBenutzer(bibKartennummer);
return ausleiheSystem.medienVerlängern(benutzer,eindeutigeKennung);
}
// Admin meldet sich an
public boolean adminAnmelden(String bibKartennummerAdmin){
this.bibAdmin.anmelden();
return this.bibAdmin.isAngemeldet();
}
// gebühren Bezahlen
public boolean gebührenBezahlen(double betrag, String bibKartennummer) throws BenutzerNichtGefundenException {
// aktuelle Gebühren der Benutzer
public double getgbührenBenutzer(String bibKartennummer) throws BenutzerNichtGefundenException {
Benutzer benutzer = findeBenutzer(bibKartennummer);
double userBetrag = benutzer.getGebühren();
if (betrag == userBetrag ) {
((Mitarbeiter)bibAdmin).gebührVerbuchen(benutzer);
return true;
}
return false;
return benutzer.getGebühren();
}
// akteulle ausgelihene Mediums der Benutzer
public ArrayList<String> ausgeliehenGegenstände(String bibKartennummer) throws BenutzerNichtGefundenException {
Benutzer bibUser = findeBenutzer(bibKartennummer);
ArrayList<String> treffer = new ArrayList<>();
for (Ausleihe ausleihe : bibUser.getAusgeliehenenMedien())
treffer.add(ausleihe.toString());
return treffer;
}
public double gebührenVerbuchen(String bibKartennummer) throws BenutzerNichtGefundenException {
Benutzer bibUser = findeBenutzer(bibKartennummer);
((Mitarbeiter)this.bibAdmin).gebührVerbuchen(bibUser);
return bibUser.getGebühren();
}
// Mediums Rückgabe
@ -123,6 +133,7 @@ public class BibSystem {
return ausleiheSystem.mediumRückgabe(ausleihe, eindeutigeKennung);
}
// Simuliere Datum
public double datumÄndern(String eindeutigeKennung,String ausleiheBeginn, String ausleiheEnde,String datum) throws MediumNichtGefundenException {
return ausleiheSystem.SimulieremediumRückgabe(ausleihe, eindeutigeKennung, ausleiheBeginn, ausleiheEnde, datum);
}
@ -193,10 +204,12 @@ public class BibSystem {
}
private boolean checkIfUserImSystemAngemeldetIst(String bibKartenNummer) {
return alleBibBenutzer.stream().anyMatch(user -> user.isAngemeldet());
return alleBibBenutzer.stream()
.filter(b -> b.getBibAusweis().getKartenNummer().equalsIgnoreCase(bibKartenNummer))
.anyMatch(user -> user.isAngemeldet());
}
private Benutzer findeBenutzer(String bibKartenNummer) throws BenutzerNichtGefundenException {
public Benutzer findeBenutzer(String bibKartenNummer) throws BenutzerNichtGefundenException {
return alleBibBenutzer.stream()
.filter(k -> k.getBibAusweis().getKartenNummer().equalsIgnoreCase(bibKartenNummer)).findFirst()
.orElseThrow(() -> new BenutzerNichtGefundenException(

View File

@ -6,6 +6,7 @@ import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import domain.Benutzer.Benutzer;
import domain.ExceptionsKlassen.BenutzerNichtGefundenException;
import domain.ExceptionsKlassen.FalscheEingabeException;
@ -22,10 +23,15 @@ class GebührenTest {
void testGebühren() throws Exception {
fassade.userRegistrieren("obai", "schüler", 15, "nein");
fassade.userAnmelden("K1001");
Benutzer user = fassade.findeBenutzer("K1001");
double gebühren = fassade.jahresGebührenBerechnen("K1001", "2026-11-16");
assertEquals(50.0, gebühren);
assertTrue (user.getGebühren() == gebühren);
assertTrue(fassade.adminAnmelden("A1000"));
assertTrue(fassade.getgbührenBenutzer("K1001") == 50.0);
fassade.gebührenVerbuchen("K1001");
assertTrue (user.getGebühren() == 0.0);
}
}

View File

@ -59,6 +59,9 @@ public class Tui {
case "8":
verbucheGebührenProzess();
break;
case "9":
datumÄndern();
break;
case "0":
programmIstAktiv = false;
System.out.println("Programm beendet.");
@ -82,6 +85,7 @@ public class Tui {
System.out.println("6. Ausgeliehene Gegenstände anzeigen");
System.out.println("7. Leihfrist verlängern");
System.out.println("8. Gebühren verbuchen (Admin)");
System.out.println("9. Datum ändern");
System.out.println("0. Programm beenden");
}
@ -223,17 +227,80 @@ public class Tui {
private void verbucheGebührenProzess() {
System.out.println("<< Gebühren verbuchen >>");
System.out.print("BibKartennummer des Nutzers: ");
System.out.print("BibKartennummer des Admins: ");
String bibKartennummer = eingabe.nextLine();
System.out.println("Geben Sie bitte den Betrag: ");
double betrag = eingabe.nextInt();
try {
if (fassade.gebührenBezahlen(betrag,bibKartennummer))
System.out.println("Gebühren erfolgreich verbucht.");
if (fassade.adminAnmelden(bibKartennummer)) {
System.out.println("Erfolgreich Angemeldt");
System.out.println("Welche Aktion: ");
System.out.println("1.Betrag verbuchen");
System.out.println("2.ausgeliehene Mediums anzeigen");
System.out.println("3.aktuelles Betrag anzeigen");
System.out.print(">");
String auswahl = eingabe.nextLine();
String userID = eingabe.nextLine();
switch (auswahl) {
case "1":
System.out.println(fassade.gebührenVerbuchen(userID));
break;
case "2":
ArrayList<String> treffer = fassade.ausgeliehenGegenstände(userID);
treffer.forEach(System.out::println);
break;
case "3":
System.out.println(fassade.getgbührenBenutzer(userID));
break;
default:
System.out.println("Falsche Eingabe");
}
}
} catch (Exception e) {
System.out.println("Fehler: " + e.getMessage());
}
}
// Aktion 9
private void datumÄndern() {
System.out.println("1.Jahresgebühren");
System.out.println("2.Ausleihefristen");
String auswahl = eingabe.nextLine();
switch (auswahl) {
case "1":
try {
System.out.println("Bibkartennummer:");
String bibkartennummer = eingabe.nextLine();
System.out.println("Datum: ");
String datum = eingabe.nextLine();
fassade.jahresGebührenBerechnen(bibkartennummer, datum);
} catch (BenutzerNichtGefundenException e) {
e.printStackTrace();
}
break;
case "2":
try {
System.out.println("Bibkartennummer:");
String bibkartennummer = eingabe.nextLine();
System.out.println("AusleihBeginn: ");
String ausleihbeginn = eingabe.nextLine();
System.out.println("AusleihEnde: ");
String ausleihEnde = eingabe.nextLine();
System.out.println("Datum vom heute: ");
String heutigesDatum = eingabe.nextLine();
System.out.println("Medium ID: ");
String mediumID = eingabe.nextLine();
fassade.datumÄndern(mediumID, ausleihEnde, ausleihEnde, heutigesDatum);
} catch (MediumNichtGefundenException e) {
System.out.println("Fehler: " + e.getMessage());
}
}
}
}