From 9b1dd72e8b73d8403a8df8a9e40481159182f75f Mon Sep 17 00:00:00 2001 From: 3009594 Date: Sat, 9 Nov 2024 22:53:10 +0100 Subject: [PATCH] Unfertiges UML Klassendiagramm erstellen Domain- und TUI-Klassen erstellen, vorgehen.txt, Registrierungsprozess implementieren und testen --- .../Design/SystemUml.drawio | 401 ++++++++++++++++++ .../src/domain/Ausleihe.java | 5 + .../src/domain/Ausweis.java | 15 + .../src/domain/Benutzer/Benutzer.java | 76 ++++ .../src/domain/Benutzer/Kunde.java | 11 + .../src/domain/Benutzer/Mitarbeiter.java | 11 + .../src/domain/BibSystem.java | 30 ++ .../FalscheEingabeException.java | 8 + .../src/domain/ExceptionsKlassen/Test.java | 5 - .../src/domain/JTests/RegistrierenTest.java | 33 ++ .../src/domain/JTests/Test.java | 18 - .../src/domain/Medium/Brettspiel.java | 11 + .../src/domain/Medium/Buch.java | 11 + .../src/domain/Medium/Cd.java | 11 + .../src/domain/Medium/Dvd.java | 11 + .../src/domain/Medium/Medium.java | 53 +++ .../src/domain/Medium/Videospiel.java | 11 + .../src/domain/Test.java | 5 - .../src/main/Main.java | 5 +- Bibliotheksverwaltungssystem/src/tui/Tui.java | 71 +++- Bibliotheksverwaltungssystem/vorgehen.txt | 11 + 21 files changed, 782 insertions(+), 31 deletions(-) create mode 100644 Bibliotheksverwaltungssystem/Design/SystemUml.drawio create mode 100644 Bibliotheksverwaltungssystem/src/domain/Ausleihe.java create mode 100644 Bibliotheksverwaltungssystem/src/domain/Ausweis.java create mode 100644 Bibliotheksverwaltungssystem/src/domain/Benutzer/Benutzer.java create mode 100644 Bibliotheksverwaltungssystem/src/domain/Benutzer/Kunde.java create mode 100644 Bibliotheksverwaltungssystem/src/domain/Benutzer/Mitarbeiter.java create mode 100644 Bibliotheksverwaltungssystem/src/domain/BibSystem.java create mode 100644 Bibliotheksverwaltungssystem/src/domain/ExceptionsKlassen/FalscheEingabeException.java delete mode 100644 Bibliotheksverwaltungssystem/src/domain/ExceptionsKlassen/Test.java create mode 100644 Bibliotheksverwaltungssystem/src/domain/JTests/RegistrierenTest.java delete mode 100644 Bibliotheksverwaltungssystem/src/domain/JTests/Test.java create mode 100644 Bibliotheksverwaltungssystem/src/domain/Medium/Brettspiel.java create mode 100644 Bibliotheksverwaltungssystem/src/domain/Medium/Buch.java create mode 100644 Bibliotheksverwaltungssystem/src/domain/Medium/Cd.java create mode 100644 Bibliotheksverwaltungssystem/src/domain/Medium/Dvd.java create mode 100644 Bibliotheksverwaltungssystem/src/domain/Medium/Medium.java create mode 100644 Bibliotheksverwaltungssystem/src/domain/Medium/Videospiel.java delete mode 100644 Bibliotheksverwaltungssystem/src/domain/Test.java diff --git a/Bibliotheksverwaltungssystem/Design/SystemUml.drawio b/Bibliotheksverwaltungssystem/Design/SystemUml.drawio new file mode 100644 index 0000000..05606b7 --- /dev/null +++ b/Bibliotheksverwaltungssystem/Design/SystemUml.drawio @@ -0,0 +1,401 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Bibliotheksverwaltungssystem/src/domain/Ausleihe.java b/Bibliotheksverwaltungssystem/src/domain/Ausleihe.java new file mode 100644 index 0000000..8dd7b33 --- /dev/null +++ b/Bibliotheksverwaltungssystem/src/domain/Ausleihe.java @@ -0,0 +1,5 @@ +package domain; + +public class Ausleihe { + +} diff --git a/Bibliotheksverwaltungssystem/src/domain/Ausweis.java b/Bibliotheksverwaltungssystem/src/domain/Ausweis.java new file mode 100644 index 0000000..e8a6793 --- /dev/null +++ b/Bibliotheksverwaltungssystem/src/domain/Ausweis.java @@ -0,0 +1,15 @@ +package domain; + +public class Ausweis { + private int kartenNummer; + private static int generiereNummer = 1000; + + public Ausweis() { + this.kartenNummer = generiereNummer++; + } + + public int getKartenNummer() { + return kartenNummer; + } + +} diff --git a/Bibliotheksverwaltungssystem/src/domain/Benutzer/Benutzer.java b/Bibliotheksverwaltungssystem/src/domain/Benutzer/Benutzer.java new file mode 100644 index 0000000..8d5b5df --- /dev/null +++ b/Bibliotheksverwaltungssystem/src/domain/Benutzer/Benutzer.java @@ -0,0 +1,76 @@ +package domain.Benutzer; + +import java.util.ArrayList; +import domain.Ausweis; +import domain.Medium.Medium; + +public abstract class Benutzer { + + private Ausweis bibAusweis; + private String name; + private int alter; + private boolean istStudent; + private ArrayList ausgeliehenenMedien; + + public Benutzer(Ausweis bibAusweis, String name, int alter, boolean istStudent) { + super(); + this.bibAusweis = bibAusweis; + this.name = name; + this.alter = alter; + this.istStudent = istStudent; + this.ausgeliehenenMedien = new ArrayList<>(); + } + + public Ausweis getBibAusweis() { + return bibAusweis; + } + + public void setBibAusweis(Ausweis bibAusweis) { + this.bibAusweis = bibAusweis; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getAlter() { + return alter; + } + + public void setAlter(int alter) { + this.alter = alter; + } + + public boolean isIstStudent() { + return istStudent; + } + + public void setIstStudent(boolean istStudent) { + this.istStudent = istStudent; + } + + public ArrayList getAusgeliehenenMedien() { + return ausgeliehenenMedien; + } + + public void addMedium(Medium medium) { + this.ausgeliehenenMedien.add(medium); + } + + public void removeMedium(Medium medium) { + this.ausgeliehenenMedien.remove(medium); + } + + @Override + public String toString() { + return "Benutzer [bibAusweisNummer= " + bibAusweis.getKartenNummer() + ", name=" + name + ", alter=" + alter + ", istStudent=" + + istStudent + ", ausgeliehenenMedien=" + ausgeliehenenMedien + "]"; + } + + +} + diff --git a/Bibliotheksverwaltungssystem/src/domain/Benutzer/Kunde.java b/Bibliotheksverwaltungssystem/src/domain/Benutzer/Kunde.java new file mode 100644 index 0000000..fe63cbe --- /dev/null +++ b/Bibliotheksverwaltungssystem/src/domain/Benutzer/Kunde.java @@ -0,0 +1,11 @@ +package domain.Benutzer; + +import domain.Ausweis; + +public class Kunde extends Benutzer { + + public Kunde(Ausweis bibAusweis, String name, int alter, boolean istStudent) { + super(bibAusweis, name, alter, istStudent); + } + +} diff --git a/Bibliotheksverwaltungssystem/src/domain/Benutzer/Mitarbeiter.java b/Bibliotheksverwaltungssystem/src/domain/Benutzer/Mitarbeiter.java new file mode 100644 index 0000000..e85605d --- /dev/null +++ b/Bibliotheksverwaltungssystem/src/domain/Benutzer/Mitarbeiter.java @@ -0,0 +1,11 @@ +package domain.Benutzer; + +import domain.Ausweis; + +public class Mitarbeiter extends Benutzer { + + public Mitarbeiter(Ausweis bibAusweis, String name, int alter, boolean istStudent) { + super(bibAusweis, name, alter, istStudent); + } + +} diff --git a/Bibliotheksverwaltungssystem/src/domain/BibSystem.java b/Bibliotheksverwaltungssystem/src/domain/BibSystem.java new file mode 100644 index 0000000..a306ca6 --- /dev/null +++ b/Bibliotheksverwaltungssystem/src/domain/BibSystem.java @@ -0,0 +1,30 @@ +package domain; + +import java.util.ArrayList; +import domain.Benutzer.*; +import domain.ExceptionsKlassen.*; + +public class BibSystem { + private ArrayList benutzer; + + public BibSystem() { + this.benutzer = new ArrayList<>(); + } + + public String addUser(String name, String type, int alter,String istAdmin) throws FalscheEingabeException { + if (name.isEmpty() && type.isEmpty() && alter == 0 && istAdmin.isEmpty() ) + throw new FalscheEingabeException("Geben Sie alle Fielder ein"); + + Benutzer benutzer; + Ausweis ausweis = new Ausweis(); + boolean istStudentOderSchüler = (type.equalsIgnoreCase("schüler") || type.equalsIgnoreCase("student"))? true : false; + + if (istAdmin.equalsIgnoreCase("nein")) + benutzer = new Mitarbeiter(ausweis,name,alter,istStudentOderSchüler); + else + benutzer = new Kunde(ausweis,name,alter,istStudentOderSchüler); + + return benutzer.toString(); + + } +} diff --git a/Bibliotheksverwaltungssystem/src/domain/ExceptionsKlassen/FalscheEingabeException.java b/Bibliotheksverwaltungssystem/src/domain/ExceptionsKlassen/FalscheEingabeException.java new file mode 100644 index 0000000..6c0b3cc --- /dev/null +++ b/Bibliotheksverwaltungssystem/src/domain/ExceptionsKlassen/FalscheEingabeException.java @@ -0,0 +1,8 @@ +package domain.ExceptionsKlassen; + +public class FalscheEingabeException extends Exception { + + public FalscheEingabeException(String error){ + super(error); + } +} diff --git a/Bibliotheksverwaltungssystem/src/domain/ExceptionsKlassen/Test.java b/Bibliotheksverwaltungssystem/src/domain/ExceptionsKlassen/Test.java deleted file mode 100644 index 3165998..0000000 --- a/Bibliotheksverwaltungssystem/src/domain/ExceptionsKlassen/Test.java +++ /dev/null @@ -1,5 +0,0 @@ -package domain.ExceptionsKlassen; - -public class Test { - -} diff --git a/Bibliotheksverwaltungssystem/src/domain/JTests/RegistrierenTest.java b/Bibliotheksverwaltungssystem/src/domain/JTests/RegistrierenTest.java new file mode 100644 index 0000000..c0dd213 --- /dev/null +++ b/Bibliotheksverwaltungssystem/src/domain/JTests/RegistrierenTest.java @@ -0,0 +1,33 @@ +package domain.JTests; + +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import domain.Ausweis; +import domain.BibSystem; +import domain.Benutzer.Benutzer; +import domain.Benutzer.Kunde; +import domain.ExceptionsKlassen.FalscheEingabeException; + +class RegistrierenTest { + private BibSystem bib; + + @BeforeEach + void erstelleObjekt() { + this.bib = new BibSystem(); + } + + @Test + void test() throws FalscheEingabeException { + String name = "obai"; + String type = "schüler"; + String istAdmin = "nein"; + String test = bib.addUser(name, type, 15,istAdmin); + + assertTrue(test.contains(name)); + System.out.println(test); + } + +} diff --git a/Bibliotheksverwaltungssystem/src/domain/JTests/Test.java b/Bibliotheksverwaltungssystem/src/domain/JTests/Test.java deleted file mode 100644 index 77bb1dd..0000000 --- a/Bibliotheksverwaltungssystem/src/domain/JTests/Test.java +++ /dev/null @@ -1,18 +0,0 @@ -package domain.JTests; - -import static org.junit.jupiter.api.Assertions.*; - -import org.junit.jupiter.api.BeforeEach; - -class Test { - - @BeforeEach - void setUp() throws Exception { - } - - @org.junit.jupiter.api.Test - void test() { - fail("Not yet implemented"); - } - -} diff --git a/Bibliotheksverwaltungssystem/src/domain/Medium/Brettspiel.java b/Bibliotheksverwaltungssystem/src/domain/Medium/Brettspiel.java new file mode 100644 index 0000000..7295ac4 --- /dev/null +++ b/Bibliotheksverwaltungssystem/src/domain/Medium/Brettspiel.java @@ -0,0 +1,11 @@ +package domain.Medium; + +import java.util.Date; + +public class Brettspiel extends Medium { + + public Brettspiel(int kennungNummer, String title, Date erscheinungsjahr, String autor) { + super(kennungNummer, title, erscheinungsjahr, autor); + } + +} diff --git a/Bibliotheksverwaltungssystem/src/domain/Medium/Buch.java b/Bibliotheksverwaltungssystem/src/domain/Medium/Buch.java new file mode 100644 index 0000000..e1d4358 --- /dev/null +++ b/Bibliotheksverwaltungssystem/src/domain/Medium/Buch.java @@ -0,0 +1,11 @@ +package domain.Medium; + +import java.util.Date; + +public class Buch extends Medium { + + public Buch(int kennungNummer, String title, Date erscheinungsjahr, String autor) { + super(kennungNummer, title, erscheinungsjahr, autor); + } + +} diff --git a/Bibliotheksverwaltungssystem/src/domain/Medium/Cd.java b/Bibliotheksverwaltungssystem/src/domain/Medium/Cd.java new file mode 100644 index 0000000..aa60e3e --- /dev/null +++ b/Bibliotheksverwaltungssystem/src/domain/Medium/Cd.java @@ -0,0 +1,11 @@ +package domain.Medium; + +import java.util.Date; + +public class Cd extends Medium { + + public Cd(int kennungNummer, String title, Date erscheinungsjahr, String autor) { + super(kennungNummer, title, erscheinungsjahr, autor); + } + +} diff --git a/Bibliotheksverwaltungssystem/src/domain/Medium/Dvd.java b/Bibliotheksverwaltungssystem/src/domain/Medium/Dvd.java new file mode 100644 index 0000000..dcad69d --- /dev/null +++ b/Bibliotheksverwaltungssystem/src/domain/Medium/Dvd.java @@ -0,0 +1,11 @@ +package domain.Medium; + +import java.util.Date; + +public class Dvd extends Medium { + + public Dvd(int kennungNummer, String title, Date erscheinungsjahr, String autor) { + super(kennungNummer, title, erscheinungsjahr, autor); + } + +} diff --git a/Bibliotheksverwaltungssystem/src/domain/Medium/Medium.java b/Bibliotheksverwaltungssystem/src/domain/Medium/Medium.java new file mode 100644 index 0000000..2cae1d2 --- /dev/null +++ b/Bibliotheksverwaltungssystem/src/domain/Medium/Medium.java @@ -0,0 +1,53 @@ +package domain.Medium; + +import java.util.Date; + +public abstract class Medium { + + private int KennungNummer; + private String title; + private Date erscheinungsjahr; + private String autor; + + public Medium(int kennungNummer, String title, Date erscheinungsjahr, String autor) { + super(); + KennungNummer = kennungNummer; + this.title = title; + this.erscheinungsjahr = erscheinungsjahr; + this.autor = autor; + } + + public int getKennungNummer() { + return KennungNummer; + } + + public void setKennungNummer(int kennungNummer) { + KennungNummer = kennungNummer; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public Date getErscheinungsjahr() { + return erscheinungsjahr; + } + + public void setErscheinungsjahr(Date erscheinungsjahr) { + this.erscheinungsjahr = erscheinungsjahr; + } + + public String getAutor() { + return autor; + } + + public void setAutor(String autor) { + this.autor = autor; + } + + +} diff --git a/Bibliotheksverwaltungssystem/src/domain/Medium/Videospiel.java b/Bibliotheksverwaltungssystem/src/domain/Medium/Videospiel.java new file mode 100644 index 0000000..95946e5 --- /dev/null +++ b/Bibliotheksverwaltungssystem/src/domain/Medium/Videospiel.java @@ -0,0 +1,11 @@ +package domain.Medium; + +import java.util.Date; + +public class Videospiel extends Medium { + + public Videospiel(int kennungNummer, String title, Date erscheinungsjahr, String autor) { + super(kennungNummer, title, erscheinungsjahr, autor); + } + +} diff --git a/Bibliotheksverwaltungssystem/src/domain/Test.java b/Bibliotheksverwaltungssystem/src/domain/Test.java deleted file mode 100644 index f30e190..0000000 --- a/Bibliotheksverwaltungssystem/src/domain/Test.java +++ /dev/null @@ -1,5 +0,0 @@ -package domain; - -public class Test { - -} diff --git a/Bibliotheksverwaltungssystem/src/main/Main.java b/Bibliotheksverwaltungssystem/src/main/Main.java index f3ec08e..6897873 100644 --- a/Bibliotheksverwaltungssystem/src/main/Main.java +++ b/Bibliotheksverwaltungssystem/src/main/Main.java @@ -1,10 +1,11 @@ package main; +import tui.Tui; + public class Main { public static void main(String[] args) { - // TODO Auto-generated method stub - + new Tui(); } } diff --git a/Bibliotheksverwaltungssystem/src/tui/Tui.java b/Bibliotheksverwaltungssystem/src/tui/Tui.java index f329806..e824aab 100644 --- a/Bibliotheksverwaltungssystem/src/tui/Tui.java +++ b/Bibliotheksverwaltungssystem/src/tui/Tui.java @@ -1,5 +1,74 @@ package tui; -public class Tui { +import java.util.Scanner; +import domain.BibSystem; +import domain.ExceptionsKlassen.FalscheEingabeException; + +public class Tui { + private BibSystem fassade; + private Scanner eingabe = new Scanner(System.in); + + public Tui() { + this.fassade = new BibSystem(); + startBibProgramm(); + } + + private void startBibProgramm() { + 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("3.Medien Durchsuchen"); + System.out.println("4.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("Wählen Sie bitte eine Aktion aus: "); + System.out.print(">"); + aktion = eingabe.nextLine(); + + switch(aktion) { + case "1": + registrierenProzess(); + break; + } + } + + } + + private void registrierenProzess() { + boolean registrierenProzess = true; + String name; + int alter; + String type; + String istAdmin; + + 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.addUser(name, type, alter, istAdmin); + startBibProgramm(); + } catch (FalscheEingabeException e) { + System.out.println(e.getMessage()); + continue; + } + + } + } } diff --git a/Bibliotheksverwaltungssystem/vorgehen.txt b/Bibliotheksverwaltungssystem/vorgehen.txt index e69de29..df71115 100644 --- a/Bibliotheksverwaltungssystem/vorgehen.txt +++ b/Bibliotheksverwaltungssystem/vorgehen.txt @@ -0,0 +1,11 @@ +Anforderungsanalyse: +Für das Bibliotheksverwaltungssystem werde ich zunächst eine gründliche Analyse der Anforderungen durchführen. +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. + +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. +ich werde auch die Beziehungen zwischen den Klassen definieren(z.b Vererbung, Assoziation, etc..) + +