Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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);
- }
- });
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement