TP noté-Enseignante: Fourati Hend
La validation se fera en ligne le lundi 04 mai inshaAllah
Chaque équipe peut être formée d’au plus 3 membres
A déposer au niveau du classroom:
1) Le code source de l’application répondant à l’énoncé,
2) Un compte rendu détaillé, indiquant les architectures (logique et physique de
l’application), ainsi que la démarche suivie pour répondre à chaque question de
l’énoncé avec des captures écrans (de votre propre machine) pour chaque question
traitée
3) Une démo de 5 à 10 min illustrant (présentant) avec votre propre voix
l’implémentation de votre solution
à déposer au niveau du classroom au plus tard le 03/05/2026 à minuit
ENONCÉ:
On vous propose d’implémenter une application simplifiée de gestion de cours
créés dans des Classrooms pour les différents niveaux et pour les différentes
spécialités. L’application est destinée à un établissement universitaire (exemple :
FST). Voici son diagramme de classes :
1
Partie I :
Implémenter les entités qui permettent de générer le schéma de la base de données comme illustré
dans le diagramme de classes sachant que :
• Les identifiants de toutes les entités sont auto-générés avec la stratégie «IDENTITY»
• La relation bidirectionnelle CoursClassroom - Classe indique qu’une Classe peut avoir
plusieurs CoursClassroom, et un CoursClassroom ne peut être affecté qu’à une et une seule
classe.
• Les énumérations doivent être stockées en tant que chaînes de caractères dans la base de
données.
Partie II :
Développer le code nécessaire dans une classe annotée @RestController qui fait appel aux
différents services (Exposition de services avec Spring MVC REST).
Toutes les méthodes seront testées à travers Swagger ou Postman.
a) Ajouter 2 utilisateurs ayant les détails ci-dessous en respectant la signature suivante :
public Utilisateur ajouterUtilisateur (Utilisateur utilisateur)
prenom nom password
Amna Ammar etudiant
Ahmed Slama admin
b) Ajouter 2 Classes ayant les détails ci-dessous en respectant la signature suivante :
public Classe ajouterClasse (Classe c)
titre niveau
4AG1 QUATRIEME
5EM1 CINQUIEME
c) Ajouter 2 CoursClassrooms ayant les détails ci-dessous (en affectant chacun à la
classe indiquée dans le tableau), en respectant la signature suivante :
public CoursClassroom ajouterCoursClassroom (CoursClassroom cc, Integer codeClasse)
specialite nom nbHeures archive classe
INFORMATIQUE Programmation C 42 false 4AG1
AGRICULTURE Plantes 25 false 4AG1
AGRICULTURE Sciences Naturelles 40 false 4AG1
2
d) Affecter les éléments déjà ajoutés (au niveau des questions a et b) de la sorte :
Affecter l’utilisatrice «Amna Ammar» à la classe «4AG1» et l’utilisateur «Ahmed
Slama» à la classe «5EM1» en respectant la signature suivante :
public void affecterUtilisateurClasse (Integer idUtilisateur, Integer codeClasse)
e) Indiquer le nombre d’utilisateurs pour le niveau «QUATRIEME», en respectant la signature
suivante :
public Integer nbUtilisateursParNiveau(Niveau nv)
f) Désaffecter le coursClassroom «Plantes» de la classe «4AG1» en respectant la signature
suivante :
public void desaffecterCoursClassroomClasse(Integer idCours)
g) (question bonus) En utilisant SpringScheduler, proposer une méthode qui se déclenche
toutes les 60 secondes et qui archive (archive=true) tous les coursClassroom existants, en
respectant la signature suivante :
public void archiverCoursClassrooms()
h) Créer une méthode qui détermine le nombre d’heures enseignées à une spécialité et un
niveau donnés, en respectant la signature ci-dessous. Tester la méthode sur le niveau
«QUATRIEME» et la spécialité «AGRICULTURE» (2pts) :
public Integer nbHeuresParSpecEtNiv(Specialite sp, Niveau nv)
Excellent Travail !