⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 atm.java

📁 这是一个ATM的程序
💻 JAVA
📖 第 1 页 / 共 2 页
字号:

      // set up accountNumberJLabel
      accountNumberJLabel = new JLabel();
      accountNumberJLabel.setBounds( 25, 15, 100, 20 );
      accountNumberJLabel.setText( "Account Number:" );
      accountNumberJPanel.add( accountNumberJLabel );

      // set up accountNumberJComboBox
      accountNumberJComboBox = new JComboBox();
      accountNumberJComboBox.setBounds( 150, 12, 96, 25 );
      accountNumberJComboBox.addItem( "" );
      accountNumberJComboBox.setSelectedIndex( 0 );
      accountNumberJPanel.add( accountNumberJComboBox );
      accountNumberJComboBox.addItemListener(

         new ItemListener() // anonymous inner class
         {
            // event handler called when account number is chosen
            public void itemStateChanged( ItemEvent event )
            {
                accountNumberJComboBoxItemStateChanged( event );
            }

         } // end anonymous inner class

      ); // end call to addItemListener

      // read account numbers from database and 
      // place them in accountNumberJComboBox
      loadAccountNumbers();

      // set properties of application's window
      setTitle( "ATM" );   // set title bar string
      setSize( 375, 410 ); // set window size
      setVisible( true );  // display window

      // ensure database connection is closed
      // when user closes application window
      addWindowListener(

         new WindowAdapter() // anonymous inner class
         {
            public void windowClosing( WindowEvent event )
            {
               frameWindowClosing( event );
            }

         } // end anonymous inner class

      ); // end addWindowListener

   } // end method createUserInterface

   // process oneJButton click
   private void oneJButtonActionPerformed( ActionEvent event )
   {
      zeroToNineJButtonActionPerformed( "1" );

   } // end method oneJButtonActionPerformed

   // process twoJButton click
   private void twoJButtonActionPerformed( ActionEvent event )
   {
      zeroToNineJButtonActionPerformed( "2" );

   } // end method twoJButtonActionPerformed

   // process threeJButton click
   private void threeJButtonActionPerformed( ActionEvent event )
   {
      zeroToNineJButtonActionPerformed( "3" );

   } // end method threeJButtonActionPerformed

   // process fourJButton click
   private void fourJButtonActionPerformed( ActionEvent event )
   {
      zeroToNineJButtonActionPerformed( "4" );

   } // end method fourJButtonActionPerformed

   // process fiveJButton click
   private void fiveJButtonActionPerformed( ActionEvent event )
   {
      zeroToNineJButtonActionPerformed( "5" );

   } // end method fiveJButtonActionPerformed

   // process sixJButton click
   private void sixJButtonActionPerformed( ActionEvent event )
   {
      zeroToNineJButtonActionPerformed( "6" );

   } // end method sixJButtonActionPerformed

   // process sevenJButton click
   private void sevenJButtonActionPerformed( ActionEvent event )
   {
      zeroToNineJButtonActionPerformed( "7" );

   } // end method sevenJButtonActionPerformed

   // process eightJButton click
   private void eightJButtonActionPerformed( ActionEvent event )
   {
      zeroToNineJButtonActionPerformed( "8" );

   } // end method eightJButtonActionPerformed

   // process nineJButton click
   private void nineJButtonActionPerformed( ActionEvent event )
   {
      zeroToNineJButtonActionPerformed( "9" );

   } // end method nineJButtonActionPerformed

   // process zeroJButton click
   private void zeroJButtonActionPerformed( ActionEvent event )
   {
      zeroToNineJButtonActionPerformed( "0" );

   } // end method zeroJButtonActionPerformed

   // process clicks of a numeric JButton
   private void zeroToNineJButtonActionPerformed( String number )
   {
      // enable enterJButton if it is disabled
      if ( !enterJButton.isEnabled() )
      {
         enterJButton.setEnabled( true ); 
      }
      
      // if user is entering PIN number display * to conceal PIN
      if ( action == ENTER_PIN )
      {
         userPIN += number; // append number to current PIN
         numberJTextField.setText( 
            numberJTextField.getText() + "*" );
      }

      else // otherwise display number of JButton user clicked
      {
         numberJTextField.setText( 
            numberJTextField.getText() + number );
      }

   } // end method zeroToNineJButtonsActionPerformed

   // verify PIN or withdraw from account
   private void enterJButtonActionPerformed( ActionEvent event )
   {
      if ( action == ENTER_PIN ) // checking PIN
      {
         // get pin, first name and balance for account number
         // selected in accountNumberJComboBox
         retrieveAccountInformation(); 

         numberJTextField.setText( "" ); // clear numberJTextField

         // correct PIN number 
         if ( userPIN.equals( pin ) )
         {
            // disable enterJButton
            enterJButton.setEnabled( false ); 

            disableKeyPad(); // disable numeric JButtons

            // enable balanceJButton and withdrawJButton
            balanceJButton.setEnabled( true );
            withdrawJButton.setEnabled( true ); 

            // display status to user
            messageJTextArea.setText( 
               "Welcome " + firstName + ", select a transaction." );

         } // end if part of if...else
         
         else // wrong PIN number
         {
            // indicate that incorrect PIN was provided
            messageJTextArea.setText( 
               "Sorry, PIN number is incorrect." +
               "\nPlease re-enter the PIN number." );

            userPIN = ""; // clear user's previous PIN entry

         } // end else part of if...else

      } // end if that processes PIN

      else if ( action == WITHDRAWAL ) // process withdrawal
      {
         enterJButton.setEnabled( false ); // disable enterJButton

         disableKeyPad(); // disable numeric JButtons

         // process withdrawal
         withdraw( 
            Double.parseDouble( numberJTextField.getText() ) );

         numberJTextField.setText( "" ); // clear numberJTextField

         // enable balanceJButton and withdrawJButton
         balanceJButton.setEnabled( true );
         withdrawJButton.setEnabled( true ); 

      } // end if that processes withdrawal

   } // end method enterJButtonActionPerformed

   // display account balance
   private void balanceJButtonActionPerformed( ActionEvent event )
   {
      // define display format
      DecimalFormat dollars = new DecimalFormat( "0.00" );

      // display user's balance
      messageJTextArea.setText( "Your current balance is $" +
         dollars.format( balance ) + "." );

   } // end method balanceJButtonActionPerformed

   // display withdraw action
   private void withdrawJButtonActionPerformed( ActionEvent event )
   {
      // disable Balance and Withdraw JButtons
      balanceJButton.setEnabled( false );
      withdrawJButton.setEnabled( false );

      enableKeyPad(); // enable numeric JButtons

      // display message to user
      messageJTextArea.setText( 
         "Enter the amount you would like to withdraw" );

      // change action to indicate user will provide 
      // withdrawal amount
      action = WITHDRAWAL;

   } // end method withdrawJButtonActionPerformed

   // reset GUI
   private void doneJButtonActionPerformed( ActionEvent event )
   {
      userPIN = ""; // clear userPIN

      disableKeyPad(); // disable numeric JButtons

      // disable OK, Balance, Withdraw and Done JButtons
      enterJButton.setEnabled( false );
      balanceJButton.setEnabled( false );
      withdrawJButton.setEnabled( false );
      doneJButton.setEnabled( false );

      // enable and reset accountNumberJComboBox
      accountNumberJComboBox.setEnabled( true );
      accountNumberJComboBox.setSelectedIndex( 0 );

      // reset messageJTextArea 
      messageJTextArea.setText( 
         "Please select your account number." );

   } // end method doneJButtonActionPerformed

   // get account number and enable OK and Done JButtons
   private void accountNumberJComboBoxItemStateChanged( 
      ItemEvent event )
   {
      // get user selected account number if no transaction is
      // in process
      if ( ( event.getStateChange() == ItemEvent.SELECTED ) && 
         ( accountNumberJComboBox.getSelectedIndex() != 0 ) )
      {
         // disable accountNumberJComboBox
         accountNumberJComboBox.setEnabled( false );

         // get selected account number
         userAccountNumber = 
            ( String ) accountNumberJComboBox.getSelectedItem();
      
         // change action to indicate that user will provide
         // PIN number
         action = ENTER_PIN;
         userPIN = "";

         // prompt user to enter PIN number
         messageJTextArea.setText( 
            "Please enter your PIN number." );
 
         numberJTextField.setText( "" ); // clear numberJTextField
         enableKeyPad();                 // enable numeric JButtons
         doneJButton.setEnabled( true ); // enable doneJButton

      } // end if

   } // end method accountNumberJComboBoxItemStateChanged

   // enable numeric JButtons
   private void enableKeyPad()
   {
      oneJButton.setEnabled( true );   // enable oneJButton
      twoJButton.setEnabled( true );   // enable twoJButton
      threeJButton.setEnabled( true ); // enable threeJButton
      fourJButton.setEnabled( true );  // enable fourJButton
      fiveJButton.setEnabled( true );  // enable fiveJButton
      sixJButton.setEnabled( true );   // enable sixJButton
      sevenJButton.setEnabled( true ); // enable sevenJButton
      eightJButton.setEnabled( true ); // enable eightJButton
      nineJButton.setEnabled( true );  // enable nineJButton
      zeroJButton.setEnabled( true );  // enable zeroJButton

   } // end method enableKeyPad

   // disable numeric JButtons
   private void disableKeyPad()
   {
      oneJButton.setEnabled( false );   // disable oneJButton
      twoJButton.setEnabled( false );   // disable twoJButton
      threeJButton.setEnabled( false ); // disable threeJButton
      fourJButton.setEnabled( false );  // disable fourJButton
      fiveJButton.setEnabled( false );  // disable fiveJButton
      sixJButton.setEnabled( false );   // disable sixJButton
      sevenJButton.setEnabled( false ); // disable sevenJButton
      eightJButton.setEnabled( false ); // disable eightJButton
      nineJButton.setEnabled( false );  // disable nineJButton
      zeroJButton.setEnabled( false );  // disable zeroJButton

   } // end method disableKeyPad

   // withdraw amount from account
   private void withdraw( double withdrawAmount )
   {
      // determine if amount can be withdrawn
      if ( withdrawAmount <= balance )
      {
         balance -= withdrawAmount; // calculate new balance

         updateBalance(); // update record in database

         // define display format
         DecimalFormat dollars = new DecimalFormat( "0.00" );

         // display balance information to user
         messageJTextArea.setText( "The withdrawal amount is $" +
            dollars.format( withdrawAmount ) + "." );
      }
      else // amount cannot be withdrawn
      {
         messageJTextArea.setText(
            "The withdrawal amount is too large." +
            "\nSelect Withdraw and enter a different amount." );
      }

   } // end method withdraw

   // load account numbers to accountNumberJComboBox
   private void loadAccountNumbers()
   {

   } // end method loadAccountNumbers

   // get account information from database
   private void retrieveAccountInformation()
   {

   } // end method retrieveAccountInformation

   // update database after withdrawing
   private void updateBalance()
   {

   } // end method updateBalance

   // close statement and database connection
   private void frameWindowClosing( WindowEvent event )
   {

   }  // end method frameWindowClosing

   // method main
   public static void main( String[] args ) 
   {
      // check command-line arguments
      if ( args.length == 2 )
      {
         // get command-line arguments
         String databaseDriver = args[ 0 ];
         String databaseURL = args[ 1 ];

         // create new ATM
         ATM atm = new ATM( databaseDriver, databaseURL );
      }
      else // invalid command-line arguments
      {
         System.out.println( 
            "Usage: java ATM databaseDriver databaseURL" );
      }

   } // end method main

} // end class ATM

/**************************************************************************
 * (C) Copyright 1992-2004 by Deitel & Associates, Inc. and               *
 * Pearson Education, Inc. All Rights Reserved.                           *
 *                                                                        *
 * DISCLAIMER: The authors and publisher of this book have used their     *
 * best efforts in preparing the book. These efforts include the          *
 * development, research, and testing of the theories and programs        *
 * to determine their effectiveness. The authors and publisher make       *
 * no warranty of any kind, expressed or implied, with regard to these    *
 * programs or to the documentation contained in these books. The authors *
 * and publisher shall not be liable in any event for incidental or       *
 * consequential damages in connection with, or arising out of, the       *
 * furnishing, performance, or use of these programs.                     *
 **************************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -