Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Locale;
- import java.util.Scanner;
- import java.io.File;
- import java.io.PrintWriter;
- import java.io.FileNotFoundException;
- import java.io.ObjectInputStream;
- import java.io.ObjectOutputStream;
- import java.io.FileOutputStream;
- import java.io.FileInputStream;
- import java.io.IOException;
- import java.io.Serializable;
- /**
- * Clase GestorBanco: clase que prueba las clases Banco y Cuenta.
- * Utiliza un sistema de menús para
- * permitir al usuario probar e interactuar con dichas clases.
- * @author PRG
- * @version Curso 2016/17
- */
- public class GestorBanco {
- private static final String INFO = "Información de la cuenta: ";
- private static final String ERR = "\n***ERROR***: ";
- public static void main(String[] args) {
- Scanner tec = new Scanner(System.in).useLocale(Locale.US);
- Banco banco = new Banco();
- Cuenta cuenta = null, enc = null;
- int op, numCuenta;
- double cantidad;
- do {
- op = menu(tec);
- switch(op) {
- case 1: // Crear una nueva cuenta
- do {
- numCuenta = getNumCuenta(tec);
- enc = banco.getCuenta(numCuenta);
- if (enc != null) {
- System.out.println(ERR + numCuenta
- + " ya existe!\n");
- }
- } while (enc != null);
- cantidad = getCantidad(tec);
- cuenta = new Cuenta(numCuenta, cantidad);
- banco.insertar(cuenta);
- System.out.println(INFO + cuenta + "\n");
- break;
- case 2: // Ingresar en la cuenta activa
- try{
- cantidad = getCantidad(tec);
- cuenta.ingresar(cantidad);
- System.out.println(INFO + cuenta + "\n");
- break;
- } catch (NullPointerException e) {
- System.out.println("ERROR: <No hay ninguna cuenta activa!"
- + "Primero buscala o crea una "
- + "nueva cuenta\n");
- } finally {
- break;
- }
- case 3: // Retirar de la cuenta activa
- try{
- cantidad = getCantidad(tec);
- cuenta.retirar(cantidad);
- System.out.println(INFO + cuenta + "\n");
- break;
- } catch (NullPointerException e) {
- System.out.println("ERROR: <No hay ninguna cuenta activa!"
- + "Primero buscala o crea una "
- + "nueva cuenta\n");
- } catch (IllegalArgumentException e) {
- System.out.println(e.getMessage());
- } finally {
- break;
- }
- case 4: // Buscar cuenta
- numCuenta = getNumCuenta(tec);
- enc = banco.getCuenta(numCuenta);
- if (enc != null) {
- cuenta = enc;
- System.out.println(INFO + cuenta + "\n");
- } else {
- System.out.println(ERR + numCuenta
- + " no encontrada!\n");
- }
- break;
- case 5: // Mostrar la cuenta activa
- try {
- String c = cuenta.toString();
- System.out.println(INFO + c + "\n");
- break;
- } catch (NullPointerException e) {
- System.out.println("ERROR: <No hay ninguna cuenta activa!"
- + "Primero buscala o crea una "
- + "nueva cuenta\n");
- } finally { break; }
- case 6: // Mostrar todas las cuentas
- System.out.print("\n\nTODAS LAS CUENTAS: \n"
- + banco + "\n\n");
- break;
- case 7: // Pide el nombre del archivo
- /*System.out.println("En que fichero estan guardadas las cuentas?");
- String fichero = tec.nextLine();
- Scanner archivo = null;
- try {
- File f = new File(fichero);
- archivo = new Scanner(f).useLocale(Locale.US);
- banco.cargarFormatoTexto(archivo);
- }
- catch (FileNotFoundException e1) {
- System.out.println("No se encuentra el archivo");
- }
- finally{
- if (archivo != null) { archivo.close(); }
- break; }*/
- System.out.println("En que fichero estan guardadas las cuentas?");
- String fichero = tec.nextLine();
- ObjectInputStream entradaStream = null;
- try{
- FileInputStream f = new FileInputStream(fichero);
- entradaStream = new ObjectInputStream(f);
- banco.cargarFormatoObjeto(entradaStream);
- } catch (FileNotFoundException e1) {
- System.out.println("Fichero no encontrado.");
- } catch (IOException e2) {
- System.out.println("Error al cargar los datos.");
- }
- finally{
- if (entradaStream != null) {
- try{ entradaStream.close();}
- catch (IOException e1) { }
- }
- break;
- }
- case 8:/*
- System.out.println("En que fichero quieres guardar las cuentas?");
- String guardarEn = tec.nextLine();
- PrintWriter destino = null;
- try {
- File g = new File(guardarEn);
- destino = new PrintWriter(g);
- banco.guardarFormatoTexto(destino);
- }
- catch (FileNotFoundException e1) {
- System.out.println("No se ha podido crear el archivo");
- }
- finally{
- if (destino != null) { destino.close(); }
- break; }
- */
- System.out.println("En que fichero quieres guardar las cuentas? ");
- String guardarEn = tec.nextLine();
- ObjectOutputStream salidaStream = null;
- try{
- FileOutputStream g = new FileOutputStream(guardarEn);
- salidaStream = new ObjectOutputStream(g);
- banco.guardarFormatoObjeto(salidaStream);
- } catch (FileNotFoundException e1) {
- System.out.println("No se ha podido crear el archivo");
- }
- finally{
- if (salidaStream != null) {
- try {
- salidaStream.close();
- }
- catch (IOException e){}
- }
- break;
- }
- case 0: // Terminar
- System.out.println("\n\nFin!");
- break;
- default:
- System.out.println(ERR + "Opciones correctas: [0..6]");
- }
- } while(op != 0);
- }
- /**
- * Muestra un menú de opciones por pantalla y permite
- * que el usuario elija una de ellas.
- * @param tec Scanner para realizar la lectura.
- * @return int, entero que representa la opción elegida.
- */
- private static int menu(Scanner tec) {
- System.out.println("------------- MENU --------------");
- System.out.println(" 0) Terminar");
- System.out.println(" 1) Crear una nueva cuenta");
- System.out.println(" 2) Ingresar en la cuenta activa");
- System.out.println(" 3) Retirar de la cuenta activa");
- System.out.println(" 4) Buscar cuenta");
- System.out.println(" 5) Mostrar la cuenta activa");
- System.out.println(" 6) Mostrar todas las cuentas");
- System.out.println(" 7) Añadir desde archivo");
- System.out.println(" 8) Guardar en un archivo");
- System.out.println("---------------------------------");
- int opcion = LecturaValida.leerInt(tec,
- " Elige una opción (0 - 8): ", 0, 8);
- return opcion;
- }
- /**
- * Realiza la lectura de una cantidad válida (un valor real >=0).
- * @param tec Scanner para realizar la lectura.
- * @return double, real >=0 que representa la cantidad leída.
- */
- private static double getCantidad(Scanner tec) {
- double cantidad = LecturaValida.leerDoublePos(tec,
- "\nIntroduce la cantidad: ");
- return cantidad;
- }
- /**
- * Realiza la lectura de un número de cuenta válido
- * (un valor entero de 5 dígitos).
- * @param tec Scanner para realizar la lectura.
- * @return int, entero de 5 dígitos
- * que representa el número de cuenta leído.
- */
- private static int getNumCuenta(Scanner tec) {
- int numCuenta = LecturaValida.leerInt(tec,
- "\nIntroduce el número de cuenta (de 5 dígitos): ",
- 10000, 99999);
- return numCuenta;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement