MedienHinzufügen Prozess & code-Verbesserungen

HinzufügenVonMedien
3009594 2024-11-16 18:32:51 +01:00
parent 712087279b
commit b62bed0fb0
6 changed files with 334 additions and 191 deletions

View File

@ -0,0 +1,78 @@
package MedienHinzüfugen;
import java.util.Scanner;
import domain.ExceptionsKlassen.FalscheEingabeException;
import domain.fassade.BibSystem;
public class MedienHinzufügen {
private Scanner scanner = new Scanner(System.in);
private BibSystem fassade;
public MedienHinzufügen(BibSystem fassade) {
this.fassade = fassade;
}
public void start() {
System.out.println("Willkommen im Bibliothekssystem!");
boolean beenden = false;
while (!beenden) {
System.out.println("\nBitte wählen Sie eine Aktion aus:");
System.out.println("1: Neues Medium hinzufügen");
System.out.println("2: System beenden");
System.out.print("Ihre Auswahl: ");
int auswahl = scanner.nextInt();
scanner.nextLine();
switch (auswahl) {
case 1:
mediumHinzufügen();
break;
case 2:
beenden = true;
System.out.println("Programm beendet.");
break;
default:
System.out.println("Ungültige Auswahl. Bitte erneut versuchen.");
}
}
}
private void mediumHinzufügen() {
try {
System.out.println("Geben Sie den Typ des Mediums ein (Buch, Cd, Brettspiel, Dvd, Videospiel): ");
String type = scanner.nextLine();
System.out.println("Geben Sie die ID des Mediums ein: ");
String id = scanner.nextLine();
System.out.println("Geben Sie den Titel des Mediums ein: ");
String title = scanner.nextLine();
System.out.println("Geben Sie das Erscheinungsjahr ein: ");
int erscheinungsjahr = scanner.nextInt();
scanner.nextLine();
System.out.println("Geben Sie den Macher (Autor/Regisseur/Entwickler) ein: ");
String ersteller = scanner.nextLine();
System.out.println("Ist das Medium verlängerbar? (ja/nein): ");
String verlängerbar = scanner.nextLine();
System.out.println("Geben Sie die Anzahl der verfügbaren Exemplare ein: ");
int anzahl = scanner.nextInt();
System.out.println("Geben Sie die maximale Leihdauer (in Tagen) ein: ");
int leihdauer = scanner.nextInt();
scanner.nextLine();
fassade.mediumsAufladen(type, id, title, erscheinungsjahr, ersteller, verlängerbar, anzahl, leihdauer);
System.out.println("Medium erfolgreich hinzugefügt!");
} catch (FalscheEingabeException e) {
System.out.println("Fehler: " + e.getMessage());
}
}
}

View File

@ -28,7 +28,7 @@ public class AusleiheSystem {
this.ausleiheBeginn = LocalDate.now();
this.ausleiheEnde = ausleiheBeginn.plusWeeks(mediumAusleihen.getLeihdauer());
this.ausleiheEnde = ausleiheBeginn.plusDays(mediumAusleihen.getLeihdauer());
Ausleihe neueAusleihe = new Ausleihe(mediumAusleihen, benutzer, ausleiheBeginn, ausleiheEnde);
@ -127,9 +127,14 @@ public class AusleiheSystem {
return false;
medium.setVerlängerungen(medium.getVerlängerungen() + 1);
medium.setAusleiheBeginn(LocalDate.now());
medium.setAusleiheEnde(LocalDate.now().plusDays(medium.getMediumverwalter().getLeihdauer()));
return true;
}
private Mediumverwalter findMedium(String eindeutigeKennung) throws MediumNichtGefundenException {
if (medien.containsKey(eindeutigeKennung))
return medien.get(eindeutigeKennung);

View File

@ -8,7 +8,7 @@ public class Mediumverwalter {
private Medium medium;
private boolean istAusgeliehen;
public Mediumverwalter(boolean verlängerbar, int anzahl, int leihdauer, Medium medium) {
public Mediumverwalter( Medium medium, boolean verlängerbar, int anzahl, int leihdauer) {
super();
this.verlängerbar = verlängerbar;
this.anzahl = anzahl;

View File

@ -111,22 +111,54 @@ public class BibSystem {
bibBenutzer.ausleihen(neueAusleihe);
return "Das Medium wurde erfolgreich ausgeliehen";
}
// Temporäre Test Methode
public void mediumsAufladen(String type, String ID, String title, int erscheinungsjahr,String ersteller,String verlängbar,int anzahl,int leihdauer) throws FalscheEingabeException {
Mediumverwalter medium;
boolean verlängerung = (verlängbar.equalsIgnoreCase("ja")) ? true: false;
switch (type) {
case "Buch":
medium = new Mediumverwalter(new Buch(ID,title,erscheinungsjahr,ersteller),verlängerung,anzahl,leihdauer);
break;
case "Cd":
medium = new Mediumverwalter(new Cd(ID,title,erscheinungsjahr,ersteller),verlängerung,anzahl,leihdauer);
break;
case "Brettspiel":
medium = new Mediumverwalter(new Brettspiel(ID,title,erscheinungsjahr,ersteller),verlängerung,anzahl,leihdauer);
break;
case "Dvd":
medium = new Mediumverwalter(new Dvd(ID,title,erscheinungsjahr,ersteller),verlängerung,anzahl,leihdauer);
break;
case "Videospiel":
medium = new Mediumverwalter(new Videospiel(ID,title,erscheinungsjahr,ersteller),verlängerung,anzahl,leihdauer);
break;
default:
throw new FalscheEingabeException("Falsch Eingabe");
}
String getMediumID = medium.getMedium().getID();
medien.put(getMediumID, medium);
}
// Test Methode
private void mediumsAufladen() {
Mediumverwalter buch = new Mediumverwalter(true, 10, 28,
new Buch("B001", "Effektives Java Programmieren", 2018, "Joshua Bloch"));
Mediumverwalter buch = new Mediumverwalter(new Buch("B001", "Effektives Java Programmieren", 2018, "Joshua Bloch"),true, 10, 28);
medien.put(buch.getMedium().getID(), buch);
Mediumverwalter buchIStAusgeliehen = new Mediumverwalter(true, 10, 28,new Buch("B00", "Effektives C++ Programmieren", 2018, "Joshua Bloch"));
Mediumverwalter buchIStAusgeliehen = new Mediumverwalter(new Buch("B00", "Effektives C++ Programmieren", 2018, "Joshua Bloch"),true, 10, 28);
buchIStAusgeliehen.setIstAusgeliehen(true);
medien.put(buchIStAusgeliehen.getMedium().getID(), buchIStAusgeliehen);
Mediumverwalter buchIStNichtAusgeliehen = new Mediumverwalter(true, 10, 28,new Buch("BG001", "Javascript lenren", 2018, "Joshua Bloch"));
Mediumverwalter buchIStNichtAusgeliehen = new Mediumverwalter(new Buch("BG001", "Javascript lenren", 2018, "Joshua Bloch"),true, 10, 28);
medien.put(buchIStNichtAusgeliehen.getMedium().getID(), buchIStNichtAusgeliehen);
Mediumverwalter Videospiel = new Mediumverwalter(true, 2, 28,new Videospiel("BG00122", "The Legend of Zelda: Breath of the Wild", 2017, "Nintendo Switch"));
Mediumverwalter Videospiel = new Mediumverwalter(new Videospiel("BG00122", "The Legend of Zelda: Breath of the Wild", 2017, "Nintendo Switch"),true, 2, 28);
medien.put(Videospiel.getMedium().getID(), Videospiel);
}

View File

@ -1,25 +1,14 @@
package main;
import java.time.LocalDate;
import domain.ExceptionsKlassen.BenutzerNichtAngemeldetException;
import domain.ExceptionsKlassen.FalscheEingabeException;
import domain.ExceptionsKlassen.MediumNichtGefundenException;
import domain.ExceptionsKlassen.*;
import tui.Tui;
public class Main {
public static void main(String[] args) throws FalscheEingabeException, MediumNichtGefundenException, BenutzerNichtAngemeldetException {
//new Tui();
new Tui();
// Aktuelles Datum
LocalDate today = LocalDate.now();
System.out.println("Heutiges Datum: " + today);
// Datum nach einem Jahr
LocalDate oneYearLater = today.plusYears(1);
System.out.println("Datum nach einem Jahr: " + oneYearLater);
}
}

View File

@ -3,181 +3,220 @@ package tui;
import java.util.ArrayList;
import java.util.Scanner;
import domain.ExceptionsKlassen.BenutzerNichtAngemeldetException;
import domain.ExceptionsKlassen.BenutzerNichtGefundenException;
import domain.ExceptionsKlassen.FalscheEingabeException;
import domain.ExceptionsKlassen.MediumNichtGefundenException;
import MedienHinzüfugen.MedienHinzufügen;
import domain.ExceptionsKlassen.*;
import domain.fassade.BibSystem;
public class Tui {
private BibSystem fassade;
private Scanner eingabe = new Scanner(System.in);
public Tui() throws FalscheEingabeException, MediumNichtGefundenException, BenutzerNichtAngemeldetException {
this.fassade = new BibSystem();
startBibProgramm();
}
private void startBibProgramm() throws FalscheEingabeException, MediumNichtGefundenException, BenutzerNichtAngemeldetException {
String aktion;
System.out.println("<< Willkommen in der Bibliothek >>");
boolean programmIstAktiv = true;
while(programmIstAktiv) {
System.out.println("1.Registrieren");
System.out.println("2.Anmelden");
System.out.println("4.Medien Durchsuchen");
System.out.println("3.Ausleihen eines Gegenstandes");
System.out.println("5.Rückgabe eines Gegenstandes");
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.Gebühren berechnen");
System.out.println("Wählen Sie bitte eine Aktion aus: ");
System.out.print(">");
aktion = eingabe.nextLine();
switch(aktion) {
case "1":
registrierenProzess();
break;
case "2":
anmeldenProzess();
break;
case "3":
mediumDurchsuchenProzess();
break;
case "4":
mediumAusleihenProzess();
break;
case "5":
mediumsRückgabeProzess();
}
}
}
private void mediumsRückgabeProzess() throws FalscheEingabeException, MediumNichtGefundenException, BenutzerNichtAngemeldetException {
String eindutigekennung;
boolean mediumsRückgabeProzess = true;
private BibSystem fassade;
private Scanner eingabe;
private MedienHinzufügen mediumsHinzufügen;
while (mediumsRückgabeProzess) {
System.out.println("Geben Sie bitte das eindutige Kennung des Mediums an");
eindutigekennung = eingabe.nextLine();
ArrayList<String> ausgeliehneMedien = fassade.medienRückgabe(eindutigekennung);
System.out.println("Medium ist erfolgreich zurückgegeben");
if (ausgeliehneMedien.size() == 0)
System.out.println("Sie haben keine Mediums mehr");
else
ausgeliehneMedien.stream().forEach(System.out::println);
startBibProgramm();
}
}
private void mediumAusleihenProzess(){
String kartennummer;
String eindutigeKennung;
boolean mediumAusleihenProzess = true;
System.out.println("Geben Sie bitte Ihre kartennummer");
System.out.print(">");
kartennummer = eingabe.nextLine();
while(mediumAusleihenProzess) {
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");
public Tui() {
this.fassade = new BibSystem();
this.eingabe = new Scanner(System.in);
this.mediumsHinzufügen = new MedienHinzufügen(fassade);
try {
System.out.println(fassade.mediumAusleihen(kartennummer, eindutigeKennung));
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
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);
}
System.out.println("<< Willkommen in der Bibliothek >>");
try {
startBibProgramm();
} catch (Exception e) {
System.out.println("Ein unerwarteter Fehler ist aufgetreten: " + e.getMessage());
}
}
}
private void anmeldenProzess() throws FalscheEingabeException, MediumNichtGefundenException, BenutzerNichtAngemeldetException {
String kartennummer;
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");
} catch (BenutzerNichtGefundenException e) {
System.out.println(e.getMessage());
}
startBibProgramm();
}
private void registrierenProzess() throws MediumNichtGefundenException, BenutzerNichtAngemeldetException {
boolean registrierenProzess = true;
String name;
int alter;
String type;
String istAdmin;
private void startBibProgramm() {
boolean programmIstAktiv = true;
while (registrierenProzess) {
System.out.println("Name: ");
System.out.print(">");
name = eingabe.nextLine();
System.out.println("Alter: ");
System.out.print(">");
alter = eingabe.nextInt();
System.out.println("sind Sie Schüler oder Student: Ja/Nein");
System.out.print(">");
type = eingabe.nextLine();
System.out.println("Admin: Ja/Nein");
System.out.print(">");
istAdmin = eingabe.nextLine();
try {
fassade.userRegistrieren(name, type, alter, istAdmin);
registrierenProzess = false;
startBibProgramm();
} catch (FalscheEingabeException e) {
System.out.println(e.getMessage());
continue;
}
while (programmIstAktiv) {
zeigeHauptmenü();
System.out.print("> ");
String aktion = eingabe.nextLine();
}
try {
switch (aktion) {
case "1":
registrierenProzess();
break;
case "2":
anmeldenProzess();
break;
case "3":
mediumDurchsuchenProzess();
break;
case "4":
mediumAusleihenProzess();
break;
case "5":
mediumsRückgabeProzess();
break;
case "6":
zeigeAusgelieheneGegenstände();
break;
case "7":
mediumsVerlängernProzess();
break;
case "8":
verbucheGebührenProzess();
break;
case "0":
programmIstAktiv = false;
System.out.println("Programm beendet.");
break;
default:
System.out.println("Ungültige Eingabe. Bitte wählen Sie eine gültige Option.");
}
} catch (Exception e) {
System.out.println("Fehler: " + e.getMessage());
}
}
}
}
private void zeigeHauptmenü() {
System.out.println("\nHauptmenü:");
System.out.println("1. Registrieren");
System.out.println("2. Anmelden");
System.out.println("3. Medien durchsuchen");
System.out.println("4. Medium ausleihen");
System.out.println("5. Medium zurückgeben");
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("0. Programm beenden");
}
private void registrierenProzess() {
System.out.println("<< Registrierung >>");
System.out.print("Name: ");
String name = eingabe.nextLine();
System.out.print("Alter: ");
int alter = Integer.parseInt(eingabe.nextLine());
System.out.print("Sind Sie Schüler oder Student? (Ja/Nein): ");
String type = eingabe.nextLine();
System.out.print("Sind Sie ein Admin? (Ja/Nein): ");
String istAdmin = eingabe.nextLine();
try {
fassade.userRegistrieren(name, type, alter, istAdmin);
System.out.println("Registrierung erfolgreich!");
} catch (FalscheEingabeException e) {
System.out.println("Fehler: " + e.getMessage());
}
}
private void anmeldenProzess() {
System.out.println("<< Anmeldung >>");
System.out.print("Kartennummer: ");
String kartennummer = eingabe.nextLine();
try {
if (fassade.userAnmdelden(kartennummer)) {
System.out.println("Erfolgreich angemeldet.");
}
} catch (BenutzerNichtGefundenException e) {
System.out.println("Fehler: " + e.getMessage());
}
}
private void mediumDurchsuchenProzess() {
System.out.println("<< Medien durchsuchen >>");
System.out.print("Suchkriterium (z. B. Titel, Medienart): ");
String auswahl = eingabe.nextLine();
System.out.print("BibKartennummer: ");
String bibKartennummer = eingabe.nextLine();
try {
fassade.mediumDurchsuchen(auswahl, bibKartennummer);
} catch (Exception e) {
System.out.println("Fehler: " + e.getMessage());
}
}
private void mediumAusleihenProzess() {
System.out.println("<< Medium ausleihen >>");
System.out.print("Kartennummer: ");
String kartennummer = eingabe.nextLine();
System.out.print("Eindeutige Kennung des Mediums: ");
String eindeutigeKennung = eingabe.nextLine();
try {
System.out.println(fassade.mediumAusleihen(kartennummer, eindeutigeKennung));
} catch (Exception e) {
System.out.println("Fehler: " + e.getMessage());
}
}
private void mediumsRückgabeProzess() {
System.out.println("<< Medium zurückgeben >>");
System.out.print("Eindeutige Kennung des Mediums: ");
String eindeutigeKennung = eingabe.nextLine();
try {
ArrayList<String> ausgelieheneMedien = fassade.medienRückgabe(eindeutigeKennung);
System.out.println("Medium erfolgreich zurückgegeben.");
if (ausgelieheneMedien.isEmpty())
System.out.println("Sie haben keine weiteren ausgeliehenen Medien.");
else {
System.out.println("Ihre verbleibenden ausgeliehenen Medien:");
ausgelieheneMedien.forEach(System.out::println);
}
} catch (Exception e) {
System.out.println("Fehler: " + e.getMessage());
}
}
private void mediumsVerlängernProzess() {
System.out.println("<< Leihfrist verlängern >>");
System.out.print("BibKartennummer: ");
String bibKartennummer = eingabe.nextLine();
System.out.print("Eindeutige Kennung des Mediums: ");
String eindeutigeKennung = eingabe.nextLine();
try {
fassade.medienVerlängern(eindeutigeKennung, bibKartennummer);
System.out.println("Leihfrist erfolgreich verlängert.");
} catch (Exception e) {
System.out.println("Fehler: " + e.getMessage());
}
}
private void zeigeAusgelieheneGegenstände() {
System.out.println("<< Ausgeliehene Gegenstände anzeigen >>");
System.out.print("BibKartennummer: ");
String bibKartennummer = eingabe.nextLine();
try {
// fassade.zeigeAusgelieheneGegenstände(bibKartennummer);
} catch (Exception e) {
System.out.println("Fehler: " + e.getMessage());
}
}
private void verbucheGebührenProzess() {
System.out.println("<< Gebühren verbuchen >>");
System.out.print("BibKartennummer des Nutzers: ");
String bibKartennummer = eingabe.nextLine();
try {
// fassade.verbucheGebühren(bibKartennummer);
System.out.println("Gebühren erfolgreich verbucht.");
} catch (Exception e) {
System.out.println("Fehler: " + e.getMessage());
}
}
}