diff --git a/sae1-02.c b/sae1-02.c index 92786e0..50c9549 100644 --- a/sae1-02.c +++ b/sae1-02.c @@ -38,8 +38,8 @@ combien de fonctionnalité en combien de fonction ... V charger fichier V ajouter choix - - modifier choix - - supp choix + V modifier choix + V supp choix V enregistrer fichier - section affichage @@ -117,8 +117,11 @@ int enregistrementetudiant(char nomFich[], listetuinfo *tetu[], int nb){ fclose(fe); } -//ajouter =============================================================================================== -// sous-partie -> affichage tville avec uniquement les dep =========== +//affichage ============================================================================================= + + + +//général fonction for ajouter modifier et supprimer =========== void affichagedep(MaillonDept* b){ if(b==NULL){return;} @@ -126,6 +129,12 @@ void affichagedep(MaillonDept* b){ affichagedep(b.suivant); } +void affichagecarte(Maillonchoix* carte){ + if(carte==NULL){return;} + printf("%s - %s\n", carte->Ville, carte->dep); + afficherchoix(carte.suivant); +} + void affichageville(Maillon *tville[], int nbville){ int i; Listdept b; @@ -137,16 +146,22 @@ void affichageville(Maillon *tville[], int nbville){ } } -//========================== -fin de sous-partie +void affichervillechoix(Maillon villechoix){ + int i; + Listdept b; + b = villechoix.ldept; + printf("%s :\n", villechoix->Ville); + affichagedep(b); + printf("\n"); +} -int cherchelistcorrespond(MaillonDept* b, char choixdep[]){ - if(b==NULL){return -1} - if(strcmp(b->departement,choixdep)==0){return 1;} - return cherchelistcorrespond(b.suivant); +int cherchelistcorrespond(MaillonDept* dep, char choixdep[]){ + if(dep==NULL){return -1} + if(strcmp(dep->departement,choixdep)==0){return 1;} + return cherchelistcorrespond(dep.suivant); } -int correspond(Maillon *tville[], int nbville, char choixville[], char choixdep[]){ - int i; +int correspondville(char choixville[], char choixdep[], Maillon *tville[], int nbville){ Listdept b; for(i=0; iVille,choixville)==0){ @@ -158,31 +173,35 @@ int correspond(Maillon *tville[], int nbville, char choixville[], char choixdep[ return -1; } -void affichechoix(Maillon *tville[], int nbville, char choixville[], char choixdep[]){ - affichageville(tville); - printf("ville : "); +int correspondcarte(char choixville[], char choixdep[], Maillonchoix* carte){ + if(carte==NULL){return 0;} + if(strcmp(choixville,carte->Ville)==0){ + if(strcmp(choixdep,carte->dep)==0){ + return 1; + } + } + correspondcarte(choixville, choixdep, carte.suivant); +} + +//ajouter =============================================================================================== + +void choix(Maillon *tville[], int nbville, char choixville[], char choixdep[]){ + int i, ok; + printf("ville : \n"); fgets(choixville, 31, stdin); choixville[strlen(choixville)-1]='\0'; + printf("departement : \n"); fgets(choixdep, 31, stdin); choixdep[strlen(choixdep)-1]='\0'; - ok = correspond(tville, nbville, choixville, choixdep); - while(ok=-1){ - affichageville(tville); - printf("ville : "); + ok = correspondville(choixville, choixdep, tville[i], nbville); + while(ok!=1){ + printf("ville : \n"); fgets(choixville, 31, stdin); choixville[strlen(choixville)-1]='\0'; + printf("departement : \n"); fgets(choixdep, 31, stdin); choixdep[strlen(choixdep)-1]='\0'; - ok = correspond(tville, nbville, choixville, choixdep); - } -} - -int verifdoublon(char choixville[], char choixdep[], Maillonchoix* b){ - if(b==NULL){return 0;} - if(strcmp(choixville,b->Ville)==0){ - if(strcmp(choixdep,b->departement)==0){ - return -1 - } + ok = correspondville(choixville, choixdep, tville[i], nbville); } } @@ -203,32 +222,116 @@ int allajoutprocess(Maillon *tville[], listetuinfo etu, int nbville){ Listchoixdept b; b = etu.carte; char choixville[31], choixdep[31]; - affichechoix(tville, nbville, choixville, choixdep); - ok = verifdoublon(choixville, choixdep, b); + afficheville(tville, nbville); + choix(tville, nbville, choixville, choixdep); + ok = correspondcarte(choixville, choixdep, b); if(ok==0){b = ajoutercarte(b, choixville, choixdep);} else{printf("\t< choix deja existant >\n");} } //modifier ============================================================================================== -// modification par ville ou par dep - - +void choix2(Listchoixdept lcarte, char choixville[], char choixdep[]){ + printf("ville : \n"); + fgets(choixville, 31, stdin); + choixville[strlen(choixville)-1]='\0'; + printf("departement : \n"); + fgets(choixdep, 31, stdin); + choixdep[strlen(choixdep)-1]='\0'; + ok = correspondcarte(choixville, choixdep, lcarte); + while(ok!=1){ + printf("ville : \n"); + fgets(choixville, 31, stdin); + choixville[strlen(choixville)-1]='\0'; + printf("departement : \n"); + fgets(choixdep, 31, stdin); + choixdep[strlen(choixdep)-1]='\0'; + ok = correspondcarte(choixville, choixdep, lcarte); + } +} +void choixdep(char choixville[], char choixdep[], Maillon *tville[], int nbville){ + int ok; + printf("\n< quel departement voulez vous choisir ? >\n==>"); + fgets(choixdep, 31, stdin); + choixdep[strlen(choixdep)-1]='\0'; + ok = correspondville(choixville, choixdep, tville[i], nbville); + while(ok!=1){ + printf("\n< quel departement voulez vous choisir ? >\n==>"); + fgets(choixdep, 31, stdin); + choixdep[strlen(choixdep)-1]='\0'; + ok = correspondville(choixville, choixdep, tville[i], nbville); + } +} -//supprimer ============================================================================================= +listetuinfo choixmodifcarte(char choixville[], char choixdep[], Maillon *tville[], int nbville){ + if(b==NULL){return -1;} + Listdept dep; + if(strcmp(b->Ville,choixville)==0){ + if(strcmp(b->dep,choixdep)==0){ + choixdep(choixville, choixdep, tville, nbville); + b->dep=choixville; + return b; + } + } + b->suivant = choixmodifcarte(b.suivant, choixville, choixdep); +} -//affichage ============================================================================================= +int correspondvilleonly(char choixville[], Maillon ville){ + Listdept b; + if(strcmp(ville->Ville,choixville)==0){ + affichervillechoix(ville); + return 1; + } +} -//======================================================================================================= +void modificationcarte(listetuinfo etu, Maillon *tville[], int nbville){ + int i, ok; + char choixville[31], choixdep[31]; + Listchoixdept lcarte; + lcarte=etu.carte; + affichagecarte(lcarte); + choix2(lcarte, choixville, choixdep); + for(i=0; i\n");} + } +} +//supprimer ============================================================================================= +Maillonchoix suppressioncartechoix(char choixville[], char choixdep[], Maillonchoix carte){ + Maillon tmp; + if(carte==NULL){return;} + if(strcmp(carte->Ville,choixville)==0){ + if(strcmp(choixdep,carte->dep)==0){ + tmp=carte->suivant; + free(carte); + return tmp; + } + } + suppressioncartechoix(choixville, choixdep, carte.suivant); +} +void suppcarte(listetuinfo etu,){ + int i, ok; + char choixville[31], choixdep[31]; + Listchoixdept lcarte; + lcarte=etu.carte; + affichagecarte(lcarte); + choix2(lcarte, choixville, choixdep); + lcarte = suppressioncartechoix(choixville, choixdep, lcarte); +} +//======================================================================================================= -// zone de test ============================================================================================ +// zone de test ========================================================================================= //affiche uniquement les cartes (choix d'iut) void affichage(Listchoixdept c){