Académique Documents
Professionnel Documents
Culture Documents
Projet Fin
Module
APPLICATION DE LA GESTION DU DEPARTEMENT
INFORMATIQUE
Réalisé par : Encadré par :
YOUSSEFI Nora Pr.Laachak Lotfi
Application web basée sur MVC et
MELLOUK Ahmed
Standards JEE
1
Tables des matières
Remerciement : -------------------------------------------------------------------------3
Définition du système d’information : ---------------------------------------------4
C-front-End :
I. Axios : ----------------------------------------------------------------------------11
II. Front_vueJs : --------------------------------------------------------------------12
D- Base de donnée :
1. Création de la base de donnée : --------------------------------------------20
2. Migration : ----------------------------------------------------------------------21
3. Base de donne : -----------------------------------------------------------------25
I. Authentification : -------------------------------------------------------26
II. Explication du back_End : --------------------------------------------28
Les outils et langages utilisée : ------------------------------------------------52
2
Remerciements :
3
Définition du système d’information:
Ce projet vise à effectuer un site web qui traite un system d’information du
département informatique d’une université, en utilisant la modélisation orientée
objet UML et puis Laravel et vueJs comme frameworks.
Ce projet prendra en compte toutes les contraintes qui peuvent survenir
lorsqu’un administrateur veut gérer les différents couloirs du département.
Ainsi, On va traiter trois types d’utilisateurs : l’étudiant, le professeur et puis
l’admin, et alors on va spécifier les différents accès attribuer à chacun de ces 3
utilisateurs.
4
lieu de naissance, adresse, numéro de téléphone, nom et prénom de
l’étudiant…)
3. Analyse du contexte
L’analyse du contexte a pour objectif l’identification des différents acteurs qui
interagiront avec le système. Ces acteurs seront regroupés par la suite sous forme
de rôles dont chacun englobe un ensemble d’entités. Le regroupement sera effectué
en se basant sur les interactions.
5
a. Les rôles
Un rôle réfère à une mission et à des responsabilités assumées par les acteurs du
système étudié. Un acteur (utilisateur, dispositif matériel ou autre système) interagit
directement avec le système et peut consulter et/ou modifier directement l’état du
système, par émission et/ou réception de messages éventuellement porteurs de
données.
B-Conception :
6
1-Diagramme de package :
7
2-Diagramme de use cases:
A - Diagramme des cas d'utilisation pour package gestion utilisateur :
8
C - Diagramme des cas d'utilisation pour package gestion notes :
9
E - Diagramme des cas d'utilisation pour package gestion Emploi
3-Diagramme de Class:
10
C – Front-End:
I. Axios:
La librairie axios est une librairie javascript qui nous donne la possibilité de
connecter notre backend et frontend avec un Rest Api.
Puisque Vue JS est un framework front end qui se base sur le concept du
templating.
Chaque page sera construite par plusieurs components qui sont situés dans
le dossier correspondant.
Les components utilisées pour toutes les pages, seront situées dans le
dossier général.
11
1. components:
2. views:
Les views sont les pages finals de chaque utilisateur qui sont
constituées par toutes les components.
12
3. Log In Page:
A. Admin:
➔ Page Initial:
13
● Admin View:
14
● Côte Script:
15
➔ CRUD Professeur:
Une fois l’un des boutons CRID est cliqué, les autres sont plus visibles, et seul le
CRUD du bouton cliqué est visible.
Toutes les pages CRUD de l’admin, sont manipulées avec les props et emit de
vuejs.
Ce sont deux méthodes qui nous permettent d’envoyer des données entre
components, père et fils, et vice versa.
16
➔ ADD Event:
17
B. Professeur:
➔ Page Initial:
18
➔ CRUD note :
➔ Add Event:
19
C. Etudiant:
➔ Page Initial:
➔ Consulter Note:
20
D- Base de données:
-----------------MAPPING--------------------
2) Migrations
a) Structure Des Fichiers :
21
b) Migrations :
Laravel nous donne la possibilité de créer une base de données avec les
migrations.
➔ Table ‘users’:
➔ Table ‘etudiants’:
22
Les clés étrangères sont representee par, il référence la table ‘users’ :
➔ Table ‘admin’:
➔ Table ‘professeurs’:
23
➔ Table ‘modules’:
➔ Table ‘notes’:
➔ Table ‘events’:
24
➔ Table ‘pfe’:
3) Base de données:
25
I. Authentification:
JWT: (Json Web Token ), est parmis les méthodes les plus sécurisées
d'échanges d’informations entre client et serveur.
Une fois qu'un nouvel utilisateur est connecté (logged in), le serveur lui assigne un
code dite Token JWT.
Une fois que l'utilisateur envoie une requête au serveur, JWT va accompagner cette
requête, s’il est connu par le serveur, la requête passe sinon la requête sera rejetée.
● Header:
● Payload:
26
2) Contrôleur d’authentification:
Le contrôleur d’authentification nous permet de faire cinq actions principales pour
l’authentification d’un utilisateur:
27
● Déconnecter (Log out):
● User - Profile:
28
3) Authentifier les requêtes:
Une fois qu'une requête est envoyée par l’utilisateur à un contrôleur, Il passe par le
middleware ‘auth:api’ qui vérifie si l’utilisateur est bien authentifié . Si oui il vérifie le
token JWT, Si oui, la requête va passer.
Si la requête est bien validée par, On doit filtrer selon le type de l’utilisateur.
Afin de faire ça, il suffit d’ajouter la condition dans la méthode de chaque contrôleur,
qui va contenir le code à exécuter.
Pour L’admin:
29
Pour Professeur:
Pour l’étudiant:
1) Admin:
L’Admin est l’acteur principal dans le package de gestion d’utilisateur, ses fonctions
principales sont la manipulation des utilisateurs et en plus il possède un accès total à
toute autre fonctionnalité propres aux autres utilisateurs.
A. Tableau de Fonctions:
30
getEvents() Sélectionner tous les Gestion d’emploi de temps
événements de l’emploi du
temps
updatePFE() Modifier sujet, commentaire et Gestion Pfe
deadline
updateNOTE() Modifier la note d’un module Gestion Note
pour un étudiant.
updateProf() Modifier les attribut d’un prof Gestion Utilisateur
31
B. Explication des Fonctions:
➔ getEtud():
return Etudiant::all();
➔ getProf():
32
➔ store():
Cette méthode sert à créer un nouvel utilisateur et l’ajouter, selon son type,
au table correspondante, soit Etudiants ou Professeurs.
33
● La deuxième partie consiste à ajouter le nouvel utilisateur a son table
correspondante:
➔ updateProf():
34
Une fois l’ID du professeur est soumis avec les nouveaux données, on modifie les
données dans la table d’utilisateur, à l'aide de la clé étrangère du professeur:
➔ updateEtud():
Une fois l’ID du l’étudiant est soumis avec les nouveaux données, on modifie les
données dans la table d’utilisateur, à l'aide de la clé étrangère de l'étudiants:
35
➔ destroyProf():
Une fois l’ID du professeur est passée, on supprime l’utilisateur dans la table “users”
et automatiquement à l'aide de “onDelete(‘cascade’)”, le professeur correspondant
sera supprimé.
➔ destroyEtud():
36
2. Package: “Gestion Note”:
➔ getNotes():
37
➔ updateNOTES():
➔ destroyNotes():
38
➔ getmodules():
➔ deleteMODULE():
➔ ajouterMODULE():
39
4. Package: “Gestion PFE” :
➔ getAllPfe():
A l’aide d’un loop foreach, et array_push on va créer notre propre objet json.
40
L'objet final retournée sera sous la forme:
➔ updatePFE():
41
➔ deletePFE():
➔ getEvents():
42
➔ createEvent():
2) Professeur:
Le Professeur est considéré comme acteur dans tous les packages sauf les gestion
d’utilisateurs.
Et il a la possibilité de:
43
deleteNote() Supprimer la note d’un Gestion notes
étudiant
getEvent() Sélectionner les événements Gestion emploi de temps
creer par le prof
createEvent Créer de nouvel événement Gestion emploi de temps
D. Explication de Fonctions:
➔ getNote():
On construit un objet de la même façon avec array_push , cet objet va contenir l’ID
de la note, nom d'étudiant,note, nom de module et la mention correspondante.
44
➔ ajouterNote():
➔ deleteNote():
45
7. Package: “Gestion modules” :
➔ getModules():
46
8. Package: “Gestion PFE” :
➔ getPfe():
A l’aide des clés étrangères dans la table du pfe, qui correspond au encadrant, on
peut sélectionner tous les profs ou le prof est en tant qu’un encadrant.
47
9. Package: “Gestion emploi de temps” :
➔ geEvent():
➔ createEvent():
3) Etudiant:
E. Tableau de Fonctions:
48
Fonctions Description Package
getModules() Sélectionner tous les modules. Gestion modules
getPfe() Sélectionner le PFE de Gestion PFE
l'étudiant.
getNotes() Sélectionner les notes de Gestion notes
chaque module.
getEvent() Sélectionner les événements Gestion emploi de temps
créer par tous les professeurs
F. Explication de Fonctions:
➔ getModules():
➔ getPfe():
49
➔ getNotes():
50
➔ getEvents():
On sélectionne toutes les événements qui constitue la table ‘events’ dans la base de
donnée.
51
E-Les outils et les languages utilisées:
Laravel 8:
VueJs 3 :
HTML 5:
52
HTML est un langage informatique utilisé sur l'internet. Ce langage est utilisé pour
créer des pages web. L'acronyme signifie HyperText Markup Language, ce qui
signifie en français "langage de balisage d'hypertexte". Cette signification porte bien
son nom puisqu'effectivement ce langage permet de réaliser de l'hypertexte à base
d'une structure de balisage.
CSS 3:
Le terme CSS est l'acronyme anglais de Cascading Style Sheets qui peut se traduire
par "feuilles de style en cascade". Le CSS est un langage informatique utilisé sur
l'internet pour mettre en forme les fichiers HTML ou XML. Ainsi, les feuilles de style,
aussi appelé les fichiers CSS, comprennent du code qui permet de gérer le design
d'une page en HTML.
Bootstrap 5:
Bootstrap est un Framework CSS qui permet de garantir un aspect unique quel que
soit le navigateur grâce à une compatibilité totale intégrée ce qui permet de disposer
d’une application responsive.
JavaScript:
53
JavaScript (souvent abrégé JS) est un langage de programmation de scripts créé en
1995 par Brendan Eich, principalement employé pour améliorer l'ergonomie d'un site
Internet et/ou d'une interface applicative utilisateur. C'est un langage orienté objet à
prototype, c'est-à-dire que les bases du langage et ses principales interfaces sont
fournies par des objets qui ne sont pas des instances de classes, mais qui sont
chacun équipés de constructeurs permettant de créer leurs propriétés, et notamment
une propriété de prototypage qui permet d'en créer des objets héritiers
personnalisés.
JQuery:
JQuery est un Framework JavaScript sous licence libre qui permet de faciliter des
fonctionnalités communes de JavaScript. L'utilisation de cette bibliothèque permet
de gagner du temps de développement lors de l'interaction sur le code HTML d'une
page web. JQuery possède par la même occasion l'avantage d'être utilisable sur
plusieurs navigateurs web (cf. Internet Explorer, Firefox, Chrome, Safari ou Opera).
AJAX:
54
AJAX est l'acronyme d'Asynchronous JavaScript And XML, ce qui transcrit en
français, signifie « JavaScript et XML asynchrones ». Derrière ce nom se cache un
ensemble de technologies destinées à réaliser de rapides mises à jour du contenu
d'une page Web, sans qu'elles nécessitent le moindre rechargement visible par
l'utilisateur de la page Web. Les technologies employées sont diverses et dépendent
du type de requêtes que l'on souhaite utiliser, mais d'une manière générale le
JavaScript est constamment présent.
55