+ Bestellung Klasse verwendet

+ bestellen Methode in TUI hinzugefügt

+ Berechnungen zu Mwst von Waren und Versand, als auch Versandkosten
Netto, und Gesamtpreis

+ optische Anpassung
main
eronahasani 2025-12-13 21:44:07 +01:00
parent 37509ec232
commit f11dcbf4ef
5 changed files with 256 additions and 123 deletions

View File

@ -1,7 +1,31 @@
package backend;
public class Bestellung {
private String name;
private String adresse;
private Warenkorb warenkorb;
private double gesamtpreis;
public Bestellung(String name, String adresse, Warenkorb warenkorb) {
this.name = name;
this.adresse = adresse;
this.warenkorb = warenkorb;
this.gesamtpreis = warenkorb.gesamtpreis();
}
public String getName() {
return name;
}
public String getAdresse() {
return adresse;
}
public Warenkorb getWarenkorb() {
return warenkorb;
}
public double getGesamtpreis() {
return gesamtpreis;
}
}

View File

@ -34,6 +34,7 @@ public class OnlineShop {
sc.close();
}
public String[] produktListe() {
String[] produkt = new String[lager.size()];
for(int i = 0; i < lager.size(); i++) {
@ -45,7 +46,7 @@ public class OnlineShop {
public boolean reduzieren(Produkt p, int menge) {
for (Produkt lagerProdukt : lager) {
if (lagerProdukt.equals(p)) {
if (lagerProdukt.getId() == p.getId()) {
if (lagerProdukt.bestand >= menge) {
lagerProdukt.bestand -= menge;
return true;
@ -56,9 +57,10 @@ public class OnlineShop {
return false;
}
public void erhöhen(Produkt p, int menge) {
for (Produkt lagerProdukt : lager) {
if (lagerProdukt.equals(p)) {
if (lagerProdukt.getId() == p.getId()) {
lagerProdukt.bestand += menge;
return;
}

View File

@ -1,12 +1,12 @@
package backend;
public class Produkt {
public int id;
public String name;
public double gewicht;
public double preis;
public int mwst;
public int bestand;
private int id;
private String name;
private double gewicht;
private double preis;
private int mwst;
int bestand;
public Produkt(int id, String name, double gewicht, double preis, int mwst, int bestand) {
this.id = id;
@ -17,56 +17,33 @@ public class Produkt {
this.bestand = bestand;
}
public String getName() {
return this.name;
public int getId() {
return id;
}
public void setName(String neu) {
this.name = neu;
public String getName() {
return this.name;
}
public double getPreis() {
return preis;
}
public double getGewicht() {
return gewicht;
}
public int getMwst() {
return mwst;
}
public int getBestand() {
return bestand;
}
public String toString() {
return id + " | " + name + " | " + preis + "€";
}
public boolean equals(Produkt o) {
if (!(o instanceof Produkt))
return false;
if (o == null)
return false;
if (!this.name.equals(((Produkt)o).name)
|| this.preis != ((Produkt)o).preis)
return false;
return true;
}
@Override
public int hashCode() {
return Objects.hash(name, preis); //TODO
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Produkt other = (Produkt) obj;
return Objects.equals(name, other.name)
&& Double.doubleToLongBits(preis) == Double.doubleToLongBits(other.preis);
}
}

View File

@ -5,11 +5,13 @@ public class Warenkorb {
private ArrayList<Produkt> inhalt;
private ArrayList<WarenkorbPosition> positionen;
public Warenkorb() {
inhalt = new ArrayList<Produkt>();
positionen = new ArrayList<>();
}
public void produktHinzufügen(Produkt p, int menge) {
for (int i = 0; i < menge; i++) {
inhalt.add(p);
@ -17,38 +19,30 @@ public class Warenkorb {
boolean gefunden = false;
for (WarenkorbPosition wp : positionen) {
if (wp.getProdukt().getName().equals(p.getName())) {
if (wp.getProdukt().getId() == p.getId()) {
wp.setMenge(wp.getMenge() + menge);
gefunden = true;
break;
}
}
if (!gefunden) {
positionen.add(new WarenkorbPosition(p, menge));
}
}
public ArrayList<WarenkorbPosition> getPositionen() {
return positionen;
}
public double berechneGesamtpreis() {
double preis = 0;
for (WarenkorbPosition wp : positionen) {
preis += wp.getMenge() * wp.getProdukt().getPreis();
}
return preis;
}
public void pEntfernen(Produkt p) {
ArrayList<WarenkorbPosition> neu = new ArrayList<>();
for (WarenkorbPosition wp : positionen) {
if (!wp.getProdukt().equals(p)) {
if (wp.getProdukt().getId() != p.getId()) {
neu.add(wp);
} else {
p.bestand += wp.getMenge();
}
}
positionen = neu;
@ -62,7 +56,7 @@ public class Warenkorb {
}
for (WarenkorbPosition wp : positionen) {
if (wp.getProdukt().equals(p)) {
if (wp.getProdukt().getId() == p.getId()) {
wp.setMenge(neu);
return true;
}
@ -71,5 +65,116 @@ public class Warenkorb {
}
public double produkteNetto() {
double preis = 0;
for (WarenkorbPosition wp : positionen) {
preis += wp.getMenge() * wp.getProdukt().getPreis();
}
return preis;
}
public double produkteMwst() {
double mwst = 0;
for (WarenkorbPosition wp : positionen) {
double netto = wp.getProdukt().getPreis() * wp.getMenge();
int mwstInt = wp.getProdukt().getMwst();
mwst += netto * mwstInt / 100.00;
}
return mwst;
}
public double versandBrutto() {
if (produkteNetto() >= 500) return 0;
double gewicht = 0;
for (WarenkorbPosition wp : positionen) {
gewicht += wp.getProdukt().getGewicht() * wp.getMenge();
}
if (gewicht <= 0.1) {
return 3.95;
}
else if (gewicht <= 1.0) {
return 4.95;
}
else if (gewicht <= 5.0) {
return 5.95;
}
else {
return 19.95;
}
}
public double versandNetto() {
double netto7 = 0;
double netto19 = 0;
double gesamtNetto = 0;
for (WarenkorbPosition wp : positionen) {
double netto = wp.getProdukt().getPreis() * wp.getMenge();
int mwst = wp.getProdukt().getMwst();
if (mwst == 7) netto7 += netto;
else if (mwst == 19) netto19 += netto;
gesamtNetto += netto;
}
if (versandBrutto() == 0 || gesamtNetto == 0) return 0;
double anteil7 = netto7 / gesamtNetto;
double anteil19 = netto19 / gesamtNetto;
double anteilBrutto7 = versandBrutto() * anteil7;
double anteilBrutto19 = versandBrutto() * anteil19;
return (anteilBrutto7 / 1.07) + (anteilBrutto19 / 1.19);
}
public double versandMwst() {
double netto7 = 0;
double netto19 = 0;
double gesamtNetto = 0;
for (WarenkorbPosition wp : positionen) {
double netto = wp.getProdukt().getPreis() * wp.getMenge();
int mwst = wp.getProdukt().getMwst();
if (mwst == 7) {
netto7 += netto;
} else if (mwst == 19) {
netto19 += netto;
}
gesamtNetto += netto;
}
if (versandBrutto() == 0 || gesamtNetto == 0) {
return 0;
}
double anteil7 = netto7 / gesamtNetto;
double anteil19 = netto19 / gesamtNetto;
double anteilBrutto7 = versandBrutto() * anteil7;
double anteilBrutto19 = versandBrutto() * anteil19;
double nettoVersand7 = anteilBrutto7 / 1.07;
double nettoVersand19 = anteilBrutto19 / 1.19;
return (anteilBrutto7
- nettoVersand7)
+ (anteilBrutto19
- nettoVersand19);
}
public double gesamtpreis() {
return produkteNetto()
+ produkteMwst()
+ versandNetto()
+ versandMwst();
}
}

View File

@ -3,6 +3,7 @@ import backend.WarenkorbPosition;
import backend.OnlineShop;
import backend.Produkt;
import backend.Warenkorb;
import backend.Bestellung;
import java.util.Scanner;
import java.io.FileNotFoundException;
@ -17,9 +18,7 @@ public class shopTUI {
System.out.println("Willkommen bei Onami! („•֊•„)੭");
shop = new OnlineShop();
warenkorb = new Warenkorb();
hauptmenü();
}
@ -40,7 +39,7 @@ public class shopTUI {
} else if (eingabe.equals("produktsuche") || eingabe.equals("suche")) {
suche();
} else if (eingabe.equals("warenkorb")) {
warenkorbAnzeigen();
warenkorb();
} else if (eingabe.equals("beenden")) {
System.out.println("\n\n\n | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| ");
System.out.println(" Auf Wiedersehen! ");
@ -60,7 +59,7 @@ public class shopTUI {
for (int i = 0; i < produkte.length; i++) {
Produkt p = shop.lager.get(i);
System.out.printf(" %-2d | %-23s | %.2f€\n", p.id, p.name, p.preis);
System.out.printf(" %-2d | %-23s | %.2f€\n", p.getId(), p.getName(), p.getPreis());
}
System.out.println("\nWählen Sie ein Produkt anhand der Artikelnummer für Ihren Warenkorb aus \noder geben Sie 'Hauptmenü' an, wenn Sie zurück wollen: ");
@ -74,10 +73,10 @@ public class shopTUI {
int index = nummer - 1;
Produkt p = shop.lager.get(index);
System.out.println("\n\n\nSie haben folgendes ausgewählt: " + p.name);
System.out.println("\n\n\nSie haben folgendes ausgewählt: " + p.getName());
System.out.println("(„•֊•„) Geben Sie bitte die gewünschte Menge an: \n");
int menge = Integer.parseInt(sc.nextLine());
if (menge <= p.bestand) {
if (menge <= p.getBestand()) {
warenkorb.produktHinzufügen(p, menge);
shop.reduzieren(p, menge);
System.out.println("Das Produkt wurde in der gewünschten Menge zum Warenkorb hinzugefügt ✧。٩(ˊᗜˋ)و✧*。");
@ -101,8 +100,8 @@ public class shopTUI {
for (int artnr = 0; artnr < shop.lager.size(); artnr++) {
Produkt p = shop.lager.get(artnr);
for (int i = 0; i <= p.name.length() - suchbegriff.length(); i++) {
if (p.name.substring(i, i + suchbegriff.length()).toLowerCase().equals(suchbegriff)) {
for (int i = 0; i <= p.getName().length() - suchbegriff.length(); i++) {
if (p.getName().substring(i, i + suchbegriff.length()).toLowerCase().equals(suchbegriff)) {
if(!gefunden) {
System.out.println("\n(˶ˆᗜˆ˵) Wir haben folgenden Treffer zu bieten: ");
}
@ -116,7 +115,7 @@ public class shopTUI {
System.out.println("(„•֊•„) Geben Sie bitte die gewünschte Menge an: ");
int menge = Integer.parseInt(sc.nextLine());
if (menge <= p.bestand) {
if (menge <= p.getBestand()) {
warenkorb.produktHinzufügen(p, menge);
shop.reduzieren(p, menge);
System.out.println("Das Produkt wurde in der gewünschten Menge zum Warenkorb hinzugefügt ✧。٩(ˊᗜˋ)و✧*。");
@ -142,72 +141,98 @@ public class shopTUI {
}
public static void warenkorbAnzeigen() {
public static void warenkorb() {
if (warenkorb.getPositionen().size() == 0) {
System.out.println("\n\nIhr Warenkorb ist leer (˶ᵕ˶)⸝♡");
System.out.println("Ab zum Hauptmenü... ٩(^ᗜ^ )و \n\n\n");
hauptmenü();
} else {
System.out.println("\n\n(。•◡•。) Hier ist Ihr aktueller Warenkorb: ");
System.out.println("\n⟡ . ݁₊ ⊹ . ݁˖ . ݁ . ݁₊ Warenkorbübersicht . ݁ ˖ . ݁ . ݁₊ ⊹ . ݁˖ ݁.⟡");
System.out.println("⟡ . ݁ ݁.⟡");
int pos = 1;
for (WarenkorbPosition wp : warenkorb.getPositionen()) {
System.out.printf("Pos.: %2d. | %dx | %-23s | %.2f€\n",
System.out.printf("⟡ . ݁ Pos.: %2d | %2dx | %-23s | %6.2f€ ݁.⟡\n",
pos++,
wp.getMenge(),
wp.getProdukt().getName(),
wp.getProdukt().getPreis());
}
System.out.printf("Ihre Summe beträgt %.2f€ ૮˶ᵔᵕᵔ˶ა%n", warenkorb.berechneGesamtpreis());
System.out.println("⟡ . ݁ ݁.⟡");
double gesamtpreis
= warenkorb.produkteNetto()
+ warenkorb.produkteMwst()
+ warenkorb.versandNetto()
+ warenkorb.versandMwst();
System.out.printf("⟡ . ݁ %-29s %19.2f€ ݁.⟡\n", "Nettosumme:", warenkorb.produkteNetto());
System.out.printf("⟡ . ݁ %-29s %19.2f€ ݁.⟡\n", "MwSt:", warenkorb.produkteMwst());
System.out.println("⟡ . ݁ ݁.⟡");
System.out.printf("⟡ . ݁ %-29s %19.2f€ ݁.⟡\n", "Versandkosten:", warenkorb.versandNetto());
System.out.printf("⟡ . ݁ %-29s %19.2f€ ݁.⟡\n", "MwSt Versand:", warenkorb.versandMwst());
System.out.println("⟡ . ݁ ݁.⟡");
System.out.printf("⟡ . ݁ %-29s %19.2f€ ݁.⟡\n", "Gesamt Brutto:", gesamtpreis);
System.out.println("⟡ . ݁ ݁.⟡");
System.out.println("⟡ . ݁₊ ⊹ . ݁˖ . ݁ . ݁ ₊ ⊹ . ݁˖ . ݁ ⟡ . ݁₊ ⊹ . ݁˖ . ݁ . ݁₊ ⊹ . ݁˖ ݁.⟡");
System.out.println("\n\n\nMöchten Sie bestellen, die Menge ändern oder zurück zum Hauptmenü?: ");
String eingabe = sc.nextLine().toLowerCase();
if (eingabe.equals("hauptmenü") || eingabe.equals("menü")) {
hauptmenü();
} else if (eingabe.equals("menge ändern") || eingabe.equals("die menge ändern") || eingabe.equals("ändern")) {
mengeBearbeiten();
menge();
} else if (eingabe.equals("bestellen")) {
bestellen();
} else {
System.out.println("\n\n Ungültige Eingabe (˃̣̣̥ᯅ˂̣̣̥) Versuchen Sie es bitte erneut: \n\n");
warenkorb();
}
}
}
public static void bestellen() {
System.out.print("Bitte geben Sie Ihren vollständigen Namen ein: ");
String name = sc.nextLine();
System.out.print("\nBitte geben Sie Ihre Lieferadresse ein: ");
String adresse = sc.nextLine();
Bestellung bestellung = new Bestellung(name, adresse, warenkorb);
System.out.println("\n\n\n\n\n(\\ (\\");
System.out.println("(„• ֊ •„) Danke schön für Ihre Bestellung!");
System.out.println("━O━O━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
System.out.println("Name: ");
System.out.println(name);
System.out.println("\nAdresse: ");
System.out.println(adresse);
System.out.println("━O━O━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
System.out.println("Name: \n" + bestellung.getName());
System.out.println("\nAdresse: \n" + bestellung.getAdresse());
System.out.println("\nArtikel:" );
int artpos = 1;
for (WarenkorbPosition wp : warenkorb.getPositionen()) {
System.out.printf("Pos.: %2d. | %d | %-23s | %.2f€\n",
for (WarenkorbPosition wp : bestellung.getWarenkorb().getPositionen()) {
System.out.printf("Pos.: %2d. | %2d | %-23s | %.2f€\n",
artpos++,
wp.getMenge(),
wp.getProdukt().getName(),
wp.getProdukt().getPreis());
}
System.out.println("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
System.out.printf("\nGesamtpreis: \n%.2f€\n", bestellung.getGesamtpreis());
System.out.println("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
warenkorb = new Warenkorb();
System.out.println("\n\nIhr Warenkorb wurde geleert! ◝(˶˃ᵕ˂˶)◜");
System.out.println("Ab zum Hauptmenü... ٩(^ᗜ^ )و \n\n\n");
hauptmenü();
} else {
System.out.println("\n\n Ungültige Eingabe (˃̣̣̥ᯅ˂̣̣̥) Versuchen Sie es bitte erneut: \n\n");
warenkorbAnzeigen();
}
}
}
public static void mengeBearbeiten() {
public static void menge() {
System.out.print("Welche Position möchten Sie bearbeiten?: ");
int posNr = Integer.parseInt(sc.nextLine()) - 1;
if (posNr < 0 || posNr >= warenkorb.getPositionen().size()) {
System.out.println("Ungültige Eingabe (˃̣̣̥ᯅ˂̣̣̥) Versuchen Sie es bitte erneut:");
warenkorbAnzeigen();
warenkorb();
return;
}
@ -215,14 +240,15 @@ public class shopTUI {
Produkt p = wp.getProdukt();
int alt = wp.getMenge();
System.out.print("\nGeben Sie bitte die neue Menge: ");
System.out.print("\nGeben Sie bitte die neue Menge an: ");
int neu = Integer.parseInt(sc.nextLine());
int x = neu - alt;
if (neu == 0) {
shop.erhöhen(p, alt);
warenkorb.pEntfernen(p);
System.out.println("Die Position wurde gelöscht! ✧。٩(ˊᗜˋ)و✧*。");
} else if (x > 0 && p.bestand < x) {
} else if (x > 0 && p.getBestand() < x) {
System.out.println("Leider reicht unser Bestand nicht aus (˃̣̣̥ᯅ˂̣̣̥)");
} else {
if (x > 0) shop.reduzieren(p, x);
@ -230,7 +256,6 @@ public class shopTUI {
warenkorb.mengeAendern(p, neu);
System.out.println("Die Menge wurde geändert! ✧。٩(ˊᗜˋ)و✧*。");
}
warenkorbAnzeigen();
warenkorb();
}
}