/*
	Programma che gestisce i dati degli esami svolti da alcuni studenti utilizzando le struct
*/

#include <iostream.h>
#include <conio.h>
#include <string.h>
#include <stdio.h>

struct studente{
  int matricola;
  char materia[20];
  int g,m,a;
  int voto;
};

studente studenti[10]; //array di tipo studente

void stampa_studenti();
void stampa_materia();
void stampa_18_25();
void stampa_date();
void inserisci_studenti();

int main()
 {

  int esci=0;

  while(esci==0)
  {
	 clrscr();
	 cout<<"\n1) Inserimento dati studenti";
	 cout<<"\n2) Numero di studenti che hanno sostenuto l'esame in una determinata materia";
	 cout<<"\n3) Stampa dei dati dello studente con numero di matricola dato";
	 cout<<"\n4) Numeri matricola che hanno un voto compreso tra 18 e 25";
	 cout<<"\n5) Date degli appelli di una materia in un anno";
	 cout<<"\n6) Esci"<<endl;
	 int scelta;
	 cin>>scelta;

	 switch(scelta)
	 {
	  case 1: inserisci_studenti();   break;
	  case 2: stampa_studenti(); break;
	  case 3: stampa_materia();  break;
	  case 4: stampa_18_25(); break;
	  case 5: stampa_date(); break;
	  case 6: esci=1;
	  default: break;
	 }
  }
  return 0;
 }

void stampa_studenti(){
	char materia[20];
	clrscr();
	cout<<"\nInserire la materia da ricercare: ";
	gets(materia);
	int cont=0;
	for(int i=0;i<10;i++)
	{
	 if(!strcmp(materia,studenti[i].materia))
		cont++;
	}

	cout<<"L'esame di "<<materia<<" è stato sostenuto da "<<cont<<" studenti\n"<<endl;
	cout<<"Premere un tasto per continuare...";
	getch();
}

void stampa_materia(){
  int matricola;
  clrscr();
  cout<<"\nInserire il numero di matricola: ";
  cin>>matricola;
  for(int i = 0; i<10; i++){
	if(studenti[i].matricola == matricola){
		cout<<"\n\tDati della matricola numero "<<matricola<<":"<<endl;
		cout<<"\n\tMateria: "<<studenti[i].materia;
		cout<<"\n\tVoto: "<<studenti[i].voto;
		cout<<"\n\tData: "<<studenti[i].g<<"\\"<<studenti[i].m<<"\\"<<studenti[i].a;
	}
	}
  cout<<"\n\nPremere un tasto per continuare...";
  getch();
}

void stampa_18_25(){
  clrscr();
  cout<<"\nI seguenti numeri di matricola hanno preso voti compresi tra 18 e 25:"<<endl;
  for(int i=0;i<10;i++)
  {
	  if(studenti[i].voto<25 && studenti[i].voto>18) cout<<"\n"<<studenti[i].matricola;
  }
  cout<<"\n\nPremere un tasto per continuare...";
  getch();
}

void stampa_date(){
	char materia[20];
	clrscr();
	cout<<"\n\tINSERIRE LA MATERIA: ";
	gets(materia);
  for(int i=0;i<10;i++)
	{
	 if(!strcmp(materia,studenti[i].materia))
	 {
	  cout<<"\n\n\tMatricola n° "<<studenti[i].matricola;
	  cout<<"\n\tData:"<<studenti[i].g<<"\\"<<studenti[i].m<<"\\"<<studenti[i].a;
	 }
	}
	cout<<"\n\nPremere un tasto per continuare...";
	getch();
}

void inserisci_studenti(){
for(int x=0; x<10; x++){
	clrscr();
	cout<<"\n\tINSERIRE I DATI DEL "<<(x+1)<<"° STUDENTE"<<endl;
	cout<<"\nN° MATRICOLA: "; cin>>studenti[x].matricola;
	cout<<"\nMATERIA: "; gets(studenti[x].materia);
	cout<<"\nVOTO: ";cin>>studenti[x].voto;
	cout<<"\nGIORNO: ";cin>>studenti[x].g;cout<<"MESE: ";cin>>studenti[x].m;cout<<"ANNO: ";cin>>studenti[x].a;
}
}

