#include <iostream>
#include <string.h>
#include <conio.h>
using namespace std;
#define MAX 10 // è il numero massimo di studenti che possiamo immettere;
#define MAXCARATTERI 25 // è la lunghezza massima delle nostre stringhe;
int numStudente = -1; // numero studente che stiamo aggiungendo;
class persona
{
public:
char nome[MAXCARATTERI];
char cognome[MAXCARATTERI];
int anno_di_nascita;
int i;
void legginome(int);
void stampanome(int);
void leggicognome(int);
void stampacognome(int);
void leggianno(int);
void stampaanno(int);
bool dati_corrispondono(const char* pNome, const char* pCogn);
};
class studente : public persona
{
int matricola;
int numero_di_crediti;
char* corso_di_studi;
public:
void leggimatricola(int);
void stampamatricola(int);
void leggicrediti(int);
void stampacrediti(int);
void corso_studi (int);
void ricercamatricola(int);
void acquisisci(int&);
int ritornomenu();
};
studente studenti[MAX];
//Funzione che cerca gli studenti per nome e cognome;
void ricercacogn(int t)
{
char in_nome[MAXCARATTERI];
char in_cognome[MAXCARATTERI];
system("cls");
cout<<"Stampa i dati dello studente ricercato;\n\n";
cout<<"Inserisci il nome dello studente da ricercare : ";
cin >> in_nome;
cout<<"Inserisci il cognome dello studente da ricercare : ";
cin >> in_cognome;
int i;
bool trovato = false;
int index;
for (i = 0; i < MAX; i++)
{
if (!(strcmp(in_nome, studenti[i].nome)) && !(strcmp(in_cognome, studenti[i].cognome)))
{
trovato = true;
index = i;
break;
}
}
if(trovato)
{
studenti[index].stampanome(0);
studenti[index].stampacognome(0);
studenti[index].stampaanno(0);
getchar(); // Cosi' mi fa vedere lo studente trovato;
getchar();
}
else{
cout<<"\nNon esiste nessuno studente registrato con questo nome ";
getchar();
getchar();
}
}
//Funzione che cerca gli studenti per anno di nascita;
void ricercaanno(int t)
{
int anno = 0;
system("cls");
cout<<"Stampa i dati dello studente ricercato;\n\n";
cout<<"Inserisci l'anno di nascita dello studente da ricercare : ";
cin >> anno;
int i;
bool trovato = false;
int index;
for (i = 0; i < MAX; i++)
{
if (studenti[i].anno_di_nascita == anno)
{
trovato = true;
studenti[i].stampanome(0);
studenti[i].stampacognome(0);
studenti[i].stampaanno(0);
cout<<"\n\n";
}
}
if(trovato)
{
getchar(); //Cosi' mi fa vedere lo studente trovato
getchar();
}
else{
cout<<"\nNon esiste nessuno studente registrato con questo anno di nascita";
getchar();
getchar();
}
}
//Ricerca lo studente che possiede questo numero di matricola;
void studente::ricercamatricola(int t)
{
int in_matricola;
system("cls");
cout<<"Stampa i dati dello studente ricercato;\n\n";
cout<<"Inserisci il numero di matricola dello studente da ricercare : ";
cin >> in_matricola;
int i;
bool trovato = false;
int index;
for (i = 0; i < MAX; i++)
{
if (matricola=in_matricola)
{
trovato = true;
index = i;
break;
}
}
if(trovato)
{
studenti[index].stampanome(0);
studenti[index].stampacognome(0);
studenti[index].stampaanno(0);
getchar(); //Cosi' mi fa vedere lo studente trovato
getchar();
}
else{
cout<<"\nNon esiste nessuno studente registrato con questo nome ";
getchar();
getchar();
}
}
void persona::legginome(int i)
{
cout << "\nInserisci il nome della persona: ";
cin>>nome;
}
void persona::stampanome(int i)
{
cout<<"\nNome : "<<nome;
}
void persona::leggicognome(int i)
{
cout << "\nInserisci il cognome della persona: ";
cin>>cognome;
}
void persona::stampacognome(int i)
{
cout<<"\nCognome : "<<cognome;
}
void persona::leggianno(int i)
{
cout << "\nInserisci l'anno di nascita della persona: ";
cin>>anno_di_nascita;
}
void persona::stampaanno(int i)
{
cout<<"\nAnno di nascita : "<<anno_di_nascita;
}
void studente::leggimatricola(int i)
{
bool cont = true;
int temp = 0;
do
{
cout << "\nInserisci il numero di matricola della persona: ";
cin>>temp;
//Controlla se esiste gia' fra gli studenti esistenti
bool presente = false;
if (numStudente > 0)
{
int i = 0;
for(;i < numStudente;i++)
{
if (studenti[i].matricola == temp)
{
presente = true;
break;
}
}
}
if (!presente)
cont = false;
else
cout << "Esiste gia' uno studente con questa matricola!" << endl;
} while (cont);
matricola = temp;
}
void studente::stampamatricola(int i)
{
cout<<"\nMatricola numero : "<<matricola;
}
void studente::leggicrediti(int i)
{
cout << "\nInserisci il numero di crediti della persona: ";
cin>>numero_di_crediti;
}
void studente::stampacrediti(int i)
{
cout<<"\nCrediti : "<<numero_di_crediti;
}
void studente::corso_studi(int i)
{
int dm;
cout<<"\n\nInserisci il corso di Ingegneria :\n";
cout<<"1 - INFORMATICA\n";
cout<<"2 - MECCANICA\n";
cout<<"3 - EDILE\n";
cout<<"4 - CIVILE\n";
cout<<"5 - GESTIONALE\n";
cout<<"Scegli il corso di Ingegneria: ";
cin>>dm;
switch(dm)
{
case 1 :
{
corso_di_studi="INFORMATICA";
break;
}
case 2 :
{
corso_di_studi="MECCANICA";
break;
}
case 3 :
{
corso_di_studi="EDILE";
break;
}
case 4 :
{
corso_di_studi="CIVILE";
break;
}
case 5 :
{
corso_di_studi="GESTIONALE";
break;
}
default :
{
corso_studi(i);
}
}
}
int menu(int); //E' il menù principale;
int vuoto(int);//Controlla se è stato registrato almeno uno studente;
void main()
{
int tot=0;//è il numero totale di studenti che sono stati immessi;
//Inizializza studenti con dei valori di default
int i;
for (i = 0; i < MAX; i++)
{
studenti[i] = studente();
sprintf(studenti[i].nome, "default");
sprintf(studenti[i].cognome, "default");
studenti[i].anno_di_nascita = 0;
}
menu(tot); //Richiama la funzione menù;
}
//Funzione di acquisizione;
void studente::acquisisci(int& i)
{
system("cls");
cout<<"\t\tFase di acquisizione ;\n\n";
cout<<"Studente numero "<<(i)<<"\n\n";
legginome(i);
leggicognome(i);
leggianno(i);
corso_studi(i); //Funzione che determina il corso di studi dello studente;
leggimatricola(i);
leggicrediti(i);
}
//Funzione menù;
int menu(int t)
{
studente s;
do{
system("cls");
cout<<"\t\tMenu': \n\n\n";
cout<<"1 - Inserisci dati dello studente\n";
cout<<"2 - Ricerca studente per nome e cognome\n";
cout<<"3 - Ricerca studente per numero di matricola\n";
cout<<"4 - Ricerca studente per anno di nascita\n";
cout<<"\n5 - FINE\n";
cout<<"\nScegli opzione: ";
char risp;
cin>>risp;
switch (risp)
{
case '1': {
system("cls");
if (numStudente > MAX)
{
cout << "Sono gia' presenti il numero massimo di studenti!";
getchar();
}
else
{
do
{
numStudente++; //Aumenta
int num = numStudente + 1;
studenti[numStudente].acquisisci(num);
char dm;
do{
cout<<"\n\nInserisci un'altro studente? premi N per terminare ";
dm=getche();
dm=toupper(dm);
}while((dm!=13)&&(dm!='N'));
if (toupper(dm)=='N')
{
menu(0);
break;
}
system("cls");
} while (1);
}
break;
}
case '2': {
if(vuoto(t))
ricercacogn(t);
break;
}
case '3': {
if(vuoto(t))
s.ricercamatricola(t);
break;
}
case '4' :
if(vuoto(t))
ricercaanno(t);
break;
case '5': {
return 0;
}
}
}while(1);
}
//Controlla se è stato registrato almeno uno studente;
int vuoto(int t)
{
if (numStudente==-1)
{
cout<<"Nessuno studente registrato;";
while(!kbhit());
return 0;
}
system("cls");
return 1;
}
//L'utente sceglie se ritornare al menù o rimane nel ciclo;
int studente::ritornomenu()
{
char dm;
do{
cout<<"\n\nPer ritornare al menu' premi \'M\' altrimenti per continuare permi INVIO ";
dm=getche();
dm=toupper(dm);
}while((dm!=13)&&(dm!='M'));
if (toupper(dm)=='M')
{
return 1;
}
return 0;
}