quiero saber si me puden ayudar con este codigo ayudar a resolver el codigo se trata de un inventario de cuentas de banco

este codigo se relacionan con otros que se pegan abajo

import java.io.*;
import java.util.*;
public class DirectorioCuentas {

/**
* @param args the command line arguments
*/
public static void main(String[] args)
throws IOException
{

BufferedReader bf;
int op;
Directorio ag;
bf=new BufferedReader(new InputStreamReader(System.in));
ag=new Directorio();
int c;//no cuenta
String n;//nombre
long t;//telefono
float s=0.0f;//saldo
float x;

do
{
System.out.println("1.Añadir cuenta");
System.out.println("2.Buscar cuenta");
System.out.println("3.Ingresar saldo");
System.out.println("4.Retirar saldo");
System.out.println("5.Eliminar cuenta");
System.out.println("6.Mostrar todas las "+"personas");

System.out.println("7.salir");
op=Integer.parseInt(bf.readLine());

switch(op)
{
case 1:
{//creacion de una cuenta
System.out.println("Introduzca su numero de cuenta");
c=Integer.parseInt(bf.readLine());//creo que se necesita una conversion
System.out.println("Introduzca su nombre");
n=bf.readLine();
System.out.println("Introduzca un telefono");
t=Long.parseLong(bf.readLine());//explicar esta estructura
System.out.println("ingresar saldo: ");
s=bf.read();
if(ag.agregarCuenta(c,n,t,s))
{
System.out.println("La persona se a añadido corectamente");
}
else
{
System.out.println("La persona no se ha podido añadir correctamente");
}
break;

}
case 2://buscar una cuenta
{
System.out.println("Introduzca su numero de cuenta");
c=Integer.parseInt(bf.readLine());
Cuenta p;
p=ag.buscarCuenta(c);//generando error

if(p!=null)
{
System.out.println("Sus datos son: ");
//System.out.println("cuenta"+p.getNoCuenta());
System.out.println("nombre"+p.getNombre());
System.out.println("telefono"+p.getTelefono());
System.out.println("saldo"+p.getSaldo());
}
break;
}
case 3://ingredar saldo a la cuenta
{
float nuevo;
System.out.println("Introduzca su numero de cuenta");
c=Integer.parseInt(bf.readLine());

System.out.println("introduzca la cantidad que va a depositar");
nuevo=Float.parseFloat(bf.readLine());
System.out.println("Su saldo actual es: ");
System.out.println(s+nuevo);

}
case 4://retirar saldo de la cuenta
{
System.out.println("Introduzca su numero de cuenta");
c=Integer.parseInt(bf.readLine());
float retirar;
System.out.println("Introduzca la cantidad que desea retirar");
retirar=Float.parseFloat(bf.readLine());
System.out.print("Su saldo actual es: ");
System.out.print(s-retirar);
break;
}
case 5://eliminar una cuenta
{
System.out.println("Introduzca su numero de cuenta");
c=Integer.parseInt(bf.readLine());
if(ag.eliminarCuenta(c+""))//requiere un boolean
{
System.out.println("La cuenta ha sido eliminada");

}
else
{
System.out.println("La cuenta no se pudo localizar");

}
break;
}
case 6://ver todas las cuentas creadas
{
Enumeratione=ag.total();
while(e.hasMoreElements())
{
//recuperamos los DNI uno a uno
c=Integer.parseInt(e.nextElement());
//pasamos el DNI al metodo recuperar
//para que nos de la persona
Cuenta cu =ag.buscarCuenta(c);
//imprimimos dni.nombre,telefono
System.out.println(cu.getNoCuenta()+"- "+cu.getNombre()+" - "+cu.getTelefono()+"-"+cu.getSaldo());
}
break;
}
case 7://salir del menu
{

break;
}
}

}while(op<1);
}
}

public class Cuenta
{
//atributos de la cuenta
private int no_cuenta;
private String nombre;
private long telefono;
private float saldo;

public void setNoCuenta(int c)//metodo "NoCuenta" de la clase Cuenta.que contendra una
//variable de tipo entero.
{
no_cuenta=c;
}
public int getNoCuenta()
{
return no_cuenta;
}
public void setNombre(String n)
{
nombre=n;
}
public String getNombre()
{
return nombre;
}
public void setTelefono(long t)
{
telefono=t;
}
public long getTelefono()
{
return telefono;
}
public void setSaldo(float s)
{
saldo=s;
}
public float getSaldo()
{
return saldo;
}

**************************+****************************************************************
y este es el otro

import java.util.*;
public class Directorio
{

private Hashtable tabla= new Hashtable();

public boolean agregarCuenta(int cuenta,String nombre,long telefono,float saldo)
{

if(!tabla.containsKey(cuenta+""))//inversion de la condicion, se esta negando
//la condicion busca una cuenta, no estuviera negada no permiriria
//ingresar una nueva pero coomom si esta negada nos lo permite
{
Cuenta p=new Cuenta();//se crea un nuevo objeto de la clase cuenta,
/*observese que esta cuenta con un objeto c y que no debe confundirse con la
variable c que se encuentra en la clase directorio, pues el objeto de
* esta clase solo tiene un ambito marcado */
p.setNoCuenta(cuenta);
p.setNombre(nombre);
p.setTelefono(telefono);
p.setSaldo(saldo);
tabla.put(cuenta+"", p);/*como el valor que estamos esperado es de tipo String
se tiene que realizar una conversion del tipo int al tipo string*/
return true;
}
else
{
return false;
}

}
public Cuenta buscarCuenta(int cuenta)
{
if(tabla.containsKey(cuenta+""))
{
return tabla.get(cuenta+"");

}
else
{
return null;
}
}
public boolean ingresarSaldo(float IS,float saldo)
{
if(tabla.containsKey(saldo))
{
saldo=saldo+IS;
tabla.get(saldo);
return true;
}
else
{
return false;
}

}
public boolean retirarSaldo(float saldo,float resaldo)
{
if(tabla.containsKey(saldo+""))
{
saldo=saldo-resaldo;
tabla.get(saldo+"");
return true;
}
else
{
return false;
}
}

public boolean eliminarCuenta(String cuenta)
{
if(tabla.containsKey(cuenta))
{
tabla.remove(cuenta);
return true;
}
else
{
return false;
}
}
public Enumerationtotal()
{
return tabla.keys();
}

}

}

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Urgente

Se implementará un directorio de cuentas bancarias que almacenará el nombre, teléfono, saldo y numero de cuenta de las personas que deseamos almacenar.

Las opciones que se presentarán al iniciar el programa serán las siguientes:
1. Agrear cuenta de una persona
2. Buscar una cuenta
3. Agregar dinero a la cuenta de una persona
4. Extraer dinero de la cuenta de una persona
5. Eliminar una cuenta
6. Mostrar todas las cuentas
7. Salir

Cuando se elija la opción 1, el programa solicitará el numero de cuenta, el nombre, el teléfono y el saldo inicial de la cuenta, añadiendo dichos datos a la lista (su tamaño es ilimitado). No podrá haber dos personas con el mismo numero de cuenta, por lo que en caso de darse esta circunstancia se le avisará al usuario y la persona no se añadirá. La opción 2 solicitará el numero de cuenta de la persona que se quiere localizar, si se encuentra se buscarán sus datos, sino, se indicará esta circunstancia al usuario.

La opción 3 y 4 buscará primero la cuenta del usuario y una vez ubicada se hará la operación correspondiente.
La opción 5 Eliminará una cuenta determinada.
La opción 6 mostrará todos los datos de todas las cuentas.
La opción 7 terminará el programa.

El menú de opciones deberá mostrarse repetidamente hasta que la opción 7 sea seleccionada.

Recuerde usar metodos get y set con los tipos de datos y parámetros apropiados.