diff --git a/src/de/hs_mannheim/informatik/domain/ShopVerwaltung.java b/src/de/hs_mannheim/informatik/domain/ShopVerwaltung.java index 7fbcf9b..79701f1 100644 --- a/src/de/hs_mannheim/informatik/domain/ShopVerwaltung.java +++ b/src/de/hs_mannheim/informatik/domain/ShopVerwaltung.java @@ -3,143 +3,120 @@ package de.hs_mannheim.informatik.domain; 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:"); + public ArrayList produkteAnzeigen() { + ArrayList produktListe = new ArrayList<>(); for (Produkt produkt : Produkt.produktListe) { - System.out.println(produkt.getName() + " - " + produkt.getBeschreibung() + " - Preis: " + produkt.getPreis() + " € - Bestand: " + produkt.getBestand()); + produktListe.add(produkt.getName() + " - " + produkt.getBeschreibung() + " - Preis: " + produkt.getPreis() + " € - Bestand: " + produkt.getBestand()); } + return produktListe; } - // 2. de.hs_mannheim.informatik.domain.Produkt zum de.hs_mannheim.informatik.domain.Warenkorb hinzufügen - public void produktZumWarenkorbHinzufuegen() { - System.out.println("Geben Sie den Namen des Produkts ein:"); - String produktName = scanner.next(); + // 2. Produkt zum Warenkorb hinzufügen + public String produktZumWarenkorbHinzufuegen(String produktName, int anzahl) { 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; + return "Anzahl darf nicht kleiner als 1 sein"; } if (anzahl <= produkt.getBestand()) { warenkorb.produktHinzufuegen(produkt, anzahl); - produkt.setBestand(produkt.getBestand() - anzahl); // Bestand verringern - System.out.println("Produkt wurde zum Warenkorb hinzugefügt."); + produkt.setBestand(produkt.getBestand() - anzahl); + return "Produkt wurde zum Warenkorb hinzugefügt."; } else { - System.out.println("Nicht genug Bestand verfügbar."); + return "Nicht genug Bestand verfügbar."; } } else { - System.out.println("Produkt nicht gefunden."); + return "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(); + public String warenkorbBearbeiten(String aktion, String produktName, int neueAnzahl) { + Produkt produkt = Produkt.produktFinden(produktName); + if (produkt == null || !warenkorb.getProduktanzahl().containsKey(produkt)) { + return "Produkt nicht im Warenkorb."; + } + 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."); - } + if (neueAnzahl < 1) { + return "Anzahl darf nicht kleiner als 1 sein"; + } + if (neueAnzahl <= produkt.getBestand()) { + produkt.setBestand(produkt.getBestand() + warenkorb.getProduktanzahl().get(produkt)); + warenkorb.produktHinzufuegen(produkt, neueAnzahl); + produkt.setBestand(produkt.getBestand() - neueAnzahl); + return "Anzahl wurde aktualisiert."; } else { - System.out.println("Produkt nicht im Warenkorb."); + return "Nicht genug Bestand verfügbar."; } } 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."); - } + produkt.setBestand(produkt.getBestand() + warenkorb.getProduktanzahl().get(produkt)); + warenkorb.getProduktanzahl().remove(produkt); + return "Produkt wurde aus dem Warenkorb entfernt."; } + return "Ungültige Aktion."; } // 4. Warenkorb anzeigen - public void warenkorbAnzeigen() { - - if (warenkorb.getProduktanzahl().isEmpty() || warenkorb == null) { - System.out.println("Warenkorb ist leer."); - return; + public ArrayList warenkorbAnzeigen() { + ArrayList warenkorbListe = new ArrayList<>(); + if (warenkorb.getProduktanzahl().isEmpty()) { + warenkorbListe.add("Warenkorb ist leer."); + return warenkorbListe; } - 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() + " €"); + warenkorbListe.add(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()) + " €"); + warenkorbListe.add("Gesamtpreis: " + warenkorb.preisBerechnen() + " €"); + warenkorbListe.add("Versandkosten: " + warenkorb.versandkostenBerechnen() + " €"); + warenkorbListe.add("Gesamtkosten: " + (warenkorb.preisBerechnen() + warenkorb.versandkostenBerechnen()) + " €"); + return warenkorbListe; } // 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; + public String bestellungTaetigen(String name, String anschrift) { + if (warenkorb.getProduktanzahl().isEmpty()) { + return "Keine Bestellung möglich, der Warenkorb ist leer."; } - 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(); + return "Bestellung erfolgreich abgeschlossen!"; } // 6. Alle Bestellungen anzeigen - public void alleBestellungenAnzeigen() { + public ArrayList alleBestellungenAnzeigen() { + ArrayList bestellListe = new ArrayList<>(); if (Bestellung.bestellungen.isEmpty()) { - System.out.println("Es wurde noch keine Bestellung getätigt."); - return; - } else { - 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("------------"); - } + bestellListe.add("Es wurde noch keine Bestellung getätigt."); + return bestellListe; } + + for (Bestellung bestellung : Bestellung.bestellungen) { + bestellListe.add("Kunde: " + bestellung.getName() + " - Anschrift: " + bestellung.getAnschrift()); + bestellListe.add("Bestelldatum: " + new SimpleDateFormat("dd.MM.yyyy hh:mm:ss").format(new Date(bestellung.getBestelldatum()))); + bestellListe.add("Warenkorb:"); + for (Produkt produkt : bestellung.getWarenkorb().getProduktanzahl().keySet()) { + int anzahl = bestellung.getWarenkorb().getProduktanzahl().get(produkt); + bestellListe.add(produkt.getName() + " - Anzahl: " + anzahl); + } + double preis = bestellung.getWarenkorb().preisBerechnen(); + double versand = bestellung.getWarenkorb().versandkostenBerechnen(); + bestellListe.add("Gesamtpreis: " + (preis + versand) + " € (inkl. Versandkosten von " + versand + " €)"); + bestellListe.add("------------"); + } + return bestellListe; } -} \ No newline at end of file +} diff --git a/src/de/hs_mannheim/informatik/main/Main.java b/src/de/hs_mannheim/informatik/main/Main.java index 88bbcd8..469a196 100644 --- a/src/de/hs_mannheim/informatik/main/Main.java +++ b/src/de/hs_mannheim/informatik/main/Main.java @@ -12,7 +12,7 @@ public class Main { while (true) { System.out.println("Online Shop:"); System.out.println("1. Produkte anzeigen"); - System.out.println("2. Warenkorb hinzufügen"); + 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"); @@ -23,6 +23,7 @@ public class Main { int auswahl = 0; try { auswahl = scanner.nextInt(); + scanner.nextLine(); // Clear buffer } catch (Exception e) { System.out.println("Ungültige Eingabe, nur Zahlen als Eingabe möglich."); break; @@ -30,22 +31,47 @@ public class Main { switch (auswahl) { case 1: - shop.produkteAnzeigen(); + for (String produkt : shop.produkteAnzeigen()) { + System.out.println(produkt); + } break; case 2: - shop.produktZumWarenkorbHinzufuegen(); + System.out.println("Geben Sie den Namen des Produkts ein:"); + String produktName = scanner.nextLine(); + System.out.println("Geben Sie die Anzahl ein:"); + int anzahl = scanner.nextInt(); + scanner.nextLine(); // Clear buffer + System.out.println(shop.produktZumWarenkorbHinzufuegen(produktName, anzahl)); break; case 3: - shop.warenkorbBearbeiten(); + System.out.println("Möchten Sie die Anzahl eines Produkts ändern oder ein Produkt löschen? (ändern/löschen)"); + String aktion = scanner.nextLine(); + System.out.println("Welches Produkt möchten Sie ändern/löschen?"); + produktName = scanner.nextLine(); + int neueAnzahl = 0; + if (aktion.equalsIgnoreCase("ändern")) { + System.out.println("Geben Sie die neue Anzahl ein:"); + neueAnzahl = scanner.nextInt(); + scanner.nextLine(); // Clear buffer + } + System.out.println(shop.warenkorbBearbeiten(aktion, produktName, neueAnzahl)); break; case 4: - shop.warenkorbAnzeigen(); + for (String warenkorb : shop.warenkorbAnzeigen()) { + System.out.println(warenkorb); + } break; case 5: - shop.bestellungTaetigen(); + 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(); + System.out.println(shop.bestellungTaetigen(name, anschrift)); break; case 6: - shop.alleBestellungenAnzeigen(); + for (String bestellung : shop.alleBestellungenAnzeigen()) { + System.out.println(bestellung); + } break; case 7: System.out.println("Programm beendet.");