Actualiser main.cpp

This commit is contained in:
2026-02-13 13:51:08 +00:00
parent 1b7ab03183
commit dc641aebc3

204
main.cpp
View File

@@ -1,169 +1,73 @@
#include <iostream> #include <iostream>
#include <fstream> #include <vector>
#include "user.h" #include "user.h"
#include "auth.h" #include "auth.h"
#include "db.h"
// --- Tableau d'utilisateurs --- int main() {
User users[] = { std::vector<Student> students = {
{"admin", "1234", ADMIN}, {"student1", {15,12,18}},
{"prof1", "abcd", PROF}, {"student2", {14,10,16}},
{"student1", "pass", STUDENT}, {"student3", {13,11,17}}
{"student2", "123", STUDENT}, };
{"student3", "abc", STUDENT}
};
int nbUsers = 5;
// --- Tableau d'étudiants et notes --- std::vector<User> users = {
struct Student { {"admin","1234",ADMIN},
std::string nom; {"prof1","abcd",PROF},
int notes[3]; {"student1","pass",STUDENT},
}; {"student2","123",STUDENT},
{"student3","abc",STUDENT}
};
Student etudiants[] = { std::string login, password;
{"student1", {15, 12, 18}}, std::cout << "Login : "; std::cin >> login;
{"student2", {14, 10, 16}}, std::cout << "Mot de passe : "; std::cin >> password;
{"student3", {13, 11, 17}}
};
int nbEtudiants = 3;
// --- Fonctions de vues selon rôle --- int index = authentifier(login,password,users);
void viewAdmin() { if(index == -1){
std::cout << "\n--- VUE ADMIN ---\n"; std::cout << "Identifiants incorrects.\n";
std::cout << "Liste des étudiants et notes :\n"; return 1;
for(int i=0; i<nbEtudiants; i++) {
std::cout << etudiants[i].nom << " : ";
for(int j=0;j<3;j++) std::cout << etudiants[i].notes[j] << " ";
std::cout << "\n";
}
}
void viewProf() {
std::cout << "\n--- VUE PROF ---\n";
std::cout << "Liste des étudiants et notes :\n";
for(int i=0; i<nbEtudiants; i++) {
std::cout << i << ". " << etudiants[i].nom << " : ";
for(int j=0;j<3;j++) std::cout << etudiants[i].notes[j] << " ";
std::cout << "\n";
} }
int id, noteIndex, newNote; User currentUser = users[index];
std::cout << "Entrez l'ID étudiant à modifier (-1 pour quitter) : ";
std::cin >> id;
if(id>=0 && id<nbEtudiants){
std::cout << "Quelle note modifier (0-2) ? ";
std::cin >> noteIndex;
std::cout << "Nouvelle note : ";
std::cin >> newNote;
etudiants[id].notes[noteIndex] = newNote;
std::cout << "Note modifiée avec succès !\n";
}
}
void viewStudent(const User& user) { // Vues
std::cout << "\n--- VUE STUDENT ---\n"; if(currentUser.role == ADMIN){
for(int i=0; i<nbEtudiants; i++) { std::cout << "--- ADMIN ---\n";
if(etudiants[i].nom == user.login) { for(auto& s : students){
std::cout << "Nom : " << etudiants[i].nom << "\nNotes : "; std::cout << s.nom << " : ";
for(int j=0;j<3;j++) std::cout << etudiants[i].notes[j] << " "; for(int n : s.notes) std::cout << n << " ";
std::cout << "\n"; std::cout << "\n";
return;
} }
} } else if(currentUser.role == PROF){
std::cout << "Aucune information trouvée.\n"; std::cout << "--- PROF ---\n";
} for(int i=0;i<students.size();i++){
std::cout << i << ". " << students[i].nom << " : ";
// --- Fonctions d'export --- for(int n : students[i].notes) std::cout << n << " ";
void exportAdmin() { std::cout << "\n";
std::ofstream file("data.txt"); }
for(int i=0; i<nbEtudiants; i++){ int id, noteIndex, newNote;
file << etudiants[i].nom << " "; std::cout << "ID étudiant à modifier (-1 pour quitter) : ";
for(int j=0;j<3;j++) file << etudiants[i].notes[j] << " "; std::cin >> id;
file << "\n"; if(id>=0){
} std::cout << "Note (0-2) : "; std::cin >> noteIndex;
file.close(); std::cout << "Nouvelle note : "; std::cin >> newNote;
std::cout << "Export complet réalisé (ADMIN).\n"; students[id].notes[noteIndex] = newNote;
} }
} else { // STUDENT
void exportNotes(const User& user) { std::cout << "--- STUDENT ---\n";
std::ofstream file("data.txt"); for(auto& s : students){
for(int i=0; i<nbEtudiants; i++){ if(s.nom == currentUser.login){
if(user.role == STUDENT && etudiants[i].nom != user.login) continue; std::cout << s.nom << " : ";
file << etudiants[i].nom << " "; for(int n : s.notes) std::cout << n << " ";
for(int j=0;j<3;j++) file << etudiants[i].notes[j] << " "; std::cout << "\n";
file << "\n";
}
file.close();
std::cout << "Export réalisé.\n";
}
// --- Fonctions d'import ---
void importAdmin() {
std::ifstream file("data.txt");
std::string nom;
int n1,n2,n3;
int i=0;
while(file >> nom >> n1 >> n2 >> n3 && i<nbEtudiants){
etudiants[i].nom = nom;
etudiants[i].notes[0] = n1;
etudiants[i].notes[1] = n2;
etudiants[i].notes[2] = n3;
i++;
}
file.close();
std::cout << "Import complet réalisé (ADMIN).\n";
}
void importProf() {
std::ifstream file("data.txt");
std::string nom;
int n1,n2,n3;
while(file >> nom >> n1 >> n2 >> n3){
for(int i=0;i<nbEtudiants;i++){
if(etudiants[i].nom == nom){
etudiants[i].notes[0]=n1;
etudiants[i].notes[1]=n2;
etudiants[i].notes[2]=n3;
} }
} }
} }
file.close();
std::cout << "Import des notes réalisé (PROF).\n";
}
// --- MAIN --- // Export / Import
int main() { exportData("data.txt", students);
std::string login, password; importData("data.txt", students);
std::cout << "Login : ";
std::cin >> login;
std::cout << "Mot de passe : ";
std::cin >> password;
int index = authentifier(login, password);
if(index != -1) {
std::cout << "Connexion réussie !" << std::endl;
switch(users[index].role) {
case ADMIN:
viewAdmin();
exportAdmin();
importAdmin();
break;
case PROF:
viewProf();
exportNotes(users[index]);
importProf();
break;
case STUDENT:
viewStudent(users[index]);
exportNotes(users[index]);
break;
}
} else {
std::cout << "Identifiants incorrects." << std::endl;
}
return 0; return 0;
} }