CECS 277
LAB ASSIGNMENT #3
Assigned date: Wed 2/10
Due date: Wed 2/17

15 points

Design a class Bank that contains a number of bank accounts. Each account has an account number and a current balance. Add an accountNumber field to the BankAccount class. Store the bank accounts in an array list. Write a readFile method of the Bank class for reading the file with the format:

accountNumber1    balance1
accountNumber2    balance2

Implement read methods for the Bank and BankAccount classes. Write a sample program to read in a file with bank accounts, then prints the account with the highest balance. If the file is not properly formatted, give the user a chance to selecct another file.

Partial design of classes BankAcount, Bank, and BankReader.

import java.util.Scanner;
import java.io.IOException;
import java.util.NoSuchElementException;

/**
A bank account has a balance that can be changed by deposits and withdrawals.
*/
public class BankAccount
{
private double balance;
private int accountNumber;

/**
Constructs a bank account with a zero balance.
*/

/**
Constructs a bank account with a given account number and a initial balance.

*/

/**
Reads an account number and balance.
@param in the scanner
@return true if the data was read
false if the end of the stream was reached
*/
public void read(Scanner in) ___________________________
{
try
{

} catch
{
    throw new _____________________________
}
}

Note: You need to check for incompatible input.

/**
Deposits money into the bank account.
@param amount the amount to deposit
*/

/**
Withdraws money from the bank account.
@param amount the amount to withdraw
*/

/**
Gets the current balance of the bank account.
@return the current balance
*/

/**
Gets the account number of the bank account.
@return the account number
*/

}

___________________________________________________

import java.util.ArrayList;
import java.io.IOException;
import java.io.File;
import java.util.Scanner;
import java.util.NoSuchElementException;

/**
A bank contains account numbers and balances of each customer.
*/
public class Bank
{
private ArrayList<BankAccount> accountList;

/**
Construct a Bank object.
*/


/**
Reads a file with account numbers and balances and adds the accounts
to the bank.
@param filename the name of the file
*/
public void readFile(String filename) ________________________
{ //Create File object, a scanner object to read data from the file.
  //call the method read
File reader = new File(filename);
Scanner in = new Scanner(reader);

try
{
    
}
finally
{

}
}

Note: call the method read

/**
Read a file with account numbers and balances and adds the accounts
to the bank.
@param in the scanner for reading the input
*/
private void read(Scanner in)___________________________
{
while (in.hasNext())
{//Create a BankAccount object
//input data for the BankAccount object
//Add the BankAccount object to the accountlist


}
}

/**
Add an account to the bank.
@param b the BankAccount reference
*/

/**
Gets the account with the highest balance.
@return the account with the highest balance
*/
public BankAccount getHighestBalance()
{


}
}

________________________________________________

import java.util.Scanner;
import java.io.IOException;
import java.io.FileNotFoundException;

/**
Reads bank accounts from a file and prints highest balance.
*/
public class BankReader
{
/**
Prompts for and reads name of file to process.
@param in Scanner from which to read
@return file name
*/
private static String getFileName(Scanner in)
{
String filename = null;
System.out.println("Enter file to process: ");
if (in.hasNext())
{
filename = in.next();
}

return filename;
}

public static void main(String[] args)
{
Bank bank = new Bank();
Scanner in = new Scanner(System.in);
String filename = getFileName(in);

boolean done = false;
while (____________________________________)
{
try
{//read the file
 
//display the highest balance


}
//catch file not found exception andget the file name again

catch
{
System.err.println(filename + " not found");
__________________________________
}
//catch for improperly formatted line and get the file name again

catch (IOException e)
{
System.err .println(filename + " contains improperly formatted line");
_______________________________________
}
}
}
}

Grading