#include "Msae.h" //################ fonction commune ################################### void clearpage(void) { char entre; printf("\nappuyé sur la touche [ENTREE] pour continuer"); scanf("%*c%c", &entre); system("clear"); } int login(void) { int i=3; char id,mdp[31]="mettez20svp",mdpatrouve[31]; system("clear"); printf("################################################################\n\tBienvenue!\n\n\n\tSouhaitez-vous vous connecter en tant qu'utilisateur ou administeur? (U/A)\t"); scanf("%c%*c",&id); if(id=='q') return -1; while(id!='A' && id!='a' && id!='U' && id!='u') { system("clear"); printf("################################################################\n\tMauvaise saisie (q pour quitter)\n\n\n\tSouhaitez-vous vous connecter en tant qu'utilisateur ou administeur? (U/A)\t"); scanf("%c%*c",&id); if(id=='q') return -1; } if(id=='A' || id=='a') { while(i!=0) { printf("\n\n\n\tMot de passe :\t"); system("stty -echo"); fgets(mdpatrouve,31,stdin); mdpatrouve[strlen(mdpatrouve)-1] = '\0'; if( strcmp(mdpatrouve,mdp) == 0 ) { system("stty echo"); return 1; } else { i--; printf("Mot de passe incorrect, il vous reste %d chances\n",i); } system("stty echo"); } return -1; } else return 0; system("clear"); } //################# fonctions affichage ########################### void afficherPlace(Departement d) { printf("\nPour ce département il y a %d places en 1ère année \n\n",d.nbP); } void afficherVilleDep(VilleIUT v) { ListeDept l; printf("_________________________________________________________________________________________________________________\n"); printf("| Ville | Département |\n"); printf("|----------------------------------|----------------------------------------------------------------------------|\n"); l = v.lDept; while(l != NULL) { printf("| %-32s | %-32s | %3d | %-32s |\n", v.nom, l->d.dept, l->d.nbP, l->d.respAd); printf("|----------------------------------|----------------------------------------------------------------------------|\n"); l = l->suiv; } } void afficherDep(Departement d) { printf("_____________________________________________________________________________\n"); printf("| Département |\n"); printf("|----------------------------------------------------------------------------|\n"); printf("| %-32s | %3d | %-32s |\n", d.dept, d.nbP, d.respAd); printf("|----------------------------------------------------------------------------|\n"); } //################ fonction liste ###################################### bool vide(ListeDept lDept) { if(lDept == NULL) return true; return false; } //################# fonctions recherche ######################### int rechercheIUT(VilleIUT *tiut[], int tLog, char ville[], int *trouve) { int inf,sup,t; inf=0; sup=tLog-1; while(inf<=sup) { t=(inf+sup)/2; if(strcmp(ville,tiut[t]->nom)==0) { *trouve=1; return t; } if(strcmp(ville,tiut[t]->nom)<0) sup=t-1; else inf=t+1; } *trouve=0; return inf; } ListeDept rechercherDept(ListeDept lDept, char dept[], int *trouve) { if(vide(lDept)) { *trouve = 0; return lDept; } if(strcmp(dept, lDept->d.dept) < 0) { trouve = 0; return lDept; } if(strcmp(dept,lDept->d.dept) == 0) { *trouve = 1; return lDept; } return rechercherDept(lDept->suiv, dept, trouve); } //#################### fonction mise à jour ############################ void miseAJourNomDept(Departement d,ListeDept l) { int trouve; char nomDept[31],choix='n'; system("clear"); afficherDep(d); while(choix!='o' || choix!='O') { printf("\nQuel est le nouveau nom du département?\n"); fgets(nomDept,31,stdin); nomDept[strlen(nomDept)-1]='\0'; rechercherDept(l,nomDept,&trouve); if(trouve==1) { printf("Nom de département déjà.\n"); return; } printf("Êtes-vous sûr de remplacer le nom du département par %s?(o/n)\t",nomDept); scanf("%c%*c",&choix); } strcpy(d.dept,nomDept); afficherDep(d); clearpage(); } void miseAJourResp(Departement d) { char resp[31],choix='n'; system("clear"); afficherDep(d); while(choix!='o' || choix!='O') { printf("\nQuel est le nouveau nom du responsable ?\t"); fgets(resp,31,stdin); resp[strlen(resp)-1]='\0'; printf("Êtes-vous sûr de remplacer le nom du responsable par %s?(o/n)\t",resp); scanf("%c%*c",&choix); } strcpy(d.respAd,resp); afficherDep(d); clearpage(); } void miseAJourPlaces(Departement d) { int places; char choix='n'; system("clear"); afficherDep(d); while(choix!='o' || choix!='O') { printf("Quel est le nouveau nombre de place ?\t"); scanf("%d%*c",&places); printf("Êtes-vous sûr de passer les places en première année de %d à %d ?(o/n)\t",d.nbP,places); scanf("%c",&choix); } d.nbP=places; afficherDep(d); clearpage(); } void miseAJourGlobale(VilleIUT *tiut[], int tLog) { int trouve,pos,choix=0; char ville[31],dept[31]; MaillonDept *m; Departement d; printf("Dans quelle ville voulez-vous faire des mises à jour?\t"); scanf("%s%*c",ville); pos=rechercheIUT(tiut,tLog,ville,&trouve); if(trouve!=1) { printf("\n\nCette ville n'existe pas\n"); clearpage(); return; } afficherVilleDep(*tiut[pos]); printf("Quel département de %s voulez-vous modifier?\t",ville); scanf("%s%*c",dept); m=rechercherDept(tiut[pos]->lDept,dept,&trouve); d=m->d; if(trouve!=1) { printf("\n\nCe département n'existe pas dans cette ville\n"); clearpage(); return; } afficherDep(d); printf("\n\n"); while(choix!=9) { printf("################### Menu des mises à jour ###################\n"); printf("\n\t1.Mise à jour du nom du département\n\t2.Mise à jour des places du département\n\t3.Mise à jour du responsable du département\n\t9.Quitter\n\n"); printf("\tSaisie:\t"); scanf("%d%*c",&choix); if(choix==1) { miseAJourNomDept(d,tiut[pos]->lDept); } if(choix==2) { miseAJourPlaces(d); } if(choix==3) { miseAJourResp(d); } } clearpage(); afficherDep(d); }