# include <stdio.h>
# include <stdlib.h>
# include <string.h>
# include "iut.h"
void MenuAdministrateur ( VilleIUT * tiut [ ] , int n ) {
char departement [ 30 ] , respon [ 30 ] , Vmodif [ 31 ] , tVille [ 31 ] , tdepartemnt [ 30 ] , AouD ;
int choix , nbp , i , j , comp , Mnbp , good = 0 ;
VilleIUT V ;
printf ( " \n 0-Revenir au menu \n 1-Modifier place \n 2-Creer un departement \n 3-supprimer un département \n 4-Lancer et Arreter la phase de canditature \n 5-modifier nom responsable : " ) ;
scanf ( " \n %d " , & choix ) ;
while ( choix > 0 ) {
if ( choix = = 1 ) {
printf ( " \n Ville où se situe le departement à modifier : " ) ;
scanf ( " %s " , Vmodif ) ;
printf ( " \n departement à modifier: " ) ;
scanf ( " %s " , departement ) ;
for ( i = 0 ; i < n ; i + + ) {
comp = strcmp ( tiut [ i ] - > ville , Vmodif ) ;
if ( comp = = 0 ) {
for ( j = 0 ; j < 3 ; j + + ) {
if ( strcmp ( tiut [ i ] - > ldept - > departement , departement ) = = 0 & & tiut [ i ] - > ldept - > AouD = = ' D ' ) {
printf ( " %c " , tiut [ i ] - > ldept - > AouD ) ;
printf ( " pb departement arret phase de candidature \n " ) ;
good = 1 ;
}
}
if ( good = = 0 ) {
printf ( " \n nombre de place apres modification : " ) ;
scanf ( " %d " , & Mnbp ) ;
tiut [ i ] - > ldept = ModifinbP ( tiut [ i ] - > ldept , departement , Mnbp , n ) ;
}
}
}
}
if ( choix = = 2 ) {
//creer departemement
printf ( " \n Ville où se situe le departement : " ) ;
scanf ( " %s " , Vmodif ) ;
printf ( " \n departement a creer : " ) ;
scanf ( " %s " , departement ) ;
printf ( " \n nombre de place : " ) ;
scanf ( " %d " , & nbp ) ;
printf ( " \n nom du nouveau responsable : " ) ;
scanf ( " %s " , respon ) ;
for ( i = 0 ; i < n ; i + + ) {
comp = strcmp ( tiut [ i ] - > ville , Vmodif ) ;
if ( comp = = 0 ) {
tiut [ i ] - > ldept = Enfiler ( tiut [ i ] - > ldept , departement , nbp , respon ) ;
}
}
}
if ( choix = = 3 ) {
//supprimer departement et pauser condition pour choisir qui suppr
printf ( " \n Ville où se situe le departement : " ) ;
scanf ( " %s " , Vmodif ) ;
printf ( " \n departement : " ) ;
scanf ( " %s " , departement ) ;
for ( i = 0 ; i < n ; i + + ) {
comp = strcmp ( tiut [ i ] - > ville , Vmodif ) ;
if ( comp = = 0 ) {
tiut [ i ] - > ldept = suppression ( tiut [ i ] - > ldept , departement ) ;
}
}
}
if ( choix = = 4 ) {
//Lancer et arreter phase de canditature
printf ( " \n Ville où se situe le departement : " ) ;
scanf ( " %s " , Vmodif ) ;
printf ( " \n departement : " ) ;
scanf ( " %s " , departement ) ;
printf ( " \n Pour Activer taper A pour desactiver taper D : " ) ;
scanf ( " %c " , & AouD ) ;
for ( i = 0 ; i < n ; i + + ) {
comp = strcmp ( tiut [ i ] - > ville , Vmodif ) ;
if ( comp = = 0 ) {
tiut [ i ] - > ldept = ModifiAouD ( tiut [ i ] - > ldept , departement , AouD , n ) ;
}
}
}
if ( choix = = 5 ) {
//modification responsable
printf ( " \n Ville où se situe le departement à modifier : " ) ;
scanf ( " %s " , Vmodif ) ;
printf ( " \n departement à modifier: " ) ;
scanf ( " %s " , departement ) ;
printf ( " \n nom du responsable : " ) ;
scanf ( " %s " , respon ) ;
for ( i = 0 ; i < n ; i + + ) {
comp = strcmp ( tiut [ i ] - > ville , Vmodif ) ;
if ( comp = = 0 ) {
tiut [ i ] - > ldept = ModifiRespon ( tiut [ i ] - > ldept , departement , respon , n ) ;
}
}
}
affichage ( tiut , n ) ;
printf ( " \n Voulez-vous choisir une autre fonction ? Sinon taper 0 pour valider : " ) ;
scanf ( " %d%*c " , & choix ) ;
}
}
ListeD suppressionTete ( ListeD ld ) {
ListeD ldsvt ;
ldsvt = ld - > suivant ;
free ( ld ) ;
return ldsvt ;
}
ListeD suppression ( ListeD ld , char * departement ) {
if ( ld = = NULL )
return ld ;
if ( strcmp ( ld - > departement , departement ) = = 0 )
return suppressionTete ( ld ) ;
ld - > suivant = suppression ( ld - > suivant , departement ) ;
return ld ;
}
ListeD ModifinbP ( ListeD ld , char departement [ 30 ] , int MnbP , int n ) {
int comp , trouv , i ;
for ( i = 0 ; i < = n ; i + + ) {
comp = strcmp ( ld - > departement , departement ) ;
if ( comp = = 0 )
trouv = i ;
}
if ( trouv = = 0 ) {
printf ( " departement non existant " ) ;
exit ( 1 ) ;
}
else {
ld - > nbP = MnbP ;
}
return ld ;
}
ListeD ModifiRespon ( ListeD ld , char departement [ 30 ] , char respon [ 30 ] , int n ) {
int comp , trouv , i ;
for ( i = 0 ; i < = n ; i + + ) {
comp = strcmp ( ld - > departement , departement ) ;
if ( comp = = 0 )
trouv = i ;
}
if ( trouv = = 0 ) {
printf ( " departement non existant " ) ;
exit ( 1 ) ;
}
else {
strcpy ( ld - > resp , respon ) ;
}
return ld ;
}
ListeD ModifiAouD ( ListeD ld , char departement [ 30 ] , char AouD , int n ) {
int comp , trouv , i ;
for ( i = 0 ; i < = n ; i + + ) {
comp = strcmp ( ld - > departement , departement ) ;
if ( comp = = 0 )
trouv = i ;
}
if ( trouv = = 0 ) {
printf ( " departement non existant " ) ;
exit ( 1 ) ;
}
else {
ld - > AouD = AouD ;
}
return ld ;
}
ListeD Enfiler ( ListeD ld , char departement [ 30 ] , int nbP , char resp [ 30 ] ) {
MaillonDept * mN ;
mN = ( MaillonDept * ) malloc ( sizeof ( MaillonDept ) ) ;
if ( mN = = NULL ) { printf ( " pb ouv malloc " ) ; exit ( 1 ) ; }
strcpy ( mN - > departement , departement ) ;
mN - > nbP = nbP ;
strcpy ( mN - > resp , resp ) ;
mN - > suivant = NULL ;
printf ( " \n aa " ) ;
if ( ld = = NULL ) {
ld = mN ;
} else {
MaillonDept * mD ;
mD = ld ;
while ( mD - > suivant ! = NULL ) {
mD = mD - > suivant ;
}
mD - > suivant = mN ;
}
return ld ;
}
/*
VilleIUT defiler ( VilleIUT V ) {
MaillonDept * temp ;
if ( testVide ( V ) ) {
printf ( " testVide " ) ;
return V ;
}
temp = V . Ville ;
V . Ville = temp - > suivant ;
free ( temp ) ;
if ( V . Ville = = NULL )
V . Idept = NULL ;
return V ;
}
*/