Advertisement
rsvaco

prg pract 4 sin ampliaciones (banco)

May 12th, 2017
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.06 KB | None | 0 0
  1. import java.util.Locale;
  2. import java.util.InputMismatchException;
  3. import java.util.Scanner;
  4. import java.io.PrintWriter;
  5. import java.io.ObjectInputStream;
  6. import java.io.ObjectOutputStream;
  7. import java.io.IOException;
  8. import java.io.Serializable;
  9. /**
  10.  * Clase Banco para representar un conjunto de cuentas.
  11.  * @author PRG
  12.  * @version Curso 2016/17
  13.  */
  14. public class Banco implements Serializable {    
  15.     /** Número máximo de cuentas. */
  16.     public static final int MAX_CUENTAS = 100;
  17.     /** Array de objetos Cuenta. */
  18.     private Cuenta[] cuentas;
  19.     /** Número actual de cuentas
  20.      * y primer índice disponible en el array cuentas. */
  21.     private int numCuentas;
  22.  
  23.     /**
  24.      * Crea un banco sin cuentas
  25.      * (puede tener un máximo de MAX_CUENTAS cuentas).
  26.      */
  27.     public Banco() {
  28.         this.cuentas = new Cuenta[MAX_CUENTAS];
  29.         this.numCuentas = 0;
  30.     }
  31.  
  32.     /**
  33.      * Devuelve el número actual de cuentas.
  34.      * @return int, número actual de cuentas.
  35.      */
  36.     public int getNumCuentas() { return numCuentas; }
  37.    
  38.     /**
  39.      * Permite añadir o insertar la Cuenta c al banco.
  40.      * Si el banco está completo,
  41.      * duplica el número de cuentas que pueden haber en el banco.
  42.      * @param c Cuenta a añadir.
  43.      */
  44.     public void insertar(Cuenta c) {
  45.         if (numCuentas >= cuentas.length) { duplica(); }
  46.         cuentas[numCuentas++] = c;
  47.     }
  48.    
  49.     /**
  50.      * Duplica el tamaño del array cuentas.
  51.      */
  52.     private void duplica() {
  53.         Cuenta[] aux = new Cuenta[2 * cuentas.length];
  54.         for (int i = 0; i < cuentas.length; i++) { aux[i] = cuentas[i]; }
  55.         cuentas = aux;
  56.     }
  57.  
  58.     /**
  59.      * Devuelve la cuenta con número de cuenta n.
  60.      * Si tal cuenta no existe, devuelve null.
  61.      * @param n int que indica el número de cuenta.
  62.      * @return Cuenta, la cuenta resultado.
  63.      */
  64.     public Cuenta getCuenta(int n) {
  65.         int i = 0;
  66.         while (i < numCuentas && cuentas[i].getNumCuenta() != n) { i++; }
  67.         if (i < numCuentas) { return cuentas[i]; }
  68.         else { return null; }
  69.     }
  70.  
  71.     /**
  72.      * Devuelve una String con toda la información del banco.
  73.      * El formato es una cuenta por línea.
  74.      * @return String.
  75.      */
  76.     public String toString() {
  77.         if (numCuentas == 0) { return "No hay cuentas en el banco"; }
  78.         else {
  79.             String res = "";
  80.             for (int i = 0; i < numCuentas; i++) { res += cuentas[i] + "\n"; }
  81.             return res;
  82.         }        
  83.     }
  84.    
  85.     public void cargarFormatoTexto(Scanner f) {
  86.         while(f.hasNext()) {
  87.             try{
  88.                 int numCuenta = f.nextInt();
  89.                 double saldo = f.nextDouble();
  90.                 if (numCuenta > 99999 || numCuenta <= 9999 || saldo < 0) {
  91.                     throw new InputMismatchException ("Valor  incorrecto");
  92.                 }
  93.                 Cuenta c1 = new Cuenta(numCuenta, saldo);
  94.                 if (this.getCuenta(numCuenta) == null) { this.insertar(c1); }
  95.             }
  96.             catch (InputMismatchException e1) {  }
  97.             finally { f.nextLine(); }
  98.         }
  99.     }
  100.    
  101.     public void guardarFormatoTexto(PrintWriter f) {
  102.         f.println(this.toString());
  103.     }
  104.    
  105.     public void guardarFormatoObjeto(ObjectOutputStream f) {
  106.         try{
  107.             f.writeObject(this);
  108.         } catch (IOException e) {
  109.             System.out.println("Error al guardar el archivo binario.");
  110.         }
  111.     }
  112.    
  113.     public void cargarFormatoObjeto(ObjectInputStream f){
  114.         Banco b = null;
  115.         try {
  116.             b = (Banco) f.readObject();
  117.         }
  118.         catch (java.io.IOException e1) {
  119.             System.out.println("Error al cargar el archivo binario.");
  120.         }
  121.         catch (ClassNotFoundException e2) {}
  122.        
  123.         if (b != null){
  124.             for (int i = 0; i < b.numCuentas; i++) {
  125.                 if (this.getCuenta(b.cuentas[i].getNumCuenta()) == null) {
  126.                     this.insertar(b.cuentas[i]);
  127.                 }
  128.             }
  129.         }
  130.     }
  131. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement