Registro Elettronico

di il
5 risposte

Registro Elettronico

Ciao a tutti sono nuovo, e sono in cerca di aiuto per quanto riguarda il mio piccolo programmino sul Registro Elettronico e vorrei dei consigli per farlo funzionare meglio dato che mi da dei problemi. Non riesco a tornare indietro dopo avendo inserito una scelta. E non so come si faccia a mettere la media vicino ad ogni materia e se nel caso non ci fossero voti , comunicare che non ci sono voti.
#include<iostream>
#include<Windows.h>
#include <conio.h>

using namespace std;

#define MAX_NUM_STUD_CLASS 10
#define MAX_NUM_CLASS 10
#define MAX_NUM_PROF_CLASS 10

#define MAX_NUM_PROF_INSTITUTO  4
#define MAX_NUM_MATERIE_CLASS 6
#define MAX_NUM_GG 31
#define MAX_NUM_MM 12

#define MAX_NUM_VOTI_MAT 10


string classi[MAX_NUM_CLASS];


string materie[MAX_NUM_MATERIE_CLASS];


struct anagraf_stu
{
 string nome;
 string cognome;
 string indirizzo;
} studenti [MAX_NUM_CLASS][MAX_NUM_STUD_CLASS];


struct anagraf_pr
{
 string nome;
 string cognome; 
}info_prof[MAX_NUM_PROF_INSTITUTO];

int classi_to_materie[MAX_NUM_CLASS][MAX_NUM_MATERIE_CLASS];

struct s1
{
   bool       assenza;
   string     note[MAX_NUM_MATERIE_CLASS]; 
   float      voti[MAX_NUM_VOTI_MAT][MAX_NUM_MATERIE_CLASS];
      
}re[MAX_NUM_GG][MAX_NUM_MM][MAX_NUM_CLASS][MAX_NUM_STUD_CLASS];

int last_voto[MAX_NUM_GG][MAX_NUM_MM][MAX_NUM_CLASS][MAX_NUM_STUD_CLASS][MAX_NUM_MATERIE_CLASS];
int last_nota[MAX_NUM_GG][MAX_NUM_MM][MAX_NUM_CLASS][MAX_NUM_STUD_CLASS];

//----------------------------------------------------------------------------------------------------------

void Init() {
	
	int i, j, k, x, l;
	
	//MATERIE
	materie[0] = "Storia";
	materie[1] = "Geografia";
	materie[2] = "Inglese";
	materie[3] = "Informatica";
	materie[4] = "Italiano";
	materie[5] = "Educazione Fizica";
	
	
	//CLASSI
	classi[0] = "1FI";
	studenti[0][0].nome = "Danielle"; studenti[0][0].cognome = " Angelica";
	studenti[0][1].nome = "Julian"; studenti[0][1].cognome = " Barry";
	studenti[0][2].nome = "Cyrus"; studenti[0][2].cognome = " Ezekiel";
	studenti[0][3].nome = "Cadence"; studenti[0][3].cognome = " Sarah";
	studenti[0][4].nome = "Harper"; studenti[0][4].cognome = " Whitney";
	studenti[0][5].nome = "Jolie "; studenti[0][5].cognome = " Jennifer";
	studenti[0][6].nome = "Sasha"; studenti[0][6].cognome = " Celine";
	studenti[0][7].nome = "Molly"; studenti[0][7].cognome = " Josephine";
	studenti[0][8].nome = "Pierce"; studenti[0][8].cognome = " Skyler";
	studenti[0][9].nome = "Mayra"; studenti[0][9].cognome = " Nyla";
	
	classi[1] = "2FI";
	studenti[1][0].nome = "Chiara"; studenti[1][0].cognome = " Abire";
	studenti[1][1].nome = "Roberto"; studenti[1][1].cognome = " Alino";
	studenti[1][2].nome = "Elena"; studenti[1][2].cognome = " Cori";
	studenti[1][3].nome = "Yosif"; studenti[1][3].cognome = " Shohreh";
	studenti[1][4].nome = "Sandra Maria"; studenti[1][4].cognome = " Pinta";
	studenti[1][5].nome = "Lucille"; studenti[1][5].cognome = " Harley";
	studenti[1][6].nome = "Anderson"; studenti[1][6].cognome = " Reid";
	studenti[1][7].nome = "Kayla "; studenti[1][7].cognome = " Virginia";
	studenti[1][8].nome = "Addison"; studenti[1][8].cognome = " Olivia";
	studenti[1][9].nome = "Junior"; studenti[1][9].cognome = " Emmanuel";
	
	classi[2]="3FI";
	studenti[2][0].nome = "Rasmus"; studenti[2][0].cognome = " Raz";
	studenti[2][1].nome = "Simone"; studenti[2][1].cognome = " Bartolomeo";
	studenti[2][2].nome = "Gennaro"; studenti[2][2].cognome = " Cordial";
	studenti[2][3].nome = "Luisa"; studenti[2][3].cognome = " Delli";
	studenti[2][4].nome = "Luca"; studenti[2][4].cognome = " Luna";
	studenti[2][5].nome = "Amedeo"; studenti[2][5].cognome = " Mammone";
	studenti[2][6].nome = "Andrea"; studenti[2][6].cognome = " Nero";
	studenti[2][7].nome = "Lucia"; studenti[2][7].cognome = " Porti";
	studenti[2][8].nome = "Alberto"; studenti[2][8].cognome = " Utir";
	studenti[2][9].nome = "Angela"; studenti[2][9].cognome = " Zamagna";
	
	classi[3]="4FI";
	studenti[3][0].nome = "Willow"; studenti[3][0].cognome = " Andrea";
	studenti[3][1].nome = "Aaliyah"; studenti[3][1].cognome = " Kristen";
	studenti[3][2].nome = "Stanley"; studenti[3][2].cognome = " Alexis";
	studenti[3][3].nome = "Conrad"; studenti[3][3].cognome = " Roger";
	studenti[3][4].nome = "Xavier"; studenti[3][4].cognome = " Eddie";
	studenti[3][5].nome = "Aurora"; studenti[3][5].cognome = " Lily";
	studenti[3][6].nome = "Kenna"; studenti[3][6].cognome = " Lauren";
	studenti[3][7].nome = "Michael"; studenti[3][7].cognome = " Milton";
	studenti[3][8].nome = "Ruth"; studenti[3][8].cognome = " Jessica";
	studenti[3][9].nome = "Faith"; studenti[3][9].cognome = " Kelly";
	
	classi[4]="5FI";
	studenti[4][0].nome = "Reid"; studenti[4][0].cognome = " Cannon";
	studenti[4][1].nome = "Jaden"; studenti[4][1].cognome = " Roy";
	studenti[4][2].nome = "Addison"; studenti[4][2].cognome = " Matthew";
	studenti[4][3].nome = "Precious"; studenti[4][3].cognome = " Alyssa";
	studenti[4][4].nome = "Carla"; studenti[4][4].cognome = " Zariah";
	studenti[4][5].nome = "Laurel"; studenti[4][5].cognome = " Serena";
	studenti[4][6].nome = "Penelope"; studenti[4][6].cognome = " Brooke";
	studenti[4][7].nome = "Bradyn"; studenti[4][7].cognome = " Paul";
	studenti[4][8].nome = "Tyra"; studenti[4][8].cognome = " Madeline";
	studenti[4][9].nome = "Tia"; studenti[4][9].cognome = " Mia";
	
	//DOCENTI
	info_prof[0].nome = "Roland"; info_prof[0].cognome = " Gabriel";
	info_prof[1].nome = "Cody"; info_prof[1].cognome = " Ava";
	info_prof[2].nome = "John"; info_prof[2].cognome = " Wayne";
	info_prof[3].nome = "Lewis"; info_prof[3].cognome = " Joel";

	classi_to_materie[0][0] = 0;
	classi_to_materie[0][1] = 0;
	classi_to_materie[1][0] = 1;
	classi_to_materie[1][1] = 1;
	
	for (i = 0; i < MAX_NUM_CLASS; i++) 
	{
		for (j = 0; j < MAX_NUM_STUD_CLASS; j++) 
		{
			for (k = 0; k < MAX_NUM_GG; k++) 
			{
				for (x = 0; x < MAX_NUM_MM; x++) 
				{
					re[k][x][i][j].assenza = false;
					for (l = 0; l < MAX_NUM_MATERIE_CLASS; l++)
					last_voto[k][x][i][j][l] = 0;
				}
			}
		}
	}
}

int Ruolo() {

	int ruolo;

	system("cls");
	cout<<"		REGISTRO ELETTRONICO"<<endl<<endl;
	cout << "  1) Alunno" << endl;
	cout << "  2) Professore" << endl<<endl;
	cout << "  0) Exit" << endl<<endl;
	cout << "	--->  ";

	do {
		cin >> ruolo;
		}	 
	while ((ruolo < 0)||(ruolo > 2));
	return ruolo;
}

int SelClasse() {
	
	int classe;
	system("cls");
	cout<<"		REGISTRO ELETTRONICO"<<endl<<endl;
	cout << "SCEGLI UNA CLASSSE" << endl<<endl;
	cout << "1) " << classi[0] << endl;
	cout << "2) " << classi[1] << endl;
	cout << "3) " << classi[2] << endl;
	cout << "4) " << classi[3] << endl;
	cout << "5) " << classi[4] << endl;
	cout << "0) Indietro" << endl<<endl;
	cout << "	--->  ";

	do {
		cin >> classe;
	} 
	while ((classe < 0)||(classe > 5));
	return classe - 1;
}

int SelAlunno(int classe) 
{

	int posizione,i;
	system("cls");
	cout<<"		REGISTRO ELETTRONICO"<<endl<<endl;
	cout << "SCEGLI UN ALUNNO" << endl<<endl;

	for(i=0;i<MAX_NUM_STUD_CLASS;i++)
	{
	cout <<i+1<<") " << studenti[classe][i].nome << studenti[classe][i].cognome<<endl;
	}
	cout <<endl<< " 0) Indietro" << endl<<endl;
	cout << "	--->  ";
	do {
		cin >> posizione;
	} 
	while ((posizione < 0)||(posizione > 10));
	return posizione - 1;
}

void VediVoti(int classe, int posizione) {

	int l, k, x, i;
	float media,somma=0;
	system("cls");
	cout<<endl;
	for (l = 0; l < MAX_NUM_MATERIE_CLASS; l++)
	{
		cout <<l+1<<"^ Materia: "<<materie[l];
		for (k = 0; k < MAX_NUM_GG; k++)
			for (x = 0; x < MAX_NUM_MM; x++)
				for (i = 0; i < last_voto[k][x][classe][posizione][l]; i++)
				{
					//old -> printf(" --> %f ",re[k][x][classe][posizione].voti[i][l]);
					cout << " --> " << re[k][x][classe][posizione].voti[i][l];
					//somma=somma+re[k][x][classe][posizione].voti[i][l];
					
				}
				//media=somma/i;
				//cout<<" Media: "<<somma;
		cout << endl<<endl;
	}
	system("pause");
}

int Alunno() {

	system("cls");
	int classe = SelClasse(), posizione = SelAlunno(classe), scelta;

	do {
		system("cls");
		cout<<"		REGISTRO ELETTRONICO"<<endl<<endl;
		cout << "1) Vedi voti" << endl;
		cout << "0) Indietro" << endl<<endl;
		cout << "	--->  ";

		do {
			cin >> scelta;
		} 
		while ((scelta < 0)||(scelta > 1));
		switch (scelta)
		{
		case 1:
			VediVoti(classe, posizione);
			break;
		}
	} 
	while (scelta != 0);
}

int SelMateria() {
	
	int mat,i;
	system("cls");
	cout<<"		REGISTRO ELETTRONICO"<<endl<<endl;
	cout << "SCEGLI UNA MATERIA" << endl<<endl;
	for(i=0;i<MAX_NUM_MATERIE_CLASS;i++)
	{
	cout << i+1<<") "<< materie[i] << endl;
	}
	cout << "0) Indietro" << endl<<endl;
	cout << "	--->  ";

	do {
		cin >> mat;
	} 
	while ((mat < 0)||(mat > 7));
	return mat - 1;
}

int SelGiorno() {

	int giorno;
	system("cls");
	cout<<"		REGISTRO ELETTRONICO"<<endl<<endl;
	cout << "SCEGLI UN GIORNO DA 1 A 31"<<endl<<endl;
	cout << "	--->  ";

	do {
		cin >> giorno;
	} 
	while ((giorno< 1) or (giorno > 31));
	return giorno;
}

int SelMese() {

	int mese;
	system("cls");
	cout<<"		REGISTRO ELETTRONICO"<<endl<<endl;
	cout << "SCEGLI UN MESE DA 1 A 12\n"<<endl<<endl;
	cout << "	--->  ";
	
	do {
		cin >> mese;
	}
	while ((mese < 1)||(mese > 12));
	return mese;
}

void InserisciVoto() {

	int classe = SelClasse();
	int posizione = SelAlunno(classe);
	int materia = SelMateria();
	float voto;
	int giorno = SelGiorno();
	int mese = SelMese();
	system("cls");
	cout<<"		REGISTRO ELETTRONICO"<<endl<<endl;
	cout << "QUANTO HA PRESO L'ALUNNO?"<<endl<<endl;
	cout << "	--->  ";

	
 do {
		cin >> voto;
	} 
	while ((voto < 0) or (voto > 10));
	re[giorno][mese][classe][posizione].voti[materia][last_voto[giorno][mese][classe][posizione][materia]]=voto;
	last_voto[giorno][mese][classe][posizione][materia]++;
}

int SelProf() {

	int posizione,i;
	system("cls");
	cout<<"		REGISTRO ELETTRONICO"<<endl<<endl;
	cout << "SCEGLI UN PROF" << endl<<endl;
	for(i=0;i<MAX_NUM_PROF_INSTITUTO;i++)
	{
	cout << i+1 <<") "<< info_prof[i].nome << info_prof[i].cognome << endl;
	}
	cout <<endl<< "0) Indietro" << endl<<endl;
	cout << "	--->  ";
	
	do {
		cin >> posizione;
	} 
	while ((posizione < 0)||(posizione > 4));
	return posizione-1;
}

void InserisciNote(){

	string nota;
	int classe = SelClasse();
	int posizione = SelProf();
	int materia = SelMateria();
	int giorno = SelGiorno();
	int mese = SelMese();
	cout<<"		REGISTRO ELETTRONICO"<<endl<<endl;
	cout << "INSERISCI LA NOTA: ";
	cin >> nota;
	re[giorno][mese][classe][posizione].note[last_nota[MAX_NUM_GG][MAX_NUM_MM][MAX_NUM_CLASS][MAX_NUM_STUD_CLASS]] = nota;
	last_nota[MAX_NUM_GG][MAX_NUM_MM][MAX_NUM_CLASS][MAX_NUM_STUD_CLASS]++;
}

void InserisciAssenze() {

	int classe = SelClasse();
	int posizione = SelAlunno(classe);
	int giorno = SelGiorno();
	int mese = SelMese();
	re[giorno][mese][classe][posizione].assenza = true;
	cout << "ASSENZA SEGNATA" << endl;
}

void Prof() {
	//Scopo:
	//Parametri di input:
	//Parametri di output:
	//Parametri di I/0:
	//Valore di ritorno:
	int posizione, scelta, classe;
	cout<<"		REGISTRO ELETTRONICO"<<endl<<endl;
	cout << "BENVENUTO PROFESSOR: ";
	posizione = SelProf();
	if(posizione==0)
	{
		
	}
	classe = SelClasse();
	do {
		system("cls");
		cout<<"		REGISTRO ELETTRONICO"<<endl<<endl;
		cout << "1) Inserire voti" << endl;
		cout << "2) Inserire note" << endl;
		cout << "3) Inserire assenze" << endl<<endl;
		cout << "0) Indietro" << endl<<endl;
		cout << "	--->  ";
		//controllo, l'utente non potrà inserire valori diversi da 0,1,2,3
		do {
			cin >> scelta;
		} 
		while ((scelta < 0)||(scelta > 3));
		switch (scelta) {
		case 1:
			InserisciVoto();
			break;
		case 2:
			InserisciNote();
			break;
		case 3:
			InserisciAssenze();
			break;
		}
	} while (scelta != 0);
}

int main() 
{
	int ruolo;
	Init();
	
	do
	{
		ruolo = Ruolo();
		switch (ruolo)
		{
		case 1:
			Alunno();
			break;
		case 2:
			Prof();
			break;
		}
	} while (ruolo != 0);
}

5 Risposte

  • Re: Registro Elettronico

    Una cosa per volta ... tornare indietro dove?
  • Re: Registro Elettronico

    oregon ha scritto:


    Una cosa per volta ... tornare indietro dove?
    Se inserisco l'alunno e poi una classe , e vorrei tornare indietro magari, non riesco perchè il programma va avanti
  • Re: Registro Elettronico

    Premetto che non è chiaro nemmeno a me che cosa vuoi fare. Ritengo che tu voglia "abortire" un inserimento dati. Per come hai strutturato il programma, l'unica idea che mi viene in mente è quella di parcheggiare i dati in strutture temporanee, e fare l'inserimento solo quando si arriva ad un punto di conferma.
    Puoi anche modificare l'inserimento di singoli dati in modo che possa essere digitato anche un carattere di "annulla", e far ritornare -1 alle varie funzioni di acquisizione.
  • Re: Registro Elettronico

    Sono passato a Windows giusto per provare il tuo programma, ed in effetti ha parecchi problemi. Innanzi tutto non compila per via di alcune istruzioni sbagliate. Una volta corrette si passa al test e come dici tu, non è facile tornare indietro. Analizzando il codice si vede il perché:
    void InserisciVoto() {
    
    	int classe = SelClasse();
    	int posizione = SelAlunno(classe);
    	int materia = SelMateria();
    	float voto;
    	int giorno = SelGiorno();
    	int mese = SelMese();
    	system("cls");
    	cout << "		REGISTRO ELETTRONICO" << endl << endl;
    	cout << "QUANTO HA PRESO L'ALUNNO?" << endl << endl;
    	cout << "	--->  ";
    	[...]
    se chiami SelClasse, ma da dentro SelClasse digiti '0', la variabile 'classe' varrà 0 e il programma continuerà come se tu avessi selezionato la classe "1FI", e così via per tutti gli altri item...
    La soluzione è modificare tutte le funzioni che ritornano un intero, in modo che alla scelta '0' venga ritornato '-1', e modificare il codice di conseguenza:
    int InserisciVoto() {
    	int rit = 1;
    	int classe = SelClasse();
    	if (classe >=0){	// i valori validi vanno da 0 a MAX_NUM_CLASSI
    		int posizione = SelAlunno(classe);
    		if (posizione >= 0) {
    			int materia = SelMateria();
    			if (materia >= 0) {
    				float voto;
    				int giorno = SelGiorno();
    				if [..etc etc..] {
    					re[giorno][mese][classe][posizione].voti[materia][last_voto[giorno][mese][classe][posizione][materia]] = voto;
    					last_voto[giorno][mese][classe][posizione][materia]++;
    					// All'ultima istruzione valida (quando hai assegnato il voto) cambi la variabile rit
    					rit = 0;
    				}
    			}
    		}
    	}
    	return rit;	// se hai digitato '0' dentro un qualunque menu, rit varrà ancora 1 e verrà ritornato 1 dalla funzione: 
    			// potrai quindi controllare se il voto è stato immesso o no
    }
    Il codice può anche essere sviluppato in modo diverso:
    int InserisciVoto() {
    	int classe = SelClasse();
    	if (classe <0) return 1;	// i valori validi vanno da 0 a MAX_NUM_CLASSI
    	
    ma non viene considerata buona programmazione.
  • Re: Registro Elettronico

    Andrea Quaglia ha scritto:


    Sono passato a Windows giusto per provare il tuo programma, ed in effetti ha parecchi problemi. Innanzi tutto non compila per via di alcune istruzioni sbagliate. Una volta corrette si passa al test e come dici tu, non è facile tornare indietro. Analizzando il codice si vede il perché:
    void InserisciVoto() {
    
    	int classe = SelClasse();
    	int posizione = SelAlunno(classe);
    	int materia = SelMateria();
    	float voto;
    	int giorno = SelGiorno();
    	int mese = SelMese();
    	system("cls");
    	cout << "		REGISTRO ELETTRONICO" << endl << endl;
    	cout << "QUANTO HA PRESO L'ALUNNO?" << endl << endl;
    	cout << "	--->  ";
    	[...]
    se chiami SelClasse, ma da dentro SelClasse digiti '0', la variabile 'classe' varrà 0 e il programma continuerà come se tu avessi selezionato la classe "1FI", e così via per tutti gli altri item...
    La soluzione è modificare tutte le funzioni che ritornano un intero, in modo che alla scelta '0' venga ritornato '-1', e modificare il codice di conseguenza:
    int InserisciVoto() {
    	int rit = 1;
    	int classe = SelClasse();
    	if (classe >=0){	// i valori validi vanno da 0 a MAX_NUM_CLASSI
    		int posizione = SelAlunno(classe);
    		if (posizione >= 0) {
    			int materia = SelMateria();
    			if (materia >= 0) {
    				float voto;
    				int giorno = SelGiorno();
    				if [..etc etc..] {
    					re[giorno][mese][classe][posizione].voti[materia][last_voto[giorno][mese][classe][posizione][materia]] = voto;
    					last_voto[giorno][mese][classe][posizione][materia]++;
    					// All'ultima istruzione valida (quando hai assegnato il voto) cambi la variabile rit
    					rit = 0;
    				}
    			}
    		}
    	}
    	return rit;	// se hai digitato '0' dentro un qualunque menu, rit varrà ancora 1 e verrà ritornato 1 dalla funzione: 
    			// potrai quindi controllare se il voto è stato immesso o no
    }
    Il codice può anche essere sviluppato in modo diverso:
    int InserisciVoto() {
    	int classe = SelClasse();
    	if (classe <0) return 1;	// i valori validi vanno da 0 a MAX_NUM_CLASSI
    	
    ma non viene considerata buona programmazione.
    #include<iostream>
    #include<Windows.h>
    #include<conio.h>
    //#include<graphics.h>
    
    
    
    using namespace std;
    
    #define MAX_NUM_STUD_CLASS 10
    #define MAX_NUM_CLASS 5
    #define MAX_NUM_PROF_CLASS 10
    
    #define MAX_NUM_PROF_INSTITUTO  4
    #define MAX_NUM_MATERIE_CLASS 6
    #define MAX_NUM_GG 31
    #define MAX_NUM_MM 12
    
    #define MAX_NUM_VOTI_MAT 10
    
    
    string classi[MAX_NUM_CLASS];
    
    
    string materie[MAX_NUM_MATERIE_CLASS];
    
    
    struct anagraf_stu
    {
     string nome;
     string cognome;
     string indirizzo;
    } studenti [MAX_NUM_CLASS][MAX_NUM_STUD_CLASS];
    
    
    struct anagraf_pr
    {
     string nome;
     string cognome; 
    }info_prof[MAX_NUM_PROF_INSTITUTO];
    
    int classi_to_materie[MAX_NUM_CLASS][MAX_NUM_MATERIE_CLASS];
    
    struct s1
    {
       bool       assenza;
       string     note[MAX_NUM_MATERIE_CLASS]; 
       float      voti[MAX_NUM_VOTI_MAT][MAX_NUM_MATERIE_CLASS];
          
    }re[MAX_NUM_GG][MAX_NUM_MM][MAX_NUM_CLASS][MAX_NUM_STUD_CLASS];
    
    int last_voto[MAX_NUM_GG][MAX_NUM_MM][MAX_NUM_CLASS][MAX_NUM_STUD_CLASS][MAX_NUM_MATERIE_CLASS];
    int last_nota[MAX_NUM_GG][MAX_NUM_MM][MAX_NUM_CLASS][MAX_NUM_STUD_CLASS];
    
    //----------------------------------------------------------------------------------------------------------
    
    void SetColor(unsigned short color){
      HANDLE hcon = GetStdHandle(STD_OUTPUT_HANDLE);
      SetConsoleTextAttribute(hcon,color);
    }
    
    void Init() {
    	//Scopo:
    	//Parametri di input:
    	//Parametri di output:
    	//Parametri di I/0:
    	//Valore di ritorno:
    	int i, j, k, x, l;
    	
    	//MATERIE
    	materie[0] = "Storia";
    	materie[1] = "Geografia";
    	materie[2] = "Inglese";
    	materie[3] = "Informatica";
    	materie[4] = "Italiano";
    	materie[5] = "Educazione Fisica";
    	
    	
    	//CLASSI
    	classi[0] = "1FI";
    	studenti[0][0].nome = "Danielle"; studenti[0][0].cognome = " Angelica";
    	studenti[0][1].nome = "Julian"; studenti[0][1].cognome = " Barry";
    	studenti[0][2].nome = "Cyrus"; studenti[0][2].cognome = " Ezekiel";
    	studenti[0][3].nome = "Cadence"; studenti[0][3].cognome = " Sarah";
    	studenti[0][4].nome = "Harper"; studenti[0][4].cognome = " Whitney";
    	studenti[0][5].nome = "Jolie "; studenti[0][5].cognome = " Jennifer";
    	studenti[0][6].nome = "Sasha"; studenti[0][6].cognome = " Celine";
    	studenti[0][7].nome = "Molly"; studenti[0][7].cognome = " Josephine";
    	studenti[0][8].nome = "Pierce"; studenti[0][8].cognome = " Skyler";
    	studenti[0][9].nome = "Mayra"; studenti[0][9].cognome = " Nyla";
    	
    	classi[1] = "2FI";
    	studenti[1][0].nome = "Chiara"; studenti[1][0].cognome = " Abire";
    	studenti[1][1].nome = "Roberto"; studenti[1][1].cognome = " Alino";
    	studenti[1][2].nome = "Elena"; studenti[1][2].cognome = " Cori";
    	studenti[1][3].nome = "Yosif"; studenti[1][3].cognome = " Shohreh";
    	studenti[1][4].nome = "Sandra Maria"; studenti[1][4].cognome = " Pinta";
    	studenti[1][5].nome = "Lucille"; studenti[1][5].cognome = " Harley";
    	studenti[1][6].nome = "Anderson"; studenti[1][6].cognome = " Reid";
    	studenti[1][7].nome = "Kayla "; studenti[1][7].cognome = " Virginia";
    	studenti[1][8].nome = "Addison"; studenti[1][8].cognome = " Olivia";
    	studenti[1][9].nome = "Junior"; studenti[1][9].cognome = " Emmanuel";
    	
    	classi[2]="3FI";
    	studenti[2][0].nome = "Rasmus"; studenti[2][0].cognome = " Raz";
    	studenti[2][1].nome = "Simone"; studenti[2][1].cognome = " Bartolomeo";
    	studenti[2][2].nome = "Gennaro"; studenti[2][2].cognome = " Cordial";
    	studenti[2][3].nome = "Luisa"; studenti[2][3].cognome = " Delli";
    	studenti[2][4].nome = "Luca"; studenti[2][4].cognome = " Luna";
    	studenti[2][5].nome = "Amedeo"; studenti[2][5].cognome = " Mammone";
    	studenti[2][6].nome = "Andrea"; studenti[2][6].cognome = " Nero";
    	studenti[2][7].nome = "Lucia"; studenti[2][7].cognome = " Porti";
    	studenti[2][8].nome = "Alberto"; studenti[2][8].cognome = " Utir";
    	studenti[2][9].nome = "Angela"; studenti[2][9].cognome = " Zamagna";
    	
    	classi[3]="4FI";
    	studenti[3][0].nome = "Willow"; studenti[3][0].cognome = " Andrea";
    	studenti[3][1].nome = "Aaliyah"; studenti[3][1].cognome = " Kristen";
    	studenti[3][2].nome = "Stanley"; studenti[3][2].cognome = " Alexis";
    	studenti[3][3].nome = "Conrad"; studenti[3][3].cognome = " Roger";
    	studenti[3][4].nome = "Xavier"; studenti[3][4].cognome = " Eddie";
    	studenti[3][5].nome = "Aurora"; studenti[3][5].cognome = " Lily";
    	studenti[3][6].nome = "Kenna"; studenti[3][6].cognome = " Lauren";
    	studenti[3][7].nome = "Michael"; studenti[3][7].cognome = " Milton";
    	studenti[3][8].nome = "Ruth"; studenti[3][8].cognome = " Jessica";
    	studenti[3][9].nome = "Faith"; studenti[3][9].cognome = " Kelly";
    	
    	classi[4]="5FI";
    	studenti[4][0].nome = "Reid"; studenti[4][0].cognome = " Cannon";
    	studenti[4][1].nome = "Jaden"; studenti[4][1].cognome = " Roy";
    	studenti[4][2].nome = "Addison"; studenti[4][2].cognome = " Matthew";
    	studenti[4][3].nome = "Precious"; studenti[4][3].cognome = " Alyssa";
    	studenti[4][4].nome = "Carla"; studenti[4][4].cognome = " Zariah";
    	studenti[4][5].nome = "Laurel"; studenti[4][5].cognome = " Serena";
    	studenti[4][6].nome = "Penelope"; studenti[4][6].cognome = " Brooke";
    	studenti[4][7].nome = "Bradyn"; studenti[4][7].cognome = " Paul";
    	studenti[4][8].nome = "Tyra"; studenti[4][8].cognome = " Madeline";
    	studenti[4][9].nome = "Tia"; studenti[4][9].cognome = " Mia";
    	
    	//DOCENTI
    	info_prof[0].nome = "Roland"; info_prof[0].cognome = " Gabriel";
    	info_prof[1].nome = "Cody"; info_prof[1].cognome = " Ava";
    	info_prof[2].nome = "John"; info_prof[2].cognome = " Wayne";
    	info_prof[3].nome = "Lewis"; info_prof[3].cognome = " Joel";
    
    	classi_to_materie[0][0] = 0;
    	classi_to_materie[0][1] = 0;
    	classi_to_materie[1][0] = 1;
    	classi_to_materie[1][1] = 1;
    	
    	for (i = 0; i < MAX_NUM_CLASS; i++) 
    	{
    		for (j = 0; j < MAX_NUM_STUD_CLASS; j++) 
    		{
    			for (k = 0; k < MAX_NUM_GG; k++) 
    			{
    				for (x = 0; x < MAX_NUM_MM; x++) 
    				{
    					
    					//re[MAX_NUM_GG][MAX_NUM_MM][MAX_NUM_CLASS][MAX_NUM_STUD_CLASS]
    					
    					for (l = 0; l < MAX_NUM_MATERIE_CLASS; l++)
    					{
    						last_voto[k][x][i][j][l] = 0;
    					}
    					
    					re[k][x][i][j].assenza = false;				
    					last_nota[k][x][i][j] = 0;
    					
    				}
    			}
    		}
    	}
    	
    }
    
    int Ruolo() {
    	//Scopo:
    	//Parametri di input:
    	//Parametri di output:
    	//Parametri di I/0:
    	//Valore di ritorno:
    	int ruolo;
    	
    	system("cls");
    		Sleep(70);
    	SetColor(9);printf("			%c%c%c%c%c%c   %c%c%c%c%c%c\n",201,205,205,205,205,187,201,205,205,205,205,205);
    	Sleep(70);
    	printf("			%c    %c   %c\n",186,186,186);
    	Sleep(70);
    	printf("			%c    %c   %c\n",186,186,186);
    	Sleep(70);
    	printf("			%c%c%c%c%c%c   %c%c%c\n",204,205,203,205,205,188,204,205,205);
    	Sleep(70);
    	printf("			%c %c%c     %c\n",186,200,187,186);
    	Sleep(70);
    	printf("			%c  %c%c    %c\n",186,200,187,186);
    	Sleep(70);
    	printf("			%c   %c%c %c %c%c%c%c%c%c %c\n",186,200,187,220,200,205,205,205,205,205,220);SetColor(15);
    	SetColor(11);cout <<endl<<endl<< "  1) Alunno" << endl;SetColor(15);
    	SetColor(3);cout << "  2) Professore" << endl<<endl;SetColor(15);
    	SetColor(12);cout << "  0) Exit" << endl<<endl;SetColor(15);
    
    	do {
    		SetColor(14);cout<<endl;printf("	%c%c%c%c> ",196,196,196,196);SetColor(15);
    		cin >> ruolo;
    		if((ruolo < 0)||(ruolo > 2))
    		cout<<endl<<"		ERRATO\n";
    		}
    			 
    	while ((ruolo < 0)||(ruolo > 2));
    	return ruolo;
    }
    
    
    //FUNZIONALITA' ALUNNO
    
    int SelClasse() {
    	//Scopo:
    	//Parametri di input:
    	//Parametri di output:
    	//Parametri di I/0:
    	//Valore di ritorno:
    	int classe;
    	system("cls");
    	SetColor(9);printf("			%c%c%c%c%c%c   %c%c%c%c%c%c\n",201,205,205,205,205,187,201,205,205,205,205,205);
    	printf("			%c    %c   %c\n",186,186,186);
    	printf("			%c    %c   %c\n",186,186,186);
    	printf("			%c%c%c%c%c%c   %c%c%c\n",204,205,203,205,205,188,204,205,205);
    	printf("			%c %c%c     %c\n",186,200,187,186);
    	printf("			%c  %c%c    %c\n",186,200,187,186);
    	printf("			%c   %c%c %c %c%c%c%c%c%c %c\n",186,200,187,220,200,205,205,205,205,205,220);SetColor(15);
    	SetColor(11);cout <<endl<<endl<<"			    STUDENTE" << endl<<endl;SetColor(15);
    	cout<<"	CLASSE:"<<endl<<endl;
    	for(int i=0;i<MAX_NUM_CLASS;i++)
    	{
    	cout <<"    "<< i+1 <<") " << classi[i] << endl;
    }
    	SetColor(2);cout <<endl<< "    0) Indietro" << endl<<endl;SetColor(15);
    	do {
    		SetColor(14);printf("	%c%c%c%c> ",196,196,196,196);SetColor(15);
    		cin >> classe;
    		if((classe < 0)||(classe > 5))
    		cout<<endl<<"		ERRATO\n";
    	} 
    	while ((classe < 0)||(classe > 5));
    	return classe - 1;
    }
    
    int SelAlunno(int classe) {
    	//Scopo:
    	//Parametri di input:
    	//Parametri di output:
    	//Parametri di I/0:
    	//Valore di ritorno:
    	int posizione,i;
    	system("cls");
    	SetColor(9);printf("			%c%c%c%c%c%c   %c%c%c%c%c%c\n",201,205,205,205,205,187,201,205,205,205,205,205);
    	printf("			%c    %c   %c\n",186,186,186);
    	printf("			%c    %c   %c\n",186,186,186);
    	printf("			%c%c%c%c%c%c   %c%c%c\n",204,205,203,205,205,188,204,205,205);
    	printf("			%c %c%c     %c\n",186,200,187,186);
    	printf("			%c  %c%c    %c\n",186,200,187,186);
    	printf("			%c   %c%c %c %c%c%c%c%c%c %c\n",186,200,187,220,200,205,205,205,205,205,220);SetColor(15);
    	SetColor(11);cout <<endl<<endl<<"			    STUDENTE" << endl<<endl;SetColor(15);
    	cout<<"	ALUNNI:" << endl<<endl;
    	
    	for(i=0;i<MAX_NUM_STUD_CLASS;i++)
    	{
    	cout <<"    "<<i+1<<") " << studenti[classe][i].nome << studenti[classe][i].cognome<<endl;
    	}
    	SetColor(2);cout <<endl<< "    0) Indietro" << endl<<endl;SetColor(15);
    	
    	do {
    		SetColor(14);printf("	%c%c%c%c> ",196,196,196,196);SetColor(15);
    		cin >> posizione;
    		if((posizione < 0)||(posizione > 10))
    		cout<<endl<<"		ERRATO\n";
    	} 
    	while ((posizione < 0)||(posizione > 10));
    	return posizione - 1;
    }
    
    void VediAss(int classe,int posizione){
    	int i,j;
    	int contatore=0;
    	system("cls");
    	SetColor(9);printf("			%c%c%c%c%c%c   %c%c%c%c%c%c\n",201,205,205,205,205,187,201,205,205,205,205,205);
    	printf("			%c    %c   %c\n",186,186,186);
    	printf("			%c    %c   %c\n",186,186,186);
    	printf("			%c%c%c%c%c%c   %c%c%c\n",204,205,203,205,205,188,204,205,205);
    	printf("			%c %c%c     %c\n",186,200,187,186);
    	printf("			%c  %c%c    %c\n",186,200,187,186);
    	printf("			%c   %c%c %c %c%c%c%c%c%c %c\n",186,200,187,220,200,205,205,205,205,205,220);SetColor(15);
    	SetColor(11);cout <<endl<<endl<<"			    STUDENTE" << endl<<endl;SetColor(15);
    	cout<<"	ASSENZE: "<<endl<<endl;
    	for(i=0;i<MAX_NUM_GG;i++)
    		for(j=0;j<MAX_NUM_MM;j++)
    			{
    				if(re[i][j][classe][posizione].assenza)
    				{
    					cout<<"    Assenza il giorno: ";
    					cout<<i<<" / "<<j<<endl<<endl;
    					contatore=1;
    				}					
    			}
    			
    	if(contatore==0)
    	cout << endl<<"    NESSUNA ASSENZA"<<endl<<endl;
    	
    	system("pause");
    	
    }
    
    void VediNote(int classe, int posizione){
    	int l, k, x, i;
    	int nota=0;
    	system("cls");
    	
    	SetColor(9);printf("			%c%c%c%c%c%c   %c%c%c%c%c%c\n",201,205,205,205,205,187,201,205,205,205,205,205);
    	printf("			%c    %c   %c\n",186,186,186);
    	printf("			%c    %c   %c\n",186,186,186);
    	printf("			%c%c%c%c%c%c   %c%c%c\n",204,205,203,205,205,188,204,205,205);
    	printf("			%c %c%c     %c\n",186,200,187,186);
    	printf("			%c  %c%c    %c\n",186,200,187,186);
    	printf("			%c   %c%c %c %c%c%c%c%c%c %c\n",186,200,187,220,200,205,205,205,205,205,220);SetColor(15);
    	SetColor(11);cout <<endl<<endl<<"			    STUDENTE" << endl<<endl;SetColor(15);
    		cout<<"	NOTE: ";
    		for (k = 0; k < MAX_NUM_GG; k++)
    			for (x = 0; x < MAX_NUM_MM; x++)
    				for (i = 0; i < last_nota[k][x][classe][posizione]; i++)
    				{
    					if(last_nota[k][x][classe][posizione]>0)
    					{
    					
    					cout <<endl<< "    - " << re[k][x][classe][posizione].note[i]<<endl;
    					cout <<"    Data: " << k << "/" << x<<endl;
    					nota=1;
    					}
    					
    				}
    				
    			if(nota==0)
    			cout<<endl<<endl<<"    NESSUNA NOTA";
    				
    		cout << endl<<endl;
    	
    	system("pause");
    }
    
    void VediVoti(int classe, int posizione) {
    	//Scopo:
    	//Parametri di input:
    	//Parametri di output:
    	//Parametri di I/0:
    	//Valore di ritorno:
    	int l, k, x, i;
    	float media,somma,cont;
    	system("cls");
    	SetColor(9);printf("			%c%c%c%c%c%c   %c%c%c%c%c%c\n",201,205,205,205,205,187,201,205,205,205,205,205);
    	printf("			%c    %c   %c\n",186,186,186);
    	printf("			%c    %c   %c\n",186,186,186);
    	printf("			%c%c%c%c%c%c   %c%c%c\n",204,205,203,205,205,188,204,205,205);
    	printf("			%c %c%c     %c\n",186,200,187,186);
    	printf("			%c  %c%c    %c\n",186,200,187,186);
    	printf("			%c   %c%c %c %c%c%c%c%c%c %c\n",186,200,187,220,200,205,205,205,205,205,220);SetColor(15);
    	SetColor(11);cout <<endl<<endl<<"			    STUDENTE" << endl<<endl;SetColor(15);
    	cout<<"	MATERIE:" << endl<<endl;
    	for (l = 0; l < MAX_NUM_MATERIE_CLASS; l++)
    	{
    		somma=0;
    		cont=0;
    		cout <<materie[l]<<":";
    		for (k = 0; k < MAX_NUM_GG; k++)
    			for (x = 0; x < MAX_NUM_MM; x++)
    				for (i = 0; i < last_voto[k][x][classe][posizione][l]; i++)
    				{
    					SetColor(14);cout<<"  Voto: ";SetColor(15);cout<<re[k][x][classe][posizione].voti[i][l]<<"("<<k<<"/"<<x<<")";
    					somma+=re[k][x][classe][posizione].voti[i][l];
    					cont++;
    				}
    				if(somma==0)
    					media=0;
    				else
    					media=somma/cont;
    		
    		if(media>=6)
    			SetColor(10);
    		else
    			SetColor(12);			
    		printf("  Media %c %.2f\n",179,media);	
    		SetColor(15);	
    		cout<<endl;
    	}
    	system("pause");
    }
    
    void Alunno() {
    	//Scopo:
    	//Parametri di input:
    	//Parametri di output:
    	//Parametri di I/0:
    	//Valore di ritorno:
    	system("cls");
    	SetColor(9);printf("			%c%c%c%c%c%c   %c%c%c%c%c%c\n",201,205,205,205,205,187,201,205,205,205,205,205);
    	printf("			%c    %c   %c\n",186,186,186);
    	printf("			%c    %c   %c\n",186,186,186);
    	printf("			%c%c%c%c%c%c   %c%c%c\n",204,205,203,205,205,188,204,205,205);
    	printf("			%c %c%c     %c\n",186,200,187,186);
    	printf("			%c  %c%c    %c\n",186,200,187,186);
    	printf("			%c   %c%c %c %c%c%c%c%c%c %c\n",186,200,187,220,200,205,205,205,205,205,220);SetColor(15);
    	int classe,posizione,scelta;
    	do{
    		classe = SelClasse();
    		if(classe!=-1)
    			do{
    				posizione = SelAlunno(classe);
    				if(posizione!=-1)	
    				do {
    							system("cls");
    							SetColor(9);printf("			%c%c%c%c%c%c   %c%c%c%c%c%c\n",201,205,205,205,205,187,201,205,205,205,205,205);
    							printf("			%c    %c   %c\n",186,186,186);
    							printf("			%c    %c   %c\n",186,186,186);
    							printf("			%c%c%c%c%c%c   %c%c%c\n",204,205,203,205,205,188,204,205,205);
    							printf("			%c %c%c     %c\n",186,200,187,186);
    							printf("			%c  %c%c    %c\n",186,200,187,186);
    							printf("			%c   %c%c %c %c%c%c%c%c%c %c\n",186,200,187,220,200,205,205,205,205,205,220);SetColor(15);
    							SetColor(11);cout <<endl<<endl<<"			    STUDENTI" << endl<<endl;SetColor(15);
    							cout<<"	VEDI:" << endl<<endl;
    							cout<<"    1) Voti" << endl;
    							cout<<"    2) Note" << endl;
    							cout<<"    3) Assenze" << endl<<endl;
    							SetColor(2);cout<<"    0) Indietro" << endl<<endl;SetColor(15);
    				
    					do 
    					{
    						SetColor(14);printf("	%c%c%c%c> ",196,196,196,196);SetColor(15);
    						cin >> scelta;
    						if((scelta < 0)||(scelta > 3))
    						cout<<endl<<"		ERRATO\n";
    					} 
    					while ((scelta < 0)||(scelta > 3));
    					switch (scelta)
    					{
    							case 1:
    								VediVoti(classe, posizione);
    								break;
    								
    							case 2: 
    								VediNote(classe,posizione);
    								break;
    								
    							case 3: 
    								VediAss(classe,posizione);
    								break;
    								
    							case 0: 
    							classe=0;
    							
    							break;
    					}
    				}while (scelta != 0);	
    		}while(posizione!=-1);
    	}while(classe!=-1);
    	
    
    }
    
    
    //FUNZIONALITA' DOCENTE
    
    int SelAlunnoProf(int classe) {
    	//Scopo:
    	//Parametri di input:
    	//Parametri di output:
    	//Parametri di I/0:
    	//Valore di ritorno:
    	int posizione,i;
    	system("cls");
    	SetColor(9);printf("			%c%c%c%c%c%c   %c%c%c%c%c%c\n",201,205,205,205,205,187,201,205,205,205,205,205);
    	printf("			%c    %c   %c\n",186,186,186);
    	printf("			%c    %c   %c\n",186,186,186);
    	printf("			%c%c%c%c%c%c   %c%c%c\n",204,205,203,205,205,188,204,205,205);
    	printf("			%c %c%c     %c\n",186,200,187,186);
    	printf("			%c  %c%c    %c\n",186,200,187,186);
    	printf("			%c   %c%c %c %c%c%c%c%c%c %c\n",186,200,187,220,200,205,205,205,205,205,220);SetColor(15);
    	SetColor(3);cout <<endl<<endl<<"			    DOCENTE" << endl<<endl;SetColor(15);
    	cout<<"	ALUNNI:" << endl<<endl;
    	//studenti [MAX_NUM_CLASS][MAX_NUM_STUD_CLASS]
    	for(i=0;i<MAX_NUM_STUD_CLASS;i++)
    	{
    	cout <<"    "<<i+1<<") " << studenti[classe][i].nome << studenti[classe][i].cognome<<endl;
    	}
    	SetColor(2);cout <<endl<< "    0) Indietro" << endl<<endl;SetColor(15);
    	
    	do {
    		SetColor(14);printf("	%c%c%c%c> ",196,196,196,196);SetColor(15);
    		cin >> posizione;
    		if((posizione < 0)||(posizione > 10))
    		cout<<endl<<"		ERRATO\n";
    	} 
    	while ((posizione < 0)||(posizione > 10));
    	return posizione - 1;
    }
    
    int SelClasseProf() {
    	//Scopo:
    	//Parametri di input:
    	//Parametri di output:
    	//Parametri di I/0:
    	//Valore di ritorno:
    	int classe;
    	system("cls");
    	SetColor(9);printf("			%c%c%c%c%c%c   %c%c%c%c%c%c\n",201,205,205,205,205,187,201,205,205,205,205,205);
    	printf("			%c    %c   %c\n",186,186,186);
    	printf("			%c    %c   %c\n",186,186,186);
    	printf("			%c%c%c%c%c%c   %c%c%c\n",204,205,203,205,205,188,204,205,205);
    	printf("			%c %c%c     %c\n",186,200,187,186);
    	printf("			%c  %c%c    %c\n",186,200,187,186);
    	printf("			%c   %c%c %c %c%c%c%c%c%c %c\n",186,200,187,220,200,205,205,205,205,205,220);SetColor(15);
    	SetColor(3);cout <<endl<<endl<<"			    DOCENTE" << endl<<endl;SetColor(15);
    	cout<<"	CLASSE:"<<endl<<endl;
    	for(int i=0;i<MAX_NUM_CLASS;i++)
    	{
    	cout <<"    "<< i+1 <<") " << classi[i] << endl;
    }
    	SetColor(2);cout <<endl<< "    0) Indietro" << endl<<endl;SetColor(15);
    	
    	
    	do {
    		SetColor(14);printf("	%c%c%c%c> ",196,196,196,196);SetColor(15);
    		cin >> classe;
    		if((classe < 0)||(classe > 5))
    		cout<<endl<<"		ERRATO\n";
    	} 
    	while ((classe < 0)||(classe > 5));
    	return classe - 1;
    }
    
    int SelMateria() {
    	//Scopo:
    	//Parametri di input:
    	//Parametri di output:
    	//Parametri di I/0:
    	//Valore di ritorno:
    	int mat,i;
    	system("cls");
    	SetColor(9);printf("			%c%c%c%c%c%c   %c%c%c%c%c%c\n",201,205,205,205,205,187,201,205,205,205,205,205);
    	printf("			%c    %c   %c\n",186,186,186);
    	printf("			%c    %c   %c\n",186,186,186);
    	printf("			%c%c%c%c%c%c   %c%c%c\n",204,205,203,205,205,188,204,205,205);
    	printf("			%c %c%c     %c\n",186,200,187,186);
    	printf("			%c  %c%c    %c\n",186,200,187,186);
    	printf("			%c   %c%c %c %c%c%c%c%c%c %c\n",186,200,187,220,200,205,205,205,205,205,220);SetColor(15);
    	SetColor(3);cout <<endl<<endl<<"			    DOCENTE" << endl<<endl;SetColor(15);
    	cout<<"	MATERIE:" << endl<<endl;
    	for(i=0;i<MAX_NUM_MATERIE_CLASS;i++)
    	{
    	cout <<"    "<< i+1<<") "<< materie[i] << endl;
    	}
    	SetColor(2);cout <<endl<< "    0) Indietro" << endl<<endl;SetColor(15);
    	
    	
    	do {
    		SetColor(14);printf("	%c%c%c%c> ",196,196,196,196);SetColor(15);
    		cin >> mat;
    		if((mat < 0)||(mat > 7))
    		cout<<endl<<"		ERRATO\n";
    	} 
    	while ((mat < 0)||(mat > 7));
    	return mat - 1;
    }
    
    int SelGiorno(int mese) {
    	//Scopo:
    	//Parametri di input:
    	//Parametri di output:
    	//Parametri di I/0:
    	//Valore di ritorno:
    	int giorno;
    	system("cls");
    	SetColor(9);printf("			%c%c%c%c%c%c   %c%c%c%c%c%c\n",201,205,205,205,205,187,201,205,205,205,205,205);
    	printf("			%c    %c   %c\n",186,186,186);
    	printf("			%c    %c   %c\n",186,186,186);
    	printf("			%c%c%c%c%c%c   %c%c%c\n",204,205,203,205,205,188,204,205,205);
    	printf("			%c %c%c     %c\n",186,200,187,186);
    	printf("			%c  %c%c    %c\n",186,200,187,186);
    	printf("			%c   %c%c %c %c%c%c%c%c%c %c\n",186,200,187,220,200,205,205,205,205,205,220);SetColor(15);
    	SetColor(3);cout <<endl<<endl<<"			    DOCENTE" << endl<<endl;SetColor(15);
    	cout<<endl<<endl <<"	SELEZIONARE IL GIORNO: ";
    	
    	
    	switch(mese)
    	{
    		case 1: case 3: case 5: case 7: case 8: case 10: case 12: 
    		do {
    		SetColor(14);cout<<endl;printf("\n	%c%c%c%c> ",196,196,196,196);SetColor(15);
    		cin >> giorno;
    		if((giorno< 1) or (giorno > 31))
    		cout<<endl<<"		ERRATO\n";
    		} 
    		while ((giorno< 1) or (giorno > 31));
    		break;
    		
    		case 4: case 6: case 9: case 11:
    		do {
    		SetColor(14);cout<<endl;printf("\n	%c%c%c%c> ",196,196,196,196);SetColor(15);
    		cin >> giorno;
    		if((giorno< 1) or (giorno > 30))
    		cout<<endl<<"		ERRATO\n";
    		} 
    		while ((giorno< 1) or (giorno > 30));	
    		break;
    		
    		case 2:
    		do {
    		SetColor(14);cout<<endl;printf("\n	%c%c%c%c> ",196,196,196,196);SetColor(15);
    		cin >> giorno;
    		if((giorno< 1) or (giorno > 28))
    		cout<<endl<<"		ERRATO\n";
    		} 
    		while ((giorno< 1) or (giorno > 28));
    		break;	
    	}
    
    	return giorno;
    }
    
    int SelMese() {
    	//Scopo:
    	//Parametri di input:
    	//Parametri di output:
    	//Parametri di I/0:
    	//Valore di ritorno:
    	int mese;
    	system("cls");
    	SetColor(9);printf("			%c%c%c%c%c%c   %c%c%c%c%c%c\n",201,205,205,205,205,187,201,205,205,205,205,205);
    	printf("			%c    %c   %c\n",186,186,186);
    	printf("			%c    %c   %c\n",186,186,186);
    	printf("			%c%c%c%c%c%c   %c%c%c\n",204,205,203,205,205,188,204,205,205);
    	printf("			%c %c%c     %c\n",186,200,187,186);
    	printf("			%c  %c%c    %c\n",186,200,187,186);
    	printf("			%c   %c%c %c %c%c%c%c%c%c %c\n",186,200,187,220,200,205,205,205,205,205,220);SetColor(15);
    	SetColor(3);cout <<endl<<endl<<"			    DOCENTE" << endl<<endl;SetColor(15);
    	cout<<endl<<endl <<"	SELEZIONARE IL MESE: ";
    	
    	
    	do {
    		SetColor(14);cout<<endl;printf("\n	%c%c%c%c> ",196,196,196,196);SetColor(15);
    		cin >> mese;
    		if((mese < 1)||(mese > 12))
    		cout<<endl<<"		ERRATO\n";
    	}
    	while ((mese < 1)||(mese > 12));
    	return mese;
    }
    
    void InserisciVoto() {
    	//Scopo:
    	//Parametri di input:
    	//Parametri di output:
    	//Parametri di I/0:
    	//Valore di ritorno:
    	//siccome e il prof devo stabilire la lista delle classi disponibili
    	//e scegliere tra una materia che insegna il prof in nelle classi disponibli
    	//poi aggiungo il voto
    	//int classe = SelClasse();
    	//int posizione = SelAlunno(classe);
    	//int materia = SelMateria();
    	int classe;
    	int posizione;
    	int voto;
    		do{
    			classe = SelClasseProf();
    			if(classe!=-1)
    				
    					do{
    					posizione = SelAlunnoProf(classe);
    					if(posizione!=-1)
    					{
    						float voto;
    						string votoda;
    						int materia=SelMateria();
    						int mese = SelMese();
    						int giorno = SelGiorno(mese);
    						system("cls");
    						SetColor(9);printf("			%c%c%c%c%c%c   %c%c%c%c%c%c\n",201,205,205,205,205,187,201,205,205,205,205,205);
    						printf("			%c    %c   %c\n",186,186,186);
    						printf("			%c    %c   %c\n",186,186,186);
    						printf("			%c%c%c%c%c%c   %c%c%c\n",204,205,203,205,205,188,204,205,205);
    						printf("			%c %c%c     %c\n",186,200,187,186);
    						printf("			%c  %c%c    %c\n",186,200,187,186);
    						printf("			%c   %c%c %c %c%c%c%c%c%c %c\n",186,200,187,220,200,205,205,205,205,205,220);SetColor(15);
    						SetColor(3);cout <<endl<<endl<<"			    DOCENTE" << endl<<endl;SetColor(15);
    						
    						cout<<endl<<endl <<"	INSERIRE IL VOTO: ";
    					
    						
    					 do {
    					 	SetColor(14);printf("	%c%c%c%c> ",196,196,196,196);SetColor(15);
    							cin >> voto;
    							if((voto < 0) or (voto > 10))
    							cout<<endl<<"		ERRATO\n";
    						} 
    						while ((voto < 0) or (voto > 10));
    						re[giorno][mese][classe][posizione].voti[last_voto[giorno][mese][classe][posizione][materia]][materia]=voto;
    						last_voto[giorno][mese][classe][posizione][materia]++;
    					}
    						}while(posizione!=-1);
    				
    			}while(classe!=-1);
    }
    
    int SelProf(){
    	//Scopo:
    	//Parametri di input:
    	//Parametri di output:
    	//Parametri di I/0:
    	//Valore di ritorno:
    	int posizione,i;
    	system("cls");
    	SetColor(9);printf("			%c%c%c%c%c%c   %c%c%c%c%c%c\n",201,205,205,205,205,187,201,205,205,205,205,205);
    	printf("			%c    %c   %c\n",186,186,186);
    	printf("			%c    %c   %c\n",186,186,186);
    	printf("			%c%c%c%c%c%c   %c%c%c\n",204,205,203,205,205,188,204,205,205);
    	printf("			%c %c%c     %c\n",186,200,187,186);
    	printf("			%c  %c%c    %c\n",186,200,187,186);
    	printf("			%c   %c%c %c %c%c%c%c%c%c %c\n",186,200,187,220,200,205,205,205,205,205,220);SetColor(15);
    	SetColor(3);cout <<endl<<endl<<"			    DOCENTE" << endl<<endl;SetColor(15);
    	cout<<"	PROFESSORI: " << endl<<endl;
    	for(i=0;i<MAX_NUM_PROF_INSTITUTO;i++)
    	{
    	cout <<"    "<< i+1 <<") "<< info_prof[i].nome << info_prof[i].cognome << endl;
    	}
    	SetColor(2);cout <<endl<< "    0) Indietro" << endl<<endl;SetColor(15);
    	
    
    	do {
    		SetColor(14);printf("	%c%c%c%c> ",196,196,196,196);SetColor(15);
    		cin >> posizione;
    		if((posizione < 0)||(posizione > 4))
    		cout<<endl<<"		ERRATO\n";
    	} 
    	while ((posizione < 0)||(posizione > 4));
    	return posizione - 1;
    }
    
    void InserisciNote(int pos){
    	//Scopo:
    	//Parametri di input:
    	//Parametri di output:
    	//Parametri di I/0:
    	//Valore di ritorno:
    	string nota;
    	int classe;
    	int posizione;
    	int mese;
    			do{
    			classe = SelClasseProf();
    			if(classe!=-1)
    				
    					do{
    					posizione = SelAlunnoProf(classe);
    					if(posizione!=-1)
    					{
    						int mese = SelMese();
    						int giorno = SelGiorno(mese);
    						
    						system("cls");
    						SetColor(9);printf("			%c%c%c%c%c%c   %c%c%c%c%c%c\n",201,205,205,205,205,187,201,205,205,205,205,205);
    						printf("			%c    %c   %c\n",186,186,186);
    						printf("			%c    %c   %c\n",186,186,186);
    						printf("			%c%c%c%c%c%c   %c%c%c\n",204,205,203,205,205,188,204,205,205);
    						printf("			%c %c%c     %c\n",186,200,187,186);
    						printf("			%c  %c%c    %c\n",186,200,187,186);
    						printf("			%c   %c%c %c %c%c%c%c%c%c %c\n",186,200,187,220,200,205,205,205,205,205,220);SetColor(15);
    						SetColor(3);cout <<endl<<endl<<"			    DOCENTE" << endl<<endl;SetColor(15);
    						cout <<endl<<endl <<"	INSERISCI LA NOTA: ";
    						fflush(stdin);
    						getline(cin,nota);
    						fflush(stdin);
    						nota+= "\n    Messa da prof: "+ info_prof[pos].nome + info_prof[pos].cognome;
    						re[giorno][mese][classe][posizione].note[last_nota[MAX_NUM_GG][MAX_NUM_MM][MAX_NUM_CLASS][MAX_NUM_STUD_CLASS]] = nota;
    						last_nota[giorno][mese][classe][posizione]++;
    					}
    						}while(posizione!=-1);
    				
    			}while(classe!=-1);
    	
    }
    
    void InserisciAssenze(){
    	//Scopo:
    	//Parametri di input:
    	//Parametri di output:
    	//Parametri di I/0:
    	//Valore di ritorno:
    	int classe;
    	int posizione;
    	int mese;
    	
    			do{
    			classe = SelClasseProf();
    			if(classe!=-1)
    				
    					do{
    					posizione = SelAlunnoProf(classe);
    					if(posizione!=-1)
    					{
    					int mese = SelMese();
    					int giorno = SelGiorno(mese);
    					system("cls");
    					SetColor(9);printf("			%c%c%c%c%c%c   %c%c%c%c%c%c\n",201,205,205,205,205,187,201,205,205,205,205,205);
    					printf("			%c    %c   %c\n",186,186,186);
    					printf("			%c    %c   %c\n",186,186,186);
    					printf("			%c%c%c%c%c%c   %c%c%c\n",204,205,203,205,205,188,204,205,205);
    					printf("			%c %c%c     %c\n",186,200,187,186);
    					printf("			%c  %c%c    %c\n",186,200,187,186);
    					printf("			%c   %c%c %c %c%c%c%c%c%c %c\n",186,200,187,220,200,205,205,205,205,205,220);SetColor(15);
    					SetColor(3);cout <<endl<<endl<<"			    DOCENTE" << endl<<endl;SetColor(15);
    					re[giorno][mese][classe][posizione].assenza = true;
    					cout <<endl<<endl<<"	ASSENZA SEGNATA" << endl<<endl;
    					system("pause");
    					}
    											
    					}while(posizione!=-1);
    				
    			}while(classe!=-1);
    }
    
    void InserisciPresenza(){
    	//int classe = SelClasse();
    	//int posizione = SelAlunno(classe);
    	
    	int classe;
    	int posizione;
    	int mese;
    	
    			do{
    			classe = SelClasseProf();
    			if(classe!=-1)
    				
    					do{
    					posizione = SelAlunnoProf(classe);
    					if(posizione!=-1)
    					{
    						int mese = SelMese();
    						int giorno = SelGiorno(mese);
    						system("cls");
    						SetColor(9);printf("			%c%c%c%c%c%c   %c%c%c%c%c%c\n",201,205,205,205,205,187,201,205,205,205,205,205);
    						printf("			%c    %c   %c\n",186,186,186);
    						printf("			%c    %c   %c\n",186,186,186);
    						printf("			%c%c%c%c%c%c   %c%c%c\n",204,205,203,205,205,188,204,205,205);
    						printf("			%c %c%c     %c\n",186,200,187,186);
    						printf("			%c  %c%c    %c\n",186,200,187,186);
    						printf("			%c   %c%c %c %c%c%c%c%c%c %c\n",186,200,187,220,200,205,205,205,205,205,220);SetColor(15);
    						SetColor(3);cout <<endl<<endl<<"			    DOCENTE" << endl<<endl;SetColor(15);
    						re[giorno][mese][classe][posizione].assenza = false;
    						cout <<endl<<endl <<"	PRESENZA ASSEGNATA" << endl<<endl;
    						system("pause");
    					}
    					}while(posizione!=-1);
    				
    			}while(classe!=-1);
    }
    
    void InfoStudente()
    {
    		int classe;
    	int posizione;
    	
    	
    	
    			do{
    			classe = SelClasseProf();
    			if(classe!=-1)
    				
    					do{
    					posizione = SelAlunnoProf(classe);
    					if(posizione!=-1)
    					{		
    					system("cls");
    					SetColor(9);printf("			%c%c%c%c%c%c   %c%c%c%c%c%c\n",201,205,205,205,205,187,201,205,205,205,205,205);
    					printf("			%c    %c   %c\n",186,186,186);
    					printf("			%c    %c   %c\n",186,186,186);
    					printf("			%c%c%c%c%c%c   %c%c%c\n",204,205,203,205,205,188,204,205,205);
    					printf("			%c %c%c     %c\n",186,200,187,186);
    					printf("			%c  %c%c    %c\n",186,200,187,186);
    					printf("			%c   %c%c %c %c%c%c%c%c%c %c\n",186,200,187,220,200,205,205,205,205,205,220);SetColor(15);
    					SetColor(3);cout <<endl<<endl<<"			    DOCENTE" << endl<<endl;SetColor(15);
    					
    					cout <<"    "<< studenti[classe][posizione].nome << studenti[classe][posizione].cognome<<endl;
    					VediVoti(classe,posizione);
    					VediAss(classe,posizione);
    					VediNote(classe,posizione);
    					}
    					}while(posizione!=-1);
    				
    			}while(classe!=-1);
    }
    
    
    
    void Prof(int ruolo) {
    	//Scopo:
    	//Parametri di input:
    	//Parametri di output:
    	//Parametri di I/0:
    	//Valore di ritorno:
    	int pos, scelta, classe,posizione,materia;
    	SetColor(9);printf("			%c%c%c%c%c%c   %c%c%c%c%c%c\n",201,205,205,205,205,187,201,205,205,205,205,205);
    	printf("			%c    %c   %c\n",186,186,186);
    	printf("			%c    %c   %c\n",186,186,186);
    	printf("			%c%c%c%c%c%c   %c%c%c\n",204,205,203,205,205,188,204,205,205);
    	printf("			%c %c%c     %c\n",186,200,187,186);
    	printf("			%c  %c%c    %c\n",186,200,187,186);
    	printf("			%c   %c%c %c %c%c%c%c%c%c %c\n",186,200,187,220,200,205,205,205,205,205,220);SetColor(15);
    	
    	do{
    	pos = SelProf();
    	if(pos!=-1)
    
    					
    									do {
    									system("cls");
    									SetColor(9);printf("			%c%c%c%c%c%c   %c%c%c%c%c%c\n",201,205,205,205,205,187,201,205,205,205,205,205);
    									printf("			%c    %c   %c\n",186,186,186);
    									printf("			%c    %c   %c\n",186,186,186);
    									printf("			%c%c%c%c%c%c   %c%c%c\n",204,205,203,205,205,188,204,205,205);
    									printf("			%c %c%c     %c\n",186,200,187,186);
    									printf("			%c  %c%c    %c\n",186,200,187,186);
    									printf("			%c   %c%c %c %c%c%c%c%c%c %c\n",186,200,187,220,200,205,205,205,205,205,220);SetColor(15);
    									SetColor(3);cout <<endl<<endl<<"			    DOCENTE" << endl<<endl;SetColor(15);
    									cout<<"	INSERIRE:         VEDI:"<<endl<<endl;
    									cout <<"    1) Voti              5) Info Studente" << endl;
    									cout << "    2) Note     " << endl;
    									cout << "    3) Assenze       " << endl;
    									cout << "    4) Presenza" <<endl;
    									SetColor(2);cout <<endl<<"    0) Indietro" << endl<<endl;SetColor(15);
    									
    									
    									do {
    										SetColor(14);printf("	%c%c%c%c> ",196,196,196,196);SetColor(15);
    										cin >> scelta;
    										if((scelta < 0)||(scelta > 7))
    										cout<<endl<<"		ERRATO\n";
    									} 
    									while ((scelta < 0)||(scelta > 7));
    									switch (scelta) {
    									case 1:
    										InserisciVoto();
    										break;
    									case 2:
    										InserisciNote(pos);
    										break;
    									case 3:
    										InserisciAssenze();
    										break;
    									case 4:
    										InserisciPresenza();
    										break;
    									case 5: 
    										InfoStudente();
    										break;
    									case 0:
    										posizione=0;
    										break;
    									}
    								} while (scelta != 0);
    						
    					
    							
    		
    				
    	}while(pos!=-1);
    	
    
    }
    
    int main() 
    {
    	int ruolo;
    	Init();
    	
    	do
    	{
    		ruolo = Ruolo();
    		switch (ruolo)
    		{
    		case 1:
    			Alunno();
    			break;
    		case 2:
    			Prof(ruolo);
    			break;
    		}
    	} while (ruolo != 0);
    	exit;
    }
    Alla fine ho risolto in un altro modo, fatemi sapere cosa ne pensate.
Devi accedere o registrarti per scrivere nel forum
5 risposte