From b62bed0fb0d8d625476866a10cec5cfd12de61ac Mon Sep 17 00:00:00 2001 From: 3009594 Date: Sat, 16 Nov 2024 18:32:51 +0100 Subject: [PATCH] =?UTF-8?q?MedienHinzuf=C3=BCgen=20Prozess=20&=20code-Verb?= =?UTF-8?q?esserungen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MedienHinzüfugen/MedienHinzufügen.java | 78 ++++ .../domain/AusleiheSystem/AusleiheSystem.java | 7 +- .../src/domain/Medium/Mediumverwalter.java | 2 +- .../src/domain/fassade/BibSystem.java | 46 ++- .../src/main/Main.java | 17 +- Bibliotheksverwaltungssystem/src/tui/Tui.java | 375 ++++++++++-------- 6 files changed, 334 insertions(+), 191 deletions(-) create mode 100644 Bibliotheksverwaltungssystem/src/MedienHinzüfugen/MedienHinzufügen.java diff --git a/Bibliotheksverwaltungssystem/src/MedienHinzüfugen/MedienHinzufügen.java b/Bibliotheksverwaltungssystem/src/MedienHinzüfugen/MedienHinzufügen.java new file mode 100644 index 0000000..a648fd3 --- /dev/null +++ b/Bibliotheksverwaltungssystem/src/MedienHinzüfugen/MedienHinzufügen.java @@ -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()); + } + } +} diff --git a/Bibliotheksverwaltungssystem/src/domain/AusleiheSystem/AusleiheSystem.java b/Bibliotheksverwaltungssystem/src/domain/AusleiheSystem/AusleiheSystem.java index cee25bd..28872cc 100644 --- a/Bibliotheksverwaltungssystem/src/domain/AusleiheSystem/AusleiheSystem.java +++ b/Bibliotheksverwaltungssystem/src/domain/AusleiheSystem/AusleiheSystem.java @@ -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); diff --git a/Bibliotheksverwaltungssystem/src/domain/Medium/Mediumverwalter.java b/Bibliotheksverwaltungssystem/src/domain/Medium/Mediumverwalter.java index 7a52b34..9793c5c 100644 --- a/Bibliotheksverwaltungssystem/src/domain/Medium/Mediumverwalter.java +++ b/Bibliotheksverwaltungssystem/src/domain/Medium/Mediumverwalter.java @@ -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; diff --git a/Bibliotheksverwaltungssystem/src/domain/fassade/BibSystem.java b/Bibliotheksverwaltungssystem/src/domain/fassade/BibSystem.java index 7b79a1a..e818e3d 100644 --- a/Bibliotheksverwaltungssystem/src/domain/fassade/BibSystem.java +++ b/Bibliotheksverwaltungssystem/src/domain/fassade/BibSystem.java @@ -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); } diff --git a/Bibliotheksverwaltungssystem/src/main/Main.java b/Bibliotheksverwaltungssystem/src/main/Main.java index 612952e..1510bc0 100644 --- a/Bibliotheksverwaltungssystem/src/main/Main.java +++ b/Bibliotheksverwaltungssystem/src/main/Main.java @@ -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); } } diff --git a/Bibliotheksverwaltungssystem/src/tui/Tui.java b/Bibliotheksverwaltungssystem/src/tui/Tui.java index 49a18b5..53d8bb3 100644 --- a/Bibliotheksverwaltungssystem/src/tui/Tui.java +++ b/Bibliotheksverwaltungssystem/src/tui/Tui.java @@ -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 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 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()); + } + } } +