ANNÉE ACADÉMIQUE 2024/2025
FACULTÉ DES SCIENECES
ENSEIGNENT:DR. Maxwell Ndognkon Manga
TP INF 132
PARTICIPANTS : MATRICULES:
NANG ANDRE DUVAL 24H2365
EBEDE EBEDE ROY ALVARO 24G2968
MAGWE LESLINE ANHAYSE
EXERCICE7 :
On veut développer une application de gestion des étudiants des différents
établissements .On tient compte des structures de données suivantes : Établissement, Filière,
Étudiant :
a) Un Étudiant est caractérisé par son numéro matricule, son nom, son prénom, sa date de
naissance, son niveau d’étude ;
b) Une filière est caractérisé par son code, son intitulé et le niveau d’étude (Licence, master)
et la liste des étudiants y sont inscrits ;
c) Un établissement est caractérisé par son numéro, son intitulé, sa date de création et la liste
des filières qui le compose.
Travail à faire :
1. Définir des structures de données qu’il faudrait utiliser pour représenter un étudiant, une
filière et un établissement chacune de ces structures doit être définit dans un fichier .h
2. Pour chacun de ces fichiers entête, définissez les fichiers sources .c de chacune de ces
structures. Par exemple une fonction permettant de
- Créer P établissements
- Créer M niveaux d’études pour un établissements donné en paramètre.
- Créer N étudiants inscrits dans un niveau d’étude donné en paramètre
3. Définir une fonction rechercher qui prend en un niveau d’étude et un numéro matricule. Il
affiche les informations de l’étudiant s’il existe sinon il affiche un message informant que
l’étudiant n’existe pas.
La fonction rechercher doit être définie dans le programme principal.
SOLUTION.
1. Définition des structures
- Fichier étudiant .h pour la définition d’un étudiant :
#ifndef ETUDIANT_H_INCLUDED
#define ETUDIANT_H_INCLUDED
// Définition de la structure Etudiant
typedef struct {
char matricule[20]; // Numéro matricule unique de l'étudiant
char nom[50]; // Nom de l'étudiant
char prenom[50]; // Prénom de l'étudiant
char date_naissance[15]; // Date de naissance au format JJ/MM/AAAA
char niveau[20]; // Niveau d'étude (Licence, Master, etc.)
} Etudiant;
#endif // ETUDIANT_H_INCLUDED
- Fichier filière .h pour représenter une filière
#ifndef FILIERE_H_INCLUDED
#define FILIERE_H_INCLUDED
#include "etudiant.h" // Inclusion de la structure Étudiant
// Définition de la structure Filiere
typedef struct {
char intitule[50]; // Intitulé de la filière (ex : Informatique)
char code[10]; // Code unique de la filière
char niveau[20]; // Niveau d'étude (Licence, Master)
int nbEtudiants; // Nombre d'étudiants inscrits dans cette filière
Etudiant etudiants[100]; // Liste des étudiants (limite : 100 étudiants)
} Filiere;
#endif // FILIERE_H_INCLUDED
-Fichier etablissement.h pour representer un etablissement
#ifndef ETABLISSEMENT_H_INCLUDED
#define ETABLISSEMENT_H_INCLUDED
#include "filiere.h" // Inclusion de la structure Filière
// Définition de la structure Établissement
typedef struct {
char numero[10]; // Numéro unique de l'établissement
char intitule[50]; // Nom de l'établissement
char date_creation[15]; // Date de création de l'établissement
int nbFilieres; // Nombre de filières dans l'établissement
Filiere filieres[50]; // Liste des filières (limite : 50 filières)
} Etablissement;
void creer_etablissements(Etablissement tab[],int nb);
#endif // ETABLISSEMENT_H_INCLUDED
2. Fonctions de création (dans les fichiers `.c`)
// etablissement.c
#include <stdio.h>
#include "etablissement.h"
// Fonction pour créer P établissements
void creer_etablissements(Etablissement etablissements[], int P) {
for (int i = 0; i < P; i++) {
printf("Nom de l'établissement %d : ", i + 1);
scanf("%s", etablissements[i].intitule);
printf("Numéro : ");
scanf("%s", etablissements[i].numero);
printf("Date de création (JJ/MM/AAAA) : ");
scanf("%s", etablissements[i].date_creation);
etablissements[i].nbFilieres = 0; // Initialisation du nombre de filières à 0
}
}
void creer_etablissements(Etablissement tab[],int nb);
void rechercher(Etablissement tab[],int nb, char niveau[],char matricule[]);
// etudiant.c
#include <stdio.h>
#include "etudiant.h"
// Fonction pour créer N étudiants
void creer_etudiants(Etudiant etudiants[], int N) {
for (int i = 0; i < N; i++) {
printf("Matricule : ");
scanf("%s", etudiants[i].matricule);
printf("Nom : ");
scanf("%s", etudiants[i].nom);
printf("Prénom : ");
scanf("%s", etudiants[i].prenom);
printf("Date de naissance (JJ/MM/AAAA) : ");
scanf("%s", etudiants[i].date_naissance);
printf("Niveau (Licence/Master) : ");
scanf("%s", etudiants[i].niveau);
}
}
3. Fonction « rechercher » (dans le programme principal)
#include <stdio.h>
#include <string.h>
#include "etablissement.h"
#include "etudiant.h"
#include "filiere.h"
// Fonction pour rechercher un étudiant par niveau et matricule
void rechercher(Etablissement etablissements[], int nbEtab, char niveau[], char matricule[])
{
for (int i = 0; i < nbEtab; i++) {
for (int j = 0; j < etablissements[i].nbFilieres; j++) {
Filiere f = etablissements[i].filieres[j];
if (strcmp([Link], niveau) == 0) { // Vérifie le niveau
for (int k = 0; k < [Link]; k++) {
if (strcmp([Link][k].matricule, matricule) == 0) { // Vérifie lematricule
printf("Étudiant trouvé : %s %s, Matricule : %s\
n",[Link][k].prenom,[Link][k].nom, [Link][k].matricule);
return;
}
}
}
}
}
printf("Étudiant non trouvé.\n");
}
int main() {
int nbEtab = 0; // Nombre d'établissements (exemple)
Etablissement etablissements[10]; // Tableau d'établissements
// Appel à la fonction rechercher
char niveauRecherche[20];
char matriculeRecherche[20];
int choix;
do {
printf("(..)Menu(..)\n");
printf("1: creer les etablissements\n");
printf("2: Recherche un etudiant\n");
printf("0: Quitter\n");
printf(" Votre choix:\n");
scanf("%d",&choix);
switch(choix)
{
case 1:printf("combien d'etablissement ?");
scanf("%d",&nbEtab);
creer_etablissements(etablissements,nbEtab);
break;
case 2:printf("Niveau a rechercer\n");
scanf ("%s",niveauRecherche);
printf("Matricule a rechercher:\n");
scanf("%s",matriculeRecherche);
rechercher(etablissements,nbEtab,niveauRecherche,matriculeRecherche);
break;
case 0:
printf("au revoir (..)");
break;
default:
printf("Choix invalide.\n");
}
} while(choix !=0);
return 0;
}
Travail et impressions de chaque membre sur le TP
NOMS PRÉNOMS MATRICULE PARTIE IMPRESSION
TRAITER
Nang Andre Duval 24H2365 Fichier.c
TRACE DE L’EXÉCUTION :