Vous êtes sur la page 1sur 4

Voici une proposition de solution pour l'exercice de gestion d'étudiants en C++ :

#include <iostream>

#include <vector>

#include <algorithm>

#include <fstream>

using namespace std;

// Définition de la classe Etudiant

class Etudiant {

public:

// Constructeur par défaut

Etudiant() {}

// Constructeur avec initialisation des attributs

Etudiant(int id, string nom, int niveau, float moyenne) :

id(id), nom(nom), niveau(niveau), moyenne(moyenne) {}

// Accesseurs en lecture

int getId() const { return id; }

string getNom() const { return nom; }

int getNiveau() const { return niveau; }

float getMoyenne() const { return moyenne; }


// Opérateur de comparaison pour le tri par moyenne

bool operator<(const Etudiant& other) const {

return moyenne > other.moyenne;

private:

int id;

string nom;

int niveau;

float moyenne;

};

// Fonction pour valider l'ID d'un nouvel étudiant

bool validerId(const vector<Etudiant>& etudiants, int id) {

for (const Etudiant& etudiant : etudiants) {

if (etudiant.getId() == id) {

return false; // L'ID est déjà utilisé

return true; // L'ID est valide

// Fonction pour afficher les étudiants dont la moyenne est supérieure à une valeur donnée

void afficherParMoyenne(const vector<Etudiant>& etudiants, float valeur) {

cout << "Liste des etudiants avec une moyenne superieure a " << valeur << ":" << endl;
for (const Etudiant& etudiant : etudiants) {

if (etudiant.getMoyenne() > valeur) {

cout << "ID: " << etudiant.getId() << " | Nom: " << etudiant.getNom() << " | Niveau: " <<
etudiant.getNiveau() << " | Moyenne: " << etudiant.getMoyenne() << endl;

// Fonction pour afficher les étudiants par nom

void afficherParNom(const vector<Etudiant>& etudiants) {

cout << "Liste des etudiants par nom:" << endl;

vector<Etudiant> etudiantsTries = etudiants; // Copie des étudiants

sort(etudiantsTries.begin(), etudiantsTries.end(), [](const Etudiant& a, const Etudiant& b) {

return a.getNom() < b.getNom();

});

for (const Etudiant& etudiant : etudiantsTries) {

cout << "ID: " << etudiant.getId() << " | Nom: " << etudiant.getNom() << " | Niveau: " <<
etudiant.getNiveau() << " | Moyenne: " << etudiant.getMoyenne() << endl;

// Fonction pour afficher les étudiants par ID

void afficherParId(const vector<Etudiant>& etudiants) {

cout << "Liste des etudiants par ID:" << endl;

vector<Etudiant> etudiantsTries = etudiants; // Copie des étudiants

sort(etudiantsTries.begin(), etudiantsTries.end(), [](const Etudiant& a, const Etudiant& b) {


return a.getId() < b.getId();

});

for (const Etudiant& etudiant : etudiantsTries) {

cout << "ID: " << etudiant.getId() << " | Nom: " << etudiant.getNom() << " | Niveau: " <<
etudiant.getNiveau() << " | Moyenne: " << etudiant.getMoyenne() << endl;

// Fonction pour afficher les étudiants par niveau

void afficherParNiveau(const vector<Etudiant>& etudiants) {

cout << "Liste des etudiants par niveau:" << endl;

vector<Etudiant> etudiantsTries = etudiants; // Copie des étudiants

sort(etudiantsTries.begin(), etudiantsTries.end(), [](const Etudiant& a, const Etudiant& b) {

return a.getNiveau() < b.getNiveau();

});

for (const Etudiant& etudiant : etudiantsTries) {

cout << "ID: " << etudiant.getId() << " | Nom: " << etudiant.getNom() << " | Niveau: " <<
etudiant.getNiveau() << " | Moyenne: " << etudiant.getMoyenne() << endl;

// Fonction pour supprimer un étudiant

void supprimer

Vous aimerez peut-être aussi