First commit

master
jakob 2024-06-03 12:38:50 +02:00
commit 1adb295085
9 changed files with 335 additions and 0 deletions

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>

View File

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

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>KI-Projekt-Warenwirtschaftssystem</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>

View File

@ -0,0 +1,2 @@
eclipse.preferences.version=1
encoding/<project>=UTF-8

View File

@ -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;
}
}

View File

@ -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));
}
}

View File

@ -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;
}
}

View File

@ -0,0 +1,23 @@
import java.util.ArrayList;
import java.util.List;
public class Stammdaten {
private List<Person> personen = new ArrayList<>();
private List<Artikel> artikel = new ArrayList<>();
public List<Person> getPersonen() {
return personen;
}
public void setPersonen(List<Person> personen) {
this.personen = personen;
}
public List<Artikel> getArtikel() {
return artikel;
}
public void setArtikel(List<Artikel> artikel) {
this.artikel = artikel;
}
}

View File

@ -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<Person> personen = new ArrayList<>();
List<Artikel> 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();
}
}
}