Ajout de fonctions candidats/candidatures

master
Alix JEUDI--LEMOINE 2 years ago
parent 2bd5c970b0
commit eaa159437c

@ -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; i<nbCandidats; i++) {
memcpy(&liste2[i], &liste[i], sizeof(Candidat*));
}
qsort(liste2, nbCandidats, sizeof(Candidat*), compareCandidats);
for(int i=0; i<nbCandidats; i++) {
Candidat* candidat = liste2[i];
afficherCandidat(candidat);
}
}
void afficherCandidat(Candidat* candidat) {
printf("Candidat '%s %s' :"
printf("Candidat n°%d, '%s %s' :"
"\n - Moyenne en mathématiques : %f\n - Moyenne en français : %f"
"\n - Moyenne en anglais : %f\n - Moyenne en spécialité : %f\n\n",
candidat->prenom, 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; i<nbCandidatures; i++) {
char decision[LEN_MAX], validation[LEN_MAX];
Candidature* candidature = candidat->listeCandidatures[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; i<nbCandidats; i++) {
Candidat* candidat = liste[i];
fprintf(fe, "\n%d\n%s\n%s\n%f\t%f\t%f\t%f\n%d",
candidat->id, candidat->nom, candidat->prenom,
candidat->moyenneMath, candidat->moyenneFrancais,
candidat->moyenneAnglais, candidat->moyenneSpecialite,
candidat->nbCandidatures);
ListeCandidatures listeCandidatures = candidat->listeCandidatures;
for(int j=0; j<candidat->nbCandidatures; 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]);
}
Loading…
Cancel
Save