From 1adb295085051ee50bc76109998bb10a3ef4f29e Mon Sep 17 00:00:00 2001 From: jakob Date: Mon, 3 Jun 2024 12:38:50 +0200 Subject: [PATCH] First commit --- .../.classpath | 10 ++ .../.gitignore | 1 + .../.project | 17 +++ .../org.eclipse.core.resources.prefs | 2 + .../src/Artikel.java | 40 ++++++ .../src/Main.java | 84 +++++++++++++ .../src/Person.java | 40 ++++++ .../src/Stammdaten.java | 23 ++++ .../src/XMLProcessor.java | 118 ++++++++++++++++++ 9 files changed, 335 insertions(+) create mode 100644 eclipse-workspace/KI-Projekt-Warenwirtschaftssystem/.classpath create mode 100644 eclipse-workspace/KI-Projekt-Warenwirtschaftssystem/.gitignore create mode 100644 eclipse-workspace/KI-Projekt-Warenwirtschaftssystem/.project create mode 100644 eclipse-workspace/KI-Projekt-Warenwirtschaftssystem/.settings/org.eclipse.core.resources.prefs create mode 100644 eclipse-workspace/KI-Projekt-Warenwirtschaftssystem/src/Artikel.java create mode 100644 eclipse-workspace/KI-Projekt-Warenwirtschaftssystem/src/Main.java create mode 100644 eclipse-workspace/KI-Projekt-Warenwirtschaftssystem/src/Person.java create mode 100644 eclipse-workspace/KI-Projekt-Warenwirtschaftssystem/src/Stammdaten.java create mode 100644 eclipse-workspace/KI-Projekt-Warenwirtschaftssystem/src/XMLProcessor.java diff --git a/eclipse-workspace/KI-Projekt-Warenwirtschaftssystem/.classpath b/eclipse-workspace/KI-Projekt-Warenwirtschaftssystem/.classpath new file mode 100644 index 0000000..f00af9b --- /dev/null +++ b/eclipse-workspace/KI-Projekt-Warenwirtschaftssystem/.classpath @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/eclipse-workspace/KI-Projekt-Warenwirtschaftssystem/.gitignore b/eclipse-workspace/KI-Projekt-Warenwirtschaftssystem/.gitignore new file mode 100644 index 0000000..ae3c172 --- /dev/null +++ b/eclipse-workspace/KI-Projekt-Warenwirtschaftssystem/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/eclipse-workspace/KI-Projekt-Warenwirtschaftssystem/.project b/eclipse-workspace/KI-Projekt-Warenwirtschaftssystem/.project new file mode 100644 index 0000000..1fe3e80 --- /dev/null +++ b/eclipse-workspace/KI-Projekt-Warenwirtschaftssystem/.project @@ -0,0 +1,17 @@ + + + KI-Projekt-Warenwirtschaftssystem + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/eclipse-workspace/KI-Projekt-Warenwirtschaftssystem/.settings/org.eclipse.core.resources.prefs b/eclipse-workspace/KI-Projekt-Warenwirtschaftssystem/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..99f26c0 --- /dev/null +++ b/eclipse-workspace/KI-Projekt-Warenwirtschaftssystem/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/eclipse-workspace/KI-Projekt-Warenwirtschaftssystem/src/Artikel.java b/eclipse-workspace/KI-Projekt-Warenwirtschaftssystem/src/Artikel.java new file mode 100644 index 0000000..2615aa8 --- /dev/null +++ b/eclipse-workspace/KI-Projekt-Warenwirtschaftssystem/src/Artikel.java @@ -0,0 +1,40 @@ +public class Artikel { + private int artikelId; + private String bezeichnung; + private double preis; + + public Artikel(int artikelId, String bezeichnung, double preis) { + this.artikelId = artikelId; + this.bezeichnung = bezeichnung; + this.preis = preis; + } + + public int getArtikelId() { + return artikelId; + } + + public String getBezeichnung() { + return bezeichnung; + } + + public double getPreis() { + return preis; + } + + public void setArtikelId(int artikelId) { + this.artikelId = artikelId; + } + + public void setBezeichnung(String bezeichnung) { + this.bezeichnung = bezeichnung; + } + + public void setPreis(double preis) { + this.preis = preis; + } + + @Override + public String toString() { + return "Artikel-ID: " + artikelId + ", Bezeichnung: " + bezeichnung + ", Preis: " + preis; + } +} diff --git a/eclipse-workspace/KI-Projekt-Warenwirtschaftssystem/src/Main.java b/eclipse-workspace/KI-Projekt-Warenwirtschaftssystem/src/Main.java new file mode 100644 index 0000000..bc7ce15 --- /dev/null +++ b/eclipse-workspace/KI-Projekt-Warenwirtschaftssystem/src/Main.java @@ -0,0 +1,84 @@ +import java.util.Scanner; + +public class Main { + private static Stammdaten stammdaten = XMLProcessor.loadFromXML(); + + public static void main(String[] args) { + Scanner scanner = new Scanner(System.in); + boolean running = true; + + while (running) { + System.out.println("1. Stammdaten anzeigen"); + System.out.println("2. Stammdaten hinzufügen"); + System.out.println("3. Artikel hinzufügen"); + System.out.println("4. Stammdaten speichern"); + System.out.println("5. Programm beenden"); + + int choice = scanner.nextInt(); + scanner.nextLine(); // Clear the buffer + + switch (choice) { + case 1: + displayStammdaten(); + break; + case 2: + addStammdaten(scanner); + break; + case 3: + addArtikel(scanner); + break; + case 4: + XMLProcessor.saveToXML(stammdaten); + break; + case 5: + running = false; + break; + default: + System.out.println("Ungültige Wahl, bitte erneut versuchen."); + } + } + + scanner.close(); + } + + private static void displayStammdaten() { + System.out.println("Personen:"); + for (Person person : stammdaten.getPersonen()) { + System.out.println(person); + } + System.out.println("Artikel:"); + for (Artikel artikel : stammdaten.getArtikel()) { + System.out.println(artikel); + } + } + + private static void addStammdaten(Scanner scanner) { + System.out.print("ID: "); + int id = scanner.nextInt(); + scanner.nextLine(); // Clear the buffer + + System.out.print("Name: "); + String name = scanner.nextLine(); + + System.out.print("Alter: "); + int alter = scanner.nextInt(); + scanner.nextLine(); // Clear the buffer + + stammdaten.getPersonen().add(new Person(id, name, alter)); + } + + private static void addArtikel(Scanner scanner) { + System.out.print("Artikel-ID: "); + int artikelId = scanner.nextInt(); + scanner.nextLine(); // Clear the buffer + + System.out.print("Bezeichnung: "); + String bezeichnung = scanner.nextLine(); + + System.out.print("Preis: "); + double preis = scanner.nextDouble(); + scanner.nextLine(); // Clear the buffer + + stammdaten.getArtikel().add(new Artikel(artikelId, bezeichnung, preis)); + } +} diff --git a/eclipse-workspace/KI-Projekt-Warenwirtschaftssystem/src/Person.java b/eclipse-workspace/KI-Projekt-Warenwirtschaftssystem/src/Person.java new file mode 100644 index 0000000..914243c --- /dev/null +++ b/eclipse-workspace/KI-Projekt-Warenwirtschaftssystem/src/Person.java @@ -0,0 +1,40 @@ +public class Person { + private int id; + private String name; + private int alter; + + public Person(int id, String name, int alter) { + this.id = id; + this.name = name; + this.alter = alter; + } + + public int getId() { + return id; + } + + public String getName() { + return name; + } + + public int getAlter() { + return alter; + } + + public void setId(int id) { + this.id = id; + } + + public void setName(String name) { + this.name = name; + } + + public void setAlter(int alter) { + this.alter = alter; + } + + @Override + public String toString() { + return "ID: " + id + ", Name: " + name + ", Alter: " + alter; + } +} diff --git a/eclipse-workspace/KI-Projekt-Warenwirtschaftssystem/src/Stammdaten.java b/eclipse-workspace/KI-Projekt-Warenwirtschaftssystem/src/Stammdaten.java new file mode 100644 index 0000000..141f731 --- /dev/null +++ b/eclipse-workspace/KI-Projekt-Warenwirtschaftssystem/src/Stammdaten.java @@ -0,0 +1,23 @@ +import java.util.ArrayList; +import java.util.List; + +public class Stammdaten { + private List personen = new ArrayList<>(); + private List artikel = new ArrayList<>(); + + public List getPersonen() { + return personen; + } + + public void setPersonen(List personen) { + this.personen = personen; + } + + public List getArtikel() { + return artikel; + } + + public void setArtikel(List artikel) { + this.artikel = artikel; + } +} diff --git a/eclipse-workspace/KI-Projekt-Warenwirtschaftssystem/src/XMLProcessor.java b/eclipse-workspace/KI-Projekt-Warenwirtschaftssystem/src/XMLProcessor.java new file mode 100644 index 0000000..a9ac7ee --- /dev/null +++ b/eclipse-workspace/KI-Projekt-Warenwirtschaftssystem/src/XMLProcessor.java @@ -0,0 +1,118 @@ +import org.w3c.dom.*; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.transform.*; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +public class XMLProcessor { + + private static final String XML_FILE = "stammdaten.xml"; + + public static Stammdaten loadFromXML() { + Stammdaten stammdaten = new Stammdaten(); + List personen = new ArrayList<>(); + List artikel = new ArrayList<>(); + try { + File file = new File(XML_FILE); + if (!file.exists()) { + return stammdaten; // Return empty stammdaten if file doesn't exist + } + + DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); + Document doc = dBuilder.parse(file); + doc.getDocumentElement().normalize(); + + NodeList personList = doc.getElementsByTagName("person"); + for (int temp = 0; temp < personList.getLength(); temp++) { + Node nNode = personList.item(temp); + if (nNode.getNodeType() == Node.ELEMENT_NODE) { + Element eElement = (Element) nNode; + int id = Integer.parseInt(eElement.getElementsByTagName("id").item(0).getTextContent()); + String name = eElement.getElementsByTagName("name").item(0).getTextContent(); + int alter = Integer.parseInt(eElement.getElementsByTagName("alter").item(0).getTextContent()); + personen.add(new Person(id, name, alter)); + } + } + + NodeList artikelList = doc.getElementsByTagName("artikel"); + for (int temp = 0; temp < artikelList.getLength(); temp++) { + Node nNode = artikelList.item(temp); + if (nNode.getNodeType() == Node.ELEMENT_NODE) { + Element eElement = (Element) nNode; + int artikelId = Integer.parseInt(eElement.getElementsByTagName("artikelId").item(0).getTextContent()); + String bezeichnung = eElement.getElementsByTagName("bezeichnung").item(0).getTextContent(); + double preis = Double.parseDouble(eElement.getElementsByTagName("preis").item(0).getTextContent()); + artikel.add(new Artikel(artikelId, bezeichnung, preis)); + } + } + + } catch (Exception e) { + e.printStackTrace(); + } + stammdaten.setPersonen(personen); + stammdaten.setArtikel(artikel); + return stammdaten; + } + + public static void saveToXML(Stammdaten stammdaten) { + try { + DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); + + // root elements + Document doc = docBuilder.newDocument(); + Element rootElement = doc.createElement("stammdaten"); + doc.appendChild(rootElement); + + for (Person person : stammdaten.getPersonen()) { + Element personElement = doc.createElement("person"); + rootElement.appendChild(personElement); + + Element id = doc.createElement("id"); + id.appendChild(doc.createTextNode(String.valueOf(person.getId()))); + personElement.appendChild(id); + + Element name = doc.createElement("name"); + name.appendChild(doc.createTextNode(person.getName())); + personElement.appendChild(name); + + Element alter = doc.createElement("alter"); + alter.appendChild(doc.createTextNode(String.valueOf(person.getAlter()))); + personElement.appendChild(alter); + } + + for (Artikel artikel : stammdaten.getArtikel()) { + Element artikelElement = doc.createElement("artikel"); + rootElement.appendChild(artikelElement); + + Element artikelId = doc.createElement("artikelId"); + artikelId.appendChild(doc.createTextNode(String.valueOf(artikel.getArtikelId()))); + artikelElement.appendChild(artikelId); + + Element bezeichnung = doc.createElement("bezeichnung"); + bezeichnung.appendChild(doc.createTextNode(artikel.getBezeichnung())); + artikelElement.appendChild(bezeichnung); + + Element preis = doc.createElement("preis"); + preis.appendChild(doc.createTextNode(String.valueOf(artikel.getPreis()))); + artikelElement.appendChild(preis); + } + + // write the content into xml file + TransformerFactory transformerFactory = TransformerFactory.newInstance(); + Transformer transformer = transformerFactory.newTransformer(); + DOMSource source = new DOMSource(doc); + StreamResult result = new StreamResult(new File(XML_FILE)); + + transformer.setOutputProperty(OutputKeys.INDENT, "yes"); + transformer.transform(source, result); + } catch (Exception e) { + e.printStackTrace(); + } + } +}