Sie sind auf Seite 1von 4

#include <stdio.

h>
#include <stdlib.h>

/*******Gestion des notes des etudiants ****/


/** -----------------------*/
/** | Etudiant |*/
/** -----------------------*/
/** | CNE : Entier |*/
/** | Nom : chaine |*/
/** | nbrNotes : Entier |*/
/** | Tableau notes : Reel|*/
/** -----------------------*/

/*** Mes types**/


typedef struct{
int cne; // infos unique
char nom[20];
int nbreNotes;
float notes[5];
}Etudiant;
/******** Variable globales*****/
Etudiant *BD; // Etudiant tab[50];
int cpt=0;
/******** Prototypes ********/
void ajouterEtudiant();
int chercherEtudiant(int cne);
void lister();
float calculMoy(int pos);
void init();
void supprimerEtd();
void modifierEtd();
void modifierEtudiant();
void trieParMoyDesc();
/*****Fonction principale*******/
int main()
{
int choix;
init();
do{
printf("\t-------Menu Principal---------\n");
printf("\t|1-----------Ajouter Etudiant|\n");
printf("\t|2----------Modifier Etudiant|\n");
printf("\t|3---------Supprimer Etudiant|\n");
printf("\t|4-------------------Lister |\n");
printf("\t|5---------trie Par Moy Desc |\n");
printf("\t|6---------------Enregister |\n");
printf("\t|0-------------------Quitter |\n");
printf("Entrez votre choix:");
scanf("%d",&choix);
switch(choix){
case 1:ajouterEtudiant();break;
case 2:modifierEtd();break;
case 3:supprimerEtd();break;
case 4:lister();break;
case 5:trieParMoyDesc();break;
case 0: printf("\tAu revoir\n");break;
default: printf("\tChoix invalide!!!!\n");

}
system("pause");
system("cls");

}while(choix!=0);
return 0;
}

int chercherEtudiant(int cne){


int pos=-1,i;
for(i=0;i<cpt;i++){
if(BD[i].cne==cne){
pos=i;
break;
}
}
return pos;
}

void ajouterEtudiant(){
Etudiant etd;
int i,pos;
printf("\tEntrez le CNE de l'etudiant:");
scanf("%d",&etd.cne);
pos=chercherEtudiant(etd.cne);
if(pos==-1){
printf("\tEntrez le nom et le nombre des notes:");
scanf("%s%d",etd.nom,&etd.nbreNotes);
printf("\tEntrez les %d notes de %s:",etd.nbreNotes,etd.nom);
for(i=0;i<etd.nbreNotes;i++)
scanf("%f",&etd.notes[i]);
cpt++;
if(cpt==1)
BD=malloc(cpt*sizeof(Etudiant));
else
BD=realloc(BD,cpt*sizeof(Etudiant));
BD[cpt-1]=etd;
printf("\tEtudiant ajouter avec succes\n");
}
else
printf("\tCet Etudiant existe deja!!!\n");

float calculMoy(int pos){


float som=0;
int i;
for(i=0;i<BD[pos].nbreNotes;i++)
som+=BD[pos].notes[i];

return som/BD[pos].nbreNotes;
}

void lister(){
int i;
printf("\t------------------------------\n");
printf("\t| CNE | Nom de Etd | Moyenne |\n");
printf("\t------------------------------\n");
for(i=0;i<cpt;i++)
printf("\t| %3d |%12s| %7.2f |\n",BD[i].cne,BD[i].nom,calculMoy(i));
printf("\t------------------------------\n");
}

void init(){
// int t[]={1,2,3,4};
Etudiant etd1={1,"khaldi",2,{10,11}};
Etudiant etd2={2,"mhamdi",3,{10,11,12}};
cpt=2;
BD=malloc(cpt*sizeof(Etudiant));
BD[0]=etd1;
BD[1]=etd2;

void supprimerEtd(){
int pos,cne,i;
printf("\tEntrez le CNE de l'etudiant a supprimer:");
scanf("%d",&cne);
pos=chercherEtudiant(cne);
if(pos!=-1){
for(i=pos;i<cpt-1;i++)
BD[i]=BD[i+1];
cpt--;
BD=realloc(BD,cpt*sizeof(Etudiant));
printf("\tEtudiant supprimer avec succes\n");

}else
printf("\tn'existe pas!!!!!\n");

void modifierEtd(){
int pos,i;
Etudiant etd;
printf("\tEntrez le CNE de l'etudiant a modifier:");
scanf("%d",&etd.cne);
pos=chercherEtudiant(etd.cne);
if(pos!=-1){
printf("\tEntrez le Nom de l'etudiant a modifier:");
fflush(stdin);
gets(etd.nom);
printf("\tEntrez le nombre des notes de l'etudiant a modifier:");
scanf("%d",&etd.nbreNotes);
printf("\tEntrez les notes de l'etudiant a modifier:");
for(i=0;i<etd.nbreNotes;i++)
scanf("%f",&etd.notes[i]);
BD[pos]=etd;
printf("\tEtudiant modifier avec succes\n");
}else
printf("\tn'existe pas!!!!!\n");

void trieParMoyDesc(){
int i,j;
Etudiant etd;
/****** tri par bulle ***/
for(j=0;j<cpt;j++){
for(i=0;i<cpt-1-j;i++){
if(calculMoy(i)<calculMoy(i+1)){
etd=BD[i];
BD[i]=BD[i+1];
BD[i+1]=etd;
}
}
}