MINISTÈRE DE L ÉDUCATION NATIONALE, DE LA RECHERCHE ET DE LA TECHNOLOGIE CONSERVATOIRE NATIONAL DES ARTS ET MÉTIERS DÉPARTEMENT INFORMATIQUE CHAIRE INFORMATIQUE D'ENTREPRISE LICENCE PROFESSIONNELLE «ANALYSTE CONCEPTEUR DES SYSTÈMES D INFORMATION ET DE DÉCISION» MEMOIRE DE PROJET De Dahmane BILEK Alain DONADINI «Mise en place d une application de gestion des missions et des ressources humaines d une S.S.I.I» Soutenu le 16 septembre 2005 JURY Président : Membres : M. HUA T-Té M. ABOU-CHAKRA Eric ANNEE UNIVERSITAIRE 2004-2005
Table des Matières 1. PRESENTATION DU PROJET... 3 1.1. Objectif... 3 1.2. Cahier des charges... 3 1.3. Contraintes... 3 1.4. Volumétrie... 3 1.5. Spécifications fonctionnelles... 4 1.6. Critères de réalisation... 5 1.7. Plan de travail et planning...erreur! Signet non défini. 2. SOLUTION PROPOSEE... 5 2.1. Règles à appliquer... 5 2.1.1. Règles de fonctionnement... 5 2.1.2. Règles de gestion... 5 2.2. Modèle Conceptuel de Traitement... 7 2.3. Cas d'utilisation... 9 2.4. Ergonomie de l interface... 11 2.5. Diagramme de navigation... 12 2.6. Modèle Conceptuel de Données... 13 3. REALISATION...15 3.1. Implémentation de la base de donnée... 15 3.1.1. Modèle logique de données... 15 3.2. Réalisation de l interface utilisateur... 19 3.2.1. Architecture HTML... 19 3.2.2. Les scripts PHP... 19 3.2.3. PHP et Oracle... 20 4. CONCLUSION...22 5. REMERCIEMENTS...22 ANNEXE. Exemples écrans Application...23 BILEK Dahmane Page 2/27
1. PRESENTATION DU PROJET 1.1. Objectif L objectif du projet est la mise en place pour une SSII d un outil de gestion des ressources et des missions. 1.2. Cahier des charges Soit une société de services en informatique qui réalise des projets informatiques pour le compte de clients externes et qui désire informatiser son système de gestion de projets. Le projet débute lorsque la société a été retenue suite à un appel d offres. Le client nomme un ou plusieurs interlocuteurs et la société un responsable de projet. Celui ci détaille la liste des tâches nécessaire à la réalisation du projet. Un ou plusieurs consultants peuvent participer au projet en fonction de leur compétence et de leur disponibilité. Un consultant peut être salarié ou indépendant et peut avoir une ou plusieurs fonctions (la première fonction étant la fonction principale) mais pour une mission donnée le consultant ne joue qu'une seule fonction. Pour le suivi du projet deux comités sont mis en place : le comité de pilotage et le comité de projet. Le premier se réunit une fois par mois et le second une fois par semaine. Les coûts des projets et la charge de travail sont évalués sur un mode forfait. En cas d avenant un surcoût est alors facturé. Les directeurs de projet souhaitent disposer à chaque fin de mois d un comparatif entre d une part le CA prévisionnel et le CA réalisé et d autre part le coût prévisionnel et le coût réel. 1.3. Contraintes La société ferme après 20h. La sauvegarde de la base de données doit se faire entre 20h et Minuit. Le mécanisme de sauvegarde de la BDD doit être fiable et à faible coût Historique de 3 ans 1.4. Volumétrie 1000 projets par an 700 clients 500 consultants Durée moyenne d un projet : 6 mois Nombre de taches moyenne par projet : 10 La durée d exécution d une tâche ne peut être inférieure à un jour BILEK Dahmane Page 3/27
1.5. Spécifications fonctionnelles Ces spécificités sont le fruit d un dialogue avec la maîtrise d oeuvre afin de définir précisément les besoins et les attentes du projet. L étude du projet devra respecter ces attentes et en tenir compte lors de la phase d analyse. Un accès sécurisé doit être mis en place sous forme de login / Mot de passe afin d empêcher l accès à toutes les parties fonctionnelles du logiciel. La charte graphique de l interface web doit être simple mais professionnel. Un menu doit être présent lors de la navigation pour permettre d accéder aux fonctionnalités du logiciel à tout moment. Il devra permettre d accéder aux différentes fonctions du logiciel de façon simple et intuitive. Un enregistrement des connexions au logiciel doit être implémenté de façon à pouvoir faire l historique de son utilisation. Le site doit permettre l ajout, la modification et la suppression de toutes les informations successibles d évoluer au cours du temps. Pour chaque client de l entreprise, on doit pouvoir y associer une série de contact. dans le cas ou un client demande un complément au cahier des charges, on doit pouvoir ajouter un avenant à projet, et celui-ci doit se répercuter sur le coût total du projet. Pour chaque projet, un responsable de projet doit être nommé. Celui peut effectuer des taches sur ce même projet. Un projet est composé de une ou plusieurs taches. Au cours de la vie du projet, il doit être possible d en ajouter si cela s avère nécessaire. Un état financier pour chacun des projets est demandé. Il devra donner mensuellement une série d information permettant de voir la progression du projet d un aspect financier. En voici un exemple : Projet banque populaire Prévisionnel Janvier Février Total Réalisé RAF 1 Marge Réalisé RAF Marge Cout ( ) 100 K 10 90 = 50 40 Charge (J) 400 J 40 370 - CA 150 K Marge 33% 1 Reste à faire BILEK Dahmane Page 4/27
1.6. Critères de réalisation La réussite d un logiciel orienté technologie web dépend des fonctionnalités qu il propose mais surtout de son ergonomie. Cette technologie nécessitant des «aller-retour» client serveur entre chaque rafraîchissement des informations, il est important de définir une interface parfaitement fonctionnelle de façon à ne pas ennuyer l utilisateur. La facilité de naviguer entre les différentes pages prédomine sur le développement des pages elle-même. L objectif est d arriver rapidement et intuitivement à la fonction recherchée. Bien que les fonctionnalités proposées soit importante, la navigation reste souvent le cœur du problème sur un site web. Une attention particulière sera portée à ce genre de problème. Les données devant être persistante, nous sommes amenés à concevoir et implémenter un système de base de donnée. Ceci afin de nous permettre de traiter les informations de manière la plus efficace.. La volumétrie des informations étant assez conséquente, il sera judicieux de s orienter vers un système de base de donnée robuste et performant pour avoir des temps de réponse satisfaisant (inférieur à 2 secondes). 2. SOLUTION PROPOSEE 2.1. Règles à appliquer Ces règles de gestions ont été définies suivant les fonctionnalités décrites préalablement. 2.1.1. Règles de fonctionnement Lorsque l on désigne un consultant pour effectuer une tâche au sein d un projet, celui-ci ne devra pas être en mission. On ne peut pas supprimer un client qui fait ou a fait parti d un projet. On ne peut supprimer un consultant qui fait ou a fait parti d un projet. 2.1.2. Règles de gestion Ces règles de gestions ont été définies suivant les fonctionnalités décrites préalablement. Si le Chef de projet réalise la mission dans le temps imparti c'est à dire si date prévisionnel fin= date réel de fin alors son salaire est augmenté de 5% BILEK Dahmane Page 5/27
Si le CA prévisionnel d'un projet est > 1 Million d'euros alors le projet doit être confié à un CP senior (salaire >50 K ) Le résultat du calcul de l état financier ne doit être calculé qu une seule fois puis sauvegardé afin de décharger le serveur de calcul inutile. Les valeurs affichées dans l état financier doivent être issus de la somme des informations contenues dans le projet. Le coût réalisé doit être égale au coût des taches réalisées (somme des coûts des ressources pour la SSII). La charge en jour doit être égale à la somme des jours hommes réalisés par rapport aux taches accomplies. BILEK Dahmane Page 6/27
2.2. Modèle Conceptuel de Traitement Le projet est constitué de 6 processus distincts, de la préparation du projet (P1) au suivi final du projet (P6). Chaque processus est défini par une liste de tâches. Chaque tâche est automatisable ou non. Le schéma ci-dessous décrit l'enchaînement des 6 processus ainsi que les tâches correspondantes à chaque processus. Toute tâche automatisable est indiquée en italique Appel d offres gagné Ressources constituées Contrat signé envoyé P1: Préparation Projet - Organisation équipe - Budget et planning initial - Plan qualité TOUJOURS Liste contacts envoyée Ordre mission envoyé P2 : Initialisation Projet - Réunion lancement externe - Choix des dates de réunion client - Choix des membres des comités TOUJOURS Instance pilotage décidée Lettre refus envoyé P3: Sélection fournisseurs -choix des logiciels - choix des sous-traitants Non retenu! Retenu Envoi Contrat Réunion de Lancement P4 : Lancement Projet - Présentation du projet - Installation infrastructure TOUJOURS BILEK Dahmane Page 7/27
P5 : Développement Projet - Module client / contact - Module RH - Module Rapports - Module Projets - Module données paramétrables Fin de mois TOUJOURS P6 : Suivi Projet - Ecart Prévisionnel / réalisé - Révision Planning / Budget TOUJOURS BILEK Dahmane Page 8/27
2.3. Cas d'utilisation On distingue 3 acteurs directement ou indirectement impliqués dans un projet : Le Chef de Projet dont le rôle est de gérer le projet, de manager l'équipe et de rendre compte à son manager et au client de l'avancement des travaux Le manager ou directeur de projet, responsable hiérarchique du CP, dont le rôle est de valider certains choix faits par le CP (constitution équipe, gestion planning) et de suivre le projet en termes de délai et de coûts. Le client qui a un rôle secondaire puisqu'il n'agit pas directement sur le projet. Par contre il est régulièrement consulté notamment lors de la constitution de l'équipe et de l'établissement du planning. BILEK Dahmane Page 9/27
Management équipe Chef de Projet Constitution équipe Sélection fournisseurs Gestion des tâches Directeur de Projet Gestion Planning Présentation Projet Client Suivi Projet BILEK Dahmane Page 10/27
2.4. Ergonomie de l interface L interface web mis à disposition pour l utilisateur final lui permettra d effectuer un maximum d opération au sein de la base oracle. Comme l on peut le voir sur l image ci-dessus, l utilisateur peut directement accéder aux fonctions principales grâce à ce menu. Celui-ci pourra intervenir sur les tables Clients 2, mais également sur les ressources humaines 3 de la SSII de façon à ce qu il puisse s il le désire Ajouter / Modifier / Supprimer ou juste consulter ces informations. La partie projet permet de créer un projet suivant les critères définis par le cahier des charges. Les informations fournies pour créer un projet ne sont plus modifiables après création. Par contre, à tout moment de la vie du projet, il est possible de rajouter une tache au projet, de la même façon, il est également possible d y rajouter un avenant. Le fait de rajouter une tache à un projet implique également d associer une ressource à cette tache (voir modèle conceptuel des données). Le menu Rapports permet de consulter le suivit mensuel de chaque projet. Ce rapport met en évidence le suivit et l évolution du projet d un aspect financier. Il permet également d éditer : La liste des projets en cours La liste des clients avec leurs projets associé La liste des ressources actuellement missionnés. La liste des personnes associées à un projet. Le menu donnée externe permet d ajouter si besoin une nouvelle type de tache ou bien une nouvelle fonction professionnelle. 2 En se plaçant du coté SSII, cette notion de client désigne une société tiers, elle sera reprise tout au long de ce dossier. 3 Désigne les ingénieurs qui fourniront un service auprès des clients. BILEK Dahmane Page 11/27
2.5. Diagramme de navigation BILEK Dahmane Page 12/27
2.6. Modèle Conceptuel de Données Ce modèle de donnée est le résultat d une étude basé sur les informations du cahier des charges ainsi que sur les spécificités fonctionnelles définies en pré étude avec le maître d œuvre. Cette version est à quelque chose près le même modèle depuis de début du projet. BILEK Dahmane Page 13/27
2.7. Description de l architecture. Requêtes BDD ORACLE DONNEES CLIENT FireFox Internet Explorer Interface HTML PHP SERVEUR http://cnam.dyndns.org Du fait de notre budget limité, les informations suivantes sont à prendre uniquement à titre d information. Il est bien évidant que cette architecture matérielle ne sera pas acceptable en environnement de production. Choix Logiciel : Système d exploitation Linux Debian Sarge Serveur Web Apache 1.31 Le serveur a été recompilé pour permette d utiliser le langage PHP 4. PHP 4.03 PHP a été recompilé pour pourvoir utiliser les librairies Oracle 8i GD (Librairie permettant de générer des graphiques) XML Oracle 8i Gestion du nom de domaine cnam.dyndns.org offert par http://dyndns.org Gestion logiciel d «auto-shutdown» si défaut d alimentation. Choix du matériel : Processeur Intel P2 500 Mhz SDRAM 256 Mo 1 Disque dur de 80 Go 2 cartes réseaux 100 Mo ADSL 20 Mo dégroupé (FAI: Free.fr) Onduleur APC BILEK Dahmane Page 14/27
3. REALISATION 3.1. Implémentation de la base de donnée 3.1.1. Modèle logique de données Contact Nom, #numcli, fonction, téléphone, email Create table contact ( nom varchar2(25), numcli number(4), fonction varchar2(30), tel number(10) not null unique, email varchar2(30) not null unique, PRIMARY KEY(nom,numcli), FOREIGN KEY (numcli) references clients (numcli ) on delete cascade); La table contact est utilisée pour stocker les contacts pour chacun des clients. Un client pourra avoir plusieurs contacts, le champ «numcli» étant la clé étrangère qui permet de lier cette table à la table client. Client Numcli, nom, secteur, adresse, CP Create table client ( numcli number(4) PRIMARY KEY, nom varchar2(25) not null unique, secteur varchar2(30), adresse varchar2(30) not null unique, CP char(5) not null, Ville varchar2(20)); Cette table permet de stocker toutes les informations d un client avec qui, la SSII pourra ou a déjà eu un projet en commun. Projet numproj, datdeb_prev, datfin_prev, datdéb_réel, datfin_réel, durée, #numcli, #chefproj Create table projet ( numproj number(4) PRIMARY KEY, nom_proj varchar2(30), datdeb_prev date not null, datfin_prev date not null, datdeb_reel date not null, datfin_reel date not null, cout number(3) not null, CA number(3) not null, numcli number(4), chefproj number(4), FOREIGN KEY (numcli) references clients (numcli ) on delete cascade, FOREIGN KEY (chefproj) references ressource (numres )); BILEK Dahmane Page 15/27
La table Projet permet de sauvegarder tous les projets de la société. Pour chaque projet, un chef de projet est désigné (référencé par le champ chefproj qui correspond à un tupple de la table ressource). Le projet est réalisé pour un client (référencé par le champ numcli). Avenant numavt, #numproj, cout, Create table avenant ( numavt number(3), numproj number(3), cout integer not null, PRIMARY KEY (numproj, numavt), FOREIGN KEY (numproj) references projet (numproj ) on delete cascade); Histo_financier Mois, Année, #numproj, cout_prev, cout_réel, CA_prev, CA_réel Create table CA_cout ( mois integer check ( mois between 1 and 12 ) annee integer check ( annee>2000) cout_prev number(4) not null, CA_prev integer notnull, cout_reel integer not null, CA_reel integer notnull, numproj number(4), PRIMARY KEY (numproj, annee, mois), FOREIGN KEY (numproj) references projet (numproj ) on delete cascade); Tache numtache, #numproj, date_déb, date_fin, durée, prix, #type Create table tache ( numtache number(5), numproj number(4), datdeb date not null, datfin date notnull, prix integer not null, duree integer notnull, type number(3), PRIMARY KEY (numproj, numtache), FOREIGN KEY (numproj) references projet (numproj ) on delete cascade, FOREIGN KEY (type) references type_tache (type)) ; A chaque projet, une ou plusieurs taches sont réalisées (le champ «numproj» permet de faire la liaison avec le projet concerné). Et chaque tache sera de type «type» (correspondant à un tuple de la table «Type_Tache» BILEK Dahmane Page 16/27
Mission NumRess, #numtache Create table mission ( numres number(4), numtache number(5), PRIMARY KEY (numres, numtache ), FOREIGN KEY (numtache) references projet (numtache ) on delete cascade, FOREIGN KEY (numres) references ressource (numres) on delete cascade); Pour chaque tache, on peut désigner une ou plusieurs personnes pour réaliser cette mission. Le champ «numres» correspond à un tupple de la table ressource (table qui décrit les employés de la société), et le champ «numtache» permet de faire la liaison avec la tache concernée. Type_tache numtache, libelle Create table type_tache ( type number(3) PRIMARY KEY, libelle varchar2(50) not null unique); Cette table permet de donner la description des différentes taches pouvant être entreprise au sein d un projet. Ressources numcons, nom, adresse, CP, tarif, #fonction Create table ressource ( numres number(4) PRIMARY KEY, nom varchar2(25) not null, adresse varchar2(30) not null, CP char(5) not null, Ville varchar2(20), Tarif integer not null, Code_fonction number(3), FOREIGN KEY (Code_fonction) references fonction (code_fonction) on update cascade); Cette table permet de renseigner les informations communes à chacun des employés de la société. Le champ «code_fonction» permet de renseigner la compétence principale de l employé. Un employé est soit un salarié de la société, soit un indépendant qui intervient ponctuellement pour un projet particulier. BILEK Dahmane Page 17/27
Salarié idsal, date_entrée, salaire, service Create table salarie ( numsal number(4) PRIMARY KEY, date_entree date not null, cout integer not null, service varchar2(30) not null numres number(4), FOREIGN KEY (numres) references resource (numres)); Indépendant idind,date, tarif Create table independant ( numind number(4) PRIMARY KEY, duree_contrat number(4) not null, cout integer not null, numres number(4), FOREIGN KEY (numres) references resource (numres)); Fonction Code_fonction, libelle Create table fonction ( Code_fonction number(3) PRIMARY KEY, libelle varchar2(30) not null); Mois Mois, Année Create table mois ( mois integer check ( mois between 1 and 12 ) annee integer check ( annee>2000) PRIMARY KEY (numproj, numtache)) ; Cout_ressource #Mois, #Année, #numtache, #numres, cout Create table cout_ressource ( mois integer check ( mois between 1 and 12 ) annee integer check ( annee>2000) numtache number(5), numres number(4), cout integer not null, PRIMARY KEY (mois, annee, numproj, numtache,) FOREIGN KEY (numtache) references projet (numtache ), FOREIGN KEY (numres) references resource (numres)) ; Cette table permet d obtenir le coût de chaque employé pour un mois et une tache donnée. Sont but est d optimiser les temps de calculs lors de la consultation de l état financier. BILEK Dahmane Page 18/27
3.2. Réalisation de l interface utilisateur 3.2.1. Architecture HTML La structure du site repose sur une même architecture. Elle se compose d une seule page qui se découpe elle même en 3 parties distinctes. Le bandeau vertical supérieur. Celui-ci contient le titre du site ainsi que le menu général du site. Cette partie est composée uniquement de code HTML, ainsi qu un script java pour permettre de naviguer dans le menu. Ce script a été réalisé pour être compatible avec les deux grandes familles de client web, soit Internet Explorer et Mozilla-Firefox. La bar d information verticale gauche. Celle-ci permet d afficher une série d information, mais elle est surtout utilisée pour gérer l authentification de l utilisateur lors de la connexion au logiciel. Un fois l utilisateur connecté, elle affiche ces 5 dernières connexions au logiciel. Cette zone du logiciel est générée par le compilateur php lors de l appelle de la page web par le navigateur. Elle nécessite une connexion à la base de donnée pour contrôler la cohérence du couple login / mot de passe ainsi que pour récupérer les 5 dernières connexions de l utilisateur qui sont stockées dans la base de donnée. La zone centrale. Celle-ci est utilisée pour afficher les pages correspondantes au choix de l utilisateur lorsqu il passe par le menu. Cette page contient par défaut une description du cahier des charges de notre projet. Cette zone est également généré par la compilation php et possède également les librairies permettant la connexion à la base de donnée. Ces 3 zones sont positionnées sur la page principale grâce à un jeu de tableau transparent. Le design du site a été réalisé grâce aux possibilités données par les CSS (Feuilles de style). 3.2.2. Les scripts PHP Les scripts PHP sont les éléments les plus importants dans notre application. Ils assurent le lien entre le site et la base de données. - Fonctionnement général La 1 er page appelée par le navigateur sera index.php, cette page prend en paramètre une variable de type GET (variable passé à la suite de l url). Cette variable nommée $nav permet de savoir quelle partie du menu a été cliqué. C est cette variable qui déterminera le fichier qui sera chargé dans la zone centrale de l application. Ces fichiers sont classés par thème. Soit : clients.php BILEK Dahmane Page 19/27
rhs.php projets.php rapports.php donneesexts.php Une seconde variable de type GET nommée $sous_nav permet de déterminer la partie du fichier php à exécuter. Pour exemple, si l on navigue sur le menu Clients->Consultation, nous aurons $nav = clients et sous-nav = consultation. La fonction gérant la consultation dans le fichier clients.php sera donc exécutée et la liste des clients apparaîtra dans la zone centrale du logiciel. - Fonctionnement des formulaires Pour toutes les opérations du logiciel, on utilise une série de formulaire lié à du java script pour effectuer quelques contrôles. Toutes les informations sont envoyées en mode POST (informations encodées et transmises dans l entête du protocole http contrairement au mode GET ou ces informations sont url encodées puis placées à la suite de l url, donc visible par tous). A chaque validation du formulaire, une série de contrôle de 1er niveau est effectué (date, format de champs etc..) puis les informations sont envoyées à la même page qui effectuera un second contrôle puis enregistrera les données. 3.2.3. PHP et Oracle L utilisation d une connexion à une base oracle à partir du langage PHP n est pas gérée nativement par ce langage. Il faut dans un premier temps recompiler les sources PHP pour y intégrer les librairies Oracle et faire en sorte de pouvoir disposer des fonctions nécessaires aux opérations de connexion, déconnexion et exécution de requête SQL. Une fois cette opération correctement réalisée, on s aperçoit vite que les fonctions mises à dispositions par les librairies fournies par Oracle sont beaucoup moins pratique que leurs proches cousines utilisées nativement pour une BDD de type MySQL. D autre part, il est obligatoire de positionner au minimum 2 variables d environnements pour définir : Le nom de la base de donnée (ORACLE_SID) Le chemin absolu vers le répertoire de l application Oracle (ORACLE_HOME) Pour faciliter l utilisation d Oracle, une classe a été développée pour ne plus à avoir à se soucier de la lourdeur des fonctions et pour ne plus à avoir à positionner ces variables d environnement. Cette classe comprend plusieurs méthodes : - Connect() BILEK Dahmane Page 20/27
Cette fonction permet de positionner les variables d environnements décrites précédemment, puis d ouvrir une connexion avec la base de donnée. Elle retourne la valeur ok ou nok suivant le résultat de la connexion. - Exe($query) Cette fonction est utilisée pour exécuter des requêtes SQL de type INSERT ou UPDATE qui ne retourne pas de résultat. La fonction retourne ok si la requête s est bien exécutée. Si un problème survient elle retourne nok. - Execute($query) Cette fonction est utilisée pour toutes les requêtes SQL de type SELECT. Elle stocke le résultat dans un tableau de hash $result. La fonction retourne ok si la requête s est bien exécutée. Si un problème survient elle retourne nok. - Nbresults() Cette fonction retourne le nombre d enregistrement du tableau $result. Autrement dit, elle retourne le nombre d occurrences trouvées par la dernière requête SELECT. - Recup($a, $champ) Cette fonction permet de récupérer les informations stockées dans la variable $result. Ces informations sont le résultat de la dernière requête SELECT. Le paramètre $a correspond au numéro du tupple que l on souhaite lire. Le paramètre $champ correspond au nom de la colonne retournée par la requête SELECT. - Fermer() Cette fonction est utilisée pour fermer la connexion avec la base Oracle. Typiquement on utilisera cette classe comme ceci : <? require "oracle.php" ; // ce script contient la description de la classe // Extraction des informations $sql = new oracle(); $sql->connect() ; $requete = "select TO_CHAR(DATE_VISITE, 'DD/MM/YYYY') AS DATE_VISITE, IP from VISITE where ID=3 order by NUMVISITE desc" ; $data = $sql->recup($i,"date_visite") ;?> $sql->fermer(); BILEK Dahmane Page 21/27
4. CONCLUSION Nous avons essayé de travailler dans de véritables conditions d entreprise en tachant de respecter notre planning. Cela nous a sensibilisé sur l importance de décrire précisément les taches et leurs durées prévisionnelles. D autre part, ce projet nous a permis de nous rendre compte à quel point il est indispensable d affiner la phase d analyse pour éviter d avoir à revenir sur le modèle conceptuel et autres règles de gestion. Ce projet nous a également permis de mettre en pratique une grande partie des cours enseignés cette année. Nous avons pu nous appuyer sur ces acquis pour mettre en œuvre toutes les phases de développement d une application, de l analyse à la mise en production. 5. REMERCIEMENTS Nous tenons remercier l ensemble des personnes qui nous ont donné des conseils techniques, conceptuels et organisationnels, à commencer par M. Abou-Chakra qui nous a poussé à structurer notre projet. BILEK Dahmane Page 22/27
Annexe : Exemples écrans Application BILEK Dahmane Page 23/27
Consultation de la liste des clients Saisie d un nouveau client BILEK Dahmane Page 24/27
Modification des informations d un client Suppression d un client BILEK Dahmane Page 25/27
Consultation de la liste des employés Saisie d un nouvel employé BILEK Dahmane Page 26/27
Modification des informations d un employé Suppression d un employé BILEK Dahmane Page 27/27