Klassen der Domain

master
3009594 2024-10-17 23:49:57 +02:00
parent a80da0f00a
commit 18d20817b4
15 changed files with 289 additions and 147 deletions

1
.gitignore vendored 100644
View File

@ -0,0 +1 @@
/bin/

View File

@ -0,0 +1,13 @@
import java.io.FileNotFoundException;
import de.hs_mannheim.informatik.rhenus.domain.ExceptionsKlassen.KundeNichtGefundenException;
import de.hs_mannheim.informatik.rhenus.domain.ExceptionsKlassen.ProduktNichtGefundenException;
import de.hs_mannheim.informatik.rhenus.tui.TUI;
public class Main {
public static void main(String[] args) throws FileNotFoundException, ProduktNichtGefundenException, KundeNichtGefundenException {
new TUI();
}
}

View File

@ -1,5 +0,0 @@
package de.hs_mannheim.informatik.rhenus.domain;
public class Bestellung {
}

View File

@ -0,0 +1,8 @@
package de.hs_mannheim.informatik.rhenus.domain.ExceptionsKlassen;
public class EmptyInputException extends Exception{
public EmptyInputException(String error){
super(error);
}
}

View File

@ -0,0 +1,8 @@
package de.hs_mannheim.informatik.rhenus.domain.ExceptionsKlassen;
public class KundeNichtGefundenException extends Exception {
KundeNichtGefundenException(String error){
super(error);
}
}

View File

@ -0,0 +1,8 @@
package de.hs_mannheim.informatik.rhenus.domain.ExceptionsKlassen;
public class ProduktNichtGefundenException extends Exception {
public ProduktNichtGefundenException(String error){
super(error);
}
}

View File

@ -0,0 +1,12 @@
package de.hs_mannheim.informatik.rhenus.domain;
public class GesamtKostenBerechnen {
public static double gesamtKosten (Produkt p) {
double kosten = 0.0;
return kosten;
}
}

View File

@ -0,0 +1,25 @@
package de.hs_mannheim.informatik.rhenus.domain.JTests;
import static org.junit.jupiter.api.Assertions.*;
import java.io.FileNotFoundException;
import org.junit.jupiter.api.*;
import de.hs_mannheim.informatik.rhenus.domain.*;
class WarenkorbTest {
@Test
void test() throws FileNotFoundException {
Kaufhalle kaufhalle = new Kaufhalle();
assertTrue(kaufhalle.produkteLaden());
/*
* 1.Produkt: name=Gieskanne, beschreibung=Premium Gärtner-Gieskanne, preis=3.99, gewicht=250, bestand=17
2.Produkt: name=Hut, beschreibung=Perfekt für die Hutablage, preis=21.98, gewicht=120, bestand=123
*/
}
}

View File

@ -0,0 +1,81 @@
package de.hs_mannheim.informatik.rhenus.domain;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.*;
import de.hs_mannheim.informatik.rhenus.domain.ExceptionsKlassen.*;
public class Kaufhalle {
private ArrayList<Produkt> produkte;
private ArrayList<Kunde> kunden;
public Kaufhalle() throws FileNotFoundException {
this.produkte = new ArrayList<>();
this.kunden = new ArrayList<>();
}
public void addProduktZuWarenkorb(String Produktname) throws ProduktNichtGefundenException, KundeNichtGefundenException {
Produkt neueProdukt = findeProduktImKaufhalle(Produktname);
if (neueProdukt == null)
throw new ProduktNichtGefundenException("Produkt ist nicht Verfügbar!");
}
private Kunde findKunde(String kundeName) {
for (Kunde kunde : kunden)
if (kunde.getName().equalsIgnoreCase(kundeName))
return kunde;
return null;
}
public boolean produkteLaden() throws FileNotFoundException {
Scanner sc = new Scanner(
new File("C:\\Users\\obaya\\git\\OnlineShop2024\\OnlineShop2024\\resources\\produkte.csv"));
int cnt = 0;
while (sc.hasNextLine()) {
String produkt = sc.nextLine();
if (produkt.startsWith("Name"))
continue;
String[] spalten = produkt.split(";");
spalten[2] = spalten[2].replaceAll(",", ".");
spalten[3] = spalten[3].substring(0, spalten[3].indexOf(","));
spalten[4] = spalten[4].substring(0, spalten[4].indexOf(","));
produkte.add(new Produkt(spalten[0], spalten[1], Float.parseFloat(spalten[2]), Integer.parseInt(spalten[3]),
Integer.parseInt(spalten[4])));
cnt++;
}
sc.close();
return true;
}
public ArrayList<String> zeigeProdukte() {
ArrayList<String> allProdukte = new ArrayList<>();
int index = 1;
for (Produkt p : produkte)
allProdukte.add(index++ + ".Produkt: " + p.print());
return allProdukte;
}
private Produkt findeProduktImKaufhalle(String name) {
for (Produkt p : produkte)
if (p.getName().equalsIgnoreCase(name))
return p;
return null;
}
}

View File

@ -2,4 +2,55 @@ package de.hs_mannheim.informatik.rhenus.domain;
public class Kunde { public class Kunde {
private String name;
private String anschrift;
private Warenkorb warenKorb;
private double produktKosten;
private static int UserID = 100;
private int ID;
public Kunde(String name, String anschrift) {
this.name = name;
this.anschrift = anschrift;
this.ID = UserID++;
this.produktKosten = 0.0;
this.warenKorb = new Warenkorb();
}
public Kunde() {
this(null,null);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAnschrift() {
return anschrift;
}
public void setAnschrift(String anschrift) {
this.anschrift = anschrift;
}
public Warenkorb getWarenKorb() {
return warenKorb;
}
public int getID() {
return ID;
}
public double getProduktKosten() {
return produktKosten;
}
public void setProduktKosten(double produktKosten) {
this.produktKosten = produktKosten;
}
} }

View File

@ -1,54 +0,0 @@
package de.hs_mannheim.informatik.rhenus.domain;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;
public class OnlineShop {
private ArrayList<Produkt> lager;
public OnlineShop() throws FileNotFoundException {
lager = new ArrayList<>();
produkteLaden();
}
private void produkteLaden() throws FileNotFoundException {
Scanner sc = new Scanner(new File("resources/produkte.csv"));
int cnt = 0;
while (sc.hasNextLine()) {
String produkt = sc.nextLine();
if (produkt.startsWith("Name"))
continue;
String[] spalten = produkt.split(";");
spalten[2] = spalten[2].replaceAll(",", ".");
spalten[3] = spalten[3].substring(0, spalten[3].indexOf(","));
spalten[4] = spalten[4].substring(0, spalten[4].indexOf(","));
lager.add(new Produkt(spalten[0], spalten[1], Float.parseFloat(spalten[2]), Integer.parseInt(spalten[3]), Integer.parseInt(spalten[4])));
cnt++;
} // while
System.out.println(cnt + " Produkte geladen.");
sc.close();
}
public Produkt[] findeProdukte(String suchbegriff) {
ArrayList<Produkt> trefferliste = new ArrayList<>();
if (suchbegriff.equals("alle"))
trefferliste = lager;
else
for (Produkt p : lager) {
if (p.getName().contains(suchbegriff) || p.getBeschreibung().contains(suchbegriff))
trefferliste.add(p);
}
return trefferliste.toArray(new Produkt[0]);
}
}

View File

@ -3,12 +3,12 @@ package de.hs_mannheim.informatik.rhenus.domain;
public class Produkt { public class Produkt {
private String name; private String name;
private String beschreibung; private String beschreibung;
private float preis; private double preis;
private int gewicht; private int gewicht;
private int bestand; private int bestand;
public Produkt(String name, String beschreibung, float preis, int gewicht, int bestand) { public Produkt(String name, String beschreibung, double preis, int gewicht, int bestand) {
super();
this.name = name; this.name = name;
this.beschreibung = beschreibung; this.beschreibung = beschreibung;
this.preis = preis; this.preis = preis;
@ -24,7 +24,7 @@ public class Produkt {
return beschreibung; return beschreibung;
} }
public float getPreis() { public double getPreis() {
return preis; return preis;
} }
@ -36,10 +36,10 @@ public class Produkt {
return bestand; return bestand;
} }
@Override
public String toString() { public String print() {
return "Produkt [name=" + name + ", beschreibung=" + beschreibung + ", preis=" + preis + ", gewicht=" + gewicht return "name=" + name + ", beschreibung=" + beschreibung + ", preis=" + preis + ", gewicht=" + gewicht
+ ", bestand=" + bestand + "]"; + ", bestand=" + bestand;
} }
} }

View File

@ -1,5 +1,51 @@
package de.hs_mannheim.informatik.rhenus.domain; package de.hs_mannheim.informatik.rhenus.domain;
import java.util.ArrayList;
public class Warenkorb { public class Warenkorb {
private ArrayList<Produkt> produkte;
private int anzahlProdkute;
Warenkorb() {
produkte = new ArrayList<>();
}
public boolean addProdukt(Produkt neueProdukt) {
produkte.add(neueProdukt);
anzahlProdkute++;
return true;
}
public boolean loescheprodukt(String name) {
Produkt produktZuLoeschen = findeProduktImWarenkorb(name);
if (produktZuLoeschen == null)
return false;
anzahlProdkute--;
return true;
}
private Produkt findeProduktImWarenkorb(String name) {
for (Produkt p : produkte)
if (p.getName().equalsIgnoreCase(name))
return p;
return null;
}
public ArrayList<String> zeigeProdukteImWarenKorb() {
ArrayList<String> allProdukte = new ArrayList<>();
for (Produkt p : produkte)
allProdukte.add(anzahlProdkute + ".Produkt: " + p.print() + "\n");
return allProdukte;
}
public int getAnzahlProdkute() {
return anzahlProdkute;
}
} }

View File

@ -1,6 +0,0 @@
package de.hs_mannheim.informatik.rhenus.domain;
public class Warenkorbeintrag {
private Produkt produkt;
private int anzahl;
}

View File

@ -1,87 +1,41 @@
package de.hs_mannheim.informatik.rhenus.tui; package de.hs_mannheim.informatik.rhenus.tui;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
import java.util.Scanner; import java.util.Scanner;
import de.hs_mannheim.informatik.rhenus.domain.OnlineShop; import de.hs_mannheim.informatik.rhenus.domain.Kaufhalle;
import de.hs_mannheim.informatik.rhenus.domain.Produkt; import de.hs_mannheim.informatik.rhenus.domain.ExceptionsKlassen.KundeNichtGefundenException;
import de.hs_mannheim.informatik.rhenus.domain.ExceptionsKlassen.ProduktNichtGefundenException;
public class TUI { public class TUI {
private OnlineShop shop;
private Scanner kb;
public static void main(String[] args) { private Kaufhalle kaufhalle;
try { public TUI() throws FileNotFoundException, ProduktNichtGefundenException, KundeNichtGefundenException {
new TUI(); this.kaufhalle = new Kaufhalle();
} catch (FileNotFoundException e) { startProgramm();
System.err.println("Produktpalette konnte nicht geladen werden.");
System.out.println("Auf Wiedersehen!");
} }
System.out.println("Danke für Ihren Einkauf! - Auf Wiedersehen!");
}
public TUI() throws FileNotFoundException {
kb = new Scanner(System.in);
shop = new OnlineShop(); private void startProgramm() throws FileNotFoundException, ProduktNichtGefundenException, KundeNichtGefundenException {
this.willkommen(); Scanner eingabe = new Scanner(System.in);
} String produktname;
String anschrift;
private void willkommen() {
System.out.println("Willkommen bei Rhenus, dem Mannheimer Online-Baumarkt!");
System.out.println(); System.out.println();
System.out.println("<< Willkommen in meinem Online Shop >>");
String eingabe = "";
do {
System.out.println("Produktsuche ('alle' für eine Übersicht; 'exit' für Beenden). ");
System.out.print("> ");
eingabe = kb.nextLine();
Produkt[] trefferliste = shop.findeProdukte(eingabe);
if (trefferliste.length == 0)
System.out.println("Keine Treffer für: " + eingabe);
else
trefferlisteAusgeben(trefferliste);
System.out.println("0 = zurück zur Suche; Zahl des Produkt für Details.");
System.out.print("> ");
eingabe = kb.nextLine();
try {
int zahl = Integer.parseInt(eingabe);
if (zahl > 0 && zahl < trefferliste.length)
produktDetailsAnzeigen(trefferliste[zahl-1]);
} catch(NumberFormatException nfe) {
System.err.println("Inkorrekte Eingabe!");
}
} while(!eingabe.toLowerCase().equals("exit"));
}
private void trefferlisteAusgeben(Produkt[] trefferliste) {
for (int i = 0; i < trefferliste.length; i++)
System.out.printf("%2d) %s %5.2f Euro%n", i+1, trefferliste[i].getName(), trefferliste[i].getPreis());
System.out.println(); System.out.println();
if (kaufhalle.produkteLaden()) {
System.out.println("Meine aktuelle Produkte: ");
for (String p : kaufhalle.zeigeProdukte())
System.out.println(p);
} }
private void produktDetailsAnzeigen(Produkt p) {
System.out.printf("%s für nur %5.2f%n", p.getName(), p.getPreis());
System.out.println(p.getBeschreibung());
System.out.println("Produktgewicht: " + p.getGewicht() + " g");
if (p.getBestand() > 10) System.out.print(">");
System.out.println("mehr als 10 Stück auf Lager"); produktname = eingabe.nextLine();
else if (p.getBestand() > 0) kaufhalle.addProduktZuWarenkorb(produktname);
System.out.println("nur noch " + p.getBestand() + " Stück auf Lager");
else
System.out.println("leider gerade ausverkauft");
System.out.println();
} }
} }