manque plus que la fin de la fonction globale sinon tout le reste is ok

master
lolax 2 years ago
parent 5abba1a48c
commit 8d8db7b229

@ -30,7 +30,7 @@ int Exists(char *st1, char *st2)// servira à trouver si le nom de la ville exis
{ {
if (strcmp(st1,st2)==0) if (strcmp(st1,st2)==0)
{ {
return 1;//si le nom de la ville existe déjà return 1;//si le nom de la ville existe déjà
} }
} }
@ -45,7 +45,7 @@ ListDept InsertT(ListDept list, MaillonDept m)//Insert en tête de la liste
strcpy(mins->respAd, m.respAd); strcpy(mins->respAd, m.respAd);
mins->suiv = list; mins->suiv = list;
return mins; return mins;
} }
@ -62,7 +62,7 @@ ListDept Insert(ListDept list, MaillonDept m)//insert globalement
/*étapes pour le chargement: /*étapes pour le chargement:
1) pour chaque ville : malloc VilleIUT ->initialisation à NULL de la liste et fscanf la ville 1) pour chaque ville : malloc VilleIUT ->initialisation à NULL de la liste et fscanf la ville
2) récup le nb pour faire une boucle 2) récup le nb pour faire une boucle
3) boucle dans laquelle on crée nb maillons en inserant département dans la liste en triant 3) boucle dans laquelle on crée nb maillons en inserant département dans la liste en triant
et on recommence tant que fichier non vide*/ et on recommence tant que fichier non vide*/
@ -74,31 +74,32 @@ int Chargement(VilleIUT **tV, int tmax, char *nameFile)
f = fopen(nameFile, "r"); f = fopen(nameFile, "r");
if (f == NULL){printf("pb ouv file"); return -1;} if (f == NULL){printf("pb ouv file"); return -1;}
VilleIUT v; VilleIUT v;
fscanf(f, "%s %d", v.ville, &v.nbDept); fscanf(f, "%s %d", v.ville, &v.nbDept);
while (!feof(f)) while (!feof(f))
{ {
tV[i] = (VilleIUT *)malloc(sizeof(VilleIUT)); tV[i] = (VilleIUT *)malloc(sizeof(VilleIUT));
if (tV[i] == NULL){printf("pb malloc");exit;} if (tV[i] == NULL){printf("pb malloc");exit;}
strcpy(tV[i]->ville, v.ville); strcpy(tV[i]->ville, v.ville);
tV[i]->nbDept = v.nbDept; tV[i]->nbDept = v.nbDept;
cpt = v.nbDept;//le compteur initialisé au nombre de départements cpt = v.nbDept;//le compteur initialisé au nombre de départements
tV[i]->ldept = NULL; tV[i]->ldept = NULL;
for (cpt; cpt > 0; cpt--) for (cpt; cpt > 0; cpt--)
{ {
MaillonDept m; MaillonDept m;
m = lireM(f);//lire le maillon avec la fonction plus haut m = lireM(f);//lire le maillon avec la fonction plus haut
tV[i]->ldept = Insert(tV[i]->ldept, m);//insert le maillon à sa bonne place tV[i]->ldept = Insert(tV[i]->ldept, m);//insert le maillon à sa bonne place
} }
fscanf(f, "%s %d", v.ville, &v.nbDept); fscanf(f, "%s %d", v.ville, &v.nbDept);
i++; i++;
} }
fclose(f);
return i; return i;
} }
@ -135,7 +136,7 @@ demande et recherche dans quelle ville chercher le nombre de places d'un départ
chercher ville chercher ville
chercher dpt chercher dpt
changer nbP changer nbP
return tV le tableau de VilleIUT mis à jour return tV le tableau de VilleIUT mis à jour
*/ */
void MaJnbP(VilleIUT **tV, int nb) void MaJnbP(VilleIUT **tV, int nb)
{ {
@ -143,14 +144,14 @@ void MaJnbP(VilleIUT **tV, int nb)
int newnbP; int newnbP;
int v; int v;
ListDept elt; ListDept elt;
printf("De quels département et ville souhaitez vous modifier le nombre de place ?\n"); printf("De quels département et ville souhaitez vous modifier le nombre de place ?\n");
printf("Ville : \t"); printf("Ville : \t");
scanf("%s%*c", ville); scanf("%s%*c", ville);
v = searchVille(tV, ville, nb); v = searchVille(tV, ville, nb);
while(v == -1)//tant que le nom de la ville n'est pas bon while(v == -1)//tant que le nom de la ville n'est pas bon
{ {
printf("Ville non trouvée ...Rentrez une autre ville ou tapez 0 pour quitter\n"); printf("Ville non trouvée ...Rentrez une autre ville ou tapez 0 pour quitter\n");
scanf("%s", reponse); scanf("%s", reponse);
@ -160,14 +161,14 @@ void MaJnbP(VilleIUT **tV, int nb)
} }
v = searchVille(tV, ville, nb); v = searchVille(tV, ville, nb);
} }
printf("Département : \t"); printf("Département : \t");
fgets(dpt, 31, stdin); fgets(dpt, 31, stdin);
dpt[strlen(dpt)-1] = '\0'; dpt[strlen(dpt)-1] = '\0';
elt = recherche(tV[v]->ldept, dpt);//on recherche le maillon elt = recherche(tV[v]->ldept, dpt);//on recherche le maillon
while(elt == NULL)//tant que le nom du département n'est pas bon while(elt == NULL)//tant que le nom du département n'est pas bon
{ {
printf("Département non trouvé ...Rentrez un autre département ou tapez 0 pour quitter\n"); printf("Département non trouvé ...Rentrez un autre département ou tapez 0 pour quitter\n");
scanf("%s", reponse); scanf("%s", reponse);
@ -177,7 +178,7 @@ void MaJnbP(VilleIUT **tV, int nb)
} }
elt = recherche(tV[v]->ldept, dpt); elt = recherche(tV[v]->ldept, dpt);
} }
printf("Nouveau nombre de places disponibles : \t"); printf("Nouveau nombre de places disponibles : \t");
scanf("%d", &newnbP); scanf("%d", &newnbP);
elt->nbP = newnbP;//modification du nombre de places elt->nbP = newnbP;//modification du nombre de places
@ -186,11 +187,11 @@ void MaJnbP(VilleIUT **tV, int nb)
ListDept recherche (ListDept l, char *nom )//recherche du nom de département dans la liste ListDept recherche (ListDept l, char *nom )//recherche du nom de département dans la liste
{ {
if ( l == NULL ){ return l;} if ( l == NULL ){ return l;}
if ( strcmp ( l->departement, nom ) == 0) return l; if ( strcmp ( l->departement, nom ) == 0) return l;
return recherche (l->suiv, nom ); return recherche (l->suiv, nom );
} }
@ -211,17 +212,17 @@ void createIUT(VilleIUT **tV, int nb)//crée un IUT dans la ville souhaitée.
{ {
char reponse[31]; char reponse[31];
MaillonDept m; MaillonDept m;
int v;//la position de la ville dans le tableau int v;//la position de la ville dans le tableau
char ville[31];//la ville répondue char ville[31];//la ville répondue
printf("Dans quelle ville souhaitez vous ajouter un département?\n"); printf("Dans quelle ville souhaitez vous ajouter un département?\n");
scanf("%s%*c", ville); scanf("%s%*c", ville);
v = searchVille(tV, ville, nb); v = searchVille(tV, ville, nb);
while(v == -1)//tant que le nom de la ville n'est pas bon while(v == -1)//tant que le nom de la ville n'est pas bon
{ {
printf("Ville non trouvée ...Rentrez une autre ville ou tapez 0 pour quitter\n"); printf("Ville non trouvée ...Rentrez une autre ville ou tapez 0 pour quitter\n");
scanf("%s", reponse); scanf("%s", reponse);
@ -231,15 +232,15 @@ void createIUT(VilleIUT **tV, int nb)//crée un IUT dans la ville souhaitée.
} }
v = searchVille(tV, ville, nb); v = searchVille(tV, ville, nb);
} }
m = lireStdin();//on lit un maillon sur l'entrée standard m = lireStdin();//on lit un maillon sur l'entrée standard
tV[v]->ldept = Insert(tV[v]->ldept, m);//et on l'insert dans la liste du tableau tV[v]->ldept = Insert(tV[v]->ldept, m);//et on l'insert dans la liste du tableau
tV[v]->nbDept+=1;//on ajoute un au nombre de départements tV[v]->nbDept+=1;//on ajoute un au nombre de départements
} }
ListDept SuppT(ListDept ld)//supprime la tête d'une liste ListDept SuppT(ListDept ld)//supprime la tête d'une liste
{ {
MaillonDept *tmp; MaillonDept *tmp;
printf("Suppression du maillon\n"); printf("Suppression du maillon\n");
@ -262,18 +263,18 @@ void deleteIUT(VilleIUT **tV, int nb)//crée un IUT dans la ville souhaitée.
{ {
char reponse[31]; char reponse[31];
MaillonDept m; MaillonDept m;
int v;//la position de la ville dans le tableau int v;//la position de la ville dans le tableau
char ville[31];//la ville souhaitée char ville[31];//la ville souhaitée
char tosuppr[31];//la ville à supprimer char tosuppr[31];//la ville à supprimer
printf("Dans quelle ville souhaitez vous supprimer un département?\n"); printf("Dans quelle ville souhaitez vous supprimer un département?\n");
scanf("%s%*c", ville);//la ville scanf("%s%*c", ville);//la ville
v = searchVille(tV, ville, nb); v = searchVille(tV, ville, nb);
while(v == -1)//tant que le nom de la ville n'est pas bon while(v == -1)//tant que le nom de la ville n'est pas bon
{ {
printf("Ville non trouvée ...Rentrez une autre ville ou tapez 0 pour quitter\n"); printf("Ville non trouvée ...Rentrez une autre ville ou tapez 0 pour quitter\n");
scanf("%s%*c", reponse); scanf("%s%*c", reponse);
@ -283,11 +284,11 @@ void deleteIUT(VilleIUT **tV, int nb)//crée un IUT dans la ville souhaitée.
} }
v = searchVille(tV, reponse, nb); v = searchVille(tV, reponse, nb);
} }
printf("Quel département souhaitez-vous supprimer ?\n"); printf("Quel département souhaitez-vous supprimer ?\n");
fgets(tosuppr, 31, stdin);//on récupère dans le tosuppr, le nom de la ville à supprimer fgets(tosuppr, 31, stdin);//on récupère dans le tosuppr, le nom de la ville à supprimer
tosuppr[strlen(tosuppr)-1]='\0'; tosuppr[strlen(tosuppr)-1]='\0';
tV[v]->ldept = Supp(tV[v]->ldept, tosuppr);//et on la supprime de la liste du tableau tV[v]->ldept = Supp(tV[v]->ldept, tosuppr);//et on la supprime de la liste du tableau
tV[v]->nbDept-=1;//on enlève un au nombre de départements tV[v]->nbDept-=1;//on enlève un au nombre de départements
} }
@ -298,18 +299,18 @@ void deleteIUT(VilleIUT **tV, int nb)//crée un IUT dans la ville souhaitée.
void MaJnameC(VilleIUT **tV, int nb)//mise à jour du nom du chef de département void MaJnameC(VilleIUT **tV, int nb)//mise à jour du nom du chef de département
{ {
char ville[31], dpt[31], reponse[31];//la ville, le département et la réponse char ville[31], dpt[31], reponse[31];//la ville, le département et la réponse
char newName[31]; char newName[31];
int v; int v;
ListDept elt; ListDept elt;
printf("De quels département et ville souhaitez vous modifier le nom du chef ?\n"); printf("De quels département et ville souhaitez vous modifier le nom du chef ?\n");
printf("Ville : \t"); printf("Ville : \t");
scanf("%s%*c", ville); scanf("%s%*c", ville);
v = searchVille(tV, ville, nb);//recherche de la ville v = searchVille(tV, ville, nb);//recherche de la ville
while(v == -1)//tant que le nom de la ville n'est pas bon while(v == -1)//tant que le nom de la ville n'est pas bon
{ {
printf("Ville non trouvée ...Rentrez une autre ville ou tapez 0 pour quitter\n"); printf("Ville non trouvée ...Rentrez une autre ville ou tapez 0 pour quitter\n");
scanf("%s%*c", reponse); scanf("%s%*c", reponse);
@ -322,10 +323,10 @@ void MaJnameC(VilleIUT **tV, int nb)//mise à jour du nom du chef de départemen
printf("Département : \t");//demande le département printf("Département : \t");//demande le département
fgets(dpt, 31, stdin); fgets(dpt, 31, stdin);
dpt[strlen(dpt)-1] = '\0'; dpt[strlen(dpt)-1] = '\0';
elt = recherche(tV[v]->ldept, dpt);//on recherche le maillon elt = recherche(tV[v]->ldept, dpt);//on recherche le maillon
while(elt == NULL)//tant que le nom du département n'est pas bon while(elt == NULL)//tant que le nom du département n'est pas bon
{ {
printf("Département non trouvé ...Rentrez un autre département ou tapez 0 pour quitter\n"); printf("Département non trouvé ...Rentrez un autre département ou tapez 0 pour quitter\n");
scanf("%s", reponse); scanf("%s", reponse);
@ -335,7 +336,7 @@ void MaJnameC(VilleIUT **tV, int nb)//mise à jour du nom du chef de départemen
} }
elt = recherche(tV[v]->ldept, dpt); elt = recherche(tV[v]->ldept, dpt);
} }
printf("Nouveau nom du chef de département : \t"); printf("Nouveau nom du chef de département : \t");
fgets(newName, 31, stdin); fgets(newName, 31, stdin);
newName[strlen(newName)-1]='\0'; newName[strlen(newName)-1]='\0';
@ -343,18 +344,50 @@ void MaJnameC(VilleIUT **tV, int nb)//mise à jour du nom du chef de départemen
} }
void Save(VilleIUT **tV, int nb) void SaveEltList(FILE *fs, ListDept l)
{
fprintf(fs, "%s\t%d\t%s\n", l->departement, l->nbP, l->respAd);
}
void Save(VilleIUT **tV, int nb)//permettra de définir la fermeture de la phase de candidatures
{ {
FILE *fs;
fs = fopen("part1.don", "w");//on réouvre le fichier originel pour y remettre les données
if (fs == NULL){printf("pb ouv fichier save\n");return;}
int cpt = 0; int cpt = 0;
for(cpt; cpt < nb; cpt ++) for(cpt; cpt < nb; cpt ++)
{ {
printf("%s\t%d", tV[cpt]->ville, tV[cpt]->nbDept); fprintf(fs, "%s\t%d\n", tV[cpt]->ville, tV[cpt]->nbDept);
for (int i = 0; i < tV[cpt]->nbDept; i++)
{
SaveEltList(fs, tV[cpt]->ldept);
tV[cpt]->ldept = tV[cpt]->ldept->suiv;
}
} }
fclose(fs);
} }
int Admin(VilleIUT **tV, int nb)
{
int reponse;
printf("*****************************************************\n");
printf("*---------------------Accueil-----------------------*\n");
printf("*-----1-modifier nombre places d'un département-----*\n");
printf("*--------2-créer un département dans un IUT---------*\n");
printf("*------3-supprimer un département dans un IUT-------*\n");
printf("*-----4-modifier le nom du chef de département------*\n");
printf("*---------5-arrêter la phase de candidatures--------*\n");
printf("*****************************************************\n");
scanf("%d", &reponse);
printf("%d", reponse);
switch(reponse)
{
case 1: MaJnbP(tV, nb); return 0;
case 2: createIUT(tV, nb); return 0;
case 3: deleteIUT(tV, nb); return 0;
case 4: MaJnameC(tV, nb); return 0;
case 5: Save(tV, nb); return 1;
}
}

@ -27,13 +27,15 @@ int Chargement(VilleIUT **tV, int tmax, char *nameFile);//charge le fichier dans
void AfficheDpmt ( MaillonDept *dpt );//Affiche un département d'une liste void AfficheDpmt ( MaillonDept *dpt );//Affiche un département d'une liste
void afficheIUT (VilleIUT *iut);//Affiche un iut avec ses départements void afficheIUT (VilleIUT *iut);//Affiche un iut avec ses départements
void Affichetableau(VilleIUT ** TabIUT, int n );//Affiche le tableau des iuts avec leurs départements void Affichetableau(VilleIUT ** TabIUT, int n );//Affiche le tableau des iuts avec leurs départements
ListDept recherche (ListDept l, char *nom );//recherche du nom de département dans la liste ListDept recherche (ListDept l, char *nom );//recherche du nom de département dans la liste
void MaJnbP(VilleIUT **tV, int nb);//mise à jour du nombre de places void MaJnbP(VilleIUT **tV, int nb);//mise à jour du nombre de places
int searchVille(VilleIUT ** tV, char *ville, int nbV);//recherche du nom de la ville dans le tableau int searchVille(VilleIUT ** tV, char *ville, int nbV);//recherche du nom de la ville dans le tableau
void createIUT(VilleIUT **tV, int nb);//crée un IUT dans la ville souhaitée. void createIUT(VilleIUT **tV, int nb);//crée un IUT dans la ville souhaitée.
MaillonDept lireStdin(void); MaillonDept lireStdin(void);
ListDept SuppT(ListDept ld);//supprime la tête d'une liste ListDept SuppT(ListDept ld);//supprime la tête d'une liste
ListDept Supp(ListDept ldp, char *nomdpt);//supprime normal ListDept Supp(ListDept ldp, char *nomdpt);//supprime normal
void deleteIUT(VilleIUT **tV, int nb);//crée un IUT dans la ville souhaitée. void deleteIUT(VilleIUT **tV, int nb);//crée un IUT dans la ville souhaitée.
void MaJnameC(VilleIUT **tV, int nb);//mise à jour du nom du chef de département void MaJnameC(VilleIUT **tV, int nb);//mise à jour du nom du chef de département
void Save(VilleIUT **tV, int nb);//sauvegarde le fichier void Save(VilleIUT **tV, int nb);//sauvegarde le fichier
void SaveEltList(FILE *fs, ListDept l);//sauvegarde un élément de liste
int Admin(VilleIUT **tV, int nb);//partie admin de la première partie

@ -9,24 +9,14 @@
int main(void) int main(void)
{ {
VilleIUT *tV[200]; VilleIUT *tV[200];
int nb; int nb, reponse;
VilleIUT *v; VilleIUT *v;
ListDept l; ListDept l;
nb = Chargement(tV, 200, "part1.don");/* nb = Chargement(tV, 200, "part1.don");
v = searchVille(tV, "Clermont-Ferrand", nb); reponse = Admin(tV, nb);
printf("%s", v->ville); printf("%d\n", reponse);
l = recherche(v->ldept, "Informatique");
printf("%s", l->departement);*/
//MaJnbP(tV, nb);
//Affichetableau(tV, nb);
//createIUT(tV, nb);
//Affichetableau(tV, nb);
printf("\n\n\n"); printf("\n\n\n");
//deleteIUT(tV, nb);
Affichetableau(tV, nb); Affichetableau(tV, nb);
MaJnameC(tV, nb);
Affichetableau(tV, nb);
return 0; return 0;
} }

Loading…
Cancel
Save