From 45c16f3ae47765aacc4db0a2c4013c0e57b369d4 Mon Sep 17 00:00:00 2001 From: 3009594 Date: Fri, 18 Oct 2024 18:21:02 +0200 Subject: [PATCH] OnlineShop --- Programmierung2/src/OnlineShop/UI/TUI.java | 66 +++++++------- .../src/OnlineShop/domain/Bestellung.java | 86 ++++++++++++++----- .../src/OnlineShop/domain/JTest/JTest.java | 26 ++---- .../src/OnlineShop/domain/Kaufhalle.java | 53 +++++++----- .../src/OnlineShop/domain/Warenkorb.java | 8 +- .../src/OnlineShop/domain/produkte.csv | 7 ++ 6 files changed, 145 insertions(+), 101 deletions(-) create mode 100644 Programmierung2/src/OnlineShop/domain/produkte.csv diff --git a/Programmierung2/src/OnlineShop/UI/TUI.java b/Programmierung2/src/OnlineShop/UI/TUI.java index c583f55..2cbe5e2 100644 --- a/Programmierung2/src/OnlineShop/UI/TUI.java +++ b/Programmierung2/src/OnlineShop/UI/TUI.java @@ -1,17 +1,16 @@ package OnlineShop.UI; import java.io.FileNotFoundException; import java.util.Scanner; - import OnlineShop.domain.*; -import OnlineShop.domain.ExceptionsKlassen.KeineProdukteImWarenkorb; -import OnlineShop.domain.ExceptionsKlassen.LeereEingabeException; -import OnlineShop.domain.ExceptionsKlassen.ProduktNichtGefundenException; +import OnlineShop.domain.ExceptionsKlassen.*; public class TUI { private Kaufhalle kaufhalle; - private Scanner eingabe; + private Scanner eingabe = new Scanner(System.in); + + private String optionAuswahl; public TUI() throws FileNotFoundException, ProduktNichtGefundenException { this.kaufhalle = new Kaufhalle(); @@ -23,17 +22,15 @@ public class TUI { System.out.println(); if (kaufhalle.produkteLaden()) { System.out.println("Meine aktuelle Produkte: "); - + for (String p : kaufhalle.zeigeProdukte()) System.out.println(p); } 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: "); @@ -47,53 +44,52 @@ public class TUI { 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(">"); + System.out.print(">"); String name = eingabe.nextLine(); System.out.println("Geben Sie bitte Ihren Anschrift ein:"); - System.out.println(">"); + System.out.print(">"); String anschrift = eingabe.nextLine(); try { kaufhalle.getKundenDaten(name, anschrift); - kaufhalle.sendBestellung(); + System.out.println(kaufhalle.sendBestellung()); + System.out.println("Betrag bitte eingeben: "); + System.out.print(">"); + double betrag = eingabe.nextDouble(); + if (kaufhalle.getBetrag(betrag)) + kaufhalle.speichereBestellung(); - }catch (LeereEingabeException e) { + + } catch (LeereEingabeException e) { System.out.println(e.getMessage()); } - } - else + } 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"); @@ -111,7 +107,8 @@ public class TUI { } catch (ProduktNichtGefundenException e) { System.out.println(e.getMessage()); } - System.out.println("Anzahl Ihre ausgewählte Produkte: " + kaufhalle.getAnzahlDerAusgewählteProdukte()); + 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(); @@ -121,17 +118,18 @@ public class TUI { 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( + "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(); @@ -141,12 +139,12 @@ public class TUI { 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 index f812843..5b96753 100644 --- a/Programmierung2/src/OnlineShop/domain/Bestellung.java +++ b/Programmierung2/src/OnlineShop/domain/Bestellung.java @@ -1,29 +1,73 @@ package OnlineShop.domain; +import java.sql.Date; +import java.time.LocalDate; 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); + private double kosten; + private int gewicht; + private double versandKosten; + private ArrayList tempProdukt; + private LocalDate date; + public void gesamtKosten(ArrayList produkts) { + tempProdukt = produkts; } + + public double getKosten() { + kosten = 0; + + for (Produkt p : tempProdukt) + kosten += p.getPreis(); + + String formatted = String.format("%.2f", kosten); + formatted = formatted.replace(",", "."); // Ersetzt das Komma durch einen Punkt + double formattedDouble = Double.parseDouble(formatted); + + return formattedDouble; + } + + public int getGewicht() { + gewicht = 0; + for (Produkt p : tempProdukt) + gewicht += p.getGewicht(); + + return gewicht; + } + + public double getVersandKosten() { + versandKosten = 0; + double gewichtInKg = gewicht / 1000.0; + + if (gewichtInKg < 1) + versandKosten += 5; + + else if (gewichtInKg >= 1 && gewichtInKg <= 2.5) + versandKosten += 8; + + else + versandKosten += 10; + + return versandKosten; + } + + public double getGesamtKosten() { + double gesmatKosten = kosten + versandKosten; + String formatted = String.format("%.2f", gesmatKosten); + formatted = formatted.replace(",", "."); // Ersetzt das Komma durch einen Punkt + double formattedDouble = Double.parseDouble(formatted); + + return formattedDouble; + + } + + public LocalDate getDate() { + return date; + } + + public void setDate(LocalDate date) { + this.date = date; + } + } diff --git a/Programmierung2/src/OnlineShop/domain/JTest/JTest.java b/Programmierung2/src/OnlineShop/domain/JTest/JTest.java index 93f9d5c..407a34f 100644 --- a/Programmierung2/src/OnlineShop/domain/JTest/JTest.java +++ b/Programmierung2/src/OnlineShop/domain/JTest/JTest.java @@ -1,14 +1,10 @@ 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; +import org.junit.jupiter.api.*; +import OnlineShop.domain.*; +import OnlineShop.domain.ExceptionsKlassen.*; class JTest { Kaufhalle kaufhalle; @@ -18,25 +14,17 @@ class JTest { } @Test - void test() throws FileNotFoundException, ProduktNichtGefundenException { + void test() throws FileNotFoundException, ProduktNichtGefundenException, LeereEingabeException { - // 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()); + kaufhalle.getKundenDaten("Obai", "Mannheim"); + kaufhalle.sendBestellung(); + - // 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 7ab316b..41caf78 100644 --- a/Programmierung2/src/OnlineShop/domain/Kaufhalle.java +++ b/Programmierung2/src/OnlineShop/domain/Kaufhalle.java @@ -2,20 +2,26 @@ package OnlineShop.domain; import java.io.File; import java.io.FileNotFoundException; +import java.text.SimpleDateFormat; +import java.time.LocalDate; import java.util.*; import OnlineShop.domain.ExceptionsKlassen.*; public class Kaufhalle { private ArrayList produkte; + private ArrayList Bestellungen; private Kunde kunde; + private Bestellung aktuellBestelung; public Kaufhalle() throws FileNotFoundException { this.produkte = new ArrayList<>(); - kunde = new Kunde(); + this.kunde = new Kunde(); + this.Bestellungen = new ArrayList<>(); } + public boolean produkteLaden() throws FileNotFoundException { - Scanner sc = new Scanner( - new File("/home/obai/git/Programmierung2/Programmierung2/src/OnlineShop/produkte.csv")); + Scanner sc = new Scanner(new File( + "C:\\Users\\obaya\\git\\Programmierung2\\Programmierung2\\src\\OnlineShop\\domain\\produkte.csv")); int cnt = 0; while (sc.hasNextLine()) { @@ -37,21 +43,20 @@ 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; @@ -69,31 +74,39 @@ public class Kaufhalle { return null; } - + public int getAnzahlDerAusgewählteProdukte() { return kunde.getWarenKorb().getAnzahlProdkute(); } - - public ArrayList zeigeAlleProdukteImWarenkorb() throws KeineProdukteImWarenkorb{ + + public ArrayList zeigeAlleProdukteImWarenkorb() throws KeineProdukteImWarenkorb { return kunde.getWarenKorb().zeigeProdukteImWarenKorb(); } - + public String sendBestellung() { - return Bestellung.gesamtKosten(kunde.getWarenKorb().getProdukte()); - + aktuellBestelung = new Bestellung(); + aktuellBestelung.gesamtKosten(kunde.getWarenKorb().getProdukte()); + + return "Produkts Ksoten = " + aktuellBestelung.getKosten() + "\n" + "Versand Kosten = " + aktuellBestelung.getVersandKosten() + + "\n" + "GesamtKosten(Produkts Ksoten + Versand Kosten) = " + aktuellBestelung.getGesamtKosten(); + } - - 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 + } else throw new LeereEingabeException("Sie müssen Ihren Name sowie Ihren Anschrift eingeben"); } + + public boolean getBetrag(double betrag) { + return betrag == aktuellBestelung.getGesamtKosten(); + } + + public void speichereBestellung() { + aktuellBestelung.setDate(LocalDate.now()); + Bestellungen.add(aktuellBestelung); + } } diff --git a/Programmierung2/src/OnlineShop/domain/Warenkorb.java b/Programmierung2/src/OnlineShop/domain/Warenkorb.java index d40c912..cc70b95 100644 --- a/Programmierung2/src/OnlineShop/domain/Warenkorb.java +++ b/Programmierung2/src/OnlineShop/domain/Warenkorb.java @@ -53,13 +53,7 @@ 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/domain/produkte.csv b/Programmierung2/src/OnlineShop/domain/produkte.csv new file mode 100644 index 0000000..d0a6c6e --- /dev/null +++ b/Programmierung2/src/OnlineShop/domain/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