Online_schop/Warenkorb.java

86 lines
2.8 KiB
Java

import java.util.ArrayList;
import java.util.List;
public class Warenkorb {
private List<WarenkorbEintrag> 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();
}
}