Advertisement
Guest User

Untitled

a guest
Jun 6th, 2023
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.95 KB | None | 0 0
  1. import javax.swing.JFrame;
  2. import javax.swing.JLabel;
  3. import javax.swing.JPanel;
  4. import javax.swing.JTextField;
  5. import javax.swing.JButton;
  6. import javax.swing.JOptionPane;
  7. import java.awt.event.ActionEvent;
  8. import java.awt.event.ActionListener;
  9. import java.util.Scanner;
  10.  
  11. public class SchwimmbadEintritt extends JFrame {
  12.     private static final String[] namen = {"Max Muster", "Marie Muster", "Patrick"};
  13.     private static final double[] guthaben = {100.0, 200.0, 1};
  14.     private static final double[] preise = {3.0, 2.5, 2.0};
  15.     private JTextField nameTextField;
  16.     private JTextField stundenTextField;
  17.     private int index = -1;
  18.  
  19.     public SchwimmbadEintritt() {
  20.         super("Schwimmbad Eintritt");
  21.  
  22.         // Set up the main panel
  23.         JPanel panel = new JPanel();
  24.         panel.setLayout(null);
  25.  
  26.         // Create name label and text field
  27.         JLabel nameLabel = new JLabel("Wie lautet Ihr Name?");
  28.         nameLabel.setBounds(10, 10, 200, 20);
  29.         panel.add(nameLabel);
  30.  
  31.         nameTextField = new JTextField();
  32.         nameTextField.setBounds(10, 40, 200, 20);
  33.         panel.add(nameTextField);
  34.  
  35.         // Create button for submitting name
  36.         JButton submitButton = new JButton("Submit");
  37.         submitButton.setBounds(10, 70, 100, 20);
  38.         submitButton.addActionListener(new ActionListener() {
  39.             public void actionPerformed(ActionEvent e) {
  40.                 processName();
  41.             }
  42.         });
  43.         panel.add(submitButton);
  44.  
  45.         // Set up the JFrame
  46.         setContentPane(panel);
  47.         setSize(250, 150);
  48.         setLocationRelativeTo(null);
  49.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  50.         setResizable(false);
  51.     }
  52.  
  53.     private void processName() {
  54.         String name = nameTextField.getText();
  55.         index = -1;
  56.  
  57.         for (int i = 0; i < namen.length; i++) {
  58.             if (namen[i].equals(name)) {
  59.                 index = i;
  60.                 break;
  61.             }
  62.         }
  63.  
  64.         if (index == -1) {
  65.             JOptionPane.showMessageDialog(this, "Ihr Name ist nicht in der Liste.", "Fehler", JOptionPane.ERROR_MESSAGE);
  66.             return;
  67.         }
  68.  
  69.         double guthabenAlt = guthaben[index];
  70.         JOptionPane.showMessageDialog(this, String.format("Ihr aktuelles Guthaben beträgt %.2f Euro", guthabenAlt));
  71.  
  72.         // Create stunden label and text field
  73.         JLabel stundenLabel = new JLabel("Wie lange möchten Sie bleiben? (Stunden)");
  74.         stundenLabel.setBounds(10, 100, 250, 20);
  75.         getContentPane().add(stundenLabel);
  76.  
  77.         stundenTextField = new JTextField();
  78.         stundenTextField.setBounds(10, 130, 200, 20);
  79.         getContentPane().add(stundenTextField);
  80.  
  81.         // Create button for calculating preis
  82.         JButton calculateButton = new JButton("Calculate");
  83.         calculateButton.setBounds(10, 160, 100, 20);
  84.         calculateButton.addActionListener(new ActionListener() {
  85.             public void actionPerformed(ActionEvent e) {
  86.                 calculatePreis();
  87.             }
  88.         });
  89.         getContentPane().add(calculateButton);
  90.  
  91.         getContentPane().revalidate();
  92.         getContentPane().repaint();
  93.     }
  94.  
  95.     private void calculatePreis() {
  96.         int stunden = Integer.parseInt(stundenTextField.getText());
  97.         stunden = Math.min(stunden, preise.length);
  98.         double preis = 0;
  99.  
  100.         for (int i = 0; i < stunden; i++) {
  101.             preis += preise[i];
  102.         }
  103.  
  104.         if (preis > guthaben[index]) {
  105.             int option = JOptionPane.showConfirmDialog(this, "Ihr Guthaben reicht nicht aus. Möchten Sie aufladen?", "Aufladen", JOptionPane.YES_NO_OPTION);
  106.             if (option == JOptionPane.YES_OPTION) {
  107.                 performAufladen();
  108.             } else {
  109.                 JOptionPane.showMessageDialog(this, "Das Programm wird beendet, wegen unzureichenden Guthaben zugang verweigert!", "Fehler", JOptionPane.ERROR_MESSAGE);
  110.                 System.exit(0);
  111.             }
  112.         }
  113.  
  114.         guthaben[index] -= preis;
  115.         JOptionPane.showMessageDialog(this, String.format("Der Preis beträgt %.2f Euro. Ihr neues Guthaben beträgt %.2f Euro.", preis, guthaben[index]));
  116.  
  117.         // Create dauer label and text field
  118.         JLabel dauerLabel = new JLabel("Wie lange waren Sie im Schwimmbad? (Stunden)");
  119.         dauerLabel.setBounds(10, 190, 250, 20);
  120.         getContentPane().add(dauerLabel);
  121.  
  122.         JTextField dauerTextField = new JTextField();
  123.         dauerTextField.setBounds(10, 220, 200, 20);
  124.         getContentPane().add(dauerTextField);
  125.  
  126.         // Create button for calculating nachzahlung
  127.         JButton nachzahlungButton = new JButton("Calculate");
  128.         nachzahlungButton.setBounds(10, 250, 100, 20);
  129.         nachzahlungButton.addActionListener(new ActionListener() {
  130.             public void actionPerformed(ActionEvent e) {
  131.                 calculateNachzahlung(Integer.parseInt(dauerTextField.getText()));
  132.             }
  133.         });
  134.         getContentPane().add(nachzahlungButton);
  135.  
  136.         getContentPane().revalidate();
  137.         getContentPane().repaint();
  138.     }
  139.  
  140.     private void calculateNachzahlung(int dauer) {
  141.         if (dauer > preise.length) {
  142.             double nachzahlung = 0;
  143.             for (int i = preise.length; i < dauer; i++) {
  144.                 nachzahlung += preise[i % preise.length];
  145.                 JOptionPane.showMessageDialog(this, "Die Schranke wird geöffnet.");
  146.             }
  147.  
  148.             if (nachzahlung > guthaben[index]) {
  149.                 int option = JOptionPane.showConfirmDialog(this, "Ihr Guthaben reicht nicht aus. Möchten Sie aufladen?", "Aufladen", JOptionPane.YES_NO_OPTION);
  150.                 if (option == JOptionPane.YES_OPTION) {
  151.                     performAufladen();
  152.                 } else {
  153.                     JOptionPane.showMessageDialog(this, "Das Programm wird beendet, wenden sie sich bitte an einen Mitarbeiter!.", "Fehler", JOptionPane.ERROR_MESSAGE);
  154.                     System.exit(0);
  155.                 }
  156.             }
  157.         }
  158.     }
  159.  
  160.     private void performAufladen() {
  161.         JPanel panel = new JPanel();
  162.         panel.setLayout(null);
  163.  
  164.         JLabel pinLabel = new JLabel("Bitte stecken Sie Ihre Bankkarte ein und geben Sie Ihre PIN ein.");
  165.         pinLabel.setBounds(10, 10, 400, 20);
  166.         panel.add(pinLabel);
  167.  
  168.         JTextField pinTextField = new JTextField();
  169.         pinTextField.setBounds(10, 40, 200, 20);
  170.         panel.add(pinTextField);
  171.  
  172.         JLabel betragLabel = new JLabel("Wie viel möchten Sie aufladen? (Euro)");
  173.         betragLabel.setBounds(10, 70, 250, 20);
  174.         panel.add(betragLabel);
  175.  
  176.         JTextField betragTextField = new JTextField();
  177.         betragTextField.setBounds(10, 100, 200, 20);
  178.         panel.add(betragTextField);
  179.  
  180.         JButton aufladenButton = new JButton("Aufladen");
  181.         aufladenButton.setBounds(10, 130, 100, 20);
  182.         aufladenButton.addActionListener(new ActionListener() {
  183.             public void actionPerformed(ActionEvent e) {
  184.                 int pin = Integer.parseInt(pinTextField.getText());
  185.                 if (pin == 1234) {
  186.                     double betrag = Double.parseDouble(betragTextField.getText());
  187.                     guthaben[index] += betrag;
  188.                     JOptionPane.showMessageDialog(SchwimmbadEintritt.this, String.format("Ihr neues Guthaben beträgt %.2f Euro.", guthaben[index]));
  189.                 } else {
  190.                     JOptionPane.showMessageDialog(SchwimmbadEintritt.this, "Falsche PIN.", "Fehler", JOptionPane.ERROR_MESSAGE);
  191.                 }
  192.             }
  193.         });
  194.         panel.add(aufladenButton);
  195.  
  196.         JOptionPane.showMessageDialog(this, panel, "Aufladen", JOptionPane.PLAIN_MESSAGE);
  197.     }
  198.  
  199.     public static void main(String[] args) {
  200.         SwingUtilities.invokeLater(new Runnable() {
  201.             public void run() {
  202.                 SchwimmbadEintritt app = new SchwimmbadEintritt();
  203.                 app.setVisible(true);
  204.             }
  205.         });
  206.     }
  207. }
  208.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement