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 {
private Warenkorb warenkorb;
private float versandkosten;
private LocalDateTime bestellDatum;
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.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
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;
}
@Override
public String toString() {
return "Name: " + name + ", Adresse: " + adresse;
public String getName() {
return name;
}
public String getAdresse() {
return adresse;
}
}

View File

@ -3,6 +3,7 @@ import java.util.List;
import java.util.Scanner;
public class Main {
static String adresse;
static Warenkorb warenkorb = new Warenkorb();
static List<Bestellung> bestellungen = new ArrayList<>();
@ -45,30 +46,64 @@ public class Main {
break;
}
// Benutzer fragen, ob er weiter einkaufen möchte
System.out.println("Möchten Sie weiter einkaufen? (1 für Ja, 0 für Nein)");
einkaufFortsetzen = scanner.nextInt() == 1;
// Optionen für den Benutzer nach dem Hinzufügen anzeigen
boolean optionenAnzeigen = true;
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
System.out.println("Alle Bestellungen:");
for (Bestellung b : bestellungen) {
System.out.println(b);
}
scanner.close();
}
// Methode zur Eingabe von Kundendaten
@ -77,12 +112,12 @@ public class Main {
System.out.println("Geben Sie Ihre Daten ein:");
System.out.print("Name: ");
String name = kundeinfo.nextLine();
String name = kundeinfo.nextLine();
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));
}
}

View File

@ -2,8 +2,9 @@ public class Prudukt {
private String name;
private int id;
private float preis;
private float gewicht; // Gewicht des Produkts
private float gewicht;
// Konstruktor
public Prudukt(String name, int id, float preis, float gewicht) {
this.name = name;
this.id = id;
@ -11,6 +12,14 @@ public class Prudukt {
this.gewicht = gewicht;
}
public String getName() {
return name;
}
public int getId() {
return id;
}
public float getPreis() {
return preis;
}
@ -19,12 +28,8 @@ public class Prudukt {
return gewicht;
}
public int getId() {
return id;
}
@Override
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;
public class Warenkorb {
private List<Prudukt> produkte = new ArrayList<>();
private List<Integer> anzahlProdukte = new ArrayList<>();
private List<WarenkorbEintrag> eintraege = new ArrayList<>();
private Kunden kunde;
// Fügt ein Produkt zum Warenkorb hinzu
public void produktHinzufuegen(Prudukt produkt, int anzahl) {
produkte.add(produkt);
anzahlProdukte.add(anzahl);
eintraege.add(new WarenkorbEintrag(produkt, anzahl));
}
public void setKunde(Kunden kunde) {
this.kunde = kunde;
// Ä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.");
}
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;
for (int i = 0; i < produkte.size(); i++) {
gesamtpreis += produkte.get(i).getPreis() * anzahlProdukte.get(i);
for (WarenkorbEintrag eintrag : eintraege) {
gesamtpreis += eintrag.getProdukt().getPreis() * eintrag.getAnzahl();
}
return gesamtpreis;
}
public float berechneGesamtgewicht() {
float gesamtgewicht = 0;
for (int i = 0; i < produkte.size(); i++) {
gesamtgewicht += produkte.get(i).getGewicht() * anzahlProdukte.get(i);
}
return gesamtgewicht;
}
// Berechnet die Versandkosten basierend auf dem Gesamtgewicht
public float berechneVersandkosten() {
float gewicht = berechneGesamtgewicht();
if (gewicht <= 1) {
return 5;
} else if (gewicht <= 2.5) {
return 8;
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;
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("Warenkorb:");
for (int i = 0; i < produkte.size(); i++) {
Prudukt produkt = produkte.get(i);
System.out.println(produkt + ", Anzahl: " + anzahlProdukte.get(i));
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");
}
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";
}
}