Académique Documents
Professionnel Documents
Culture Documents
SCIENCES ET TECHNOLOGIES
PHYSIQUE ET APPLICATIONS
MÉMOIRE
INFORMATIQUES
Intitulé :
Présenté par
16 Juillet 2021
UNIVERSITÉ D’ANTANANARIVO
SCIENCES ET TECHNOLOGIES
PHYSIQUE ET APPLICATIONS
MÉMOIRE
Pour l’obtention du diplôme de
MASTER EN PHYSIQUE ET APPLICATIONS
Parcours : MASTER D’INGENIERIE EN SYSTEMES ELECTRONIQUES
INFORMATIQUES
Intitulé :
Présenté par
Je tiens également à faire part de ma reconnaissance envers toutes les personnes qui ont
contribué directement ou indirectement à la réalisation de ce Stage de Fin d’Etudes à savoir :
Monsieur Irrish Parker RAMAHAZOSOA, Maitre de Conférences, Responsable du
Domaine Sciences et Technologies de l’Université d’Antananarivo, pour m’avoir permis de
suivre ma formation au sein de son Institution et pour avoir donné son autorisation pour la
présentation de ce mémoire.
Madame Eulalie Odilette RAFANJANIRINA, Maitre de Conférences, Responsable de la
Mention Physique et Applications, pour avoir validé mon inscription en tant qu’étudiant
pouvant préparer le grade de Master au niveau de ladite Mention.
Madame Harimalala RAZANAMAMPISOA, Maître de Conférences, Responsable du
Parcours Master d’Ingénierie en Systèmes Electroniques et Informatiques (MISEI) pour avoir
fait tout son possible en prodiguant des conseils dans l’orientation et l’élaboration du présent
mémoire en dépit de la lourdeur des tâches lui incombent.
Madame Zely Arivelo RANDRIAMANANTANY, Professeur Titulaire au sein du Domaine
des Sciences et Technologies, pour la considération qu’elle me fait en présidant le jury
d’examen de ce mémoire.
Monsieur Liva Graffin RAKOTOARIMANANA, Maitre de Conférences au sein du Domaine
des Sciences et Technologies, pour avoir accepté d’examiner ce mémoire de fin d’étude.
Monsieur Hirina RAZAKAMAMONJY, Technicien Supérieur chez HABAKA pour m’avoir
donné la chance et aidé d’effectuer ce stage de fin d’étude.
Les membres des Personnels enseignants et administratifs de l’Université d’Antananarivo
Les membres des Personnels Administratifs et Techniques de HABAKA, pour leurs aides,
conseils, accueils et efforts tout en m’offrant des encadrements théorique et technique de
qualité.
Je tiens aussi à remercier tous les membres de ma famille qui m’ont toujours soutenu pendant
ce stage, ainsi qu’à tous mes amis qui m’ont toujours aidé.
TABLES DES MATIERES
REMERCIEMENTS ........................................................................................................................ i
TABLES DES MATIERES .............................................................................................................ii
LISTE DES FIGURES ................................................................................................................... iv
LISTE DES TABLEAUX .............................................................................................................. vi
LISTE DES ACRONYMES/ABREVIATIONS............................................................................. vii
INTRODUCTION GENERALE...................................................................................................... 1
Chapitre I- GENERALITES............................................................................................................ 2
I.1- PRESENTATION DE CIDST ................................................................................ 3
I.1.1- Centre d’Information et de Documentation Scientifique et Technique ................. 3
I.1.2- Organigramme .................................................................................................... 3
I.1.3- Domaines de compétences .................................................................................. 4
I.1.4- Prestation de service ........................................................................................... 5
I.2- PRESENTATION DE HABAKA ........................................................................... 6
I.2.1- Objectifs ............................................................................................................. 6
I.2.2- Produits .............................................................................................................. 6
I.2.3- Organigramme .................................................................................................... 7
I.3- MODELE CLIENT/SERVEUR .............................................................................. 8
I.3.1- Définition ........................................................................................................... 8
I.3.2- Les caractéristiques des systèmes client/serveur .................................................. 8
I.3.3- La répartition des tâches ..................................................................................... 8
I.3.4- Les middlewares ................................................................................................. 9
I.3.5- Notion de port et protocole.................................................................................. 9
I.4- ADRESSAGE IP .................................................................................................. 10
I.4.1- Définition ......................................................................................................... 10
I.4.2- Les différentes versions des adresses IP ............................................................ 10
I.4.3- Structure d’une adresse IP ................................................................................. 11
I.4.4- Le masque réseau .............................................................................................. 11
I.4.5- Classes d’adresses............................................................................................. 12
I.4.6- Adresses réseaux et adresses de diffusion.......................................................... 12
I.4.7- Adresses déconseillées et réseaux privés ........................................................... 12
I.5- CONCLUSION .................................................................................................... 13
Chapitre II-MATERIELS ET METHODES................................................................................... 14
ii
II.1- CAHIER DES CHARGES .................................................................................... 15
II.2- CONCEPTION DE L’APPLICATION WEB ....................................................... 16
II.2.1- Choix des matériels ......................................................................................... 16
II.2.2- Design ............................................................................................................. 20
II.2.3- Priorisation des fonctionnalités ........................................................................ 21
II.2.4- Architecture du système................................................................................... 23
II.2.5- Développement du back-end ............................................................................ 26
II.2.6- Développement du front-end............................................................................ 31
II.3- CONCEPTION DE L’APPLICATION NATIVE.................................................. 34
II.3.1- Elaboration du logigramme de l’application native .......................................... 35
II.3.2- Fonctionnement du QR Code........................................................................... 37
II.3.3- Gestion de temps réel ...................................................................................... 38
II.4- CONCLUSION .................................................................................................... 39
Chapitre III- RESULTATS ET INTERPRETATIONS .............................................................. 40
III.1- PRESENTATION DE L’APPLICATION WEB ................................................... 41
III.1.1- Page de connexion.......................................................................................... 41
III.1.2- Liste de personnel........................................................................................... 41
III.1.3- Statistique de fréquentation ............................................................................ 42
III.1.4- Liste des présences ......................................................................................... 42
III.1.5- Liste des matériels .......................................................................................... 44
III.2- PRESENTATION DE L’APPLICATION NATIVE ............................................. 45
III.2.1- Activité principale .......................................................................................... 45
III.2.2- Scan ............................................................................................................... 45
III.2.3- Envoie et affichage du résultat........................................................................ 45
III.3- INTERPRETATIONS .......................................................................................... 46
Chapitre IV- DISCUSSION....................................................................................................... 47
IV.1- SUR LE PLAN MATERIEL................................................................................. 48
IV.2- SUR LE PLAN LOGICIEL .................................................................................. 48
IV.3- DOMAINES D’APPLICATION ........................................................................... 48
IV.4- AVANTAGES ...................................................................................................... 49
CONCLUSION ET PERSPECTIVES ........................................................................................... 50
REFERENCES .............................................................................................................................. 52
iii
LISTE DES FIGURES
Figure 1 : Organigramme du centre de recherche CIDST ................................................................. 3
Figure 2 : Organigramme de fablab au sein de l’organisme Habaka ................................................. 7
Figure 3 : Modèle Client/Serveur ..................................................................................................... 8
Figure 4 : Middlewares .................................................................................................................... 9
Figure 5 : Structure d'une adresse IP .............................................................................................. 11
Figure 6 : Adresse masque ............................................................................................................. 11
Figure 7 : Logo JavaScript ............................................................................................................. 16
Figure 8 : Fonctionnement de la communication Client/Server utilisant JavaScript ........................ 16
Figure 9 : Logo Node.JS ................................................................................................................ 17
Figure 10 : Fonctionnement de Node.js.......................................................................................... 17
Figure 11 : Logo MongoDB .......................................................................................................... 18
Figure 12 : Logo React.JS.............................................................................................................. 19
Figure 13 : Différence entre site web et application web ................................................................ 20
Figure 14 : Logo Android Studio ................................................................................................... 20
Figure 15 : Interface utilisateur de l’application web...................................................................... 20
Figure 16 : Fonctionnalités de l'application web............................................................................. 22
Figure 17 : Schéma synoptique du système .................................................................................... 24
Figure 18 : Logigramme pour sauvegarder une présence ................................................................ 27
Figure 19 : Logigramme pour la création de la liste journalière des matériels utilisés ..................... 28
Figure 20 : Logigramme pour la modification des données d'un matériel ....................................... 28
Figure 21 : Logigramme du middleware ........................................................................................ 29
Figure 22 : Fonctionnement front-end ............................................................................................ 31
Figure 23 : Logigramme de App.js ................................................................................................ 33
Figure 24 : Logigramme de l'application native ............................................................................. 36
Figure 25 : QR Code...................................................................................................................... 37
Figure 26 : Structure du QR Code .................................................................................................. 37
Figure 27 : Page de connexion ....................................................................................................... 41
Figure 28 : Liste du personnel........................................................................................................ 41
Figure 29 : Statistique de fréquentation.......................................................................................... 42
Figure 30 : Liste des présences ...................................................................................................... 43
Figure 31 : Choix des matériels ..................................................................................................... 43
Figure 32 : Liste des matériels ....................................................................................................... 44
iv
Figure 33 : Activité principale ....................................................................................................... 45
Figure 34 : Scan QR Code ............................................................................................................. 45
Figure 35 : Affichage du résultat de scan ....................................................................................... 46
v
LISTE DES TABLEAUX
Tableau 1 : Ports et protocoles ....................................................................................................... 10
Tableau 2 : Classes d'adresses ........................................................................................................ 12
Tableau 3 : Adresse réseau et adresse de diffusion ......................................................................... 12
Tableau 4 : Réseau privé................................................................................................................ 12
Tableau 5 : Comparaison SQL / MongoDB ................................................................................... 19
Tableau 6 : Routes et fonctions respectives .................................................................................... 26
vi
LISTE DES ACRONYMES/ABREVIATIONS
CIDST : Centre d’Information et de Documentation Scientifique et Technique
EPIC : Etablissement Public à caractère Industriel et Commercial
MESupReS : Ministère de l'Enseignement Supérieur et de la Recherche Scientifique
MEF : Ministère de l’Economie des Finances
CATI : Centre d’Appui à la Technologie de l’Innovation
CNARP : Centre National d’Application des Recherches Pharmaceutiques
CNRE : Centre National de Recherches sur l’Environnement
PBZT : Parc Botanique et Zoologique de Tsimbazaza
CIRAD : Centre de coopération Internationale en Recherche Agronomique pour le Développement
BDPA : Bureau du Développement de la Production Agriole
WWF : World Wide Fund
PNUD : Programme des Nations Unies pour le Développement
ONUDI : Organisation des Nations Unies pour le Développement Industriel
UNICEF : United Nations International Children’s Emergency Fund
FNUAP : Fonds des Nations Unies pour la Population
PAM : Programme Alimentaire Mondial
FAO : Food and Agriculture Organization
USAID : United States Agency for International Development
CENRADERU : Centre National de Recherche Appliquée au Développement Rural
ANGAP : association nationale de la gestion des aires protégées
QR Code : Quick Response Code
NoSQL : Not only SQL
API : Application Programming interface
TCP-IP : Transmission Control Protocol/Internet Protocol
FTP : File Transfer Protocol
DNS : Domain Name System
HTTP : Hypertext Transfer Protocol
HTML : Hypertext Markup Language
JSON : JavaScript Objet Notation
SGBD : Système de gestion de base de données
UI : User Interface
URL : Uniform Resource Locator
ID : IDentification
PHP : Hypertext Preprocessor
CSS : Cascading Style Sheets
Wi -Fi : Wireless Fidelity
vii
INTRODUCTION GENERALE
Les technologies de l’information et de la communication ont été l’évolution la plus importante
et innovante qui a marqué ces dernières décennies. Ces technologies ont apporté du confort dans notre
vie quotidienne par leurs capacités à traiter l’information dans des délais raisonnable. En effet, cela
est symbolisé par l’apparition des différents appareils de haute technologie tels que les smartphones
ou les tablettes qui sont dotés de plusieurs applications pratiques.
De ce fait, l’administration du personnel et des matériels est une tâche importante dans
l’entreprise. Le but est de s’occuper de toutes les données relatives au personnel et les matériels
surtout de les mettre à jour. Cependant, cette tâche entraîne des pertes de données et des pertes de
temps considérable car pour y parvenir, le responsable utilise des logiciels moins performant, voire
même prendre des notes sur des papiers.
1
Enfin, le quatrième chapitre soulève la discussion concernant autant le plan matériel que logiciel
et les résultats obtenus.
2
Chapitre I- GENERALITES
2
Ce chapitre va nous aider pour connaitre le contexte dans lequel le thème a été choisi.
I.1.2- Organigramme
La structure organisationnelle du CIDST se compose de :
Un Conseil d’Administration ;
Un Conseil Scientifique d’Orientation ;
Une Direction ;
Des Services et Départements Techniques ;
Quatre Antennes régionales (situées à Fianarantsoa, Toamasina, Mahajanga, Toliary) ;
Une Cellule Technologie de l’Information et de Communication ;
Et depuis Mai 2012, le CIDST héberge et gère le Centre d’Appui à la Technologie de
l’Innovation (CATI).
Conseil
d'Administration
(CA)
Conseil Scientifique
d'Orientation
(CSO)
Direction
Directeur
Département
Département Département Département Département Département Edition,
Administratif et Relations Département Traitement de Banque de Services aux
Acquisitions Impression et
Financier Publiques l'Information données utilisteurs
Diffusion
3
I.1.3- Domaines de compétences
Les domaines de compétence du CIDST sont très diversifiés :
Fourniture de documents primaires ;
Edition/impression ;
Formation en sciences de l’information (bibliothéconomie, techniques documentaires, gestion
de l’information, recherche d’information, informatique documentaire) ;
Informatisation et/ou réorganisation de systèmes documentaires ;
Formation en informatique ;
Formation en secrétariat-bureautique et en organisation administrative ;
Participation aux foires, séminaires, etc.
La mission principale du CIDST est de satisfaire les besoins en information de n’importe quelle
cible : des décideurs, des chercheurs, des opérateurs économiques, des enseignants et des acteurs du
développement, en général.
Les outils d’information utilisent les bases de données bibliographiques MIREMBY du CIDST
qui est une base agrémentée en coopération. Elle essaie de faire la synthèse du patrimoine
documentaire dans le domaine de l’information et de la documentation scientifique et technique à
Madagascar.
Cette base de données fait état actuellement de 59 000 documents détenus par les organismes
suivants :
CIDST (17%) ;
Centres Nationaux de recherche FOFIFA/CENRADERU, CNARP, CNRE, CNRIT ;
Académie Nationale des Arts, des Lettres et des Sciences ;
Parc Botanique et Zoologique de Tsimbazaza (PBZT) ;
Institut Pasteur de Madagascar (IPM) ;
Organismes bilatéraux IRD, CIRAD, BDPA (France et Madagascar);
Organisme non gouvernemental WWF ;
Bibliothèque Nationale ;
Ministère de l’élevage, de l’Agriculture et de la pêche (Direction des Ressources halieutiques
de la section agriculture) ;
Programme Engrais Malagasy, EASTA et autres services ;
Ministère de l’industrie, du commerce et de l’artisanat (Direction des commerces) ;
ANGAP ;
4
Laboratoire National de Recherches en Télécommunications ;
Organismes internationaux PNUD, ONUDI, UNICEF, FNUAP, PAM, FAO ;
Projet COEFOR (Foresterie-Environnement) ;
Projets internationaux : SEATS (Planning Familial - USAID) ;
Réseau IBISCUS du Ministère Français de la Coopération).
Il existe d’autres bases de données telles celle concernant l’Administration publique Malagasy,
celle des chercheurs des Centres Nationaux de Recherches à Madagascar, celles se rapportant aux
données commerciales : informations sur 230 produits agricoles.
Des disques compacts CD-ROM peuvent également être exploités en mode local pour accéder
à des bases de données agricoles (SESAME, CAB, TROPAG et RURAL, AGRICOLA et AGRIS) et
à des bases de données sur les brevets.
5
I.2- PRESENTATION DE HABAKA
Le nom « Habaka » signifie « espace » en malagasy. Habaka est un espace physique qui
regroupe les talents et les activités technologiques à Madagascar. Le projet met en place un certain
nombre d'initiatives visant à construire un écosystème autour des entrepreneuriats et innovation
technologiques à Madagascar.
Ce nom a été donné par Juliette Ratsimandrava, Directrice des Langues à l'Académie Malgache
pour définir les activités en ligne et virtuelle en langue Malagasy.
Les activités de Habaka gravitent autour de la mise en place d'une organisation d’évènements
sur l'entrepreneuriat et sur les nouvelles technologies, ainsi que l'incubation de startups.
I.2.1- Objectifs
L’ONG Habaka vise à regrouper la communauté technologique malagasy (blogueurs,
entrepreneurs dans les nouvelles technologies, développeurs, technophiles et passionnés, etc.) autour
des activités dont elle fait la promotion.
Habaka est né de la volonté de mettre en commun des compétences pour apporter un nouveau
souffle au secteur des nouvelles technologies à Madagascar mais aussi de celle de diffuser la culture
web et technologique.
I.2.2- Produits
Il existe différents produits conçus par Habaka dont les suivants :
Le coworking : la gestion d’un espace physique de travail collaboratif de 300 m2, destiné aux
travailleurs indépendants du web et des nouvelles technologies à Antananarivo, sis à
Tsimbazaza (enceinte CIDST). Habaka ambitionne de créer le premier pôle dédié aux nouvelles
technologies à Madagascar appelé officiellement Hay Valley, mais pour l’instant qui reste un
projet ;
L’évènementiel : l’organisation de rencontres technologiques et d’évènements axés sur les
nouvelles technologies, l'innovation et l'entrepreneuriat technologique (conférences, café TIC,
bar camps, concours/challenges, évènements sous licence internationale, etc.);
La formation et l'incubation des startups : le développement des compétences dans les
nouvelles technologies et internet par l’organisation de formations thématiques régulières,
6
formation dès le plus jeune âge cas de CoderDojo Madagascar dirigé par les staffs technique de
HABAKA, un mouvement mondial regroupant des clubs dans toute l'Ile permettant aux jeunes
malgaches d’apprendre à coder et à programmer gratuitement grâce à l'appui des bénévoles.
I.2.3- Organigramme
Notre stage s’est déroulé dans la fabrication laboratory (fablab). Un fablab est un tiers-lieu
cadré par les comités exécutifs où il est mis à leur disposition toutes sortes d'outils, notamment des
machines-outils pilotées par ordinateur pour la conception et la réalisation d'objets.
Conseils
d'Administration
Comités
Entreprenariat Fablab
Exécutifs
7
I.3- MODELE CLIENT/SERVEUR
I.3.1- Définition
Le modèle client-serveur s'articule autour d'un réseau auquel sont connectés deux types
d'ordinateurs le serveur et le client. Le client et le serveur se communiquent via des protocoles. Le
client-serveur représente un dialogue entre deux processus informatiques par l’intermédiaire d’un
échange de messages. Le processus client sous-traite au processus serveur des services à réaliser. Les
processus sont généralement exécutés sur des machines et des OS.
Client Réseau Serveur
Processus A
Requête
Processus B
Réponse
Processus A
8
La liaison entre le client et le serveur correspond à tout un ensemble complexe de logiciels
appelé middleware qui se charge de toutes les communications entre les processus.
Figure 4 : Middlewares
9
exemple). Il faut donc savoir pour quelle application une telle information est destinée. On attribue
donc des ports pour chaque application.
Un port est codé sur 16 bits, il y a donc 65536 ports.
I.3.5.2- Protocole
Un protocole est une série d'étapes à suivre pour permettre une communication entre plusieurs
ordinateurs. Internet est un ensemble de protocoles regroupés sous le terme « TCP-IP »
(Transmission Control Protocol/Internet Protocol).
I.4- ADRESSAGE IP
Puisque l’administration de réseau fait partie de notre étude, alors il est nécessaire d’avoir des
notons de base sur l’adressage IP.
I.4.1- Définition
De manière générale, les adresses forment une notion importante en communication et sont un
moyen d’identification. Dans un réseau informatique, une adresse IP est un identifiant unique attribué
à chaque interface avec le réseau IP et associé à une machine (routeur, ordinateur, etc.). C’est une
adresse unicast utilisable comme adresse source ou comme destination.
I.4.2- Les différentes versions des adresses IP
Il existe deux versions pour les adresses IP :
Version 4 : les adresses sont codées sur 32 bits. Elle est généralement notée avec quatre
nombres compris entre 0 et 255, séparés par des points (.).
10
Version 6 : les adresses sont codées sur 128 bits. Elle est généralement notée par groupes de 4
chiffres hexadécimaux séparés par deux points (:). Par exemple :
FE80:0000:0000:0000:020C:76FF:FE21:1C3B
Puisque l’adresse IPv4 est la version que nous allons utiliser, alors la suite de ce chapitre est
basée sur cette version.
I.4.3- Structure d’une adresse IP
L’adresse IP d’un équipement permet de définir précisément :
le réseau sur lequel est connecté l’équipement ;
l’adresse de l’équipement sur le réseau.
Pour chaque adresse, une partie des bits représente l’adresse réseau et l’autre partie identifie
l’hôte dans le réseau.
11
I.4.5- Classes d’adresses
Il existe différents découpages possible que l'on appelle « classes d'adresses ». À chacune de
ces classes correspond un masque réseau différent :
Tableau 2 : Classes d'adresses
Plage du Partie réseau (N) et Masque par Nombre
Classe
1er octet hôte de l’adresse (H) défaut Réseau Hôte/réseau
A 1-127 N.H.H.H 255.0.0.0 128 16 277 214
B 128-191 N.N.H.H 255.255.0.0 16 384 65 534
C 192-223 N.N.N.H 255.255.255.0 2 097 150 254
A 10.0.0.0
A 127.0.0.0
B 172.16.0.0 à 172.31.0.0
C 192.168.0.0 à 192.168.255.0
12
I.5- CONCLUSION
D’un part, pour conduire les lecteurs dans l’étude, la présentation de CIDST et de HABAKA
étaient nécessaire. Ce chapitre nous a aussi aidés pour connaitre le contexte dans lequel le thème a
été choisi.
D’autre part, nous avons présenté d’une manière générale le modèle client/serveur et
l’adressage IP. Ceux-ci nous ont servi à mieux connaître les domaines impliqués dans ce mémoire.
Elle se base sur les connaissances acquises en classe, des explications de professionnels de la
télégestion, mais aussi sur des recherches bibliographiques ou webographiques.
13
Chapitre II- MATERIELS ET METHODES
14
Ce chapitre montrera l’étude de l’ensemble des méthodes et des matériels utilisés dans ce projet.
II.1- CAHIER DES CHARGES
On rappelle que l’objectif principal de ce projet est l’administration de personnel et des
matériels. Pour ce faire, différents tâches sont nécessaires, à savoir :
Gestion du personnel : c’est l’ensemble des tâches administratives nécessaires à une bonne
gestion des ressources humaines, telles que :
Inscription d’une nouvelle personne ;
Elaboration d’une liste de personnel ;
Statistiques de fréquentation individuelle ;
Création de carte de membre ;
Suivie du paiement du frais (uniquement pour les membres) ;
Elaboration d’une liste des présences ;
Rapport mensuel des présences ;
Gestion des matériels : c’est l’ensemble des actions permettant d’assurer la maintenance des
équipements électroniques et informatiques ainsi que la gestion des stocks :
Sauvegarde des données d’un matériel ;
Elaboration d’une liste des matériels ;
Mise à jour des données concernant les matériels ;
Statistiques des matériels ;
Gestion des communautés :
Elaboration d’une liste des communautés ;
Elaboration d’une liste des membres d’une communauté ;
Elaboration d’une liste des conférences d’une communauté ;
Suivie des conférences des communautés.
Gestion des visites :
Sauvegarde des visites d’entreprise ;
Rapport des visites.
Afin d’accomplir ces tâches, nous avons décidé de créer un serveur avec Node.JS qui va
interagir avec une application web et une application native. Ces différentes tâches seront alors les
fonctionnalités que nous verrons sur l’application web après la conception. Par ailleurs, ces
applications permettront aussi de:
Economiser de temps car à titre d’exemple : il n’est plus nécessaire de faire des calculs comme
sur Excel pour calculer les statistiques sur le personnel et les matériels ;
Eviter les pertes de données car tous les données seront numérisées.
15
II.2- CONCEPTION DE L’APPLICATION WEB
II.2.1- Choix des matériels
II.2.1.1- JavaScript
JavaScript est un langage de script orienté objet utilisé pour le
développement d'applications internet. La programmation orientée objet a pour
but de permettre une plus grande flexibilité et maintenabilité du code. Le code
orienté objet est censé être plus simple à développer, plus facile à reprendre, à
analyser et permettre de répondre à des situations complexes en comparaison à Figure 7 : Logo
JavaScript
d'autres méthodes de programmation.
a- Concepts de programmation
Le propos de JavaScript est de manipuler de façon simple des objets, au sens informatique,
fournis par une application hôte. Autrement dit, l'intérêt de ce langage est de pouvoir contrôler
dynamiquement le comportement d'un page web : on peut par exemple vérifier que le code postal
saisi dans la page est correct, faire afficher des menus spéciaux quand la souris approche d'une zone
donnée, afficher des bandeaux publicitaires animés, orienter automatiquement le visiteur sur une autre
page, etc.
16
c- Critère de choix
Le choix du langage de programmation est alors en fonction de la simplicité à développer
l’application web et de résoudre des situations complexes lors la programmation. La rapidité
d’exécution du code et l’atténuation de la sollicitation du serveur sont aussi des atouts considérables
qui ont déterminé notre choix étant donné que JavaScript est un langage de scripts client-side.
II.2.1.2- Node.JS
Node.js est un environnement permettant l’exécution de
JavaScript côté serveur. Il est utilisé pour développer des applications
faisant largement appel à la possibilité d’exécuter JavaScript à la fois
sur le client et sur le serveur, ce qui permet de profiter de la réutilisation
du code et de l’absence de changement de contexte. Figure 9 : Logo Node.JS
a- Fonctionnement
Node.JS exécute les codes de façon asynchrone. En effet, en Node.js presque toutes les
opérations sont non bloquantes. Les opérations s’exécutent de façon linéaire l’une après l’autre sans
devoir attendre le résultat de l’opération précédente. Une fois que le traitement asynchrone est terminé
ou qu'un événement particulier survient, la callback qui a été fournie en paramètre est insérée dans la
file d'attente des callbacks avant d'être prise en compte par la boucle des événements
Une boucle des événements sert à surveiller l'état de la pile d'exécution. Si cette dernière est
vide d'instruction à exécuter, la boucle des événements déplacera la callback en attente dans la file
vers la pile d'exécution, permettant à cette callback d'être ainsi exécutée. C’est un modèle de
programmation très intéressant en termes de performances
File d’attente
17
b- Rôle
Dans ce projet, Node.Js sert à développer le back-end. On peut dire qu’il est le cœur de notre
projet car c’est lui qui fait la liaison entre les différents matériels utilisés et presque tous les
traitements des informations. Grâce à ses performances hors norme, le choix du serveur n’est pas
difficile à prendre.
c- Exemple de code bloquant et non bloquant
// Code boquant
var content = fs.readFileSync(‘MonFichier.txt’) ; // lire et mettre le contenu de MonFichier.txt
dans la variable content
console.log(content) ; // afficher le contenu
//Code non bloquant
fs.readFile(‘MonFichier.txt’, (err, content) => {
if (err) {
throw err ; // afficher l’erreur s’il y en a pendant la lecture
}
console.log(content) ; // afficher le contenu
}) ;
// autre code à exécuter
Dans le code non bloquant, (err, content) est appelé callback. En attendant d’avoir les avoir
information sur ‘MonFichier.txt’, Node.JS peut exécuter la suite du code.
II.2.1.3- MongoDB
MongoDB est un système de gestion de base de données
orienté documentset ne nécessitant pas de schéma prédéfini des
données (Nosql). Figure 11 : Logo MongoDB
18
Tableau 5 : Comparaison SQL / MongoDB
SQL MongoDB
Base de données Base de données
Table Collection
Enregistrement Document
attribut propriété (chaîne, entier, tableau, structure)
19
Site web
Application web
Serveur Serveur
application.
II.2.2- Design
Avant tout, il est important de commencer par le design pour se mettre dans le bain. La figure
15 nous montre à quoi ressemble l’interface utilisateur que nous allons créer.
1 2
L’interface se divise en deux zones dont la première (zone 1) appelé sidebar contient les menus
tandis que la deuxième sert à afficher le contenu de la page respective à chaque menu.
20
II.2.3- Priorisation des fonctionnalités
La priorisation des fonctionnalités est une étape très importante dans un développement web
pour éviter de rebrousser le chemin. Dans cette application web, une fonctionnalité peut contenir
d’autres sous-fonctionnalités, à savoir :
Inscription : pour inscrire une nouvelle personne, on doit remplir des champs, à savoir : photo
de profil, nom, prénom, adresse, établissement, N° CIN, Facebook, tel, email, date de naissance,
sexe et poste.
Liste de personnel : elle nous permet de faciliter le suivie de tous les personnes qui travaille
dans la société. Dans cette liste, on aura les fonctionnalités suivantes :
Supprimer : pour retirer une personne dans la liste ;
Statistique : pour calculer le volume horaire et le statistique de fréquentations
mensuels d’une personne ;
Payement : pour suivre le payement des frais (uniquement pour les membres) ;
Plus d’info : pour voir davantage des informations sur la personne. On devra aussi accéder
dans ce menu pour créer la carte membre.
Liste des présences : cette liste sert non seulement de suivre la présence mais aussi de dresser
une liste journalière des matériels utilisés pour chaque personne. La liste de présence est aussi
indispensable pour calculer la statistique des matériels.
Nouveau matériel : il en est de même pour créer un matériel. Des champs sont à remplir
obligatoirement, tels que : photo, nom et nombre du matériel.
Liste des matériels : cette liste nous permet de faire l’inventaire des matériels, vérifier les
matériels non rendus ou défectueux et modifier les données d’un matériels. De plus, on peut
aussi rechercher les personnes qui n’ont pas rendus des matériels.
Statistique des matériels : l’application permet aussi de faire des statistiques sur les matériels.
Elle permet notamment de calculer la fréquence d’utilisation mensuelle pour chaque matériel
et ainsi de savoir le total des différents matériels utilisés.
Nouvelle communauté : puisque la société possède plusieurs communautés, il est important
de les insérer dans la base de données afin de suivre ses activités.
Liste des communautés : elle nous permet de rechercher les communautés, de dresser la liste
des membres d’une communauté, la liste des conférences effectuer par chaque communauté et
la liste des membres qui y ont assisté.
Nouvelle visite : toutes les visites seront aussi sauvegardées dans la base de données afin de
rédiger un rapport mensuel. Lors d’une visite, les données à sauvegarder sont le nom de la
société et le nombre des visiteurs.
21
Rapport de visite, rapport de communautés, rapport de présences : puisque des données
comme les visites, une conférence des communautés et des présences étaient sauvegarder dans
la base de données, nous pouvons nous en servir pour rédiger des rapports mensuels.
Choix des
Liste des
matériels
préseces
utilisés
Rapport des
présences
Recherche
Nouveau d'un
matériel matériel
Modification
de mot de Liste des Suppression
Connexion passe matériels
Modificatio
Page d'accueil Statistiques n
des matériels
Plus d'info
Recherche
Nouvelle
communauté Recherche
Ajout d'un
membre
Liste des
membres
Retrait d'un
membre
Liste des
communautés Conférence
Rapport des
communautés Recherche
22
II.2.4- Architecture du système
Le système est composé de quatre parties, à savoir :
Le système de gestion de base de données (SGBD) : système servant à stocker, à manipuler
ou gérer, et à partager des données dans une base de données, en garantissant la qualité, la
pérennité et la confidentialité des informations, tout en cachant la complexité des opérations.
Le back-end : c’est la partie la plus importante de l’application car il assure la médiation du
SGBD, le front-end et l’application native. Le back-end prend en charge donc l’ensemble des
fonctionnalités du système.
Le front-end : c’est l’ensemble des éléments visible directement par les utilisateurs et avec
lesquelles ces derniers peuvent interagir. Il prend en charge l’aspect ergonomique de
l’application.
L’application native : c’est un logiciel développé pour un smartphone afin de scanner le QR
Code.
Ces quatre parties sont créées grâce aux outils choisis dans le paragraphe II.2.1. Soient
MongoDB pour le SGBD, Node.JS pour le back-end, React.JS pour le front-end et Android Studio
pour l’application native. Cependant, ces outils sont insuffisants pour réaliser le projet notamment
pour assurer la communication entre les quatre parties c’est pourquoi on devra l’associer avec d’autres
technologies.
23
Front-end Back-end SGBD
Création
des fichiers Création
de configuration du serveur de
l’application
Choix de Détermination web Choix de Base de
Index.html Echange Execution de
la page d’une opération l’opération données
de données l’opération
à afficher à effectuer à effectuer
Ecoute de
App.js Composants BaseService Axios l’application Route MongoDB
web sur Sauvegarde
le port 8080
Router Recherche
Création du
serveur de Modification
Application native l’application
native
Suppression
Connexion
Création Etablissement Ecoute de à la base
de la requête de la connexion la réponse Affichage de données
(MongoDB)
24
II.2.4.2- Communication entre le back-end et le SGBD
Puisque nous avons choisi MongoDB pour faire office de SGBD, nous utiliserons un pilote
compatible à la fois au Node.JS et à MongoDB appelé « Mongoose ». Mongoose est une bibliothèque
JavaScript qui permet de définir des schémas avec des données typées. Une fois qu'un schéma est
défini, Mongoose permet de créer un modèle basé sur ce schéma spécifique.
MongoDB écoute les connexions sur son port 27017. En utilisant la méthode .connect() de
mongoose, nous pouvons établir une connexion entre Node.JS et MongoDB. Nous aurons alors un
code comme celui-ci : mongoose.connect(mongodb://localhost:27017/database) où localhost fait
référence à l’ordinateur sur lequel l’application est exécutée, 27017 est le port de MongoDB et
database est le nom de la base de données.
Il est important de noter que la connexion entre l’application native et le serveur s’établie si et
seulement s’ils se trouvent sur un même réseau.
25
II.2.5- Développement du back-end
Le Back-End est la partie du code qui est exécutée par le serveur en fonction de la demande du
client. A part les éléments que nous avons déjà vus sur la figure 17, il existe d’autres éléments pour
former le back-end.
II.2.5.1- routes
C’est ensemble des routes « ou Urls » dont chacune est associées à une fonction dans le
« controllers ». Dès que le back-end reçoit une requête où l’Url est conforme à celle dans le fichier
« route.js », alors il exécute la fonction respective ;
Le tableau 7 montre entre autres les fonctions exécutées par le serveur en fonction des Urls
envoyées par le navigateur.
II.2.5.2- controllers :
C’est un fichier contenant l’ensemble des fonctions pour faire des opérations et traitement des
données envoyées ou demandées par le client.
26
Sauvegarde d’une présence
Quand on scanne un CodeQR correspondant à une personne, le serveur doit sauvegarder
l’identité de la personne avec l’heure d’entrée ou de sortie.
Nouvelle
présence
Compter le nombre
d’occurrence
de la présence
27
Figure 19 : Logigramme pour la création de la liste journalière des matériels utilisés
28
Ces fonctions sont :
Inscription d’une nouvelle personne ;
Sauvegarde d’un nouveau matériel ;
Sauvegarde du CodeQR.
Pour que la requête soit confirmée, trois conditions doivent être réunies :
Les données comportent le fichier recommandé ;
L’extension du fichier contenant l’image est : jpeg, jpg, png ou bmp ;
La taille du fichier ne dépasse pas 3 MB.
La figure 21 illustre le logigramme pour la programmation du middleware.
Remarque : module.exports permet d’exporter le fichier pour l’appeler depuis un autre fichier.
29
II.2.5.5- models
Le dossier « models » contient les fichiers pour définir un schéma pour chaque collection. Nous
avons besoin de sept (7) collections afin de bien organiser les données, à savoir :
Personnel ;
Matériels ;
Présences ;
Paiement ;
Communauté ;
Conférence ;
Visite.
II.2.5.6- app.js
« app.js » est le fichier principal permettant d’exécuter l’application lors de la programmation.
Des opérations importantes composent ce fichier, telles que :
connexion du back-end et le SGBD c’est-à-dire mongoose ;
Création du serveur de l’application. Ensuite, on le met à l’écoute sur un port, soit 8080 pour
notre cas. C’est le port qui sera précisé sur axios (côté client) pour établir la connexion entre le
back-end et front-end ;
Création du serveur socket. Ce serveur est réservé pour l’application native que nous créerons
ultérieurement. Il faut aussi le mettre à l’écoute sur un port, soit 3000 ;
Appel du fichier « routes.js » pour que ce dernier puisse traiter l’url reçu par le serveur de
l’application web. Il en est de même pour le serveur de l’application native, on doit appeler le
fichier « socketServer.js » quand le serveur reçoit une requête.
Remarque : Nous tenons à préciser que les ports du serveur de l’application web et native ne doivent
pas être identiques afin d’éviter les erreurs.
II.2.5.7- uploads
C’est le dossier de destination des fichiers venant du client comme les photos de profils,
CodeQR et photo des matériels ;
II.2.5.8- node.modules
« node.modules » est le dossier qui contient tous les packages installées. Il se crée
automatiquement lorsqu’on installe un package.
II.2.5.9- package.json
C’est un fichier contenant les noms des packages installés. Par exemple mongoose, axios,…
30
II.2.5.10-Templates
Les Templates nous servent de model pour faciliter l’exportation en PDF. Tous les documents
devant être exportés en PDF doit avoir alors un Template.
II.2.5.11-Dossiers de destination
Les résultats (fichiers) de l’exportation en PDF sont sauvegardés respectivement dans les
dossiers de destinations.
Index.html
App.js BaseServices
Request
Router Composants Axios
(http)
Response
II.2.6.1- index.html
Lorsque l'application démarre, c'est la première page qui est chargée et ce sera le seul fichier
html de toute l'application. De plus, ce fichier a une ligne de code <div id = ”root”> </div>. Cette
ligne est très significative puisque tous les composants de l'application sont chargés dans ce div.
Voici à quoi ressemble le fichier « index.html ».
II.2.6.1- index.js
Il s'agit du fichier javascript correspondant au fichier index.html. Ce fichier a les codes suivants
qui sont très significative :
31
A travers ces quelques lignes, on constate qu’il faut utiliser deux librairies :
react : pour utiliser react ;
react-dom : pour définir ce que nous souhaitons rendre.
Avec le package react-dom, nous utilisons la fonction render. En premier argument nous
souhaitons rendre le fichier App.js sur l'élément du DOM avec un ID qui est root.
II.2.6.2- App.js
Ceci est le composant principal de React.js qui agit comme un conteneur pour tous les autres
composants.
Puisque celui-ci est le fichier qui sera chargé en premier lors de l’exécution de l’application,
nous allons créer un espace login à l’intérieur de ce fichier. Ainsi, pour raison de sécurité, tous les
utilisateurs devront entrer un « nom d’utilisateur » et un « mot de passe » avant l’utilisation.
Voici les étapes à suivre dès que le fichier « App.js » est chargé :
Vérification de l’état du compte utilisateur ;
Si le compte est connecté, le fichier « App.js » affichera les menus de l’application, sinon, il
vérifie si la modification de mot de passe ;
Si cette dernière est désactivée, l’espace login sera affiché pour saisir le nom d’utilisateur et le
mot de passe. Ensuite, l’application web envoie les données saisies au serveur pour
l’authentification ;
Si les données saisies sont correctes, App.js affichera les menus de l’application ;
Sinon, le client sera informé que les données composées sont incorrectes et de remplir à
nouveau le nom d’utilisateur et le mot de passe ;
Par contre, l’espace de modification sera affiché s’il est activé. Le client sera invité à remplir le
nouveau nom d’utilisateur, l’ancien mot de passe, le nouveau mot de passe et de confirmer ce
dernier ;
Si le nouveau mot de passe n’est pas confirmé, le client sera informé et invité de remplir à
nouveau les champs précédents ;
Sinon, l’application web envoie les données composées au serveur. Ce dernier va traiter
ces données et envoyer une réponse de type booléen (true ou false) vers le client ;
32
Si la réponse est « true », App.js informe le client que le nom d’utilisateur et le mot de
passe sont modifiées, ensuite, le client sera redirigé vers l’espace login ;
Sinon, le client sera averti que l’ancien mot de passe saisi est incorrect, ensuite il sera invité
de remplir à nouveau les champs dans l’espace de modification.
Vérification
de l’état du compte
Vérification Confirmation du
Login nouveau mot de passe
Réception de
la réponse
Réponse = true
Informer le client
33
II.2.6.3- Router
Router est une bibliothèque de routage dans React.js appelé depuis le fichier App.js. Il définit
une relation entre une URL et un composant. C’est-à-dire que lorsque l'utilisateur visite une URL sur
le navigateur, un composant correspondant doit être rendu sur l'interface. Cela rend l'interface de
l'application synchrone avec l’URL du navigateur.
Par exemple nous allons analyser une portion de code de « App.js » pour l’inscription d’une
nouvelle personne :
Le code signifie que le composant « AddPersonne » sera rendu au navigateur li l’Url sur ce
dernier correspond à l’Url « /creactepersonne » mentionné dans la path.
II.2.6.4- Composants
Les composants sont des fichiers avec une extension JavaScript qui sont appelés depuis le
fichier App.js. Un composant sert notamment à modifier l’affichage sur le navigateur en utilisant des
balises DOM. Le DOM est une interface de programmation normalisée qui permet à des scripts
d'examiner et de modifier le contenu du navigateur web.
L’échange des données entre le front-end et le back-end se fait aussi à partir des composants en
faisant appel à la BaseServices.
II.2.6.5- BaseServices
C’est un fichier contenant l’ensemble des méthodes opérationnelles exécutable via un
composant. Le BaseService va transmettre ensuite la requête vers le back-end à l’aide de « axios ».
Les Urls dans le BaseServices doivent être identiques à ceux dans la route du back-end afin d’assurer
la transmission des données.
II.2.6.6- package.json
Comme le back-end, React.JS dispose aussi un fichier package.json contenant tous les noms
des packages installés.
34
Cette application est développée avec Android Studio dont le langage de programmation est
Java. Nous tenons à préciser que JavaScript et Java sont deux langages différents, Java permet de
créer des applications qui sont exécutées sur une machine tandis que le code JavaScript est exécuté
uniquement sur un navigateur.
35
Si elle n’arrive pas à se connecter au serveur, aucune notification ne sera affichée. Ce
problème peut arriver si le smartphone n’est pas connecté sur le même réseau que le
serveur ;
En revanche, si elle est connectée au serveur, elle affiche en notification « Connexion
établie ». Ensuite, l’application attendra les réponses du serveur et les affichera sous
forme de notification. Il est important de noter que le serveur transmet une réponse
lorsque l’application native envoie une requête contenant le résultat du scan. La réponse
permettra alors de déterminer l’identité de la personne et de s’assurer que ce dernier est
sauvegarder dans la liste de présence.
Création de la requête
Etablissement
Bouton scan activé de la connection
Nouvelle
Résultat vide
réponse
36
II.3.2- Fonctionnement du QR Code
II.3.2.1-Description
Le QR Code permet le stockage d'informations sous forme graphique et la lecture de manière
automatique et rapide des données plus ou moins complexes afin de gagner du temps et surtout réduire
les erreurs de saisie manuelle. Sa lecture se fait via un lecteur de code-barres, une capture laser, une
webcam et même un téléphone portable muni d'une caméra.
x
Un QR Code a la capacité de stocker ses informations horizontalement
et verticalement. En effet, la lecture se fera sur 2 axes. Par conséquent, un
QR Code peut être représenté par une matrice(x,y). La taille maximale de
y
données que peut contenir un QR Code est de 2953 octets. Figure 25 : QR Code
Plus il y a de points dans la matrice, plus il y a de l'information stockée dans le QR Code. Le Qr Code
a également la capacité de pouvoir être lu dans tous les sens (360°) de manière très rapide grâce à des
repères dans la matrice facilement détectables.
II.3.2.2-Structure
Un QR Code est composé de carrés noirs et blancs qui s'appellent modules. Chaque module
représente une valeur binaire, soit 1 pour un module noir et 0 pour un module blanc.
Il existe dans le code 2 principales régions. Le code contenant les données à stocker et le code
correcteur. Le code correcteur permettra, en cas de perte des données stockées, à corriger celles-ci et
récupérer les informations détruites. Il est important de noter que le QR Code reste lisible avec jusqu'à
30% de son code détruit ou manquant car il contient un code correcteur.
Zone de
Zone de
correction
données
d’erreur
37
Insérer les données avec le code correcteur dans la matrice ;
Générer la matrice ;
Générer le QR Code au format image : c'est le résultat final qui pourra être lu par un lecteur de
QR Code.
II.3.2.4-Lecture
Voici les étapes nécessaires pour la lecture d’un QR Code :
Reconnaître les bits 1 ou 0 ;
Identifier le taux de code correcteur ;
Identifier la version du QR Code ;
Découvrir la région à décoder ;
Lire les données et le code correcteur ;
Détecter et corriger s’il contient des erreurs ;
Décoder les données ;
Afficher le résultat.
38
II.4- CONCLUSION
Bref, nous constatons que nous avons conçu un système composé de quatre parties, à savoir le
système de gestion de base de données, le back-end, le front-end et l’application native. Chaque partie
joue un rôle très important dans le système. En particulier, nous avons choisi MongoDB qui est un
système de gestion de base de données orienté documents (Nosql). Cela nous a facilité la tâche
pendant la conception car contrairement à un SGBD sql, MongoDB ne nécessite pas de schéma
prédéfini des données. A part les outils présentés dans le choix des matériels, nous avons adopté
d’autres technologies pour assurer la communication entre les différentes parties. Grâce à ses
technologies, les applications web et native pourront interagir avec le back-end par Wi-Fi. Cette
communication à distance est l’une des méthodes qui nous a permis de résoudre les pertes de temps.
Enfin, lors du développement, nous avons préféré d’élaborer des logigrammes plutôt que de
présenter des suites d’instructions dans le but de faciliter la compréhension.
39
Chapitre III- RESULTATS ET INTERPRETATIONS
40
Ce dernier chapitre présentera les résultats obtenus après la conception des applications web et
natives.
41
III.1.3- Statistique de fréquentation
La statistique de fréquentation permet de calculer facilement le nombre de fréquentation et le
cumul des heures de travail mensuel d’un employé.
Pour accéder à la statistique de fréquentation, on clique sur « Détails >> Statistique » depuis la
liste de personnel.
Dès qu’on scanne un QR Code, c’est-à-dire si une personne est arrivée ou partie, les résultats
seront affichés automatiquement dans cette page dont le nom, prénom, poste, jour, heure d’entrée ou
de sortie.
De plus, en cliquant sur le bouton « Détails », on accède à une autre page pour dresser une liste
des matériels utilisé par une personne chaque jour. Cette liste nous permet d’avoir une bonne gestion
sur les matériels car elle contient non seulement la photo, et le nombre de matériels utilisés mais aussi
une observation afin de mentionner si ce dernier est rendu ou non rendu.
42
Figure 30 : Liste des présences
43
III.1.5- Liste des matériels
Comme le montre la figure 44, nous pouvons rechercher les matériels en fonction de leurs
catégories (électronique ou informatique) et leurs états (utilisés ou défectueux). Cette page sert aussi
à mettre à jour les données concernant un matériel et de rechercher les personnes qui n’ont pas rendu
des matériels.
En résumé, cette page sert à effectuer l’inventaire des matériels et à déterminer le nombre de
matériel à approvisionner.
44
III.2- PRESENTATION DE L’APPLICATION NATIVE
III.2.2- Scan
Une fois la connexion établie, l’utilisateur peut
commencer à scanner. Pour ce faire, il suffit de pointer la
camera du smartphone vers le QR code afin de récupérer le
résultat.
45
D’autre part, l’application change d’activité pour afficher le résultat. Cette deuxième activité
contient la photo, nom, prénom et poste de la personne et surtout un « bouton » qui sert à scanner de
nouveau des autres QR code.
III.3- INTERPRETATIONS
En examinant les résultats présentés dans les paragraphes III.1 et III.2, on constate qu’ils
répondent aux objectifs globales et spécifiques mentionnées dans le cahier de charge.
D’ailleurs, les pages sont riches en informations comme on peut le voir sur les figures 28, 31 et
32. Ainsi, nous avons habituellement utilisé des tableaux et des images sur ces pages pour permettre
au responsable d’avoir un regroupement visuel des informations. Cela lui permet d’accélérer la
recherche des informations.
L’utilisation des formulaires et des boutons sur les pages web sont bénéfiques car cela permet
de réaliser les tâches avec le minimum d’intervention humaine.
L’application native que nous avons développée avec Android Studio permettant de scanner un
Code QR est aussi très primordiale dans notre système. En effet, elle nous permet d’avoir une
transparence dans l’entreprise. D’une part, un intrus ne pourra jamais entrer au sein de l’entreprise.
D’autre part, les membres n’aura plus aucun doute sur leurs statistiques de fréquentation car
l’application native fournit des informations très précises qui seront ensuite sauvegarder dans une
base de données.
En somme, après avoir réalisé les tests, nous constatons que nos études ont abouti aux résultats
voulus.
46
Chapitre IV- DISCUSSION
47
IV.1- SUR LE PLAN MATERIEL
Sur le choix des matériels, nous sommes conscients qu’il existe d’autre solution pour assurer la
gestion de présence telle que l’utilisation d’une carte RFID en lieu et place du Code QR. Pourtant,
nous avons opté pour ce dernier car il est le plus avantageux.
En effet, le QR Code est très résistants car il suffit que 30% du QR Code soit intact pour qu’il
puisse être flashé. De plus, son faible coût est aussi un atout considérable. Il peut être fourni
gratuitement sur de nombreux sites web ou sur des générateurs de QR Code. Enfin, il suffit de les
imprimer pour que nous puissions les utiliser.
Par conséquent, connaissant les différentes fonctionnalités que doivent avoir le système
d’administration du personnel et des matériels, nous avons décidé de concevoir une application web
plutôt qu’un site web. Nous sommes donc tournés vers JavaScript pour créer cette application. En
revanche, si nous étions déterminés à concevoir un site web, il fallait adopter d’autre langage
approprié pour concevoir ce dernier tel que PHP.
Puisque l’objectif principal de ce projet est de gérer le personnel et les matériels de la société
HABAKA à travers un outil informatique, on peut dire que ce projet est une informatique de gestion.
Ce projet peut donc s’appliquer sur plusieurs domaines, mais toutefois on doit l’adapter en fonction
du domaine qu’il s’applique.
48
Gestion des ressources humaines : établissement du bulletin de salaire, contrôle des paies
spécifiques, mise à jour des dossiers du personnel ;
Domaine industriel :
Gestion de Maintenance Assisté par Ordinateur : gestion des équipements, gestion des
actions de maintenances, gestion des coûts et budget ;
Domaine pédagogique :
Expérimentation Assistée par Ordinateur : automatisation de l’acquisition des données,
sauvegarde et traitement des résultats de mesure, représentation graphique des résultats.
Enseignement Assisté par Ordinateur : développement d'un didacticiel ;
IV.4- AVANTAGES
L’informatique de gestion permet à l’entreprise de bénéficier les avantages suivants :
Accomplir les tâches dans les délais : l’exécution des tâches est effectuée par l’ordinateur ;
Simplifier la tâche : la tâche est aussi exécutée avec le minimum d’intervention possible ;
Faire plus dans un même laps de temps ;
Identifier et anticiper les problèmes : nous pouvons repérer rapidement les problèmes qui
affectent l’entreprise et ainsi anticiper les problèmes qui pourraient subvenir ;
Améliorer la sécurité des données : les données sont sauvegardées dans une base donnée qui
est protégée par un mot de passe.
49
CONCLUSION ET PERSPECTIVES
L’objectif général de cette étude est d’améliorer l’administration du personnel et les matériels
de HABAKA à travers l’informatique. HABAKA est un organisme communautaire au sein du Centre
d’Information et de Documentation Scientifique et Technique (CIDST) sis à Tsimbazaza. La
présentation de cet organisme et de ce centre sont alors nécessaire pour conduire les lecteurs dans
l’étude.
Les matériels et méthodologie est le chapitre le plus important dans cette étude. En premier
lieu, nous avons listé les objectifs généraux et spécifiques dans un cahier de charge. La connaissance
parfaite des missions a été indispensable pour l’amélioration de l’administration. En second lieu, la
conception de l’application web et l’application native nous ont permis d’accomplir une grande partie
des objectifs mentionnés dans le cahier de charge.
Par conséquent, des matériels ont été choisis. Pour le développement du front-end de
l’application web, nous avons opté pour React JS tandis que pour le développement du back-end,
nous avons choisi Node.JS. Le choix des matériels notamment JavaScript s’est fait alors en fonction
de la simplicité à développer l’application web et de résoudre des situations complexes lors de la
programmation. D’autre part, le développement de l’application native est un atout considérable pour
l’administration étant donné sa facilité à sauvegarder les présences du personnel dans la base de
données.
La communication entre les différentes parties du système est aussi primordiale c’est pourquoi
nous étions obligés de faire des choix technologiques. A ce propos, nous avons utilisé des
technologies telles que mongoose, axios et Okhttp3 pour assurer respectivement la communication
entre le back-end et le SGBD, le front-end et le back-end, le back-end et l’application native.
Par ailleurs, ce stage de fin d’étude de Master II que nous avons effectué au sein de la société
HABAKA nous a permis d’acquérir des compétences essentielles tant sur le plan personnel que
professionnel. La fréquentation avec des professionnels qui œuvrent dans le domaine informatique et
50
électronique nous a donné un bon développement personnel surtout dans les travails d’équipe et
d’approfondir nos connaissances sur les différents technologies.
En conclusion, la conception des applications web et native procure des avantages tels que la
réduction des temps perdus et l’amélioration de la sécurité des données. De plus, nous avons su
exploiter le QR Code qui apporte beaucoup plus pour l’entreprise vu son efficacité et sa rapidité à
accomplir une tâche sur un seul geste. En outre, ce projet est très intéressant puisqu’il peut s’adapter
dans plusieurs domaines différents.
Connaissant que l’application web nous permet de gérer une grande activité, il est envisageable
de procéder à une maintenance évolutive tout en maintenant la cohérence de l’application avec les
besoins de l’entreprise. Afin d’optimiser l’application web, l’intégration d’un système de sécurisation
de données plus fiable et performant que celui mis en place est aussi concevable.
51
REFERENCES
BIBLIOGRAPHIQUES
Informatique de réseaux
WEBOGRAPHIQUES
52
ANNEXES
LISTE DES ANNEXES
Annexe 1 : Extrait de programme sur le fichier « controllers.js » côté serveur………………………III
II
Annexe 1 : Extrait de programme sur le fichier « controllers.js » côté serveur
III
Annexe 2 : Extrait de programme sur le fichier « Materiels.js » côté front-end
useEffect(() => {
getMateriel(props.match.params.id);
}, [props.match.params.id]);
IV
Annexe 3 : Extrait de code sur l’application native
@Override
public void onMessage(WebSocket webSocket, String text) {
super.onMessage(webSocket, text);
runOnUiThread(() -> {
Toast.makeText(MainActivity.this, text, Toast.LENGTH_LONG).show();
});
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
IntentResult intentResult = IntentIntegrator.parseActivityResult(requestCode,
resultCode, data);
if (intentResult.getContents() != null){
webSocket.send(intentResult.getContents());
String result = intentResult.getContents();
Intent otherActivity = new Intent(getApplicationContext(), ShowData.class);
otherActivity.putExtra("response", result);
startActivity(otherActivity);
} else {
Toast.makeText(this, "Vous avez annulé le scan", Toast.LENGTH_LONG).show();
}
}
V
Annexe 4 : Evolution de la programmation asynchrone en JavaScript
Rappelons au préalable que par design, Node.js est asynchrone. Le standard est basé sur des
callbacks, qui ont vite été supplantées par les promesses, une manière plus élégante et efficace d’écrire
du code asynchrone.
Cependant, l’utilisation de promesses mène souvent à du code verbeux et qui s’éloigne des
pratiques habituelles. C’est pourquoi Node.js nous offre une nouvelle méthode pour éviter ces
ambiguïtés, à savoir async/await.
Considérons un exemple pour voir de près la différence entre ces trois méthodes. L’exemple
montre qu’on lit un fichier « input.txt », puis on affiche son contenu dans le terminal.
Callback
var fs = require("fs");
fs.readFile('input.txt', function (err, data) {
if (err) return console.log(err);
console.log(data.toString());
});
Promise
var fs = require("fs");
fs.readFile('input.txt')
.then(data => {
console.log(data.toString());
})
.catch(err => {
console.log(err);
})
Async/await
var fs = require("fs");
try {
const data = await fs.readFile('input.txt')
} catch (err) {
console.log(err);
}
Il est important de noter que le mot clé « await » ne peut être utilisé que dans une fonction
« async ».
VI
VII
TITRE : CONCEPTION DES APPLICATIONS WEB ET NATIVE POUR
L’ADMINISTRATION DU PERSONNEL ET DES MATERIELS DE HABAKA
RESUME
L’administration du personnel et des matériels est une mission très importante au niveau
de la direction. Cependant, l’entreprise utilise des méthodes inefficaces pour accomplir cette
mission, ce qui entraine beaucoup de pertes de temps et de pertes de données. La conception
des applications web et native sont alors les solutions proposés pour résoudre ces problèmes
afin d’assurer les fonctions pour administrer le personnel et les matériels. De plus, ces
applications sont conçues avec des technologies avancées telles que Mongo DB, Node.JS,
React.JS et QR Code afin d’apporter des améliorations pour l’entreprise. En outre, cette
recherche est très intéressante puisqu’elle peut s’adapter dans plusieurs domaines différents.
Connaissant que l’application web nous permet de gérer une grande activité, il est
envisageable de procéder à une maintenance évolutive tout en conservant la cohérence de
l’application avec les besoins de l’entreprise.
ABSTRACT
The administration of personnel and materials is a very important mission at the
management level. However, the company uses inefficient methods to accomplish this mission,
resulting in a lot of waste of time and loss of data. The design of web and native applications
are then the solutions proposed to solve these problems in order to provide the functions to
administer personnel and materials. Additionally, web and native applications are built with
advanced technologies such as Mongo DB, Node.JS, React.JS, and QR Code to deliver
improvements for the business. In addition, this project is very interesting since it can be
adapted in several different fields.
Knowing that the Web application enables us to manage a large activity, it is possible to
carry out an evolving maintenance while preserving the consistency of the application with the
needs of the company.
Rapporteur Impétrant
RAZANAMANAMPISOA Harimalala Nom : RAMANJATO
Maître de Conférences Prénom : Kiadinirina Biaza
Tel : 032 21 765 05 / 034 31 633 26
Lieu de stage Email : kiadibiazaramanjato@gmail.com
HABAKA TSIMBAZAZA Adresse : Lot II N 102 A Analamahitsy