Вы находитесь на странице: 1из 9

David Gonzlez Segundo ING.

Jos Lus Garca Morales PROGRAMACION ORIENTADA A OBJETOS Fecha: 09/Octubre/2013 Manipulacin de un archivo de texto con ArrayList En el siguiente cdigo primero se tiene que leer los registros del archivo parciales.txt, primero se abre el archivo para lectura y despus los pasa a un objeto de tipo ArrayList, el archivo que tiene que cerrar despus de que lee los registros. Para escribir en el archivo, igualmente se tiene que abrir el archivo, despus se piden los datos por teclado y se agregan al archivo de texto, para que se escriban los registros se tiene que cerrar el archivo. Cdigo fuente package pruebaparcial; public class Parcial { private int no_cuenta; private String nombre; private double primer_parcial; private double segundo_parcial; private double promedio; private String estado; public Parcial() { this(0,"",0.0,0.0,0.0,""); } public Parcial(int nc, String no, double pp, double sp, double pr, String es) { setNoCuenta(nc); setNombre(no); setPparcial(pp); setSparcial(sp); setPromedio(pr); setEstado(es); } public Parcial(int nc, String no, double pp, double sp) { setNoCuenta(nc);

setNombre(no); setPparcial(pp); setSparcial(sp); setPromedio(); setEstado(); } public void setNoCuenta(int nc) { no_cuenta=nc; } public int getNoCuenta() { return no_cuenta; } public void setNombre(String no) { nombre=no; } public String getNombre() { return nombre; } public void setPparcial(double pp) { primer_parcial=pp; } public double getPparcial() { return primer_parcial; } public void setSparcial(double sp) { segundo_parcial=sp; } public double getSparcial() { return segundo_parcial; } public void setPromedio(double es) { promedio=es; } public void setPromedio() { promedio=(primer_parcial+segundo_parcial)/2; } public double getPromedio()

{ return promedio; } public void setEstado(String es) { estado=es; } public void setEstado() { if(promedio<6 && promedio>=0) { estado="\"REPROBADO\""; } else if(promedio>=6 && promedio <8) { estado= "\"FINAL\""; } else if(promedio>=8 && promedio <10) { estado= "\"EXCENTO\""; } else if(promedio==10) { estado= "\"EXCELENTE_ALUMNO\""; } } public String getEstado() { return estado; } } package pruebaparcial; import java.io.File; import java.io.FileNotFoundException; import java.util.ArrayList; import java.util.NoSuchElementException; import java.util.Scanner; import java.util.Formatter; import java.util.FormatterClosedException; public class RegistroParcial { ArrayList<Parcial> listaParciales=new ArrayList<Parcial>(); public void meterDatosALista(int nc, String no, double pp, double sp, double pr, String es)

{ Parcial nuevo=new Parcial(nc, no, pp, sp, pr, es); listaParciales.add(nuevo); } public void mostrarLista() { System.out.printf("%-10s%-12s%-12s%-10s%-12s%-12s\n", "Nombre", "1P", "2P", "Promedio", "Estado"); /*System.out.printf( "%-10s%-12s%-12s%10s\n", "Cuenta", "Nombre", "Apellido", "Balance" );*/ for(Parcial record:listaParciales) { System.out.printf("%-10d%-12s%-12.2f%-10.2f%-12.2f%-12s\n", record.getNoCuenta(), record.getNombre(), record.getPparcial(), record.getSparcial(), record.getPromedio(), record.getEstado()); } } private Scanner input; public void abrirArchivoLectura() { try { input = new Scanner( new File( "parciales.txt" ) ); } // end try catch ( FileNotFoundException fileNotFoundException ) { System.err.println( "Error al abrir el archivo." ); System.exit( 1 ); } // end catch } public void leeRegistros() { try { while ( input.hasNext() ) { //mete los registros a la lista meterDatosALista(input.nextInt(), input.next(), input.nextDouble(), input.nextDouble(), input.nextDouble(), input.next()); } // end while

"No_Cuenta",

} // end try catch ( NoSuchElementException elementException ) { System.err.println( "Formato de archivo incorrecto." ); input.close(); System.exit( 1 ); } // end catch catch ( IllegalStateException stateException ) { System.err.println( "Error al leer de archivo." ); System.exit( 1 ); } // end catch } public void cerrarArchivoLectura() { if ( input != null ) input.close(); // cierra el archivo } //se ponen los procedimientos de escritura private Formatter salida; public void abrirArchivoEscritura() { try { salida = new Formatter( "parciales.txt" ); } // end try catch ( SecurityException securityException ) { System.err.println("No tienes permisos de escritura sobre el archivo." ); System.exit( 1 ); } // end catch catch ( FileNotFoundException filesNotFoundException ) { System.err.println( "Error al crear el archivo." ); System.exit( 1 ); } // end catch } public void agregarRegistros() { try { for(Parcial registro:listaParciales) { salida.format("%d %s %.2f %.2f %.2f %s\n" , registro.getNoCuenta(), registro.getNombre(), registro.getPparcial(), registro.getSparcial(), registro.getPromedio(),

registro.getEstado()); } } catch ( FormatterClosedException formatterClosedException ) { System.err.println( "Error al escribir el archivo." ); return; } // end catch catch ( NoSuchElementException elementException ) { System.err.println( "Entrada no valida. Intente nuevamente." ); input.nextLine(); } // end catch } public void cerrarArchivoEscritura() { if ( salida != null ) salida.close(); } } package pruebaparcial; import java.util.Scanner; public class PruebaParcial { public static void main(String[] args) { RegistroParcial aplicacion = new RegistroParcial(); //para introducir datos y ocupar la clase Parcial Parcial datos=new Parcial(); aplicacion.abrirArchivoLectura(); aplicacion.leeRegistros(); aplicacion.cerrarArchivoLectura(); int opcion; Scanner input = new Scanner( System.in ); do { System.out.println("1.-Meter datos"); System.out.println("2.-Mostrar datos"); System.out.println("3.- Salir"); System.out.println("Dame tu opcion:"); opcion=input.nextInt();

switch(opcion) { case 1: /*int cuenta; String nombre, estado; double pparcial, sparcial, promedio;*/ System.out.println("Dame el numero de cuenta:"); datos.setNoCuenta(input.nextInt()); System.out.println("Dame el nombre:"); datos.setNombre(input.next()); System.out.println("Dame primer parcial"); datos.setPparcial(input.nextDouble()); System.out.println("Dame segundo parcial"); datos.setSparcial(input.nextDouble()); datos.setPromedio(); datos.setEstado(); aplicacion.meterDatosALista(datos.getNoCuenta(), datos.getNombre(), datos.getPparcial(), datos.getSparcial(), datos.getPromedio(), datos.getEstado()); System.out.printf("Agregando\n"+"No_Cuenta:%d Nombre:%s 1P:%.2f 2P:%.2f Promedio:%.2f Estado:%s\n", datos.getNoCuenta(), datos.getNombre(), datos.getPparcial(), datos.getSparcial(), datos.getPromedio(), datos.getEstado()); aplicacion.abrirArchivoEscritura(); aplicacion.agregarRegistros(); aplicacion.cerrarArchivoEscritura(); break; case 2: aplicacion.mostrarLista(); break; case 3: //salir break; } }while(opcion!=3); } }

Salida Primero se le agregan unos registros al archivo, ya que inicialmente est en blanco, al iniciar el programa se muestran 2 registros

se agrega otro registro y se muestra

Se muestran los registros completos por pantalla

Вам также может понравиться