package assignment5;
import java.util.ArrayList;
import java.util.Scanner;
// import assignment5.Account;
public class ATM {
private ArrayList<Account> accounts = new ArrayList<>();
private String name;
public ATM() {
for(int i = 0; i < 10; i++) {
Account addAccount = new Account("a", i, 100);
// addAccount.setBalance(100);
accounts.add(addAccount);
}
}
public void start() {
System.out.print("\nEnter an id: ");
Scanner in = new Scanner(System.in);
int id = in.nextInt();
System.out.print("\nEnter a name: ");
Scanner inName = new Scanner(System.in);
this.name = inName.nextLine();
if(id >= 0 && id <= 10) {
System.out.println("\nMain menu");
System.out.println("1: check balance");
System.out.println("2: withdraw");
System.out.println("3: deposit");
System.out.println("4: check transaction");
System.out.println("5: exit");
System.out.print("Enter a choice: ");
int choice = in.nextInt();
choose(this.name, id, choice);
}
}
public void chooseChoice(int id) {
System.out.println("\nMain menu");
System.out.println("1: check balance");
System.out.println("2: withdraw");
System.out.println("3: deposit");
System.out.println("4: check transaction");
System.out.println("5: exit");
System.out.print("Enter a choice: ");
Scanner in = new Scanner(System.in);
int choice = in.nextInt();
choose(this.name, id, choice);
}
public void choose(String name, int id, int choice) {
Scanner in = new Scanner(System.in);
Account choosedAccount = (Account)accounts.get(id);
switch (choice) {
case 1:
System.out.println("The balance is " + choosedAccount.getBalance());
chooseChoice(id);
break;
case 2:
System.out.print("Enter an amount to withdraw: ");
double withdrawAmount = in.nextDouble();
choosedAccount.setBalance(choosedAccount.getBalance() - withdrawAmount);
System.out.print("Enter a description to withdraw: ");
Scanner inString = new Scanner(System.in);
String description = inString.nextLine();
choosedAccount.addTransaction('W', withdrawAmount, choosedAccount.getBalance(), description);
chooseChoice(id);
break;
case 3:
System.out.print("Enter an amount to deposit:" );
double depositAmount = in.nextDouble();
choosedAccount.setBalance(choosedAccount.getBalance() + depositAmount);
System.out.print("Enter a description to deposit: ");
Scanner depositString = new Scanner(System.in);
String depositDescription = depositString.nextLine();
choosedAccount.addTransaction('D', depositAmount, choosedAccount.getBalance(), depositDescription);
chooseChoice(id);
break;
case 4:
ArrayList accountTransactions = choosedAccount.getTransactions();
for(int i = 0; i < accountTransactions.size(); i++) {
Transaction transaction = (Transaction)accountTransactions.get(i);
System.out.println(name + " " + transaction.getType() + " " + transaction.getAmount() + " " + transaction.getBalance()+ " " + transaction.getDescription() + " "+ transaction.getDate());
}
chooseChoice(id);
break;
case 5:
start();
break;
default:
System.out.println("input incorrect!");
chooseChoice(id);
break;
}
}
public static void main(String[] args) {
ATM atm = new ATM();
atm.start();
}
}