📄 atm.java
字号:
// 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 + -