From 2e6a8c154c931508768aa349f11c0f2b155f3643 Mon Sep 17 00:00:00 2001 From: eronahasani Date: Mon, 15 Dec 2025 02:50:32 +0100 Subject: [PATCH] =?UTF-8?q?Aufgaben=20nochmal=20durchgangen,=20aufgefallen?= =?UTF-8?q?=20das=20bei=20Warenpreis=20BRUTTO=20ab=20500=E2=82=AC=20frei?= =?UTF-8?q?=20ist=20und=20dass=20bei=20Versand=20nur=20100g=20inkl.=20sein?= =?UTF-8?q?=20soll,=20die=20anderen=20Gewichte=20exkl.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- OS-Abgabe/src/backend/Produkt.java | 12 ++++ OS-Abgabe/src/backend/Warenkorb.java | 50 ++++++++++----- OS-Abgabe/src/backend/WarenkorbTest.java | 54 +++++----------- OS-Abgabe/src/tui/shopTUI.java | 80 ++++++++++++------------ 4 files changed, 103 insertions(+), 93 deletions(-) diff --git a/OS-Abgabe/src/backend/Produkt.java b/OS-Abgabe/src/backend/Produkt.java index 0e81015..cc57323 100644 --- a/OS-Abgabe/src/backend/Produkt.java +++ b/OS-Abgabe/src/backend/Produkt.java @@ -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; + } } diff --git a/OS-Abgabe/src/backend/Warenkorb.java b/OS-Abgabe/src/backend/Warenkorb.java index 2e40eae..220f979 100644 --- a/OS-Abgabe/src/backend/Warenkorb.java +++ b/OS-Abgabe/src/backend/Warenkorb.java @@ -5,9 +5,11 @@ public class Warenkorb { private ArrayList positionen; + public Warenkorb() { positionen = new ArrayList<>(); } + public void produktHinzufügen(Produkt p, int menge) { @@ -26,6 +28,7 @@ public class Warenkorb { } } + public ArrayList getPositionen() { return positionen; @@ -43,10 +46,11 @@ public class Warenkorb { positionen = neu; } + public boolean mengeAendern(Produkt p, int neu) { if (neu == 0) { - this.entfernen(p); + entfernen(p); return true; } @@ -60,13 +64,16 @@ public class Warenkorb { } + public double produkteNetto() { double preis = 0; + for (WarenkorbPosition wp : positionen) { preis += wp.getMenge() * wp.getProdukt().getPreis(); } return preis; } + public double produkteMwst() { @@ -80,21 +87,30 @@ public class Warenkorb { return mwst; } + + + 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 { @@ -102,6 +118,7 @@ public class Warenkorb { } } + public double versandNetto() { double netto7 = 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; @@ -127,6 +146,7 @@ public class Warenkorb { return (anteilBrutto7 / 1.07) + (anteilBrutto19 / 1.19); } + public double versandMwst() { double netto7 = 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; diff --git a/OS-Abgabe/src/backend/WarenkorbTest.java b/OS-Abgabe/src/backend/WarenkorbTest.java index 7f07a71..e890ea7 100644 --- a/OS-Abgabe/src/backend/WarenkorbTest.java +++ b/OS-Abgabe/src/backend/WarenkorbTest.java @@ -49,69 +49,49 @@ 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(p, 2); + warenkorb.produktHinzufügen(produkte.get(1), 2); - assertTrue(warenkorb.mengeAendern(p, 3)); + assertTrue(warenkorb.mengeAendern(produkte.get(1), 3)); assertEquals(3, warenkorb.getPositionen().get(0).getMenge()); } @Test - void testEntfernen() { - - Produkt p = produkte.get(2); + void testEntfernenOderWarenkorbLeer() { - warenkorb.produktHinzufügen(p, 1); - warenkorb.mengeAendern(p, 0); - - assertEquals(0, warenkorb.getPositionen().size()); - } - - @Test - void testWarenkorbLeer() { - - Produkt p = produkte.get(0); - - warenkorb.produktHinzufügen(p, 2); - warenkorb.mengeAendern(p, 0); + warenkorb.produktHinzufügen(produkte.get(2), 1); + warenkorb.mengeAendern(produkte.get(2), 0); assertEquals(0, warenkorb.getPositionen().size()); } + @Test void testProdukteNetto() { - - Produkt p = produkte.get(0); - warenkorb.produktHinzufügen(p, 1); + warenkorb.produktHinzufügen(produkte.get(0), 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(p, 1); + warenkorb.produktHinzufügen(produkte.get(0), 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()); } diff --git a/OS-Abgabe/src/tui/shopTUI.java b/OS-Abgabe/src/tui/shopTUI.java index 107ff1e..488fb6d 100644 --- a/OS-Abgabe/src/tui/shopTUI.java +++ b/OS-Abgabe/src/tui/shopTUI.java @@ -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; + + if (p.namePasst(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(); + System.out.println("\nMöchten Sie das Produkt zu Ihrem Warenkorb hinzufügen? (✿◠ᴗ◠)"); + String antwort = sc.nextLine().toLowerCase(); + + if (antwort.equals("ja")) { + System.out.println("(„•֊•„) Geben Sie bitte die gewünschte Menge an: "); + int menge = Integer.parseInt(sc.nextLine()); - 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("Leider reicht unser Bestand nicht aus (˃̣̣̥ᯅ˂̣̣̥)"); - System.out.println("Ab zum Hauptmenü... ٩(^ᗜ^ )و \n\n\n"); - hauptmenü(); - } + 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ü(); } - } - } + } 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ü(); - } - } + if (!gefunden) { + System.out.println("Leider keine Treffer (˃̣̣̥ᯅ˂̣̣̥)"); + System.out.println("Ab zum Hauptmenü... ٩(^ᗜ^ )و \n\n\n"); + hauptmenü(); + } + } public static void warenkorb() {