The system must show the projected value of all accounts after a given number. w
ID: 3771724 • Letter: T
Question
The system must show the projected value of all accounts after a given number. with the option 6 , user can see the what would be the total balance including interest
Now, option 6 show the date but not the balance after interest included !!
---------------------------------------------------------------
package bankapp;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.InputMismatchException;
import java.util.Scanner;
import java.util.Calendar;
public class BankApp {
public static void main(String[] args)
{
//To maintain history
HashMap> history= new HashMap>();
Scanner s = new Scanner(System.in);
// create a calendar
Calendar cal = Calendar.getInstance();
Bank myBank = new Bank();
int month = 0, day = 0;
int user_choice = 2;
String hstr = null;
do {
// display menu to user
// ask user for his chice and validate it ( make sure it is between
// 1 and 7)
System.out.println(" WELCOME TO YOUR BANK");
System.out.println(" LET'S START WITH OPENING NEW ACCOUNT, ");
System.out.println(" Today is " + cal.getTime());
System.out.println(" --------------------------------------");
System.out.println();
System.out.println("1) Open a new bank account");
System.out.println("2) Deposit to a bank account");
System.out.println("3) Withdraw bank account");
System.out.println("4) Print short account information");
System.out
.println("5) Print the detailed account information including last transaction");
System.out.println("6) To see your Balance after 60 days ");
System.out.println("7) Quit");
System.out.println();
System.out.println(" Enter choice [1-7]: ");
user_choice = s.nextInt();
try {
switch (user_choice)
{
case 1:
System.out.println("Enter a customer name");
;
String cn = s.next();
System.out.println(" Enter an opening balance");
double d = s.nextDouble();
System.out
.println(" (1)Saving account. (2) Checking account.(3) Extended Saving account.");
int t = s.nextInt();
System.out
.println(" Congragulation !! You have created a New account ");
int accNo = myBank.openNewAccount(cn, d, t);
System.out.println(" YOUR NEW ACCOUNT NUMBER IS : "
+accNo );
Date time = cal.getTime();
System.out
.println("The day of Opening new account is today : "
+ time);
System.out.println("");
System.out.println("");
//Adding history
hstr = time.toString()+" # New Account Created for "+cn+", Account type: "+(t == 1 ?
"Saving account" : (t == 2 ? "Checking account" : "Extended Saving account") );
BankApp.add(history, accNo, hstr);
break;
case 2:
System.out.println(" Enter an ACCOUNT number");
int an = s.nextInt();
System.out.println(" Enter a DEPOSIT amount ");
double da = s.nextDouble();
myBank.depositTo(an, da);
System.out.println("Today : " + cal.getTime());
System.out
.println("------------------------------------------------");
//Adding history
hstr = cal.getTime().toString()+" # Amount Depoistied: "+da;
BankApp.add(history, an, hstr);
break;
case 3:
System.out.println(" Enter an ACCOUNT number");
int acn = s.nextInt();
System.out.println(" Enter a WITHDRAW amount ");
double wa = s.nextDouble();
myBank.withdrawFrom(acn, wa);
System.out.println("Today : " + cal.getTime());
System.out
.println("------------------------------------------------");
//Adding history
hstr = cal.getTime().toString()+" # Amount Withdrawn: "+wa;
BankApp.add(history, acn, hstr);
break;
case 4:
System.out.println(" Enter an ACCOUNT number");
int anum = s.nextInt();
myBank.printTransactionInfo(anum);
System.out.println("Today : " + cal.getTime());
System.out
.println("------------------------------------------------");
//Adding history
hstr = cal.getTime().toString()+" # Printed short account information ";
BankApp.add(history, anum, hstr);
break;
case 5:
System.out.println(" Enter an ACCOUNT number");
anum = s.nextInt();
myBank.printTransactionInfo(anum);
//detail information
BankApp.printHistory(history, anum);
System.out.println("Today : " + cal.getTime());
System.out.println("------------------------------------------------");
hstr = cal.getTime().toString()+" # Printed detailed account information ";
BankApp.add(history, anum, hstr);
break;
case 6:
System.out.println(" Enter an ACCOUNT number");
anum = s.nextInt();
myBank.printTransactionInfo(anum);
System.out.println(" Your money after 60 days ");
cal.add(Calendar.DATE, 60);
BankApp.printHistory(history, anum);
System.out.println(" 60 days later " + cal.getTime());
hstr = cal.getTime().toString()+" # Checked balance after 60 days ";
BankApp.add(history, anum, hstr);
break;
default:
System.out.println(" Good bye.");
System.out.println(" Come back again.");
return;
}
} catch (Exception exc) {
System.out.println(" Error: " + exc.getMessage());
}
} while (user_choice != '6');
}
public static void add(HashMap> history, int accNo, String log)
{
ArrayList data = history.get(accNo);
if(data == null)
{
data = new ArrayList();
}
data.add(log);
history.put(accNo, data);
}
public static void printHistory(HashMap> history, int accNo)
{
ArrayList data = history.get(accNo);
if(data != null) {
for(int i = data.size()-1; i > 0; i--)
{
System.out.println(data.get(i));
}
} else
{
System.out.println("No history found");
}
}
}
-------------------------------------------------
package bankapp;
import java.util.Date;
/**
* super class
*/
public class BankAccount extends Bank
{
protected Date dayCreated;
protected Date dateCreated;
protected int accountNum;
protected String customerName;
protected double balance;
protected double[] transactions;
protected String[] transactionsSummary;
protected int numOfTransactions;
protected static int noOfAccount = 0;
protected String accountType;
protected double projectAmount;
int days;
public BankAccount ()
{
dateCreated = new Date();
}
public String getAccountInfo() {
return "Account number: " + accountNum + " Customer Name: "
+ customerName + " Balance:" + balance + " "+" Date"+ dateCreated;
}
public String getTransactionInfo(int n) {
String transaction = transactionsSummary[n];
if (transaction == null) {
return "No transaction exists with that number. ";
} else {
return transaction;
} }
public BankAccount(String abc, double xyz)
{
dayCreated = new Date();
dateCreated= new Date();
customerName = abc;
balance = xyz;
noOfAccount++;
accountNum = noOfAccount;
transactions = new double[100];
transactions[0] = balance;
transactionsSummary = new String[100];
transactionsSummary[0] = " Your amount : " + balance
+ " was deposited. ";
numOfTransactions = 1;
}
public int getAccountNum() {
return accountNum;
}
public int getDays()
{
return days;
}
public void setDays(int d)
{
this.days = d;
}
public double getProjectAmount()
{
return projectAmount;
}
public void projectAmount(double amount)
{
if(balance < 1000)
{
balance = balance*0.01f;
} else if( balance <10000)
{
balance = balance*0.02f;
} else if ( balance > 10000)
{
balance = balance*0.03f;
}
}
public int getNumberOfTransactions() {
return numOfTransactions;
}
public void deposit(double amount) {
if (amount <= 0) {
System.err.println(" Amount to be depsited should be positive");
} else {
balance = balance + amount;
transactions[numOfTransactions] = amount;
transactionsSummary[numOfTransactions] = "$"
+ Double.toString(amount) + "was deposited.";
numOfTransactions++;
}
}
public void withdraw(double amount)
{
if (amount <= 0) {
System.out.println(" Amount to be withdrawn should be positive");
} else if (numOfTransactions <=3)
{
balance = balance - amount;
transactions[numOfTransactions] = amount;
transactionsSummary[numOfTransactions] = "$"
+ Double.toString(amount) + " was withdrawn.";
numOfTransactions++;
}
else
{
balance = balance- 0.02;
} } }
------------------------------------------------------------------------------------------
package bankapp;
import java.util.Date;
public class Bank {
protected BankAccount[] accounts;
protected int numOfAccounts;
public Bank() {
accounts = new BankAccount[100];
numOfAccounts = 0;
}
public int openNewAccount(String customerName, double openingBalance, int type) {
BankAccount b;
if (type == 1)
{
b = new SavingAccount(customerName, openingBalance, type);
}
else
{
b = new CheckingAccount(customerName, openingBalance, type);
}
accounts[numOfAccounts] = b;
numOfAccounts++;
return b.getAccountNum();
}
public void withdrawFrom(int accountNum, double amount) {
for (int i = 0; i < numOfAccounts; i++) {
if (accountNum == accounts[i].getAccountNum()) {
accounts[i].withdraw(amount);
System.out.println("Amount withdrawn successfully");
return;
}
}
System.out.println("Account number not found.");
}
public void depositTo(int accountNum, double amount) {
for (int i = 0; i < accounts.length; i++) {
if (accountNum == accounts[i].getAccountNum()) {
accounts[i].deposit(amount);
System.out.println("Amount deposited successfully");
return;
}
}
System.out.println("Account number not found.");
}
public void printAccountInfo(int accountNum) {
for (int i = 0; i < accounts.length; i++) {
if (accountNum == accounts[i].getAccountNum()) {
System.out.println(accounts[i].getAccountInfo());
return;
}
}
System.out.println("Account number no found.");
}
public void printTransactionInfo(int accountNum) {
for (int i = 0; i < accounts.length; i++) {
if (accountNum == accounts[i].getAccountNum()) {
System.out.println(accounts[i].getAccountInfo());
System.out.println("Last transaction: "
+ accounts[i].getTransactionInfo(accounts[i]
.getNumberOfTransactions() - 1));
return;
}
}
System.out.println("Account number not found. ");
}
public void printAccountInfo(int accountNum, int n) {
for (int i = 100; i < numOfAccounts; i++) {
if (accountNum == accounts[i].getAccountNum()) {
System.out.println(accounts[i].getAccountInfo());
System.out.println(accounts[i].getTransactionInfo(n));
return;
}
}
System.out.println(" Account number not found, Please try again ");
}
}
Explanation / Answer
import java.util.Scanner;
public class BankApp {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
Bank myBank = new Bank();
int user_choice = 2;
do {
//display menu to user
//ask user for his choice and validate it (make sure it is between 1 and 6)
System.out.println();
System.out.println("1) Open a new bank account");
System.out.println("2) Deposit to a bank account");
System.out.println("3) Withdraw to bank account");
System.out.println("4) Print short account information");
System.out.println("5) Print the detailed account information including last transactions");
System.out.println("6) To see your Balance after 60 days");
System.out.println("6) Quit");
System.out.println();
System.out.print("Enter choice [1-7]: ");
user_choice = s.nextInt();
switch (user_choice) {
case 1: System.out.println("Enter a customer name");
String cn = s.next();
System.out.println("Enter a opening balance");
double d = s.nextDouble();
System.out.println("Account was created and it has the following number: " + myBank.openNewAccount(cn, d));
break;
case 2: System.out.println("Enter a account number");
int an = s.nextInt();
System.out.println("Enter a deposit amount");
double da = s.nextDouble();
myBank.depositTo(an, da);
break;
case 3: System.out.println("Enter a account number");
int acn = s.nextInt();
System.out.println("Enter a withdraw amount");
double wa = s.nextDouble();
myBank.withdrawFrom(acn, wa);
break;
case 4: System.out.println("Enter a account number");
int anum = s.nextInt();
myBank.printAccountInfo(anum);
break;
case 5: System.out.println("Enter a account number");
anum = s.nextInt();
myBank.printTransactionInfo(anum);
break;
case 6: System.out.println("Enter a account number");
anum = s.nextInt();
myBank.printTransactionInfo(anum);
System.out.println(" Your money after 60 days ");
cal.add(Calendar.DATE, 60);
BankApp.printHistory(history, anum);
System.out.println(" 60 days later " + cal.getTime());
hstr = cal.getTime().toString()+" # Checked balance after 60 days ";
BankApp.add(history, anum, hstr);
break;
default: System.out.println("Invalid option.");
}
}
while (user_choice != '7');
}
static class Bank {
private BankAccount[] accounts;
private int numOfAccounts;
public Bank()
{
accounts = new BankAccount[100];
numOfAccounts = 0;
}
public int openNewAccount(String customerName, double openingBalance)
{
BankAccount b = new BankAccount(customerName, openingBalance);
accounts[numOfAccounts] = b;
numOfAccounts++;
return b.getAccountNum();
}
public void withdrawFrom(int accountNum, double amount)
{
for (int i =0; i<numOfAccounts; i++)
{
if (accountNum == accounts[i].getAccountNum() )
{
accounts[i].withdraw(amount);
System.out.println("Amount withdrawn successfully");
return;
}
}
System.out.println("Account number not found.");
}
public void depositTo(int accountNum, double amount)
{
for (int i =0; i<numOfAccounts; i++)
{
if (accountNum == accounts[i].getAccountNum())
{
accounts[i].deposit(amount);
System.out.println("Amount deposited successfully");
return;
}
}
System.out.println("Account number not found.");
}
public void printAccountInfo(int accountNum)
{
for (int i =0; i<numOfAccounts; i++)
{
if (accountNum == accounts[i].getAccountNum() )
{
System.out.println(accounts[i].getAccountInfo());
return;
}
}
System.out.println("Account number not found.");
}
public void printTransactionInfo(int accountNum) {
for (int i =0; i<numOfAccounts; i++) {
if (accountNum == accounts[i].getAccountNum() ) {
System.out.println(accounts[i].getAccountInfo());
System.out.println("Last transaction: " + accounts[i].getTransactionInfo(accounts[i].getNumberOfTransactions()-1));
return;
}
}
System.out.println("Account number not found.");
}
public void printAccountInfo(int accountNum, int n) {
for (int i =0; i<numOfAccounts; i++) {
if (accountNum == accounts[i].getAccountNum() ) {
System.out.println(accounts[i].getAccountInfo());
System.out.println(accounts[i].getTransactionInfo(n));
return;
}
}
System.out.println("Account number not found.");
}
}
static class BankAccount{
private int accountNum;
private String customerName;
private double balance;
private double[] transactions;
private String[] transactionsSummary;
private int numOfTransactions;
private static int noOfAccounts=0;
public String getAccountInfo(){
return "Account number: " + accountNum + " Customer Name: " + customerName + " Balance:" + balance +" ";
}
public String getTransactionInfo(int n)
{
String transaction = transactionsSummary[n];
if (transaction == null) {
return "No transaction exists with that number.";
}
else {
return transaction;
}
}
public BankAccount(String abc, double xyz){
customerName = abc;
balance = xyz;
noOfAccounts ++;
accountNum = noOfAccounts;
transactions = new double[100];
transactionsSummary = new String[100];
transactions[0] = balance;
transactionsSummary[0] = "A balance of : $" + Double.toString(balance) + " was deposited.";
numOfTransactions = 1;
}
public int getAccountNum(){
return accountNum;
}
public int getNumberOfTransactions() {
return numOfTransactions;
}
public void deposit(double amount){
if (amount<=0) {
System.out.println("Amount to be deposited should be positive");
} else {
balance = balance + amount;
transactions[numOfTransactions] = amount;
transactionsSummary[numOfTransactions] = "$" + Double.toString(amount) + " was deposited.";
numOfTransactions++;
}
}
public void withdraw(double amount)
{
if (amount<=0){
System.out.println("Amount to be withdrawn should be positive");
}
else
{
if (balance < amount) {
System.out.println("Insufficient balance");
} else {
balance = balance - amount;
transactions[numOfTransactions] = amount;
transactionsSummary[numOfTransactions] = "$" + Double.toString(amount) + " was withdrawn.";
numOfTransactions++;
}
}
}
}//end of class
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.