OnlineShop

master
3009594 2024-10-18 18:21:02 +02:00
parent 4d25a7264f
commit 45c16f3ae4
6 changed files with 145 additions and 101 deletions

View File

@ -1,17 +1,16 @@
package OnlineShop.UI; package OnlineShop.UI;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
import java.util.Scanner; import java.util.Scanner;
import OnlineShop.domain.*; import OnlineShop.domain.*;
import OnlineShop.domain.ExceptionsKlassen.KeineProdukteImWarenkorb; import OnlineShop.domain.ExceptionsKlassen.*;
import OnlineShop.domain.ExceptionsKlassen.LeereEingabeException;
import OnlineShop.domain.ExceptionsKlassen.ProduktNichtGefundenException;
public class TUI { public class TUI {
private Kaufhalle kaufhalle; private Kaufhalle kaufhalle;
private Scanner eingabe; private Scanner eingabe = new Scanner(System.in);
private String optionAuswahl;
public TUI() throws FileNotFoundException, ProduktNichtGefundenException { public TUI() throws FileNotFoundException, ProduktNichtGefundenException {
this.kaufhalle = new Kaufhalle(); this.kaufhalle = new Kaufhalle();
@ -23,17 +22,15 @@ public class TUI {
System.out.println(); System.out.println();
if (kaufhalle.produkteLaden()) { if (kaufhalle.produkteLaden()) {
System.out.println("Meine aktuelle Produkte: "); System.out.println("Meine aktuelle Produkte: ");
for (String p : kaufhalle.zeigeProdukte()) for (String p : kaufhalle.zeigeProdukte())
System.out.println(p); System.out.println(p);
} }
System.out.println(); System.out.println();
shwoOptions(); shwoOptions();
} }
private void shwoOptions() throws ProduktNichtGefundenException { private void shwoOptions() throws ProduktNichtGefundenException {
eingabe = new Scanner(System.in);
String optionAuswahl;
boolean programmAktive = true; boolean programmAktive = true;
while (programmAktive) { while (programmAktive) {
System.out.println("Wählen Sie bitte ein Option aus: "); System.out.println("Wählen Sie bitte ein Option aus: ");
@ -47,53 +44,52 @@ public class TUI {
case "1": case "1":
ProdukteAuwählenUI(); ProdukteAuwählenUI();
break; break;
case "2": case "2":
System.out.println("Anzahl Produkte: " + kaufhalle.getAnzahlDerAusgewählteProdukte()); System.out.println("Anzahl Produkte: " + kaufhalle.getAnzahlDerAusgewählteProdukte());
try { try {
for (String p : kaufhalle.zeigeAlleProdukteImWarenkorb()) for (String p : kaufhalle.zeigeAlleProdukteImWarenkorb())
System.out.println(p); System.out.println(p);
double gesamtKosten = kaufhalle.getGesamtKosten();
String formattedPreis = String.format("%.2f", gesamtKosten);
System.out.println("Gesamtkosten: " + formattedPreis);
System.out.println("Möchten Sie die ausgewählte Produkte bestellen Ja/Nein"); System.out.println("Möchten Sie die ausgewählte Produkte bestellen Ja/Nein");
System.out.print(">"); System.out.print(">");
String bestellung = eingabe.nextLine(); String bestellung = eingabe.nextLine();
if (bestellung.equalsIgnoreCase("ja")) { if (bestellung.equalsIgnoreCase("ja")) {
System.out.println("Geben Sie bitte Ihren Name ein:"); System.out.println("Geben Sie bitte Ihren Name ein:");
System.out.println(">"); System.out.print(">");
String name = eingabe.nextLine(); String name = eingabe.nextLine();
System.out.println("Geben Sie bitte Ihren Anschrift ein:"); System.out.println("Geben Sie bitte Ihren Anschrift ein:");
System.out.println(">"); System.out.print(">");
String anschrift = eingabe.nextLine(); String anschrift = eingabe.nextLine();
try { try {
kaufhalle.getKundenDaten(name, anschrift); kaufhalle.getKundenDaten(name, anschrift);
kaufhalle.sendBestellung(); System.out.println(kaufhalle.sendBestellung());
System.out.println("Betrag bitte eingeben: ");
System.out.print(">");
double betrag = eingabe.nextDouble();
if (kaufhalle.getBetrag(betrag))
kaufhalle.speichereBestellung();
}catch (LeereEingabeException e) {
} catch (LeereEingabeException e) {
System.out.println(e.getMessage()); System.out.println(e.getMessage());
} }
} } else
else
shwoOptions(); shwoOptions();
} catch (KeineProdukteImWarenkorb e) { } catch (KeineProdukteImWarenkorb e) {
System.out.println(e.getMessage()); System.out.println(e.getMessage());
} }
break; break;
} }
} }
} }
private void ProdukteAuwählenUI() throws ProduktNichtGefundenException { private void ProdukteAuwählenUI() throws ProduktNichtGefundenException {
eingabe = new Scanner(System.in);
boolean einkaufAktive = true; boolean einkaufAktive = true;
String weiterEinkaufen; String weiterEinkaufen;
String optionAuswahl;
while (einkaufAktive) { while (einkaufAktive) {
System.out.println("Wählen Sie bitte ein Option aus: "); System.out.println("Wählen Sie bitte ein Option aus: ");
System.out.println("1. Prpdukte auswählen und zu Ihrem Warenkorb senden"); System.out.println("1. Prpdukte auswählen und zu Ihrem Warenkorb senden");
@ -111,7 +107,8 @@ public class TUI {
} catch (ProduktNichtGefundenException e) { } catch (ProduktNichtGefundenException e) {
System.out.println(e.getMessage()); System.out.println(e.getMessage());
} }
System.out.println("Anzahl Ihre ausgewählte Produkte: " + kaufhalle.getAnzahlDerAusgewählteProdukte()); System.out.println(
"Anzahl Ihre ausgewählte Produkte: " + kaufhalle.getAnzahlDerAusgewählteProdukte());
System.out.println("Weitere Produkte auswählen Ja/Nein"); System.out.println("Weitere Produkte auswählen Ja/Nein");
System.out.print(">"); System.out.print(">");
weiterEinkaufen = eingabe.nextLine(); weiterEinkaufen = eingabe.nextLine();
@ -121,17 +118,18 @@ public class TUI {
break; break;
} }
break; break;
case "2": case "2":
while (true) { while (true) {
System.out.print("Name der Produkt: > "); System.out.print("Name der Produkt: > ");
String produktName = eingabe.nextLine(); String produktName = eingabe.nextLine();
if (kaufhalle.loescheProduktausWarenkorb(produktName) == true) { if (kaufhalle.loescheProduktausWarenkorb(produktName) == true) {
System.out.println("Produkt erfolgreich gelöscht"); System.out.println("Produkt erfolgreich gelöscht");
System.out.println("Anzahl Ihre ausgewählte Produkte: " + kaufhalle.getAnzahlDerAusgewählteProdukte()); System.out.println(
}else "Anzahl Ihre ausgewählte Produkte: " + kaufhalle.getAnzahlDerAusgewählteProdukte());
} else
System.out.println("Produkt ist nicht in Ihrem Warenkorb"); System.out.println("Produkt ist nicht in Ihrem Warenkorb");
System.out.println("Weiter Produkte aus dem Wrenkorb löschen Ja/Nein"); System.out.println("Weiter Produkte aus dem Wrenkorb löschen Ja/Nein");
System.out.print(">"); System.out.print(">");
String weitereProdukteLoeschen = eingabe.nextLine(); String weitereProdukteLoeschen = eingabe.nextLine();
@ -141,12 +139,12 @@ public class TUI {
break; break;
} }
break; break;
case "3": case "3":
System.out.println("Anzahl Ihre ausgewählte Produkte: " + kaufhalle.getAnzahlDerAusgewählteProdukte()); System.out.println("Anzahl Ihre ausgewählte Produkte: " + kaufhalle.getAnzahlDerAusgewählteProdukte());
shwoOptions(); shwoOptions();
break; break;
} }
} }
System.out.println("Anzahl Ihre ausgewählte Produkte: " + kaufhalle.getAnzahlDerAusgewählteProdukte()); System.out.println("Anzahl Ihre ausgewählte Produkte: " + kaufhalle.getAnzahlDerAusgewählteProdukte());

View File

@ -1,29 +1,73 @@
package OnlineShop.domain; package OnlineShop.domain;
import java.sql.Date;
import java.time.LocalDate;
import java.util.ArrayList; import java.util.ArrayList;
public class Bestellung { public class Bestellung {
public static String gesamtKosten (ArrayList<Produkt> produkts) { private double kosten;
double kosten = 0.0; private int gewicht;
int gewicht = 0; private double versandKosten;
private ArrayList<Produkt> tempProdukt;
for (Produkt p : produkts) { private LocalDate date;
kosten += p.getPreis(); public void gesamtKosten(ArrayList<Produkt> produkts) {
gewicht += p.getGewicht(); tempProdukt = produkts;
}
double gewichtInKg = gewicht / 1000.0;
if (gewichtInKg < 1)
kosten += 5;
else if (gewichtInKg >= 1 && gewichtInKg <= 2.5)
kosten += 8;
else
kosten += 10;
return String.format("%.2f", kosten);
} }
public double getKosten() {
kosten = 0;
for (Produkt p : tempProdukt)
kosten += p.getPreis();
String formatted = String.format("%.2f", kosten);
formatted = formatted.replace(",", "."); // Ersetzt das Komma durch einen Punkt
double formattedDouble = Double.parseDouble(formatted);
return formattedDouble;
}
public int getGewicht() {
gewicht = 0;
for (Produkt p : tempProdukt)
gewicht += p.getGewicht();
return gewicht;
}
public double getVersandKosten() {
versandKosten = 0;
double gewichtInKg = gewicht / 1000.0;
if (gewichtInKg < 1)
versandKosten += 5;
else if (gewichtInKg >= 1 && gewichtInKg <= 2.5)
versandKosten += 8;
else
versandKosten += 10;
return versandKosten;
}
public double getGesamtKosten() {
double gesmatKosten = kosten + versandKosten;
String formatted = String.format("%.2f", gesmatKosten);
formatted = formatted.replace(",", "."); // Ersetzt das Komma durch einen Punkt
double formattedDouble = Double.parseDouble(formatted);
return formattedDouble;
}
public LocalDate getDate() {
return date;
}
public void setDate(LocalDate date) {
this.date = date;
}
} }

View File

@ -1,14 +1,10 @@
package OnlineShop.domain.JTest; package OnlineShop.domain.JTest;
import static org.junit.jupiter.api.Assertions.*; import static org.junit.jupiter.api.Assertions.*;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
import org.junit.jupiter.api.*;
import org.junit.jupiter.api.BeforeEach; import OnlineShop.domain.*;
import org.junit.jupiter.api.Test; import OnlineShop.domain.ExceptionsKlassen.*;
import OnlineShop.domain.Kaufhalle;
import OnlineShop.domain.ExceptionsKlassen.ProduktNichtGefundenException;
class JTest { class JTest {
Kaufhalle kaufhalle; Kaufhalle kaufhalle;
@ -18,25 +14,17 @@ class JTest {
} }
@Test @Test
void test() throws FileNotFoundException, ProduktNichtGefundenException { void test() throws FileNotFoundException, ProduktNichtGefundenException, LeereEingabeException {
// Produkte Werden Geladen => Status: True
assertTrue(kaufhalle.produkteLaden()); assertTrue(kaufhalle.produkteLaden());
// Hut Produkt befindet sich im Warenkorb des Kundes => Status: True
assertTrue(kaufhalle.addProduktZuWarenkorb("Hut")); assertTrue(kaufhalle.addProduktZuWarenkorb("Hut"));
// Genau ein Produkt ist momentane im Warenkorb => Status: True
assertEquals(1,kaufhalle.getAnzahlDerAusgewählteProdukte());
// Gieskanne Produkt befindet sich im Warenkorb des Kundes => Status: True
assertTrue(kaufhalle.addProduktZuWarenkorb("Gieskanne")); assertTrue(kaufhalle.addProduktZuWarenkorb("Gieskanne"));
// Genau zwei Produkte ist momentane im Warenkorb => Status: True
assertEquals(2,kaufhalle.getAnzahlDerAusgewählteProdukte()); assertEquals(2,kaufhalle.getAnzahlDerAusgewählteProdukte());
kaufhalle.getKundenDaten("Obai", "Mannheim");
kaufhalle.sendBestellung();
// status True
assertTrue(kaufhalle.sendBestellung().equals("30,97"));
} }
} }

View File

@ -2,20 +2,26 @@ package OnlineShop.domain;
import java.io.File; import java.io.File;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.util.*; import java.util.*;
import OnlineShop.domain.ExceptionsKlassen.*; import OnlineShop.domain.ExceptionsKlassen.*;
public class Kaufhalle { public class Kaufhalle {
private ArrayList<Produkt> produkte; private ArrayList<Produkt> produkte;
private ArrayList<Bestellung> Bestellungen;
private Kunde kunde; private Kunde kunde;
private Bestellung aktuellBestelung;
public Kaufhalle() throws FileNotFoundException { public Kaufhalle() throws FileNotFoundException {
this.produkte = new ArrayList<>(); this.produkte = new ArrayList<>();
kunde = new Kunde(); this.kunde = new Kunde();
this.Bestellungen = new ArrayList<>();
} }
public boolean produkteLaden() throws FileNotFoundException { public boolean produkteLaden() throws FileNotFoundException {
Scanner sc = new Scanner( Scanner sc = new Scanner(new File(
new File("/home/obai/git/Programmierung2/Programmierung2/src/OnlineShop/produkte.csv")); "C:\\Users\\obaya\\git\\Programmierung2\\Programmierung2\\src\\OnlineShop\\domain\\produkte.csv"));
int cnt = 0; int cnt = 0;
while (sc.hasNextLine()) { while (sc.hasNextLine()) {
@ -37,21 +43,20 @@ public class Kaufhalle {
sc.close(); sc.close();
return true; return true;
} }
public boolean addProduktZuWarenkorb(String Produktname) throws ProduktNichtGefundenException { public boolean addProduktZuWarenkorb(String Produktname) throws ProduktNichtGefundenException {
Produkt neueProdukt = findeProduktImKaufhalle(Produktname); Produkt neueProdukt = findeProduktImKaufhalle(Produktname);
if (neueProdukt == null) if (neueProdukt == null)
throw new ProduktNichtGefundenException("Produkt ist nicht Verfügbar!"); throw new ProduktNichtGefundenException("Produkt ist nicht Verfügbar!");
kunde.getWarenKorb().addProdukt(neueProdukt); kunde.getWarenKorb().addProdukt(neueProdukt);
return true; return true;
} }
public boolean loescheProduktausWarenkorb(String Produktname) { public boolean loescheProduktausWarenkorb(String Produktname) {
return kunde.getWarenKorb().loescheprodukt(Produktname); return kunde.getWarenKorb().loescheprodukt(Produktname);
} }
public ArrayList<String> zeigeProdukte() { public ArrayList<String> zeigeProdukte() {
ArrayList<String> allProdukte = new ArrayList<>(); ArrayList<String> allProdukte = new ArrayList<>();
int index = 1; int index = 1;
@ -69,31 +74,39 @@ public class Kaufhalle {
return null; return null;
} }
public int getAnzahlDerAusgewählteProdukte() { public int getAnzahlDerAusgewählteProdukte() {
return kunde.getWarenKorb().getAnzahlProdkute(); return kunde.getWarenKorb().getAnzahlProdkute();
} }
public ArrayList<String> zeigeAlleProdukteImWarenkorb() throws KeineProdukteImWarenkorb{ public ArrayList<String> zeigeAlleProdukteImWarenkorb() throws KeineProdukteImWarenkorb {
return kunde.getWarenKorb().zeigeProdukteImWarenKorb(); return kunde.getWarenKorb().zeigeProdukteImWarenKorb();
} }
public String sendBestellung() { public String sendBestellung() {
return Bestellung.gesamtKosten(kunde.getWarenKorb().getProdukte()); aktuellBestelung = new Bestellung();
aktuellBestelung.gesamtKosten(kunde.getWarenKorb().getProdukte());
return "Produkts Ksoten = " + aktuellBestelung.getKosten() + "\n" + "Versand Kosten = " + aktuellBestelung.getVersandKosten()
+ "\n" + "GesamtKosten(Produkts Ksoten + Versand Kosten) = " + aktuellBestelung.getGesamtKosten();
} }
public double getGesamtKosten() {
return kunde.getWarenKorb().getGesamtKsoten();
}
public void getKundenDaten(String name, String anschrift) throws LeereEingabeException { public void getKundenDaten(String name, String anschrift) throws LeereEingabeException {
if (!name.isEmpty() && !name.isEmpty()) { if (!name.isEmpty() && !name.isEmpty()) {
kunde.setName(name); kunde.setName(name);
kunde.setAnschrift(anschrift); kunde.setAnschrift(anschrift);
return; return;
} } else
else
throw new LeereEingabeException("Sie müssen Ihren Name sowie Ihren Anschrift eingeben"); throw new LeereEingabeException("Sie müssen Ihren Name sowie Ihren Anschrift eingeben");
} }
public boolean getBetrag(double betrag) {
return betrag == aktuellBestelung.getGesamtKosten();
}
public void speichereBestellung() {
aktuellBestelung.setDate(LocalDate.now());
Bestellungen.add(aktuellBestelung);
}
} }

View File

@ -53,13 +53,7 @@ public class Warenkorb {
return anzahlProdkute; return anzahlProdkute;
} }
public double getGesamtKsoten() {
double gesamtKosten = 0.0;
for (Produkt p : produkte)
gesamtKosten += p.getPreis();
return gesamtKosten;
}
public ArrayList<Produkt> getProdukte(){ public ArrayList<Produkt> getProdukte(){
return produkte; return produkte;

View File

@ -0,0 +1,7 @@
Name;Beschreibung;Preis;Gewicht;Bestand
Gieskanne;Premium Gärtner-Gieskanne;3,99;250,00;17,00
Hut;Perfekt für die Hutablage;21,98;120,00;123,00
Dosenwurst;LWWRSCHT: das Pfälzer Original, nur kurz im Angebot;3,99;200,00;7,00
Gartenschlauch;10 m, dehnbar bis auf die doppelte Länge;18,99;1300,00;23,00
Schraubenset;100 zufällig ausgewählte Schrauben;2,99;287,00;99,00
Akkuschrauber;Mit extra großem Drehmoment;25,00;900,00;13,00
1 Name Beschreibung Preis Gewicht Bestand
2 Gieskanne Premium Gärtner-Gieskanne 3,99 250,00 17,00
3 Hut Perfekt für die Hutablage 21,98 120,00 123,00
4 Dosenwurst LWWRSCHT: das Pfälzer Original, nur kurz im Angebot 3,99 200,00 7,00
5 Gartenschlauch 10 m, dehnbar bis auf die doppelte Länge 18,99 1300,00 23,00
6 Schraubenset 100 zufällig ausgewählte Schrauben 2,99 287,00 99,00
7 Akkuschrauber Mit extra großem Drehmoment 25,00 900,00 13,00