Repository navigation
Expand file tree
/
Copy pathmain.cpp
More file actions
164 lines (128 loc) · 5.75 KB
/
Copy pathmain.cpp
File metadata and controls
164 lines (128 loc) · 5.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
#include <iostream>
#include "Serveur.h"
#include "Badge.h"
#include "LecteurBadge.h"
#include "TypeAcces.h"
#include "Personne.h"
#include <fstream>
#include <memory>
#include "Enseignant.h"
#include "Etudiant.h"
#include "PersonnelSecurite.h"
#include "Scheduler.h"
using namespace std;
class Serveur;
class Badge;
class LecteurBadge;
int main() {
std::cout << "=== Simulateur de systeme de badges ===" << std::endl;
Serveur* serveur = new Serveur("Serveur-UTBM", "192.168.10.100");
Scheduler* scheduler = new Scheduler(serveur);
serveur->showConfiguration();
// 2. Créer des personnes
cout << "\n=== CREATION DES PERSONNES ===" << endl;
// Vecteur polymorphe de Personne*
vector<shared_ptr<Personne>> personnes;
// Étudiants
auto etudiant1 = make_shared<Etudiant>("Faullereau", "Jean", "L3",
"jean.Faullereau@utbm.fr", "Informatique");
auto etudiant2 = make_shared<Etudiant>("Bernard", "Sophie", "M1",
"sophie.bernard@utbm.fr", "Informatique");
auto doctorant = make_shared<Etudiant>("Petit", "Thomas", "Doctorant",
"thomas.petit@utbm.fr", "Energie");
// Enseignants
auto enseignant1 = make_shared<Enseignant>("Martin", "Marie", "Maîtresse de conférence",
"marie.martin@utbm.fr", "Mathématiques");
enseignant1->ajouterStatutChercheur("LORIA");
auto enseignant2 = make_shared<Enseignant>("Lacaille", "Nicolas", "Professeur",
"nicolas.lacaille@utbm.fr", "Informatique");
// Personnel de sécurité
auto securite1 = make_shared<PersonnelSecurite>("Fontaine", "Pierre", "Agent de sécurité",
"pierre.fontaine@utbm.fr", "Sécurité");
auto securite2 = make_shared<PersonnelSecurite>("Leroy", "Marc", "Chef d'équipe",
"marc.leroy@univ.fr", "Sécurité");
// Ajouter toutes les personnes au vecteur polymorphe
personnes.push_back(etudiant1);
personnes.push_back(etudiant2);
personnes.push_back(doctorant);
personnes.push_back(enseignant1);
personnes.push_back(enseignant2);
personnes.push_back(securite1);
personnes.push_back(securite2);
// 3. Créer des badges associés aux personnes
cout << "\n=== CREATION DES BADGES ===" << endl;
// Créer les badges en passant les shared_ptr de Personne
const auto badge1 = make_shared<Badge>(etudiant1, "actif");
const auto badge2 = make_shared<Badge>(etudiant2, "desactive");
const auto badge3 = make_shared<Badge>(doctorant, "actif");
const auto badge4 = make_shared<Badge>(enseignant1, "suspendu");
const auto badge5 = make_shared<Badge>(enseignant2, "actif");
const auto badge6 = make_shared<Badge>(securite1, "actif");
const auto badge7 = make_shared<Badge>(securite2, "actif", "2026-12-31");
// 4. Créer des lecteurs
cout << "\n=== CREATION DES LECTEURS DE BADGE ===" << endl;
const auto lecteur1 = make_shared<LecteurBadge>(serveur,"Batiment A - Entree principale", "batiment",
TypeAcces::BATIMENT, NiveauAcces::STANDARD);
const auto lecteur2 = make_shared<LecteurBadge>(serveur,"Laboratoire de Recherche", "laboratoire",
TypeAcces::LABORATOIRE, NiveauAcces::PRIORITAIRE);
const auto lecteur3 = make_shared<LecteurBadge>(serveur,"Salle Securite", "securite",
TypeAcces::SALLE_SECURITE, NiveauAcces::PRIORITAIRE);
const auto lecteur4 = make_shared<LecteurBadge>(serveur,"Salle TP Informatique", "salle",
TypeAcces::SALLE_TP, NiveauAcces::STANDARD);
// ajouter les instances des entites crees au scheduler
cout << "\n=== AJOUT DES ENTITES AU SCHEDULER ===" << endl;
// Ajouter toutes les personnes
for (const auto& personne : personnes) {
scheduler->ajouterPersonne(personne);
}
// Ajouter tous les badges
scheduler->ajouterBadge(badge1);
scheduler->ajouterBadge(badge2);
scheduler->ajouterBadge(badge3);
scheduler->ajouterBadge(badge4);
scheduler->ajouterBadge(badge5);
scheduler->ajouterBadge(badge6);
scheduler->ajouterBadge(badge7);
// Ajouter tous les lecteurs de badges
scheduler->ajouterLecteur(lecteur1);
scheduler->ajouterLecteur(lecteur2);
scheduler->ajouterLecteur(lecteur3);
scheduler->ajouterLecteur(lecteur4);
// 5. Affichage des informations
cout << "\n=== INFORMATIONS DES PERSONNES ===" << endl;
for (const auto& personne : personnes) {
personne->afficherInfos();
cout << endl;
}
cout << "\n=== INFORMATIONS DES BADGES ===" << endl;
badge1->afficherInfosBadge();
cout << endl;
badge2->afficherInfosBadge();
cout << endl;
badge3->afficherInfosBadge();
cout << endl;
badge4->afficherInfosBadge();
cout << endl;
badge5->afficherInfosBadge();
cout << endl;
badge6->afficherInfosBadge();
// 6. Tests d'accès
cout << "\n=== TESTS D'ACCES ===" << endl;
scheduler->simulation();
// 7. Test de suspension de badge
cout << "\n=== TEST DE GESTION DES BADGES ===" << endl;
cout << "\n--- Suspension du badge etudiant ---" << endl;
badge1->suspendreBadge();
badge1->afficherInfosBadge();
scheduler->simulation();
cout << "\n--- Reactivation du badge ---" << endl;
badge1->activerBadge();
scheduler->simulation();
// 8. Nettoyage
cout << "\n=== ARRET DU SYSTEME ===" << endl;
delete serveur;
//liberer la memoire -> supprime touts les objets qui sont reliés au scheduler
delete scheduler;
cout << "\n=== PROGRAMME TERMINE ===" << endl;
return 0;
}