CAJERO AUTOMATICO
· Sobre carga de constructores
· Polimorfismo
· Herencia
· Métodos virtuales
· Métodos abstractos
· Interface
· Manejo de excepciones
Clase abstract
packagecajero;
public abstract class Operaciones {
protected String Nombre;
protected double Saldo;
protected int Numero;
protected int Contraseña;
//Atributos a utilizar
public Operaciones(String Nombre, double Saldo, int Numero, int Contraseña) {
this.Nombre = Nombre;
this.Saldo = Saldo;
this.Numero = Numero;
this.Contraseña = Contraseña;}
public Operaciones() {
this.Nombre = null;
this.Saldo = 0;
this.Numero = 0;
this.Contraseña = 0;}
public Operaciones(String Nombre) {
this.Nombre = Nombre;
this.Saldo = 500.99;}
//Sobrecarga de constructores solo el primero vamos a utilizar los demás solo.
//se han creado para demostrar el principio de sobrecarga.
public abstract boolean Retiro(double Cantidad);
public abstract boolean Transferencia(double Cantidad);
public abstract void Consulta();
publicabstract void info();
//Métodos abstractos
}
Interface
package cajero;
public interface Impuestos {
intImp = 1;
//Variables estaticas o finales
public double Impuesto(double Cantidad);
//Metodos abstracto no es necesario el uso de la palabra abstract ya que solo
//pueden existir métodos abstractos en una interface.
//Este metodo lo usamos para calcular el impuesto de cada retiro y transferencia.
}
Clase cuenta
package cajero;
public class Cuenta extends Operaciones implements Impuestos{
private int ultMovimiento=0;
//Atributo de tipo privado usado para la contraseña de la cuenta
public Cuenta(String Nombre, double Saldo, int Numero, int Contraseña) {
super(Nombre, Saldo, Numero, Contraseña);
}
//Constructor de la clase cuenta que inicializa primero al de la clase padre
public int getContraseña() {
returnContraseña;
}
public int getNumero() {
returnNumero;
}
//propiedades de lectura que usaremos en la principal
@Override
public boolean Retiro(double Cantidad) {
double Total=Cantidad+Impuesto(Cantidad);
if(super.Saldo>=Total){
super.Saldo=super.Saldo-Total;
this.ultMovimiento = 1;
return true;}
else{ return false;}
}//Fin de metodo Retiro
@Override
public boolean Transferencia(double Cantidad) {
double Total=Cantidad+Impuesto(Cantidad);
if(super.Saldo>=Total){
super.Saldo=super.Saldo-Total;
this.ultMovimiento = 2;
return true;}
else{ return false;}
}//Fin de metodo Transferencia
@Override
public void Consulta() {
System.out.println("Señor/a "+super.Nombre);
System.out.println("Su saldo es "+super.Saldo);
System.out.println("Su numero de cuenta es "+this.Numero);
if(this.ultMovimiento==1){System.out.println("Su ultimo movimiento fue un Retiro");}
if(this.ultMovimiento==2){System.out.println("Su ultimo movimiento fue una Transferencia");}
}//Fin del metodo Consulta
@Override
public void info() {
System.out.println("Bienvenido Señor/a "+super.Nombre);
System.out.println("Su saldo es "+super.Saldo);
System.out.println("Que operacion desea realizar ?");
System.out.println("1.-Retiro 2.-Transferencia 3.-Consulta 4.-Salir");
}
@Override
public double Impuesto(double Cantidad) {return super.Saldo*Imp/100; }}
clase principal
package cajero;
import java.io.*;
public class CAJERO {
public static InputStreamReader Leer = new InputStreamReader(System.in);
public static BufferedReaderTeclado = new BufferedReader(Leer);
public static void main(String[] args) throws IOException {
intnc=0,h=0,cont,nIntentos=0,mov=0,op;
booleanerror,enc=false;
//Variables a usar en la clase ejecutora
Operaciones [] Base =new Operaciones[5];
Base[h++]=new Cuenta("Danny" ,500.56,1234,1109);
Base[h++]=new Cuenta("Nadia" ,600.15,1235,1111);
Base[h++]=new Cuenta("Gissel" ,770.46,1236,2222);
Base[h++]=new Cuenta("Roberto",444.46,1237,3333);
Base[h++]=new Cuenta("Maliza" ,888.26,1238,4444);
//Creamos 5 cuentas
do{
System.out.println("Bienvenido");
do{
error=false;
System.out.println("Ingrese su numero de cuenta");
try{
nc=Integer.parseInt(Teclado.readLine());
}
catch(NumberFormatException e){
error=true;
System.out.println("No debe ingresar ninguna letra");
System.out.println("Vuelva a ingresar su numero de cuenta");
}
}while(error);
//Bloque para el ingreso del número de cuenta el cual solo admite números
for(int i=0;i<5;i++){
if (Base[i].Numero==nc){
h=i;
enc=true;}}
if(enc==false){System.out.println("No se encuentra el numero de cuenta"); }
//Bloque que realiza la busqueda del numero de cuenta ingresado
}while(enc==false);
System.out.println("Ingrese su contraseña");
do{
enc=false;
nIntentos++;
cont=Integer.parseInt(Teclado.readLine());
if (Base[h].Contraseña==cont){
System.out.println("Contraseña correcta");
enc=true;
}
else {System.out.println("Contraseña incorrecta");
System.out.println("Vuelva a ingresarla"); }
}while((nIntentos<3)&&(!enc));
if(!enc){System.out.println("Ha excedido el numero de intentos");
System.out.println("No puede seguir usando el cajero");
System.exit(0);}
//Bloque que realiza la funcion de comprobar la contaseña ingresada por el
//usuario permitiendole solo un maximo de tres intentos
do{
Base[h].info();
do{
System.out.println("Escoja una opcion entre 1 y 4");
op=Integer.parseInt(Teclado.readLine());}while((op<1)||(op>4));
switch(op){
case 1:
do{error=false;
System.out.println("Ingrese la cantidad");
try{
mov=Integer.parseInt(Teclado.readLine());}
catch(NumberFormatException e){
System.out.println("Ingrese solo numeros");
error =true;
}
}while(error);
if((mov<5)||(mov>200)){
System.out.println("El monto minimo de retiro es de 5$ y el max de 200$");
}//LLave del if
else{
if(Base[h].Retiro(mov)){System.out.println("Operacion realizada con exito");}
else{System.out.println("No cuenta con saldo suficiente");}
}//llave del else
break;
case 2:
do{error=false;
System.out.println("Ingrese la cantidad");
try{
mov=Integer.parseInt(Teclado.readLine());}
catch(NumberFormatException e){
System.out.println("Ingrese solo numeros");
error =true;
}
}while(error);
do{
error=false;
System.out.println("Ingrese numero de cuenta a la que va a enviar");
try{
nc=Integer.parseInt(Teclado.readLine());
}
catch(NumberFormatException e){
error=true;
System.out.println("No debe ingresar ninguna letra");
System.out.println("Vuelva a ingresar el numero de cuenta");
}
}while(error);
if(Base[h].Transferencia(mov)){System.out.println("Operacion realizada con exito");}
else{System.out.println("No cuenta con saldo suficiente");}
break;
case 3:
Base[h].Consulta();
break;
}//switch
}while(op<4)}}
Suscribirse a:
Enviar comentarios (Atom)
5 comentarios:
me pasariar tu proyecto x correo por fas???
isaac_lone@hotmail.com
hola como estas tienes un numero de contacto , o algun video tutorial del desarrollo de tu proyecto me puedes colaborar
Hola, hay manera de agregar multihilo e interfaz grafica al proyecto.
Gracias
hola amigo me podrias pasar tu proyector por correo? saul_alvar_4@hotamil.com
Publicar un comentario