Académique Documents
Professionnel Documents
Culture Documents
Dpartement dInformatique
Filire Licence fondamentale
en Sciences Mathmatiques et Informatique
Nous tenons remercier normment Pr. Said SLAOUI davoir accept de prsider le
jury de soutenance. Nous remercions galement Pr. EL AMRANI Youns davoir accept
dtre examinateur de notre rapport.
Nous tenons remercier lensemble des enseignants pour la formation de qualit quon
a eu durant les trois ans de formation la facult des sciences de Rabat et pour les efforts
qui nous ont fourni afin que ce projet de fin dtudes soit fructueux et profitable.
Merci aussi toutes nos familles, et tous les camarades, ainsi que tous ceux qui ont de
prs ou de loin contribu la ralisation de ce travail.
Table des matires
1 Introduction gnrale 3
3 La modlisation 9
3.1 Analyse des besoins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.2 tude Fonctionnelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.2.1 Identification des acteurs . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.2.2 Diagramme des cas dutilisations . . . . . . . . . . . . . . . . . . . . 10
3.2.3 Diagrammes dactivits . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.2.4 Diagramme de classes . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.2.5 Importation des Fichiers Excel . . . . . . . . . . . . . . . . . . . . . . 15
3.3 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4 Ralisation 21
4.1 Technologies et Frameworks utiliss . . . . . . . . . . . . . . . . . . . . . . . 21
4.1.1 JavaFX 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.1.2 Design Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.1.3 Lutilisation des threads . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.1.4 Apache POI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.1.5 Apache Maven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.1.6 Implmentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
5 Conclusion et perspectives 61
1
2
Chapitre 1
Introduction gnrale
Lamlioration de la gestion des notes des tudiants dune faon automatise est une n-
cessit pour faciliter le travail des utilisateurs notamment les enseignants et ladministration
qui dploient actuellement beaucoup defforts et de temps.
En effet, ceci nous a incit chercher des solutions permettant dune part la gestion des
donnes dune faon simple et fiable et de gain du temps en remplaant le traitement de ces
donnes par les outils bureautiques usuels (Microsoft Excel,LibreOffice Calc. . . ).
Dautre part offrir lutilisateur des interfaces graphiques pour la saisie des notes
travers des outils simples(curseur,liste, texte) pour avantages de minimiser les dplacements
entre le clavier et la souris, limination des risques derreurs typographiques, limination
des bugs rsultants des entres non valides et finalement prendre en compte le confort de
traitement pour lutilisateur.
Dans un premier chapitre, nous avons commenc par une tude sur les rgles mtier ta-
blies par notre facult, ensuite nous procdons la phase danalyse et de conception dans le
deuxime chapitre en identifiant les diffrents besoins ce qui nous mne vers ltude fonction-
nelle et technique qui a pour objectif de dfinir les acteurs et les fonctionnalits principales.
Enfin le troisime chapitre nous introduisons les diffrentes outils de programmation utiliss
ainsi quune vue globale sur la ralisation de lapplication.
3
4
Chapitre 2
Introduction
Dans ce chapitre, nous allons commencer par une prsentation globale du rglement
dvaluation tablie par la facult des sciences de Rabat(Voir annexe extrait CNPN), en
prsentant les diffrentes rgles des valuations et lorganisation de lanne universitaire .
5
Controle continu et Contrle Final.
Contrle Final.
Contrle Continu , TP et Contrle Final(CF).
2.4 Pondration
La note dun module est une moyenne pondre des diffrentes valuations du module,
do la pondration tient compte de la nature de lvaluation(contrle continu, TP et contrle
final).
Exemples :
Note des modules avec TP 0.25 et contrle final 0.75.
Note des modules sans TP : Contrle continu 0.5 et contrle final 0.5.
Note des modules avec TP et CC et CF : 0.25 pour les CC ,0.25 TP et 0.5 pour les
CF.
6
Les rgles mtier :
7
Figure 2.3 rgles mtier de traitement par anne
Conclusion
Ce chapitre tait consacr ltude des diffrentes rgles mtier. Dans le prochaine cha-
pitre nous allons entamer lidentification des besoins ensuite la modlisation et ltude tech-
nique et fonctionnelle de notre application.
8
Chapitre 3
La modlisation
Introduction
Ce chapitre traite tout ce qui est observation et analyse, qui sont deux phases ncessaires
pour tracer le fonctionnement gnral de lapplication, extraire les besoins de lutilisateur et
faire une tude fonctionnelle gnrale.
9
3.2.2 Diagramme des cas dutilisations
Avant daborder les cas dutilisations de notre application, en gnrale lapplication per-
met le traitement des notes par modules ce qui facilite le travail des enseignants dune part
, ainsi que par semestre et par anne. Elle permet aussi les fonctionnalits dition et de
reporting des rsultats de traitement dans leur forme basique afin doffrir a ladministration
et les chefs de filires un outil qui remplace le traitement normale.
Aprs avoir captur tous les besoins fonctionnels attendus de notre application, nous
procdons au diagramme des cas dutilisations qui permet de dcrire les interactions entre
les utilisateurs (cits en haut) et les diffrentes fonctionnalits.
Lutilisateur :
Commence le traitement par choisir le mode de la dlibration cest--dire le mode
de dlibration annuelle, semestrielle, ou bien par module.
10
Saisit les notes dun module afin de calculer les moyennes des tudiants aprs lim-
portation de fichier Excel qui contient la liste des tudiants inscrit dans le module.
Peut effectuez des statistiques sur les rsultats obtenues.
Peut effectuer la dlibration entre les units dun semestre aprs limportation des
fichiers des modules avec leurs historiques.
Peut effectuer la dlibration entre les units des deux semestres cest dire une dli-
bration annuelle aprs limportation des fichiers des modules avec leurs historiques.
Exporte les rsultats compltes de chaque dlibration sous un fichier Excel.
Peut effectuer des filtres sur les rsultats des tudiants en fonction de code, nom, pr-
nom, et la moyenne gnrale(infrieur,suprieur ou gale)ou la mention de validation
(valid, non valid, par compensation).
Exporte les rsultats des filtres sous format Excel.
11
Traitement des modules : Aprs le choix du mode convenable et exact, linterface
graphique propose lutilisateur dimporter le fichier Excel des tudiants, afin de saisir les
notes travers linterface graphique en utilisant les diffrents modes de saisie qui optimise les
mouvements de la main conduisant une opration de saisie confortable pour les utilisateurs.
par curseur(page 37, figure 4.12 ).
par liste( page 38, figure 4.13).
par texte( page 39,figure 4.14).
12
Traitement des semestres :
Comme nous avons annonc dans le rglement, la dlibration semestrielle consiste
calculer la moyenne gnrale entre les units.
Aprs le choix du mode dlibration semestrielle, la premire tape consiste importer
les fichiers des modules aprs le rattrapage.
13
Traitement par Anne :
La dlibration annuelle consiste a calculer la moyenne entre les units des deux semestres.
La premire tape consiste importer les notes en se servant des fichiers Excel des modules
des deux semestres.
Pour implmenter les rgles mtier prsentes dans le chapitre prcdent,nous proposons
le diagramme de classes suivant :
14
Figure 3.5 Diagramme de classes
La tache de limportation des fichiers est trs importante pour le droulement normale de
lapplication , pour vit tous cas derreurs nous proposons dutiliser les formats suivantes.
format propos :
15
Figure 3.6 Format de Fichier des Modules : session Normale
16
Figure 3.8 Format de Fichier CC et CF :pour la session Rattrapage
17
Figure 3.10 Format de Fichier CC, TP et CF :pour la session Rattrapage
18
Figure 3.11 Format de Fichier CF et TP :aprs la Session du Rattrapage
19
Figure 3.13 Format de Fichier CC, TP et CF :aprs la session du Rattrapage
3.3 Conclusion
Dans ce chapitre nous avons essay dextraire tous les besoins de lutilisateur, en suite nous
avons prsent une tude techniques et fonctionnels du projet. Dans le prochaine chapitre
nous allons introduire les outils utiliss et les interfaces graphiques des applications conues.
20
Chapitre 4
Ralisation
Introduction
Ce chapitre a pour objectif de dfinir la dernire phase du processus du dveloppement
de lapplication. Il comporte les outils utiliss, la ralisation et le test de lapplication. Nous
prsentons alors larchitecture de notre solution en dtaillant les diffrentes parties et leurs
fonctionnalits.
4.1.1 JavaFX 8
4.1.1.1 Dfinition
JavaFX est une bibliothque graphique intgre dans le JRE et le JDK de Java, elle
permet de raliser des interfaces graphiques volues et modernes grce de nombreuses
fonctionnalits, telles que les animations, les effets, la 3D, laudio, la vido, etc. Elle a de
plus lavantage dtre dans le langage Java, qui permet de raliser des architectures avec des
paradigmes objet.
Avant daborder les concepts principaux de JavaFX il est ncessaire de prsenter une
chronologie des principales tapes dvolution du domaine de dveloppement des applications
avec des interfaces graphiques en java
21
Figure 4.1 Chronologie des principales tapes de dveloppement des Interfaces graphiques
en Java
22
4.1.2.2 MVC pattern
Il existe diffrentes manires de structurer le code des applications interactives, une de ces
architectures communment utilise, et qui comporte de nombreuses variantes, est connue
sous lacronyme MVC qui signifie Model - View - Controller.
Le modle(Model) se charge de la gestion des donnes (accs, transformations, cal-
culs, etc.),il enregistre (directement ou indirectement) ltat du systme et le tient
jour(Extension .Java).
La vue(View) reprsente la visualisation des donnes qui contient le modle(Extension
.Fxml).
Le contrleur(Controller) est charg de ragir aux actions de lutilisateur (clavier,
souris, gestes)(Extension .Java)
Notre application est compose de nombreuses interfaces graphiques, afin de faciliter le
traitement et utiliser les points forts de javafx , nous avons dcid de travailler avec le MVC
de telle sorte que le code soit plus lisible et plus adaptable avec le modle de gestion des
notes et a toute prochaine mise a jour probable.
Avant daborder lintrt dutiliser observer pattern, nous dtaillons la tache qui suit
limportation des fichiers qui prpare les donnes pour le contrleur afin de les afficher
dans un composant graphique qui sappelle TableView, En effet ce dernier est lun des
contrles virtualiss en javaFX, qui ncessite dans un premier temps de dfinir une classe
modle TableClass au package(src.main.java.Models.Helpers) qui aura quelques variables
dinstance pour le code, le nom, le prnom et les notes. afin de produire une liste observable
"ObservableList " qui contient l ensemble des object de type TableClass.
Avec JavaFX il est courant dutiliser les instances de type "Property" pour tous les
champs de la classe TableCLass. Une proprit (Property) nous permet, par exemple, dtre
automatiquement averti lorsque la variable code ou toute autre variable a t modifie. Ceci
nous aide maintenir la vue synchronise avec les donnes. suite cela et en respectant les
besoins, chaque mode des modules a son propre format de fichier, ce qui ncessite de dfinir
une fonction dimportation pour chaque mode afin de produire la structure de donnes des
objet TableClass pour alimenter le Tableview.
23
contrleur de chaque interface graphique fait appel la fonction qui convertie le fichier
Excel import vers un objet de type Properity qui contient les deux listes de mme contenu,
la premier avec des objets observables de type TableClass pour la vue de linterface et
lautre de Type Etudiant pour le modle de gestion des notes.
En suite aprs le choix de la structure de donnes, il faut chercher un outil qui nous
permet de lier les deux listes, cest--dire un outil qui synchronise la liste Observable avec la
liste des tudiants chaque changement, sachant que le traitement des notes est tablie la
liste LesEtudiants, dautre part un des avantages des proprits JavaFX est la possibilit de
pouvoir lier les proprits entre-elles. Ce mcanisme, appel "binding", permet de mettre
jour automatiquement une proprit en fonction dune autre. Par exemple lorsque la variable
code ou toute autre variable de chaque objet de type TableClass de la liste observable est
modifie, automatiquement il averti lobjet de type Etudiant qui prend le mme code afin
de changer la valeur du code dune manire qui tienne compte de la stabilit des deux listes.
En outre dans notre projet on a remplac le principe de "Data Binding" par "the
Observer design pattern", ce dernier contrairement au "Data Binding" permet le contrle
des mises a jour aprs avoir reu les notifications, en effet la mise a jour de ltat de lobjet
observer (qui est intresse par ltat dun autre objet observ nomm "subject") ne se fait
quaprs une vrification selon des critres pour le but de valider la mise a jour comme on
peut la ngliger. Suite a cela on a dvelopp un modle qui jouera le rle dune forme stan-
dard (classes + interfaces) de toute les fentres de telle sorte que le code soit plus lisible et
plus adaptable avec le modle de gestion des notes et toute prochaine mise a jour probable.
Dautre part le "Data Binding" contrairement au "the observer design pattern" utilise
24
des processus lgers "Threads" qui tournent tout le temps avec un cycle, ce qui alourdit
la plateforme, ou mme des fois le dpassement du "java memory heap" dans le cas ou il
existe plusieurs tudiants, donc cest une perte non justifiable des ressources.
En respectant la structure de notre modle avec le motif MVC, Observer pattern est
galement un lment important dans ce cas, o la vue doit observer des changements dans
le modle, suite nos besoins et en respectant le modle de gestion des notes en propose Le
modle suivant, quest adoptable toutes les interfaces graphiques.
le diagramme de classes UML (figure 4.2) qui montre les participants de motif dans ce cas :
25
Nous avons une interface "Subject", qui fournis des observateurs et ainsi que pour
attacher et dtacher des objets observateurs. De lautre ct, nous avons un observateur
"TableViewObserver", qui dfinit des mthodes update() utilises par la classe Etudiant
pour notifier les changements dans la classe "TableClass".
Les deux interfaces sont respectivement prolongs par "TableClass, qui stocke ltat des
objets dobservation et envoie une notification ses observateurs aprs chaque changements
dtat. Et par la classe Etudiant, qui redfinit la mthode update () pour maintenir son tat
compatible avec celui de TableClass.
Deuxime utilisation
Dans notre application pas mal des objets du "java Concurrency package" on t utilis,
certain pour se dbarrasser des lments de vue quand on en a pas besoin (ce sont des
garbage cleaners qui nettoient la vue), il tournent souvent avec un cycle (ide inspir du
garbage cleaner de Java qui fait le nettoyage des objets au niveau du tas (heap memory)),
il y en a dautres qui marchent pour une dure limite durant toute leur priode de vie,
et il y en a dautre qui marchent seulement si on en a besoin sinon il revient a ltat du
sommeille pour ne pas gaspiller les ressources et pour permettre aussi une rapidit au niveau
de lapplication qutait un peu lourde dans un premier temps.
26
4.1.3.1 Programmation vnementielle
La programmation des applications avec interfaces graphiques est gnralement base
sur un paradigme nomm programmation vnementielle, avec ce type de paradigme les
vnements (gnralement dclenchs par lutilisateur, mais aussi par le systme) qui pilotent
lapplication. Ce mode non directif convient bien la gestion des interfaces graphiques.
En programmation vnementielle, on prpare les actions(code en java) excuter en
les associant aux vnements que lon souhaite traiter et on attend que le processus de sur-
veillance nous avertisse en excutant le code prvu. Comme les composants des interfaces
graphiques sont diverses, chaque composant graphique a sont contrleur, ctait indispen-
sable dtablir une sorte communication entre ces contrleurs , a ce fait par la cration des
vnements personnaliss (des classe de type Event) , quand un contrleur veut envoyer des
objets ou bien des structures de donnes a un autre, il lui envoie un vnement qui porte
des objets afin de le captur par le contrleur destinataire, et ensuite faire le traitement
convenable.
Ainsi que un vnement peut tre captur et renvoyer par plusieurs contrleurs avant
darriver a la destination finale selon le hirarchie des fichiers(.fxml).
4.1.6 Implmentation
Lapplication en gnrale contient 8 modes pour les traitements des modules, 2 modes de
la dlibration semestrielle (6 modules et 7 modules) ainsi que 2 modes de la dlibration
annuelle(6 modules et 7 modules).
Linterface graphique principale de lapplication est sous forme dun slider qui contient
des images des modes avec la description de chacun.
27
du mode choisie saffiche pour commenc le traitement( exemple :figure 4.3).
28
Mode TP et CF :
29
Mode TP, CC et CF :
30
Mode CF seul :
31
Mode CC et CF :
32
Mode rattrapage de TP et CF :
33
Mode rattrapage de CC, TP et CF :
34
Mode rattrapage de CF :
35
Mode rattrapage de CC, CF :
36
La saisie des notes :
37
Figure 4.13 Insertion par une liste
38
Figure 4.14 Insertion par text
39
Affichage des statistiques en graphe :
40
Statistiques en graphe :
41
Exportation du graphe :
Lapplication offre lutilisateur le choix dexporter le graphe en format PDF/PNG/JPG.
Exemple dexportation en pdf(figure 4.17).
42
Dautre part lapplication permet lutilisateur deffectuer des filtres sur les rsul-
tats.(figure 4.17). Ces derniers sont exportables en format Excel.
43
Les filtres disponibles :
44
Figure 4.20 filtrage par moyenne suprieur
45
Figure 4.21 filtrage par moyenne infrieur
46
Figure 4.22 filtrage par moyenne gale
47
Figure 4.23 filtrage par validation
48
Le traitement des modules se termine par lexportation du fichier en format Excel.
exemple lexportation de traitement du mode 1(figure 4.24)
49
Figure 4.25 Fichier export
50
la dlibration semestrielle :
Aprs le choix du mode dlibration semestrielle de 6 modules, lapplication affiche linterface
suivante(figure 4.26).
51
Comme nous avons annonc lapplication propose lutilisateur dimporter les fichiers de
chaque module de semestre courant et tous lhistorique des modules au annes prcdentes,
ce qui facilite le travaille manuelle de ladministration et le chef de filire auparavant grce
a une solution qui offre la possibilit dimporter un nombre infini des fichiers Excel, afin de
remplacer le traitement travers une base des donnes.
52
A titre dexemple aprs limportation des modules de semestre courant, on passe lim-
portation de lhistorique, en prend lhistorique de module UML des deux annes 2014/2015
et 2013/2014. la mme chose pour les autres modules il suffit juste choisir le nom de module
parmi les autres dans la liste. ensuite un espace de drag and drop saffiche afin de dposer le
fichier dans licne cre (figure 4.28).
Aprs limportation de tous les fichiers, afin de faire la dlibration on clique sur le bouton
"CommencerDelib" pour faire les calcules en arrire plan, en suite pour retourner linterface
daffichage on clique sur le bouton"Importer fichier Excel" un tableau saffiche contient les
calcules et les rsultats de la dlibration semestrielle(figure 4.29).
Si lutilisateur na pas slectionn le fichier exact, il peut modifier son choix en cliquant
sur le bouton dimportation sans fermer lapplication et refaire le traitement ds le d-
but.(exemple figure 4.30)
53
Figure 4.29 rsultats de la dlibration semestrielle
54
Figure 4.30 mise jour de limportation
55
le fichier export de la dlibration semestrielle(figure 4.31).
56
La mme chose pour la dlibration semestrielle, on peut tablir des filtres sur les rsultats
et mme si avec la possibilit de lexportation en format Excel(figure 4.32) et laffichage dun
graphe qui donne les distributions des notes de chaque module(figure 4.33).
57
Figure 4.33 Graphe de distribution des notes
58
Dlibration annuelle
le traitement de la dlibration annuelle ncessite limportation de tous les fichiers des
modules des deux semestres(12 Modules ou 14 Modules), comme le cas de la dlibration par
semestre linterface de la dlibration par anne offre un espace dimportation des fichiers avec
la possibilit dimportation de lhistorique et la modification aprs le choix des fichiers(figure
4.34)
59
Affichage des rsultats par anne :
60
Chapitre 5
Conclusion et perspectives
61
62
Bibliographie
[1] Oracle, Java Platform, Standard Edition (Java SE) 8, 22 mai 2014
http ://docs.oracle.com/javase/8/javase-clienttechnologies.html
[2] code.makery.ch, JavaFX 8 Tutorial - Part 1 : Scene Builder , 16 Apr 2014.
http ://code.makery.ch/library/javafx-8-tutorial/part1
[3] site web proposant des questions et rponses, http ://stackoverflow.com/
[4] Observer Design Pattern, http ://sourcemaking.com/designpatterns/observer
[5] Concurrency in JavaFX , https ://docs.oracle.com/javafx/2/threads/jfxpub-threads.htm
[6] bug de javaFx , http ://stackoverflow.com/questions/14359596/javafx-graphic-bug-with-
progressbar-and-slider
63