Vous êtes sur la page 1sur 16

Binme EL KORRI EL MAHDI EL HAJJI NOUAMAN

Encadrant - Mme EL FIKIHI SANAE.

Sommaire

Remerciement

Descriptif du projet

Analyse du projet

Application

Conclusion

Remerciement
On tient prsenter nous vifs remerciement tout qui sont participes de prs ou de loin la ralisation de ce petit projet et surtout notre chre encadrant Mme SANAE EL FIKIHI qui nous a soutenus durant notre prparation de ce travail.

Et aussi on tient remercier notre professeur M. Abdellatif El Faker qui nous a donn lopportunit dvelopper nos connaissances en termes de programmation loin du cadre thorique.

Que le corps professoral et administratif de lENSIAS trouve ici nos vifs et sincres remerciements.

Introduction

La gestion de bon de mouvement de matriel est un travail dtude, permettant nous, tudiants de lENSIAS, dappliquer nos connaissances en structures de donnes et langage C, voire mme les amliorer. Une fois termin, lapplication doit permettre un ajout et une suppression des entits et des employs (Gestion des employs et entits), une insertion et une consultation des demandes de bon de mouvement de matriels, ainsi que leur validation, si le stock le permette. A fin de comprendre la dmarche suivis lors de la ralisation de ce projet, nous entamerons notre rapport par une description bref et courte de lensemble du projet, nous procdons ensuite par une analyse du projet, nous aboutirons par une ralisation faites par clichs.

Descriptif du projet
Lemploy, identifi par son nom, son prnom, son CIN, ainsi que son login et mot de passe, est lacteur principal dans lapplication de gestion de bon de mouvement de matriels, possdant en plus de , deux profils lui permettant de bien contrler les diffrents fonctionnalits. Ainsi, lemploy, en tant quutilisateur, a le droit de dposer une demande de matriels, consulter le statue de cette dernier, voir mme de laccepter sil sagit dun responsable, que lui a le droit de voir tous les demandes de BMM des employs rattachs sa propre entit. Par contre, lemploy, en tant quadministrateur, a pour rle de regarder tous les flux dinformations de toutes les entits, autrement dit, ladministrateur possde plusieurs rles partant de la gestion des entits, passant par la gestion des employs, arrivant la gestion des demandes des bons de matriels(Validation et la consultation de tous les demandes). Par consquent, lide de base la ralisation de cette application est comme suit : (fonction de cahier de charges)
A une date D, lister les demandes de BMM des employs dune entit et afficher le statut de chaque demande (valide, non valide, en attente) ainsi que la date de changement de statut; Ajouter un matriel (en prcisant son type et quantit) et une entit ; Lister les demandes de BMM dun employ ; Ajouter/supprimer une demande de BMM ; Valider une demande de BMM par le responsable de lentit tout en prcisant la quantit accorde pour chaque matriel demand ; Modifier le contenu dune demande de BMM ayant le statut en attente ;

Analyse du projet:
Structures utilises : typedef struct employee { char nom[21]; char prenom[21]; char login[15]; char pass[8]; char CIN[11]; char entite[50]; statueservice s; } }EMPLOYEE; typedef struct listdesemployee { EMPLOYEE element; struct listdesemployess* suivant; }LISTEMPLOYEE;
Liste chanes des employes

Les champs denregistrement reli un utilisateur

typedef struct service{ char nom_service[50]; LISTEMPLOYEE* Emp; struct service *suivant; }entite;

Liste chanes des entites. Contenant un pointeur sur la liste des

Cahier de charges en ligne de code:

Gestion des entits Ajouter une entit : Prototype :


entite* insert_service(entite* E) { ... p->Emp=NULL; if(E==NULL) { E=p; E->suivant=NULL; return E; } else { q=E; while(q->suivant!=NULL) { q=q->suivant; } q->suivant=p; p->suivant=NULL; return E;

Dclaration de deux poineur p et q de type entite plus lappel de la lecture delaffichage

(p=pointeur de type entite*) Ajout au dbut de la chane

Ajout la fin de la liste.

Supprimer une entit:


entite* entite_delete(entite* L, char *service) { entite *p=NULL,*q=NULL; p=list_entite; if(p==NULL){ printf("aucun element dans la liste"); return NULL; } if(p->suivant==NULL&&strcmp(p>nom_service,service)==0){ free(p); return NULL; } while(p!=NULL){ if(strcmp(p->nom_service,service)==0){ q->suivant=p->suivant; free(p); return L; } q=p; p=p->suivant; } printf("l'entite '%s' n\'existe pas",service); return L;} }

Cette fonction supprime un entit dans la liste chane list_entite dfinie comme variable globale dans le code.

Gestion des utilisateurs Ajout des employs :


entite* insert_employee(){ .. do{
int num=0; entite* E=list_entite; LISTEMPLOYEE *p,*n; n=(LISTEMPLOYEE *)malloc(sizeof(LISTEMPLOYEE));

printf("entrez l'entite o l'employe existe:\t"); gets(n->element.entite);} while(exist_service(E, n->element.entite)==0);

do{ printf("Votre login:\t"); gets(n->element.login); }while(login_exist(n-

>element.login)==1);

printf("Mot de passe:\n"); while((((n->element).pass[num])=getch())!= '\n' && ((n>element).pass[num])!= '\r' && num<8 ){ Lecture des donnes du champ putchar('*'); employee num++; } (n->element).pass[num]='\0'; } n->suivant=NULL; ..
Ajout au debut la fin.

Suppression des employs :


entite* employee_delete(entite* L, char *log) { LISTEMPLOYEE *p,*q; p=L->Emp; q=NULL; if(p==NULL){ printf("aucun element dans la liste"); return NULL; } if(p->suivant==NULL&&strcmp(p>element.login,log)==0){ free(p); return NULL; } while(p!=NULL){ if(strcmp(p->element.login,log)==0){ q->suivant=p->suivant; free(p); return L; } q=p; p=p->suivant; } printf("le '%s' n\'existe pas avec ceux existants",log); return L; }

Cette fonction permet la suppression des employsdun entit.

Gestion des BMM : Les structures utilises


typedef struct equipement{ char nom_materiel[35]; int quantite; }Equipement;

Les stock sont structur sous formes typedef struct Materiel{ dune liste chan. Equipement* element; struct Materiel* suivant; }materiel; typedef struct Demmande{ char login[15]; char nommateriel[35]; char entite[50]; int quan,d,m,y; char h; }demande; Les demande sont aussi structurs typedef struct Dmateriel{ sous formes dune liste chan. demande* element1; struct Dmateriel* suivant;}dmateriel;

Les prototypes des fonctions La fonction ralisant la gestion des BMM est de prototype suivante : - materiel* insert_equipement(materiel* l) ;: Lajout des matriels est
rserv seulement pour ladministrateur,

- materiel* supprimer_equipement(materiel* l); suppression des


materiels

void sauvegarder(materiel* l); la sauvegarde materiel* lecture(); le chargement dmateriel* demande_materiel(dmateriel* l); Ajouter une demande. void dsauvegarder(dmateriel* l); Sauvegarde dmateriel* dlecture(); chargement dmateriel* supprimer_demande(dmateriel* l); suppression dmateriel* lister_BMM(char* t); Affichage tout des demandes BMM dune
entite pour un reponsable.

- dmateriel* lister_BMMemploi(char* t); Affiche le BMM dun employ - dmateriel* changer_statut(dmateriel* l,materiel* M); fonction qui
permet de choisir un status

Ralisation du projet :
Cahier de chargs en clich console :

Dbut de lapplication montrant le champ didentification de chacun des utilisateurs. Ici on se connecte en tant quutilisateur.

Menu rserv pour ladministrateur.

Le choix de la fonctionnalit de gestion dans entits nous a donn un menu reserv pour celle-ci.

Menu pour la gestion des demandes de bons de mouvement de matriels Ce menu est rserv pour ladministrateur et le responsable en termes de conception.

La fonctionnalit de gestion de BMM o est affich un bon de matriel dj existant.

Affiche le stock des matriels enregistrer sur fichier et fais a la fonction dajout des demande de BMM

Enregistrement sur fichier

Fichier rserv pour la sauvegarde des BMM

Fichier rserv pour la gestion des employ.

Fichier rserv pour la sauvegarde des materiels.

Conclusion
Au titre du projet de programmation C, nous avons ralis une application permettant la gestion des bons de mouvement de matriels ou nous avons donns lemploy, que celui-ci possde deux profils, la possibilit de choisir plusieurs fonctionnalits afin de grer plusieurs flux dinformations. Toutefois, nous aurions pu dveloppez linterface de lapplication, prsente ici comme console, une interface graphique conviviale implmenter en GTK+. Les connaissances acquises au cours de la premire priode des deux semestres, ainsi quelques notions apprises de notre prparation, ont t les bagages qui nous en permis de surmonter certaines problmes rencontrs lors de la ralisation tout en trouvant des solutions adquates chaque problme. Enfin, ce projet aura t loccasion dutiliser nos connaissances acquises, dcouvrir la fois de nouvelles notions que nous nen possdons aucune notions.