From 4d2251af0f410e0e9067ea52b92f349968e4413f Mon Sep 17 00:00:00 2001 From: gitea <3029257@stud.hs-mannheim.de> Date: Mon, 15 Dec 2025 00:59:46 +0100 Subject: [PATCH] finish class ShopTUI --- OnlineShop/src/backend/OnlineShop.java | 49 ++++++-- OnlineShop/src/backend/Warenkorb.java | 34 ++++-- OnlineShop/src/tui/ShopTUI.java | 161 ++++++++++++++++++++++++- README.md | 1 + 4 files changed, 225 insertions(+), 20 deletions(-) diff --git a/OnlineShop/src/backend/OnlineShop.java b/OnlineShop/src/backend/OnlineShop.java index d4eb220..766b58b 100644 --- a/OnlineShop/src/backend/OnlineShop.java +++ b/OnlineShop/src/backend/OnlineShop.java @@ -12,7 +12,19 @@ public class OnlineShop { this.bestellungen = new ArrayList(); this.aktuellerWarenkorb = new Warenkorb(); }; - + public void AddProdukteVonDatei(ArrayList produktfile) { + for(int i = 1; i < produktfile.size(); i++) { + String ProduktId = produktfile.get(i).split(",")[0]; + String ProduktName = produktfile.get(i).split(",")[1]; + String ProduktGewicht = produktfile.get(i).split(",")[2]; + String ProduktPreis = produktfile.get(i).split(",")[3]; + String ProduktMwst = produktfile.get(i).split(",")[4]; + String ProduktLagerBestand = produktfile.get(i).split(",")[5]; + + Produkt temp = new Produkt(Integer.parseInt(ProduktId),ProduktName,(int)Math.round(Double.parseDouble(ProduktGewicht)*1000),(int)Math.round(Double.parseDouble(ProduktPreis)*100),Integer.parseInt(ProduktMwst),Integer.parseInt(ProduktLagerBestand)); + AddProdukt(temp); + } + } public void AddProdukt(Produkt neu){ this.lager.add(neu); }; @@ -33,23 +45,27 @@ public class OnlineShop { }; public ArrayList ShowWarenkorb(){ ArrayList ret = new ArrayList(); + ret.add(new String[] {this.aktuellerWarenkorb.kunde.name,this.aktuellerWarenkorb.kunde.Adresse,""+this.aktuellerWarenkorb.NettoPreis(),""+this.aktuellerWarenkorb.NettoVersandkosten(),""+this.aktuellerWarenkorb.NettoGesamtPreis(),""+this.aktuellerWarenkorb.BruttoPreis(),""+this.aktuellerWarenkorb.BruttoVersandkosten(),""+this.aktuellerWarenkorb.BruttoGesamtPreis(),""+this.aktuellerWarenkorb.Gewicht()}); for(int i = 0; i < this.aktuellerWarenkorb.inhalt.size(); i++) { - ret.add(new String[]{""+this.aktuellerWarenkorb.inhalt.get(i).id, this.aktuellerWarenkorb.inhalt.get(i).name, ""+this.aktuellerWarenkorb.inhalt.get(i).transportGewicht, ""+this.aktuellerWarenkorb.inhalt.get(i).netto, ""+this.aktuellerWarenkorb.inhalt.get(i).mwStSatz, ""+this.aktuellerWarenkorb.inhalt.get(i).lagerbestand, ""+this.aktuellerWarenkorb.anzahl.get(i)}); + ret.add(new String[]{""+this.aktuellerWarenkorb.inhalt.get(i).id, this.aktuellerWarenkorb.inhalt.get(i).name, ""+(this.aktuellerWarenkorb.inhalt.get(i).netto*this.aktuellerWarenkorb.anzahl.get(i)), ""+this.aktuellerWarenkorb.inhalt.get(i).mwStSatz, ""+this.aktuellerWarenkorb.anzahl.get(i)}); } return ret; }; public ArrayList SearchProdukt(String substing){ ArrayList ret = new ArrayList(); for(int i = 0; i < this.lager.size(); i++) { - if(this.lager.get(i).name.contains(substing)) { + if(this.lager.get(i).name.toLowerCase().contains(substing.toLowerCase())) { ret.add(new String[]{""+this.lager.get(i).id, this.lager.get(i).name, ""+this.lager.get(i).transportGewicht, ""+this.lager.get(i).netto, ""+this.lager.get(i).mwStSatz, ""+this.lager.get(i).lagerbestand}); } } return ret; }; - public void AddProduktZuWarenkorb(Produkt add, int count){ - if(count <= add.lagerbestand) - aktuellerWarenkorb.AddProdukt(add, count); + public void AddProduktZuWarenkorb(int id, int count){ + Produkt neu = FindeProduktVonId(id); + if(neu == null) + return; + + aktuellerWarenkorb.AddProdukt(neu, count); }; public void DelProduktAusWarenkorb(Produkt del){ aktuellerWarenkorb.DelProdukt(del); @@ -57,8 +73,8 @@ public class OnlineShop { public void ChangeProduktInWarenkorb(Produkt change, int count){ aktuellerWarenkorb.ChangeProdukt(change, count); }; - public void UpdateKundeInWarenkorb(Kunde neu){ - aktuellerWarenkorb.UpdateKunde(neu); + public void UpdateKundeInWarenkorb(String name, String addr){ + aktuellerWarenkorb.UpdateKunde(new Kunde(name, addr)); }; public void AddBestellung(){ Warenkorb Bestellkorb = new Warenkorb(this.aktuellerWarenkorb.kunde); @@ -88,4 +104,21 @@ public class OnlineShop { } } }; + public void ResetWarenkorb() { + this.aktuellerWarenkorb = new Warenkorb(); + } + public Boolean validWarenkorb() { + if(this.aktuellerWarenkorb.kunde.Adresse==""||this.aktuellerWarenkorb.kunde.name=="") { + return false; + } + return true; + } + public Produkt FindeProduktVonId(int id) { + for(int i = 0; i < this.lager.size(); i++) { + if(this.lager.get(i).id==id) { + return this.lager.get(i); + } + } + return null; + } } diff --git a/OnlineShop/src/backend/Warenkorb.java b/OnlineShop/src/backend/Warenkorb.java index 03edb19..0126614 100644 --- a/OnlineShop/src/backend/Warenkorb.java +++ b/OnlineShop/src/backend/Warenkorb.java @@ -29,14 +29,14 @@ public class Warenkorb { public int BruttoPreis(){ double tmp = 0; for(int i = 0; i < this.inhalt.size(); i++) { - tmp += (this.inhalt.get(i).netto*this.anzahl.get(i)*(1+this.inhalt.get(i).mwStSatz)); + tmp += (this.inhalt.get(i).netto*this.anzahl.get(i)*((double)1+((double)this.inhalt.get(i).mwStSatz)/100)); } return (int) Math.round(tmp); }; public int NettoVersandkosten(){ int ret = 0; for(int i = 0; i < this.inhalt.size(); i++) { - ret += (((this.inhalt.get(i).netto*this.anzahl.get(i))/NettoPreis())*BruttoVersandkosten())/(1+this.inhalt.get(i).mwStSatz); + ret += BruttoVersandkosten()-(((this.inhalt.get(i).netto*this.anzahl.get(i))/NettoPreis())*BruttoVersandkosten())/(1+this.inhalt.get(i).mwStSatz); } return ret; }; @@ -60,11 +60,15 @@ public class Warenkorb { return BruttoPreis()+BruttoVersandkosten(); }; public void AddProdukt(Produkt add, int count){ - if(count <= add.lagerbestand) { - this.inhalt.add(add); - this.anzahl.add(count); - CheckCount(add); + if(IsProduktInWarenkorb(add)) { + ChangeProdukt(add, GetProduktAnzahl(add)+count); + } else { + if(count <= add.lagerbestand) { + this.inhalt.add(add); + this.anzahl.add(count); + } } + CheckCount(add); }; public void DelProdukt(Produkt del){ for(int i = 0; i < this.inhalt.size(); i++) { @@ -98,11 +102,27 @@ public class Warenkorb { } } } - private int Gewicht() { + public int Gewicht() { int ret = 0; for(int i = 0; i < this.inhalt.size(); i++) { ret += (this.inhalt.get(i).transportGewicht*this.anzahl.get(i)); } return ret; } + public Boolean IsProduktInWarenkorb(Produkt zutesten) { + for(int i = 0; i < this.inhalt.size(); i++) { + if(zutesten.equals(this.inhalt.get(i))) { + return true; + } + } + return false; + } + public int GetProduktAnzahl(Produkt zutesten) { + for(int i = 0; i < this.inhalt.size(); i++) { + if(zutesten.equals(this.inhalt.get(i))) { + return this.anzahl.get(i); + } + } + return 0; + } } diff --git a/OnlineShop/src/tui/ShopTUI.java b/OnlineShop/src/tui/ShopTUI.java index 989f9fb..1ef076f 100644 --- a/OnlineShop/src/tui/ShopTUI.java +++ b/OnlineShop/src/tui/ShopTUI.java @@ -7,13 +7,164 @@ import java.util.ArrayList; import java.util.Scanner; public class ShopTUI { - public static void main(String[] args) { - OnlineShop shop = new OnlineShop(); - Scanner sc = new Scanner(System.in); - Menu(shop, sc); + private static OnlineShop shop; + private static Scanner sc; + public static void main(String[] args) throws FileNotFoundException { + shop = new OnlineShop(); + sc = new Scanner(System.in); + shop.AddProdukteVonDatei(readFile("resources/produkte.csv")); + Menu(); System.out.println("Ende."); } - private static void Menu(OnlineShop shop, Scanner sc) { + private static void Menu() { + Boolean ende = false; + while(!ende) { + if(!shop.validWarenkorb()) { + UpdateKundeInWarenkorb(); + continue; + } + System.out.println(); + System.out.println("Wählen Sie:"); + System.out.println("1) Alle Produkte anzeigen"); + System.out.println("2) Produkt nach Namen suchen"); + System.out.println("3) Produkt anhand der id hinzufügen/ löschen"); + System.out.println("4) Warenkorb anzeigen"); + System.out.println("5) Warenkorb leeren"); + System.out.println("6) Kundendaten ändern"); + System.out.println("7) Bestellen"); + //System.out.println("8) Alte Bestellungen anzeigen"); + System.out.println("9) exit"); + System.out.println(); + String orgeingabe = sc.nextLine(); + if(!(orgeingabe.length()>0&&(orgeingabe.charAt(0)>'0'&&orgeingabe.charAt(0)<='9'))) { + continue; + } + int eingabe = Integer.parseInt(""+orgeingabe.charAt(0)); + switch (eingabe) { + case 1 : + ShowProdukte(); + break; + case 2 : + SearchProdukt(); + break; + case 3 : + AddProdukt(); + break; + case 4 : + ShowWarenkorb(); + break; + case 5 : + ResetWarenkorb(); + break; + case 6 : + UpdateKundeInWarenkorb(); + break; + case 7 : + Bestellen(); + break; + case 8 : + ShowBestellungen(); + break; + case 9 : + ende = true; + break; + default : + } + + } + } + + private static void ShowProdukte(){ + ArrayList produkte = shop.ShowProdukte(); + for(int i = 0; i < produkte.size(); i++) { + System.out.println("id: "+produkte.get(i)[0]); + System.out.println("Name: "+produkte.get(i)[1]); + System.out.println("Gewicht: "+produkte.get(i)[2]+"g"); + System.out.println("Nettopreis: "+produkte.get(i)[3]+"ct"); + System.out.println("MwStSatz: "+produkte.get(i)[4]+"%"); + System.out.println("Lagerbestand: "+produkte.get(i)[5]); + System.out.println(""); + } + }; + private static void SearchProdukt(){ + System.out.println("Bitte schreiben Sie den Suchbegriff:"); + String orgeingabe = sc.nextLine(); + ArrayList produkte = shop.SearchProdukt(orgeingabe); + for(int i = 0; i < produkte.size(); i++) { + System.out.println("id: "+produkte.get(i)[0]); + System.out.println("Name: "+produkte.get(i)[1]); + System.out.println("Gewicht: "+produkte.get(i)[2]+"g"); + System.out.println("Nettopreis: "+produkte.get(i)[3]+"ct"); + System.out.println("MwStSatz: "+produkte.get(i)[4]+"%"); + System.out.println("Lagerbestand: "+produkte.get(i)[5]); + System.out.println(""); + } + }; + private static void AddProdukt(){ + System.out.println("Bitte geben Sie die id des Produktes ein:"); + String orgeingabe = sc.nextLine(); + int id = Integer.parseInt(orgeingabe); + for(int i = 0; i='0'&&orgeingabe.charAt(i)<='9')) { + return; + } + } + System.out.println("Bitte geben Sie die Anzahl an:"); + orgeingabe = sc.nextLine(); + int count = Integer.parseInt(orgeingabe); + for(int i = 0; i='0'&&orgeingabe.charAt(i)<='9')) { + return; + } + } + shop.AddProduktZuWarenkorb(id,count); + }; + private static void ShowWarenkorb(){ + ArrayList produkte = shop.ShowWarenkorb(); + for(int i = 1; i < produkte.size(); i++) { + System.out.println("id: "+produkte.get(i)[0]); + System.out.println("Name: "+produkte.get(i)[1]); + System.out.println("Nettopreis: "+produkte.get(i)[2]+"ct"); + System.out.println("MwStSatz: "+produkte.get(i)[3]+"%"); + System.out.println("Anzahl im Warenkorb: "+produkte.get(i)[4]); + System.out.println(""); + } + + System.out.println("Name: "+produkte.get(0)[0]); + System.out.println("Adresse: "+produkte.get(0)[1]); + System.out.println("Netto: "+produkte.get(0)[2]+"ct"); + System.out.println("Netto Versandkosten: "+produkte.get(0)[3]+"ct"); + System.out.println("Netto gesamt: "+produkte.get(0)[4]+"ct"); + System.out.println("Brutto: "+produkte.get(0)[5]+"ct"); + System.out.println("Brutto Versandkosten: "+produkte.get(0)[6]+"ct"); + System.out.println("Brutto gesamt: "+produkte.get(0)[7]+"ct"); + }; + private static void ResetWarenkorb(){ + shop.ResetWarenkorb(); + }; + private static void UpdateKundeInWarenkorb(){ + System.out.println("Bitte schreiben Sie ihren Namen:"); + String name = sc.nextLine(); + System.out.println("Bitte schreiben Sie ihre Addresse:"); + String addr = sc.nextLine(); + shop.UpdateKundeInWarenkorb(name, addr); + }; + private static void Bestellen() { + shop.AddBestellung(); + }; + private static void ShowBestellungen(){}; + + + private static ArrayList readFile(String path) throws FileNotFoundException { + ArrayList lines = new ArrayList<>(); + Scanner sc = new Scanner(new File(path)); + while (sc.hasNextLine()) { + lines.add(sc.nextLine()); + } + sc.close(); + return lines; } } diff --git a/README.md b/README.md index 8b38384..9d64ef8 100644 --- a/README.md +++ b/README.md @@ -25,3 +25,4 @@ Time Chart: 0:45 finish class OnlineShop +2:10 finish class ShopTUI