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)
{
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);
mins->suiv = list;
return mins;
}
@ -62,7 +62,7 @@ ListDept Insert(ListDept list, MaillonDept m)//insert globalement
/*é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
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*/
@ -74,31 +74,32 @@ int Chargement(VilleIUT **tV, int tmax, char *nameFile)
f = fopen(nameFile, "r");
if (f == NULL){printf("pb ouv file"); return -1;}
VilleIUT v;
fscanf(f, "%s %d", v.ville, &v.nbDept);
while (!feof(f))
{
tV[i] = (VilleIUT *)malloc(sizeof(VilleIUT));
if (tV[i] == NULL){printf("pb malloc");exit;}
strcpy(tV[i]->ville, v.ville);
tV[i]->nbDept = v.nbDept;
cpt = v.nbDept;//le compteur initialisé au nombre de départements
tV[i]->ldept = NULL;
for (cpt; cpt > 0; cpt--)
{
{
MaillonDept m;
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);
i++;
}
fclose(f);
return i;
}
@ -135,7 +136,7 @@ demande et recherche dans quelle ville chercher le nombre de places d'un départ
chercher ville
chercher dpt
changer nbP
return tV le tableau de VilleIUT mis à jour
return tV le tableau de VilleIUT mis à jour
*/
void MaJnbP(VilleIUT **tV, int nb)
{
@ -143,14 +144,14 @@ void MaJnbP(VilleIUT **tV, int nb)
int newnbP;
int v;
ListDept elt;
printf("De quels département et ville souhaitez vous modifier le nombre de place ?\n");
printf("Ville : \t");
scanf("%s%*c", ville);
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");
scanf("%s", reponse);
@ -160,14 +161,14 @@ void MaJnbP(VilleIUT **tV, int nb)
}
v = searchVille(tV, ville, nb);
}
printf("Département : \t");
fgets(dpt, 31, stdin);
dpt[strlen(dpt)-1] = '\0';
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");
scanf("%s", reponse);
@ -177,7 +178,7 @@ void MaJnbP(VilleIUT **tV, int nb)
}
elt = recherche(tV[v]->ldept, dpt);
}
printf("Nouveau nombre de places disponibles : \t");
scanf("%d", &newnbP);
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 ( 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];
MaillonDept m;
int v;//la position de la ville dans le tableau
char ville[31];//la ville répondue
printf("Dans quelle ville souhaitez vous ajouter un département?\n");
scanf("%s%*c", ville);
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");
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);
}
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]->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;
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];
MaillonDept m;
int v;//la position de la ville dans le tableau
char ville[31];//la ville souhaitée
char tosuppr[31];//la ville à supprimer
printf("Dans quelle ville souhaitez vous supprimer un département?\n");
scanf("%s%*c", ville);//la ville
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");
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);
}
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
tosuppr[strlen(tosuppr)-1]='\0';
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
}
@ -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
{
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];
int v;
ListDept elt;
printf("De quels département et ville souhaitez vous modifier le nom du chef ?\n");
printf("Ville : \t");
scanf("%s%*c", 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");
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
fgets(dpt, 31, stdin);
dpt[strlen(dpt)-1] = '\0';
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");
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);
}
printf("Nouveau nom du chef de département : \t");
fgets(newName, 31, stdin);
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;
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 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
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
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.
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
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 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)
{
VilleIUT *tV[200];
int nb;
int nb, reponse;
VilleIUT *v;
ListDept l;
nb = Chargement(tV, 200, "part1.don");/*
v = searchVille(tV, "Clermont-Ferrand", nb);
printf("%s", v->ville);
l = recherche(v->ldept, "Informatique");
printf("%s", l->departement);*/
//MaJnbP(tV, nb);
//Affichetableau(tV, nb);
//createIUT(tV, nb);
//Affichetableau(tV, nb);
nb = Chargement(tV, 200, "part1.don");
reponse = Admin(tV, nb);
printf("%d\n", reponse);
printf("\n\n\n");
//deleteIUT(tV, nb);
Affichetableau(tV, nb);
MaJnameC(tV, nb);
Affichetableau(tV, nb);
return 0;
}

Loading…
Cancel
Save