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 Verfeinerungenmain
parent
379a5bb8f4
commit
2e6a8c154c
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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() {
|
||||
|
|
|
|||
Loading…
Reference in New Issue