diff --git a/.classpath b/.classpath index 1b83d66..2bcb0d3 100644 --- a/.classpath +++ b/.classpath @@ -11,5 +11,10 @@ + + + + + diff --git a/Programmierung2/src/BankSystemGUI/BankController.java b/Programmierung2/src/BankSystemGUI/BankController.java deleted file mode 100644 index 3ac3b4b..0000000 --- a/Programmierung2/src/BankSystemGUI/BankController.java +++ /dev/null @@ -1,50 +0,0 @@ -package BankSystemGUI; - -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.io.PrintWriter; - -public class BankController { - private File file; - BankController(){ - file = new File("C:\\Users\\obaya\\git\\Programmierung2\\Programmierung2\\src\\BankSystemGUI\\Kunde.txt"); - if (!file.exists()) { - try { - if (file.createNewFile()) // createNewFile() gibt boolean zurück,ob der File ergolgreich erstellt wurde - // oder nicht - System.out.println("Datei erstellt: " + file.getName()); // der File muss im Pfad nicht existieren, - // damit es erstellt wurde - } catch (IOException d) { - d.printStackTrace(); - } - } - } - - public BankSystem addKunde(String name,String vorname,String password,String email) { - BankSystem b1 = new BankSystem(name,vorname,password,email); - saveKunde(b1); - return b1; - } - - - - public void saveKunde(BankSystem b1) { - try (PrintWriter write = new PrintWriter(new FileWriter(file))) { - write.println("ID: " + b1.getId()); - write.println("Vorname: " + b1.getVorname()); - write.println("Nachname: " + b1.getName()); - write.println("Password: " + b1.getPassword()); - write.println("Email: " + b1.getEmail()); - write.println("kontoStand " + b1.getKontoStand()); - write.println(); // Leere Zeile zwischen Einträgen - write.flush(); - write.close(); - System.out.println(b1.toString()); - } catch (IOException e) { - e.printStackTrace(); - - } - } -} - diff --git a/Programmierung2/src/BankSystemGUI/BankSystem.java b/Programmierung2/src/BankSystemGUI/BankSystem.java deleted file mode 100644 index 60e2856..0000000 --- a/Programmierung2/src/BankSystemGUI/BankSystem.java +++ /dev/null @@ -1,93 +0,0 @@ -package BankSystemGUI; - -import java.awt.Dimension; -import java.awt.FlowLayout; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; - -import javax.swing.JFrame; -import javax.swing.JTextField; -// Recourses Klasse (Model) -public class BankSystem { - private String name; - private String vorname; - private String password; - private String email; - private double kontoStand; - private int Id; - private static int IDCounter = 0; - - BankSystem(){} - BankSystem(String name,String vorname,String password,String email){ - this.name = name; - this.vorname = vorname; - this.password = password; - this.email = email; - this.kontoStand = 0; - this.Id = ++IDCounter; - - } - - public double einzahlung(double wert) { - - return this.kontoStand += wert; - } - - - - - public int loadIDCounter() { - return Id; - } - - public String getEmail() { - return email; - } - - public void setEmail(String email) { - this.email = email; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getVorname() { - return vorname; - } - - public void setVorname(String vorname) { - this.vorname = vorname; - } - - public String getPassword() { - return password; - } - - public void setPassword(String password) { - this.password = password; - } - - - - public double getKontoStand() { - return kontoStand; - } - - - public int getId() { - return Id; - } - - - @Override - public String toString() { - return "BankSystem [name=" + name + ", vorname=" + vorname + ", password=" + password + ", kontoStand=" - + kontoStand + ", Id=" + Id + "]"; - } - -} diff --git a/Programmierung2/src/BankSystemGUI/BankSystemTest.java b/Programmierung2/src/BankSystemGUI/BankSystemTest.java deleted file mode 100644 index 2caba08..0000000 --- a/Programmierung2/src/BankSystemGUI/BankSystemTest.java +++ /dev/null @@ -1,14 +0,0 @@ -package BankSystemGUI; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import org.junit.jupiter.api.Test; - -public class BankSystemTest { - - @Test - public void testEinzahlung() { - BankSystem test = new BankSystem(); - double x = test.einzahlung(100); - assertEquals(100, x, 0.001); // Hier wird überprüft, ob der Kontostand 100.0 ist - } -} diff --git a/Programmierung2/src/BankSystemGUI/Controller.java b/Programmierung2/src/BankSystemGUI/Controller.java new file mode 100644 index 0000000..d3e0c13 --- /dev/null +++ b/Programmierung2/src/BankSystemGUI/Controller.java @@ -0,0 +1,77 @@ +package BankSystemGUI; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.security.SecureRandom; +import java.util.Base64; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.sql.SQLException; + + +public class Controller { + private Datenbanken datenbanken; + private Window view; + private Modell erstelleKonto; + + public Controller() throws SQLException { + this.datenbanken = new Datenbanken(); + this.view = new Window(); + + this.view.setAction(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + try { + erstelleKonto(); + } catch (SQLException | NoSuchAlgorithmException e1) { + e1.printStackTrace(); + } + } + }); + } + + public void erstelleKonto() throws SQLException, NoSuchAlgorithmException { + String email = view.textFieldEmail.getText(); + if (checkUser(email)) { + String name = view.textFieldName.getText(); + String vorname = view.textFieldVorname.getText(); + String password = view.textFieldPassword.getText(); + String teleN = view.textFieldTeleN.getText(); + String salt = createSalt(); + String hashedPassword = hashPassword(password, salt); + + erstelleKonto = new Modell(name, vorname, hashedPassword, email, teleN); // Salt wird übergeben + + datenbanken.fügeKontoEin(erstelleKonto); + datenbanken.sendeUserDaten(email); + view.showMessage(); + view.dispose(); + } else { + view.showError(); + } + } + + public void einzahlung(int betrag) { + if (betrag > 0) + erstelleKonto.setKontoStand(erstelleKonto.getKontoStand() + betrag); + } + + private boolean checkUser(String email) throws SQLException { + return datenbanken.checkUser(email); + } + + // Erzeuge ein Salt + private static String createSalt() { + SecureRandom sr = new SecureRandom(); + byte[] salt = new byte[16]; + sr.nextBytes(salt); + return Base64.getEncoder().encodeToString(salt); + } + + // Passwort hashen + public static String hashPassword(String password, String salt) throws NoSuchAlgorithmException { + MessageDigest md = MessageDigest.getInstance("SHA-256"); + md.update(Base64.getDecoder().decode(salt)); // Salt wird hinzugefügt + byte[] hashedPassword = md.digest(password.getBytes()); + return Base64.getEncoder().encodeToString(hashedPassword); // Hashed Password wird zurückgegeben + } +} diff --git a/Programmierung2/src/BankSystemGUI/ControllerUserWindow.java b/Programmierung2/src/BankSystemGUI/ControllerUserWindow.java new file mode 100644 index 0000000..d792652 --- /dev/null +++ b/Programmierung2/src/BankSystemGUI/ControllerUserWindow.java @@ -0,0 +1,30 @@ +package BankSystemGUI; + +import java.sql.SQLException; + + +import java.sql.SQLException; + +public class ControllerUserWindow { + private UserWindow user; + private Datenbanken datenbanken; + private String[] speicher; + + public ControllerUserWindow(String email) throws SQLException { + this.user = new UserWindow(); + this.datenbanken = new Datenbanken(); + sendUserDaten(email); + } + + public void sendUserDaten(String email) throws SQLException { + datenbanken.sendeUserDaten(email); + speicher = datenbanken.getSpeicher(); + user.showUserDaten(speicher[0] + " " + speicher[1], speicher[2]); + } + + + public static void main(String[] args) throws SQLException { + ControllerUserWindow c1 = new ControllerUserWindow("obay@gmail.com"); + } +} + diff --git a/Programmierung2/src/BankSystemGUI/Datenbanken.java b/Programmierung2/src/BankSystemGUI/Datenbanken.java new file mode 100644 index 0000000..3c4e2bc --- /dev/null +++ b/Programmierung2/src/BankSystemGUI/Datenbanken.java @@ -0,0 +1,62 @@ +package BankSystemGUI; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; + +public class Datenbanken { + private Connection connection; + private String[] datenSpeicher; + + public Datenbanken() throws SQLException { + this.connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/banksystem", "root", ""); + } + + private void fügeKonto(Modell konto) throws SQLException { + String query = "INSERT INTO kunden (name, vorname, password, email, teleN, kontostand) VALUES (?, ?, ?, ?, ?, ?)"; + PreparedStatement stmt = connection.prepareStatement(query); + stmt.setString(1, konto.getName()); + stmt.setString(2, konto.getVorname()); + stmt.setString(3, konto.getPassword()); + stmt.setString(4, konto.getEmail()); + stmt.setString(5, konto.getTeleN()); + stmt.setInt(6, konto.getKontoStand()); + stmt.executeUpdate(); + } + + public void fügeKontoEin(Modell konto) throws SQLException { + fügeKonto(konto); + } + + public boolean checkUser(String email) throws SQLException { + String query = "SELECT email FROM kunden WHERE email = ?"; + PreparedStatement stmt = connection.prepareStatement(query); + stmt.setString(1, email); + ResultSet rs = stmt.executeQuery(); + + return !rs.next(); // Wenn ein Ergebnis gefunden wurde, existiert der User + } + + public void sendeUserDaten(String email) throws SQLException { + datenSpeicher = new String[3]; + String sql = "SELECT name, vorname, kontostand FROM kunden WHERE email = ?"; + + PreparedStatement pstmt = connection.prepareStatement(sql); + pstmt.setString(1, email); + + ResultSet rs = pstmt.executeQuery(); + + if (rs.next()) { + datenSpeicher[0] = rs.getString("name"); + datenSpeicher[1] = rs.getString("vorname"); + datenSpeicher[2] = rs.getString("kontostand"); + } + } + + public String[] getSpeicher() { + return datenSpeicher; + } +} diff --git a/Programmierung2/src/BankSystemGUI/Hauptfenster.java b/Programmierung2/src/BankSystemGUI/Hauptfenster.java deleted file mode 100644 index ab0ab21..0000000 --- a/Programmierung2/src/BankSystemGUI/Hauptfenster.java +++ /dev/null @@ -1,57 +0,0 @@ -package BankSystemGUI; - -import java.io.File; -import java.io.FileNotFoundException; -import java.util.Scanner; - -import javax.swing.JLabel; - -public class Hauptfenster extends BankSystem { - private Window fenster; - private Scanner scan; - - Hauptfenster() throws FileNotFoundException{ - File fr = new File("C:\\Users\\obaya\\git\\Programmierung2\\Programmierung2\\src\\BankSystemGUI\\Kunde.txt"); - scan = new Scanner(fr); - String vorname = null; - String name = null; - double kontoStand = 0.0; - while (scan.hasNextLine()) { - String line = scan.nextLine(); - // Prüfen, ob die Zeile den "Vorname" enthält - if (line.startsWith("Vorname:")) - vorname = line.split(":")[1].trim(); // Den Namen extrahieren - - if (line.startsWith("Nachname: ")) - name = line.split(":")[1].trim(); - - if (line.startsWith("kontoStand ")) { - String value = line.split(" ")[1].trim(); - kontoStand = Double.parseDouble(value); - break; // Wir haben den Namen gefunden, also beenden wir die Schleife - } - - - - } - - fenster = new Window(); - fenster.setTitle("Haupseite"); - - JLabel willkommennachricht = new JLabel("Willkommen " + vorname + " " + name); - willkommennachricht.setBounds(10, 10, 200, 40); - - - JLabel konotstand = new JLabel("Deine Aktuelle Kontostand: " + kontoStand); - konotstand.setBounds(10,50 ,200 ,40 ); - - - fenster.add(konotstand); - fenster.add(willkommennachricht); - } - - public static void main(String[] args) throws FileNotFoundException { - Hauptfenster test = new Hauptfenster(); - } - -} diff --git a/Programmierung2/src/BankSystemGUI/Kunde.txt b/Programmierung2/src/BankSystemGUI/Kunde.txt deleted file mode 100644 index d26bc86..0000000 --- a/Programmierung2/src/BankSystemGUI/Kunde.txt +++ /dev/null @@ -1,7 +0,0 @@ -ID: 1 -Vorname: obai -Nachname: albek -Password: 12345 -Email: obay@gmail.com -kontoStand 0.0 - diff --git a/Programmierung2/src/BankSystemGUI/LogIn.java b/Programmierung2/src/BankSystemGUI/LogIn.java deleted file mode 100644 index f04f434..0000000 --- a/Programmierung2/src/BankSystemGUI/LogIn.java +++ /dev/null @@ -1,125 +0,0 @@ -package BankSystemGUI; - -import java.awt.Color; -import java.awt.Dimension; -import java.awt.GridLayout; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileWriter; -import java.io.IOException; -import java.io.PrintWriter; - -import javax.swing.JButton; -import javax.swing.JFrame; -import javax.swing.JLabel; -import javax.swing.JOptionPane; -import javax.swing.JPanel; -import javax.swing.JTextField; - -public class LogIn extends JFrame implements ActionListener { - private JButton submit; - private File file; - private PrintWriter write; - private JTextField eingabeVorname; - private JTextField eingabenNachname; - private JTextField eingabenPassword; - private JTextField eingabeEmail; - private BankController controller; - private Window fenster; - - LogIn() { - controller = new BankController(); - fenster = new Window(); - fenster.setTitle("log in Seite"); - - JLabel überschrift = new JLabel("loggen Sie sich ein: "); - überschrift.setBounds(10, 2, 120, 40); - - JLabel vorname = new JLabel("Vorname: "); - vorname.setBounds(10, 50, 60, 10); - eingabeVorname = new JTextField(); - eingabeVorname.setBounds(80, 50, 100, 20); - - // setBounds(int x, int y, int width, int height) - JLabel nachname = new JLabel("nachname: "); - nachname.setBounds(10, 90, 100, 20); - - eingabenNachname = new JTextField(); - eingabenNachname.setBounds(80, 90, 100, 20); - - JLabel password = new JLabel("password: "); - password.setBounds(10, 130, 100, 20); - - eingabenPassword = new JTextField(); - eingabenPassword.setBounds(80, 130, 100, 20); - - JLabel email = new JLabel("Email: "); - email.setBounds(10, 170, 100, 20); - - eingabeEmail = new JTextField(); - eingabeEmail.setBounds(80, 170, 100, 20); - - submit = new JButton("Submit"); - submit.setBounds(10, 210, 100, 20); - - submit.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - try { - logUser(); - } catch (IOException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); - } - } - }); - - fenster.add(überschrift); - fenster.add(vorname); - fenster.add(eingabeVorname); - fenster.add(nachname); - fenster.add(eingabenNachname); - fenster.add(password); - fenster.add(eingabenPassword); - fenster.add(email); - fenster.add(eingabeEmail); - fenster.add(submit); - - } - - public void logUser() throws IOException { - if (eingabeVorname.getText().isEmpty() || eingabenNachname.getText().isEmpty() - || eingabenPassword.getText().isEmpty() || eingabeEmail.getText().isEmpty()) - JOptionPane.showMessageDialog(null, "Alle Felder sind erforderlich", "Fehler", JOptionPane.ERROR_MESSAGE); - else { - String vorname = eingabeVorname.getText(); - String nachname = eingabenNachname.getText(); - String password = eingabenPassword.getText(); - String email = eingabeEmail.getText(); - - BankSystem kunde = controller.addKunde(nachname, vorname, password, email); - //JOptionPane.showMessageDialog(null, "Erfolgreich eingeloggt!", "Info", JOptionPane.INFORMATION_MESSAGE); - fenster.dispose(); - } - - } - - - - @Override - public void actionPerformed(ActionEvent e) { - // TODO Auto-generated method stub - - } - - public static void main(String[] args) { - - - } - -} - - - diff --git a/Programmierung2/src/BankSystemGUI/Modell.java b/Programmierung2/src/BankSystemGUI/Modell.java new file mode 100644 index 0000000..edf136b --- /dev/null +++ b/Programmierung2/src/BankSystemGUI/Modell.java @@ -0,0 +1,54 @@ +package BankSystemGUI; + +public class Modell { + private String name; + private String vorname; + private String password; + private String email; + private String teleN; + private int kontoStand; + private int id; + + public Modell(String name, String vorname, String password, String email, String teleN) { + this.name = name; + this.vorname = vorname; + this.password = password; + this.email = email; + this.teleN = teleN; + this.kontoStand = 0; + } + + public String getName() { + return name; + } + + public String getVorname() { + return vorname; + } + + public String getPassword() { + return password; + } + + public String getEmail() { + return email; + } + + public int getId() { + return id; + } + + public String getTeleN() { + return teleN; + } + + public int getKontoStand() { + return kontoStand; + } + + public void setKontoStand(int kontoStand) { + this.kontoStand = kontoStand; + } + + +} diff --git a/Programmierung2/src/BankSystemGUI/Test.java b/Programmierung2/src/BankSystemGUI/Test.java index 0db1f2b..0acedbd 100644 --- a/Programmierung2/src/BankSystemGUI/Test.java +++ b/Programmierung2/src/BankSystemGUI/Test.java @@ -1,18 +1,14 @@ package BankSystemGUI; - -import java.util.ArrayList; - +import java.awt.EventQueue; +import java.security.NoSuchAlgorithmException; +import java.sql.SQLException; public class Test { - public static void main(String[] args) { + public static void main(String[] args) throws ClassNotFoundException, SQLException, NoSuchAlgorithmException { - BankSystem b1 = new BankSystem("obai","albek","12345","obay@gmail.com"); - System.out.println(b1.toString()); - b1.einzahlung(100); - System.out.println(b1.getKontoStand()); - System.out.println(b1.toString()); -// - + Controller c1 = new Controller (); + + } } diff --git a/Programmierung2/src/BankSystemGUI/UserWindow.java b/Programmierung2/src/BankSystemGUI/UserWindow.java new file mode 100644 index 0000000..5583cdb --- /dev/null +++ b/Programmierung2/src/BankSystemGUI/UserWindow.java @@ -0,0 +1,76 @@ +package BankSystemGUI; + +import java.awt.EventQueue; + +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.border.EmptyBorder; +import javax.swing.JLabel; +import java.awt.Color; +import java.awt.Font; +import javax.swing.border.LineBorder; +import javax.swing.JButton; +import java.awt.event.ActionListener; +import java.awt.event.ActionEvent; + +public class UserWindow extends JFrame { + + private static final long serialVersionUID = 1L; + private JPanel contentPane; + JLabel begrüsseUser; + JLabel userKontoStand; + + public UserWindow(){ + this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + this.setBounds(100, 100, 757, 654); + this.contentPane = new JPanel(); + this.contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); + this.setLocationRelativeTo(this); + + setContentPane(contentPane); + contentPane.setLayout(null); + + JPanel panel = new JPanel(); + panel.setBorder(new LineBorder(new Color(128, 128, 0), 2)); + panel.setBackground(new Color(192, 192, 192)); + panel.setBounds(21, 23, 405, 377); + contentPane.add(panel); + panel.setLayout(null); + + begrüsseUser = new JLabel("Willkommen "); + begrüsseUser.setFont(new Font("Tahoma", Font.BOLD, 15)); + begrüsseUser.setForeground(new Color(0, 128, 0)); + begrüsseUser.setBounds(24, 23, 333, 28); + panel.add(begrüsseUser); + + userKontoStand = new JLabel("Kontostand: "); + userKontoStand.setFont(new Font("Tahoma", Font.BOLD, 15)); + userKontoStand.setBounds(24, 82, 263, 47); + panel.add(userKontoStand); + + JButton btnNewButton = new JButton("Einzahlen"); + btnNewButton.setBounds(10, 249, 110, 23); + panel.add(btnNewButton); + + JButton btnNewButton_1 = new JButton("Auszahlen"); + + btnNewButton_1.setBounds(130, 249, 109, 23); + panel.add(btnNewButton_1); + + JButton btnNewButton_2 = new JButton("Überweisen"); + btnNewButton_2.setBounds(249, 249, 128, 23); + panel.add(btnNewButton_2); + + this.setVisible(true); + } + + public void showUserDaten(String name, String kontoStand) { + + begrüsseUser.setText(begrüsseUser.getText() + " " + name); + userKontoStand.setText(userKontoStand.getText() + " " + kontoStand); + } + + public static void main(String[] args) { + new UserWindow(); + } +} diff --git a/Programmierung2/src/BankSystemGUI/Window.java b/Programmierung2/src/BankSystemGUI/Window.java index 2fdbcb1..8c4019e 100644 --- a/Programmierung2/src/BankSystemGUI/Window.java +++ b/Programmierung2/src/BankSystemGUI/Window.java @@ -1,22 +1,124 @@ package BankSystemGUI; -import java.awt.FlowLayout; -import java.awt.GridLayout; +import java.awt.EventQueue; import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.border.EmptyBorder; +import javax.swing.JLabel; +import javax.swing.JOptionPane; + +import java.awt.Color; +import java.awt.Font; +import javax.swing.JTextField; +import javax.swing.JPasswordField; +import javax.swing.border.LineBorder; +import javax.swing.JButton; +import java.awt.event.ActionListener; +import java.awt.event.ActionEvent; public class Window extends JFrame { - public JFrame window; + private static final long serialVersionUID = 1L; + JPanel contentPane; + JTextField textFieldName; + JTextField textFieldVorname; + JTextField textFieldPassword; + JTextField textFieldEmail; + JTextField textFieldTeleN; + JButton btnNewButton; + + public Window() { + this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + this.setBounds(100, 100, 955, 664); + this.setLocationRelativeTo(this); + + contentPane = new JPanel(); + contentPane.setForeground(new Color(128, 128, 255)); + contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); + + setContentPane(contentPane); + contentPane.setLayout(null); + + JPanel panel = new JPanel(); + panel.setBorder(new LineBorder(new Color(255, 0, 0), 1, true)); + panel.setBackground(new Color(192, 192, 192)); + panel.setBounds(31, 23, 349, 343); + contentPane.add(panel); + panel.setLayout(null); + + JLabel lblNewLabel = new JLabel("Erstelle Konto"); + lblNewLabel.setBounds(21, 11, 120, 20); + panel.add(lblNewLabel); + lblNewLabel.setFont(new Font("Tahoma", Font.BOLD, 16)); + lblNewLabel.setForeground(new Color(128, 128, 255)); + lblNewLabel.setBackground(new Color(0, 0, 160)); + + JLabel lblNewLabel_1 = new JLabel("Name: "); + lblNewLabel_1.setBounds(10, 42, 46, 14); + panel.add(lblNewLabel_1); + + textFieldName = new JTextField(); + textFieldName.setBounds(75, 39, 169, 20); + panel.add(textFieldName); + textFieldName.setColumns(10); + + JLabel lblNewLabel_2 = new JLabel("Vorname: "); + lblNewLabel_2.setBounds(10, 80, 60, 14); + panel.add(lblNewLabel_2); + + textFieldVorname = new JTextField(); + textFieldVorname.setBounds(75, 77, 169, 20); + panel.add(textFieldVorname); + textFieldVorname.setColumns(10); + + JLabel lblNewLabel_3 = new JLabel("Password: "); + lblNewLabel_3.setBounds(10, 123, 66, 14); + panel.add(lblNewLabel_3); + + JLabel lblNewLabel_3_1 = new JLabel("Email: "); + lblNewLabel_3_1.setBounds(10, 170, 66, 14); + panel.add(lblNewLabel_3_1); + + JLabel lblNewLabel_4 = new JLabel("TeleN: "); + lblNewLabel_4.setBounds(10, 215, 46, 14); + panel.add(lblNewLabel_4); + + btnNewButton = new JButton("Konto Erstellen"); + btnNewButton.setFont(new Font("Tahoma", Font.BOLD, 13)); + btnNewButton.setForeground(new Color(128, 128, 255)); + btnNewButton.setBounds(10, 262, 150, 23); + panel.add(btnNewButton); + + textFieldPassword = new JTextField(); + textFieldPassword.setBounds(75, 120, 169, 20); + panel.add(textFieldPassword); + textFieldPassword.setColumns(10); + + textFieldEmail = new JTextField(); + textFieldEmail.setColumns(10); + textFieldEmail.setBounds(75, 167, 169, 20); + panel.add(textFieldEmail); + + textFieldTeleN = new JTextField(); + textFieldTeleN.setColumns(10); + textFieldTeleN.setBounds(75, 212, 169, 20); + panel.add(textFieldTeleN); + + this.setVisible(true); + } - Window(){ - - setSize(700, 700); - setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - setLayout(null); - setVisible(true); + public void showError() { + JOptionPane.showMessageDialog(this, "Dieser Konto existiert bereits! ", "Error Nachricht", JOptionPane.ERROR_MESSAGE); + + } + + public void showMessage() { + JOptionPane.showMessageDialog(this, "Login war erfolgreich", "Login Erfolgreich", JOptionPane.PLAIN_MESSAGE); } - + public void setAction(ActionListener actionListener) { + btnNewButton.addActionListener(actionListener); + } } diff --git a/Programmierung2/src/MVC_Desighn/Person_Daten.java b/Programmierung2/src/MVC_Desighn/Person_Daten.java index 9634845..97c34ee 100644 --- a/Programmierung2/src/MVC_Desighn/Person_Daten.java +++ b/Programmierung2/src/MVC_Desighn/Person_Daten.java @@ -1,49 +1,40 @@ package MVC_Desighn; + // Modell, oder domain public class Person_Daten { - private String name; private int alter; + private String name; - public Person_Daten(String name, int alter) { - this.name = name; - setAlter(alter); - } - - public String getName() { - return name; - } - public void setName(String name) { - this.name = name; - } public int getAlter() { return alter; } + public void setAlter(int alter) { - if (alter > 18) - this.alter = alter; - else - System.out.println("Sie sind sehr jung"); - } - - - @Override - public String toString() { - return "Person_Daten [name=" + name + ", alter=" + alter + "]"; + this.alter = alter; } - public static void main(String[] args) { - - Person_Daten p1 = new Person_Daten("obai" , 22); - GUI_DatenView v1 = new GUI_DatenView(); - - Controller_DatenPerson c1 = new Controller_DatenPerson(p1,v1); - - c1.updateView(); - c1.setPersonName("omar"); - c1.updateView(); - + public String getName() { + return name; } + + public void setName(String name) { + this.name = name; + } + + public static void main(String[] args) { + Person_Daten model = new Person_Daten(); + + GUI_DatenView view = new GUI_DatenView(); + + Controller_DatenPerson controller = new Controller_DatenPerson(model, view); + + controller.updateView(); + + controller.setStudentName("Vikram Sharma"); + + controller.updateView(); + } } @@ -51,39 +42,43 @@ public class Person_Daten { //View oder GUI class GUI_DatenView { - public void printDatenPerson(String name, int alter) { - System.out.println("GUI_DatenView [name=" + name + ", alter=" + alter + "]"); - } + public void printStudentDetails(String name, int alter) { + System.out.println("Student:"); + System.out.println("Name: " + name); + System.out.println("ALter: " + alter); + } } // Controller -class Controller_DatenPerson{ +class Controller_DatenPerson { Person_Daten modell; GUI_DatenView view; - + public Controller_DatenPerson(Person_Daten modell, GUI_DatenView view) { this.modell = modell; this.view = view; } - - public String getPersonName() { - return this.modell.getName(); - } - - public void setPersonName(String name) { + + public void setStudentName(String name) { modell.setName(name); } - - public int getPersonAlter() { - return this.modell.getAlter(); + + public String getStudentName() { + return modell.getName(); } - public void updateView() { - - view.printDatenPerson(modell.getName(),modell.getAlter()); + public void setAlter(int alter) { + modell.setAlter(alter); + } + + public int getAlter() { + return modell.getAlter(); } + public void updateView() { + view.printStudentDetails(modell.getName(), modell.getAlter()); + } } diff --git a/Programmierung2/src/SQL/All_befehlen.pdf b/Programmierung2/src/SQL/All_befehlen.pdf new file mode 100644 index 0000000..5570ca1 Binary files /dev/null and b/Programmierung2/src/SQL/All_befehlen.pdf differ diff --git a/Programmierung2/src/SQL/Daten in der Tabelle Aktualisieren.pdf b/Programmierung2/src/SQL/Daten in der Tabelle Aktualisieren.pdf new file mode 100644 index 0000000..2953294 Binary files /dev/null and b/Programmierung2/src/SQL/Daten in der Tabelle Aktualisieren.pdf differ diff --git a/Programmierung2/src/SQL/Daten unter bestimmten Bedingungen abrufen.pdf b/Programmierung2/src/SQL/Daten unter bestimmten Bedingungen abrufen.pdf new file mode 100644 index 0000000..e2d38c5 Binary files /dev/null and b/Programmierung2/src/SQL/Daten unter bestimmten Bedingungen abrufen.pdf differ diff --git a/Programmierung2/src/SQL/JavaDatenbanken/Test.java b/Programmierung2/src/SQL/JavaDatenbanken/Test.java new file mode 100644 index 0000000..34bbd15 --- /dev/null +++ b/Programmierung2/src/SQL/JavaDatenbanken/Test.java @@ -0,0 +1,41 @@ +package SQL.JavaDatenbanken; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; + +public class Test { + + public static void main(String[] args) throws ClassNotFoundException, SQLException { + + // Lade den MySQL JDBC-Treiber + Class.forName("com.mysql.cj.jdbc.Driver"); + + // Verbindung zur MySQL-Datenbank herstellen + Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", ""); + + if (con == null) { + System.out.println("keine Verbindung!"); + } + // Statement erstellen + Statement stmt = con.createStatement(); + + // SQL-Abfrage ausführen (richtiges Tabellennamen verwenden) + ResultSet rs = stmt.executeQuery("SELECT * FROM books"); + + // Ergebnisse durchgehen und ausgeben + while (rs.next()) { + System.out.print(rs.getString("title")); + System.out.print(" "); + System.out.print(rs.getString("number_of_pages")); + System.out.println(); + } + + // Verbindung schließen + con.close(); + + } + +} diff --git a/Programmierung2/src/module-info.java b/Programmierung2/src/module-info.java index 0abbc23..d28f5cd 100644 --- a/Programmierung2/src/module-info.java +++ b/Programmierung2/src/module-info.java @@ -8,5 +8,6 @@ module Programmierung2 { requires java.desktop; requires org.junit.jupiter.api; requires junit; + requires java.sql; exports Übungen.TaschenrechnerGUI to junit; // Exportiere das Paket für das JUnit-Modul } \ No newline at end of file diff --git a/Programmierung2/src/Übungen/TicTac/Controller.java b/Programmierung2/src/Übungen/TicTac/Controller.java index b2596ab..ada9a98 100644 --- a/Programmierung2/src/Übungen/TicTac/Controller.java +++ b/Programmierung2/src/Übungen/TicTac/Controller.java @@ -1,18 +1,36 @@ package Übungen.TicTac; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.util.Scanner; +import javax.swing.*; + public class Controller { static Scanner scan = new Scanner(System.in); static String[][] spielField = new String[3][3]; + private Modell spieler1; private Modell spieler2; - private View view; - + private View view; + private String spieler = "X"; + + public Controller() {} + public Controller(Modell spieler1, Modell spieler2, View view) { this.spieler1 = spieler1; this.spieler2 = spieler2; this.view = view; + initSpielfeld(); + zeigeDaten(); + } + + public void zeigeDaten() { + view.nameSpieler1.setText(spieler1.getName()); + view.anzahlgewinn1.setText(spieler1.getAnzahlGewinn() + ""); + view.nameSpieler2.setText(spieler2.getName()); + view.anzahlgewinn2.setText(spieler2.getAnzahlGewinn() + ""); + view.XoderO.setText(spieler); } public static boolean checkSet(String X_O, int x, int y) { @@ -27,19 +45,19 @@ public class Controller { } - public static boolean checkGewinner(String player) { + public static boolean checkGewinner(Modell player) { for (int i = 0; i < 3; i++) { - if (spielField[i][0].equals(player) && spielField[i][1].equals(player) && spielField[i][2].equals(player)) + if (spielField[i][0].equals(player.getZeichen()) && spielField[i][1].equals(player.getZeichen()) && spielField[i][2].equals(player.getZeichen())) return true; } for (int i = 0; i < 3; i++) { - if (spielField[0][i].equals(player) && spielField[1][i].equals(player) && spielField[2][i].equals(player)) + if (spielField[0][i].equals(player.getZeichen()) && spielField[1][i].equals(player.getZeichen()) && spielField[2][i].equals(player.getZeichen())) return true; } - if (spielField[0][0].equals(player) && spielField[1][1].equals(player) && spielField[2][2].equals(player)) + if (spielField[0][0].equals(player.getZeichen()) && spielField[1][1].equals(player.getZeichen()) && spielField[2][2].equals(player.getZeichen())) return true; - if (spielField[0][2].equals(player) && spielField[1][1].equals(player) && spielField[2][0].equals(player)) + if (spielField[0][2].equals(player.getZeichen()) && spielField[1][1].equals(player.getZeichen()) && spielField[2][0].equals(player.getZeichen())) return true; return false; @@ -55,20 +73,45 @@ public class Controller { } } - public static void printSpielfeld() { - for (int i = 0; i < 3; i++) { - for (int j = 0; j < 3; j++) { - if (j == 2) { - spielField[i][j] = "-"; - System.out.print(spielField[i][j]); - } else { - spielField[i][j] = "-"; - System.out.print(spielField[i][j]); - System.out.print("|"); - } - } - System.out.println(); - } - } + public void initSpielfeld() { + // Spielfeld initialisieren + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 3; j++) { + spielField[i][j] = "-"; + view.x_o[i][j].setText("-"); + + final int x = i; + final int y = j; + view.x_o[i][j].addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + handleMove(x, y); + } + }); + } + } + } + + public void handleMove(int x, int y) { + + if (spielField[x][y].equals("-")) { + spielField[x][y] = spieler; + view.x_o[x][y].setText(spieler); + + if (checkGewinner(spieler1)) { + System.out.println("Spieler " + spieler1.getName() + " hat gewonnen!"); + spieler1.setAnzahlGewinn(spieler1.getAnzahlGewinn() + 1); + } + + else if (checkGewinner(spieler2)) { + System.out.println("Spieler " + spieler2.getName() + " hat gewonnen!"); + spieler2.setAnzahlGewinn(spieler2.getAnzahlGewinn() + 1); + } + + + spieler = spieler.equals("X") ? "O" : "X"; + zeigeDaten(); + } + } } diff --git a/Programmierung2/src/Übungen/TicTac/Modell.java b/Programmierung2/src/Übungen/TicTac/Modell.java index c1d904b..6cc4298 100644 --- a/Programmierung2/src/Übungen/TicTac/Modell.java +++ b/Programmierung2/src/Übungen/TicTac/Modell.java @@ -3,15 +3,13 @@ package Übungen.TicTac; public class Modell { private String name; - private String vorname; private int anzahlGewinn; private String zeichen; - public Modell(String name, String vorname, int anzahlGewinn,String zeichen) { + public Modell(String name,String zeichen) { this.name = name; - this.vorname = vorname; - this.anzahlGewinn = anzahlGewinn; this.zeichen = zeichen; + this.anzahlGewinn = 0; } public String getName() { @@ -20,20 +18,18 @@ public class Modell { public void setName(String name) { this.name = name; } - public String getVorname() { - return vorname; - } - public void setVorname(String vorname) { - this.vorname = vorname; - } - public int getAnzahlGewinn() { - return anzahlGewinn; - } - public void setAnzahlGewinn(int anzahlGewinn) { - this.anzahlGewinn = anzahlGewinn; - } public String getZeichen() { return zeichen; } + + public int getAnzahlGewinn() { + return anzahlGewinn; + } + + public void setAnzahlGewinn(int anzahlGewinn) { + this.anzahlGewinn = anzahlGewinn; + } + + } diff --git a/Programmierung2/src/Übungen/TicTac/SpielfeldGUI.java b/Programmierung2/src/Übungen/TicTac/SpielfeldGUI.java new file mode 100644 index 0000000..7d48cb7 --- /dev/null +++ b/Programmierung2/src/Übungen/TicTac/SpielfeldGUI.java @@ -0,0 +1,47 @@ +package Übungen.TicTac; +import javax.swing.*; +import java.awt.*; + +public class SpielfeldGUI { + + private JFrame frame; + private JButton[][] buttons; + + public SpielfeldGUI() { + frame = new JFrame("Spielfeld"); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + frame.setSize(300, 300); + + // Erstelle ein 3x3 GridLayout + JPanel panel = new JPanel(); + panel.setLayout(new GridLayout(3, 3)); + + // Erstelle das Spielfeld mit 3x3 Buttons + buttons = new JButton[3][3]; + + + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 3; j++) { + buttons[i][j] = new JButton("-"); + buttons[i][j].addActionListener(e -> { + JButton clickedButton = (JButton) e.getSource(); + clickedButton.setText("X"); // Ändert den Text zu "X" beim Klick + }); + panel.add(buttons[i][j]); + } + } + + // Füge das Panel zum Frame hinzu + frame.add(panel); + frame.setVisible(true); // Zeige das Fenster an + } + + public static void main(String[] args) { + // Starte die GUI + SwingUtilities.invokeLater(new Runnable() { + public void run() { + new SpielfeldGUI(); + } + }); + } +} diff --git a/Programmierung2/src/Übungen/TicTac/Tic_Tac_Toe.java b/Programmierung2/src/Übungen/TicTac/Tic_Tac_Toe.java index 3c60d62..f0a1184 100644 --- a/Programmierung2/src/Übungen/TicTac/Tic_Tac_Toe.java +++ b/Programmierung2/src/Übungen/TicTac/Tic_Tac_Toe.java @@ -5,54 +5,11 @@ public class Tic_Tac_Toe { public static void main(String[] args){ - -// -// printSpielfeld(); -// while (true) { -// System.out.println("Bitte geben Sie 'x' und neue Position ein: "); -// String playerx =scan.nextLine(); -// int x = scan.nextInt(); -// int y = scan.nextInt(); -// while (!checkSet(playerx, x, y)) { -// scan.nextLine(); -// System.out.println("Falsche Eingabe! Versuchen Sie nochmal: "); -// playerx =scan.nextLine(); -// x = scan.nextInt(); -// y = scan.nextInt(); -// if (checkSet(playerx, x, y)) -// break; -// } -// ausgabeSpielFeld(playerx, x, y); -// if (checkGewinner(playerx)) { -// System.out.println("Spieler X hat gewonnen!"); -// break; -// } -// scan.nextLine(); -// -// System.out.println("Bitte geben Sie 'O' und neue Position ein: "); -// String playero =scan.nextLine(); -// x = scan.nextInt(); -// y = scan.nextInt(); -// while (!checkSet(playero, x, y)) { -// scan.nextLine(); -// System.out.println("Falsche Eingabe! Versuchen Sie nochmal: "); -// playero =scan.nextLine(); -// x = scan.nextInt(); -// y = scan.nextInt(); -// } -// ausgabeSpielFeld(playero, x, y); -// if (checkGewinner(playero)) { -// System.out.println("Spieler O hat gewonnen!"); -// break; -// } -// scan.nextLine(); -// } -// } -// -// - - - - + Modell obai = new Modell("obai","X"); + Modell omar = new Modell("omar","O"); + + View view = new View(); + + Controller spiel = new Controller(obai,omar,view); } } diff --git a/Programmierung2/src/Übungen/TicTac/View.java b/Programmierung2/src/Übungen/TicTac/View.java index 6a103ef..3c4d7b6 100644 --- a/Programmierung2/src/Übungen/TicTac/View.java +++ b/Programmierung2/src/Übungen/TicTac/View.java @@ -1,5 +1,85 @@ package Übungen.TicTac; -public class View { +import java.awt.EventQueue; +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.border.EmptyBorder; +import java.awt.Color; +import javax.swing.border.LineBorder; +import javax.swing.JLabel; +import javax.swing.JButton; +import javax.swing.JTextField; +import java.awt.GridLayout; +import java.awt.event.ActionListener; +import java.awt.event.ActionEvent; + +public class View extends JFrame { + + private static final long serialVersionUID = 1L; + private JPanel contentPane; + JLabel nameSpieler1; + JLabel nameSpieler2; + JLabel anzahlgewinn1; + JLabel anzahlgewinn2; + JLabel XoderO; + JButton[][] x_o; + + public View() { + this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + this.setBounds(100, 100, 626, 709); + this.contentPane = new JPanel(); + this.contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); + + setContentPane(contentPane); + contentPane.setLayout(null); + + JPanel panel = new JPanel(); + panel.setBorder(new LineBorder(new Color(128, 255, 128), 2)); + panel.setBackground(new Color(192, 192, 192)); + panel.setBounds(38, 36, 529, 585); + contentPane.add(panel); + panel.setLayout(null); + + nameSpieler1 = new JLabel(); + nameSpieler1.setBounds(46, 27, 100, 14); + panel.add(nameSpieler1); + + anzahlgewinn1 = new JLabel(); + anzahlgewinn1.setBounds(46, 52, 100, 14); + panel.add(anzahlgewinn1); + + nameSpieler2 = new JLabel(); + nameSpieler2.setBounds(391, 27, 100, 14); + panel.add(nameSpieler2); + + anzahlgewinn2 = new JLabel(); + anzahlgewinn2.setBounds(391, 52, 100, 14); + panel.add(anzahlgewinn2); + + XoderO = new JLabel("New label"); + XoderO.setBounds(222, 41, 100, 14); + panel.add(XoderO); + + JButton btnNewButton = new JButton("New Game"); + btnNewButton.setBounds(196, 447, 129, 23); + panel.add(btnNewButton); + + JPanel panel_1 = new JPanel(); + panel_1.setBounds(101, 125, 312, 291); + panel.add(panel_1); + panel_1.setLayout(new GridLayout(3, 3, 0, 0)); + + x_o = new JButton[3][3]; + + for (int i = 0; i < 3; i++) + for (int j = 0; j < 3; j++) { + x_o[i][j] = new JButton("-"); + panel_1.add(x_o[i][j]); + } + + panel.add(panel_1); + + this.setVisible(true); + } }