0% ont trouvé ce document utile (0 vote)
56 vues3 pages

Gestion des étudiants en C

Le document présente un programme en C pour gérer un système d'étudiants, permettant d'ajouter, afficher, trier, sauvegarder et charger des données d'étudiants. Il utilise des structures pour représenter les étudiants et inclut des fonctions pour chaque fonctionnalité. Le programme s'exécute dans une boucle de menu jusqu'à ce que l'utilisateur choisisse de quitter.

Transféré par

docteurpapa10
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 TXT, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
56 vues3 pages

Gestion des étudiants en C

Le document présente un programme en C pour gérer un système d'étudiants, permettant d'ajouter, afficher, trier, sauvegarder et charger des données d'étudiants. Il utilise des structures pour représenter les étudiants et inclut des fonctions pour chaque fonctionnalité. Le programme s'exécute dans une boucle de menu jusqu'à ce que l'utilisateur choisisse de quitter.

Transféré par

docteurpapa10
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 TXT, PDF, TXT ou lisez en ligne sur Scribd

#include <stdio.

h> // Pour les fonctions d'entrée/sortie : printf, scanf,


fopen, etc.
#include <stdlib.h> // Pour les fonctions utilitaires (non utilisées ici)
#include <string.h> // Pour manipuler les chaînes de caractères : strcmp,
fgets, etc.

#define MAX_NAME 100 // Taille maximale pour le nom d’un étudiant


#define MAX_STUDENTS 100 // Nombre maximum d’étudiants gérés

// Définition de la structure d’un étudiant


typedef struct {
int id; // Identifiant unique
char name[MAX_NAME]; // Nom de l'étudiant
float grade; // Note de l'étudiant
} Student;

// Déclaration du tableau des étudiants et du compteur global


Student students[MAX_STUDENTS];
int student_count = 0; // Nombre d’étudiants actuellement enregistrés

// ➕ Ajouter un étudiant
void add_student() {
if (student_count >= MAX_STUDENTS) { // Vérifie si le tableau est plein
printf("Nombre maximum d'étudiants atteint.\n");
return;
}

Student s;
printf("ID de l'étudiant : ");
scanf("%d", &[Link]); // Lecture de l'ID
getchar(); // Consomme le caractère \n restant dans le buffer

printf("Nom de l'étudiant : ");


fgets([Link], MAX_NAME, stdin); // Lecture du nom
[Link][strcspn([Link], "\n")] = 0; // Suppression du \n à la fin

printf("Note de l'étudiant : ");


scanf("%f", &[Link]); // Lecture de la note

students[student_count++] = s; // Ajout de l’étudiant au tableau


printf("✅ Étudiant ajouté avec succès.\n");
}

// 📋 Afficher tous les étudiants


void display_students() {
if (student_count == 0) {
printf("Aucun étudiant enregistré.\n");
return;
}

printf("\n📋 Liste des étudiants :\n");


for (int i = 0; i < student_count; i++) {
printf("ID: %d | Nom: %s | Note: %.2f\n", students[i].id, students[i].name,
students[i].grade);
}
}

// 💾 Sauvegarde les étudiants dans un fichier texte


void save_to_file(const char *filename) {
FILE *file = fopen(filename, "w"); // Ouvre le fichier en écriture
if (!file) {
printf("❌ Erreur d'ouverture du fichier.\n");
return;
}

for (int i = 0; i < student_count; i++) {


fprintf(file, "%d,%s,%.2f\n", students[i].id, students[i].name,
students[i].grade);
}

fclose(file); // Ferme le fichier


printf("💾 Données sauvegardées dans '%s'.\n", filename);
}

// 📂 Charge les étudiants depuis un fichier texte


void load_from_file(const char *filename) {
FILE *file = fopen(filename, "r"); // Ouvre le fichier en lecture
if (!file) {
printf("⚠️ Fichier non trouvé. Aucun étudiant chargé.\n");
return;
}

student_count = 0;
// Lit chaque ligne du fichier et l'ajoute au tableau
while (fscanf(file, "%d,%99[^,],%f\n",
&students[student_count].id,
students[student_count].name,
&students[student_count].grade) == 3) {
student_count++;
}

fclose(file);
printf("📂 %d étudiants chargés depuis '%s'.\n", student_count, filename);
}

// 🔠 Trie les étudiants par nom (ordre alphabétique)


void sort_students_by_name() {
for (int i = 0; i < student_count - 1; i++) {
for (int j = i + 1; j < student_count; j++) {
if (strcmp(students[i].name, students[j].name) > 0) {
// Échange si le nom est "plus grand"
Student temp = students[i];
students[i] = students[j];
students[j] = temp;
}
}
}

printf("🔠 Étudiants triés par nom.\n");


}

// 🧭 Menu principal
void menu() {
int choice;
const char *filename = "[Link]"; // Nom du fichier de sauvegarde

do {
// Affiche le menu
printf("\n=== Student Manager ===\n");
printf("1. Ajouter un étudiant\n");
printf("2. Afficher les étudiants\n");
printf("3. Trier les étudiants par nom\n");
printf("4. Sauvegarder dans un fichier\n");
printf("5. Charger depuis un fichier\n");
printf("0. Quitter\n");
printf("Votre choix : ");
scanf("%d", &choice);
getchar(); // Nettoie le buffer clavier

// Traite le choix de l'utilisateur


switch (choice) {
case 1: add_student(); break;
case 2: display_students(); break;
case 3: sort_students_by_name(); break;
case 4: save_to_file(filename); break;
case 5: load_from_file(filename); break;
case 0: printf("👋 Au revoir !\n"); break;
default: printf("❌ Choix invalide.\n");
}
} while (choice != 0); // Continue tant que l’utilisateur ne choisit pas 0
}

// 🔓 Point d’entrée du programme


int main() {
menu();
return 0;
}

Vous aimerez peut-être aussi