alles angepasst und geprüft online shop funktioniert, fragen ob die prudukte in onlinshop, sich ändern ,müssen,

main
Zabih Mansuri 2024-10-22 16:00:37 +02:00
parent 9b2bf0948b
commit 7fa82a0f35
11 changed files with 152 additions and 122 deletions

View File

@ -6,6 +6,7 @@ public class Bestellung {
private float versandkosten; private float versandkosten;
private LocalDateTime bestellDatum; private LocalDateTime bestellDatum;
// Konstruktor mit Warenkorb und Versandkosten
public Bestellung(Warenkorb warenkorb, float versandkosten) { public Bestellung(Warenkorb warenkorb, float versandkosten) {
if (warenkorb == null) { if (warenkorb == null) {
throw new IllegalArgumentException("Warenkorb darf nicht null sein."); throw new IllegalArgumentException("Warenkorb darf nicht null sein.");
@ -13,6 +14,7 @@ public class Bestellung {
if (versandkosten < 0) { if (versandkosten < 0) {
throw new IllegalArgumentException("Versandkosten dürfen nicht negativ sein."); 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 this.bestellDatum = LocalDateTime.now(); // Bestelldatum setzen
@ -34,10 +36,16 @@ public class Bestellung {
return warenkorb.berechneGesamtPreis() + versandkosten; return warenkorb.berechneGesamtPreis() + versandkosten;
} }
@Override @Override
public String toString() { public String toString() {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm:ss"); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm:ss");
return String.format("Bestellung am %s:\n%sVersandkosten: %.2f Euro\nGesamtpreis: %.2f Euro", Kunden kunde = warenkorb.getKunde(); // Kundenobjekt vom Warenkorb abrufen
bestellDatum.format(formatter), warenkorb.toString(), versandkosten, berechneGesamtpreis()); String kundenName = kunde != null ? kunde.getName() : "Unbekannt";
String adresse = kunde != null ? kunde.getAdresse() : "Keine Adresse angegeben";
return String.format("Bestellung am %s:\nWarenkorb für: %s\n%sVersandkosten: %.2f Euro\nGesamtpreis: %.2f Euro\nAdresse: %s",
bestellDatum.format(formatter), kundenName, warenkorb.toString(), versandkosten, berechneGesamtpreis(), adresse);
} }
} }

151
Main.java
View File

@ -1,123 +1,78 @@
import java.util.ArrayList;
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 List<Bestellung> bestellungen = new ArrayList<>();
public static void main(String[] args) { public static void main(String[] args) {
// Erstellen von Produkten mit Name, ID, Preis und Gewicht
Prudukt gabel = new Prudukt("Gabel", 1, 1.12F, 0.1F);
Prudukt messer = new Prudukt("Messer", 2, 1.14F, 0.2F);
Prudukt loeffel = new Prudukt("Löffel", 3, 1.15F, 0.15F);
Scanner scanner = new Scanner(System.in); Scanner scanner = new Scanner(System.in);
boolean einkaufFortsetzen = true; Onlineshop shop = new Onlineshop();
// Schleife, um Produkte in den Warenkorb hinzuzufügen // Produkte erstellen und zum Shop hinzufügen
while (einkaufFortsetzen) { Produkt gabel = new Produkt("Gabel", 1, 1.12F, 0.1F, 100);
// Produktliste anzeigen Produkt messer = new Produkt("Messer", 2, 1.14F, 0.2F, 100);
Produkt loeffel = new Produkt("Löffel", 3, 1.15F, 0.15F, 100);
shop.produktHinzufuegen(gabel);
shop.produktHinzufuegen(messer);
shop.produktHinzufuegen(loeffel);
// Hauptmenü-Schleife für den Benutzer
boolean weiterEinkaufen = true;
while (weiterEinkaufen) {
System.out.println("Verfügbare Produkte:"); System.out.println("Verfügbare Produkte:");
System.out.println(gabel); for (Produkt produkt : shop.getProdukte()) {
System.out.println(messer); System.out.println(produkt);
System.out.println(loeffel); }
// Produkt zum Warenkorb hinzufügen // Benutzereingaben (ID und Anzahl des Produkts)
System.out.println("Geben Sie die ID des gewünschten Produkts ein:"); System.out.println("Geben Sie die ID des gewünschten Produkts ein:");
int id = scanner.nextInt(); int id = scanner.nextInt();
System.out.println("Geben Sie die Anzahl ein:"); System.out.println("Geben Sie die Anzahl ein:");
int anzahl = scanner.nextInt(); int anzahl = scanner.nextInt();
// Auswahl des Produkts basierend auf der ID // Produkt zum Warenkorb hinzufügen
switch (id) { boolean hinzugefuegt = shop.produktZuWarenkorbHinzufuegen(id, anzahl);
if (!hinzugefuegt) {
System.out.println("Ungültige Produkt-ID.");
}
// Menü nach Produktauswahl anzeigen
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: case 1:
warenkorb.produktHinzufuegen(gabel, anzahl); 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();
shop.produktAendern(produktId, neueAnzahl);
break; break;
case 2: case 2:
warenkorb.produktHinzufuegen(messer, anzahl); System.out.println("Geben Sie die ID des Produkts ein, das Sie entfernen möchten:");
int removeId = scanner.nextInt();
shop.produktEntfernen(removeId);
break; break;
case 3: case 3:
warenkorb.produktHinzufuegen(loeffel, anzahl); continue; // zurück ins Hauptmenü, um weiter einzukaufen
case 4:
System.out.println("Geben Sie Ihre Adresse ein:");
scanner.nextLine(); // Zeilenumbruch nach nextInt
String adresse = scanner.nextLine();
System.out.println("Geben Sie Ihren Namen ein:");
String name = scanner.nextLine();
// Setze den Kunden im Warenkorb
shop.setKunde(name, adresse);
// Bestellung aufgeben
shop.bestellungAufgeben(adresse, name);
weiterEinkaufen = false; // Beende die Schleife nach Bestellung
break; break;
default: default:
System.out.println("Ungültige Produkt-ID."); System.out.println("Ungültige Auswahl.");
break;
} }
// 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;
}
}
} }
// Alle Bestellungen anzeigen
System.out.println("Alle Bestellungen:");
for (Bestellung b : bestellungen) {
System.out.println(b);
}
scanner.close(); scanner.close();
} }
// Methode zur Eingabe von Kundendaten
static void kundenkauf() {
Scanner kundeinfo = new Scanner(System.in);
System.out.println("Geben Sie Ihre Daten ein:");
System.out.print("Name: ");
String name = kundeinfo.nextLine();
System.out.print("Adresse: ");
adresse = kundeinfo.nextLine();
// Setzen des Kunden im Warenkorb mit Hilfe von ki den logig herrausgefunden
warenkorb.setKunde(new Kunden(name, adresse));
}
} }

58
Onlineshop.java 100644
View File

@ -0,0 +1,58 @@
import java.util.ArrayList;
import java.util.List;
public class Onlineshop {
private List<Produkt> produkte; // Achte darauf, dass der Typ korrekt ist
private Warenkorb warenkorb;
private List<Bestellung> bestellungen;
public Onlineshop() {
this.produkte = new ArrayList<>();
this.warenkorb = new Warenkorb();
this.bestellungen = new ArrayList<>();
}
// API: Produkt hinzufügen
public void produktHinzufuegen(Produkt produkt) { // Achte darauf, dass der Typ korrekt ist
produkte.add(produkt);
}
// API: Produkte zurückgeben (für Anzeige in der UI)
public List<Produkt> getProdukte() {
return produkte;
}
// API: Produkt in den Warenkorb legen
public boolean produktZuWarenkorbHinzufuegen(int produktId, int anzahl) {
for (Produkt produkt : produkte) { // Achte darauf, dass der Typ korrekt ist
if (produkt.getId() == produktId) {
warenkorb.produktHinzufuegen(produkt, anzahl);
return true;
}
}
return false; // Produkt nicht gefunden
}
// API: Produktanzahl im Warenkorb ändern
public void produktAendern(int produktId, int neueAnzahl) {
warenkorb.produktAendern(produktId, neueAnzahl);
}
// API: Produkt aus Warenkorb entfernen
public void produktEntfernen(int produktId) {
warenkorb.produktEntfernen(produktId);
}
// API: Bestellung aufgeben
public void bestellungAufgeben(String adresse, String name) {
Bestellung bestellung = new Bestellung(warenkorb, warenkorb.berechneVersandkosten());
bestellungen.add(bestellung);
System.out.println("Ihre Bestellung wurde erfolgreich aufgegeben:\n" + bestellung);
warenkorb.leeren(); // Warenkorb nach Bestellung leeren
}
// Setze den Kunden im Warenkorb (optional)
public void setKunde(String name, String adresse) {
warenkorb.setKunde(new Kunden(name, adresse));
}
}

View File

@ -1,25 +1,28 @@
public class Prudukt { public class Produkt {
private String name; private String name;
private int id; private int id;
private float preis; private float preis;
private float gewicht; private float gewicht;
private int lagerbestand;
// Konstruktor // Konstruktor
public Prudukt(String name, int id, float preis, float gewicht) { public Produkt(String name, int id, float preis, float gewicht, int lagerbestand) {
this.name = name; this.name = name;
this.id = id; this.id = id;
this.preis = preis; this.preis = preis;
this.gewicht = gewicht; this.gewicht = gewicht;
this.lagerbestand = lagerbestand;
}
// Getter
public int getId() {
return id;
} }
public String getName() { public String getName() {
return name; return name;
} }
public int getId() {
return id;
}
public float getPreis() { public float getPreis() {
return preis; return preis;
} }
@ -30,6 +33,6 @@ public class Prudukt {
@Override @Override
public String toString() { public String toString() {
return String.format("ID: %d, Name: %s, Preis: %.2f Euro, Gewicht: %.2f kg", id, name, preis, gewicht); return String.format("%s - ID: %d, Preis: %.2f Euro, Gewicht: %.2f kg", name, id, preis, gewicht);
} }
} }

View File

@ -1,12 +1,11 @@
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List; // Importiere die List-Schnittstelle
public class Warenkorb { public class Warenkorb {
private List<WarenkorbEintrag> eintraege = new ArrayList<>(); private List<WarenkorbEintrag> eintraege = new ArrayList<>();
private Kunden kunde; private Kunden kunde;
// Fügt ein Produkt zum Warenkorb hinzu von warenkorbeintrag // Fügt ein Produkt zum Warenkorb hinzu
public void produktHinzufuegen(Prudukt produkt, int anzahl) { public void produktHinzufuegen(Produkt produkt, int anzahl) {
eintraege.add(new WarenkorbEintrag(produkt, anzahl)); eintraege.add(new WarenkorbEintrag(produkt, anzahl));
} }
@ -25,7 +24,7 @@ public class Warenkorb {
System.out.println("Produkt nicht im Warenkorb gefunden."); System.out.println("Produkt nicht im Warenkorb gefunden.");
} }
// Löscht ein Produkt aus dem Warenkorb // Entfernt ein Produkt aus dem Warenkorb
public void produktEntfernen(int produktId) { public void produktEntfernen(int produktId) {
for (WarenkorbEintrag eintrag : eintraege) { for (WarenkorbEintrag eintrag : eintraege) {
if (eintrag.getProdukt().getId() == produktId) { if (eintrag.getProdukt().getId() == produktId) {
@ -67,19 +66,26 @@ public class Warenkorb {
this.kunde = kunde; this.kunde = kunde;
} }
// Gibt den Warenkorb und die Produkte aus KI // Gibt den Kunden zurück
public void printWarenkorb() { public Kunden getKunde() {
System.out.println(this); return kunde;
} }
@Override //mit Hilfe von ki // Leert den Warenkorb
public void leeren() {
eintraege.clear();
kunde = null; // Optional: auch den Kunden zurücksetzen
System.out.println("Der Warenkorb wurde geleert.");
}
@Override
public String toString() { public String toString() {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("Warenkorb für: ").append(kunde != null ? kunde.getName() : "Unbekannt").append("\n");
for (WarenkorbEintrag eintrag : eintraege) { for (WarenkorbEintrag eintrag : eintraege) {
sb.append(eintrag.toString()).append("\n"); sb.append(eintrag.toString()).append("\n");
} }
return sb.toString(); return sb.toString();
} }
} }

View File

@ -1,13 +1,13 @@
public class WarenkorbEintrag { public class WarenkorbEintrag {
private Prudukt produkt; private Produkt produkt;
private int anzahl; private int anzahl;
public WarenkorbEintrag(Prudukt produkt, int anzahl) { public WarenkorbEintrag(Produkt produkt, int anzahl) {
this.produkt = produkt; this.produkt = produkt;
this.anzahl = anzahl; this.anzahl = anzahl;
} }
public Prudukt getProdukt() { public Produkt getProdukt() {
return produkt; return produkt;
} }
@ -21,6 +21,6 @@ public class WarenkorbEintrag {
@Override @Override
public String toString() { public String toString() {
return produkt.getName() + " - Anzahl: " + anzahl + ", Preis: " + produkt.getPreis() + " Euro"; return String.format("%s - Anzahl: %d, Preis: %.2f Euro", produkt.getName(), anzahl, produkt.getPreis());
} }
} }