From 18d20817b4ab76e23c25f74fe7abd5d5576fcfbc Mon Sep 17 00:00:00 2001 From: 3009594 Date: Thu, 17 Oct 2024 23:49:57 +0200 Subject: [PATCH] Klassen der Domain --- .gitignore | 1 + OnlineShop2024/src/Main.java | 13 +++ .../informatik/rhenus/domain/Bestellung.java | 5 - .../EmptyInputException.java | 8 ++ .../KundeNichtGefundenException.java | 8 ++ .../ProduktNichtGefundenException.java | 8 ++ .../rhenus/domain/GesamtKostenBerechnen.java | 12 +++ .../rhenus/domain/JTests/WarenkorbTest.java | 25 +++++ .../informatik/rhenus/domain/Kaufhalle.java | 81 ++++++++++++++ .../informatik/rhenus/domain/Kunde.java | 51 +++++++++ .../informatik/rhenus/domain/OnlineShop.java | 54 ---------- .../informatik/rhenus/domain/Produkt.java | 16 +-- .../informatik/rhenus/domain/Warenkorb.java | 48 ++++++++- .../rhenus/domain/Warenkorbeintrag.java | 6 -- .../informatik/rhenus/tui/TUI.java | 100 +++++------------- 15 files changed, 289 insertions(+), 147 deletions(-) create mode 100644 .gitignore create mode 100644 OnlineShop2024/src/Main.java delete mode 100644 OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/Bestellung.java create mode 100644 OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/ExceptionsKlassen/EmptyInputException.java create mode 100644 OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/ExceptionsKlassen/KundeNichtGefundenException.java create mode 100644 OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/ExceptionsKlassen/ProduktNichtGefundenException.java create mode 100644 OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/GesamtKostenBerechnen.java create mode 100644 OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/JTests/WarenkorbTest.java create mode 100644 OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/Kaufhalle.java delete mode 100644 OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/OnlineShop.java delete mode 100644 OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/Warenkorbeintrag.java diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ae3c172 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/OnlineShop2024/src/Main.java b/OnlineShop2024/src/Main.java new file mode 100644 index 0000000..fba96a5 --- /dev/null +++ b/OnlineShop2024/src/Main.java @@ -0,0 +1,13 @@ +import java.io.FileNotFoundException; + +import de.hs_mannheim.informatik.rhenus.domain.ExceptionsKlassen.KundeNichtGefundenException; +import de.hs_mannheim.informatik.rhenus.domain.ExceptionsKlassen.ProduktNichtGefundenException; +import de.hs_mannheim.informatik.rhenus.tui.TUI; + +public class Main { + + public static void main(String[] args) throws FileNotFoundException, ProduktNichtGefundenException, KundeNichtGefundenException { + new TUI(); + } + +} diff --git a/OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/Bestellung.java b/OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/Bestellung.java deleted file mode 100644 index 6517598..0000000 --- a/OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/Bestellung.java +++ /dev/null @@ -1,5 +0,0 @@ -package de.hs_mannheim.informatik.rhenus.domain; - -public class Bestellung { - -} diff --git a/OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/ExceptionsKlassen/EmptyInputException.java b/OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/ExceptionsKlassen/EmptyInputException.java new file mode 100644 index 0000000..f887bbf --- /dev/null +++ b/OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/ExceptionsKlassen/EmptyInputException.java @@ -0,0 +1,8 @@ +package de.hs_mannheim.informatik.rhenus.domain.ExceptionsKlassen; + +public class EmptyInputException extends Exception{ + + public EmptyInputException(String error){ + super(error); + } +} diff --git a/OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/ExceptionsKlassen/KundeNichtGefundenException.java b/OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/ExceptionsKlassen/KundeNichtGefundenException.java new file mode 100644 index 0000000..c2fbc58 --- /dev/null +++ b/OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/ExceptionsKlassen/KundeNichtGefundenException.java @@ -0,0 +1,8 @@ +package de.hs_mannheim.informatik.rhenus.domain.ExceptionsKlassen; + +public class KundeNichtGefundenException extends Exception { + + KundeNichtGefundenException(String error){ + super(error); + } +} diff --git a/OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/ExceptionsKlassen/ProduktNichtGefundenException.java b/OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/ExceptionsKlassen/ProduktNichtGefundenException.java new file mode 100644 index 0000000..7c9e297 --- /dev/null +++ b/OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/ExceptionsKlassen/ProduktNichtGefundenException.java @@ -0,0 +1,8 @@ +package de.hs_mannheim.informatik.rhenus.domain.ExceptionsKlassen; + +public class ProduktNichtGefundenException extends Exception { + + public ProduktNichtGefundenException(String error){ + super(error); + } +} diff --git a/OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/GesamtKostenBerechnen.java b/OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/GesamtKostenBerechnen.java new file mode 100644 index 0000000..be11081 --- /dev/null +++ b/OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/GesamtKostenBerechnen.java @@ -0,0 +1,12 @@ +package de.hs_mannheim.informatik.rhenus.domain; + +public class GesamtKostenBerechnen { + + + public static double gesamtKosten (Produkt p) { + double kosten = 0.0; + + + return kosten; + } +} diff --git a/OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/JTests/WarenkorbTest.java b/OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/JTests/WarenkorbTest.java new file mode 100644 index 0000000..c5bbe4e --- /dev/null +++ b/OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/JTests/WarenkorbTest.java @@ -0,0 +1,25 @@ +package de.hs_mannheim.informatik.rhenus.domain.JTests; + +import static org.junit.jupiter.api.Assertions.*; +import java.io.FileNotFoundException; +import org.junit.jupiter.api.*; +import de.hs_mannheim.informatik.rhenus.domain.*; + +class WarenkorbTest { + + + @Test + void test() throws FileNotFoundException { + Kaufhalle kaufhalle = new Kaufhalle(); + + assertTrue(kaufhalle.produkteLaden()); + + + /* + * 1.Produkt: name=Gieskanne, beschreibung=Premium Gärtner-Gieskanne, preis=3.99, gewicht=250, bestand=17 + 2.Produkt: name=Hut, beschreibung=Perfekt für die Hutablage, preis=21.98, gewicht=120, bestand=123 + */ + + } + +} diff --git a/OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/Kaufhalle.java b/OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/Kaufhalle.java new file mode 100644 index 0000000..df62dd1 --- /dev/null +++ b/OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/Kaufhalle.java @@ -0,0 +1,81 @@ +package de.hs_mannheim.informatik.rhenus.domain; + +import java.io.File; +import java.io.FileNotFoundException; +import java.util.*; +import de.hs_mannheim.informatik.rhenus.domain.ExceptionsKlassen.*; + +public class Kaufhalle { + private ArrayList produkte; + private ArrayList kunden; + + public Kaufhalle() throws FileNotFoundException { + this.produkte = new ArrayList<>(); + this.kunden = new ArrayList<>(); + } + + public void addProduktZuWarenkorb(String Produktname) throws ProduktNichtGefundenException, KundeNichtGefundenException { + Produkt neueProdukt = findeProduktImKaufhalle(Produktname); + if (neueProdukt == null) + throw new ProduktNichtGefundenException("Produkt ist nicht Verfügbar!"); + + + } + + private Kunde findKunde(String kundeName) { + for (Kunde kunde : kunden) + if (kunde.getName().equalsIgnoreCase(kundeName)) + return kunde; + + return null; + } + + + + public boolean produkteLaden() throws FileNotFoundException { + Scanner sc = new Scanner( + new File("C:\\Users\\obaya\\git\\OnlineShop2024\\OnlineShop2024\\resources\\produkte.csv")); + + int cnt = 0; + while (sc.hasNextLine()) { + String produkt = sc.nextLine(); + + if (produkt.startsWith("Name")) + continue; + + String[] spalten = produkt.split(";"); + spalten[2] = spalten[2].replaceAll(",", "."); + spalten[3] = spalten[3].substring(0, spalten[3].indexOf(",")); + spalten[4] = spalten[4].substring(0, spalten[4].indexOf(",")); + + produkte.add(new Produkt(spalten[0], spalten[1], Float.parseFloat(spalten[2]), Integer.parseInt(spalten[3]), + Integer.parseInt(spalten[4]))); + cnt++; + } + + sc.close(); + return true; + } + + public ArrayList zeigeProdukte() { + ArrayList allProdukte = new ArrayList<>(); + int index = 1; + for (Produkt p : produkte) + allProdukte.add(index++ + ".Produkt: " + p.print()); + + return allProdukte; + } + + private Produkt findeProduktImKaufhalle(String name) { + + for (Produkt p : produkte) + if (p.getName().equalsIgnoreCase(name)) + return p; + + return null; + } + + + + +} diff --git a/OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/Kunde.java b/OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/Kunde.java index ebeda4a..c345ea1 100644 --- a/OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/Kunde.java +++ b/OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/Kunde.java @@ -1,5 +1,56 @@ package de.hs_mannheim.informatik.rhenus.domain; public class Kunde { + + private String name; + private String anschrift; + private Warenkorb warenKorb; + private double produktKosten; + private static int UserID = 100; + private int ID; + + public Kunde(String name, String anschrift) { + this.name = name; + this.anschrift = anschrift; + this.ID = UserID++; + this.produktKosten = 0.0; + this.warenKorb = new Warenkorb(); + } + + public Kunde() { + this(null,null); + } + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getAnschrift() { + return anschrift; + } + + public void setAnschrift(String anschrift) { + this.anschrift = anschrift; + } + + public Warenkorb getWarenKorb() { + return warenKorb; + } + + public int getID() { + return ID; + } + + public double getProduktKosten() { + return produktKosten; + } + + public void setProduktKosten(double produktKosten) { + this.produktKosten = produktKosten; + } + } diff --git a/OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/OnlineShop.java b/OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/OnlineShop.java deleted file mode 100644 index 2e7b5bd..0000000 --- a/OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/OnlineShop.java +++ /dev/null @@ -1,54 +0,0 @@ -package de.hs_mannheim.informatik.rhenus.domain; - -import java.io.File; -import java.io.FileNotFoundException; -import java.util.ArrayList; -import java.util.Scanner; - -public class OnlineShop { - private ArrayList lager; - - public OnlineShop() throws FileNotFoundException { - lager = new ArrayList<>(); - - produkteLaden(); - } - - private void produkteLaden() throws FileNotFoundException { - Scanner sc = new Scanner(new File("resources/produkte.csv")); - - int cnt = 0; - while (sc.hasNextLine()) { - String produkt = sc.nextLine(); - - if (produkt.startsWith("Name")) - continue; - - String[] spalten = produkt.split(";"); - spalten[2] = spalten[2].replaceAll(",", "."); - spalten[3] = spalten[3].substring(0, spalten[3].indexOf(",")); - spalten[4] = spalten[4].substring(0, spalten[4].indexOf(",")); - - lager.add(new Produkt(spalten[0], spalten[1], Float.parseFloat(spalten[2]), Integer.parseInt(spalten[3]), Integer.parseInt(spalten[4]))); - cnt++; - } // while - - System.out.println(cnt + " Produkte geladen."); - - sc.close(); - } - - public Produkt[] findeProdukte(String suchbegriff) { - ArrayList trefferliste = new ArrayList<>(); - - if (suchbegriff.equals("alle")) - trefferliste = lager; - else - for (Produkt p : lager) { - if (p.getName().contains(suchbegriff) || p.getBeschreibung().contains(suchbegriff)) - trefferliste.add(p); - } - - return trefferliste.toArray(new Produkt[0]); - } -} diff --git a/OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/Produkt.java b/OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/Produkt.java index da70220..1120172 100644 --- a/OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/Produkt.java +++ b/OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/Produkt.java @@ -3,12 +3,12 @@ package de.hs_mannheim.informatik.rhenus.domain; public class Produkt { private String name; private String beschreibung; - private float preis; + private double preis; private int gewicht; private int bestand; - public Produkt(String name, String beschreibung, float preis, int gewicht, int bestand) { - super(); + public Produkt(String name, String beschreibung, double preis, int gewicht, int bestand) { + this.name = name; this.beschreibung = beschreibung; this.preis = preis; @@ -24,7 +24,7 @@ public class Produkt { return beschreibung; } - public float getPreis() { + public double getPreis() { return preis; } @@ -36,10 +36,10 @@ public class Produkt { return bestand; } - @Override - public String toString() { - return "Produkt [name=" + name + ", beschreibung=" + beschreibung + ", preis=" + preis + ", gewicht=" + gewicht - + ", bestand=" + bestand + "]"; + + public String print() { + return "name=" + name + ", beschreibung=" + beschreibung + ", preis=" + preis + ", gewicht=" + gewicht + + ", bestand=" + bestand; } } \ No newline at end of file diff --git a/OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/Warenkorb.java b/OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/Warenkorb.java index 83ad3b1..9e14708 100644 --- a/OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/Warenkorb.java +++ b/OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/Warenkorb.java @@ -1,5 +1,51 @@ package de.hs_mannheim.informatik.rhenus.domain; -public class Warenkorb { +import java.util.ArrayList; +public class Warenkorb { + private ArrayList produkte; + private int anzahlProdkute; + + Warenkorb() { + produkte = new ArrayList<>(); + } + + public boolean addProdukt(Produkt neueProdukt) { + + produkte.add(neueProdukt); + anzahlProdkute++; + return true; + } + + public boolean loescheprodukt(String name) { + Produkt produktZuLoeschen = findeProduktImWarenkorb(name); + if (produktZuLoeschen == null) + return false; + + anzahlProdkute--; + return true; + } + + private Produkt findeProduktImWarenkorb(String name) { + + for (Produkt p : produkte) + if (p.getName().equalsIgnoreCase(name)) + return p; + + return null; + } + + public ArrayList zeigeProdukteImWarenKorb() { + ArrayList allProdukte = new ArrayList<>(); + for (Produkt p : produkte) + allProdukte.add(anzahlProdkute + ".Produkt: " + p.print() + "\n"); + + return allProdukte; + } + + public int getAnzahlProdkute() { + return anzahlProdkute; + } + + } diff --git a/OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/Warenkorbeintrag.java b/OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/Warenkorbeintrag.java deleted file mode 100644 index ccf7e39..0000000 --- a/OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/domain/Warenkorbeintrag.java +++ /dev/null @@ -1,6 +0,0 @@ -package de.hs_mannheim.informatik.rhenus.domain; - -public class Warenkorbeintrag { - private Produkt produkt; - private int anzahl; -} diff --git a/OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/tui/TUI.java b/OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/tui/TUI.java index b508032..6015f8e 100644 --- a/OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/tui/TUI.java +++ b/OnlineShop2024/src/de/hs_mannheim/informatik/rhenus/tui/TUI.java @@ -1,87 +1,41 @@ package de.hs_mannheim.informatik.rhenus.tui; - import java.io.FileNotFoundException; import java.util.Scanner; -import de.hs_mannheim.informatik.rhenus.domain.OnlineShop; -import de.hs_mannheim.informatik.rhenus.domain.Produkt; +import de.hs_mannheim.informatik.rhenus.domain.Kaufhalle; +import de.hs_mannheim.informatik.rhenus.domain.ExceptionsKlassen.KundeNichtGefundenException; +import de.hs_mannheim.informatik.rhenus.domain.ExceptionsKlassen.ProduktNichtGefundenException; public class TUI { - private OnlineShop shop; - private Scanner kb; - - public static void main(String[] args) { - - try { - new TUI(); - } catch (FileNotFoundException e) { - System.err.println("Produktpalette konnte nicht geladen werden."); - System.out.println("Auf Wiedersehen!"); + + private Kaufhalle kaufhalle; + + public TUI() throws FileNotFoundException, ProduktNichtGefundenException, KundeNichtGefundenException { + this.kaufhalle = new Kaufhalle(); + startProgramm(); + } + + + + private void startProgramm() throws FileNotFoundException, ProduktNichtGefundenException, KundeNichtGefundenException { + Scanner eingabe = new Scanner(System.in); + String produktname; + String anschrift; + System.out.println(); + System.out.println("<< Willkommen in meinem Online Shop >>"); + System.out.println(); + if (kaufhalle.produkteLaden()) { + System.out.println("Meine aktuelle Produkte: "); + for (String p : kaufhalle.zeigeProdukte()) + System.out.println(p); } - - System.out.println("Danke für Ihren Einkauf! - Auf Wiedersehen!"); - } - - public TUI() throws FileNotFoundException { - kb = new Scanner(System.in); - shop = new OnlineShop(); - this.willkommen(); - } - - private void willkommen() { - System.out.println("Willkommen bei Rhenus, dem Mannheimer Online-Baumarkt!"); - System.out.println(); - - String eingabe = ""; - do { - System.out.println("Produktsuche ('alle' für eine Übersicht; 'exit' für Beenden). "); - System.out.print("> "); - eingabe = kb.nextLine(); - - Produkt[] trefferliste = shop.findeProdukte(eingabe); - - if (trefferliste.length == 0) - System.out.println("Keine Treffer für: " + eingabe); - else - trefferlisteAusgeben(trefferliste); - - System.out.println("0 = zurück zur Suche; Zahl des Produkt für Details."); - System.out.print("> "); - eingabe = kb.nextLine(); - - try { - int zahl = Integer.parseInt(eingabe); - - if (zahl > 0 && zahl < trefferliste.length) - produktDetailsAnzeigen(trefferliste[zahl-1]); - } catch(NumberFormatException nfe) { - System.err.println("Inkorrekte Eingabe!"); - } - - } while(!eingabe.toLowerCase().equals("exit")); - } - private void trefferlisteAusgeben(Produkt[] trefferliste) { - for (int i = 0; i < trefferliste.length; i++) - System.out.printf("%2d) %s %5.2f Euro%n", i+1, trefferliste[i].getName(), trefferliste[i].getPreis()); + System.out.print(">"); + produktname = eingabe.nextLine(); + kaufhalle.addProduktZuWarenkorb(produktname); - System.out.println(); - } - - private void produktDetailsAnzeigen(Produkt p) { - System.out.printf("%s für nur %5.2f%n", p.getName(), p.getPreis()); - System.out.println(p.getBeschreibung()); - System.out.println("Produktgewicht: " + p.getGewicht() + " g"); - if (p.getBestand() > 10) - System.out.println("mehr als 10 Stück auf Lager"); - else if (p.getBestand() > 0) - System.out.println("nur noch " + p.getBestand() + " Stück auf Lager"); - else - System.out.println("leider gerade ausverkauft"); - - System.out.println(); } }