diff --git a/Programmierung2/src/OnlineShop/Main.java b/Programmierung2/src/OnlineShop/Main/Main.java similarity index 71% rename from Programmierung2/src/OnlineShop/Main.java rename to Programmierung2/src/OnlineShop/Main/Main.java index 6cbfbb6..293b041 100644 --- a/Programmierung2/src/OnlineShop/Main.java +++ b/Programmierung2/src/OnlineShop/Main/Main.java @@ -1,4 +1,4 @@ -package OnlineShop; +package OnlineShop.Main; import java.io.FileNotFoundException; @@ -7,7 +7,7 @@ import OnlineShop.domain.ExceptionsKlassen.*; public class Main { - public static void main(String[] args) throws FileNotFoundException, ProduktNichtGefundenException, KundeNichtGefundenException { + public static void main(String[] args) throws FileNotFoundException, ProduktNichtGefundenException { new TUI(); } } diff --git a/Programmierung2/src/OnlineShop/UI/TUI.java b/Programmierung2/src/OnlineShop/UI/TUI.java index de4035a..c583f55 100644 --- a/Programmierung2/src/OnlineShop/UI/TUI.java +++ b/Programmierung2/src/OnlineShop/UI/TUI.java @@ -2,41 +2,153 @@ package OnlineShop.UI; import java.io.FileNotFoundException; import java.util.Scanner; -import OnlineShop.domain.Kaufhalle; -import OnlineShop.domain.ExceptionsKlassen.KundeNichtGefundenException; +import OnlineShop.domain.*; +import OnlineShop.domain.ExceptionsKlassen.KeineProdukteImWarenkorb; +import OnlineShop.domain.ExceptionsKlassen.LeereEingabeException; import OnlineShop.domain.ExceptionsKlassen.ProduktNichtGefundenException; public class TUI { - + private Kaufhalle kaufhalle; - - public TUI() throws FileNotFoundException, ProduktNichtGefundenException, KundeNichtGefundenException { + private Scanner eingabe; + + public TUI() throws FileNotFoundException, ProduktNichtGefundenException { 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(); + + private void startProgramm() throws FileNotFoundException, ProduktNichtGefundenException { 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.print(">"); - produktname = eingabe.nextLine(); - kaufhalle.addProduktZuWarenkorb(produktname); - - + System.out.println(); + shwoOptions(); } + private void shwoOptions() throws ProduktNichtGefundenException { + eingabe = new Scanner(System.in); + String optionAuswahl; + boolean programmAktive = true; + while (programmAktive) { + System.out.println("Wählen Sie bitte ein Option aus: "); + System.out.println("1. Produkte auswählen"); + System.out.println("2. Alle Produkte im Warenkorb anzeigen"); + System.out.println("3. Einkauf Beenden!"); + System.out.print("> "); + optionAuswahl = eingabe.nextLine(); + + switch (optionAuswahl) { + case "1": + ProdukteAuwählenUI(); + break; + + case "2": + System.out.println("Anzahl Produkte: " + kaufhalle.getAnzahlDerAusgewählteProdukte()); + try { + for (String p : kaufhalle.zeigeAlleProdukteImWarenkorb()) + System.out.println(p); + + double gesamtKosten = kaufhalle.getGesamtKosten(); + String formattedPreis = String.format("%.2f", gesamtKosten); + System.out.println("Gesamtkosten: " + formattedPreis); + System.out.println("Möchten Sie die ausgewählte Produkte bestellen Ja/Nein"); + System.out.print(">"); + String bestellung = eingabe.nextLine(); + if (bestellung.equalsIgnoreCase("ja")) { + System.out.println("Geben Sie bitte Ihren Name ein:"); + System.out.println(">"); + String name = eingabe.nextLine(); + System.out.println("Geben Sie bitte Ihren Anschrift ein:"); + System.out.println(">"); + String anschrift = eingabe.nextLine(); + try { + kaufhalle.getKundenDaten(name, anschrift); + kaufhalle.sendBestellung(); + + }catch (LeereEingabeException e) { + System.out.println(e.getMessage()); + } + } + else + shwoOptions(); + + + } catch (KeineProdukteImWarenkorb e) { + System.out.println(e.getMessage()); + } + break; + + } + } + + } + + private void ProdukteAuwählenUI() throws ProduktNichtGefundenException { + eingabe = new Scanner(System.in); + boolean einkaufAktive = true; + String weiterEinkaufen; + String optionAuswahl; + while (einkaufAktive) { + System.out.println("Wählen Sie bitte ein Option aus: "); + System.out.println("1. Prpdukte auswählen und zu Ihrem Warenkorb senden"); + System.out.println("2. Prpdukte aus dem Warenkorb löschen"); + System.out.println("3. Zurück zum Hauptmenu"); + System.out.print("> "); + optionAuswahl = eingabe.nextLine(); + switch (optionAuswahl) { + case "1": + while (true) { + System.out.print("Name der Produkt: > "); + String produktName = eingabe.nextLine(); + try { + kaufhalle.addProduktZuWarenkorb(produktName); + } catch (ProduktNichtGefundenException e) { + System.out.println(e.getMessage()); + } + System.out.println("Anzahl Ihre ausgewählte Produkte: " + kaufhalle.getAnzahlDerAusgewählteProdukte()); + System.out.println("Weitere Produkte auswählen Ja/Nein"); + System.out.print(">"); + weiterEinkaufen = eingabe.nextLine(); + if (weiterEinkaufen.equalsIgnoreCase("ja")) + continue; + else + break; + } + break; + + case "2": + while (true) { + System.out.print("Name der Produkt: > "); + String produktName = eingabe.nextLine(); + if (kaufhalle.loescheProduktausWarenkorb(produktName) == true) { + System.out.println("Produkt erfolgreich gelöscht"); + System.out.println("Anzahl Ihre ausgewählte Produkte: " + kaufhalle.getAnzahlDerAusgewählteProdukte()); + }else + System.out.println("Produkt ist nicht in Ihrem Warenkorb"); + + System.out.println("Weiter Produkte aus dem Wrenkorb löschen Ja/Nein"); + System.out.print(">"); + String weitereProdukteLoeschen = eingabe.nextLine(); + if (weitereProdukteLoeschen.equalsIgnoreCase("ja")) + continue; + else + break; + } + break; + + case "3": + System.out.println("Anzahl Ihre ausgewählte Produkte: " + kaufhalle.getAnzahlDerAusgewählteProdukte()); + shwoOptions(); + break; + + } + } + System.out.println("Anzahl Ihre ausgewählte Produkte: " + kaufhalle.getAnzahlDerAusgewählteProdukte()); + } } diff --git a/Programmierung2/src/OnlineShop/domain/Bestellung.java b/Programmierung2/src/OnlineShop/domain/Bestellung.java new file mode 100644 index 0000000..f812843 --- /dev/null +++ b/Programmierung2/src/OnlineShop/domain/Bestellung.java @@ -0,0 +1,29 @@ +package OnlineShop.domain; + +import java.util.ArrayList; + +public class Bestellung { + + public static String gesamtKosten (ArrayList produkts) { + double kosten = 0.0; + int gewicht = 0; + + for (Produkt p : produkts) { + kosten += p.getPreis(); + gewicht += p.getGewicht(); + } + + double gewichtInKg = gewicht / 1000.0; + + if (gewichtInKg < 1) + kosten += 5; + + else if (gewichtInKg >= 1 && gewichtInKg <= 2.5) + kosten += 8; + + else + kosten += 10; + + return String.format("%.2f", kosten); + } +} diff --git a/Programmierung2/src/OnlineShop/domain/ExceptionsKlassen/EmptyInputException.java b/Programmierung2/src/OnlineShop/domain/ExceptionsKlassen/EmptyInputException.java deleted file mode 100644 index 41c8957..0000000 --- a/Programmierung2/src/OnlineShop/domain/ExceptionsKlassen/EmptyInputException.java +++ /dev/null @@ -1,8 +0,0 @@ -package OnlineShop.domain.ExceptionsKlassen; - -public class EmptyInputException extends Exception{ - - public EmptyInputException(String error){ - super(error); - } -} diff --git a/Programmierung2/src/OnlineShop/domain/ExceptionsKlassen/KeineProdukteImWarenkorb.java b/Programmierung2/src/OnlineShop/domain/ExceptionsKlassen/KeineProdukteImWarenkorb.java new file mode 100644 index 0000000..c3ef60c --- /dev/null +++ b/Programmierung2/src/OnlineShop/domain/ExceptionsKlassen/KeineProdukteImWarenkorb.java @@ -0,0 +1,8 @@ +package OnlineShop.domain.ExceptionsKlassen; + +public class KeineProdukteImWarenkorb extends Exception { + + public KeineProdukteImWarenkorb(String error){ + super(error); + } +} diff --git a/Programmierung2/src/OnlineShop/domain/ExceptionsKlassen/KundeNichtGefundenException.java b/Programmierung2/src/OnlineShop/domain/ExceptionsKlassen/KundeNichtGefundenException.java deleted file mode 100644 index 8f005b8..0000000 --- a/Programmierung2/src/OnlineShop/domain/ExceptionsKlassen/KundeNichtGefundenException.java +++ /dev/null @@ -1,8 +0,0 @@ -package OnlineShop.domain.ExceptionsKlassen; - -public class KundeNichtGefundenException extends Exception { - - KundeNichtGefundenException(String error){ - super(error); - } -} diff --git a/Programmierung2/src/OnlineShop/domain/ExceptionsKlassen/LeereEingabeException.java b/Programmierung2/src/OnlineShop/domain/ExceptionsKlassen/LeereEingabeException.java new file mode 100644 index 0000000..ef2b017 --- /dev/null +++ b/Programmierung2/src/OnlineShop/domain/ExceptionsKlassen/LeereEingabeException.java @@ -0,0 +1,9 @@ +package OnlineShop.domain.ExceptionsKlassen; + +public class LeereEingabeException extends Exception { + + public LeereEingabeException (String error){ + super(error); + } + +} diff --git a/Programmierung2/src/OnlineShop/domain/GesamtKostenBerechnen.java b/Programmierung2/src/OnlineShop/domain/GesamtKostenBerechnen.java deleted file mode 100644 index d800bd3..0000000 --- a/Programmierung2/src/OnlineShop/domain/GesamtKostenBerechnen.java +++ /dev/null @@ -1,12 +0,0 @@ -package OnlineShop.domain; - -public class GesamtKostenBerechnen { - - - public static double gesamtKosten (Produkt p) { - double kosten = 0.0; - - - return kosten; - } -} diff --git a/Programmierung2/src/OnlineShop/domain/JTest/JTest.java b/Programmierung2/src/OnlineShop/domain/JTest/JTest.java new file mode 100644 index 0000000..93f9d5c --- /dev/null +++ b/Programmierung2/src/OnlineShop/domain/JTest/JTest.java @@ -0,0 +1,42 @@ +package OnlineShop.domain.JTest; + +import static org.junit.jupiter.api.Assertions.*; + +import java.io.FileNotFoundException; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import OnlineShop.domain.Kaufhalle; +import OnlineShop.domain.ExceptionsKlassen.ProduktNichtGefundenException; + +class JTest { + Kaufhalle kaufhalle; + @BeforeEach + void setUp() throws Exception { + kaufhalle = new Kaufhalle(); + } + + @Test + void test() throws FileNotFoundException, ProduktNichtGefundenException { + + // Produkte Werden Geladen => Status: True + assertTrue(kaufhalle.produkteLaden()); + + // Hut Produkt befindet sich im Warenkorb des Kundes => Status: True + assertTrue(kaufhalle.addProduktZuWarenkorb("Hut")); + + // Genau ein Produkt ist momentane im Warenkorb => Status: True + assertEquals(1,kaufhalle.getAnzahlDerAusgewählteProdukte()); + + // Gieskanne Produkt befindet sich im Warenkorb des Kundes => Status: True + assertTrue(kaufhalle.addProduktZuWarenkorb("Gieskanne")); + + // Genau zwei Produkte ist momentane im Warenkorb => Status: True + assertEquals(2,kaufhalle.getAnzahlDerAusgewählteProdukte()); + + // status True + assertTrue(kaufhalle.sendBestellung().equals("30,97")); + } + +} diff --git a/Programmierung2/src/OnlineShop/domain/Kaufhalle.java b/Programmierung2/src/OnlineShop/domain/Kaufhalle.java index 662a0a3..7ab316b 100644 --- a/Programmierung2/src/OnlineShop/domain/Kaufhalle.java +++ b/Programmierung2/src/OnlineShop/domain/Kaufhalle.java @@ -7,34 +7,15 @@ import OnlineShop.domain.ExceptionsKlassen.*; public class Kaufhalle { private ArrayList produkte; - private ArrayList kunden; + private Kunde kunde; public Kaufhalle() throws FileNotFoundException { this.produkte = new ArrayList<>(); - this.kunden = new ArrayList<>(); + kunde = new Kunde(); } - - 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")); + new File("/home/obai/git/Programmierung2/Programmierung2/src/OnlineShop/produkte.csv")); int cnt = 0; while (sc.hasNextLine()) { @@ -56,7 +37,21 @@ public class Kaufhalle { sc.close(); return true; } + + public boolean addProduktZuWarenkorb(String Produktname) throws ProduktNichtGefundenException { + Produkt neueProdukt = findeProduktImKaufhalle(Produktname); + if (neueProdukt == null) + throw new ProduktNichtGefundenException("Produkt ist nicht Verfügbar!"); + + kunde.getWarenKorb().addProdukt(neueProdukt); + return true; + } + + public boolean loescheProduktausWarenkorb(String Produktname) { + return kunde.getWarenKorb().loescheprodukt(Produktname); + } + public ArrayList zeigeProdukte() { ArrayList allProdukte = new ArrayList<>(); int index = 1; @@ -75,7 +70,30 @@ public class Kaufhalle { return null; } + public int getAnzahlDerAusgewählteProdukte() { + return kunde.getWarenKorb().getAnzahlProdkute(); + } + public ArrayList zeigeAlleProdukteImWarenkorb() throws KeineProdukteImWarenkorb{ + return kunde.getWarenKorb().zeigeProdukteImWarenKorb(); + } - + public String sendBestellung() { + return Bestellung.gesamtKosten(kunde.getWarenKorb().getProdukte()); + + } + + public double getGesamtKosten() { + return kunde.getWarenKorb().getGesamtKsoten(); + } + + public void getKundenDaten(String name, String anschrift) throws LeereEingabeException { + if (!name.isEmpty() && !name.isEmpty()) { + kunde.setName(name); + kunde.setAnschrift(anschrift); + return; + } + else + throw new LeereEingabeException("Sie müssen Ihren Name sowie Ihren Anschrift eingeben"); + } } diff --git a/Programmierung2/src/OnlineShop/domain/Kunde.java b/Programmierung2/src/OnlineShop/domain/Kunde.java index 101f7d1..142d0cd 100644 --- a/Programmierung2/src/OnlineShop/domain/Kunde.java +++ b/Programmierung2/src/OnlineShop/domain/Kunde.java @@ -6,13 +6,11 @@ public class Kunde { 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(); } @@ -41,10 +39,6 @@ public class Kunde { return warenKorb; } - public int getID() { - return ID; - } - public double getProduktKosten() { return produktKosten; } diff --git a/Programmierung2/src/OnlineShop/domain/Produkt.java b/Programmierung2/src/OnlineShop/domain/Produkt.java index b11c53d..b65b18b 100644 --- a/Programmierung2/src/OnlineShop/domain/Produkt.java +++ b/Programmierung2/src/OnlineShop/domain/Produkt.java @@ -38,8 +38,8 @@ public class Produkt { public String print() { - return "name=" + name + ", beschreibung=" + beschreibung + ", preis=" + preis + ", gewicht=" + gewicht - + ", bestand=" + bestand; + return String.format("name=%s, beschreibung=%s, preis=%.2f, gewicht=%d, bestand=%d", + name, beschreibung, preis, gewicht, bestand); } } \ No newline at end of file diff --git a/Programmierung2/src/OnlineShop/domain/Warenkorb.java b/Programmierung2/src/OnlineShop/domain/Warenkorb.java index e906657..d40c912 100644 --- a/Programmierung2/src/OnlineShop/domain/Warenkorb.java +++ b/Programmierung2/src/OnlineShop/domain/Warenkorb.java @@ -2,6 +2,8 @@ package OnlineShop.domain; import java.util.ArrayList; +import OnlineShop.domain.ExceptionsKlassen.KeineProdukteImWarenkorb; + public class Warenkorb { private ArrayList produkte; private int anzahlProdkute; @@ -10,8 +12,7 @@ public class Warenkorb { produkte = new ArrayList<>(); } - public boolean addProdukt(Produkt neueProdukt) { - + public boolean addProdukt(Produkt neueProdukt) { produkte.add(neueProdukt); anzahlProdkute++; return true; @@ -22,6 +23,7 @@ public class Warenkorb { if (produktZuLoeschen == null) return false; + produkte.remove(produktZuLoeschen); anzahlProdkute--; return true; } @@ -35,10 +37,14 @@ public class Warenkorb { return null; } - public ArrayList zeigeProdukteImWarenKorb() { + public ArrayList zeigeProdukteImWarenKorb() throws KeineProdukteImWarenkorb { + if (produkte.size() == 0) + throw new KeineProdukteImWarenkorb("Momentan haben Sie Keine Produkte in Ihrem Warenkorb"); + ArrayList allProdukte = new ArrayList<>(); + int index = 1; for (Produkt p : produkte) - allProdukte.add(anzahlProdkute + ".Produkt: " + p.print() + "\n"); + allProdukte.add(index++ + ".Produkt: " + p.print()); return allProdukte; } @@ -47,5 +53,17 @@ public class Warenkorb { return anzahlProdkute; } + public double getGesamtKsoten() { + double gesamtKosten = 0.0; + for (Produkt p : produkte) + gesamtKosten += p.getPreis(); + + return gesamtKosten; + } + + public ArrayList getProdukte(){ + return produkte; + } + } diff --git a/Programmierung2/src/OnlineShop/produkte.csv b/Programmierung2/src/OnlineShop/produkte.csv new file mode 100644 index 0000000..a3a74dd --- /dev/null +++ b/Programmierung2/src/OnlineShop/produkte.csv @@ -0,0 +1,7 @@ +Name;Beschreibung;Preis;Gewicht;Bestand +Gieskanne;Premium Gärtner-Gieskanne;3,99;250,00;17,00 +Hut;Perfekt für die Hutablage;21,98;120,00;123,00 +Dosenwurst;LWWRSCHT: das Pfälzer Original, nur kurz im Angebot;3,99;200,00;7,00 +Gartenschlauch;10 m, dehnbar bis auf die doppelte Länge;18,99;1300,00;23,00 +Schraubenset;100 zufällig ausgewählte Schrauben;2,99;287,00;99,00 +Akkuschrauber;Mit extra großem Drehmoment;25,00;900,00;13,00 \ No newline at end of file