Aufgaben nochmal durchgangen, aufgefallen das bei Warenpreis BRUTTO ab

500€ frei ist und dass bei Versand nur 100g inkl. sein soll, die anderen
Gewichte exkl.

Bei Junit vorherige Vereinfachungen entfernt und delta 0.01 für
Rundungsfehler (von KI Vorschlag, siehe quellen.txt) auch entfernt, weil
unnötig, denn meine Methoden geben Wert 1:1 zurück

Optische Verfeinerungen
main
eronahasani 2025-12-15 02:50:32 +01:00
parent 379a5bb8f4
commit 2e6a8c154c
4 changed files with 103 additions and 93 deletions

View File

@ -44,6 +44,18 @@ public class Produkt {
public String toString() {
return id + " | " + name + " | " + preis + "€";
}
public boolean namePasst(String suchbegriff) {
String n = name.toLowerCase();
String s = suchbegriff.toLowerCase();
for (int i = 0; i <= n.length() - s.length(); i++) {
if (n.substring(i, i + s.length()).equals(s)) {
return true;
}
}
return false;
}
}

View File

@ -5,11 +5,13 @@ public class Warenkorb {
private ArrayList<WarenkorbPosition> positionen;
public Warenkorb() {
positionen = new ArrayList<>();
}
public void produktHinzufügen(Produkt p, int menge) {
boolean gefunden = false;
@ -27,6 +29,7 @@ public class Warenkorb {
}
public ArrayList<WarenkorbPosition> getPositionen() {
return positionen;
}
@ -44,9 +47,10 @@ public class Warenkorb {
}
public boolean mengeAendern(Produkt p, int neu) {
if (neu == 0) {
this.entfernen(p);
entfernen(p);
return true;
}
@ -60,8 +64,10 @@ public class Warenkorb {
}
public double produkteNetto() {
double preis = 0;
for (WarenkorbPosition wp : positionen) {
preis += wp.getMenge() * wp.getProdukt().getPreis();
}
@ -69,6 +75,7 @@ public class Warenkorb {
}
public double produkteMwst() {
double mwst = 0;
@ -81,20 +88,29 @@ public class Warenkorb {
}
public double produkteBrutto() {
return produkteNetto() + produkteMwst();
}
public double versandBrutto() {
if (produkteNetto() >= 500) return 0;
if (produkteBrutto() >= 500) {
return 0;
}
double gewicht = 0;
for (WarenkorbPosition wp : positionen) {
gewicht += wp.getProdukt().getGewicht() * wp.getMenge();
}
if (gewicht <= 0.1) {
if (gewicht <= 0.1) {
return 3.95;
}
else if (gewicht <= 1.0) {
else if (gewicht < 1.0) {
return 4.95;
}
else if (gewicht <= 5.0) {
else if (gewicht < 5.0) {
return 5.95;
}
else {
@ -103,6 +119,7 @@ public class Warenkorb {
}
public double versandNetto() {
double netto7 = 0;
double netto19 = 0;
@ -111,13 +128,15 @@ public class Warenkorb {
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 (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;
@ -128,6 +147,7 @@ public class Warenkorb {
}
public double versandMwst() {
double netto7 = 0;
double netto19 = 0;
@ -137,18 +157,14 @@ public class Warenkorb {
double netto = wp.getProdukt().getPreis() * wp.getMenge();
int mwst = wp.getProdukt().getMwst();
if (mwst == 7) {
netto7 += netto;
if (mwst == 7) {
netto7 += netto;
} else if (mwst == 19) {
netto19 += netto;
netto19 += netto;
}
gesamtNetto += netto;
}
if (versandBrutto() == 0 || gesamtNetto == 0) {
return 0;
}
double anteil7 = netto7 / gesamtNetto;
double anteil19 = netto19 / gesamtNetto;

View File

@ -50,68 +50,48 @@ public class WarenkorbTest {
@Test
void testGleicheProduktHinzufuegen() {
Produkt p = produkte.get(0);
warenkorb.produktHinzufügen(p, 1);
warenkorb.produktHinzufügen(p, 2);
warenkorb.produktHinzufügen(produkte.get(0), 1);
warenkorb.produktHinzufügen(produkte.get(0), 2);
assertEquals(3, warenkorb.getPositionen().get(0).getMenge());
}
@Test
void testMengeAendern() {
Produkt p = produkte.get(1);
warenkorb.produktHinzufügen(produkte.get(1), 2);
warenkorb.produktHinzufügen(p, 2);
assertTrue(warenkorb.mengeAendern(p, 3));
assertTrue(warenkorb.mengeAendern(produkte.get(1), 3));
assertEquals(3, warenkorb.getPositionen().get(0).getMenge());
}
@Test
void testEntfernen() {
void testEntfernenOderWarenkorbLeer() {
Produkt p = produkte.get(2);
warenkorb.produktHinzufügen(p, 1);
warenkorb.mengeAendern(p, 0);
warenkorb.produktHinzufügen(produkte.get(2), 1);
warenkorb.mengeAendern(produkte.get(2), 0);
assertEquals(0, warenkorb.getPositionen().size());
}
@Test
void testWarenkorbLeer() {
Produkt p = produkte.get(0);
warenkorb.produktHinzufügen(p, 2);
warenkorb.mengeAendern(p, 0);
assertEquals(0, warenkorb.getPositionen().size());
}
@Test
void testProdukteNetto() {
Produkt p = produkte.get(0);
warenkorb.produktHinzufügen(produkte.get(0), 1);
warenkorb.produktHinzufügen(p, 1);
double netto = p.getPreis();
assertEquals(netto, warenkorb.produkteNetto(), 0.01);
double netto = produkte.get(0).getPreis();
assertEquals(netto, warenkorb.produkteNetto());
}
@Test
void testProdukteMwst() {
Produkt p = produkte.get(0);
warenkorb.produktHinzufügen(produkte.get(0), 1);
warenkorb.produktHinzufügen(p, 1);
double mwst = p.getPreis() * p.getMwst() / 100.0;
assertEquals(mwst, warenkorb.produkteMwst(), 0.01);
double mwst = produkte.get(0).getPreis() * produkte.get(0).getMwst() / 100.0;
assertEquals(mwst, warenkorb.produkteMwst());
}
@ -128,7 +108,7 @@ public class WarenkorbTest {
double mwstP2 = 3 * p2.getPreis() * p2.getMwst() / 100.0;
double erwartet = mwstP1 + mwstP2;
assertEquals(erwartet, warenkorb.produkteMwst(), 0.01);
assertEquals(erwartet, warenkorb.produkteMwst());
}
@ -149,7 +129,7 @@ public class WarenkorbTest {
double erwartet = (anteilBrutto7 / 1.07)
+ (anteilBrutto19 / 1.19);
assertEquals(erwartet, warenkorb.versandNetto(), 0.01);
assertEquals(erwartet, warenkorb.versandNetto());
}
@ -174,7 +154,7 @@ public class WarenkorbTest {
+ (anteilBrutto19
- nettoVersand19);
assertEquals(erwartet, warenkorb.versandMwst(), 0.01);
assertEquals(erwartet, warenkorb.versandMwst());
}

View File

@ -11,7 +11,7 @@ import java.io.FileNotFoundException;
public class shopTUI {
private static OnlineShop shop;
private static Warenkorb warenkorb = new Warenkorb();
private static Warenkorb warenkorb;
private static Scanner sc = new Scanner(System.in);
public static void main(String[] args) throws FileNotFoundException {
@ -55,9 +55,8 @@ public class shopTUI {
public static void angebot() {
System.out.println("\n\n\n૮ ྀིᴗ͈.ᴗ͈ ྀིა Unser Angebot: \n");
String[] produkte = shop.produktListe();
for (int i = 0; i < produkte.length; i++) {
for (int i = 0; i < shop.lager.size(); i++) {
Produkt p = shop.lager.get(i);
System.out.printf(" %-2d | %-23s | %.2f€ | + %2d%%\n", p.getId(), p.getName(), p.getPreis(), p.getMwst());
}
@ -92,53 +91,56 @@ public class shopTUI {
System.out.println("\n(˶˃ᵕ˂˶) Wonach suchen Sie?: ");
String suchbegriff = sc.nextLine().toLowerCase();
if (suchbegriff.length() == 0) return;
if (suchbegriff.equals("hauptmenü")) return;
if (suchbegriff.length() == 0) {
return;
}
if (suchbegriff.equals("hauptmenü")) {
return;
}
boolean gefunden = false;
for (int artnr = 0; artnr < shop.lager.size(); artnr++) {
Produkt p = shop.lager.get(artnr);
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: ");
}
System.out.println(p);
gefunden = true;
System.out.println("\nMöchten Sie das Produkt zu Ihrem Warenkorb hinzufügen? (✿◠ᴗ◠)");
String antwort = sc.nextLine().toLowerCase();
if (p.namePasst(suchbegriff)) {
if(!gefunden) {
System.out.println("\n(˶ˆᗜˆ˵) Wir haben folgenden Treffer zu bieten: ");
}
System.out.println(p);
gefunden = true;
if (antwort.equals("ja")) {
System.out.println("(„•֊•„) Geben Sie bitte die gewünschte Menge an: ");
int menge = Integer.parseInt(sc.nextLine());
System.out.println("\nMöchten Sie das Produkt zu Ihrem Warenkorb hinzufügen? (✿◠ᴗ◠)");
String antwort = sc.nextLine().toLowerCase();
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 ✧。٩(ˊᗜˋ)و✧*。");
System.out.println("Ab zum Hauptmenü... ٩(^ᗜ^ )و \n\n\n");
hauptmenü();
} else {
System.out.println("Leider reicht unser Bestand nicht aus (˃̣̣̥ᯅ˂̣̣̥)");
System.out.println("Ab zum Hauptmenü... ٩(^ᗜ^ )و \n\n\n");
hauptmenü();
}
if (antwort.equals("ja")) {
System.out.println("(„•֊•„) Geben Sie bitte die gewünschte Menge an: ");
int menge = Integer.parseInt(sc.nextLine());
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 ✧。٩(ˊᗜˋ)و✧*。");
System.out.println("Ab zum Hauptmenü... ٩(^ᗜ^ )و \n\n\n");
hauptmenü();
} else {
System.out.println("Ab zum Hauptmenü... ٩(^ᗜ^ )و \n\n\n");
hauptmenü();
System.out.println("Leider reicht unser Bestand nicht aus (˃̣̣̥ᯅ˂̣̣̥)");
System.out.println("Ab zum Hauptmenü... ٩(^ᗜ^ )و \n\n\n");
hauptmenü();
}
}
}
}
if (!gefunden) {
System.out.println("Leider keine Treffer (˃̣̣̥ᯅ˂̣̣̥)");
System.out.println("Ab zum Hauptmenü... ٩(^ᗜ^ )و \n\n\n");
hauptmenü();
} else {
System.out.println("Ab zum Hauptmenü... ٩(^ᗜ^ )و \n\n\n");
hauptmenü();
}
}
}
if (!gefunden) {
System.out.println("Leider keine Treffer (˃̣̣̥ᯅ˂̣̣̥)");
System.out.println("Ab zum Hauptmenü... ٩(^ᗜ^ )و \n\n\n");
hauptmenü();
}
}
public static void warenkorb() {