Java

Moderators: zibadian
Number of threads: 7818
Number of posts: 18218

This Forum Only
Post New Thread
Single Post View       Linear View       Threaded View      f

Report
Need help setting initial balances in Bank Account program. Posted by UNF_Steph on 17 Nov 2010 at 8:41 PM
//Demonstrates the BankAccount and derived classes

import java.text.*;			// to use Decimal Format

public class AccountDriver
{
	public static void main(String[] args)
	{
		double put_in = 500;
		double take_out = 1000;

		DecimalFormat myFormat;
		String money;
		String money_in;
		String money_out;
		boolean completed;

		// to get 2 decimals every time
		myFormat = new DecimalFormat("#.00");

		//to test the Checking Account class
		CheckingAccount myCheckingAccount =
				new CheckingAccount ("Benjamin Franklin", 1000);
		System.out.println ("Account Number "
			+ myCheckingAccount.getAccountNumber() + 
			" belonging to " + myCheckingAccount.getOwner());
		money  = myFormat.format(myCheckingAccount.getBalance());
		System.out.println ("Initial balance = $" + money);
		myCheckingAccount.deposit (put_in);
		money_in = myFormat.format(put_in);
		money  = myFormat.format(myCheckingAccount.getBalance());
		System.out.println ("After deposit of $" + money_in
			+ ",  balance = $" + money);
		completed = myCheckingAccount.withdraw(take_out);
		money_out = myFormat.format(take_out);
		money  = myFormat.format(myCheckingAccount.getBalance());
		if (completed)
		{
			System.out.println ("After withdrawal of $" + money_out
					+ ",  balance = $" + money);
		}
		else
		{
			System.out.println ("Insuffient funds to withdraw $"
					+ money_out	+ ",  balance = $" + money);
		}
		System.out.println();

		//to test the savings account class
		SavingsAccount yourAccount =
				new SavingsAccount ("William Shakespeare", 400);
		System.out.println ("Account Number "
				+ yourAccount.getAccountNumber() +
				" belonging to " + yourAccount.getOwner());
		money  = myFormat.format(yourAccount.getBalance());
		System.out.println ("Initial balance = $" + money);
		yourAccount.deposit (put_in);
		money_in = myFormat.format(put_in);
		money  = myFormat.format(yourAccount.getBalance());
		System.out.println ("After deposit of $" + money_in
				+ ",  balance = $" + money);
		completed = yourAccount.withdraw(take_out);
		money_out = myFormat.format(take_out);
		money  = myFormat.format(yourAccount.getBalance());
		if (completed)
		{
			System.out.println ("After withdrawal of $" + money_out
				+ ",  balance = $" + money);
		}
		else
		{
			System.out.println ("Insuffient funds to withdraw $"
				+ money_out	+ ",  balance = $" + money);
		}
		yourAccount.postInterest();
		money  = myFormat.format(yourAccount.getBalance());
		System.out.println ("After monthly interest has been posted,"
				+ "balance = $"	+ money);
		System.out.println();


		// to test the copy constructor of the savings account class
		SavingsAccount secondAccount =
				new SavingsAccount (yourAccount,5);
		System.out.println ("Account Number "
				+ secondAccount.getAccountNumber()+
				" belonging to " + secondAccount.getOwner());
		money  = myFormat.format(secondAccount.getBalance());
		System.out.println ("Initial balance = $" + money);
		secondAccount.deposit (put_in);
		money_in = myFormat.format(put_in);
		money  = myFormat.format(secondAccount.getBalance());
		System.out.println ("After deposit of $" + money_in
				+ ", balance = $" + money);
		secondAccount.withdraw(take_out);
		money_out = myFormat.format(take_out);
		money  = myFormat.format(secondAccount.getBalance());
		if (completed)
		{
			System.out.println ("After withdrawal of $" + money_out
					+ ",  balance = $" + money);
		}
		else
		{
			System.out.println ("Insuffient funds to withdraw $"
					+ money_out	+ ",  balance = $" + money);
		}
		System.out.println();

		//to test to make sure new accounts are numbered correctly
		CheckingAccount yourCheckingAccount =
				new CheckingAccount ("Issac Newton", 5000);
		System.out.println ("Account Number "
				+ yourCheckingAccount.getAccountNumber()
				+ " belonging to "
				+ yourCheckingAccount.getOwner());

	}
}


public abstract class BankAccount
{
	// class variable so that each account has a unique number
	protected static int numberOfAccounts = 100001;

	// current balance in the account
	private double balance;
	// name on the account
	private String owner;
	// number bank uses to identify account
	private String accountNumber;

	//default constructor
	public BankAccount()
	{
		balance = 0;
		accountNumber = numberOfAccounts + "";
		numberOfAccounts++;
	}

	//standard constructor
	public BankAccount(String name, double amount)
	{
		owner = name;
		balance = amount;
		accountNumber = numberOfAccounts + "";
		numberOfAccounts++;
	}

	//copy constructor
	public BankAccount(BankAccount oldAccount, double amount)
	{
		owner = oldAccount.owner;
		balance = amount;
		accountNumber = oldAccount.accountNumber;
	}

	//allows you to add money to the account
	public void deposit(double amount)
	{
		balance = balance + amount;
	}

	//allows you to remove money from the account if
	//enough money is available
	//returns true if the transaction was completed
	//returns false if the there was not enough money
	public boolean withdraw(double amount)
	{
		boolean completed = true;

		if (amount <= balance)
		{
			balance = balance - amount;
		}
		else
		{
			completed = false;
		}
		return completed;
	}

	//accessor method to balance
	public double getBalance()
	{
		return balance;
	}

	//accessor method to owner
	public String getOwner()
	{
		return owner;
	}

	//accessor method to account number
	public String getAccountNumber()
	{
		return accountNumber;
	}

	//mutator method to change the balance
	public void setBalance(double newBalance)
	{
		balance = newBalance;
	}

	//mutator method to change the account number
	public void setAccountNumber(String newAccountNumber)
	{
		accountNumber = newAccountNumber;
	}
}


public class SavingsAccount extends BankAccount
   {
     
	  
	  
	  public SavingsAccount(String string, double rate)
      {
      interestRate = .025; 
      }
      public SavingsAccount(SavingsAccount yourAccount, int rate) {
         
      }
      public void addInterest() 
      {
      double interest = getBalance() * interestRate / 12; 
      deposit(interest); 
      }
      private double interestRate; 

      
   public void postInterest() {
      double balance = getBalance();
      balance += (balance * interestRate);
      deposit(balance);

   }
    
   }



public class CheckingAccount extends BankAccount  {

	 private int transactionCount;

     private static final int FREE_TRANSACTIONS = 0;
     private static final double TRANSACTION_FEE = 0.15;
     
	   public CheckingAccount(String string, double initialBalance)
	{  
	      // Construct superclass
	      super(string, initialBalance);

	      // Initialize transaction count
	      transactionCount = 0; 
	}
	   public void deposit(double amount) 
	{  
	      transactionCount++;
	      // Now add amount to balance 
	      super.deposit(amount); 
	}
	  
	   public boolean withdraw(double amount) 
	{  
	      transactionCount++;
	      return super.withdraw(amount); 
	}
	   public void deductFees()
	{  
	   
	}

	     
	} 


Expected output:

Account Number 100001-10 belonging to Benjamin Franklin
Initial balance = $1000.00
After deposit of $500.00, balance = $1500.00
After withdrawal of $1000.00, balance = $499.85

Account Number 100002-0 belonging to William Shakespeare
Initial balance = $400.00
After deposit of $500.00, balance = $900.00
Insuffient funds to withdraw $1000.00, balance = $900.00
After monthly interest has been posted,balance = $901.88

Account Number 100002-1 belonging to William Shakespeare
Initial balance = $5.00
After deposit of $500.00, balance = $505.00
Insuffient funds to withdraw $1000.00, balance = $505.00

Account Number 100003-10 belonging to Issac Newton


Output I am getting:
Account Number 100001 belonging to Benjamin Franklin
Initial balance = $1000.00
After deposit of $500.00, balance = $1500.00
After withdrawal of $1000.00, balance = $500.00

Account Number 100002 belonging to null
Initial balance = $.00
After deposit of $500.00, balance = $500.00
Insuffient funds to withdraw $1000.00, balance = $500.00
After monthly interest has been posted,balance = $1012.50

Account Number 100003 belonging to null
Initial balance = $.00
After deposit of $500.00, balance = $500.00
Insuffient funds to withdraw $1000.00, balance = $500.00

Account Number 100004 belonging to Issac Newton

Report
Re: Need help setting initial balances in Bank Account program. Posted by dhillon_sarb on 11 Nov 2012 at 3:36 PM
SavingAcccount need to be change like this.

public class SavingsAccount extends BankAccount
{



public SavingsAccount(String string, double rate)
{

super(string,rate);
}
public SavingsAccount(SavingsAccount yourAccount, int rate) {
super(yourAccount,rate);
}
public void addInterest()
{
double interest = getBalance() * interestRate / 12;
deposit(interest);
}
private double interestRate;


public void postInterest() {
double balance = getBalance();
balance += (balance * interestRate);
deposit(balance);

}

}



 

Recent Jobs

Official Programmer's Heaven Blogs
Web Hosting | Browser and Social Games | Gadgets

Popular resources on Programmersheaven.com
Assembly | Basic | C | C# | C++ | Delphi | Flash | Java | JavaScript | Pascal | Perl | PHP | Python | Ruby | Visual Basic
© Copyright 2011 Programmersheaven.com - All rights reserved.
Reproduction in whole or in part, in any form or medium without express written permission is prohibited.
Violators of this policy may be subject to legal action. Please read our Terms Of Use and Privacy Statement for more information.
Operated by CommunityHeaven, a BootstrapLabs company.