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.