import java.util.ArrayList; import java.util.List; public class Warenkorb { private List eintraege = new ArrayList<>(); private Kunden kunde; // Fügt ein Produkt zum Warenkorb hinzu public void produktHinzufuegen(Prudukt produkt, int anzahl) { eintraege.add(new WarenkorbEintrag(produkt, anzahl)); } // Ä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."); } // 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 (WarenkorbEintrag eintrag : eintraege) { gesamtpreis += eintrag.getProdukt().getPreis() * eintrag.getAnzahl(); } return gesamtpreis; } // Berechnet die Versandkosten basierend auf dem Gesamtgewicht public float berechneVersandkosten() { 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; // 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(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"); } return sb.toString(); } }