Online Shop

master
obai 2024-10-18 16:01:36 +02:00
parent ce0e81a680
commit 4d25a7264f
14 changed files with 295 additions and 86 deletions

View File

@ -1,4 +1,4 @@
package OnlineShop; package OnlineShop.Main;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
@ -7,7 +7,7 @@ import OnlineShop.domain.ExceptionsKlassen.*;
public class Main { public class Main {
public static void main(String[] args) throws FileNotFoundException, ProduktNichtGefundenException, KundeNichtGefundenException { public static void main(String[] args) throws FileNotFoundException, ProduktNichtGefundenException {
new TUI(); new TUI();
} }
} }

View File

@ -2,41 +2,153 @@ package OnlineShop.UI;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
import java.util.Scanner; import java.util.Scanner;
import OnlineShop.domain.Kaufhalle; import OnlineShop.domain.*;
import OnlineShop.domain.ExceptionsKlassen.KundeNichtGefundenException; import OnlineShop.domain.ExceptionsKlassen.KeineProdukteImWarenkorb;
import OnlineShop.domain.ExceptionsKlassen.LeereEingabeException;
import OnlineShop.domain.ExceptionsKlassen.ProduktNichtGefundenException; import OnlineShop.domain.ExceptionsKlassen.ProduktNichtGefundenException;
public class TUI { public class TUI {
private Kaufhalle kaufhalle; private Kaufhalle kaufhalle;
private Scanner eingabe;
public TUI() throws FileNotFoundException, ProduktNichtGefundenException, KundeNichtGefundenException {
public TUI() throws FileNotFoundException, ProduktNichtGefundenException {
this.kaufhalle = new Kaufhalle(); this.kaufhalle = new Kaufhalle();
startProgramm(); startProgramm();
} }
private void startProgramm() throws FileNotFoundException, ProduktNichtGefundenException {
private void startProgramm() throws FileNotFoundException, ProduktNichtGefundenException, KundeNichtGefundenException {
Scanner eingabe = new Scanner(System.in);
String produktname;
String anschrift;
System.out.println();
System.out.println("<< Willkommen in meinem Online Shop >>"); System.out.println("<< Willkommen in meinem Online Shop >>");
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();
shwoOptions();
System.out.print(">");
produktname = eingabe.nextLine();
kaufhalle.addProduktZuWarenkorb(produktname);
} }
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();
} 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());
}
} }

View File

@ -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);
}
}

View File

@ -1,8 +0,0 @@
package OnlineShop.domain.ExceptionsKlassen;
public class EmptyInputException extends Exception{
public EmptyInputException(String error){
super(error);
}
}

View File

@ -0,0 +1,8 @@
package OnlineShop.domain.ExceptionsKlassen;
public class KeineProdukteImWarenkorb extends Exception {
public KeineProdukteImWarenkorb(String error){
super(error);
}
}

View File

@ -1,8 +0,0 @@
package OnlineShop.domain.ExceptionsKlassen;
public class KundeNichtGefundenException extends Exception {
KundeNichtGefundenException(String error){
super(error);
}
}

View File

@ -0,0 +1,9 @@
package OnlineShop.domain.ExceptionsKlassen;
public class LeereEingabeException extends Exception {
public LeereEingabeException (String error){
super(error);
}
}

View File

@ -1,12 +0,0 @@
package OnlineShop.domain;
public class GesamtKostenBerechnen {
public static double gesamtKosten (Produkt p) {
double kosten = 0.0;
return kosten;
}
}

View File

@ -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"));
}
}

View File

@ -7,34 +7,15 @@ import OnlineShop.domain.ExceptionsKlassen.*;
public class Kaufhalle { public class Kaufhalle {
private ArrayList<Produkt> produkte; private ArrayList<Produkt> produkte;
private ArrayList<Kunde> kunden; private Kunde kunde;
public Kaufhalle() throws FileNotFoundException { public Kaufhalle() throws FileNotFoundException {
this.produkte = new ArrayList<>(); 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 { public boolean produkteLaden() throws FileNotFoundException {
Scanner sc = new Scanner( 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; int cnt = 0;
while (sc.hasNextLine()) { while (sc.hasNextLine()) {
@ -56,7 +37,21 @@ public class Kaufhalle {
sc.close(); sc.close();
return true; 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() { public ArrayList<String> zeigeProdukte() {
ArrayList<String> allProdukte = new ArrayList<>(); ArrayList<String> allProdukte = new ArrayList<>();
int index = 1; int index = 1;
@ -75,7 +70,30 @@ public class Kaufhalle {
return null; 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");
}
} }

View File

@ -6,13 +6,11 @@ public class Kunde {
private String anschrift; private String anschrift;
private Warenkorb warenKorb; private Warenkorb warenKorb;
private double produktKosten; private double produktKosten;
private static int UserID = 100; ;
private int ID;
public Kunde(String name, String anschrift) { public Kunde(String name, String anschrift) {
this.name = name; this.name = name;
this.anschrift = anschrift; this.anschrift = anschrift;
this.ID = UserID++;
this.produktKosten = 0.0; this.produktKosten = 0.0;
this.warenKorb = new Warenkorb(); this.warenKorb = new Warenkorb();
} }
@ -41,10 +39,6 @@ public class Kunde {
return warenKorb; return warenKorb;
} }
public int getID() {
return ID;
}
public double getProduktKosten() { public double getProduktKosten() {
return produktKosten; return produktKosten;
} }

View File

@ -38,8 +38,8 @@ public class Produkt {
public String print() { public String print() {
return "name=" + name + ", beschreibung=" + beschreibung + ", preis=" + preis + ", gewicht=" + gewicht return String.format("name=%s, beschreibung=%s, preis=%.2f, gewicht=%d, bestand=%d",
+ ", bestand=" + bestand; name, beschreibung, preis, gewicht, bestand);
} }
} }

View File

@ -2,6 +2,8 @@ package OnlineShop.domain;
import java.util.ArrayList; import java.util.ArrayList;
import OnlineShop.domain.ExceptionsKlassen.KeineProdukteImWarenkorb;
public class Warenkorb { public class Warenkorb {
private ArrayList<Produkt> produkte; private ArrayList<Produkt> produkte;
private int anzahlProdkute; private int anzahlProdkute;
@ -10,8 +12,7 @@ public class Warenkorb {
produkte = new ArrayList<>(); produkte = new ArrayList<>();
} }
public boolean addProdukt(Produkt neueProdukt) { public boolean addProdukt(Produkt neueProdukt) {
produkte.add(neueProdukt); produkte.add(neueProdukt);
anzahlProdkute++; anzahlProdkute++;
return true; return true;
@ -22,6 +23,7 @@ public class Warenkorb {
if (produktZuLoeschen == null) if (produktZuLoeschen == null)
return false; return false;
produkte.remove(produktZuLoeschen);
anzahlProdkute--; anzahlProdkute--;
return true; return true;
} }
@ -35,10 +37,14 @@ public class Warenkorb {
return null; 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<>(); ArrayList<String> allProdukte = new ArrayList<>();
int index = 1;
for (Produkt p : produkte) for (Produkt p : produkte)
allProdukte.add(anzahlProdkute + ".Produkt: " + p.print() + "\n"); allProdukte.add(index++ + ".Produkt: " + p.print());
return allProdukte; return allProdukte;
} }
@ -47,5 +53,17 @@ 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(){
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