Den Warenkorb ausgearbeitet

main
Laura Kalkbrenner 2025-12-14 23:36:59 +01:00
parent 68002788c5
commit 97e70a8a3f
6 changed files with 225 additions and 10 deletions

127
Shop/src/Quelle 100644
View File

@ -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<WarenkorbArtikel)` sinnvoll **auszugeben**, gibt es in Java mehrere saubere Varianten. Best Practice ist, die Ausgabe **über `toString()`** zu kapseln und dann die Liste zu iterieren.
---
## 1. `toString()` in `WarenkorbArtikel` überschreiben (empfohlen)
```java
public class WarenkorbArtikel {
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;
}
}
```
⚠️ **Wichtig:**
Damit das sinnvoll aussieht, sollte auch `Produkt` eine eigene `toString()`-Methode besitzen.
Beispiel:
```java
public class Produkt {
String name;
double preis;
@Override
public String toString() {
return name + " (" + preis + " €)";
}
}
```
---
## 2. ArrayList ausdrucken (klassische Schleife)
```java
ArrayList<WarenkorbArtikel> 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)**.

View File

@ -9,6 +9,7 @@ import java.util.Scanner;
public class OnlineShop {
private static ArrayList<String> 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++){

View File

@ -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;
}

View File

@ -32,6 +32,19 @@ public class Warenkorb {
}
public void produktHinzufügen(Produkt p,int Menge) {
for(int i=0;i<Artikel.size();i++){
if(Artikel.get(i).produkt.ID==p.ID){
int neu=Artikel.get(i).Menge+Menge;
Artikel.get(i).Menge=neu;
Artikel.get(i).produkt.Bestand-= Menge;
if(Artikel.get(i).produkt.Bestand<0)
Artikel.get(i).produkt.Bestand=0;
return;
}
}
p.Bestand-=Menge;
Artikel.add(new WarenkorbArtikel(p, Menge));
}
public boolean ProduktDa (int ID,int Menge) throws FileNotFoundException {
@ -45,6 +58,28 @@ public class Warenkorb {
}
return false;
}
public void andereMenge(int ID,int Menge) {
for(int i=0;i<Artikel.size();i++){
if(Artikel.get(i).produkt.ID==ID){
Artikel.get(i).produkt.Bestand = Artikel.get(i).produkt.Bestand + Menge; // reduzierte Menge aufaddieren
Artikel.get(i).Menge=Menge;
}
}
}
public void entferneArtikel(int ID) {
for(int i=0;i<Artikel.size();i++){
if(Artikel.get(i).produkt.ID==ID){
Artikel.remove(i); //Von w3 Schools, da nur eine Zeile habe ich es gelassen
}
}
}
public ArrayList<WarenkorbArtikel> ÜbertrageArtikel() {
return Artikel;
}
}

View File

@ -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;

View File

@ -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;i<ProduktListe.size();i++) {
for (int j = 0; j < 5&& j<ProduktListe.get(i).name.length(); j++) {
if (suche.charAt(j) == (ProduktListe.get(i).name).charAt(j)){
if (suche.charAt(j) == (ProduktListe.get(i).name).charAt(j)){ //Todo gucken warum Ignore.Case nicht klappt
count++;
if(count==4){
vlt=ProduktListe.get(i);
@ -103,7 +104,7 @@ public class ShopTUI {
}
if(vlt.name.length()>4) {
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<WarenkorbArtikel> Artikel=wk.ÜbertrageArtikel();
//ArrayList<WarenkorbArtikel> 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");
}
}