import java.io.*;

public class Ejercicio2
{
  public static void estadística(String nombreFichero)
    throws IOException
  {
    PrintStream flujoS = System.out; // salida estándar
    DataInputStream dis = null;// entrada de datos desde el fichero
    File fichero = null;       // objeto que identifica el fichero
    // Declarar contadores
    int ss = 0, ap = 0, nt = 0, sb = 0, total = 0;
    
    try
    {
      // Crear un objeto File que identifique al fichero
      fichero = new File(nombreFichero);

      // Verificar si el fichero existe
      if (fichero.exists())
      {
        // Si existe, abrir un flujo desde el mismo
        dis = new DataInputStream(new BufferedInputStream(
                                  new FileInputStream(fichero)));
        
        // Declarar variables
        CRegistro reg = new CRegistro();
        String calificación;

        do
        {
          // Leer un nº de matrícula, un nombre y una calificación desde
          // el fichero. Cuando se alcance el final del fichero Java
          // lanzará una excepción del tipo EOFException.
          reg.asignarNumMat(dis.readInt());
          reg.asignarNombre(dis.readUTF());
          reg.asignarCalificación(dis.readUTF());
          
          // Contar SS, AP, NT y SB
          calificación = reg.obtenerCalificación();
          if (calificación.compareTo("SS") == 0)
            ss++;
          else if (calificación.compareTo("AP") == 0)
            ap++;
          else if (calificación.compareTo("NT") == 0)
            nt++;
          else if (calificación.compareTo("SB") == 0)
            sb++;
        }
        while (true);
      }
      else
        flujoS.println("El fichero no existe");
    }
    catch(EOFException e)
    {
      flujoS.println("Fin del fichero");
      total = ss + ap + nt + sb;
      flujoS.println("Suspensos:      " + (100F*ss/total) + "%");
      flujoS.println("Aprobados:      " + (100F*ap/total) + "%");
      flujoS.println("Notables:       " + (100F*nt/total) + "%");
      flujoS.println("Sobresalientes: " + (100F*sb/total) + "%");
    }
    finally
    {
      // Cerrar el flujo
      if (dis != null) dis.close();
    }
  }
  
  public static void main(String[] args)
  {
    if (args.length != 1)
      System.err.println("Sintaxis: java Ejercicio2 " +
                         "<fichero fuente>");
    else
    {
      try
      {
        estadística(args[0]);
      }
      catch(IOException e)
      {
        System.out.println("Error: " + e.getMessage());
      }
    }
  }
}
