import java.awt.*;
import java.awt.event.*;
import java.text.*;
import javax.swing.*;
import javax.swing.border.*;
import java.util.Arrays;
import java.io.*;
public class BankAccount extends JFrame {
// Make these variables publicly available
String file = ("THUS.txt");
public static String acctNumber ;
public static String custid , acctDateOpened;
public static double balance ;
private static final String EMPTY = "EMPTY";
boolean valid1, valid2, valid3, valid4, valid5, valid6, valid7 ;
int i = 1;
Account [] account = new Account [i] ;
// Setup Arrays for each account
// JPanel for user inputs
private JPanel inputDetailJPanel;
// JLabel and Jtext field for custID
private JTextField acctDateOpenedJTextField;
private JLabel acctDateOpenedJLabel;
// JLabel and Jtext field for custID
private JTextField custidJTextField;
private JLabel custidJLabel;
// JLabel and JTextField for account number
private JLabel acctNumberJLabel;
private JTextField acctNumberJTextField;
// JLabel and JTextField for balance
private JLabel balanceJLabel;
private JTextField balanceJTextField;
// JButton to create account
private JButton CreateAccountJButton;
//JButton for update
private JButton updateJButton ;
//JButton for update
private JButton interestJButton ;
//JButton to clear account
private JButton clearJButton ;
// JButton to delete account
private JButton DeleteAccountJButton;
// JLabel and JTextArea to display account details
private JLabel displayJLabel;
private JTextArea displayJTextArea;
// constructor
public BankAccount() {
createUserInterface();
}
// create and position GUI components; register event handlers
private void createUserInterface() {
// get content pane for attaching GUI components
Container contentPane = getContentPane();
// enable explicit positioning of GUI components
contentPane.setLayout(null);
// set up inputDetailJPanel
inputDetailJPanel = new JPanel();
inputDetailJPanel.setBounds(31, 31, 215, 273); // 3rd number controlds length , 4th width
inputDetailJPanel.setBorder(new TitledBorder("Account"));
inputDetailJPanel.setLayout(null);
contentPane.add(inputDetailJPanel);
// set up custIDJLabel
custidJLabel = new JLabel();
custidJLabel.setBounds(8, 32, 90, 23);
custidJLabel.setText("customer ID");
inputDetailJPanel.add(custidJLabel);
// set up cusidJTextField
custidJTextField = new JTextField();
custidJTextField.setBounds(104, 32, 88, 21);
custidJTextField.setHorizontalAlignment(JTextField.RIGHT);
inputDetailJPanel.add(custidJTextField);
// set up AccountnumJLabel
acctNumberJLabel = new JLabel();
acctNumberJLabel.setBounds(8, 56, 100, 23);
acctNumberJLabel.setText("Account Number:");
inputDetailJPanel.add(acctNumberJLabel);
// set up AccountnumTextField
acctNumberJTextField = new JTextField();
acctNumberJTextField.setBounds(112, 56, 80, 21);
acctNumberJTextField.setHorizontalAlignment(JTextField.RIGHT);
inputDetailJPanel.add(acctNumberJTextField);
// set up BalanceJLabel
balanceJLabel = new JLabel();
balanceJLabel.setBounds(8, 80, 60, 23);
balanceJLabel.setText("Balance:");
inputDetailJPanel.add(balanceJLabel);
// set up BalanceTextField
balanceJTextField = new JTextField();
balanceJTextField.setBounds(112, 80, 80, 21);
balanceJTextField.setHorizontalAlignment(JTextField.RIGHT);
inputDetailJPanel.add(balanceJTextField);
// set up DateJLabel
acctDateOpenedJLabel = new JLabel();
acctDateOpenedJLabel.setBounds(8, 100, 80, 24);
acctDateOpenedJLabel.setText("Date:");
inputDetailJPanel.add(acctDateOpenedJLabel);
// set up dateTextField
acctDateOpenedJTextField = new JTextField();
acctDateOpenedJTextField.setBounds(114, 105, 80, 21);
acctDateOpenedJTextField.setHorizontalAlignment(JTextField.RIGHT);
inputDetailJPanel.add(acctDateOpenedJTextField);
// set up CreateAccountButton
CreateAccountJButton = new JButton();
CreateAccountJButton.setBounds(112, 152, 80, 26);
CreateAccountJButton.setText("Create");
inputDetailJPanel.add(CreateAccountJButton);
CreateAccountJButton.addActionListener(
new ActionListener() {
// event handler called when CreateAccountJButton
// is clicked
public void actionPerformed(ActionEvent event) {
CreateAccountJButtonActionPerformed(event);
}
}
); // end call to addActionListener
// set up interesrAccountButton
interestJButton = new JButton();
interestJButton.setBounds(32, 238, 160, 28);
interestJButton.setText("intrest");
inputDetailJPanel.add(interestJButton);
interestJButton.addActionListener(
new ActionListener() {
// event handler called when interestAccountJButton
// is clicked
public void actionPerformed(ActionEvent event) {
interestJButtonActionPerformed(event);
}
}
); // end call to addActionListener
// set up DeleteAccountButton
DeleteAccountJButton = new JButton();
DeleteAccountJButton.setBounds(16, 152, 80, 24);
DeleteAccountJButton.setText("Delete");
inputDetailJPanel.add(DeleteAccountJButton);
DeleteAccountJButton.addActionListener(
new ActionListener() // anonymous inner class
{
// event handler called when DeleteAccountJButton
// is clicked
public void actionPerformed(ActionEvent event) {
DeleteAccountJButtonActionPerformed(event);
}
}
); // end call to addActionListener
// set up updateJButton
updateJButton = new JButton();
updateJButton.setBounds(16, 180, 176, 24);
updateJButton.setText("update Account ");
inputDetailJPanel.add(updateJButton);
updateJButton.addActionListener(
new ActionListener() // anonymous inner class
{
// event handler called when TransactionJButton
// is clicked
public void actionPerformed(ActionEvent event) {
updateJButtonActionPerformed(event);
}
} // end anonymous inner class
);
// clear Button
clearJButton = new JButton();
clearJButton.setBounds(18, 210, 176, 24);
clearJButton.setText("clear");
inputDetailJPanel.add(clearJButton);
clearJButton.addActionListener(
new ActionListener() // anonymous inner class
{
// event handler called when clearJButton
// is clicked
public void actionPerformed(ActionEvent event) {
clearJButtonListenerActionPerformed(event);
}
} // end anonymous inner class
);
// set up displayJLabel
displayJLabel = new JLabel();
displayJLabel.setBounds(250, 26, 190, 33);
displayJLabel.setText("Account Details:");
contentPane.add(displayJLabel);
// set up displayJTextArea
displayJTextArea = new JTextArea();
displayJTextArea.setBounds(260, 68, 422, 205);
displayJTextArea.setEditable(false);
contentPane.add(displayJTextArea);
// set properties of application's window
setTitle("Bank Accounts"); // set title bar string
setSize(750, 450); // set window size
setVisible(true); // display window
} // end method createUserInterface
private void CreateAccountJButtonActionPerformed(ActionEvent event) {
//invrement number in array
i++ ;
balance = Double.parseDouble(balanceJTextField.getText());
custid = custidJTextField.getText();
custid = custid.trim();
acctDateOpened = acctDateOpenedJTextField.getText();
acctDateOpened = acctDateOpened.trim();
acctNumber = acctNumberJTextField.getText();
acctNumber = acctNumber.trim();
// Check to see if each account array is populated and
// if not add account details
if (balance == 0 )
{
JOptionPane.showMessageDialog (null, "you initial balance cannot be zero ");
valid1 = false ;
}
else valid1 = true ;
if (balance < 0 )
{
valid2 = false;
JOptionPane.showMessageDialog (null, "Please enter a number for account balance!");
}
else valid2 = true;
DateTest test = new DateTest();
if (acctDateOpened.length() == 0 || test.isValidDate(acctDateOpened)== false)
{
JOptionPane.showMessageDialog (null, "Enter Account date in correct dd/mm/yyyy format");
valid3 = false;
}
else
valid3 = true;
if (custid.length() != 7)
{
JOptionPane.showMessageDialog (null, "Please enter apositive 7 digit id number");
valid4 = false;
}
else
valid4 = true;
//validate customer id number
for (int i = 0; i < custid.length(); i++)
{
if (!Character.isDigit(custid.charAt(i)))
{
valid5 = false;
JOptionPane.showMessageDialog (null, "Please enter a positive 7 digit id number");
}
else valid5 = true;
}
if (acctNumber.length() == 0)
{
JOptionPane.showMessageDialog (null, "Please enter an account number");
valid6 = false;
}
else
valid6 = true;
// validate account number is a number
for (int i = 0; i < acctNumber.length(); i++)
{
if (!Character.isDigit(acctNumber.charAt(i)))
{
valid7 = false;
JOptionPane.showMessageDialog (null, "Please enter a number for account number");
}
else valid7 = true;
}
if (valid1 == true && valid2 == true && valid3== true && valid4 ==true && valid5 == true && valid6 == true && valid7 == true )
{
try {
FileWriter fw = new FileWriter (file, true);
BufferedWriter bw = new BufferedWriter (fw);
PrintWriter outFile = new PrintWriter (bw);
account[i] = new Account ( acctNumber , balance , acctDateOpened , custid ) ;
outFile.println ("account number " + account[i].getacctNumber() );
outFile.println ("balance " + account[i].getBalance () );
outFile.println ("date opened " + account[i].getacctDate () );
outFile.println ("customer ID " + account[i].getcustid () );
outFile.println();
outFile.close();
JOptionPane.showMessageDialog (null, "Account has been saved at: " + file);
}
catch (Exception e) {
JOptionPane.showMessageDialog(null, "Error: File not found");
}
displayJTextArea.setText( "Account Number \tcustomerID \tDate Of Opening \tbalance" + " \n " + account[i] + " " + account[i].getacctNumber() + " " + account[i].getBalance () + " " + account[i].getacctDate () + " " + account[i].getcustid () );
}
}
private void clearJButtonListenerActionPerformed(ActionEvent event)
{
custidJTextField.setText(" ");
acctDateOpenedJTextField.setText(" ");
acctNumberJTextField.setText(" ");
balanceJTextField.setText(" ");
}
private void interestJButtonActionPerformed(ActionEvent event)
{
double add = Double.parseDouble ( JOptionPane.showInputDialog ("enter percentage interest") ) ;
for (int i = 0; i < account.length; i++)
{
double B = account[i].getBalance();
double amount = (add/100) * B;
balance += amount ;
}
}
private void DeleteAccountJButtonActionPerformed(ActionEvent event) {
String D = JOptionPane.showInputDialog (null, "Please enter the account number to delete the account");
for ( int c = 0 ; c < account.length; c++ )
{
if( D.equals( account[i].getacctNumber()) )
{
JOptionPane.showMessageDialog (null , "FOUND");
account[i] = null ;
} else
{ JOptionPane.showMessageDialog (null, "NOT FOUND ");
}
}
}
private void updateJButtonActionPerformed(ActionEvent event) {
}
public static void main(String[] args) {
// Populate arrays with the word EMPTY
// so we can check to see if the values are empty later
BankAccount application = new BankAccount();
application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Jeun
0
Newbie Poster
Recommended Answers
Jump to PostYou provide no information about testDate and Acount
Jump to PostThe exception you got is not about the file but in fact it's an ArrayIndexOutOfBoundsException; but the message you show is your's.
Try to depect the incremetation of th i value.
Hope it helps.
Jump to PostYou increse the value of i without incresing the size of the account array.
That is the error.
All 9 Replies
moutanna
2
Posting Whiz
Jeun
0
Newbie Poster
moutanna
2
Posting Whiz
moutanna
2
Posting Whiz
Jeun
0
Newbie Poster
moutanna
2
Posting Whiz
Jeun
0
Newbie Poster
moutanna
2
Posting Whiz
Jeun
0
Newbie Poster
Be a part of the DaniWeb community
We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.