MODIF add enregistrement et ajout

master
Matheo THIERRY 2 years ago
parent 47f7467bdd
commit 501b87cf95

@ -31,42 +31,21 @@ VilleIUT lire(FILE * fe) {
// Partie 2
/*
( beaucoup de donnée a traité n(min 10 ; max ?)*nb candidat donc faire attention )
possibilité pour le candidat pouvoir <! table = (modifier - ajouter - supp) !>
- nb candidats (général en haut du doss)
- num candidat
- nom candidat
- prénom candidat
- liste des notes (moyenne dans le sens précis -- math francais anglais et matière spé)
|<= nb choix
|=>recurrence :
|- ville
|- département
|- décision ( admis - 1 /attente 0 default /refusé -2 )
|- validation candidat ( 0 default / -1 refus de ce choix / 2 accepte )
doit venir du menu car sinon pas de transport pour la part 3,
le tableau de pointeur qui contient listcandinfo et listcand,
combien de fonctionnalité en combien de fonction ...
V charger fichier
V ajouter choix
- modifier choix
- ajouter choix
- supp choix
V afficher les infos d'un cand
- tout cand d'un dep (ordre alphabétique)
- enregistrer fichier
V enregistrer fichier
- section affichage
*/
//chargement ===========================================================================================
//chargement ============================================================================================
Listchoixdept listvide(void){return NULL;}
@ -108,8 +87,149 @@ int chargeretudiant(char nomFich[], listetuinfo *tetu[], int tmax){
return nbetu;
}
//enregistrement ========================================================================================
void enregistrementcarte(FILE *fe, Maillonchoix* b){
if(b==NULL){return;}
fprintf(fe, "%s\n%s\n%d\n%d\n", b->Ville, b->dep, b->decision, b->validation);
enregistrementcarte(fe, b.suivant, nb-1);
free(b);
}
void enregistrementinfo(FILE *fe, listetuinfo etu){
Listchoixdept b;
int i=0;
b = etu.carte;
fprintf(fe, "%d\n%s\n%s\n%d %d %d %d\n%d\n", etu->numeroetu, etu->nometu, etu->prenometu, etu->notes, etu->nbchoix);
enregistrementcarte(fe, b, etu.nbchoix);
}
int enregistrementetudiant(char nomFich[], listetuinfo *tetu[], int nb){
int i=0;
FILE *fe;
fe = fopen( nomFich, "w");
if(fe==NULL){printf("<! pb fichier in enregistrementetudiant !>\n");return-1;}
fprintf(fe, "%d\n", nb);
for(i=0; i<nb; i++){
enregistrementinfo(fe, tetu[i]);
free(tetu[i]);
}
fclose(fe);
}
//ajouter ===============================================================================================
// sous-partie -> affichage tville avec uniquement les dep ===========
void affichagedep(MaillonDept* b){
if(b==NULL){return;}
printf("%s", b->departement);
affichagedep(b.suivant);
}
void affichageville(Maillon *tville[], int nbville){
int i;
Listdept b;
for(i=0; i<nbville; i++){
b = tville[i].ldept;
printf("%s :\n", tville[i]->Ville);
affichagedep(b);
printf("\n");
}
}
//========================== -fin de sous-partie
int cherchelistcorrespond(MaillonDept* b, char choixdep[]){
if(b==NULL){return -1}
if(strcmp(b->departement,choixdep)==0){return 1;}
return cherchelistcorrespond(b.suivant);
}
int correspond(Maillon *tville[], int nbville, char choixville[], char choixdep[]){
int i;
Listdept b;
for(i=0; i<nbville; i++){
if(strcmp(tville[i]->Ville,choixville)==0){
b = tville[i].ldept;
ok = cherchelistcorrespond(b, choixdep);
if(ok==1){return 1;}
}
}
return -1;
}
void affichechoix(Maillon *tville[], int nbville, char choixville[], char choixdep[]){
affichageville(tville);
printf("ville : ");
fgets(choixville, 31, stdin);
choixville[strlen(choixville)-1]='\0';
fgets(choixdep, 31, stdin);
choixdep[strlen(choixdep)-1]='\0';
ok = correspond(tville, nbville, choixville, choixdep);
while(ok=-1){
affichageville(tville);
printf("ville : ");
fgets(choixville, 31, stdin);
choixville[strlen(choixville)-1]='\0';
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
}
}
}
Listchoixdept ajoutercarte(Maillonchoix* a, char choixville, char choixdep){
Maillonchoix* carte;
carte = (Maillonchoix*)malloc(sizeof(Maillonchoix));
if(carte==NULL){printf("<! erreur malloc in ajoutercarte !>\n");exit(1);}
strcpy(carte->Ville,choixville);
strcpy(carte->departement,choixdep);
carte->decision=0;
carte->validation=0;
carte->suviant=a;
return carte;
}
int allajoutprocess(Maillon *tville[], listetuinfo etu, int nbville){
int i;
Listchoixdept b;
b = etu.carte;
char choixville[31], choixdep[31];
affichechoix(tville, nbville, choixville, choixdep);
ok = verifdoublon(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
//supprimer =============================================================================================
//affichage =============================================================================================
//=======================================================================================================
// zone de test ============================================================================================
//affiche uniquement les cartes (choix d'iut)
void affichage(Listchoixdept c){
if(c==NULL){printf("\n");return;}
@ -144,8 +264,6 @@ void affichealletu(listetuinfo *tetu[], int nb){
}
}
//==========================================================================================================
void test1(void){
listetuinfo *tetu[5000];
int nb;
@ -155,13 +273,37 @@ void test1(void){
affichealletu(tetu, nb);
}
//==========================================================================================================
// Partie 3
// Partie 4
// Général (menu et ce qui en ai relié)
/*
questionadmin(){

Loading…
Cancel
Save