From 97e70a8a3f31d16f43b5d415770622507b939719 Mon Sep 17 00:00:00 2001 From: Laura <3016748@stud.hs-mannheim.de> Date: Sun, 14 Dec 2025 23:36:59 +0100 Subject: [PATCH] Den Warenkorb ausgearbeitet --- Shop/src/Quelle | 127 ++++++++++++++++++ .../main/java/backend/pack/OnlineShop.java | 2 + Shop/src/main/java/backend/pack/Produkt.java | 2 +- .../src/main/java/backend/pack/Warenkorb.java | 35 +++++ .../java/backend/pack/WarenkorbArtikel.java | 8 +- Shop/src/main/java/tui/pack/ShopTUI.java | 61 ++++++++- 6 files changed, 225 insertions(+), 10 deletions(-) create mode 100644 Shop/src/Quelle diff --git a/Shop/src/Quelle b/Shop/src/Quelle new file mode 100644 index 0000000..4be81d0 --- /dev/null +++ b/Shop/src/Quelle @@ -0,0 +1,127 @@ +(1) +->> Der Verlauf für die Quelle aber eigentlich nur punkt 1 und 2 benutzt +Meine Frage: +ich habe eine ArrayListe bestehen hierraus:public class WarenkorbArtikel { + Produkt produkt; + int Menge; + + public WarenkorbArtikel(Produkt produkt, int Menge) { + this.produkt = produkt; + this.Menge = Menge; + } wie würde ich die ausdrucken? + + Chatgpts Antwort: + Um eine `ArrayList warenkorb = new ArrayList<>(); + + for (WarenkorbArtikel artikel : warenkorb) { + System.out.println(artikel); + } + ``` + + Da `toString()` überschrieben ist, wird automatisch die gewünschte Darstellung genutzt. + + --- + + ## 3. Ausgabe mit Index (falls benötigt) + + ```java + for (int i = 0; i < warenkorb.size(); i++) { + System.out.println((i + 1) + ". " + warenkorb.get(i)); + } + ``` + + --- + + ## 4. Direkter Zugriff auf Felder (nicht empfohlen, aber möglich) + + ```java + for (WarenkorbArtikel artikel : warenkorb) { + System.out.println( + "Produkt: " + artikel.produkt + + ", Menge: " + artikel.menge + ); + } + ``` + + ❌ Schlechter Stil, da Kapselung verletzt wird + ✔️ Nur akzeptabel für sehr einfache Übungsaufgaben + + --- + + ## 5. Sauberste Variante (mit Gettern) + + ```java + public Produkt getProdukt() { + return produkt; + } + + public int getMenge() { + return menge; + } + ``` + + ```java + for (WarenkorbArtikel artikel : warenkorb) { + System.out.println( + "Produkt: " + artikel.getProdukt() + + ", Menge: " + artikel.getMenge() + ); + } + ``` + + --- + + ## Empfehlung für Klausur / gute Praxis + + 1. `toString()` überschreiben + 2. `for-each`-Schleife verwenden + 3. Keine direkten Feldzugriffe von außen + + Wenn du willst, erkläre ich dir **warum `toString()` so wichtig ist**, oder wie man das **formatiert (Tabellen, Preise summieren, Gesamtpreis berechnen)**. + + diff --git a/Shop/src/main/java/backend/pack/OnlineShop.java b/Shop/src/main/java/backend/pack/OnlineShop.java index a79fc4e..4f71b0c 100644 --- a/Shop/src/main/java/backend/pack/OnlineShop.java +++ b/Shop/src/main/java/backend/pack/OnlineShop.java @@ -9,6 +9,7 @@ import java.util.Scanner; public class OnlineShop { private static ArrayList LagerList; + Warenkorb wk =new Warenkorb(); public String [][] Start() throws FileNotFoundException { @@ -21,6 +22,7 @@ public class OnlineShop { + public String[][] produktArray(ArrayList Lagerlist) throws FileNotFoundException { String[] Lager = new String[LagerList.size()]; for (int i = 0; i < LagerList.size(); i++){ diff --git a/Shop/src/main/java/backend/pack/Produkt.java b/Shop/src/main/java/backend/pack/Produkt.java index bb8e10a..c857eda 100644 --- a/Shop/src/main/java/backend/pack/Produkt.java +++ b/Shop/src/main/java/backend/pack/Produkt.java @@ -21,7 +21,7 @@ public class Produkt { public String toString() { return this.name + " " + this.preis + " Euro."; - } + } //Noch von Hummel, habe ich vergessen gehabt für den Warwnkorb und dann KI gebraucht... public double berechneMwst(){ return Math.round((this.preis-(this.preis/(1+this.mwst/100)))*100.0)/100.0; } diff --git a/Shop/src/main/java/backend/pack/Warenkorb.java b/Shop/src/main/java/backend/pack/Warenkorb.java index 78d1096..7b4cc47 100644 --- a/Shop/src/main/java/backend/pack/Warenkorb.java +++ b/Shop/src/main/java/backend/pack/Warenkorb.java @@ -32,6 +32,19 @@ public class Warenkorb { } public void produktHinzufügen(Produkt p,int Menge) { + for(int i=0;i ÜbertrageArtikel() { + return Artikel; + + } + } diff --git a/Shop/src/main/java/backend/pack/WarenkorbArtikel.java b/Shop/src/main/java/backend/pack/WarenkorbArtikel.java index 8fd62db..4c8cb23 100644 --- a/Shop/src/main/java/backend/pack/WarenkorbArtikel.java +++ b/Shop/src/main/java/backend/pack/WarenkorbArtikel.java @@ -1,13 +1,17 @@ package pack; public class WarenkorbArtikel { - private Produkt produkt; - private int Menge; + Produkt produkt; + int Menge; public WarenkorbArtikel(Produkt produkt, int Menge) { this.produkt = produkt; this.Menge = Menge; } + @Override + public String toString() { + return "Produkt: " + produkt + ", Menge: " + Menge; //Mit KI siehe (1) + } public double berechneGesamtPreis(){ double preis= produkt.preis*Menge; return preis; diff --git a/Shop/src/main/java/tui/pack/ShopTUI.java b/Shop/src/main/java/tui/pack/ShopTUI.java index 0b5d71a..a8768ee 100644 --- a/Shop/src/main/java/tui/pack/ShopTUI.java +++ b/Shop/src/main/java/tui/pack/ShopTUI.java @@ -22,6 +22,7 @@ public class ShopTUI { } System.out.println("Auf Wiedersehen!"); + sc.close(); } public boolean hauptmenü() throws FileNotFoundException { @@ -30,7 +31,7 @@ public class ShopTUI { IO.println(" << H a u p t m e n ü >> "); IO.println("1.Produktangebot"); IO.println("2.Produktsuche"); - IO.println("3.Mein Warenkorb"); + IO.println("3.Warenkorb-Menü(hierüber Produkte Hinzufügen)"); IO.println("4. Bestellungen"); IO.println("5. Exit "); IO.print(">>"); @@ -46,7 +47,7 @@ public class ShopTUI { MeinWarenkorb(); break; case "4": case "bestellungen": case"Bestellungen": - //Todo vlt lasse ich das ganz beim Warenkorb + bestellen(); break; case "5": case "exit " : case "Exit": return false; @@ -77,7 +78,7 @@ public class ShopTUI { IO.print(" | "); } IO.println(); - } + }//TOD= vlt hier auch hinzufügen aufrufwn } public static void produktsuche() throws FileNotFoundException { IO.print("Ich suche: "); @@ -91,7 +92,7 @@ public class ShopTUI { if(gefunden==null) { for(int i=0;i4) { IO.println("Meinten Sie vielleicht "+ vlt.name + " " +vlt.preis+ "€ ?"); - IO.println("Unser Bestand beträgt "+ vlt.Bestand); + IO.println("Unser Bestand beträgt "+ vlt.Bestand);//TODO hinzufügen ermöglichen }else IO.println("Das gesuchte Produkt wurde leider nicht gefunden"); } else { @@ -126,9 +127,9 @@ public class ShopTUI { Warenkorb warenkorb; String Wahl; do { - IO.print(">>Warenkorb-Menü<<"); + IO.println(">>Warenkorb-Menü<<"); IO.println("1. Artikel hinzüfugen [Bitte hierfür am besten die Produkt ID benutzen!]"); - IO.println("2. Meinen Warenkorb anzeigen bzw Bestellung aufgeben"); + IO.println("2. Meinen Warenkorb anzeigen "); IO.println("3. Etwas aus den Warenkorb löschen"); IO.println("4. Die Menge reduzieren"); IO.println("5. back"); @@ -139,6 +140,16 @@ public class ShopTUI { hinzufuegen(); break; case "2": + warenkorbAnzeigen(); + break; + case "3": + artikelLöschen(); + break; + case "4": + mengeReduzieren(); + break; + + } } while (!Wahl.equals("5")||Wahl.equalsIgnoreCase("back")); @@ -158,5 +169,41 @@ public class ShopTUI { IO.println("Die ID existiert nicht oder das Produkt ist leider nicht auf Lager"); } + public void warenkorbAnzeigen() { + IO.println("====Mein Warenkorb===="); + ArrayList Artikel=wk.ÜbertrageArtikel(); + //ArrayList warenkorb = new ArrayList<>(); //Mit KI,siehe (1)[ // Ergänzung Fehler von der KI selber korrigiert + + for (WarenkorbArtikel artikel : Artikel) { + System.out.println(artikel); //bis hier KI + } + + + + } + public void artikelLöschen() { + IO.println("Geben sie die ID des Produktes welches sie entfernen wollen ein"); + IO.print("ID"); + int ID=sc.nextInt(); + sc.nextLine(); + wk.entferneArtikel(ID); + IO.println("Sollte der Artikel im Warenkorb gewesen sein, wurde er entfernt"); + } + public void mengeReduzieren() { + IO.println("Geben sie die ID von dem Produkt an, dessen Menge sie reduzieren wollen"); + IO.print("ID"); + IO.println(); + int ID=sc.nextInt(); + sc.nextLine(); + IO.println("Um wieviel wollen sie die Anzahl reduzieren?"); + IO.print("um:"); + int red=sc.nextInt(); + sc.nextLine(); + wk.andereMenge(ID,red); + IO.println(); + IO.println("Die Menge wurde reduziert"); + + + } } \ No newline at end of file