finish class ShopTUI

main
Lukas Klipfel 2025-12-15 00:59:46 +01:00
parent a45c6d8fad
commit 4d2251af0f
4 changed files with 225 additions and 20 deletions

View File

@ -12,7 +12,19 @@ public class OnlineShop {
this.bestellungen = new ArrayList<Bestellung>(); this.bestellungen = new ArrayList<Bestellung>();
this.aktuellerWarenkorb = new Warenkorb(); this.aktuellerWarenkorb = new Warenkorb();
}; };
public void AddProdukteVonDatei(ArrayList<String> 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){ public void AddProdukt(Produkt neu){
this.lager.add(neu); this.lager.add(neu);
}; };
@ -33,23 +45,27 @@ public class OnlineShop {
}; };
public ArrayList<String[]> ShowWarenkorb(){ public ArrayList<String[]> ShowWarenkorb(){
ArrayList<String[]> ret = new ArrayList<String[]>(); ArrayList<String[]> ret = new ArrayList<String[]>();
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++) { 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; return ret;
}; };
public ArrayList<String[]> SearchProdukt(String substing){ public ArrayList<String[]> SearchProdukt(String substing){
ArrayList<String[]> ret = new ArrayList<String[]>(); ArrayList<String[]> ret = new ArrayList<String[]>();
for(int i = 0; i < this.lager.size(); i++) { 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}); 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; return ret;
}; };
public void AddProduktZuWarenkorb(Produkt add, int count){ public void AddProduktZuWarenkorb(int id, int count){
if(count <= add.lagerbestand) Produkt neu = FindeProduktVonId(id);
aktuellerWarenkorb.AddProdukt(add, count); if(neu == null)
return;
aktuellerWarenkorb.AddProdukt(neu, count);
}; };
public void DelProduktAusWarenkorb(Produkt del){ public void DelProduktAusWarenkorb(Produkt del){
aktuellerWarenkorb.DelProdukt(del); aktuellerWarenkorb.DelProdukt(del);
@ -57,8 +73,8 @@ public class OnlineShop {
public void ChangeProduktInWarenkorb(Produkt change, int count){ public void ChangeProduktInWarenkorb(Produkt change, int count){
aktuellerWarenkorb.ChangeProdukt(change, count); aktuellerWarenkorb.ChangeProdukt(change, count);
}; };
public void UpdateKundeInWarenkorb(Kunde neu){ public void UpdateKundeInWarenkorb(String name, String addr){
aktuellerWarenkorb.UpdateKunde(neu); aktuellerWarenkorb.UpdateKunde(new Kunde(name, addr));
}; };
public void AddBestellung(){ public void AddBestellung(){
Warenkorb Bestellkorb = new Warenkorb(this.aktuellerWarenkorb.kunde); 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;
}
} }

View File

@ -29,14 +29,14 @@ public class Warenkorb {
public int BruttoPreis(){ public int BruttoPreis(){
double tmp = 0; double tmp = 0;
for(int i = 0; i < this.inhalt.size(); i++) { 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); return (int) Math.round(tmp);
}; };
public int NettoVersandkosten(){ public int NettoVersandkosten(){
int ret = 0; int ret = 0;
for(int i = 0; i < this.inhalt.size(); i++) { 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; return ret;
}; };
@ -60,11 +60,15 @@ public class Warenkorb {
return BruttoPreis()+BruttoVersandkosten(); return BruttoPreis()+BruttoVersandkosten();
}; };
public void AddProdukt(Produkt add, int count){ public void AddProdukt(Produkt add, int count){
if(count <= add.lagerbestand) { if(IsProduktInWarenkorb(add)) {
this.inhalt.add(add); ChangeProdukt(add, GetProduktAnzahl(add)+count);
this.anzahl.add(count); } else {
CheckCount(add); if(count <= add.lagerbestand) {
this.inhalt.add(add);
this.anzahl.add(count);
}
} }
CheckCount(add);
}; };
public void DelProdukt(Produkt del){ public void DelProdukt(Produkt del){
for(int i = 0; i < this.inhalt.size(); i++) { 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; int ret = 0;
for(int i = 0; i < this.inhalt.size(); i++) { for(int i = 0; i < this.inhalt.size(); i++) {
ret += (this.inhalt.get(i).transportGewicht*this.anzahl.get(i)); ret += (this.inhalt.get(i).transportGewicht*this.anzahl.get(i));
} }
return ret; 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;
}
} }

View File

@ -7,13 +7,164 @@ import java.util.ArrayList;
import java.util.Scanner; import java.util.Scanner;
public class ShopTUI { public class ShopTUI {
public static void main(String[] args) { private static OnlineShop shop;
OnlineShop shop = new OnlineShop(); private static Scanner sc;
Scanner sc = new Scanner(System.in); public static void main(String[] args) throws FileNotFoundException {
Menu(shop, sc); shop = new OnlineShop();
sc = new Scanner(System.in);
shop.AddProdukteVonDatei(readFile("resources/produkte.csv"));
Menu();
System.out.println("Ende."); 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<String[]> 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<String[]> 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<orgeingabe.length();i++) {
if(!(orgeingabe.charAt(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<orgeingabe.length();i++) {
if(orgeingabe.charAt(i)=='-')
continue;
if(!(orgeingabe.charAt(i)>='0'&&orgeingabe.charAt(i)<='9')) {
return;
}
}
shop.AddProduktZuWarenkorb(id,count);
};
private static void ShowWarenkorb(){
ArrayList<String[]> 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<String> readFile(String path) throws FileNotFoundException {
ArrayList<String> lines = new ArrayList<>();
Scanner sc = new Scanner(new File(path));
while (sc.hasNextLine()) {
lines.add(sc.nextLine());
}
sc.close();
return lines;
} }
} }

View File

@ -25,3 +25,4 @@ Time Chart:
0:45 finish class OnlineShop 0:45 finish class OnlineShop
2:10 finish class ShopTUI