import java.util.Scanner;
import static java.lang.Thread.*;
class Menu extends SubMenu implements Runnable{
private String dato;
private double suma,balance,inicial;
private int cuenta;
double ant=0;
private double recarga=0;
double res=0;
Scanner enter=new Scanner(System.in);
public void run(){
menu();
}
void menu(){
try{
System.out.println("");
espacio();
System.out.println("...........................Cajero Bancario B&C ..........................");
System.out.println("");
System.out.println("Nombre y apellido");
setDato(enter.next(),enter.next()); //lamando a setDato este metodo almacenara nombre y apellido
System.out.print("Digite su numero de cuenta: ");
setCuenta(enter.nextInt());
System.out.print("ahora el balance: ");
setIngreso(enter.nextDouble()); //este es el balance inicial
principal();
}catch(Exception e){
try{
System.out.println("Atencion: \n asegurece de que la cuenta solo sea numeros \n y el balance tambien");
sleep(5000);
Thread menu2=new Thread(new Menu());
menu2.start();
}catch(Exception a){System.out.println("Error el proceso no puede parar");}
}
}
void setDato(String nombre,String apellido){ //almacenamiento de nombre y apellido
dato=nombre+" "+apellido;}
String getDato(){
return dato;}//devuelve el nombre y apellido
public void setCuenta(int cuenta){
this.cuenta=cuenta;
}
public int getCuenta(){
return cuenta;}
public void principal(){
String letra=null;
espacio1();
System.out.println(".............................MENU PRINCIPAL................................");//este es el menu principal,donde se elige las opciones
System.out.println("");
System.out.println("Numero de cuenta: " + getCuenta() + " Cliente: " + getDato() );
System.out.println("____________________________________________________________________________");
System.out.println("");
System.out.println(" -Depositos precione \"d\"");
System.out.println(" -Cajero preciona \"c\"");
System.out.println(" -Inicializar el cajero con otra cuenta precione \"r\"");
System.out.println(" -Salir del sistema preciona \"s\"");
System.out.println("");
Esperar esp=new Esperar();
esp.start();
letra= enter.next();
if(letra !=null){
if(letra.equalsIgnoreCase("d")){
System.out.println("\n\n\n\n\n\n\n\n\n\n\n");
System.out.println("...............Depositos................");
System.out.print("nuevo deposito: ");
setIngreso(enter.nextDouble());}
else if(letra.equalsIgnoreCase("c")){opcion();}
else if(letra.equalsIgnoreCase("r")){
Menu me=new Menu();
me.menu();}
else if (letra.equalsIgnoreCase("s")){
espacio();
System.out.println("Sr.(a) "+ getDato() +" Cuenta no.# " + getCuenta());
System.out.println("Gracias por usar el cajero B&C!");
System.out.println("................................");
System.out.println("");
System.out.println("");
System.exit(0);}
else{System.out.println("Elija una de las opciones");
Menu me=new Menu();
me.principal();} }
else{
}
}
public void setIngreso(double balance){
this.balance=balance;
if(balance!=0){
suma=balance+ant;
ant=suma;}
principal();
}
double a,c;
double b=0;
public double getIngreso(){
while(suma!=0){
a=suma+b;
c=a;
break;}
return c;}
//METODOS DEL CAJERO AUTOMATICO:
public void opcion(){ //menu principal de cajero autoomatico, va hacer llamado varias veces al ejecutarse cada opcion
espacio1();
System.out.println("............................CAJERO AUTOMATICO..............................");
System.out.println("");
System.out.println("Numero de cuenta: " + getCuenta() + " Cliente: " + getDato() );
System.out.println("____________________________________________________________________________");
System.out.println("");
System.out.println(" -\"r\" retirar");
System.out.println(" -\"b\" consultar balance");
System.out.println(" -\"c\" compra de targeta");
System.out.println(" -\"a\" regresar al menu principal");
System.out.println(" -\"o\" operar con otro numero de cuenta");
System.out.println("");
System.out.print("esperando...");
String op=enter.next();
if(op.equalsIgnoreCase("r")){
retirar();}
else if(op.equalsIgnoreCase("b")){
consulta();}
else if(op.equalsIgnoreCase("c")){
menuTargeta();}
else if(op.equalsIgnoreCase("a")){
principal();}
else if(op.equalsIgnoreCase("o")){
Menu me=new Menu();
me.menu();}
else{
System.out.println("\n\n\n\n\n\n");
System.out.println("elija una de las opciones del cajero");
System.out.println("\n\n\n\n\n\n");
opcion();}
}
//METODOS DEL RETIRO
double resto1=0; //esta variable se va ausar en el metodo retirar
double resto2=0; //esta variable tambien se usara en el metodo retirar
double retiro1,retiro2;
void setResto2(){//hace un retiro en base a la suma del primer balance mas la suma de los depositos
System.out.println("\n\n\n\n\n\n\n");
System.out.println(".................................RETIRO....................................");
System.out.println("\n");
System.out.println("Numero de cuenta: " + getCuenta() + " Cliente: " + getDato());
System.out.println("___________________________________________________________________________");
System.out.println("\n");
System.out.println("Cantidad que desea retirar");
System.out.print("cant:... ");
retiro1=enter.nextDouble();
if(retiro1>getConsulta()){
System.out.println("\n\n\n\n\n\n");
System.out.println("No tienes credito suficiente para retirar!!");
System.out.println("\n\n\n\n\n\n");
opcion();
}
else{
while(retiro1!=0){
retiro2=retiro1+resto1;
resto1=retiro2;
break;
}
opcion();
}
}
double getResto2(){
return retiro2 + recarga;}
double getConsulta(){
return getIngreso() - getResto2();}
public void retirar(){
if(getIngreso()==0.0 || getConsulta()==0){
System.out.println("\n\n\n\n\n\n\n\n\n\n\n");
System.out.println("No tiene balance suficiente para retirar!!");
espacio1();
opcion();
}
else{
setResto2();
}
}
//CONSULTAS DE BALANCE
public void consulta(){
if(getConsulta()==0){
System.out.println("\n\n\n\n\n\n\n");
System.out.println("...............................CONSULTA..................................");
System.out.println("\n");
System.out.println("Numero de cuenta: " + getCuenta()+ " Cliente: " + getDato());
System.out.println("__________________________________________________________________________");
espacio1();
System.out.println("tu balance actual es de " + getConsulta() +" $RD pesos");
opcion();
}
else if(getIngreso()>1){
System.out.println("\n\n\n\n");
System.out.println("...............................CONSULTA..................................");
System.out.println(" ");
System.out.println("Numero de cuenta: "+ getCuenta()+ " Cliente: " + getDato());
System.out.println("_________________________________________________________________________");
System.out.println("");
System.out.println("");
System.out.println("tu balance actual es de " + getConsulta() +" $RD pesos");
opcion();
}
else if(getIngreso()<=0){
System.out.println("\n\n\n");
System.out.println("Tu balance actual es de 0.0 RD$ pesos");
espacio1();
opcion();
}
else{
System.out.println("\n\n\n");
System.out.println("Tu balance actual es de 0.0 RD$ pesos");
espacio1();
opcion();
}}
// METODOS DE LA RECARGA
double cant;
void menuTargeta(){
System.out.println("\n\n\n\n\n");
System.out.println("................................RECARGAS...................................");
System.out.println("");
System.out.println("Numero de cuenta: " + getCuenta()+ " Cliente: " + getDato());
System.out.println("__________________________________________________________________________");
System.out.println("\n");
System.out.println("Cantidades:");
System.out.println("100");
System.out.println("200");
System.out.println("300");
System.out.println("");
System.out.print("cant: ");
cant=enter.nextDouble();
if(getConsulta()<=0 || cant>getConsulta()){
System.out.println("\n");
System.out.println("No tienes credito suficiente para realizar esta compra!!");
System.out.println("\n\n\n\n\n\n");
opcion();
}
else{
compania();}
}
void compania(){
System.out.println("\n\n\n\n\n");
System.out.println("COMPANIA:");
System.out.println("#1 para Claro");
System.out.println("#2 para Orange");
System.out.println("#3 para Viva");
System.out.println("#4 menu anterior");
System.out.println("");
System.out.print("esperando......");
int n=enter.nextInt();
if(n==1 || n==2 || n==3){
targeta(cant); //metodo targeta donde se opera con las recarga
}
else if(n==4){
opcion();}
else{
System.out.println("\n\n\n");
System.out.println("Tiene que elegir una de las opciones");
System.out.println("\n\n\n\n");
opcion();}
}
void targeta(double rec){
if(rec==100 || rec==200 || rec==300){ //acumula la suma de todas las compras de recarga
double a;
while(rec!=0){
a=recarga+rec;
recarga=a;
break;
}
opcion();}
else{
System.out.println("\n\n\n\n");
System.out.println("Solo puede hacer recarga de 100 $RD, 200 $RD y 300 $RD");
espacio1();
opcion();}
}
}