0% ont trouvé ce document utile (0 vote)
111 vues4 pages

Gestion des élèves et notes en C

Le document décrit une structure de données pour représenter une classe contenant des fiches d'étudiants avec leurs notes. Il définit des fonctions pour lire, écrire, insérer et afficher les informations sur la classe et les étudiants.

Transféré par

Alloula Alae
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
111 vues4 pages

Gestion des élèves et notes en C

Le document décrit une structure de données pour représenter une classe contenant des fiches d'étudiants avec leurs notes. Il définit des fonctions pour lire, écrire, insérer et afficher les informations sur la classe et les étudiants.

Transféré par

Alloula Alae
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

#include <stdio.

h>
#include <string.h>
#define MAXNOTES
#define MAXELEVES

10
10

typedef struct {
int jour;
char mois[10];
int annee;
} DATE;
typedef struct {
char nom[10];
char prenom[10];
DATE date_naissance;
char info[3];
char redoublant;
int
groupe;
float notes[MAXNOTES];
char nom_module[MAXNOTES][30];
int
nbnotes;
// float moyenne;
} FICHE;
typedef struct {
int
n_eleves;
FICHE les_eleves[MAXELEVES];
} CLASSE;
CLASSE
CLASSE
void
void
CLASSE

LireClasse(void);
SaisieOrdonnee(void);
EcrireClasse(CLASSE);
Meilleur(CLASSE);
insertion(CLASSE, FICHE);

FICHE
void
FICHE
float
float
char

LireFiche(int);
EcrireFiche(FICHE);
AjouteNote(FICHE, char []);
Moyenne(FICHE);
MoyenneEleve(CLASSE, char []);
*touppercase(char []);

int main(void) {
CLASSE classe;
classe = LireClasse();
EcrireClasse(classe);
Meilleur(classe);
return 0;
}
CLASSE SaisieOrdonnee(void) {
CLASSE classe;
int
i, n_eleves;
do {
printf("Entrez le nombre des eleves (1 - %d): ?", MAXELEVES);
scanf("%d", &n_eleves);
if (n_eleves < 1 || n_eleves > MAXELEVES)
printf("\n\terr <--- Entrez un nombre entre 1 et %d --->\n", MAXELEVES);
} while (n_eleves < 1 || n_eleves > MAXELEVES);
classe.n_eleves=0;

for (i=0; i < n_eleves; i++)


classe = insertion(classe, LireFiche(i+1));
return classe;
}
CLASSE LireClasse(void) {
CLASSE classe;
int
i;
do {
printf("Entrez le nombre des eleves (1 - %d): ?", MAXELEVES);
scanf("%d", &classe.n_eleves);
if (classe.n_eleves < 1 || classe.n_eleves > MAXELEVES)
printf("\n\terr <--- Entrez un nombre entre 1 et %d --->\n", MAXELEVES);
} while (classe.n_eleves < 1 || classe.n_eleves > MAXELEVES);
for (i=0; i < classe.n_eleves; i++) {
classe.les_eleves[i] = LireFiche(i+1);
classe.les_eleves[i]=AjouteNote(classe.les_eleves[i], "Prog. C");
classe.les_eleves[i]=AjouteNote(classe.les_eleves[i], "Math");
}
return classe;
}
void

EcrireClasse(CLASSE classe) {
int i;

for (i=0; i<classe.n_eleves; i++) {


EcrireFiche(classe.les_eleves[i]);
printf("\n ----------------------------------------------------------------------------\n"
}
}
float MoyenneEleve(CLASSE classe, char Nom[]) {
int i;
for (i=0; i<classe.n_eleves; i++)
if (strcmp(classe.les_eleves[i].nom, Nom)==0) return (Moyenne(classe.les_eleves[i]));
return -1;
}
void Meilleur(CLASSE classe) {
int i, j, max_index;
struct {
char nom[30];
float moyenne;
} moyenne_eleves[MAXELEVES], temp;
for (i=0; i<classe.n_eleves; i++) {
moyenne_eleves[i].moyenne = Moyenne(classe.les_eleves[i]);
strcpy(moyenne_eleves[i].nom, classe.les_eleves[i].nom);
strcat(moyenne_eleves[i].nom, " ");
strcat(moyenne_eleves[i].nom, classe.les_eleves[i].prenom);
}
/* sorting */
for (i=0; i<classe.n_eleves; i++) {
max_index = i;
for (j= i + 1; j<classe.n_eleves; j++)
if (moyenne_eleves[max_index].moyenne < moyenne_eleves[j].moyenne)

max_index=j;

if (i != max_index) {
temp = moyenne_eleves[max_index];
moyenne_eleves[max_index] = moyenne_eleves[i];
moyenne_eleves[i] = temp;
}
}

/* Listing best students along with their GPAs */


printf("\n------------------------------------------------------------------------------\n")
printf("\tLe(s) etudiant(s) ayant obtenu la meilleure moyenne\n");
printf("------------------------------------------------------------------------------\n\n")
printf ("%25s\t\t\t%s", "Nom,
Prnom
", "Moyenne\n");
for (i=0; i < classe.n_eleves && moyenne_eleves[0].moyenne == moyenne_eleves[i].moyenne; i++
printf("%20s\t\t\t\t%4.2f\n", moyenne_eleves[i].nom, moyenne_eleves[i].moyenne);
}
CLASSE insertion(CLASSE classe, FICHE fiche) {
int i, index=0;
for (i=0; i<classe.n_eleves; i++)
if (strcmp(touppercase(classe.les_eleves[i].nom), touppercase(fiche.nom)) > 0) {
index = i;
break;
}

if ((index == i) && classe.n_eleves) {


/* shift all elements after index by one to the rigth */
for (i=classe.n_eleves; i > index; i--)
classe.les_eleves[i] = classe.les_eleves[i-1];
classe.les_eleves[index] = fiche;
classe.les_eleves[index]=AjouteNote(classe.les_eleves[index], "Prog. C");
classe.les_eleves[index]=AjouteNote(classe.les_eleves[index], "Math");
}
else {
classe.les_eleves[classe.n_eleves] = fiche;
classe.les_eleves[classe.n_eleves]=AjouteNote(classe.les_eleves[classe.n_eleves], "Prog. C"
classe.les_eleves[classe.n_eleves]=AjouteNote(classe.les_eleves[classe.n_eleves], "Math");
}
classe.n_eleves++;
return classe;
}
float Moyenne(FICHE f) {
float somme=0;
int i;
for (i=0; i < f.nbnotes; i++)
somme += f.notes[i];
return (f.nbnotes)?(somme/f.nbnotes) :((float) -1);
}
FICHE AjouteNote(FICHE fiche, char module[]) {
int i;
for (i=0; i<fiche.nbnotes; i++)
if (strcmp(fiche.nom_module[i], module) == 0) return fiche;
/* if the module name exists then simply return without doing anything */

if (fiche.nbnotes < MAXNOTES) {


strcpy(fiche.nom_module[fiche.nbnotes], module);
printf("Entrez sa notes pour le module de %s: ? ", module);

scanf("%f", &fiche.notes[fiche.nbnotes]);
fiche.nbnotes++;
}
else
printf("\n <---- c'est pas possible d'ajuter une note ---->\n");
return fiche;
}
FICHE LireFiche(int number) {
FICHE fiche;
printf("Entrez le nom de l'etudiant # %d:? ", number);
scanf(" %s", fiche.nom);
printf("Son prenom:? ");
scanf(" %s", fiche.prenom);

printf("Sa date de Naissance: (dd mm yyyy) ? ");


scanf("%d %s %d", &fiche.date_naissance.jour, fiche.date_naissance.mois, &fiche.date_naissance
printf("Sa formation: ? ");
scanf(" %s", fiche.info);
printf("Il est redoublant ou non (O:Oui, N:Non) ? ");
scanf(" %c", &fiche.redoublant);
printf("Son groupe: ?");
scanf("%d", &fiche.groupe);
fiche.nbnotes=0;
return fiche;
}
void
EcrireFiche(FICHE fiche) {
int i;
printf("\n------------------------------------------------\n");
printf("La fiche de %s, %s\n", fiche.nom, fiche.prenom);
printf("------------------------------------------------\n");
printf("\tSa date de Naissance est le %d %s %d\n", fiche.date_naissance.jour,












fiche.date_naissance.mois,












fiche.date_naissance.annee);
printf("\tSa formation: %s\n", fiche.info);
printf("\tSon groupe: %d\n", fiche.groupe);
printf("\tIl est redoublant: %s\n", (fiche.redoublant == 'O')? "Oui":"Non");
printf("\nSes notes: \n");
printf("\t
Nom de Module
Note\n");
printf("\t-----------------------------------\n");
for (i=0; i<fiche.nbnotes; i++)
printf("\t %17s \t %5.2f\n", fiche.nom_module[i], fiche.notes[i]);
}
char

*touppercase(char str[]) {
int i;
for( i=0; str[i]; i++)
if (str[i] >= 'a' && str[i] <= 'z') str[i] = 'A' + str[i] - 'a';
return str;

Vous aimerez peut-être aussi