diff --git a/Bestellung.java b/Bestellung.java index 3d4f4da..e6cc4b2 100644 --- a/Bestellung.java +++ b/Bestellung.java @@ -1,14 +1,43 @@ +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + public class Bestellung { private Warenkorb warenkorb; private float versandkosten; + private LocalDateTime bestellDatum; public Bestellung(Warenkorb warenkorb, float versandkosten) { + if (warenkorb == null) { + throw new IllegalArgumentException("Warenkorb darf nicht null sein."); + } + if (versandkosten < 0) { + throw new IllegalArgumentException("Versandkosten dürfen nicht negativ sein."); + } this.warenkorb = warenkorb; this.versandkosten = versandkosten; + this.bestellDatum = LocalDateTime.now(); // Bestelldatum setzen + } + + public Warenkorb getWarenkorb() { + return warenkorb; + } + + public float getVersandkosten() { + return versandkosten; + } + + public LocalDateTime getBestellDatum() { + return bestellDatum; + } + + public float berechneGesamtpreis() { + return warenkorb.berechneGesamtPreis() + versandkosten; } @Override public String toString() { - return "Bestellung:\n" + warenkorb + "\nVersandkosten: " + versandkosten + " Euro\n"; + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm:ss"); + return String.format("Bestellung am %s:\n%sVersandkosten: %.2f Euro\nGesamtpreis: %.2f Euro", + bestellDatum.format(formatter), warenkorb.toString(), versandkosten, berechneGesamtpreis()); } } diff --git a/Kunden.java b/Kunden.java index c8f4da7..7be2cce 100644 --- a/Kunden.java +++ b/Kunden.java @@ -7,8 +7,11 @@ public class Kunden { this.adresse = adresse; } - @Override - public String toString() { - return "Name: " + name + ", Adresse: " + adresse; + public String getName() { + return name; + } + + public String getAdresse() { + return adresse; } } diff --git a/Main.java b/Main.java index 610a82b..24ee407 100644 --- a/Main.java +++ b/Main.java @@ -3,6 +3,7 @@ import java.util.List; import java.util.Scanner; public class Main { + static String adresse; static Warenkorb warenkorb = new Warenkorb(); static List bestellungen = new ArrayList<>(); @@ -45,30 +46,64 @@ public class Main { break; } - // Benutzer fragen, ob er weiter einkaufen möchte - System.out.println("Möchten Sie weiter einkaufen? (1 für Ja, 0 für Nein)"); - einkaufFortsetzen = scanner.nextInt() == 1; + // Optionen für den Benutzer nach dem Hinzufügen anzeigen + boolean optionenAnzeigen = true; + while (optionenAnzeigen) { + // Warenkorb anzeigen + warenkorb.printWarenkorb(); + + System.out.println("Was möchten Sie tun?"); + System.out.println("1. Produkt ändern"); + System.out.println("2. Produkt entfernen"); + System.out.println("3. Weiter einkaufen"); + System.out.println("4. Bestellung aufgeben"); + + int option = scanner.nextInt(); + switch (option) { + case 1: // Produkt ändern + System.out.println("Geben Sie die ID des Produkts ein, das Sie ändern möchten:"); + int produktId = scanner.nextInt(); + System.out.println("Geben Sie die neue Anzahl ein:"); + int neueAnzahl = scanner.nextInt(); + warenkorb.produktAendern(produktId, neueAnzahl); + break; + case 2: // Produkt entfernen + System.out.println("Geben Sie die ID des Produkts ein, das Sie entfernen möchten:"); + int removeId = scanner.nextInt(); + warenkorb.produktAendern(removeId, 0); // Wenn die neue Anzahl 0 ist, wird das Produkt entfernt. + System.out.println("vielen dank das prudukt wurde entfernt"); + optionenAnzeigen = false; + break; + + case 3: // Weiter einkaufen + optionenAnzeigen = false; // Schleife beenden, um wieder Produkte hinzuzufügen + break; + case 4: // Bestellung aufgeben + kundenkauf(); + Bestellung bestellung = new Bestellung(warenkorb, warenkorb.berechneVersandkosten()); + bestellungen.add(bestellung); + System.out.println("Ihre Bestellung wurde gespeichert:\n"); + System.out.println(bestellung); + System.out.println("Ihre Packet wird an Ihre die Adresse "+adresse+" zugeschickt\n"); + System.out.println("sie können jetzt weiter kaufen"); + optionenAnzeigen = false; // Schleife beenden, da Bestellung abgeschlossen ist + break; + default: + System.out.println("Ungültige Auswahl. Bitte wählen Sie erneut."); + break; + } + } + + } - // Warenkorb anzeigen und Gesamtkosten berechnen - warenkorb.printWarenkorb(); - - // Kundendaten eingeben - kundenkauf(); - - // Bestellung abschließen und speichern - Bestellung bestellung = new Bestellung(warenkorb, warenkorb.berechneVersandkosten()); - bestellungen.add(bestellung); - - // Bestellungen anzeigen - System.out.println("Ihre Bestellung wurde gespeichert:"); - System.out.println(bestellung); - // Alle Bestellungen anzeigen System.out.println("Alle Bestellungen:"); for (Bestellung b : bestellungen) { System.out.println(b); } + + scanner.close(); } // Methode zur Eingabe von Kundendaten @@ -77,12 +112,12 @@ public class Main { System.out.println("Geben Sie Ihre Daten ein:"); System.out.print("Name: "); - String name = kundeinfo.nextLine(); + String name = kundeinfo.nextLine(); System.out.print("Adresse: "); - String adresse = kundeinfo.nextLine(); + adresse = kundeinfo.nextLine(); - // Setzen des Kunden im Warenkorb + // Setzen des Kunden im Warenkorb mit Hilfe von ki den logig herrausgefunden warenkorb.setKunde(new Kunden(name, adresse)); } } diff --git a/Prudukt.java b/Prudukt.java index 6bb99f5..441041b 100644 --- a/Prudukt.java +++ b/Prudukt.java @@ -2,8 +2,9 @@ public class Prudukt { private String name; private int id; private float preis; - private float gewicht; // Gewicht des Produkts + private float gewicht; + // Konstruktor public Prudukt(String name, int id, float preis, float gewicht) { this.name = name; this.id = id; @@ -11,6 +12,14 @@ public class Prudukt { this.gewicht = gewicht; } + public String getName() { + return name; + } + + public int getId() { + return id; + } + public float getPreis() { return preis; } @@ -19,12 +28,8 @@ public class Prudukt { return gewicht; } - public int getId() { - return id; - } - @Override public String toString() { - return "ID: " + id + ", Name: " + name + ", Preis: " + preis + " Euro, Gewicht: " + gewicht + " kg"; + return String.format("ID: %d, Name: %s, Preis: %.2f Euro, Gewicht: %.2f kg", id, name, preis, gewicht); } } diff --git a/Warenkorb.java b/Warenkorb.java index f1a4016..adaf235 100644 --- a/Warenkorb.java +++ b/Warenkorb.java @@ -2,52 +2,84 @@ import java.util.ArrayList; import java.util.List; public class Warenkorb { - private List produkte = new ArrayList<>(); - private List anzahlProdukte = new ArrayList<>(); + private List eintraege = new ArrayList<>(); private Kunden kunde; + // Fügt ein Produkt zum Warenkorb hinzu public void produktHinzufuegen(Prudukt produkt, int anzahl) { - produkte.add(produkt); - anzahlProdukte.add(anzahl); + eintraege.add(new WarenkorbEintrag(produkt, anzahl)); } - public void setKunde(Kunden kunde) { - this.kunde = kunde; + // Ändert die Anzahl eines Produkts im Warenkorb + public void produktAendern(int produktId, int neueAnzahl) { + for (WarenkorbEintrag eintrag : eintraege) { + if (eintrag.getProdukt().getId() == produktId) { + if (neueAnzahl <= 0) { + eintraege.remove(eintrag); + } else { + eintrag.setAnzahl(neueAnzahl); + } + return; + } + } + System.out.println("Produkt nicht im Warenkorb gefunden."); } - public float berechneGesamtpreis() { + // Löscht ein Produkt aus dem Warenkorb + public void produktEntfernen(int produktId) { + for (WarenkorbEintrag eintrag : eintraege) { + if (eintrag.getProdukt().getId() == produktId) { + eintraege.remove(eintrag); + System.out.println("Produkt entfernt: " + eintrag.getProdukt().getName()); + return; + } + } + System.out.println("Produkt nicht im Warenkorb gefunden."); + } + + // Berechnet den Gesamtpreis aller Produkte im Warenkorb + public float berechneGesamtPreis() { float gesamtpreis = 0; - for (int i = 0; i < produkte.size(); i++) { - gesamtpreis += produkte.get(i).getPreis() * anzahlProdukte.get(i); + for (WarenkorbEintrag eintrag : eintraege) { + gesamtpreis += eintrag.getProdukt().getPreis() * eintrag.getAnzahl(); } return gesamtpreis; } - public float berechneGesamtgewicht() { - float gesamtgewicht = 0; - for (int i = 0; i < produkte.size(); i++) { - gesamtgewicht += produkte.get(i).getGewicht() * anzahlProdukte.get(i); - } - return gesamtgewicht; - } - + // Berechnet die Versandkosten basierend auf dem Gesamtgewicht public float berechneVersandkosten() { - float gewicht = berechneGesamtgewicht(); - if (gewicht <= 1) { - return 5; - } else if (gewicht <= 2.5) { - return 8; + float gesamtgewicht = 0; + for (WarenkorbEintrag eintrag : eintraege) { + gesamtgewicht += eintrag.getProdukt().getGewicht() * eintrag.getAnzahl(); + } + + if (gesamtgewicht <= 1) { + return 5; // Versandkosten für < 1 kg + } else if (gesamtgewicht <= 2.5) { + return 8; // Versandkosten für < 2.5 kg } else { - return 10; + return 10; // Versandkosten für > 2.5 kg } } + // Setzt den Kunden im Warenkorb + public void setKunde(Kunden kunde) { + this.kunde = kunde; + } + + // Gibt den Warenkorb und die Produkte aus public void printWarenkorb() { - System.out.println("Warenkorb:"); - for (int i = 0; i < produkte.size(); i++) { - Prudukt produkt = produkte.get(i); - System.out.println(produkt + ", Anzahl: " + anzahlProdukte.get(i)); + System.out.println(this); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("Warenkorb für: ").append(kunde != null ? kunde.getName() : "Unbekannt").append("\n"); + for (WarenkorbEintrag eintrag : eintraege) { + sb.append(eintrag.toString()).append("\n"); } - System.out.println("Gesamtpreis: " + berechneGesamtpreis() + " Euro"); + + return sb.toString(); } } diff --git a/WarenkorbEintrag.java b/WarenkorbEintrag.java new file mode 100644 index 0000000..5af146a --- /dev/null +++ b/WarenkorbEintrag.java @@ -0,0 +1,26 @@ +public class WarenkorbEintrag { + private Prudukt produkt; + private int anzahl; + + public WarenkorbEintrag(Prudukt produkt, int anzahl) { + this.produkt = produkt; + this.anzahl = anzahl; + } + + public Prudukt getProdukt() { + return produkt; + } + + public int getAnzahl() { + return anzahl; + } + + public void setAnzahl(int anzahl) { + this.anzahl = anzahl; + } + + @Override + public String toString() { + return produkt.getName() + " - Anzahl: " + anzahl + ", Preis: " + produkt.getPreis() + " Euro"; + } +} diff --git a/out/production/Online_schop/Bestellung.class b/out/production/Online_schop/Bestellung.class index 5fb48b0..47b30bc 100644 Binary files a/out/production/Online_schop/Bestellung.class and b/out/production/Online_schop/Bestellung.class differ diff --git a/out/production/Online_schop/Kunden.class b/out/production/Online_schop/Kunden.class index 05447b2..b197446 100644 Binary files a/out/production/Online_schop/Kunden.class and b/out/production/Online_schop/Kunden.class differ diff --git a/out/production/Online_schop/Main.class b/out/production/Online_schop/Main.class index 409e88d..6aed304 100644 Binary files a/out/production/Online_schop/Main.class and b/out/production/Online_schop/Main.class differ diff --git a/out/production/Online_schop/Prudukt.class b/out/production/Online_schop/Prudukt.class index 0018712..61015fb 100644 Binary files a/out/production/Online_schop/Prudukt.class and b/out/production/Online_schop/Prudukt.class differ diff --git a/out/production/Online_schop/Warenkorb.class b/out/production/Online_schop/Warenkorb.class index 2126ff2..b743621 100644 Binary files a/out/production/Online_schop/Warenkorb.class and b/out/production/Online_schop/Warenkorb.class differ