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() {
|
public String toString() {
|
||||||
return id + " | " + name + " | " + preis + "€";
|
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;
|
private ArrayList<WarenkorbPosition> positionen;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public Warenkorb() {
|
public Warenkorb() {
|
||||||
positionen = new ArrayList<>();
|
positionen = new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void produktHinzufügen(Produkt p, int menge) {
|
public void produktHinzufügen(Produkt p, int menge) {
|
||||||
|
|
||||||
boolean gefunden = false;
|
boolean gefunden = false;
|
||||||
|
|
@ -27,6 +29,7 @@ public class Warenkorb {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public ArrayList<WarenkorbPosition> getPositionen() {
|
public ArrayList<WarenkorbPosition> getPositionen() {
|
||||||
return positionen;
|
return positionen;
|
||||||
}
|
}
|
||||||
|
|
@ -44,9 +47,10 @@ public class Warenkorb {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public boolean mengeAendern(Produkt p, int neu) {
|
public boolean mengeAendern(Produkt p, int neu) {
|
||||||
if (neu == 0) {
|
if (neu == 0) {
|
||||||
this.entfernen(p);
|
entfernen(p);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -60,8 +64,10 @@ public class Warenkorb {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public double produkteNetto() {
|
public double produkteNetto() {
|
||||||
double preis = 0;
|
double preis = 0;
|
||||||
|
|
||||||
for (WarenkorbPosition wp : positionen) {
|
for (WarenkorbPosition wp : positionen) {
|
||||||
preis += wp.getMenge() * wp.getProdukt().getPreis();
|
preis += wp.getMenge() * wp.getProdukt().getPreis();
|
||||||
}
|
}
|
||||||
|
|
@ -69,6 +75,7 @@ public class Warenkorb {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public double produkteMwst() {
|
public double produkteMwst() {
|
||||||
double mwst = 0;
|
double mwst = 0;
|
||||||
|
|
||||||
|
|
@ -81,20 +88,29 @@ public class Warenkorb {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public double produkteBrutto() {
|
||||||
|
return produkteNetto() + produkteMwst();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public double versandBrutto() {
|
public double versandBrutto() {
|
||||||
if (produkteNetto() >= 500) return 0;
|
if (produkteBrutto() >= 500) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
double gewicht = 0;
|
double gewicht = 0;
|
||||||
for (WarenkorbPosition wp : positionen) {
|
for (WarenkorbPosition wp : positionen) {
|
||||||
gewicht += wp.getProdukt().getGewicht() * wp.getMenge();
|
gewicht += wp.getProdukt().getGewicht() * wp.getMenge();
|
||||||
}
|
}
|
||||||
if (gewicht <= 0.1) {
|
if (gewicht <= 0.1) {
|
||||||
return 3.95;
|
return 3.95;
|
||||||
}
|
}
|
||||||
else if (gewicht <= 1.0) {
|
else if (gewicht < 1.0) {
|
||||||
return 4.95;
|
return 4.95;
|
||||||
}
|
}
|
||||||
else if (gewicht <= 5.0) {
|
else if (gewicht < 5.0) {
|
||||||
return 5.95;
|
return 5.95;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
@ -103,6 +119,7 @@ public class Warenkorb {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public double versandNetto() {
|
public double versandNetto() {
|
||||||
double netto7 = 0;
|
double netto7 = 0;
|
||||||
double netto19 = 0;
|
double netto19 = 0;
|
||||||
|
|
@ -111,13 +128,15 @@ public class Warenkorb {
|
||||||
for (WarenkorbPosition wp : positionen) {
|
for (WarenkorbPosition wp : positionen) {
|
||||||
double netto = wp.getProdukt().getPreis() * wp.getMenge();
|
double netto = wp.getProdukt().getPreis() * wp.getMenge();
|
||||||
int mwst = wp.getProdukt().getMwst();
|
int mwst = wp.getProdukt().getMwst();
|
||||||
if (mwst == 7) netto7 += netto;
|
if (mwst == 7) {
|
||||||
else if (mwst == 19) netto19 += netto;
|
netto7 += netto;
|
||||||
gesamtNetto += netto;
|
}
|
||||||
|
else if (mwst == 19) {
|
||||||
|
netto19 += netto;
|
||||||
|
}
|
||||||
|
gesamtNetto += netto;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (versandBrutto() == 0 || gesamtNetto == 0) return 0;
|
|
||||||
|
|
||||||
double anteil7 = netto7 / gesamtNetto;
|
double anteil7 = netto7 / gesamtNetto;
|
||||||
double anteil19 = netto19 / gesamtNetto;
|
double anteil19 = netto19 / gesamtNetto;
|
||||||
|
|
||||||
|
|
@ -128,6 +147,7 @@ public class Warenkorb {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public double versandMwst() {
|
public double versandMwst() {
|
||||||
double netto7 = 0;
|
double netto7 = 0;
|
||||||
double netto19 = 0;
|
double netto19 = 0;
|
||||||
|
|
@ -137,18 +157,14 @@ public class Warenkorb {
|
||||||
double netto = wp.getProdukt().getPreis() * wp.getMenge();
|
double netto = wp.getProdukt().getPreis() * wp.getMenge();
|
||||||
int mwst = wp.getProdukt().getMwst();
|
int mwst = wp.getProdukt().getMwst();
|
||||||
|
|
||||||
if (mwst == 7) {
|
if (mwst == 7) {
|
||||||
netto7 += netto;
|
netto7 += netto;
|
||||||
} else if (mwst == 19) {
|
} else if (mwst == 19) {
|
||||||
netto19 += netto;
|
netto19 += netto;
|
||||||
}
|
}
|
||||||
gesamtNetto += netto;
|
gesamtNetto += netto;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (versandBrutto() == 0 || gesamtNetto == 0) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
double anteil7 = netto7 / gesamtNetto;
|
double anteil7 = netto7 / gesamtNetto;
|
||||||
double anteil19 = netto19 / gesamtNetto;
|
double anteil19 = netto19 / gesamtNetto;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -50,68 +50,48 @@ public class WarenkorbTest {
|
||||||
@Test
|
@Test
|
||||||
void testGleicheProduktHinzufuegen() {
|
void testGleicheProduktHinzufuegen() {
|
||||||
|
|
||||||
Produkt p = produkte.get(0);
|
warenkorb.produktHinzufügen(produkte.get(0), 1);
|
||||||
|
warenkorb.produktHinzufügen(produkte.get(0), 2);
|
||||||
warenkorb.produktHinzufügen(p, 1);
|
|
||||||
warenkorb.produktHinzufügen(p, 2);
|
|
||||||
assertEquals(3, warenkorb.getPositionen().get(0).getMenge());
|
assertEquals(3, warenkorb.getPositionen().get(0).getMenge());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testMengeAendern() {
|
void testMengeAendern() {
|
||||||
|
|
||||||
Produkt p = produkte.get(1);
|
warenkorb.produktHinzufügen(produkte.get(1), 2);
|
||||||
|
|
||||||
warenkorb.produktHinzufügen(p, 2);
|
assertTrue(warenkorb.mengeAendern(produkte.get(1), 3));
|
||||||
|
|
||||||
assertTrue(warenkorb.mengeAendern(p, 3));
|
|
||||||
assertEquals(3, warenkorb.getPositionen().get(0).getMenge());
|
assertEquals(3, warenkorb.getPositionen().get(0).getMenge());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testEntfernen() {
|
void testEntfernenOderWarenkorbLeer() {
|
||||||
|
|
||||||
Produkt p = produkte.get(2);
|
warenkorb.produktHinzufügen(produkte.get(2), 1);
|
||||||
|
warenkorb.mengeAendern(produkte.get(2), 0);
|
||||||
warenkorb.produktHinzufügen(p, 1);
|
|
||||||
warenkorb.mengeAendern(p, 0);
|
|
||||||
|
|
||||||
assertEquals(0, warenkorb.getPositionen().size());
|
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
|
@Test
|
||||||
void testProdukteNetto() {
|
void testProdukteNetto() {
|
||||||
|
|
||||||
Produkt p = produkte.get(0);
|
warenkorb.produktHinzufügen(produkte.get(0), 1);
|
||||||
|
|
||||||
warenkorb.produktHinzufügen(p, 1);
|
double netto = produkte.get(0).getPreis();
|
||||||
|
assertEquals(netto, warenkorb.produkteNetto());
|
||||||
double netto = p.getPreis();
|
|
||||||
assertEquals(netto, warenkorb.produkteNetto(), 0.01);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testProdukteMwst() {
|
void testProdukteMwst() {
|
||||||
|
|
||||||
Produkt p = produkte.get(0);
|
warenkorb.produktHinzufügen(produkte.get(0), 1);
|
||||||
|
|
||||||
warenkorb.produktHinzufügen(p, 1);
|
double mwst = produkte.get(0).getPreis() * produkte.get(0).getMwst() / 100.0;
|
||||||
|
assertEquals(mwst, warenkorb.produkteMwst());
|
||||||
double mwst = p.getPreis() * p.getMwst() / 100.0;
|
|
||||||
assertEquals(mwst, warenkorb.produkteMwst(), 0.01);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -128,7 +108,7 @@ public class WarenkorbTest {
|
||||||
double mwstP2 = 3 * p2.getPreis() * p2.getMwst() / 100.0;
|
double mwstP2 = 3 * p2.getPreis() * p2.getMwst() / 100.0;
|
||||||
double erwartet = mwstP1 + mwstP2;
|
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)
|
double erwartet = (anteilBrutto7 / 1.07)
|
||||||
+ (anteilBrutto19 / 1.19);
|
+ (anteilBrutto19 / 1.19);
|
||||||
|
|
||||||
assertEquals(erwartet, warenkorb.versandNetto(), 0.01);
|
assertEquals(erwartet, warenkorb.versandNetto());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -174,7 +154,7 @@ public class WarenkorbTest {
|
||||||
+ (anteilBrutto19
|
+ (anteilBrutto19
|
||||||
- nettoVersand19);
|
- nettoVersand19);
|
||||||
|
|
||||||
assertEquals(erwartet, warenkorb.versandMwst(), 0.01);
|
assertEquals(erwartet, warenkorb.versandMwst());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ import java.io.FileNotFoundException;
|
||||||
public class shopTUI {
|
public class shopTUI {
|
||||||
|
|
||||||
private static OnlineShop shop;
|
private static OnlineShop shop;
|
||||||
private static Warenkorb warenkorb = new Warenkorb();
|
private static Warenkorb warenkorb;
|
||||||
private static Scanner sc = new Scanner(System.in);
|
private static Scanner sc = new Scanner(System.in);
|
||||||
|
|
||||||
public static void main(String[] args) throws FileNotFoundException {
|
public static void main(String[] args) throws FileNotFoundException {
|
||||||
|
|
@ -55,9 +55,8 @@ public class shopTUI {
|
||||||
|
|
||||||
public static void angebot() {
|
public static void angebot() {
|
||||||
System.out.println("\n\n\n૮ ྀིᴗ͈.ᴗ͈ ྀིა Unser Angebot: \n");
|
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);
|
Produkt p = shop.lager.get(i);
|
||||||
System.out.printf(" %-2d | %-23s | %.2f€ | + %2d%%\n", p.getId(), p.getName(), p.getPreis(), p.getMwst());
|
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?: ");
|
System.out.println("\n(˶˃ᵕ˂˶) Wonach suchen Sie?: ");
|
||||||
String suchbegriff = sc.nextLine().toLowerCase();
|
String suchbegriff = sc.nextLine().toLowerCase();
|
||||||
|
|
||||||
if (suchbegriff.length() == 0) return;
|
if (suchbegriff.length() == 0) {
|
||||||
if (suchbegriff.equals("hauptmenü")) return;
|
return;
|
||||||
|
}
|
||||||
|
if (suchbegriff.equals("hauptmenü")) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
boolean gefunden = false;
|
boolean gefunden = false;
|
||||||
|
|
||||||
for (int artnr = 0; artnr < shop.lager.size(); artnr++) {
|
for (int artnr = 0; artnr < shop.lager.size(); artnr++) {
|
||||||
Produkt p = shop.lager.get(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? (✿◠ᴗ◠)");
|
if (p.namePasst(suchbegriff)) {
|
||||||
String antwort = sc.nextLine().toLowerCase();
|
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("\nMöchten Sie das Produkt zu Ihrem Warenkorb hinzufügen? (✿◠ᴗ◠)");
|
||||||
System.out.println("(„•֊•„) Geben Sie bitte die gewünschte Menge an: ");
|
String antwort = sc.nextLine().toLowerCase();
|
||||||
int menge = Integer.parseInt(sc.nextLine());
|
|
||||||
|
|
||||||
if (menge <= p.getBestand()) {
|
if (antwort.equals("ja")) {
|
||||||
warenkorb.produktHinzufügen(p, menge);
|
System.out.println("(„•֊•„) Geben Sie bitte die gewünschte Menge an: ");
|
||||||
shop.reduzieren(p, menge);
|
int menge = Integer.parseInt(sc.nextLine());
|
||||||
System.out.println("Das Produkt wurde in der gewünschten Menge zum Warenkorb hinzugefügt ✧。٩(ˊᗜˋ)و✧*。");
|
|
||||||
System.out.println("Ab zum Hauptmenü... ٩(^ᗜ^ )و \n\n\n");
|
if (menge <= p.getBestand()) {
|
||||||
hauptmenü();
|
warenkorb.produktHinzufügen(p, menge);
|
||||||
} else {
|
shop.reduzieren(p, menge);
|
||||||
System.out.println("Leider reicht unser Bestand nicht aus (˃̣̣̥ᯅ˂̣̣̥)");
|
System.out.println("Das Produkt wurde in der gewünschten Menge zum Warenkorb hinzugefügt ✧。٩(ˊᗜˋ)و✧*。");
|
||||||
System.out.println("Ab zum Hauptmenü... ٩(^ᗜ^ )و \n\n\n");
|
System.out.println("Ab zum Hauptmenü... ٩(^ᗜ^ )و \n\n\n");
|
||||||
hauptmenü();
|
hauptmenü();
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
System.out.println("Ab zum Hauptmenü... ٩(^ᗜ^ )و \n\n\n");
|
System.out.println("Leider reicht unser Bestand nicht aus (˃̣̣̥ᯅ˂̣̣̥)");
|
||||||
hauptmenü();
|
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() {
|
public static void warenkorb() {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue