From b271beededeced3a5bbbb7bb356534f09b0e61e0 Mon Sep 17 00:00:00 2001
From: nicho <3013379@stud.hs-mannheim.de>
Date: Mon, 21 Oct 2024 11:57:19 +0200
Subject: [PATCH] final
---
.gitignore | 31 +++++++++
OnlineShop.iml | 11 ++++
src/Bestellung.java | 50 +++++++++++++++
src/Main.java | 56 ++++++++++++++++
src/Produkt.java | 77 ++++++++++++++++++++++
src/ShopVerwaltung.java | 139 ++++++++++++++++++++++++++++++++++++++++
src/Warenkorb.java | 48 ++++++++++++++
7 files changed, 412 insertions(+)
create mode 100644 .gitignore
create mode 100644 OnlineShop.iml
create mode 100644 src/Bestellung.java
create mode 100644 src/Main.java
create mode 100644 src/Produkt.java
create mode 100644 src/ShopVerwaltung.java
create mode 100644 src/Warenkorb.java
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..b22a539
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,31 @@
+### IntelliJ IDEA ###
+out/
+!**/src/main/**/out/
+!**/src/test/**/out/
+
+### Eclipse ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+bin/
+!**/src/main/**/bin/
+!**/src/test/**/bin/
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+.DS_Store
+
+.idea/
\ No newline at end of file
diff --git a/OnlineShop.iml b/OnlineShop.iml
new file mode 100644
index 0000000..c90834f
--- /dev/null
+++ b/OnlineShop.iml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Bestellung.java b/src/Bestellung.java
new file mode 100644
index 0000000..23d0436
--- /dev/null
+++ b/src/Bestellung.java
@@ -0,0 +1,50 @@
+import java.util.ArrayList;
+
+public class Bestellung {
+ public final static ArrayList bestellungen = new ArrayList<>();
+
+
+ private Warenkorb warenkorb;
+ private String name;
+ private String anschrift;
+ private long bestelldatum;
+
+ public Bestellung(Warenkorb warenkorb, long bestelldatum, String anschrift, String name) {
+ this.warenkorb = warenkorb;
+ this.bestelldatum = bestelldatum;
+ this.anschrift = anschrift;
+ this.name = name;
+ }
+
+ public Warenkorb getWarenkorb() {
+ return warenkorb;
+ }
+
+ public long getBestelldatum() {
+ return bestelldatum;
+ }
+
+ public String getAnschrift() {
+ return anschrift;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setWarenkorb(Warenkorb warenkorb) {
+ this.warenkorb = warenkorb;
+ }
+
+ public void setBestelldatum(long bestelldatum) {
+ this.bestelldatum = bestelldatum;
+ }
+
+ public void setAnschrift(String anschrift) {
+ this.anschrift = anschrift;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+}
diff --git a/src/Main.java b/src/Main.java
new file mode 100644
index 0000000..01f722b
--- /dev/null
+++ b/src/Main.java
@@ -0,0 +1,56 @@
+import java.util.ArrayList;
+import java.util.Scanner;
+
+public class Main {
+ public static void main(String[] args) {
+ Scanner scanner = new Scanner(System.in);
+ ShopVerwaltung shop = new ShopVerwaltung();
+
+ while (true) {
+ System.out.println("Online Shop:");
+ System.out.println("1. Produkte anzeigen");
+ System.out.println("2. Produkt zum Warenkorb hinzufügen");
+ System.out.println("3. Warenkorb überarbeiten");
+ System.out.println("4. Warenkorb anzeigen");
+ System.out.println("5. Bestellung tätigen");
+ System.out.println("6. Alle Bestellungen anzeigen");
+ System.out.println("7. Programm beenden");
+ System.out.print("Auswahl tätigen: ");
+
+ int auswahl = 0;
+ try {
+ auswahl = scanner.nextInt();
+ } catch (Exception e) {
+ System.out.println("Ungültige Eingabe, nur Zahlen als Eingabe möglich.");
+ break;
+ }
+
+ switch (auswahl) {
+ case 1:
+ shop.produkteAnzeigen();
+ break;
+ case 2:
+ shop.produktZumWarenkorbHinzufuegen();
+ break;
+ case 3:
+ shop.warenkorbBearbeiten();
+ break;
+ case 4:
+ shop.warenkorbAnzeigen();
+ break;
+ case 5:
+ shop.bestellungTaetigen();
+ break;
+ case 6:
+ shop.alleBestellungenAnzeigen();
+ break;
+ case 7:
+ System.out.println("Programm beendet.");
+ return;
+ default:
+ System.out.println("Ungültige Auswahl.");
+ break;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Produkt.java b/src/Produkt.java
new file mode 100644
index 0000000..31aa27e
--- /dev/null
+++ b/src/Produkt.java
@@ -0,0 +1,77 @@
+import java.util.ArrayList;
+
+public class Produkt {
+ public final static ArrayList produktListe = new ArrayList<>();
+
+ static {
+ produktListe.add(new Produkt(17, 250.00, 3.99, "Gieskanne", "Premium Gärtner-Gieskanne"));
+ produktListe.add(new Produkt(123, 120.00, 21.98, "Hut", "Perfekt für die Hutablage"));
+ produktListe.add(new Produkt(7, 200.00, 3.99, "Dosenwurst", "LWWRSCHT: das Pfälzer Original, nur kurz im Angebot"));
+ produktListe.add(new Produkt(23, 1300.00, 18.99, "Gartenschlauch", "10 m, dehnbar bis auf die doppelte Länge"));
+ produktListe.add(new Produkt(99, 287.00, 2.99, "Schraubenset", "100 zufällig ausgewählte Schrauben"));
+ produktListe.add(new Produkt(13, 900.00, 25.00, "Akkuschrauber", "Mit extra großem Drehmoment"));
+ }
+
+ private double preis;
+ private double gewicht;
+ private int bestand;
+ private String name;
+ private String beschreibung;
+
+ public Produkt(int bestand, double gewicht, double preis, String name, String beschreibung) {
+ this.bestand = bestand;
+ this.gewicht = gewicht;
+ this.preis = preis;
+ this.name = name;
+ this.beschreibung = beschreibung;
+ }
+
+ public static Produkt produktfinden(String produktname) {
+ for (Produkt produkt : produktListe) {
+ if (produkt.getName().equalsIgnoreCase(produktname)) {
+ return produkt;
+ }
+ }
+ return null;
+ }
+
+ public String getBeschreibung() {
+ return beschreibung;
+ }
+
+ public void setBeschreibung(String beschreibung) {
+ this.beschreibung = beschreibung;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public double getPreis() {
+ return preis;
+ }
+
+ public double getGewicht() {
+ return gewicht;
+ }
+
+ public int getBestand() {
+ return bestand;
+ }
+
+ public void setPreis(double preis) {
+ this.preis = preis;
+ }
+
+ public void setBestand(int bestand) {
+ this.bestand = bestand;
+ }
+
+ public void setGewicht(double gewicht) {
+ this.gewicht = gewicht;
+ }
+}
diff --git a/src/ShopVerwaltung.java b/src/ShopVerwaltung.java
new file mode 100644
index 0000000..837e25d
--- /dev/null
+++ b/src/ShopVerwaltung.java
@@ -0,0 +1,139 @@
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Scanner;
+
+public class ShopVerwaltung {
+ private Warenkorb warenkorb = new Warenkorb();
+ private ArrayList bestellungen = new ArrayList<>();
+ private Scanner scanner = new Scanner(System.in);
+
+ // 1. Produkte anzeigen
+ public void produkteAnzeigen() {
+ System.out.println("Verfügbare Produkte:");
+ for (Produkt produkt : Produkt.produktListe) {
+ System.out.println(produkt.getName() + " - " + produkt.getBeschreibung() + " - Preis: " + produkt.getPreis() + " € - Bestand: " + produkt.getBestand());
+ }
+ }
+
+ // 2. Produkt zum Warenkorb hinzufügen
+ public void produktZumWarenkorbHinzufuegen() {
+ System.out.println("Geben Sie den Namen des Produkts ein:");
+ String produktName = scanner.next();
+ Produkt produkt = Produkt.produktfinden(produktName);
+ if (produkt != null) {
+ System.out.println("Geben Sie die Anzahl ein:");
+ int anzahl = scanner.nextInt();
+ if (anzahl < 1){
+ System.out.println("Anzahl darf nicht kleiner als 1 sein");
+ return;
+ }
+ if (anzahl <= produkt.getBestand()) {
+ warenkorb.produktHinzufuegen(produkt, anzahl);
+ produkt.setBestand(produkt.getBestand() - anzahl); // Bestand verringern
+ System.out.println("Produkt wurde zum Warenkorb hinzugefügt.");
+ } else {
+ System.out.println("Nicht genug Bestand verfügbar.");
+ }
+ } else {
+ System.out.println("Produkt nicht gefunden.");
+ }
+ }
+
+ // 3. Warenkorb überarbeiten (Anzahl ändern oder löschen)
+ public void warenkorbBearbeiten() {
+ System.out.println("Möchten Sie die Anzahl eines Produkts ändern oder ein Produkt löschen? (ändern/löschen)");
+ String aktion = scanner.next();
+ if (aktion.equalsIgnoreCase("ändern")) {
+ System.out.println("Welches Produkt möchten Sie ändern?");
+ String produktName = scanner.next();
+ Produkt produkt = Produkt.produktfinden(produktName);
+ if (produkt != null && warenkorb.getProduktanzahl().containsKey(produkt)) {
+ System.out.println("Geben Sie die neue Anzahl ein:");
+ int neueAnzahl = scanner.nextInt();
+ if (neueAnzahl < 1){
+ System.out.println("Anzahl darf nicht kleiner als 1 sein");
+ return;
+ }
+ if (neueAnzahl <= produkt.getBestand()) {
+ produkt.setBestand(produkt.getBestand() + warenkorb.getProduktanzahl().get(produkt));
+ warenkorb.produktHinzufuegen(produkt, neueAnzahl);
+ produkt.setBestand(produkt.getBestand() - neueAnzahl);
+ System.out.println("Anzahl wurde aktualisiert.");
+ } else {
+ System.out.println("Nicht genug Bestand verfügbar.");
+ }
+ } else {
+ System.out.println("Produkt nicht im Warenkorb.");
+ }
+ } else if (aktion.equalsIgnoreCase("löschen")) {
+ System.out.println("Welches Produkt möchten Sie löschen?");
+ String produktName = scanner.next();
+ Produkt produkt = Produkt.produktfinden(produktName);
+ if (produkt != null && warenkorb.getProduktanzahl().containsKey(produkt)) {
+ produkt.setBestand(produkt.getBestand() + warenkorb.getProduktanzahl().get(produkt));
+ warenkorb.getProduktanzahl().remove(produkt);
+ System.out.println("Produkt wurde aus dem Warenkorb entfernt.");
+ } else {
+ System.out.println("Produkt nicht im Warenkorb.");
+ }
+ }
+ }
+
+ // 4. Warenkorb anzeigen
+ public void warenkorbAnzeigen() {
+
+ if (warenkorb.getProduktanzahl().isEmpty() || warenkorb == null){
+ System.out.println("Warenkorb ist leer.");
+ return;
+ }
+ System.out.println("Warenkorb:");
+ for (Produkt produkt : warenkorb.getProduktanzahl().keySet()) {
+ int anzahl = warenkorb.getProduktanzahl().get(produkt);
+ System.out.println(produkt.getName() + " - Anzahl: " + anzahl + " - Preis pro Stück: " + produkt.getPreis() + " €");
+ }
+ System.out.println("Gesamtpreis: " + warenkorb.preisBerechnen() + " €");
+ System.out.println("Versandkosten: " + warenkorb.versandkostenBerechnen() + " €");
+ System.out.println("Gesamtkosten: " + (warenkorb.preisBerechnen() + warenkorb.versandkostenBerechnen()) + " €");
+ }
+
+ // 5. Bestellung tätigen
+ public void bestellungTaetigen() {
+ if (warenkorb == null || warenkorb.getProduktanzahl().isEmpty()){
+ System.out.println("Keine Bestellung möglich, der Warenkorb ist leer.");
+ return;
+ }
+ scanner.nextLine();
+ System.out.println("Bitte geben Sie Ihren Namen ein:");
+ String name = scanner.nextLine();
+ System.out.println("Bitte geben Sie Ihre Anschrift ein:");
+ String anschrift = scanner.nextLine();
+
+ // Bestellung erstellen
+ Bestellung bestellung = new Bestellung(warenkorb, System.currentTimeMillis(), anschrift, name);
+ Bestellung.bestellungen.add(bestellung);
+ System.out.println("Bestellung erfolgreich abgeschlossen!");
+
+ // Warenkorb leeren
+ warenkorb = new Warenkorb();
+ }
+
+ // 6. Alle Bestellungen anzeigen
+ public void alleBestellungenAnzeigen() {
+ System.out.println("Alle Bestellungen:");
+ for (Bestellung bestellung : Bestellung.bestellungen) {
+ System.out.println("Kunde: " + bestellung.getName() + " - Anschrift: " + bestellung.getAnschrift());
+ System.out.println("Bestelldatum: " + new SimpleDateFormat("dd.MM.yyyy hh:mm:ss").format(new Date(bestellung.getBestelldatum())));
+ System.out.println("Warenkorb:");
+ for (Produkt produkt : bestellung.getWarenkorb().getProduktanzahl().keySet()) {
+ int anzahl = bestellung.getWarenkorb().getProduktanzahl().get(produkt);
+ System.out.println(produkt.getName() + " - Anzahl: " + anzahl);
+ }
+ double preis = bestellung.getWarenkorb().preisBerechnen();
+ double versand = bestellung.getWarenkorb().versandkostenBerechnen();
+ System.out.println("Gesamtpreis: " + (preis + versand) + " € (inkl. Versandkosten von " + versand + " €)");
+ System.out.println("------------");
+ }
+ }
+}
+
diff --git a/src/Warenkorb.java b/src/Warenkorb.java
new file mode 100644
index 0000000..df630f1
--- /dev/null
+++ b/src/Warenkorb.java
@@ -0,0 +1,48 @@
+import java.util.HashMap;
+
+public class Warenkorb {
+ private final HashMap produktanzahl = new HashMap<>();
+
+ public HashMap getProduktanzahl() {
+ return produktanzahl;
+ }
+
+ public void produktHinzufuegen(Produkt produkt, int anzahl) {
+ produktanzahl.put(produkt, anzahl);
+ }
+
+ public double gewichtBerechnen() {
+ double finalesGewicht = 0;
+ for (Produkt produkt : produktanzahl.keySet()) {
+ int anzahl = produktanzahl.get(produkt);
+ double gewicht = produkt.getGewicht() * anzahl;
+ finalesGewicht += gewicht;
+ }
+ return finalesGewicht;
+ }
+
+
+ public double preisBerechnen() {
+ double finalerPreis = 0;
+ for (Produkt produkt : produktanzahl.keySet()) {
+ int anzahl = produktanzahl.get(produkt);
+ double preis = produkt.getPreis() * anzahl;
+ finalerPreis += preis;
+
+ }
+ return finalerPreis;
+ }
+
+ public double versandkostenBerechnen() {
+ double finalesGewicht = gewichtBerechnen();
+ if (finalesGewicht < 1000) {
+ return 5.0;
+ } else if (finalesGewicht < 2500) {
+ return 8.0;
+ } else {
+ return 10;
+ }
+ }
+}
+
+