I believe it is very much possible to make this code more efficient, possibly adding interfaces, inheritance or possibly divide the main class into more classes. I will improve some of the code such as blocking withdraws into negative amounts and so forth.
Main class:
import java.util.Scanner;
public class Main
{
public static void main(String [] args){
System.out.println("Welcome to the ATM: Press any key to continue");
try
{
System.in.read();
}
catch(Exception e)
{}
Main obj = new Main();
obj.mainMenu();
}
public void menuSavChe(){
System.out.println("1. Checking");
System.out.println("2. Savings");
System.out.println("3. Logout");
System.out.print("Enter Selection: ");
}
public void menuDepWith(){
System.out.println("1. Deposit");
System.out.println("2. Withdraw");
System.out.println("3. View Account Balance");
System.out.println("4. Logout");
System.out.print("Enter Selection: ");
}
public void mainMenu(){
menuSavChe();
int selection = input.nextInt();
switch(selection){
case 1:
optionChecking();
break;
case 2:
optionSavings();
break;
case 3:
logOut();
break;
}
}
public void optionChecking(){
menuDepWith();
int inputOption = input.nextInt();
switch(inputOption){
case 1:
depositChecking();
break;
case 2:
withdrawChecking();
break;
case 3:
accountInfoChecking();
break;
case 4:
logOut();
break;
}
}
public void depositChecking(){
System.out.print("Enter deposit amount: ");
double amount = input.nextDouble();
withDep.deposit(amount);
System.out.println("Savings Balance is: " + withDep.getBalance());
mainMenu();
}
public void withdrawChecking(){
System.out.print("Enter withdraw amount: ");
double amount = input.nextDouble();
withDep.withdraw(amount);
System.out.println("Savings Balance is: " + withDep.getBalance());
mainMenu();
}
public void accountInfoChecking(){
System.out.println("Checking balance is: " + withDep.getBalance());
mainMenu();
}
public void optionSavings(){
menuDepWith();
int inputoption = input.nextInt();
switch(inputoption){
case 1:
savingsDeosit();
break;
case 2:
savingsWithdraw();
break;
case 3:
accountInfoSavings();
break;
case 4:
logOut();
break;
}
}
public void savingsDeosit(){
System.out.print("Enter deposit amount: ");
double amount = input.nextDouble();
withdrawDeposit.deposit(amount);
System.out.println("Savings Balance is: " + withdrawDeposit.getBalance());
mainMenu();
}
public void savingsWithdraw(){
System.out.print("Enter withdraw amount: ");
double amount = input.nextDouble();
withdrawDeposit.withdraw(amount);
System.out.println("Savings Balance is: " + withdrawDeposit.getBalance());
mainMenu();
}
public void accountInfoSavings(){
System.out.println("Savings Balance is: " + withdrawDeposit.getBalance());
mainMenu();
}
public void logOut(){
System.exit(0);
}
Savings withdrawDeposit = new Savings();
Checking withDep= new Checking();
Scanner input = new Scanner(System.in);
}
Savings class (same as checking class):
public class Savings
{
double balance =0;
public void deposit(double amount){
balance=balance+amount;
}
public void withdraw(double amount){
balance=balance-amount;
}
public double getBalance(){
return balance;
}
}