codice:
int get_matricola_studente()
           {
               return matricola_studente;
           }
           int get_codice_insegnamento()
           {
               return codice_insegnamento;
           }
           DATA get_data_esame()
           {
               return data_esame;
           }
           int get_voto()
           {
               return voto;
           }
           void leggi_matricola_studente(istream&SORG)
           {
               int mat;
               SORG>>mat;
               matricola_studente=mat;
               return;
           }
           void leggi_codice_insegnamento(istream&SORG)
           {
               int codice;
               SORG>>codice;
               codice_insegnamento=codice;
               return;
           }
           void leggi_data_esame(istream&SORG)
           {
               int g,m,a;
               char sep;
               SORG>>g>>sep>>m>>sep>>a;
               data_esame.giorno=g;
               data_esame.mese=m;
               data_esame.anno=a;
               return;
           }
           void leggi_voto(istream&SORG)
           {
               int V;
               SORG>>V;
               voto=V;
               return;
           }
           void stampa_data_esame(ostream&DEST)
           {
               DEST<<data_esame.giorno<<'/'<<data_esame.mese<<'/'<<data_esame.anno<<endl;
               return;
           }
           void stampa_voto(ostream&DEST)
           {
               DEST<<"voto: "<<voto<<endl;
               return;
           }
}
class collezione_studenti
{
    private:
           studente coll_stud[dim_stud];
    public:
           collezione_studenti()
           {
               for(int i=0;i<dim;i++)
               {
                      coll_stud[i].nome="";
                      coll_stud[i].cognome="";
                      coll_stud[i].data_di_nascita.giorno=1;
                      coll_stud[i].data_di_nascita.mese=1;
                      coll_stud[i].data_di_nascita.anno=1;
                      coll_stud[i].indirizzo="";
                      coll_stud[i].matricola=1;
                      coll_stud[i].facolta="";
                      coll_stud[i].anno_corso=1;
                      coll_stud[i].email="";
                  }
           }
           collezione_studenti(studente st[dim_stud])//costruttore con parametro
           {
               for(int i=0;i<dim_stud;i++)
                  for(int j=0;j<dim_stud;j++)
                  {
                      coll_stud[i].persona::nome=st[j].nome;//oggetto di studente campo di persona
                      coll_stud[i].cognome=st[j].cognome;
                      coll_stud[i].data_di_nascita.giorno=st[j].data_di_nascita.giorno;
                      coll_stud[i].data_di_nascita.mese=st[j].data_di_nascita.mese;
                      coll_stud[i].data_di_nascita.anno=st[j].data_di_nascita.anno;
                      coll_stud[i].indirizzo=st[j].indirizzo;
                      coll_stud[i].matricola=st[j].matricola;
                      coll_stud[i].facolta=st[j].facolta;
                      coll_stud[i].anno_corso=st[j].anno_corso;
                      coll_stud[i].email=st[j].email;
                  }
           }
           void leggi_coll_stud(istream&SORG)
           {
               studente st[dim_stud];
               for(int i=0;i<dim_stud;i++)
                 for(int j=0;j<dim_stud;j++)
                  {
                      SORG>>st[j].persona::nome;
                      SORG>>st[j].cognome;
                      SORG>>st[j].data_di_nascita.giorno;
                      SORG>>st[j].data_di_nascita.mese;
                      SORG>>st[j].data_di_nascita.anno;
                      SORG>>st[j].indirizzo;
                      SORG>>st[j].matricola;
                      SORG>>st[j].facolta;
                      SORG>>st[j].anno_corso;
                      SORG>>st[j].email;
                      coll_stud[i].nome=st[j].nome;
                      coll_stud[i].cognome=st[j].cognome;
                      coll_stud[i].data_di_nascita.giorno=st[j].data_di_nascita.giorno;
                      coll_stud[i].data_di_nascita.mese=st[j].data_di_nascita.mese;
                      coll_stud[i].data_di_nascita.anno=st[j].data_di_nascita.anno;
                      coll_stud[i].indirizzo=st[j].indirizzo;
                      coll_stud[i].matricola=st[j].matricola;
                      coll_stud[i].facolta=st[j].facolta;
                      coll_stud[i].anno_corso=st[j].anno_corso;
                      coll_stud[i].email=st[j].email;
                  }
                  return;
           }
           void stampa_coll_stud(ostream&DEST)
           {
               for(int i=0;i<dim_stud;i++)
                   coll_stud[i].stampa_scheda_studente(cout);
               return;
           }
           int ricerca_per_matricola(int dim_stud,int n_matricola)
           {
               for(int i=0;i<dim_stud;i++)
                   if(st[i].matricola==n_matricola)return i;
               return 0;
           }
           int ricerca_per_sottostringa_cognome(int dim_stud,string sottostringa)
           {
               for(int i=0;i<dim_stud;i++)
               {
                   int j;
                   j=(st[i].cognome).find(sottostringa,0);
                   if(j!=string::npos)return i;
               }
               return 0;
           }
           int numero_tot_iscritti(int dim_stud)
           {
               int cont=0;
               for(int i=0;i<dim_stud;i++)
                  if(st[i].nome!="")cont++;
               return cont;
           }
}
class collezione_corsi
{
    private:
           corso coll_corso[dim_ins];
    public:
           collezione_corsi()
           {
               for(int i=0;i<dim_ins;i++)
               {
                      coll_corso[i].nome_corso="";
                      coll_corso[i].codice_corso=0;
                      coll_corso[i].cfu=0;
                      coll_corso[i].anno=1;
                      coll_corso[i].semestre=1;
                }
           }
           collezione_corsi(corso co[dim_ins])
           {
               for(int i=0;i<dim_ins;i++)
                 for(int j=0;j<dim_ins;j++)
                  {
                      coll_corso[i].nome_corso=co[j].nome_corso;
                      coll_corso[i].codice_corso=co[j].codice_corso;
                      coll_corso[i].cfu=co[j].cfu;
                      coll_corso[i].anno=co[j].anno;
                      coll_corso[i].semestre=co[j].semestre;
                  }
           }
           void leggi_coll_corso(istream&SORG)
           {
               corso co[dim_ins];
               for(int i=0;i<dim_ins;i++)
                 for(int j=0;j<dim_ins;j++)
                  {
                      SORG>>co[j].nome_corso;
                      SORG>>co[j].codice_corso;
                      SORG>>co[j].cfu;
                      SORG>>co[j].anno;
                      SORG>>co[j].semestre;
                      coll_corso[i].nome_corso=co[j].nome_corso;
                      coll_corso[i].codice_corso=co[j].codice_corso;
                      coll_corso[i].cfu=co[j].cfu;
                      coll_corso[i].anno=co[j].anno;
                      coll_corso[i].semestre=co[j].semestre;
                   }
                return;
           }
           void stampa_coll_corso(ostream&DEST)
           {
               for(int i=0;i<dim_ins;i++)
                   coll_corso[i].stampa_scheda_corso(cout);
               return;
           }
           int ricerca_per_codice(int dim_ins,int n_codice)
           {
               for(int i=0;i<dim_ins;i++)
                   if(co[i].codice_corso==n_codice)return i;
               return 0;
           }
           string ricerca_codice_per_titolo(int dim_ins,int n_codice)
           {
               for(int i=0;i<dim_ins;i++)
                   if(co[i].codice_corso==n_codice)return co[i].nome_corso;
               return "/";
           }
           int ricerca_per_sottostringa_titolo(int dim_ins,string sottostringa_titolo)
           {
               for(int i=0;i<dim_ins;i++)
               {
                   int j;
                   j=(co[i].nome_corso).find(sottostringa_titolo,0);
                   if(j!=string::npos)return i;
               }
               return 0;
           }
class collezione_esami
{
    private:
           esame coll_es[dim_es];
    public:
           collezione_esami()
           {
               for(int i=0;i<dim_es;i++)
               {
                   coll_es[i].matricola_studente=0;
                   coll_es[i].codice_insegnamento=0;
                   coll_es[i].data_esame.giorno=1;
                   coll_es[i].data_esame.mese=1;
                   coll_es[i].data_esame.anno=1;
                   coll_es[i].voto=1;
               }
           }
           collezione_esami(esame es[dim_es])
           {
               for(int i=0;i<dim_es;i++)
                 for(int j=0;j<dim_es;j++)
                  {
                      coll_es[i].matricola_studente=es[j].matricola_studente;
                      coll_es[i].codice_insegnamento=es[j].codice_insegnamento;
                      coll_es[i].data_esame.giorno=es[j].data_esame.giorno;
                      coll_es[i].data_esame.mese=es[j].data_esame.mese;
                      coll_es[i].data_esame.anno=es[j].data_esame.anno;
                      coll_es[i].voto=es[j].voto;
                  }
           }
           void leggi_coll_es(istream&SORG)
           {
               esame es[dim_es];
               for(int i=0;i<dim_es;i++)
                 for(int j=0;j<dim_es;j++)
                  {
                      SORG>>es[j].matricola_studente;
                      SORG>>es[j].codice_insegnamento;
                      SORG>>es[j].data_esame.giorno;
                      SORG>>es[j].data_esame.mese;
                      SORG>>es[j].data_esame.anno;
                      SORG>>es[j].voto;
                      coll_es[i].matricola_studente=es[j].matricola_studente;
                      coll_es[i].codice_insegnamento=es[j].codice_insegnamento;
                      coll_es[i].data_esame.giorno=es[j].data_esame.giorno;
                      coll_es[i].data_esame.mese=es[j].data_esame.mese;
                      coll_es[i].data_esame.anno=es[j].data_esame.anno;
                      coll_es[i].voto=es[j].voto;
                   }
                return;
           }
           int ricerca_per_matricola_studente(int dim_es,int n_matricola_stud,int pos_iniz)
           {
               for(int i=pos_iniz;i<dim_es;i++)
                   if(es[i].matricola_studente==n_matricola_stud) return i;
               return 0;
           }
           int ricerca_esame_per_codice_insegnamento(int dim_es,int n_cod_insegnamento,int po_iniz)
           {
               for(int i=po_iniz;i<dim_es;i++)
                   if(es[i].codice_insegnamento==n_cod_insegnamento)return i;
               return 0;
           }
}
int main()
{
    string NOME;
    string COGNOME;
    string INDIRIZZO;
    string FACOLTA;
    string EMAIL;
    int GIORNO,MESE,ANNO,ANNO_CORSO,MATRICOLA;
    int i=0;
    studente tutti_gli_studenti[dim_stud];
    ifstream f1;
    f1.open("studenti.txt");
    f1>>NOME;
    while(!f1.eof() && i<dim_stud)
    {
        tutti_gli_studenti[i].nome=NOME;
        f1>>COGNOME;
        tutti_gli_studenti[i].cognome=COGNOME;
        f1>>GIORNO;
        tutti_gli_studenti[i].data_di_nascita.giorno=GIORNO;
        f1>>MESE;
        tutti_gli_studenti[i].data_di_nascita.mese=MESE;
        f1>>ANNO;
        tutti_gli_studenti[i].data_di_nascita.anno=ANNO;
        f1>>INDIRIZZO;
        tutti_gli_studenti[i].indirizzo=INDIRIZZO;
        f1>>MATRICOLA;
        tutti_gli_studenti[i].matricola=MATRICOLA;
        f1>>FACOLTA;
        tutti_gli_studenti[i].facolta=FACOLTA;
        f1>>ANNO_CORSO;
        tutti_gli_studenti[i].anno_corso=ANNO_CORSO;
        F1>>EMAIL;
        tutti_gli_studenti[i].email=EMAIL;
        i++;
        f1>>NOME;
    }
    int j=0;
    string NOME_CORSO;
    int CODICE_CORSO,CFU,AN,SEMESTRE;
    corso tutti_corsi[dim_ins];
    ifstream f2;
    f2.open("corsi.txt");
    f2>>NOME_CORSO;
    while(!f2.eof() && j<dim_ins)
    {
        tutti_corsi[j].nome_corso=NOME_CORSO;
        f2>>CODICE_CORSO;
        tutti_corsi[j].codice_corso=CODICE_CORSO;
        f2>>CFU;
        tutti_corsi[j].cfu=CFU;
        f2>>AN;
        tutti_corsi[j].anno=AN;
        f2>>SEMESTRE;
        tutti_corsi[j].semestre=SEMESTRE;
        j++;
        f2>>NOME_CORSO;
    }