Ausleihe Prozess fertig implementiert

MedienAusleihen
3009594 2024-11-14 12:21:39 +01:00
parent 8ada9aa90d
commit 42eee93eac
11 changed files with 78 additions and 64 deletions

View File

@ -11,12 +11,14 @@ public class Ausleihe {
private SimpleDateFormat simpleFormatter; private SimpleDateFormat simpleFormatter;
private Date ausleiheBeginn, ausleiheEnde; private Date ausleiheBeginn, ausleiheEnde;
private Mediumverwalter medium; private Mediumverwalter medium;
private int verlängerungen;
public Ausleihe(Mediumverwalter medium,Date ausleiheBeginn, Date ausleiheEnde) { public Ausleihe(Mediumverwalter medium,Date ausleiheBeginn, Date ausleiheEnde) {
this.medium = medium; this.medium = medium;
this.ausleiheBeginn = ausleiheBeginn; this.ausleiheBeginn = ausleiheBeginn;
this.ausleiheEnde = ausleiheEnde; this.ausleiheEnde = ausleiheEnde;
this.simpleFormatter = new SimpleDateFormat("dd-MM-yyyy HH:mm"); this.simpleFormatter = new SimpleDateFormat("dd-MM-yyyy HH:mm");
this.verlängerungen = 0;
} }
public Date getAusleiheBeginn() { public Date getAusleiheBeginn() {
@ -41,6 +43,6 @@ public class Ausleihe {
@Override @Override
public String toString() { 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;
} }
} }

View File

@ -24,14 +24,16 @@ public class AusleiheSystem {
throw new MediumNichtGefundenException("Das Medium ist ausgeliehen"); throw new MediumNichtGefundenException("Das Medium ist ausgeliehen");
mediumAusleihen.setIstAusgeliehen(true); mediumAusleihen.setIstAusgeliehen(true);
mediumAusleihen.setAnzahl(mediumAusleihen.getAnzahl() - 1);
this.ausleiheBeginn = new Date(); this.ausleiheBeginn = new Date();
this.calendar = Calendar.getInstance(); this.calendar = Calendar.getInstance();
calendar.setTime(ausleiheBeginn); calendar.setTime(ausleiheBeginn);
calendar.add(Calendar.WEEK_OF_YEAR, mediumAusleihen.getWocheAnzahlZumAusleihen()); calendar.add(Calendar.WEEK_OF_YEAR, mediumAusleihen.getLeihdauer());
this.ausleiheEnde = calendar.getTime(); this.ausleiheEnde = calendar.getTime();
Ausleihe neueAusleihe = new Ausleihe(mediumAusleihen,ausleiheBeginn,ausleiheEnde); Ausleihe neueAusleihe = new Ausleihe(mediumAusleihen,ausleiheBeginn,ausleiheEnde);
benutzer.ausleihen(neueAusleihe); benutzer.ausleihen(neueAusleihe);
return neueAusleihe; return neueAusleihe;
} }

View File

@ -1,6 +1,9 @@
package domain.Benutzer; package domain.Benutzer;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date;
import domain.AusleiheSystem.Ausleihe; import domain.AusleiheSystem.Ausleihe;
import domain.Medium.Medium; import domain.Medium.Medium;
@ -14,7 +17,8 @@ public abstract class Benutzer {
private ArrayList<Ausleihe> ausgeliehenenMedien; private ArrayList<Ausleihe> ausgeliehenenMedien;
private boolean angemeldet; private boolean angemeldet;
private double gebühren; 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) { public Benutzer(Ausweis bibAusweis, String name, int alter, boolean istStudent) {
super(); super();
@ -24,6 +28,8 @@ public abstract class Benutzer {
this.istStudent = istStudent; this.istStudent = istStudent;
this.ausgeliehenenMedien = new ArrayList<>(); this.ausgeliehenenMedien = new ArrayList<>();
this.angemeldet = false; this.angemeldet = false;
this.gebühren = 0;
this.anmeldebeginn = new Date();
} }
public Ausweis getBibAusweis() { public Ausweis getBibAusweis() {
@ -87,10 +93,30 @@ public abstract class Benutzer {
this.gebühren = 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 @Override
public String toString() { public String toString() {
return "Benutzer [bibAusweisNummer= " + bibAusweis.getKartenNummer() + ", name=" + name + ", alter=" + alter + ", istStudent=" 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 + "]";
} }

View File

@ -6,4 +6,9 @@ public class Kunde extends Benutzer {
super(bibAusweis, name, alter, istStudent); super(bibAusweis, name, alter, istStudent);
} }
@Override
public double getJahresgebühr() {
return 25.0;
}
} }

View File

@ -6,4 +6,12 @@ public class Mitarbeiter extends Benutzer {
super(bibAusweis, name, alter, istStudent); 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);
}
} }

View File

@ -1,4 +1,4 @@
package domain.MedienDurchsuchen; package domain.Bibliothekskatalog;
import static org.junit.jupiter.api.Assertions.*; import static org.junit.jupiter.api.Assertions.*;

View File

@ -1,4 +1,4 @@
package domain.MedienDurchsuchen; package domain.Bibliothekskatalog;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;

View File

@ -4,15 +4,15 @@ public class Mediumverwalter {
private boolean verlängerbar; private boolean verlängerbar;
private int anzahl; private int anzahl;
private int wocheAnzahlZumAusleihen; private int leihdauer;
private Medium medium; private Medium medium;
private boolean istAusgeliehen; 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(); super();
this.verlängerbar = verlängerbar; this.verlängerbar = verlängerbar;
this.anzahl = anzahl; this.anzahl = anzahl;
this.wocheAnzahlZumAusleihen = wocheAnzahlZumAusleihen; this.leihdauer = leihdauer;
this.medium = medium; this.medium = medium;
} }
@ -29,8 +29,8 @@ public class Mediumverwalter {
this.anzahl = anzahl; this.anzahl = anzahl;
} }
public int getWocheAnzahlZumAusleihen() { public int getLeihdauer(){
return wocheAnzahlZumAusleihen; return leihdauer;
} }
public Medium getMedium() { public Medium getMedium() {
@ -48,8 +48,8 @@ public class Mediumverwalter {
@Override @Override
public String toString() { public String toString() {
return "Medium=" + medium.toString() + " ,verlängerbar=" + verlängerbar + ", anzahl=" + anzahl + ",ist Ausgeliehen= " + istAusgeliehen + ", wocheAnzahlZumAusleihen=" return "Medium=" + medium.toString() + " ,verlängerbar=" + verlängerbar + ", anzahl=" + anzahl + ",ist Ausgeliehen= " + istAusgeliehen + ", Leihdauer="
+ wocheAnzahlZumAusleihen ; + leihdauer ;
} }

View File

@ -1,6 +1,9 @@
package domain.fassade; package domain.fassade;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map.Entry; import java.util.Map.Entry;
@ -11,8 +14,8 @@ import java.util.stream.Stream;
import domain.AusleiheSystem.Ausleihe; import domain.AusleiheSystem.Ausleihe;
import domain.AusleiheSystem.AusleiheSystem; import domain.AusleiheSystem.AusleiheSystem;
import domain.Benutzer.*; import domain.Benutzer.*;
import domain.Bibliothekskatalog.Mediensuchen;
import domain.ExceptionsKlassen.*; import domain.ExceptionsKlassen.*;
import domain.MedienDurchsuchen.Mediensuchen;
import domain.Medium.Brettspiel; import domain.Medium.Brettspiel;
import domain.Medium.Buch; import domain.Medium.Buch;
import domain.Medium.Medium; import domain.Medium.Medium;
@ -25,12 +28,15 @@ public class BibSystem {
private HashMap<String,Mediumverwalter> medien; private HashMap<String,Mediumverwalter> medien;
private ArrayList<Ausleihe> ausleihe; private ArrayList<Ausleihe> ausleihe;
private AusleiheSystem ausleiheSystem; private AusleiheSystem ausleiheSystem;
private Date heutigesDatum;
private SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
public BibSystem() { public BibSystem() {
this.alleBibBenutzer = new ArrayList<>(); this.alleBibBenutzer = new ArrayList<>();
this.medien = new HashMap<>(); this.medien = new HashMap<>();
this.ausleiheSystem = new AusleiheSystem(medien); this.ausleiheSystem = new AusleiheSystem(medien);
this.heutigesDatum = new Date();
mediumsAufladen(); mediumsAufladen();
} }
@ -85,10 +91,13 @@ public class BibSystem {
ausleihe.add(neueAusleihe); ausleihe.add(neueAusleihe);
} }
public Date getHeutigesDatum() {
return heutigesDatum;
}
public void setHeutigesDatum(String heutigesDatum) throws ParseException {
this.heutigesDatum = formatter.parse(heutigesDatum);
}
// Temporäre Test Methode // Temporäre Test Methode
private void mediumsAufladen() { private void mediumsAufladen() {

View File

@ -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<String> treffer = (ArrayList<String>) 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"));
}
}

View File

@ -31,7 +31,7 @@ public class Tui {
System.out.println("6.Ausgeliehene Gegenstände, Fälligkeitsdaten und aufgelaufene Gebühren anzeigen"); 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("7.Verlängern der Leihfrist");
System.out.println("8.Verbuchen von überfälligen Gebühren (Admin)"); 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.println("Wählen Sie bitte eine Aktion aus: ");
System.out.print(">"); System.out.print(">");
aktion = eingabe.nextLine(); aktion = eingabe.nextLine();
@ -70,6 +70,11 @@ public class Tui {
System.out.print(">"); System.out.print(">");
eindutigeKennung = eingabe.nextLine(); eindutigeKennung = eingabe.nextLine();
System.out.println("Geben Sie bitte den Datum ein");
System.out.println("Geben Sie bitte die Ausleihebeginn");
try { try {
fassade.mediumAusleihen(kartennummer, eindutigeKennung); fassade.mediumAusleihen(kartennummer, eindutigeKennung);