Programa en c++ que trata de creación de grupos de estudiantes, con alta de alumnos, calificaciones, promedios, alumnos reprobados, aprobados y totales

C++:
  1. #include<iostream>
  2. #include<vector>
  3. #include<string>
  4. #include<cstdlib>
  5.  
  6. using namespace std;
  7.  
  8. class Grupo
  9. {
  10.   private:
  11.           vector<string> alumnos;
  12.           vector<int> calificaciones;
  13.           string nombre;
  14.          
  15.           static const int REPROBATORIA = 5;
  16.   public
  17.   int size;       
  18.          Grupo(): nombre(""), size(0)
  19.          {
  20.                  
  21.          }   
  22.          Grupo(string nombre) : nombre(nombre), size(0)
  23.          {
  24.                      
  25.          }
  26.          
  27.          void insertaAlumno(string alumno, int calificacion)
  28.          {
  29.               alumnos.push_back(alumno);
  30.               calificaciones.push_back(calificacion);
  31.               size++;
  32.          }
  33.          
  34.          double promedioGrupo()
  35.          {
  36.                 int total = 0;
  37.                 if(calificaciones.size() == 0) return 0;
  38.                 try
  39.                 {
  40.                 for(int i = 0; i <calificaciones.size(); i++)
  41.                     total += calificaciones[i];
  42.                    
  43.                 return total / calificaciones.size();       
  44.                 }
  45.                 catch(char * str){return 0;}
  46.          }
  47.          
  48.          int reprobados()
  49.          {
  50.              int total = 0;
  51.              for(int i = 0; i <calificaciones.size(); i++)
  52.                     total = (calificaciones[i]> REPROBATORIA)? total : total + 1;
  53.      
  54.  
  55.              return total;
  56.          }
  57.          
  58.          friend ostream& operator <<(ostream& out, Grupo &rsh)
  59.          {
  60.                 out <<"Grupo: " <<rsh.nombre <<endl;
  61.                 for(int i = 0; i <rsh.alumnos.size(); i++)
  62.                    out <<"Alumno: " <<rsh.alumnos[i] <<" calificacion:  " <<rsh.calificaciones[i] <<endl;
  63.                 out <<" Alumnos reprobados: " <<rsh.reprobados() <<endl;
  64.                 out <<" Alumnos aprobados: " <<rsh.alumnos.size() - rsh.reprobados() <<endl;
  65.                 out <<" Promedio del grupo: " <<rsh.promedioGrupo();     
  66.                 out <<" Alumnos en total: " <<rsh.size;
  67.                
  68.                 return out;
  69.          }         
  70. };
  71.  
  72. int main()
  73. {
  74.       int choice;
  75.       Grupo grupo("Matematicas");
  76.       inicio:
  77.        while (choice != 3)
  78.       {
  79.       cout <<"Bienvenido al sistema de alumnos" <<endl;
  80.       cout <<"Que desea hacer? " <<endl;
  81.       cout <<"1 .- Agregar un alumno" <<endl;
  82.       cout <<"2 .- Ver estadisticas del grupo" <<endl;
  83.       cout <<"3 .- Salir" <<endl;
  84.       cin>> choice;
  85.      
  86.  
  87.       switch(choice)
  88.       {
  89.           case(2):
  90.                   if(grupo.size == 0)
  91.                   {
  92.                      cout <<"El grupo no tiene alumnos registrados " <<endl;
  93.                      break;
  94.                   }
  95.                   cout <<grupo <<endl;
  96.                   goto inicio;
  97.                   break;
  98.           case(1):
  99.                   char* nombre;
  100.                   int calif;
  101.                   cout <<"Nombre: " <<endl;
  102.                   cin>> nombre;
  103.                   cout <<"Calificacion:" <<endl;
  104.                   cin>> calif;
  105.                   grupo.insertaAlumno(nombre,calif);
  106.                   goto inicio;
  107.                   break;
  108.           case(3):     
  109.                   return EXIT_SUCCESS;         
  110.                   break;
  111.       }// case switch
  112.       cin>> choice;
  113.       }
  114.        
  115.        
  116.       return EXIT_SUCCESS;
  117. }// main