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; + } + } +} + +