Advertisement
rsvaco

prg pract 4 sin ampliaciones (gestorBanco)

May 12th, 2017
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 10.30 KB | None | 0 0
  1. import java.util.Locale;
  2. import java.util.Scanner;
  3. import java.io.File;
  4. import java.io.PrintWriter;
  5. import java.io.FileNotFoundException;
  6. import java.io.ObjectInputStream;
  7. import java.io.ObjectOutputStream;
  8. import java.io.FileOutputStream;
  9. import java.io.FileInputStream;
  10. import java.io.IOException;
  11. import java.io.Serializable;
  12. /**
  13.  * Clase GestorBanco: clase que prueba las clases Banco y Cuenta.
  14.  * Utiliza un sistema de menús para
  15.  * permitir al usuario probar e interactuar con dichas clases.
  16.  * @author PRG
  17.  * @version Curso 2016/17
  18.  */
  19. public class GestorBanco {
  20.     private static final String INFO = "Información de la cuenta: ";
  21.     private static final String ERR = "\n***ERROR***: ";
  22.    
  23.     public static void main(String[] args) {
  24.         Scanner tec = new Scanner(System.in).useLocale(Locale.US);        
  25.         Banco banco = new Banco();              
  26.         Cuenta cuenta = null, enc = null;
  27.         int op, numCuenta;
  28.         double cantidad;
  29.        
  30.         do {
  31.             op = menu(tec);
  32.             switch(op) {
  33.                 case 1: // Crear una nueva cuenta
  34.                     do {
  35.                         numCuenta = getNumCuenta(tec);
  36.                         enc = banco.getCuenta(numCuenta);
  37.                         if (enc != null) {
  38.                             System.out.println(ERR + numCuenta
  39.                                 + " ya existe!\n");
  40.                         }
  41.                     } while (enc != null);
  42.                     cantidad = getCantidad(tec);            
  43.                     cuenta = new Cuenta(numCuenta, cantidad);
  44.                     banco.insertar(cuenta);
  45.                     System.out.println(INFO + cuenta + "\n");                
  46.                     break;
  47.                    
  48.                 case 2: // Ingresar en la cuenta activa
  49.                     try{
  50.                         cantidad = getCantidad(tec);
  51.                         cuenta.ingresar(cantidad);
  52.                         System.out.println(INFO + cuenta + "\n");                  
  53.                         break;
  54.                     } catch (NullPointerException e) {
  55.                         System.out.println("ERROR: <No hay ninguna cuenta activa!"
  56.                                            + "Primero buscala o crea una "
  57.                                            + "nueva cuenta\n");
  58.                     } finally {
  59.                         break;
  60.                     }
  61.                 case 3: // Retirar de la cuenta activa
  62.                     try{
  63.                         cantidad = getCantidad(tec);
  64.                         cuenta.retirar(cantidad);
  65.                         System.out.println(INFO + cuenta + "\n");            
  66.                         break;
  67.                     } catch (NullPointerException e) {
  68.                         System.out.println("ERROR: <No hay ninguna cuenta activa!"
  69.                                            + "Primero buscala o crea una "
  70.                                            + "nueva cuenta\n");
  71.                     } catch (IllegalArgumentException e) {
  72.                        System.out.println(e.getMessage());
  73.                     } finally {
  74.                         break;
  75.                     }
  76.                
  77.                 case 4: // Buscar cuenta
  78.                     numCuenta = getNumCuenta(tec);
  79.                     enc = banco.getCuenta(numCuenta);
  80.                     if (enc != null) {
  81.                         cuenta = enc;
  82.                         System.out.println(INFO + cuenta + "\n");
  83.                     } else {
  84.                         System.out.println(ERR + numCuenta
  85.                             + " no encontrada!\n");          
  86.                     }
  87.                     break;
  88.            
  89.                 case 5: // Mostrar la cuenta activa
  90.                     try {
  91.                         String c = cuenta.toString();
  92.                         System.out.println(INFO + c + "\n");  
  93.                         break;
  94.                     } catch (NullPointerException e) {
  95.                         System.out.println("ERROR: <No hay ninguna cuenta activa!"
  96.                                            + "Primero buscala o crea una "
  97.                                            + "nueva cuenta\n");
  98.                     } finally { break; }
  99.                        
  100.                    
  101.                
  102.                 case 6: // Mostrar todas las cuentas
  103.                     System.out.print("\n\nTODAS LAS CUENTAS: \n"
  104.                         + banco + "\n\n");
  105.                     break;
  106.            
  107.                 case 7: // Pide el nombre del archivo
  108.                     /*System.out.println("En que fichero estan guardadas las cuentas?");
  109.                     String fichero = tec.nextLine();
  110.                     Scanner archivo = null;
  111.                     try {
  112.                         File f = new File(fichero);
  113.                         archivo = new Scanner(f).useLocale(Locale.US);
  114.                         banco.cargarFormatoTexto(archivo);                        
  115.                     }
  116.                     catch (FileNotFoundException e1) {
  117.                         System.out.println("No se encuentra el archivo");
  118.                     }
  119.                     finally{
  120.                         if (archivo != null) { archivo.close(); }
  121.                         break; }*/
  122.                     System.out.println("En que fichero estan guardadas las cuentas?");
  123.                     String fichero = tec.nextLine();
  124.                     ObjectInputStream entradaStream = null;
  125.                     try{
  126.                         FileInputStream f = new FileInputStream(fichero);
  127.                         entradaStream = new ObjectInputStream(f);
  128.                         banco.cargarFormatoObjeto(entradaStream);
  129.                     } catch (FileNotFoundException e1) {
  130.                         System.out.println("Fichero no encontrado.");
  131.                     } catch (IOException e2) {
  132.                         System.out.println("Error al cargar los datos.");
  133.                     }
  134.                     finally{
  135.                         if (entradaStream != null) {
  136.                             try{ entradaStream.close();}
  137.                             catch (IOException e1) {  }
  138.                         }
  139.                         break;
  140.                     }
  141.                    
  142.                 case 8:/*
  143.                     System.out.println("En que fichero quieres guardar las cuentas?");
  144.                     String guardarEn = tec.nextLine();
  145.                     PrintWriter destino = null;
  146.                     try {
  147.                         File g = new File(guardarEn);
  148.                         destino = new PrintWriter(g);
  149.                         banco.guardarFormatoTexto(destino);                        
  150.                     }
  151.                     catch (FileNotFoundException e1) {
  152.                         System.out.println("No se ha podido crear el archivo");
  153.                     }
  154.                     finally{
  155.                         if (destino != null) { destino.close(); }
  156.                         break; }
  157.                         */
  158.                     System.out.println("En que fichero quieres guardar las cuentas? ");
  159.                     String guardarEn = tec.nextLine();
  160.                     ObjectOutputStream salidaStream = null;
  161.                     try{
  162.                         FileOutputStream g = new FileOutputStream(guardarEn);
  163.                         salidaStream = new ObjectOutputStream(g);
  164.                         banco.guardarFormatoObjeto(salidaStream);
  165.                     } catch (FileNotFoundException e1) {
  166.                         System.out.println("No se ha podido crear el archivo");
  167.                     }
  168.                     finally{
  169.                         if (salidaStream != null) {
  170.                             try {
  171.                                 salidaStream.close();
  172.                             }
  173.                             catch (IOException e){}
  174.                         }
  175.                         break;
  176.                     }
  177.                    
  178.                
  179.                 case 0: // Terminar  
  180.                     System.out.println("\n\nFin!");
  181.                     break;
  182.                    
  183.                 default:
  184.                     System.out.println(ERR + "Opciones correctas: [0..6]");
  185.             }
  186.         } while(op != 0);
  187.     }
  188.  
  189.     /**
  190.      * Muestra un menú de opciones por pantalla y permite
  191.      * que el usuario elija una de ellas.
  192.      * @param tec Scanner para realizar la lectura.
  193.      * @return int, entero que representa la opción elegida.
  194.      */
  195.     private static int menu(Scanner tec) {
  196.         System.out.println("------------- MENU --------------");
  197.         System.out.println(" 0) Terminar");
  198.         System.out.println(" 1) Crear una nueva cuenta");
  199.         System.out.println(" 2) Ingresar en la cuenta activa");
  200.         System.out.println(" 3) Retirar de la cuenta activa");
  201.         System.out.println(" 4) Buscar cuenta");
  202.         System.out.println(" 5) Mostrar la cuenta activa");
  203.         System.out.println(" 6) Mostrar todas las cuentas");
  204.         System.out.println(" 7) Añadir desde archivo");
  205.         System.out.println(" 8) Guardar en un archivo");
  206.         System.out.println("---------------------------------");        
  207.         int opcion = LecturaValida.leerInt(tec,
  208.             "    Elige una opción (0 - 8): ", 0, 8);        
  209.         return opcion;
  210.     }
  211.  
  212.     /**
  213.      * Realiza la lectura de una cantidad válida (un valor real >=0).
  214.      * @param tec Scanner para realizar la lectura.
  215.      * @return double, real >=0 que representa la cantidad leída.
  216.      */
  217.     private static double getCantidad(Scanner tec) {        
  218.         double cantidad = LecturaValida.leerDoublePos(tec,
  219.             "\nIntroduce la cantidad: ");
  220.         return cantidad;
  221.     }
  222.  
  223.     /**
  224.      * Realiza la lectura de un número de cuenta válido
  225.      * (un valor entero de 5 dígitos).
  226.      * @param tec Scanner para realizar la lectura.
  227.      * @return int, entero de 5 dígitos
  228.      * que representa el número de cuenta leído.
  229.      */
  230.     private static int getNumCuenta(Scanner tec) {        
  231.         int numCuenta = LecturaValida.leerInt(tec,
  232.             "\nIntroduce el número de cuenta (de 5 dígitos): ",
  233.             10000, 99999);
  234.         return numCuenta;
  235.     }
  236.        
  237.  
  238. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement