diff --git a/Bestellung.java b/Bestellung.java index e6cc4b2..ec0acb4 100644 --- a/Bestellung.java +++ b/Bestellung.java @@ -6,6 +6,7 @@ public class Bestellung { private float versandkosten; private LocalDateTime bestellDatum; + // Konstruktor mit Warenkorb und Versandkosten public Bestellung(Warenkorb warenkorb, float versandkosten) { if (warenkorb == null) { throw new IllegalArgumentException("Warenkorb darf nicht null sein."); @@ -13,6 +14,7 @@ public class Bestellung { if (versandkosten < 0) { throw new IllegalArgumentException("Versandkosten dürfen nicht negativ sein."); } + this.warenkorb = warenkorb; this.versandkosten = versandkosten; this.bestellDatum = LocalDateTime.now(); // Bestelldatum setzen @@ -34,10 +36,16 @@ public class Bestellung { return warenkorb.berechneGesamtPreis() + versandkosten; } + @Override public String toString() { 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()); + Kunden kunde = warenkorb.getKunde(); // Kundenobjekt vom Warenkorb abrufen + String kundenName = kunde != null ? kunde.getName() : "Unbekannt"; + String adresse = kunde != null ? kunde.getAdresse() : "Keine Adresse angegeben"; + + return String.format("Bestellung am %s:\nWarenkorb für: %s\n%sVersandkosten: %.2f Euro\nGesamtpreis: %.2f Euro\nAdresse: %s", + bestellDatum.format(formatter), kundenName, warenkorb.toString(), versandkosten, berechneGesamtpreis(), adresse); } + } diff --git a/Main.java b/Main.java index 24ee407..d434b75 100644 --- a/Main.java +++ b/Main.java @@ -1,123 +1,78 @@ -import java.util.ArrayList; -import java.util.List; import java.util.Scanner; public class Main { - static String adresse; - static Warenkorb warenkorb = new Warenkorb(); - static List bestellungen = new ArrayList<>(); - public static void main(String[] args) { - // Erstellen von Produkten mit Name, ID, Preis und Gewicht - Prudukt gabel = new Prudukt("Gabel", 1, 1.12F, 0.1F); - Prudukt messer = new Prudukt("Messer", 2, 1.14F, 0.2F); - Prudukt loeffel = new Prudukt("Löffel", 3, 1.15F, 0.15F); - Scanner scanner = new Scanner(System.in); - boolean einkaufFortsetzen = true; + Onlineshop shop = new Onlineshop(); - // Schleife, um Produkte in den Warenkorb hinzuzufügen - while (einkaufFortsetzen) { - // Produktliste anzeigen + // Produkte erstellen und zum Shop hinzufügen + Produkt gabel = new Produkt("Gabel", 1, 1.12F, 0.1F, 100); + Produkt messer = new Produkt("Messer", 2, 1.14F, 0.2F, 100); + Produkt loeffel = new Produkt("Löffel", 3, 1.15F, 0.15F, 100); + + shop.produktHinzufuegen(gabel); + shop.produktHinzufuegen(messer); + shop.produktHinzufuegen(loeffel); + + // Hauptmenü-Schleife für den Benutzer + boolean weiterEinkaufen = true; + while (weiterEinkaufen) { System.out.println("Verfügbare Produkte:"); - System.out.println(gabel); - System.out.println(messer); - System.out.println(loeffel); + for (Produkt produkt : shop.getProdukte()) { + System.out.println(produkt); + } - // Produkt zum Warenkorb hinzufügen + // Benutzereingaben (ID und Anzahl des Produkts) System.out.println("Geben Sie die ID des gewünschten Produkts ein:"); int id = scanner.nextInt(); System.out.println("Geben Sie die Anzahl ein:"); int anzahl = scanner.nextInt(); - // Auswahl des Produkts basierend auf der ID - switch (id) { + // Produkt zum Warenkorb hinzufügen + boolean hinzugefuegt = shop.produktZuWarenkorbHinzufuegen(id, anzahl); + if (!hinzugefuegt) { + System.out.println("Ungültige Produkt-ID."); + } + + // Menü nach Produktauswahl anzeigen + 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: - warenkorb.produktHinzufuegen(gabel, anzahl); + 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(); + shop.produktAendern(produktId, neueAnzahl); break; case 2: - warenkorb.produktHinzufuegen(messer, anzahl); + System.out.println("Geben Sie die ID des Produkts ein, das Sie entfernen möchten:"); + int removeId = scanner.nextInt(); + shop.produktEntfernen(removeId); break; case 3: - warenkorb.produktHinzufuegen(loeffel, anzahl); + continue; // zurück ins Hauptmenü, um weiter einzukaufen + case 4: + System.out.println("Geben Sie Ihre Adresse ein:"); + scanner.nextLine(); // Zeilenumbruch nach nextInt + String adresse = scanner.nextLine(); + System.out.println("Geben Sie Ihren Namen ein:"); + String name = scanner.nextLine(); + // Setze den Kunden im Warenkorb + shop.setKunde(name, adresse); + // Bestellung aufgeben + shop.bestellungAufgeben(adresse, name); + weiterEinkaufen = false; // Beende die Schleife nach Bestellung break; default: - System.out.println("Ungültige Produkt-ID."); - break; + System.out.println("Ungültige Auswahl."); } - - // 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; - } - } - - } - - // Alle Bestellungen anzeigen - System.out.println("Alle Bestellungen:"); - for (Bestellung b : bestellungen) { - System.out.println(b); - } - scanner.close(); } - - // Methode zur Eingabe von Kundendaten - static void kundenkauf() { - Scanner kundeinfo = new Scanner(System.in); - System.out.println("Geben Sie Ihre Daten ein:"); - - System.out.print("Name: "); - String name = kundeinfo.nextLine(); - - System.out.print("Adresse: "); - adresse = kundeinfo.nextLine(); - - // Setzen des Kunden im Warenkorb mit Hilfe von ki den logig herrausgefunden - warenkorb.setKunde(new Kunden(name, adresse)); - } } diff --git a/Onlineshop.java b/Onlineshop.java new file mode 100644 index 0000000..73e81c0 --- /dev/null +++ b/Onlineshop.java @@ -0,0 +1,58 @@ +import java.util.ArrayList; +import java.util.List; + +public class Onlineshop { + private List produkte; // Achte darauf, dass der Typ korrekt ist + private Warenkorb warenkorb; + private List bestellungen; + + public Onlineshop() { + this.produkte = new ArrayList<>(); + this.warenkorb = new Warenkorb(); + this.bestellungen = new ArrayList<>(); + } + + // API: Produkt hinzufügen + public void produktHinzufuegen(Produkt produkt) { // Achte darauf, dass der Typ korrekt ist + produkte.add(produkt); + } + + // API: Produkte zurückgeben (für Anzeige in der UI) + public List getProdukte() { + return produkte; + } + + // API: Produkt in den Warenkorb legen + public boolean produktZuWarenkorbHinzufuegen(int produktId, int anzahl) { + for (Produkt produkt : produkte) { // Achte darauf, dass der Typ korrekt ist + if (produkt.getId() == produktId) { + warenkorb.produktHinzufuegen(produkt, anzahl); + return true; + } + } + return false; // Produkt nicht gefunden + } + + // API: Produktanzahl im Warenkorb ändern + public void produktAendern(int produktId, int neueAnzahl) { + warenkorb.produktAendern(produktId, neueAnzahl); + } + + // API: Produkt aus Warenkorb entfernen + public void produktEntfernen(int produktId) { + warenkorb.produktEntfernen(produktId); + } + + // API: Bestellung aufgeben + public void bestellungAufgeben(String adresse, String name) { + Bestellung bestellung = new Bestellung(warenkorb, warenkorb.berechneVersandkosten()); + bestellungen.add(bestellung); + System.out.println("Ihre Bestellung wurde erfolgreich aufgegeben:\n" + bestellung); + warenkorb.leeren(); // Warenkorb nach Bestellung leeren + } + + // Setze den Kunden im Warenkorb (optional) + public void setKunde(String name, String adresse) { + warenkorb.setKunde(new Kunden(name, adresse)); + } +} diff --git a/Prudukt.java b/Produkt.java similarity index 62% rename from Prudukt.java rename to Produkt.java index 441041b..0286b6d 100644 --- a/Prudukt.java +++ b/Produkt.java @@ -1,25 +1,28 @@ -public class Prudukt { +public class Produkt { private String name; private int id; private float preis; private float gewicht; + private int lagerbestand; // Konstruktor - public Prudukt(String name, int id, float preis, float gewicht) { + public Produkt(String name, int id, float preis, float gewicht, int lagerbestand) { this.name = name; this.id = id; this.preis = preis; this.gewicht = gewicht; + this.lagerbestand = lagerbestand; + } + + // Getter + public int getId() { + return id; } public String getName() { return name; } - public int getId() { - return id; - } - public float getPreis() { return preis; } @@ -30,6 +33,6 @@ public class Prudukt { @Override public String toString() { - return String.format("ID: %d, Name: %s, Preis: %.2f Euro, Gewicht: %.2f kg", id, name, preis, gewicht); + return String.format("%s - ID: %d, Preis: %.2f Euro, Gewicht: %.2f kg", name, id, preis, gewicht); } } diff --git a/Warenkorb.java b/Warenkorb.java index 608aefc..2610dc6 100644 --- a/Warenkorb.java +++ b/Warenkorb.java @@ -1,12 +1,11 @@ import java.util.ArrayList; -import java.util.List; - +import java.util.List; // Importiere die List-Schnittstelle public class Warenkorb { private List eintraege = new ArrayList<>(); private Kunden kunde; - // Fügt ein Produkt zum Warenkorb hinzu von warenkorbeintrag - public void produktHinzufuegen(Prudukt produkt, int anzahl) { + // Fügt ein Produkt zum Warenkorb hinzu + public void produktHinzufuegen(Produkt produkt, int anzahl) { eintraege.add(new WarenkorbEintrag(produkt, anzahl)); } @@ -25,7 +24,7 @@ public class Warenkorb { System.out.println("Produkt nicht im Warenkorb gefunden."); } - // Löscht ein Produkt aus dem Warenkorb + // Entfernt ein Produkt aus dem Warenkorb public void produktEntfernen(int produktId) { for (WarenkorbEintrag eintrag : eintraege) { if (eintrag.getProdukt().getId() == produktId) { @@ -67,19 +66,26 @@ public class Warenkorb { this.kunde = kunde; } - // Gibt den Warenkorb und die Produkte aus KI - public void printWarenkorb() { - System.out.println(this); + // Gibt den Kunden zurück + public Kunden getKunde() { + return kunde; } - @Override //mit Hilfe von ki + // Leert den Warenkorb + public void leeren() { + eintraege.clear(); + kunde = null; // Optional: auch den Kunden zurücksetzen + System.out.println("Der Warenkorb wurde geleert."); + } + + @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"); } - return sb.toString(); } + + } diff --git a/WarenkorbEintrag.java b/WarenkorbEintrag.java index 5af146a..8122146 100644 --- a/WarenkorbEintrag.java +++ b/WarenkorbEintrag.java @@ -1,13 +1,13 @@ public class WarenkorbEintrag { - private Prudukt produkt; + private Produkt produkt; private int anzahl; - public WarenkorbEintrag(Prudukt produkt, int anzahl) { + public WarenkorbEintrag(Produkt produkt, int anzahl) { this.produkt = produkt; this.anzahl = anzahl; } - public Prudukt getProdukt() { + public Produkt getProdukt() { return produkt; } @@ -21,6 +21,6 @@ public class WarenkorbEintrag { @Override public String toString() { - return produkt.getName() + " - Anzahl: " + anzahl + ", Preis: " + produkt.getPreis() + " Euro"; + return String.format("%s - Anzahl: %d, Preis: %.2f Euro", produkt.getName(), anzahl, produkt.getPreis()); } } diff --git a/out/production/Online_schop/Bestellung.class b/out/production/Online_schop/Bestellung.class index 47b30bc..331d239 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/Main.class b/out/production/Online_schop/Main.class index 9da83a7..77fb88e 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 deleted file mode 100644 index 61015fb..0000000 Binary files a/out/production/Online_schop/Prudukt.class and /dev/null differ diff --git a/out/production/Online_schop/Warenkorb.class b/out/production/Online_schop/Warenkorb.class index b743621..3d23b8b 100644 Binary files a/out/production/Online_schop/Warenkorb.class and b/out/production/Online_schop/Warenkorb.class differ diff --git a/out/production/Online_schop/WarenkorbEintrag.class b/out/production/Online_schop/WarenkorbEintrag.class index 695e137..e140e31 100644 Binary files a/out/production/Online_schop/WarenkorbEintrag.class and b/out/production/Online_schop/WarenkorbEintrag.class differ