Online Shop
parent
ce0e81a680
commit
4d25a7264f
|
@ -1,4 +1,4 @@
|
|||
package OnlineShop;
|
||||
package OnlineShop.Main;
|
||||
|
||||
import java.io.FileNotFoundException;
|
||||
|
||||
|
@ -7,7 +7,7 @@ import OnlineShop.domain.ExceptionsKlassen.*;
|
|||
|
||||
public class Main {
|
||||
|
||||
public static void main(String[] args) throws FileNotFoundException, ProduktNichtGefundenException, KundeNichtGefundenException {
|
||||
public static void main(String[] args) throws FileNotFoundException, ProduktNichtGefundenException {
|
||||
new TUI();
|
||||
}
|
||||
}
|
|
@ -2,41 +2,153 @@ package OnlineShop.UI;
|
|||
import java.io.FileNotFoundException;
|
||||
import java.util.Scanner;
|
||||
|
||||
import OnlineShop.domain.Kaufhalle;
|
||||
import OnlineShop.domain.ExceptionsKlassen.KundeNichtGefundenException;
|
||||
import OnlineShop.domain.*;
|
||||
import OnlineShop.domain.ExceptionsKlassen.KeineProdukteImWarenkorb;
|
||||
import OnlineShop.domain.ExceptionsKlassen.LeereEingabeException;
|
||||
import OnlineShop.domain.ExceptionsKlassen.ProduktNichtGefundenException;
|
||||
|
||||
|
||||
public class TUI {
|
||||
|
||||
private Kaufhalle kaufhalle;
|
||||
private Scanner eingabe;
|
||||
|
||||
public TUI() throws FileNotFoundException, ProduktNichtGefundenException, KundeNichtGefundenException {
|
||||
public TUI() throws FileNotFoundException, ProduktNichtGefundenException {
|
||||
this.kaufhalle = new Kaufhalle();
|
||||
startProgramm();
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void startProgramm() throws FileNotFoundException, ProduktNichtGefundenException, KundeNichtGefundenException {
|
||||
Scanner eingabe = new Scanner(System.in);
|
||||
String produktname;
|
||||
String anschrift;
|
||||
System.out.println();
|
||||
private void startProgramm() throws FileNotFoundException, ProduktNichtGefundenException {
|
||||
System.out.println("<< Willkommen in meinem Online Shop >>");
|
||||
System.out.println();
|
||||
if (kaufhalle.produkteLaden()) {
|
||||
System.out.println("Meine aktuelle Produkte: ");
|
||||
|
||||
for (String p : kaufhalle.zeigeProdukte())
|
||||
System.out.println(p);
|
||||
}
|
||||
System.out.println();
|
||||
shwoOptions();
|
||||
}
|
||||
|
||||
private void shwoOptions() throws ProduktNichtGefundenException {
|
||||
eingabe = new Scanner(System.in);
|
||||
String optionAuswahl;
|
||||
boolean programmAktive = true;
|
||||
while (programmAktive) {
|
||||
System.out.println("Wählen Sie bitte ein Option aus: ");
|
||||
System.out.println("1. Produkte auswählen");
|
||||
System.out.println("2. Alle Produkte im Warenkorb anzeigen");
|
||||
System.out.println("3. Einkauf Beenden!");
|
||||
System.out.print("> ");
|
||||
optionAuswahl = eingabe.nextLine();
|
||||
|
||||
switch (optionAuswahl) {
|
||||
case "1":
|
||||
ProdukteAuwählenUI();
|
||||
break;
|
||||
|
||||
case "2":
|
||||
System.out.println("Anzahl Produkte: " + kaufhalle.getAnzahlDerAusgewählteProdukte());
|
||||
try {
|
||||
for (String p : kaufhalle.zeigeAlleProdukteImWarenkorb())
|
||||
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.print(">");
|
||||
String bestellung = eingabe.nextLine();
|
||||
if (bestellung.equalsIgnoreCase("ja")) {
|
||||
System.out.println("Geben Sie bitte Ihren Name ein:");
|
||||
System.out.println(">");
|
||||
String name = eingabe.nextLine();
|
||||
System.out.println("Geben Sie bitte Ihren Anschrift ein:");
|
||||
System.out.println(">");
|
||||
String anschrift = eingabe.nextLine();
|
||||
try {
|
||||
kaufhalle.getKundenDaten(name, anschrift);
|
||||
kaufhalle.sendBestellung();
|
||||
|
||||
}catch (LeereEingabeException e) {
|
||||
System.out.println(e.getMessage());
|
||||
}
|
||||
}
|
||||
else
|
||||
shwoOptions();
|
||||
|
||||
|
||||
System.out.print(">");
|
||||
produktname = eingabe.nextLine();
|
||||
kaufhalle.addProduktZuWarenkorb(produktname);
|
||||
} catch (KeineProdukteImWarenkorb e) {
|
||||
System.out.println(e.getMessage());
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void ProdukteAuwählenUI() throws ProduktNichtGefundenException {
|
||||
eingabe = new Scanner(System.in);
|
||||
boolean einkaufAktive = true;
|
||||
String weiterEinkaufen;
|
||||
String optionAuswahl;
|
||||
while (einkaufAktive) {
|
||||
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("2. Prpdukte aus dem Warenkorb löschen");
|
||||
System.out.println("3. Zurück zum Hauptmenu");
|
||||
System.out.print("> ");
|
||||
optionAuswahl = eingabe.nextLine();
|
||||
switch (optionAuswahl) {
|
||||
case "1":
|
||||
while (true) {
|
||||
System.out.print("Name der Produkt: > ");
|
||||
String produktName = eingabe.nextLine();
|
||||
try {
|
||||
kaufhalle.addProduktZuWarenkorb(produktName);
|
||||
} catch (ProduktNichtGefundenException e) {
|
||||
System.out.println(e.getMessage());
|
||||
}
|
||||
System.out.println("Anzahl Ihre ausgewählte Produkte: " + kaufhalle.getAnzahlDerAusgewählteProdukte());
|
||||
System.out.println("Weitere Produkte auswählen Ja/Nein");
|
||||
System.out.print(">");
|
||||
weiterEinkaufen = eingabe.nextLine();
|
||||
if (weiterEinkaufen.equalsIgnoreCase("ja"))
|
||||
continue;
|
||||
else
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case "2":
|
||||
while (true) {
|
||||
System.out.print("Name der Produkt: > ");
|
||||
String produktName = eingabe.nextLine();
|
||||
if (kaufhalle.loescheProduktausWarenkorb(produktName) == true) {
|
||||
System.out.println("Produkt erfolgreich gelöscht");
|
||||
System.out.println("Anzahl Ihre ausgewählte Produkte: " + kaufhalle.getAnzahlDerAusgewählteProdukte());
|
||||
}else
|
||||
System.out.println("Produkt ist nicht in Ihrem Warenkorb");
|
||||
|
||||
System.out.println("Weiter Produkte aus dem Wrenkorb löschen Ja/Nein");
|
||||
System.out.print(">");
|
||||
String weitereProdukteLoeschen = eingabe.nextLine();
|
||||
if (weitereProdukteLoeschen.equalsIgnoreCase("ja"))
|
||||
continue;
|
||||
else
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case "3":
|
||||
System.out.println("Anzahl Ihre ausgewählte Produkte: " + kaufhalle.getAnzahlDerAusgewählteProdukte());
|
||||
shwoOptions();
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
System.out.println("Anzahl Ihre ausgewählte Produkte: " + kaufhalle.getAnzahlDerAusgewählteProdukte());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
package OnlineShop.domain;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class Bestellung {
|
||||
|
||||
public static String gesamtKosten (ArrayList<Produkt> produkts) {
|
||||
double kosten = 0.0;
|
||||
int gewicht = 0;
|
||||
|
||||
for (Produkt p : produkts) {
|
||||
kosten += p.getPreis();
|
||||
gewicht += p.getGewicht();
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
|
@ -1,8 +0,0 @@
|
|||
package OnlineShop.domain.ExceptionsKlassen;
|
||||
|
||||
public class EmptyInputException extends Exception{
|
||||
|
||||
public EmptyInputException(String error){
|
||||
super(error);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
package OnlineShop.domain.ExceptionsKlassen;
|
||||
|
||||
public class KeineProdukteImWarenkorb extends Exception {
|
||||
|
||||
public KeineProdukteImWarenkorb(String error){
|
||||
super(error);
|
||||
}
|
||||
}
|
|
@ -1,8 +0,0 @@
|
|||
package OnlineShop.domain.ExceptionsKlassen;
|
||||
|
||||
public class KundeNichtGefundenException extends Exception {
|
||||
|
||||
KundeNichtGefundenException(String error){
|
||||
super(error);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
package OnlineShop.domain.ExceptionsKlassen;
|
||||
|
||||
public class LeereEingabeException extends Exception {
|
||||
|
||||
public LeereEingabeException (String error){
|
||||
super(error);
|
||||
}
|
||||
|
||||
}
|
|
@ -1,12 +0,0 @@
|
|||
package OnlineShop.domain;
|
||||
|
||||
public class GesamtKostenBerechnen {
|
||||
|
||||
|
||||
public static double gesamtKosten (Produkt p) {
|
||||
double kosten = 0.0;
|
||||
|
||||
|
||||
return kosten;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,42 @@
|
|||
package OnlineShop.domain.JTest;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
import java.io.FileNotFoundException;
|
||||
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import OnlineShop.domain.Kaufhalle;
|
||||
import OnlineShop.domain.ExceptionsKlassen.ProduktNichtGefundenException;
|
||||
|
||||
class JTest {
|
||||
Kaufhalle kaufhalle;
|
||||
@BeforeEach
|
||||
void setUp() throws Exception {
|
||||
kaufhalle = new Kaufhalle();
|
||||
}
|
||||
|
||||
@Test
|
||||
void test() throws FileNotFoundException, ProduktNichtGefundenException {
|
||||
|
||||
// Produkte Werden Geladen => Status: True
|
||||
assertTrue(kaufhalle.produkteLaden());
|
||||
|
||||
// Hut Produkt befindet sich im Warenkorb des Kundes => Status: True
|
||||
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"));
|
||||
|
||||
// Genau zwei Produkte ist momentane im Warenkorb => Status: True
|
||||
assertEquals(2,kaufhalle.getAnzahlDerAusgewählteProdukte());
|
||||
|
||||
// status True
|
||||
assertTrue(kaufhalle.sendBestellung().equals("30,97"));
|
||||
}
|
||||
|
||||
}
|
|
@ -7,34 +7,15 @@ import OnlineShop.domain.ExceptionsKlassen.*;
|
|||
|
||||
public class Kaufhalle {
|
||||
private ArrayList<Produkt> produkte;
|
||||
private ArrayList<Kunde> kunden;
|
||||
private Kunde kunde;
|
||||
|
||||
public Kaufhalle() throws FileNotFoundException {
|
||||
this.produkte = new ArrayList<>();
|
||||
this.kunden = new ArrayList<>();
|
||||
kunde = new Kunde();
|
||||
}
|
||||
|
||||
public void addProduktZuWarenkorb(String Produktname) throws ProduktNichtGefundenException, KundeNichtGefundenException {
|
||||
Produkt neueProdukt = findeProduktImKaufhalle(Produktname);
|
||||
if (neueProdukt == null)
|
||||
throw new ProduktNichtGefundenException("Produkt ist nicht Verfügbar!");
|
||||
|
||||
|
||||
}
|
||||
|
||||
private Kunde findKunde(String kundeName) {
|
||||
for (Kunde kunde : kunden)
|
||||
if (kunde.getName().equalsIgnoreCase(kundeName))
|
||||
return kunde;
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public boolean produkteLaden() throws FileNotFoundException {
|
||||
Scanner sc = new Scanner(
|
||||
new File("C:\\Users\\obaya\\git\\OnlineShop2024\\OnlineShop2024\\resources\\produkte.csv"));
|
||||
new File("/home/obai/git/Programmierung2/Programmierung2/src/OnlineShop/produkte.csv"));
|
||||
|
||||
int cnt = 0;
|
||||
while (sc.hasNextLine()) {
|
||||
|
@ -57,6 +38,20 @@ public class Kaufhalle {
|
|||
return true;
|
||||
}
|
||||
|
||||
|
||||
public boolean addProduktZuWarenkorb(String Produktname) throws ProduktNichtGefundenException {
|
||||
Produkt neueProdukt = findeProduktImKaufhalle(Produktname);
|
||||
if (neueProdukt == null)
|
||||
throw new ProduktNichtGefundenException("Produkt ist nicht Verfügbar!");
|
||||
|
||||
kunde.getWarenKorb().addProdukt(neueProdukt);
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean loescheProduktausWarenkorb(String Produktname) {
|
||||
return kunde.getWarenKorb().loescheprodukt(Produktname);
|
||||
}
|
||||
|
||||
public ArrayList<String> zeigeProdukte() {
|
||||
ArrayList<String> allProdukte = new ArrayList<>();
|
||||
int index = 1;
|
||||
|
@ -75,7 +70,30 @@ public class Kaufhalle {
|
|||
return null;
|
||||
}
|
||||
|
||||
public int getAnzahlDerAusgewählteProdukte() {
|
||||
return kunde.getWarenKorb().getAnzahlProdkute();
|
||||
}
|
||||
|
||||
public ArrayList<String> zeigeAlleProdukteImWarenkorb() throws KeineProdukteImWarenkorb{
|
||||
return kunde.getWarenKorb().zeigeProdukteImWarenKorb();
|
||||
}
|
||||
|
||||
public String sendBestellung() {
|
||||
return Bestellung.gesamtKosten(kunde.getWarenKorb().getProdukte());
|
||||
|
||||
}
|
||||
|
||||
public double getGesamtKosten() {
|
||||
return kunde.getWarenKorb().getGesamtKsoten();
|
||||
}
|
||||
|
||||
public void getKundenDaten(String name, String anschrift) throws LeereEingabeException {
|
||||
if (!name.isEmpty() && !name.isEmpty()) {
|
||||
kunde.setName(name);
|
||||
kunde.setAnschrift(anschrift);
|
||||
return;
|
||||
}
|
||||
else
|
||||
throw new LeereEingabeException("Sie müssen Ihren Name sowie Ihren Anschrift eingeben");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,13 +6,11 @@ public class Kunde {
|
|||
private String anschrift;
|
||||
private Warenkorb warenKorb;
|
||||
private double produktKosten;
|
||||
private static int UserID = 100;
|
||||
private int ID;
|
||||
;
|
||||
|
||||
public Kunde(String name, String anschrift) {
|
||||
this.name = name;
|
||||
this.anschrift = anschrift;
|
||||
this.ID = UserID++;
|
||||
this.produktKosten = 0.0;
|
||||
this.warenKorb = new Warenkorb();
|
||||
}
|
||||
|
@ -41,10 +39,6 @@ public class Kunde {
|
|||
return warenKorb;
|
||||
}
|
||||
|
||||
public int getID() {
|
||||
return ID;
|
||||
}
|
||||
|
||||
public double getProduktKosten() {
|
||||
return produktKosten;
|
||||
}
|
||||
|
|
|
@ -38,8 +38,8 @@ public class Produkt {
|
|||
|
||||
|
||||
public String print() {
|
||||
return "name=" + name + ", beschreibung=" + beschreibung + ", preis=" + preis + ", gewicht=" + gewicht
|
||||
+ ", bestand=" + bestand;
|
||||
return String.format("name=%s, beschreibung=%s, preis=%.2f, gewicht=%d, bestand=%d",
|
||||
name, beschreibung, preis, gewicht, bestand);
|
||||
}
|
||||
|
||||
}
|
|
@ -2,6 +2,8 @@ package OnlineShop.domain;
|
|||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import OnlineShop.domain.ExceptionsKlassen.KeineProdukteImWarenkorb;
|
||||
|
||||
public class Warenkorb {
|
||||
private ArrayList<Produkt> produkte;
|
||||
private int anzahlProdkute;
|
||||
|
@ -11,7 +13,6 @@ public class Warenkorb {
|
|||
}
|
||||
|
||||
public boolean addProdukt(Produkt neueProdukt) {
|
||||
|
||||
produkte.add(neueProdukt);
|
||||
anzahlProdkute++;
|
||||
return true;
|
||||
|
@ -22,6 +23,7 @@ public class Warenkorb {
|
|||
if (produktZuLoeschen == null)
|
||||
return false;
|
||||
|
||||
produkte.remove(produktZuLoeschen);
|
||||
anzahlProdkute--;
|
||||
return true;
|
||||
}
|
||||
|
@ -35,10 +37,14 @@ public class Warenkorb {
|
|||
return null;
|
||||
}
|
||||
|
||||
public ArrayList<String> zeigeProdukteImWarenKorb() {
|
||||
public ArrayList<String> zeigeProdukteImWarenKorb() throws KeineProdukteImWarenkorb {
|
||||
if (produkte.size() == 0)
|
||||
throw new KeineProdukteImWarenkorb("Momentan haben Sie Keine Produkte in Ihrem Warenkorb");
|
||||
|
||||
ArrayList<String> allProdukte = new ArrayList<>();
|
||||
int index = 1;
|
||||
for (Produkt p : produkte)
|
||||
allProdukte.add(anzahlProdkute + ".Produkt: " + p.print() + "\n");
|
||||
allProdukte.add(index++ + ".Produkt: " + p.print());
|
||||
|
||||
return allProdukte;
|
||||
}
|
||||
|
@ -47,5 +53,17 @@ public class Warenkorb {
|
|||
return anzahlProdkute;
|
||||
}
|
||||
|
||||
public double getGesamtKsoten() {
|
||||
double gesamtKosten = 0.0;
|
||||
for (Produkt p : produkte)
|
||||
gesamtKosten += p.getPreis();
|
||||
|
||||
return gesamtKosten;
|
||||
}
|
||||
|
||||
public ArrayList<Produkt> getProdukte(){
|
||||
return produkte;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -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
|
|
Loading…
Reference in New Issue