Actualiser main.cpp
This commit is contained in:
206
main.cpp
206
main.cpp
@@ -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 = {
|
||||||
|
{"student1", {15,12,18}},
|
||||||
|
{"student2", {14,10,16}},
|
||||||
|
{"student3", {13,11,17}}
|
||||||
|
};
|
||||||
|
|
||||||
|
std::vector<User> users = {
|
||||||
{"admin","1234",ADMIN},
|
{"admin","1234",ADMIN},
|
||||||
{"prof1","abcd",PROF},
|
{"prof1","abcd",PROF},
|
||||||
{"student1","pass",STUDENT},
|
{"student1","pass",STUDENT},
|
||||||
{"student2","123",STUDENT},
|
{"student2","123",STUDENT},
|
||||||
{"student3","abc",STUDENT}
|
{"student3","abc",STUDENT}
|
||||||
};
|
};
|
||||||
int nbUsers = 5;
|
|
||||||
|
|
||||||
// --- Tableau d'étudiants et notes ---
|
|
||||||
struct Student {
|
|
||||||
std::string nom;
|
|
||||||
int notes[3];
|
|
||||||
};
|
|
||||||
|
|
||||||
Student etudiants[] = {
|
|
||||||
{"student1", {15, 12, 18}},
|
|
||||||
{"student2", {14, 10, 16}},
|
|
||||||
{"student3", {13, 11, 17}}
|
|
||||||
};
|
|
||||||
int nbEtudiants = 3;
|
|
||||||
|
|
||||||
// --- Fonctions de vues selon rôle ---
|
|
||||||
void viewAdmin() {
|
|
||||||
std::cout << "\n--- VUE ADMIN ---\n";
|
|
||||||
std::cout << "Liste des étudiants et notes :\n";
|
|
||||||
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;
|
|
||||||
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) {
|
|
||||||
std::cout << "\n--- VUE STUDENT ---\n";
|
|
||||||
for(int i=0; i<nbEtudiants; i++) {
|
|
||||||
if(etudiants[i].nom == user.login) {
|
|
||||||
std::cout << "Nom : " << etudiants[i].nom << "\nNotes : ";
|
|
||||||
for(int j=0;j<3;j++) std::cout << etudiants[i].notes[j] << " ";
|
|
||||||
std::cout << "\n";
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
std::cout << "Aucune information trouvée.\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
// --- Fonctions d'export ---
|
|
||||||
void exportAdmin() {
|
|
||||||
std::ofstream file("data.txt");
|
|
||||||
for(int i=0; i<nbEtudiants; i++){
|
|
||||||
file << etudiants[i].nom << " ";
|
|
||||||
for(int j=0;j<3;j++) file << etudiants[i].notes[j] << " ";
|
|
||||||
file << "\n";
|
|
||||||
}
|
|
||||||
file.close();
|
|
||||||
std::cout << "Export complet réalisé (ADMIN).\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
void exportNotes(const User& user) {
|
|
||||||
std::ofstream file("data.txt");
|
|
||||||
for(int i=0; i<nbEtudiants; i++){
|
|
||||||
if(user.role == STUDENT && etudiants[i].nom != user.login) continue;
|
|
||||||
file << etudiants[i].nom << " ";
|
|
||||||
for(int j=0;j<3;j++) file << etudiants[i].notes[j] << " ";
|
|
||||||
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 ---
|
|
||||||
int main() {
|
|
||||||
std::string login, password;
|
std::string login, password;
|
||||||
|
std::cout << "Login : "; std::cin >> login;
|
||||||
|
std::cout << "Mot de passe : "; std::cin >> password;
|
||||||
|
|
||||||
std::cout << "Login : ";
|
int index = authentifier(login,password,users);
|
||||||
std::cin >> login;
|
if(index == -1){
|
||||||
|
std::cout << "Identifiants incorrects.\n";
|
||||||
std::cout << "Mot de passe : ";
|
return 1;
|
||||||
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;
|
User currentUser = users[index];
|
||||||
|
|
||||||
|
// Vues
|
||||||
|
if(currentUser.role == ADMIN){
|
||||||
|
std::cout << "--- ADMIN ---\n";
|
||||||
|
for(auto& s : students){
|
||||||
|
std::cout << s.nom << " : ";
|
||||||
|
for(int n : s.notes) std::cout << n << " ";
|
||||||
|
std::cout << "\n";
|
||||||
}
|
}
|
||||||
|
} else if(currentUser.role == PROF){
|
||||||
|
std::cout << "--- PROF ---\n";
|
||||||
|
for(int i=0;i<students.size();i++){
|
||||||
|
std::cout << i << ". " << students[i].nom << " : ";
|
||||||
|
for(int n : students[i].notes) std::cout << n << " ";
|
||||||
|
std::cout << "\n";
|
||||||
|
}
|
||||||
|
int id, noteIndex, newNote;
|
||||||
|
std::cout << "ID étudiant à modifier (-1 pour quitter) : ";
|
||||||
|
std::cin >> id;
|
||||||
|
if(id>=0){
|
||||||
|
std::cout << "Note (0-2) : "; std::cin >> noteIndex;
|
||||||
|
std::cout << "Nouvelle note : "; std::cin >> newNote;
|
||||||
|
students[id].notes[noteIndex] = newNote;
|
||||||
|
}
|
||||||
|
} else { // STUDENT
|
||||||
|
std::cout << "--- STUDENT ---\n";
|
||||||
|
for(auto& s : students){
|
||||||
|
if(s.nom == currentUser.login){
|
||||||
|
std::cout << s.nom << " : ";
|
||||||
|
for(int n : s.notes) std::cout << n << " ";
|
||||||
|
std::cout << "\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Export / Import
|
||||||
|
exportData("data.txt", students);
|
||||||
|
importData("data.txt", students);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user