
import java.util.ArrayList;
import java.util.Iterator;

public class Escuela {
    private String Nombre;
    private ArrayList <alumno> Alumnos; // private alumno Alumnos[];
    
    Escuela(String unNombre){
        Nombre = unNombre;
        Alumnos = new ArrayList <alumno> (); // new alumno[10]
    }
    
    void Agrega_alumno(alumno unAlumno) {
        Alumnos.add(unAlumno);
    }
    
    void Lista_Alumnos(String unaMateria) {
        
        System.out.println("");
        System.out.println("Los Alumnos inscritos en la Materia de " + unaMateria);
        int n=1;

        for (alumno k: Alumnos) {
            if(k.cursa(unaMateria)) {
                System.out.println(n++ + ".- " + k.get_Nombre());
            }
        }
        System.out.println("");
    }
    
    public alumno Mejor_Promedio(){
        Iterator i;
        alumno x;
        int k =0, mejorK = -1;
        double mejorPromedio =0;
        
        for(i=Alumnos.iterator(); i.hasNext();) {
            x = (alumno)i.next();
            if(mejorPromedio < x.promedio()) {
                mejorPromedio = x.promedio();
                mejorK = k;
            }
            k++;
        }
        
        return Alumnos.get(mejorK);
    }
    
    static public void main(String args[]) {
        alumno aux;
        Escuela e = new Escuela("Mi escuelita");
        
        aux = new alumno("Juan Pérez", "122kka");
        aux.Agregar_Materia("Física", 10);
        aux.Agregar_Materia("Química", 8);
        aux.Agregar_Materia("Programación", 7);
        aux.Agregar_Materia("Métodos Numéricos", 8);
        
        e.Agrega_alumno(aux);
        
        aux = new alumno("Manuel Juárez", "8sdsdf8");
        aux.Agregar_Materia("Física", 9);
        aux.Agregar_Materia("Química", 8);
        aux.Agregar_Materia("Programación", 8);
        aux.Agregar_Materia("Métodos Numéricos", 8);
        aux.Agregar_Materia("Algebra", 6);
        aux.Agregar_Materia("Circuitos", 10);
        aux.Agregar_Materia("Matemáticas", 8);
        
        e.Agrega_alumno(aux);
        
        aux = new alumno("Carla Medina", "02392d");
        aux.Agregar_Materia("Matemáticas", 10);
        aux.Agregar_Materia("Química", 8);
        aux.Agregar_Materia("Control", 7);
        aux.Agregar_Materia("Electrónica I", 7);
        aux.Agregar_Materia("Métodos Numéricos", 8);
        
        e.Agrega_alumno(aux);
        
        aux = new alumno("María Luisa Rico", "9234jja");
        aux.Agregar_Materia("Diseño", 8);
        aux.Agregar_Materia("Matemáticas", 8);
        
        e.Agrega_alumno(aux);
        
        aux = new alumno("Luis Manuel Arce", "8234jf");
        aux.Agregar_Materia("Física", 8);
        aux.Agregar_Materia("Matemáticas", 9);
        aux.Agregar_Materia("Álgebra", 7);
        
        e.Agrega_alumno(aux);        
        
        e.Lista_Alumnos("Matemáticas");
        e.Lista_Alumnos("Química");
        e.Lista_Alumnos("Física");    
        
        System.out.print("El mejor Promedio es ");
        System.out.println(e.Mejor_Promedio().get_Nombre());

    }
}
