Compare commits

..

2 Commits

12 changed files with 188 additions and 58 deletions

View File

@ -1,14 +1,43 @@
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class Bestellung { public class Bestellung {
private Warenkorb warenkorb; private Warenkorb warenkorb;
private float versandkosten; private float versandkosten;
private LocalDateTime bestellDatum;
public Bestellung(Warenkorb warenkorb, float versandkosten) { public Bestellung(Warenkorb warenkorb, float versandkosten) {
if (warenkorb == null) {
throw new IllegalArgumentException("Warenkorb darf nicht null sein.");
}
if (versandkosten < 0) {
throw new IllegalArgumentException("Versandkosten dürfen nicht negativ sein.");
}
this.warenkorb = warenkorb; this.warenkorb = warenkorb;
this.versandkosten = versandkosten; this.versandkosten = versandkosten;
this.bestellDatum = LocalDateTime.now(); // Bestelldatum setzen
}
public Warenkorb getWarenkorb() {
return warenkorb;
}
public float getVersandkosten() {
return versandkosten;
}
public LocalDateTime getBestellDatum() {
return bestellDatum;
}
public float berechneGesamtpreis() {
return warenkorb.berechneGesamtPreis() + versandkosten;
} }
@Override @Override
public String toString() { public String toString() {
return "Bestellung:\n" + warenkorb + "\nVersandkosten: " + versandkosten + " Euro\n"; 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());
} }
} }

View File

@ -7,8 +7,11 @@ public class Kunden {
this.adresse = adresse; this.adresse = adresse;
} }
@Override public String getName() {
public String toString() { return name;
return "Name: " + name + ", Adresse: " + adresse; }
public String getAdresse() {
return adresse;
} }
} }

View File

@ -3,6 +3,7 @@ import java.util.List;
import java.util.Scanner; import java.util.Scanner;
public class Main { public class Main {
static String adresse;
static Warenkorb warenkorb = new Warenkorb(); static Warenkorb warenkorb = new Warenkorb();
static List<Bestellung> bestellungen = new ArrayList<>(); static List<Bestellung> bestellungen = new ArrayList<>();
@ -45,30 +46,64 @@ public class Main {
break; break;
} }
// Benutzer fragen, ob er weiter einkaufen möchte // Optionen für den Benutzer nach dem Hinzufügen anzeigen
System.out.println("Möchten Sie weiter einkaufen? (1 für Ja, 0 für Nein)"); boolean optionenAnzeigen = true;
einkaufFortsetzen = scanner.nextInt() == 1; 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;
}
}
} }
// Warenkorb anzeigen und Gesamtkosten berechnen
warenkorb.printWarenkorb();
// Kundendaten eingeben
kundenkauf();
// Bestellung abschließen und speichern
Bestellung bestellung = new Bestellung(warenkorb, warenkorb.berechneVersandkosten());
bestellungen.add(bestellung);
// Bestellungen anzeigen
System.out.println("Ihre Bestellung wurde gespeichert:");
System.out.println(bestellung);
// Alle Bestellungen anzeigen // Alle Bestellungen anzeigen
System.out.println("Alle Bestellungen:"); System.out.println("Alle Bestellungen:");
for (Bestellung b : bestellungen) { for (Bestellung b : bestellungen) {
System.out.println(b); System.out.println(b);
} }
scanner.close();
} }
// Methode zur Eingabe von Kundendaten // Methode zur Eingabe von Kundendaten
@ -77,12 +112,12 @@ public class Main {
System.out.println("Geben Sie Ihre Daten ein:"); System.out.println("Geben Sie Ihre Daten ein:");
System.out.print("Name: "); System.out.print("Name: ");
String name = kundeinfo.nextLine(); String name = kundeinfo.nextLine();
System.out.print("Adresse: "); System.out.print("Adresse: ");
String adresse = kundeinfo.nextLine(); adresse = kundeinfo.nextLine();
// Setzen des Kunden im Warenkorb // Setzen des Kunden im Warenkorb mit Hilfe von ki den logig herrausgefunden
warenkorb.setKunde(new Kunden(name, adresse)); warenkorb.setKunde(new Kunden(name, adresse));
} }
} }

View File

@ -2,8 +2,9 @@ public class Prudukt {
private String name; private String name;
private int id; private int id;
private float preis; private float preis;
private float gewicht; // Gewicht des Produkts private float gewicht;
// Konstruktor
public Prudukt(String name, int id, float preis, float gewicht) { public Prudukt(String name, int id, float preis, float gewicht) {
this.name = name; this.name = name;
this.id = id; this.id = id;
@ -11,6 +12,14 @@ public class Prudukt {
this.gewicht = gewicht; this.gewicht = gewicht;
} }
public String getName() {
return name;
}
public int getId() {
return id;
}
public float getPreis() { public float getPreis() {
return preis; return preis;
} }
@ -19,12 +28,8 @@ public class Prudukt {
return gewicht; return gewicht;
} }
public int getId() {
return id;
}
@Override @Override
public String toString() { public String toString() {
return "ID: " + id + ", Name: " + name + ", Preis: " + preis + " Euro, Gewicht: " + gewicht + " kg"; return String.format("ID: %d, Name: %s, Preis: %.2f Euro, Gewicht: %.2f kg", id, name, preis, gewicht);
} }
} }

View File

@ -2,52 +2,84 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
public class Warenkorb { public class Warenkorb {
private List<Prudukt> produkte = new ArrayList<>(); private List<WarenkorbEintrag> eintraege = new ArrayList<>();
private List<Integer> anzahlProdukte = new ArrayList<>();
private Kunden kunde; private Kunden kunde;
// Fügt ein Produkt zum Warenkorb hinzu
public void produktHinzufuegen(Prudukt produkt, int anzahl) { public void produktHinzufuegen(Prudukt produkt, int anzahl) {
produkte.add(produkt); eintraege.add(new WarenkorbEintrag(produkt, anzahl));
anzahlProdukte.add(anzahl);
} }
public void setKunde(Kunden kunde) { // Ändert die Anzahl eines Produkts im Warenkorb
this.kunde = kunde; 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.");
} }
public float berechneGesamtpreis() { // 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; float gesamtpreis = 0;
for (int i = 0; i < produkte.size(); i++) { for (WarenkorbEintrag eintrag : eintraege) {
gesamtpreis += produkte.get(i).getPreis() * anzahlProdukte.get(i); gesamtpreis += eintrag.getProdukt().getPreis() * eintrag.getAnzahl();
} }
return gesamtpreis; return gesamtpreis;
} }
public float berechneGesamtgewicht() { // Berechnet die Versandkosten basierend auf dem Gesamtgewicht
float gesamtgewicht = 0;
for (int i = 0; i < produkte.size(); i++) {
gesamtgewicht += produkte.get(i).getGewicht() * anzahlProdukte.get(i);
}
return gesamtgewicht;
}
public float berechneVersandkosten() { public float berechneVersandkosten() {
float gewicht = berechneGesamtgewicht(); float gesamtgewicht = 0;
if (gewicht <= 1) { for (WarenkorbEintrag eintrag : eintraege) {
return 5; gesamtgewicht += eintrag.getProdukt().getGewicht() * eintrag.getAnzahl();
} else if (gewicht <= 2.5) { }
return 8;
if (gesamtgewicht <= 1) {
return 5; // Versandkosten für < 1 kg
} else if (gesamtgewicht <= 2.5) {
return 8; // Versandkosten für < 2.5 kg
} else { } else {
return 10; 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() { public void printWarenkorb() {
System.out.println("Warenkorb:"); System.out.println(this);
for (int i = 0; i < produkte.size(); i++) { }
Prudukt produkt = produkte.get(i);
System.out.println(produkt + ", Anzahl: " + anzahlProdukte.get(i)); @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");
} }
System.out.println("Gesamtpreis: " + berechneGesamtpreis() + " Euro");
return sb.toString();
} }
} }

View File

@ -0,0 +1,26 @@
public class WarenkorbEintrag {
private Prudukt produkt;
private int anzahl;
public WarenkorbEintrag(Prudukt produkt, int anzahl) {
this.produkt = produkt;
this.anzahl = anzahl;
}
public Prudukt getProdukt() {
return produkt;
}
public int getAnzahl() {
return anzahl;
}
public void setAnzahl(int anzahl) {
this.anzahl = anzahl;
}
@Override
public String toString() {
return produkt.getName() + " - Anzahl: " + anzahl + ", Preis: " + produkt.getPreis() + " Euro";
}
}