ListaTest.java
Created with JBuilder
import java.io.*;
import java.util.*;
import es.*;
/**
 * ListaTest Aplicación que genera los datos de un test a partir de un
 *  fichero de entrada y produce el resultado en un fichero de salida
 *
 * @author Fco Gutiérrez MAQUINA: propia
 * @version 1.0 4/2/2001
 */
public class ListaTest
{

    /**
     * main    Método principal de la aplicación
     *
     * @param  args que debe incluri dos argumentos, fichero  de entrada y
     *         fichero de salida
     * @return
     */
    public static void main(String [] args)  {
      // Mapa para guardar los alumnos ordenados por nombre
      SortedMap alumnos = new TreeMap();
      try
      {
        String fichero = args[0]; // fichero de entrada
        String salida  = args[1]; // fichero de salida
        // Se genera el flujo de entrada
        BufferedReader fr = new BufferedReader(new FileReader(fichero));
        // y el flujo de salida
        PrintWriter pw    = new PrintWriter(new FileWriter(salida));
        // Creamos un objeto Test desde el flujo de entrada
        Test test = creaTest(fr);
        // Leemos linea a linea.
        String linea = fr.readLine();
        while (linea!=null)
        {
            // Cada linea contiene los datos de un alumno
            Alumno al  = creaAlumno(linea);
            // Se corrige su test
            int puntos = al.corrige(test);
            // Se almacena el nombre junto a su puntuacióon
            alumnos.put(al.nombre(),new Integer(puntos));
            linea = fr.readLine();
        }
        fr.close();
        // Fin de entrada de datos
        // Comeinza la salida de datos.
        ES.newOutput(pw);
        ES.writeString("   Nombre Alumno ",35,ES.LEFT);
        ES.writeStringLn("Puntuación",15,ES.LEFT);
        // Se construye un iterador sobre las entradas del mapa
        Iterator it = alumnos.entrySet().iterator();
        while (it.hasNext())
        {
            Map.Entry me = (Map.Entry)it.next();
            ES.writeString((String)me.getKey(),35,ES.LEFT);
            ES.writeIntLn(((Integer)me.getValue()).intValue(),5);
        }
        pw.close();
        // Fin de salida
      // Control de excepciones
      } catch (ArrayIndexOutOfBoundsException e) {
        System.err.println("Error en uso: ListaTest entrada salida");
      } catch (IOException e) {
        System.out.println("Error de E/S: "+e.getMessage());
      } catch (Exception e) {
        System.err.println("Error en formato fichero: "+e.getMessage());
      }
    }

    /**
     * creaTest    Recoge los datos del flujo de entrada y crea un objeto test
     *
     * @param  fr  El Flujo de lectura
     * @return     El Test generado.
     */
    public static Test creaTest(BufferedReader fr) throws Exception {
        // Valor de las acertadas
        int vp = (new Integer(fr.readLine())).intValue();
        // Valor de las falladas
        int vn = (new Integer(fr.readLine())).intValue();
        // Numero de modelos
        int nm = (new Integer(fr.readLine())).intValue();
        // Número de preguntas por modelo
        int np = (new Integer(fr.readLine())).intValue();
        // Se inicializa Test
        Test.ValorPositivas(vp);
        Test.ValorNegativas(vn);
        // Se crea un objeto test
        Test test = new Test(nm,np);
        // Se completan las respuestas de cada modelo
        for(int i=0;i<nm;i++) {
            String modelo = fr.readLine();
            test.respModelo(i+1,modelo);
        }
        return test;
    }

    /**
     * creaAlumno  Crea un alumno con la información dada en un String
     *
     * @param  linea El String con la información del alumno
     *               numModelo:respuestas:nombre
     * @return       El alumno generado
     */
    public static Alumno creaAlumno(String linea) {
        StringTokenizer st = new StringTokenizer(linea,":");
        // EL número de modelo
        int nm = (new Integer(st.nextToken())).intValue();
        // Las repsuestas
        String md = st.nextToken();
        // El nombre del alumno
        String nb = st.nextToken();
        return new Alumno(nb,nm,md);
    }
}


ListaTest.java
Created with JBuilder