#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 miseAJourPlaces(VilleIUT *tiut[], int tLog) { int places; char ville[31], dept[31], choix; ListeDept l; printf("Dans quelle ville se situe le département concerné ?\nSaisie : "); scanf("%s%*c", ville); printf("\n"); pos = rechercheIUT(tiut, tLog, ville, &trouve); while(trouve == 0) { printf("Cette ville n'existe pas, veuillez re-saisir : "); scanf("%s%*c", ville); printf("\n"); pos = rechercheIUT(tiut, tLog, ville, &trouve); } l = tiut[pos]->lDept; printf("Quel département souhaitez-vous mettre à jour ?\nSaisie : "); scanf("%s%*c", dept); printf("\n"); l = rechercherDept(l, dept, &trouve); while(trouve == 0) { printf("Ce département n'existe pas, veuillez-resaisir : "); scanf("%s%*c", dept); printf("\n"); l = rechercherDept(l, dept, &trouve); } printf("Vous avez sélectionné le département %s dans la ville de %s.\nSouhaitez-vous continuez ? (O/N)\nSaisie : ", dept, ville); scanf("%c%*c", &choix); printf("\n"); if(choix == 'N') { return; } printf("Il y a actuellement %d places.\nQuel est le nouveau nombre de places ?\nSaisie : ", l->d.nbP); scanf("%d%*c", &places); printf("\nVous avez saisie %d places, veuillez confirmez (O/N)\nSaisie : ", places); scanf("%c%*c", &choix); printf("\n"); if(choix == 'O') { l->d.nbP = places; printf("La mise à jour a bien été effectuée.\n"); } return; }*/ void miseAJourNomDept(Departement d,ListeDept l) { int trouve; char nomDept[31],choix='n'; system("clear"); afficherDep(d); while(choix!='o') { printf("\n\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) } } 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",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",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",&choix); if(choix==1) { miseAJourNomDept(d,tiut[pos]->lDept); } if(choix==2) { miseAJourPlaces(d); } if(choix==3) { miseAJourResp(d); } } clearpage(); afficherDep(d); }