import java.util.Date;
public class Account {
private int id=0;
private double balance=0;
private double annualIntrestRate=0;
private Date dateCreated;
public Account() {
super();
}
public Account(int id, double balance) {
super();
this.id = id;
this.balance = balance;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
public double getAnnualIntrestRate() {
return annualIntrestRate;
}
public void setAnnualIntrestRate(double annualIntrestRate) {
this.annualIntrestRate = annualIntrestRate;
}
public Date getDateCreated() {
return dateCreated;
}
public void setDateCreated(Date dateCreated) {
this.dateCreated = dateCreated;
}
public double getMonthlyInterestRate(){
return (this.getAnnualIntrestRate()/12);
}
public double getMonthlyInterest(){
return (getBalance() *getMonthlyInterestRate()/100);
}
public double withDraw(double balance){
this.setBalance(this.getBalance()-balance);
return this.getBalance();
}
public double diposite(double balance){
this.setBalance(this.getBalance()+balance);
return this.getBalance();
}
public double totalBalance(){
balance =balance + getMonthlyInterest();
return balance;
}
}
import java.util.Scanner;
import java.util.Date;
public class AtmSimulator{
public static void main(String[]args){
final Account[]accounts = new Account[10];
for(int i = accounts.length-1; 0 <= i; i --){
accounts[i] = new Account(i, 100.0);
accounts[i].setAnnualIntrestRate(2.5);
accounts[i].setDateCreated(new Date());
}
Scanner sc=new Scanner(System.in);
int[]val = {1, 2, 3, 4};
int menu;
boolean useId;
Account useAc;
String[]txt = {"Balance","Withdraw", "Deposit", "Exit"};
do{
useAc = findByID(sc, accounts);
useId = true;
do{
menu = promptMenu(sc, val, txt);
switch(menu){
case 4: useId = false; break;
case 1: balance(useAc); break;
case 2: withdraw(sc, useAc); break;
case 3: deposit(sc, useAc); break;
}
}while(useId);
}while(true);
}
private static Account findByID(Scanner sc, Account[]accounts){
do{
System.out.print("Enter account id: ");
try{
int id = new Integer(sc.nextLine());
for(Account ac : accounts){
if(ac.getId() == id){
return ac;
}
}
System.out.println("Incorrect account id!");
}catch(NumberFormatException e){
System.out.println("Not a number!");
}
}while(true);
}
private static int promptMenu(Scanner sc, int[]val, String[]txt){
int menu;
do{
System.out.println("\tMenu");
for(int i = 0; val.length > i; i ++){
System.out.printf("%d) %s.%n", val[i], txt[i]);
}
System.out.print("Enter menu: ");
try{
menu = new Integer(sc.nextLine());
for(int v : val){
if(v == menu){
return v;
}
}
}catch(NumberFormatException e){
System.out.println("Not a number!");
}
}while(true);
}
private static void balance(Account ac){
System.out.printf("A/c Dated: %s%n",ac.getDateCreated());
System.out.printf("Monthly intrest rate is: %.2f%n", ac.getMonthlyInterestRate());
System.out.printf("Monthly intrest is: %.2f%n", ac.getMonthlyInterest());
System.out.printf("The total amount is: %.2f%n", ac.totalBalance());
}
private static void withdraw(Scanner sc, Account ac){
System.out.print("Enter Amount to withdraw: ");
try{
double withdramount= new Double(sc.nextLine());
System.out.printf("The amount remain after withdraw: %.2f%n", ac.withDraw(withdramount));
}catch(NumberFormatException e){
System.out.println("Not a number!");
}
}
private static void deposit(Scanner sc, Account ac){
System.out.print("Enter Amount for diposit: ");
try{
double dipositAmount=new Double(sc.nextLine());
System.out.printf("The amount after diposit is: %.2f%n", ac.diposite(dipositAmount));
}catch(NumberFormatException e){
System.out.println("Not a number!");
}
}
}
Comments
Post a Comment