import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.JButton; import javax.swing.JOptionPane; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Scanner; public class SchwimmbadEintritt extends JFrame { private static final String[] namen = {"Max Muster", "Marie Muster", "Patrick"}; private static final double[] guthaben = {100.0, 200.0, 1}; private static final double[] preise = {3.0, 2.5, 2.0}; private JTextField nameTextField; private JTextField stundenTextField; private int index = -1; public SchwimmbadEintritt() { super("Schwimmbad Eintritt"); // Set up the main panel JPanel panel = new JPanel(); panel.setLayout(null); // Create name label and text field JLabel nameLabel = new JLabel("Wie lautet Ihr Name?"); nameLabel.setBounds(10, 10, 200, 20); panel.add(nameLabel); nameTextField = new JTextField(); nameTextField.setBounds(10, 40, 200, 20); panel.add(nameTextField); // Create button for submitting name JButton submitButton = new JButton("Submit"); submitButton.setBounds(10, 70, 100, 20); submitButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { processName(); } }); panel.add(submitButton); // Set up the JFrame setContentPane(panel); setSize(250, 150); setLocationRelativeTo(null); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setResizable(false); } private void processName() { String name = nameTextField.getText(); index = -1; for (int i = 0; i < namen.length; i++) { if (namen[i].equals(name)) { index = i; break; } } if (index == -1) { JOptionPane.showMessageDialog(this, "Ihr Name ist nicht in der Liste.", "Fehler", JOptionPane.ERROR_MESSAGE); return; } double guthabenAlt = guthaben[index]; JOptionPane.showMessageDialog(this, String.format("Ihr aktuelles Guthaben beträgt %.2f Euro", guthabenAlt)); // Create stunden label and text field JLabel stundenLabel = new JLabel("Wie lange möchten Sie bleiben? (Stunden)"); stundenLabel.setBounds(10, 100, 250, 20); getContentPane().add(stundenLabel); stundenTextField = new JTextField(); stundenTextField.setBounds(10, 130, 200, 20); getContentPane().add(stundenTextField); // Create button for calculating preis JButton calculateButton = new JButton("Calculate"); calculateButton.setBounds(10, 160, 100, 20); calculateButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { calculatePreis(); } }); getContentPane().add(calculateButton); getContentPane().revalidate(); getContentPane().repaint(); } private void calculatePreis() { int stunden = Integer.parseInt(stundenTextField.getText()); stunden = Math.min(stunden, preise.length); double preis = 0; for (int i = 0; i < stunden; i++) { preis += preise[i]; } if (preis > guthaben[index]) { int option = JOptionPane.showConfirmDialog(this, "Ihr Guthaben reicht nicht aus. Möchten Sie aufladen?", "Aufladen", JOptionPane.YES_NO_OPTION); if (option == JOptionPane.YES_OPTION) { performAufladen(); } else { JOptionPane.showMessageDialog(this, "Das Programm wird beendet, wegen unzureichenden Guthaben zugang verweigert!", "Fehler", JOptionPane.ERROR_MESSAGE); System.exit(0); } } guthaben[index] -= preis; JOptionPane.showMessageDialog(this, String.format("Der Preis beträgt %.2f Euro. Ihr neues Guthaben beträgt %.2f Euro.", preis, guthaben[index])); // Create dauer label and text field JLabel dauerLabel = new JLabel("Wie lange waren Sie im Schwimmbad? (Stunden)"); dauerLabel.setBounds(10, 190, 250, 20); getContentPane().add(dauerLabel); JTextField dauerTextField = new JTextField(); dauerTextField.setBounds(10, 220, 200, 20); getContentPane().add(dauerTextField); // Create button for calculating nachzahlung JButton nachzahlungButton = new JButton("Calculate"); nachzahlungButton.setBounds(10, 250, 100, 20); nachzahlungButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { calculateNachzahlung(Integer.parseInt(dauerTextField.getText())); } }); getContentPane().add(nachzahlungButton); getContentPane().revalidate(); getContentPane().repaint(); } private void calculateNachzahlung(int dauer) { if (dauer > preise.length) { double nachzahlung = 0; for (int i = preise.length; i < dauer; i++) { nachzahlung += preise[i % preise.length]; JOptionPane.showMessageDialog(this, "Die Schranke wird geöffnet."); } if (nachzahlung > guthaben[index]) { int option = JOptionPane.showConfirmDialog(this, "Ihr Guthaben reicht nicht aus. Möchten Sie aufladen?", "Aufladen", JOptionPane.YES_NO_OPTION); if (option == JOptionPane.YES_OPTION) { performAufladen(); } else { JOptionPane.showMessageDialog(this, "Das Programm wird beendet, wenden sie sich bitte an einen Mitarbeiter!.", "Fehler", JOptionPane.ERROR_MESSAGE); System.exit(0); } } } } private void performAufladen() { JPanel panel = new JPanel(); panel.setLayout(null); JLabel pinLabel = new JLabel("Bitte stecken Sie Ihre Bankkarte ein und geben Sie Ihre PIN ein."); pinLabel.setBounds(10, 10, 400, 20); panel.add(pinLabel); JTextField pinTextField = new JTextField(); pinTextField.setBounds(10, 40, 200, 20); panel.add(pinTextField); JLabel betragLabel = new JLabel("Wie viel möchten Sie aufladen? (Euro)"); betragLabel.setBounds(10, 70, 250, 20); panel.add(betragLabel); JTextField betragTextField = new JTextField(); betragTextField.setBounds(10, 100, 200, 20); panel.add(betragTextField); JButton aufladenButton = new JButton("Aufladen"); aufladenButton.setBounds(10, 130, 100, 20); aufladenButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int pin = Integer.parseInt(pinTextField.getText()); if (pin == 1234) { double betrag = Double.parseDouble(betragTextField.getText()); guthaben[index] += betrag; JOptionPane.showMessageDialog(SchwimmbadEintritt.this, String.format("Ihr neues Guthaben beträgt %.2f Euro.", guthaben[index])); } else { JOptionPane.showMessageDialog(SchwimmbadEintritt.this, "Falsche PIN.", "Fehler", JOptionPane.ERROR_MESSAGE); } } }); panel.add(aufladenButton); JOptionPane.showMessageDialog(this, panel, "Aufladen", JOptionPane.PLAIN_MESSAGE); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { SchwimmbadEintritt app = new SchwimmbadEintritt(); app.setVisible(true); } }); } }