Se requiere un programa para la Oficina de Registro de una universidad. Los datos que se manejan son los relacionados a cursos, estudiantes, grupos y cobros de matrículas.
Para los cursos se requiere conocer la sigla, el nombre y el número de créditos. Para los estudiantes, el carnet, el nombre y la edad. Los grupos son cursos (recordar herencia) que tienen un ciclo y año en el cual se imparten, así como una lista de estudiantes que lo cursan o lo cursaron.
Los estudiantes que llevan los cursos pueden ser de tres tipos (recordar herencia): estudiantes de bachillerato, maestría y doctorado. Si son de bachillerato el costo de cada crédito es de 12,500.00 y poseen becas que van de la 0 a la 5, variando de en 20% de exoneración por cada nivel de beca. Para los estudiantes de maestría el costo de cada crédito es del doble y poseen becas que van de la 0 a la 5, variando de en 10% de exoneración por cada nivel de beca. Mientras que los estudiantes de doctorado no tienen exoneración y el costo de cada crédito es del triple del valor del crédito de bachillerato. (Su solución debe aplicar el uso de funciones virtuales y clases abstractas)
Los estudiantes pueden llevar cualquier curso. Su programa debe leer dos archivos. Un archivo que contiene todos los cursos que se imparten en la universidad y un archivo con los grupos y estudiantes. La beca de cada estudiante corresponde con el último número de su carnet y en el programa cada estudiante almacena el tipo de beca en una variable.
Los estudiantes menores de 19 y 20 años corresponden a estudiantes de Bachillerato, los de 21 y 22 corresponden a estudiantes de Maestría, mientras que los estudiantes de 23 y 24 corresponden a Doctorado.
Su solución debe crear al menos dos estructuras de datos de la STL una Deque para los cursos y un Map para los grupos, recordando que cada grupo contiene su respectiva lista de estudiantes asociada. Deben potenciar no duplicar datos, hacer uso eficiente de la memoria y utilizar iteradores para recorrer las estructuras de datos.
-
Elabore un programa principal que cumpla con los siguientes requerimientos:
-
Listar todos los estudiantes.
-
Listar todos los cursos.
-
Calcular el cobro de matrícula de todos los estudiantes para un ciclo y año.
-
Mostrar los cursos que ha llevado un estudiante en un ciclo y año.
-
Calcular el cobro de matrícula de un estudiante para un ciclo y año.
-
Eliminar un grupo (solo si no tiene estudiantes).
-
Eliminar un curso (solos si no existe un grupo)
-
Eliminar estudiantes de un grupo.
-
Agregar un estudiante a un grupo.
-
Agregar un curso.
-
Agregar un grupo.
Deben aplicar todas las buenas prácticas de programación. Entregar análisis, diseño, implementación y pruebas. La presentación del proyecto es en parejas. Archivos de datos: