#include <stdio.
h>
#include <stdlib.h>
typedef struct {
char matricule[10];
char nom[50];
char prenom[50];
char dateNaissance[11];
float notes[5][3]; // 5 modules, 3 types de notes (cours, TD, TP)
float moyenneSemestre;
int aReussi; // 1 si la moyenne >= 10, 0 sinon
} Etudiant;
void saisirEtudiant(Etudiant *etudiant) {
printf("Matricule: ");
scanf("%s", etudiant->matricule);
printf("Nom: ");
scanf("%s", etudiant->nom);
printf("Prenom: ");
scanf("%s", etudiant->prenom);
printf("Date de naissance (JJ/MM/AAAA): ");
scanf("%s", etudiant->dateNaissance);
for (int i = 0; i < 5; i++) {
printf("Module %d - Note cours: ", i + 1);
scanf("%f", &etudiant->notes[i][0]);
printf("Module %d - Note TD: ", i + 1);
scanf("%f", &etudiant->notes[i][1]);
printf("Module %d - Note TP (entrez -1 si pas de TP): ", i + 1);
scanf("%f", &etudiant->notes[i][2]);
}
}
float calculerMoyenneModule(float notes[]) {
if (notes[2] != -1) { // Si le TP est inclus
return 0.4 * notes[0] + 0.4 * notes[1] + 0.2 * notes[2];
} else {
return 0.5 * notes[0] + 0.5 * notes[1];
}
}
void calculerMoyenneSemestre(Etudiant *etudiant, float coefficients[]) {
float somme = 0;
float sommeCoeffs = 0;
for (int i = 0; i < 5; i++) {
float moyenneModule = calculerMoyenneModule(etudiant->notes[i]);
somme += moyenneModule * coefficients[i];
sommeCoeffs += coefficients[i];
}
etudiant->moyenneSemestre = somme / sommeCoeffs;
etudiant->aReussi = (etudiant->moyenneSemestre >= 10);
}
void sauvegarderEtudiant(Etudiant etudiant, const char *nomFichier) {
FILE *fichier = fopen(nomFichier, "a"); // Mode ajout
if (fichier == NULL) {
printf("Erreur lors de l'ouverture du fichier.\n");
return;
}
fprintf(fichier, "%s;%s;%s;%s;%.2f\n",
etudiant.matricule, etudiant.nom, etudiant.prenom,
etudiant.dateNaissance, etudiant.moyenneSemestre);
fclose(fichier);
}
void rechercherEtudiant(const char *nomFichier, const char *matriculeRecherche) {
FILE *fichier = fopen(nomFichier, "r");
if (fichier == NULL) {
printf("Erreur lors de l'ouverture du fichier.\n");
return;
}
char ligne[256];
int trouve = 0;
while (fgets(ligne, sizeof(ligne), fichier)) {
char matricule[10], nom[50], prenom[50], dateNaissance[11];
float moyenne;
sscanf(ligne, "%[^;];%[^;];%[^;];%[^;];%f", matricule, nom, prenom,
dateNaissance, &moyenne);
if (strcmp(matricule, matriculeRecherche) == 0) {
printf("Etudiant trouve : %s %s, Moyenne : %.2f\n", nom, prenom,
moyenne);
trouve = 1;
break;
}
}
if (!trouve) {
printf("Etudiant non trouve.\n");
}
fclose(fichier);
}
#includevry <stdio.h>
#include <stdlib.h>
#include <string.h>
// Définition des structures et prototypes des fonctions ici...
int main() {
const char *nomFichier = "etudiants.txt"; // Nom du fichier de stockage
Etudiant etudiant;
float coefficients[5] = {3, 2, 4, 1, 3}; // Exemple de coefficients par module
int choix;
do {
printf("\n===== Gestion des Etudiants =====\n");
printf("1. Saisir un etudiant\n");
printf("2. Calculer la moyenne d'un etudiant\n");
printf("3. Sauvegarder un etudiant dans le fichier\n");
printf("4. Rechercher un étudiant par matricule\n");
printf("5. Quitter\n");
printf("Votre choix : ");
scanf("%d", &choix);
switch (choix) {
case 1:
printf("\n--- Saisie d'un etudiant ---\n");
saisirEtudiant(&etudiant);
break;
case 2:
printf("\n--- Calcul de la moyenne de l'etudiant ---\n");
calculerMoyenneSemestre(&etudiant, coefficients);
printf("Moyenne semestrielle : %.2f\n", etudiant.moyenneSemestre);
printf("Resultat : %s\n", etudiant.aReussi ? "Reussi" : "echoue");
break;
case 3:
printf("\n--- Sauvegarde de l'etudiant dans le fichier ---\n");
sauvegarderEtudiant(etudiant, nomFichier);
printf("Etudiant sauvegarde avec succes.\n");
break;
case 4:
printf("\n--- Recherche d'un etudiant par matricule ---\n");
char matriculeRecherche[10];
printf("Entrez le matricule a rechercher : ");
scanf("%s", matriculeRecherche);
rechercherEtudiant(nomFichier, matriculeRecherche);
break;
case 5:
printf("\nAu revoir !\n");
break;
default:
printf("\nChoix invalide. Veuillez réessayer.\n");
}
} while (choix != 5);
return 0;
}