From eaa159437c2a0e956048e5ab60b58936b490806b Mon Sep 17 00:00:00 2001 From: Alix JEUDI--LEMOINE Date: Tue, 27 Dec 2022 17:47:02 +0100 Subject: [PATCH] Ajout de fonctions candidats/candidatures --- src/II/deux.c | 206 ++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 198 insertions(+), 8 deletions(-) diff --git a/src/II/deux.c b/src/II/deux.c index af6e43c..bdb0431 100644 --- a/src/II/deux.c +++ b/src/II/deux.c @@ -14,16 +14,105 @@ Candidat* creerCandidat(void) { - return (Candidat*) malloc(sizeof(Candidat)); + Candidat* candidat = (Candidat*) malloc(sizeof(Candidat)); + //candidat->listeCandidatures = (ListeCandidatures) malloc(0); + + return candidat; +} + +Candidature* creerCandidature(void) { + Candidature* candid = (Candidature*) malloc(sizeof(Candidature)); + candid->decision = 0; + candid->validation = 0; + return candid; +} + +ListeCandidats ajouterCandidat(ListeCandidats liste, int* nbCandidats, Candidat* candidat) { + ListeCandidats nouvelleListe = (ListeCandidats) realloc(liste, (*nbCandidats+1)*sizeof(Candidat*)); + + nouvelleListe[*nbCandidats] = candidat; + *nbCandidats+=1; + candidat->id = *nbCandidats; + + return nouvelleListe; +} + +void ajouterCandidature(Candidat* candidat, Candidature* candidature) { + candidat->listeCandidatures = (ListeCandidatures) realloc(candidat->listeCandidatures, (candidat->nbCandidatures+1)*sizeof(Candidature*)); + candidat->listeCandidatures[candidat->nbCandidatures] = candidature; + candidat->nbCandidatures+=1; +} + + +void afficherListeCandidats(ListeCandidats liste, int nbCandidats) { + ListeCandidats liste2 = (ListeCandidats) malloc(nbCandidats*sizeof(Candidat*)); + + for (int i=0; iprenom, candidat->nom, + "\n - Moyenne en anglais : %f\n - Moyenne en spécialité : %f" + "\n - Nombre de candidatures : %d\n\n", + candidat->id, candidat->prenom, candidat->nom, candidat->moyenneMath, candidat->moyenneFrancais, - candidat->moyenneAnglais, candidat->moyenneSpecialite); + candidat->moyenneAnglais, candidat->moyenneSpecialite, + candidat->nbCandidatures); +} + +void afficherCandidatures(Candidat* candidat) { + int nbCandidatures = candidat->nbCandidatures; + + for(int i=0; ilisteCandidatures[i]; + + switch (candidature->decision) { + case 0: + strcpy(decision, "en cours de traitement"); + break; + case 1: + strcpy(decision, "admis"); + break; + case -1: + strcpy(decision, "refusé"); + break; + case 2: + strcpy(decision, "sur liste d'attente"); + break; + default: + break; + } + + switch (candidature->validation) { + case 0: + strcpy(validation, "n'a pas encore décidé"); + break; + case 1: + strcpy(validation, "refuse la proposition"); + break; + case -1: + strcpy(validation, "accepte"); + break; + default: + break; + } + + printf("Candidature pour le département '%s' à l'IUT '%s' : \n" + " - Décision du département : %s,\n - Décision du candidat : %s\n\n", + candidature->departement, candidature->ville, decision, validation); + } } ListeCandidats lireCandidats(int* nbCandidats) { @@ -40,8 +129,8 @@ ListeCandidats lireCandidats(int* nbCandidats) { for(int i=0; i<*nbCandidats; i++) { Candidat* candidat = creerCandidat(); - fscanf(fe, "%*d\n%[^\n]\n%[^\n]\n%f\n%f\n%f\n%f\n%d", - candidat->nom, candidat->prenom, + fscanf(fe, "%d\n%[^\n]\n%[^\n]\n%f\n%f\n%f\n%f\n%d", + &candidat->id, candidat->nom, candidat->prenom, &candidat->moyenneMath, &candidat->moyenneFrancais, &candidat->moyenneAnglais, &candidat->moyenneSpecialite, &candidat->nbCandidatures); @@ -63,7 +152,50 @@ ListeCandidats lireCandidats(int* nbCandidats) { return liste; } -int sauvegarderCandidats(ListeCandidats liste) { +int compareCandidats(const void* p1, const void* p2) { + Candidat* c1 = *(ListeCandidats) p1; + Candidat* c2 = *(ListeCandidats) p2; + + char nomComplet1[60]; + strcpy(nomComplet1, c1->nom); + strcat(nomComplet1, c1->prenom); + + char nomComplet2[60]; + strcpy(nomComplet2, c2->nom); + strcat(nomComplet2, c2->prenom); + + return strcmp(nomComplet1, nomComplet2); +} + +int sauvegarderCandidats(ListeCandidats liste, int nbCandidats) { + FILE *fe = fopen("donnees/candidats.don", "w"); + + if(fe == NULL) { + fprintf(stderr, "Erreur: impossible de lire le fichier candidats.don"); + return -1; + } + + fprintf(fe, "%d", nbCandidats); + + for(int i=0; iid, candidat->nom, candidat->prenom, + candidat->moyenneMath, candidat->moyenneFrancais, + candidat->moyenneAnglais, candidat->moyenneSpecialite, + candidat->nbCandidatures); + + ListeCandidatures listeCandidatures = candidat->listeCandidatures; + + for(int j=0; jnbCandidatures; j++) { + Candidature* candidature = listeCandidatures[j]; + fprintf(fe, "\n%s\n%s\n%d\n%d", + candidature->ville, candidature->departement, + candidature->decision, candidature->validation); + } + } + return 0; } @@ -72,6 +204,64 @@ void test2(void) { //printf("pa kc"); ListeCandidats liste = lireCandidats(&nbCandidats); + /* afficherCandidat(liste[0]); afficherCandidat(liste[1]); + + //triCandidats(liste, nbCandidats); + + afficherListeCandidats(liste, nbCandidats); + + // afficherCandidatures(liste[0]); + + afficherCandidat(liste[0]); + afficherCandidat(liste[1]);*/ + + //sauvegarderCandidats(liste, nbCandidats); + + Candidat* candidat = creerCandidat(); + + printf("Nom : "); + scanf("%[^\n]", candidat->nom); + printf("Prénom : "); + scanf("%*c%[^\n]", candidat->prenom); + printf("Moyenne en maths : "); + scanf("%f", &candidat->moyenneMath); + printf("Moyenne en français : "); + scanf("%f", &candidat->moyenneFrancais); + printf("Moyenne en anglais : "); + scanf("%f", &candidat->moyenneAnglais); + printf("Moyenne en spécialité : "); + scanf("%f", &candidat->moyenneSpecialite); + + liste = ajouterCandidat(liste, &nbCandidats, candidat); + + afficherListeCandidats(liste, nbCandidats); + + Candidature* candid = creerCandidature(); + + char searchIUT[LEN_MAX], searchDept[LEN_MAX]; + printf("Entrez la ville dans laquelle vous souhaitez candidater : "); + scanf("%s", searchIUT); +/* + VilleIUT* ville = NULL; + int i; + for(i=0; i<*nbVilles; i++) + if(strcmp(tiut[i]->ville, searchIUT) == 0) + ville = tiut[i]; + + if(ville == NULL) + fprintf(stderr, "\e[1;91mErreur: la ville '%s' n'est pas dans la liste des IUT.\e[0m\n\n", searchIUT); + else {}*/ + + printf("Entrez le département dans lequel vous souhaitez candidater : "); + scanf("%s", searchDept); + + strcpy(candid->ville, searchIUT); + strcpy(candid->departement, searchDept); + + ajouterCandidature(liste[2], candid); + + afficherListeCandidats(liste, nbCandidats); + afficherCandidatures(liste[2]); } \ No newline at end of file