# 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 , reussi = 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 & & choix < 6 ) {
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 < tiut [ i ] - > nbDep ; 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 ) ;
reussi = 1 ;
}
}
}
if ( reussi = = 0 )
printf ( " pb erreur syntaxe \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 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 ) ;
tiut [ i ] - > nbDep = tiut [ i ] - > nbDep + 1 ;
reussi = 1 ;
}
}
if ( reussi = = 0 )
printf ( " pb erreur syntaxe \n " ) ;
}
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 ) ;
tiut [ i ] - > nbDep = tiut [ i ] - > nbDep - 1 ;
reussi = 1 ;
}
}
if ( reussi = = 0 )
printf ( " pb erreur syntaxe \n " ) ;
}
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%*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 ) ;
reussi = 1 ;
}
}
if ( reussi = = 0 )
printf ( " pb erreur syntaxe \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 ) ;
reussi = 1 ;
}
}
if ( reussi = = 0 )
printf ( " pb erreur syntaxe \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 , 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 - > AouD = ' A ' ;
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 ;
}
int fsauvegarde ( VilleIUT * tiut [ ] , Candidat * tcandidat [ ] , int n , int nc , int choix , int tmax ) {
int i , k , j ;
//Sauvegarde du fichier d'adhérents
FILE * fe ;
fe = fopen ( " ville.don " , " w " ) ;
if ( fe = = NULL ) {
printf ( " \t Pb overture fichier " ) ;
return - 1 ;
}
for ( i = 0 ; i < n ; i + + ) {
if ( i = = tmax ) {
printf ( " \t Pb espace " ) ;
fclose ( fe ) ;
return - 2 ;
}
if ( choix = = 4 ) {
fprintf ( fe , " %s %d \n " , tiut [ i ] - > ville , tiut [ i ] - > nbDep ) ;
while ( tiut [ i ] - > ldept ! = NULL ) {
fprintf ( fe , " %s " , tiut [ i ] - > ldept - > departement ) ;
fprintf ( fe , " %d " , tiut [ i ] - > ldept - > nbP ) ;
fprintf ( fe , " %s " , tiut [ i ] - > ldept - > resp ) ;
fprintf ( fe , " %c \n " , tiut [ i ] - > ldept - > AouD ) ;
tiut [ i ] - > ldept = tiut [ i ] - > ldept - > suivant ;
}
}
}
fclose ( fe ) ;
//Sauvegarde du fichier d'activités
FILE * fe2 ;
fe2 = fopen ( " Candidat.don " , " w " ) ; //Ici, le a permet d'écrire à la suite des informations précédentes dans le fichier sans les supprimer
if ( fe = = NULL ) {
printf ( " \t pb overture fichier " ) ;
return - 1 ;
}
for ( j = 0 ; j < nc ; j + + ) {
if ( j = = tmax ) {
printf ( " \t Pb espace " ) ;
fclose ( fe2 ) ;
return - 2 ;
}
if ( choix = = 4 ) {
fprintf ( fe , " \n %d %s %s %.2f %.2f %.2f %d \n " , tcandidat [ i ] - > numero , tcandidat [ i ] - > nom , tcandidat [ i ] - > prenom , tcandidat [ i ] - > note . Francais , tcandidat [ i ] - > note . Maths , tcandidat [ i ] - > note . Anglais , tcandidat [ i ] - > nb_choix ) ;
while ( tiut [ i ] - > ldept ! = NULL ) {
fprintf ( fe , " %s " , tcandidat [ i ] - > lchoix - > ville ) ;
fprintf ( fe , " %s " , tcandidat [ i ] - > lchoix - > departement ) ;
fprintf ( fe , " %d " , tcandidat [ i ] - > lchoix - > decision ) ;
fprintf ( fe , " %d \n " , tcandidat [ i ] - > lchoix - > validation ) ;
tcandidat [ i ] - > lchoix = tcandidat [ i ] - > lchoix - > suivant ;
}
}
fclose ( fe2 ) ;
}
return 0 ;
}