From 88ad78ac3e5a0bcfb6a99c7cc3659d9e403293ee Mon Sep 17 00:00:00 2001 From: denis Date: Thu, 13 Jun 2024 13:01:29 +0200 Subject: [PATCH] =?UTF-8?q?ARTIKEL=20mit=20Stammdaten=20erstellt.=20KUNDE?= =?UTF-8?q?=20mit=20Stammdaten=20erstellt.=20MVC=20Struktur=20implementier?= =?UTF-8?q?t.=20In=20package=20VIEW=20Klasse=20ohne=20Funktionallit=C3=A4t?= =?UTF-8?q?=20erstellt.=20CONTROLLER=20erstellt.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/controller/KundenController.java | 86 +++++++ Faktura_Gruppe5/src/controller/Main.java | 11 + .../src/controller/MainController.java | 18 ++ Faktura_Gruppe5/src/model/Artikel.java | 194 ++++++++++++++ Faktura_Gruppe5/src/model/Kunde.java | 236 ++++++++++++++++++ Faktura_Gruppe5/src/view/StartUpMenue.java | 58 +++++ 6 files changed, 603 insertions(+) create mode 100644 Faktura_Gruppe5/src/controller/KundenController.java create mode 100644 Faktura_Gruppe5/src/controller/Main.java create mode 100644 Faktura_Gruppe5/src/controller/MainController.java create mode 100644 Faktura_Gruppe5/src/model/Artikel.java create mode 100644 Faktura_Gruppe5/src/model/Kunde.java create mode 100644 Faktura_Gruppe5/src/view/StartUpMenue.java diff --git a/Faktura_Gruppe5/src/controller/KundenController.java b/Faktura_Gruppe5/src/controller/KundenController.java new file mode 100644 index 0000000..e6ac301 --- /dev/null +++ b/Faktura_Gruppe5/src/controller/KundenController.java @@ -0,0 +1,86 @@ +package controller; + +import model.Kunde; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.transform.OutputKeys; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import java.io.File; +import java.io.IOException; + +public class KundenController { + + public void speichereKundeInXML(Kunde kunde) { + try { + // Ordner "Kunden" erstellen, falls er nicht existiert + File ordner = new File("Kunden"); + if (!ordner.exists()) { + ordner.mkdirs(); + } + + // XML-Dokument erstellen + DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); + Document doc = dBuilder.newDocument(); + + // Root-Element "Kunde" + Element rootElement = doc.createElement("Kunde"); + doc.appendChild(rootElement); + + // Kundennummer-Element + Element kundennummerElement = doc.createElement("Kundennummer"); + kundennummerElement.appendChild(doc.createTextNode(Integer.toString(kunde.getKundennummer()))); + rootElement.appendChild(kundennummerElement); + + // Name-Element + Element nameElement = doc.createElement("Name"); + nameElement.appendChild(doc.createTextNode(kunde.getName())); + rootElement.appendChild(nameElement); + + // Anschrift-Element + Element anschriftElement = doc.createElement("Anschrift"); + anschriftElement.appendChild(doc.createTextNode(kunde.getAnschrift())); + rootElement.appendChild(anschriftElement); + + // Email-Element + Element emailElement = doc.createElement("Email"); + emailElement.appendChild(doc.createTextNode(kunde.getEmail())); + rootElement.appendChild(emailElement); + + // Telefonnummer-Element + Element telefonnummerElement = doc.createElement("Telefonnummer"); + telefonnummerElement.appendChild(doc.createTextNode(kunde.getTelefonnummer())); + rootElement.appendChild(telefonnummerElement); + + // Kleinunternehmer-Element + Element kleinunternehmerElement = doc.createElement("Kleinunternehmer"); + kleinunternehmerElement.appendChild(doc.createTextNode(Boolean.toString(kunde.isIstKleinunternehmer()))); + rootElement.appendChild(kleinunternehmerElement); + + // Ansprechpartner-Element + Element ansprechpartnerElement = doc.createElement("Ansprechpartner"); + ansprechpartnerElement.appendChild(doc.createTextNode(kunde.getAnsprechpartner())); + rootElement.appendChild(ansprechpartnerElement); + + // XML in Datei speichern + TransformerFactory transformerFactory = TransformerFactory.newInstance(); + Transformer transformer = transformerFactory.newTransformer(); + transformer.setOutputProperty(OutputKeys.INDENT, "yes"); + DOMSource source = new DOMSource(doc); + StreamResult result = new StreamResult(new File(ordner, "kunde_" + kunde.getKundennummer() + ".xml")); + transformer.transform(source, result); + + System.out.println("Kundendaten wurden erfolgreich in XML-Datei gespeichert."); + + } catch (ParserConfigurationException | TransformerException e) { + e.printStackTrace(); + } + } +} diff --git a/Faktura_Gruppe5/src/controller/Main.java b/Faktura_Gruppe5/src/controller/Main.java new file mode 100644 index 0000000..fd726a2 --- /dev/null +++ b/Faktura_Gruppe5/src/controller/Main.java @@ -0,0 +1,11 @@ +package controller; + +import view.StartUpMenue; + +public class Main { + + public static void main(String[] args) { + new StartUpMenue(null); + } + +} diff --git a/Faktura_Gruppe5/src/controller/MainController.java b/Faktura_Gruppe5/src/controller/MainController.java new file mode 100644 index 0000000..989730a --- /dev/null +++ b/Faktura_Gruppe5/src/controller/MainController.java @@ -0,0 +1,18 @@ +package controller; + +import model.Kunde; + +public class MainController { + + private KundenController kundenController; + + public MainController() { + this.kundenController = new KundenController(); + } + + public KundenController getKundenController() { + return kundenController; + } + + +} diff --git a/Faktura_Gruppe5/src/model/Artikel.java b/Faktura_Gruppe5/src/model/Artikel.java new file mode 100644 index 0000000..999579e --- /dev/null +++ b/Faktura_Gruppe5/src/model/Artikel.java @@ -0,0 +1,194 @@ +package model; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.transform.OutputKeys; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import org.xml.sax.SAXException; +import java.io.File; +import java.io.IOException; +import java.util.Scanner; + +public class Artikel { + private static int aktuelleArtikelnummer = 0; // Statische Variable für fortlaufende Artikelnummer + private int artikelnummer; + private String einheit; + private String bezeichnung; + private double nettopreis; + private double mehrwertsteuersatz; + + // Konstruktor + public Artikel(String einheit, String bezeichnung, double nettopreis, double mehrwertsteuersatz) { + this.artikelnummer = ++aktuelleArtikelnummer; // Vergabe der Artikelnummer und Inkrement + this.einheit = einheit; + this.bezeichnung = bezeichnung; + this.nettopreis = nettopreis; + this.mehrwertsteuersatz = mehrwertsteuersatz; + } + + // Leerer Konstruktor + public Artikel() { + this.artikelnummer = ++aktuelleArtikelnummer; // Vergabe der Artikelnummer und Inkrement + } + + // Getter und Setter + public int getArtikelnummer() { + return artikelnummer; + } + + public String getEinheit() { + return einheit; + } + + public void setEinheit(String einheit) { + this.einheit = einheit; + } + + public String getBezeichnung() { + return bezeichnung; + } + + public void setBezeichnung(String bezeichnung) { + this.bezeichnung = bezeichnung; + } + + public double getNettopreis() { + return nettopreis; + } + + public void setNettopreis(double nettopreis) { + this.nettopreis = nettopreis; + } + + public double getMehrwertsteuersatz() { + return mehrwertsteuersatz; + } + + public void setMehrwertsteuersatz(double mehrwertsteuersatz) { + this.mehrwertsteuersatz = mehrwertsteuersatz; + } + + // Methode zum Anzeigen der Artikeldaten + public void anzeigen() { + System.out.println("Artikelnummer: " + artikelnummer); + System.out.println("Einheit: " + einheit); + System.out.println("Bezeichnung: " + bezeichnung); + System.out.println("Nettopreis: " + nettopreis); + System.out.println("Mehrwertsteuersatz: " + mehrwertsteuersatz); + } + + // Methode zum Speichern der Artikeldaten im XML-Format + public void speichereAlsXML(String dateiPfad) { + try { + DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); + Document doc = dBuilder.newDocument(); + + // Root-Element + Element rootElement = doc.createElement("Artikel"); + doc.appendChild(rootElement); + + // Artikelnummer-Element + Element nummerElement = doc.createElement("Artikelnummer"); + nummerElement.appendChild(doc.createTextNode(Integer.toString(artikelnummer))); + rootElement.appendChild(nummerElement); + + // Einheit-Element + Element einheitElement = doc.createElement("Einheit"); + einheitElement.appendChild(doc.createTextNode(einheit)); + rootElement.appendChild(einheitElement); + + // Bezeichnung-Element + Element bezeichnungElement = doc.createElement("Bezeichnung"); + bezeichnungElement.appendChild(doc.createTextNode(bezeichnung)); + rootElement.appendChild(bezeichnungElement); + + // Nettopreis-Element + Element nettopreisElement = doc.createElement("Nettopreis"); + nettopreisElement.appendChild(doc.createTextNode(Double.toString(nettopreis))); + rootElement.appendChild(nettopreisElement); + + // Mehrwertsteuersatz-Element + Element mehrwertsteuersatzElement = doc.createElement("Mehrwertsteuersatz"); + mehrwertsteuersatzElement.appendChild(doc.createTextNode(Double.toString(mehrwertsteuersatz))); + rootElement.appendChild(mehrwertsteuersatzElement); + + // Transformieren und Speichern in Datei + TransformerFactory transformerFactory = TransformerFactory.newInstance(); + Transformer transformer = transformerFactory.newTransformer(); + transformer.setOutputProperty(OutputKeys.INDENT, "yes"); + DOMSource source = new DOMSource(doc); + StreamResult result = new StreamResult(new File(dateiPfad)); + transformer.transform(source, result); + + System.out.println("Die XML-Datei wurde erfolgreich gespeichert."); + + } catch (ParserConfigurationException | TransformerException e) { + e.printStackTrace(); + } + } + + // Methode zum Auslesen der Artikeldaten aus einer XML-Datei + public void leseAusXML(String dateiPfad) { + try { + File xmlDatei = new File(dateiPfad); + DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); + Document doc = dBuilder.parse(xmlDatei); + doc.getDocumentElement().normalize(); + + NodeList nList = doc.getElementsByTagName("Artikel"); + + for (int temp = 0; temp < nList.getLength(); temp++) { + Node nNode = nList.item(temp); + + if (nNode.getNodeType() == Node.ELEMENT_NODE) { + Element eElement = (Element) nNode; + + this.artikelnummer = Integer.parseInt(eElement.getElementsByTagName("Artikelnummer").item(0).getTextContent()); + this.einheit = eElement.getElementsByTagName("Einheit").item(0).getTextContent(); + this.bezeichnung = eElement.getElementsByTagName("Bezeichnung").item(0).getTextContent(); + this.nettopreis = Double.parseDouble(eElement.getElementsByTagName("Nettopreis").item(0).getTextContent()); + this.mehrwertsteuersatz = Double.parseDouble(eElement.getElementsByTagName("Mehrwertsteuersatz").item(0).getTextContent()); + } + } + + System.out.println("Die XML-Datei wurde erfolgreich gelesen."); + } catch (ParserConfigurationException | SAXException | IOException e) { + e.printStackTrace(); + } + } + + // Methode zum Auslesen der Artikeldaten aus einer XML-Datei und in der Konsole ausgeben + public void leseUndGibAusXML(String dateiPfad) { + leseAusXML(dateiPfad); + anzeigen(); + } + + // Methode zur Eingabe der Artikeldaten über die Konsole + public void eingabeDaten(Scanner scanner) { + System.out.print("Einheit: "); + this.einheit = scanner.nextLine(); + + System.out.print("Bezeichnung: "); + this.bezeichnung = scanner.nextLine(); + + System.out.print("Nettopreis: "); + this.nettopreis = Double.parseDouble(scanner.nextLine()); + + System.out.print("Mehrwertsteuersatz: "); + this.mehrwertsteuersatz = Double.parseDouble(scanner.nextLine()); + } + + +} + diff --git a/Faktura_Gruppe5/src/model/Kunde.java b/Faktura_Gruppe5/src/model/Kunde.java new file mode 100644 index 0000000..778d26a --- /dev/null +++ b/Faktura_Gruppe5/src/model/Kunde.java @@ -0,0 +1,236 @@ +package model; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.transform.OutputKeys; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import org.xml.sax.SAXException; +import java.io.File; +import java.io.IOException; +import java.util.Scanner; + +public class Kunde { + private static int aktuelleKundennummer = 0; // Statische Variable für fortlaufende Kundennummer + private int kundennummer; + private String name; + private String anschrift; + private String email; + private String telefonnummer; + private boolean istKleinunternehmer; + private String ansprechpartner; + + // Konstruktor + public Kunde(String name, String anschrift, String email, String telefonnummer, boolean istKleinunternehmer, + String ansprechpartner) { + this.kundennummer = ++aktuelleKundennummer; // Vergabe der Kundennummer und Inkrement + this.name = name; + this.anschrift = anschrift; + this.email = email; + this.telefonnummer = telefonnummer; + this.istKleinunternehmer = istKleinunternehmer; + this.ansprechpartner = ansprechpartner; + } + + // Leerer Konstruktor + public Kunde() { + this.kundennummer = ++aktuelleKundennummer; // Vergabe der Kundennummer und Inkrement + } + + // Getter und Setter + public int getKundennummer() { + return kundennummer; + } + + 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 String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getTelefonnummer() { + return telefonnummer; + } + + public void setTelefonnummer(String telefonnummer) { + this.telefonnummer = telefonnummer; + } + + public boolean isIstKleinunternehmer() { + return istKleinunternehmer; + } + + public void setIstKleinunternehmer(boolean istKleinunternehmer) { + this.istKleinunternehmer = istKleinunternehmer; + } + + public String getAnsprechpartner() { + return ansprechpartner; + } + + public void setAnsprechpartner(String ansprechpartner) { + this.ansprechpartner = ansprechpartner; + } + + // Methode zum Anzeigen der Kundendaten + public void anzeigen() { + System.out.println("Kundennummer: " + kundennummer); + System.out.println("Name: " + name); + System.out.println("Anschrift: " + anschrift); + System.out.println("Email: " + email); + System.out.println("Telefonnummer: " + telefonnummer); + System.out.println("Kleinunternehmer: " + (istKleinunternehmer ? "Ja" : "Nein")); + System.out.println("Ansprechpartner: " + ansprechpartner); + } + + // Methode zum Speichern der Kundendaten im XML-Format + public void speichereAlsXML(String dateiPfad) { + try { + DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); + Document doc = dBuilder.newDocument(); + + // Root-Element + Element rootElement = doc.createElement("Kunde"); + doc.appendChild(rootElement); + + // Kundennummer-Element + Element nummerElement = doc.createElement("Kundennummer"); + nummerElement.appendChild(doc.createTextNode(Integer.toString(kundennummer))); + rootElement.appendChild(nummerElement); + + // Name-Element + Element nameElement = doc.createElement("Name"); + nameElement.appendChild(doc.createTextNode(name)); + rootElement.appendChild(nameElement); + + // Anschrift-Element + Element anschriftElement = doc.createElement("Anschrift"); + anschriftElement.appendChild(doc.createTextNode(anschrift)); + rootElement.appendChild(anschriftElement); + + // Email-Element + Element emailElement = doc.createElement("Email"); + emailElement.appendChild(doc.createTextNode(email)); + rootElement.appendChild(emailElement); + + // Telefonnummer-Element + Element telefonnummerElement = doc.createElement("Telefonnummer"); + telefonnummerElement.appendChild(doc.createTextNode(telefonnummer)); + rootElement.appendChild(telefonnummerElement); + + // Kleinunternehmer-Element + Element kleinunternehmerElement = doc.createElement("Kleinunternehmer"); + kleinunternehmerElement.appendChild(doc.createTextNode(Boolean.toString(istKleinunternehmer))); + rootElement.appendChild(kleinunternehmerElement); + + // Ansprechpartner-Element + Element ansprechpartnerElement = doc.createElement("Ansprechpartner"); + ansprechpartnerElement.appendChild(doc.createTextNode(ansprechpartner)); + rootElement.appendChild(ansprechpartnerElement); + + // Transformieren und Speichern in Datei + TransformerFactory transformerFactory = TransformerFactory.newInstance(); + Transformer transformer = transformerFactory.newTransformer(); + transformer.setOutputProperty(OutputKeys.INDENT, "yes"); + DOMSource source = new DOMSource(doc); + StreamResult result = new StreamResult(new File(dateiPfad)); + transformer.transform(source, result); + + System.out.println("Die XML-Datei wurde erfolgreich gespeichert."); + + } catch (ParserConfigurationException | TransformerException e) { + e.printStackTrace(); + } + } + + // Methode zum Auslesen der Kundendaten aus einer XML-Datei + public void leseAusXML(String dateiPfad) { + try { + File xmlDatei = new File(dateiPfad); + DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); + Document doc = dBuilder.parse(xmlDatei); + doc.getDocumentElement().normalize(); + + NodeList nList = doc.getElementsByTagName("Kunde"); + + for (int temp = 0; temp < nList.getLength(); temp++) { + Node nNode = nList.item(temp); + + if (nNode.getNodeType() == Node.ELEMENT_NODE) { + Element eElement = (Element) nNode; + + this.kundennummer = Integer + .parseInt(eElement.getElementsByTagName("Kundennummer").item(0).getTextContent()); + this.name = eElement.getElementsByTagName("Name").item(0).getTextContent(); + this.anschrift = eElement.getElementsByTagName("Anschrift").item(0).getTextContent(); + this.email = eElement.getElementsByTagName("Email").item(0).getTextContent(); + this.telefonnummer = eElement.getElementsByTagName("Telefonnummer").item(0).getTextContent(); + this.istKleinunternehmer = Boolean + .parseBoolean(eElement.getElementsByTagName("Kleinunternehmer").item(0).getTextContent()); + this.ansprechpartner = eElement.getElementsByTagName("Ansprechpartner").item(0).getTextContent(); + } + } + + System.out.println("Die XML-Datei wurde erfolgreich gelesen."); + } catch (ParserConfigurationException | SAXException | IOException e) { + e.printStackTrace(); + } + } + + // Methode zum Auslesen der Kundendaten aus einer XML-Datei und in der Konsole + // ausgeben + public void leseUndGibAusXML(String dateiPfad) { + leseAusXML(dateiPfad); + anzeigen(); + } + + // Methode zur Eingabe der Kundendaten über die Konsole + public void eingabeDaten(Scanner scanner) { + System.out.print("Name: "); + this.name = scanner.nextLine(); + + System.out.print("Anschrift: "); + this.anschrift = scanner.nextLine(); + + System.out.print("Email: "); + this.email = scanner.nextLine(); + + System.out.print("Telefonnummer: "); + this.telefonnummer = scanner.nextLine(); + + System.out.print("Ist der Kunde ein Kleinunternehmer (true/false)? "); + this.istKleinunternehmer = Boolean.parseBoolean(scanner.nextLine()); + + System.out.print("Ansprechpartner: "); + this.ansprechpartner = scanner.nextLine(); + } + +} diff --git a/Faktura_Gruppe5/src/view/StartUpMenue.java b/Faktura_Gruppe5/src/view/StartUpMenue.java new file mode 100644 index 0000000..fe28311 --- /dev/null +++ b/Faktura_Gruppe5/src/view/StartUpMenue.java @@ -0,0 +1,58 @@ +package view; + +import java.util.Scanner; + +import controller.MainController; + +public class StartUpMenue { + + private MainController mainController; + + public StartUpMenue(MainController mainController) { //selbst geschrieben + this.mainController = mainController; + this.showMenu(); + + } + + public void showMenu() { + Scanner scanner = new Scanner(System.in); + int choice = 0; + + while (choice != 9) { + System.out.println("Willkommen im Kunden- und Artikelverwaltungssystem"); + System.out.println("Bitte wählen Sie eine Option:"); + System.out.println("1. Kunde anlegen"); + System.out.println("2. Kundenstammdaten ansehen"); + System.out.println("3. Artikel anlegen"); + System.out.println("4. Artikelstammdaten ansehen"); + System.out.println("9. Programm beenden"); + + try { + choice = Integer.parseInt(scanner.nextLine()); + switch (choice) { + case 1: +// MainController.createCustomer(); + break; + case 2: +// MainController.viewCustomerData(); + break; + case 3: +// MainController.createArticle(); + break; + case 4: +// MainController.viewArticleData(); + break; + case 9: + System.out.println("Programm wird beendet."); + break; + default: + System.out.println("Ungültige Auswahl. Bitte versuchen Sie es erneut."); + break; + } + } catch (NumberFormatException e) { + System.out.println("Bitte geben Sie eine gültige Zahl ein."); + } + } + scanner.close(); + } +}