21 int i, j, k, mustReply = 0, nbPropositions = 0;
22 char reponse1, reponse2, poubelle;
27 if(candidatAdmis == NULL) {
36 if(propositions == NULL) {
42 fprintf(stderr,
"\e[0;91mErreur : vous n'avez aucune candidature en cours, merci de réessayer plus tard.\n\e[0m");
53 printf(
"Vous avez %d candidature(s) contenant une proposition d'admission, souhaitez-vous y répondre ? (O/N) : ", nbPropositions);
54 scanf(
"%*c%c", &reponse1);
56 for(i=0; i<nbPropositions; i++) {
57 if(reponse1 ==
'o' || reponse1 ==
'O') {
60 printf(
"\nSouhaitez-vous accepter ou refuser cette proposition ? (A/R) : ");
61 scanf(
"%*c%c", &reponse2);
63 if(reponse2 ==
'a' || reponse2 ==
'A'){
64 printf(
"\n\e[1;32mProposition pour le département '%s' à l'IUT '%s' acceptée !\e[0m\n",
65 propositions[i]->departement, propositions[i]->ville);
77 if(reponse2 ==
'r' || reponse2 ==
'R') {
78 printf(
"\n\e[1;32mProposition pour le département '%s' à l'IUT '%s' refusée !\e[0m\n",
79 propositions[i]->departement, propositions[i]->ville);
88 if(strcmp(candidatAdmis->
nom,
"") != 0 && strcmp(candidatAdmis->
prenom,
"") != 0) {
89 for(j=0; j<nbCandidats; j++) {
90 if(strcmp(liste[j]->nom, candidatAdmis->
nom) == 0
91 && strcmp(liste[j]->prenom, candidatAdmis->
prenom) == 0) {
94 if(listeCandidatures[k]->ville == propositions[i]->ville
95 && listeCandidatures[k]->departement == propositions[i]->departement) {
103 while ((poubelle = getchar()) !=
'\n' && poubelle != EOF);
104 fprintf(stderr,
"\n\e[0;91mErreur : la réponse saisie est incorrecte. Merci de réessayer plus tard.\n\e[0m");
109 if(reponse1 ==
'n' || reponse1 ==
'N')
110 printf(
"\n\t\e[1mTrès bien. Vous pouvez toujours donner votre réponse ultérieurement.\e[0m\n");
112 while ((poubelle = getchar()) !=
'\n' && poubelle != EOF);
113 fprintf(stderr,
"\n\e[0;91mErreur : la réponse saisie est incorrecte. Merci de réessayer plus tard.\n\e[0m");
126 int nbCandidatsAccept, pos, verif, checkQueue = 0;
129 strcpy(dept,
"Informatique");
130 strcpy(ville,
"Clermont-Ferrand");
132 printf(
"\n\e[3;32mLes deux prochaines lignes sont affichées à titre informatif\e[0m\n\n");
133 printf(
"Entrez le nom de la ville que vous souhaitez traiter : %s\n", ville);
134 printf(
"Quel département souhaitez-vous modifier ? : %s\n", dept);
136 printf(
"\n\e[1;32mTraitement des candidatures pour le département '%s' de l'IUT '%s'\n\n\e[0m", dept, ville);
138 printf(
"Combien de candidats souhaitez-vous accepter ? : ");
139 if(scanf(
"%d", &nbCandidatsAccept) == 0) {
140 while ((poubelle = getchar()) !=
'\n' && poubelle != EOF);
141 fprintf(stderr,
"\n\e[0;91mErreur : la valeur entrée est invalide, merci de réessayer plus tard.\n\n\e[0m");
147 ldept = tiut[pos]->
ldept;
149 while(ldept != NULL && strcmp(ldept->
departement, dept) != 0)
153 printf(
"\n\e[1;91mAttention, après avoir entré cette valeur, elle ne sera plus modifiable !\e[0m\n\nQuelle est la note minimale pour l'acception du candidat ? : ");
156 fprintf(stderr,
"\e[0;91mLa note entrée est incorrecte\n\e[0mEntrez une note minimale entre 0 et 20 : ");
163 printf(
"\nMerci de confirmer : Il faut accepter %d candidat avec une note minimale de %.2f (O/N) ? : ", nbCandidatsAccept, ldept->
noteMinimale);
165 scanf(
"%*c%c", &choix);
167 if(choix ==
'n' || choix ==
'N')
168 printf(
"\n\e[1mAnnulation de l'opération.\e[0m\n\n");
170 if(choix ==
'o' || choix ==
'O')
173 while ((poubelle = getchar()) !=
'\n' && poubelle != EOF);
174 fprintf(stderr,
"\n\e[0;91mErreur : la valeur entrée est invalide, merci de réessayer plus tard.\n\n\e[0m");
195 return file->
tete == NULL;
200 nouveauMaillon->
candidat = candidat;
201 nouveauMaillon->
suivant = NULL;
204 file->
tete = nouveauMaillon;
208 file->
queue = nouveauMaillon;
232 char fNameAttente[100];
234 strcpy(fNameAttente,
"donnees/");
235 strcat(fNameAttente, ville);
236 strcat(fNameAttente,
"_");
237 strcat(fNameAttente, dept);
238 strcat(fNameAttente,
"_Attente.don");
240 if(access(fNameAttente, F_OK) != -1) {
241 FILE *fAttente = fopen(fNameAttente,
"r");
243 if(fAttente == NULL) {
248 fscanf(fAttente,
"%d\n", &fileCandidats->
nbAttente);
250 for(i=0; i<fileCandidats->
nbAttente; i++) {
251 fscanf(fAttente,
"%[^\n]\n%[^\n]\n%f %f %f %f %f\n",
255 enfiler(fileCandidats, candidat);
261 return fileCandidats;
266 char fNameAttente[100];
268 strcpy(fNameAttente,
"donnees/");
269 strcat(fNameAttente, ville);
270 strcat(fNameAttente,
"_");
271 strcat(fNameAttente, dept);
272 strcat(fNameAttente,
"_Attente.don");
274 FILE *fAttente = fopen(fNameAttente,
"w");
276 if(fAttente == NULL) {
282 fprintf(fAttente,
"%d\n", file->
nbAttente);
284 while(parcourir != NULL) {
285 fprintf(fAttente,
"%s\n%s\n%f %f %f %f %f\n",
289 parcourir = parcourir->
suivant;
300 char nomComplet1[60];
301 strcpy(nomComplet1, c1->
nom);
302 strcat(nomComplet1, c1->
prenom);
304 char nomComplet2[60];
305 strcpy(nomComplet2, c2->
nom);
306 strcat(nomComplet2, c2->
prenom);
308 return strcmp(nomComplet1, nomComplet2);
315 char fNameAdmis[100];
317 strcpy(fNameAdmis,
"donnees/");
318 strcat(fNameAdmis, ville);
319 strcat(fNameAdmis,
"_");
320 strcat(fNameAdmis, dept);
321 strcat(fNameAdmis,
"_Admis.don");
323 FILE *fAdmis = fopen(fNameAdmis,
"r");
330 fscanf(fAdmis,
"%d\n", &nbAdmis);
339 for(i=0; i<nbAdmis; i++) {
342 if(liste[i] == NULL) {
347 fscanf(fAdmis,
"%[^\n]\n%[^\n]\n%f %f %f %f %f\n",
348 liste[i]->nom, liste[i]->prenom, &liste[i]->moyenneMath, &liste[i]->moyenneFrancais,
349 &liste[i]->moyenneAnglais, &liste[i]->moyenneSpecialite, &liste[i]->noteGlobale);
354 fAdmis = fopen(fNameAdmis,
"w");
362 liste[nbAdmis-1] = candidat;
364 fprintf(fAdmis,
"%d\n", nbAdmis);
366 for(i=0; i<nbAdmis; i++) {
367 fprintf(fAdmis,
"%s\n%s\n%f %f %f %f %f\n",
368 liste[i]->nom, liste[i]->prenom, liste[i]->moyenneMath, liste[i]->moyenneFrancais,
369 liste[i]->moyenneAnglais, liste[i]->moyenneSpecialite, liste[i]->noteGlobale);
380 char fNameAdmis[100];
382 strcpy(fNameAdmis,
"donnees/");
383 strcat(fNameAdmis, ville);
384 strcat(fNameAdmis,
"_");
385 strcat(fNameAdmis, dept);
386 strcat(fNameAdmis,
"_Admis.don");
388 if(access(fNameAdmis, F_OK) != -1) {
389 FILE *fAdmis = fopen(fNameAdmis,
"r");
396 fscanf(fAdmis,
"%d\n", &nbAdmis);
405 for(i=0; i<nbAdmis; i++) {
408 if(liste[i] == NULL) {
413 fscanf(fAdmis,
"%[^\n]\n%[^\n]\n%f %f %f %f %f\n",
414 liste[i]->nom, liste[i]->prenom, &liste[i]->moyenneMath, &liste[i]->moyenneFrancais,
415 &liste[i]->moyenneAnglais, &liste[i]->moyenneSpecialite, &liste[i]->noteGlobale);
420 for(i=0; i<nbAdmis; i++) {
421 printf(
"\e[4;37mCandidat '%s %s' :\e[0m"
422 "\n - Moyenne en mathématiques : %.2f\n - Moyenne en français : %.2f"
423 "\n - Moyenne en anglais : %.2f\n - Moyenne en spécialité : %.2f"
424 "\n - Note globale attribuée : %.2f\n\n",
425 liste[i]->nom, liste[i]->prenom, liste[i]->moyenneMath, liste[i]->moyenneFrancais,
426 liste[i]->moyenneAnglais, liste[i]->moyenneSpecialite, liste[i]->noteGlobale);
432 fprintf(stderr,
"\n\e[1;91mErreur : les candidatures n'ont pas encore été traitées, merci de réessayer plus tard.\n\n\e[0m");
441 while(parcourir != NULL) {
442 printf(
"\e[4;37mCandidat '%s %s' (position %d/%d) :\e[0m"
443 "\n - Moyenne en mathématiques : %.2f\n - Moyenne en français : %.2f"
444 "\n - Moyenne en anglais : %.2f\n - Moyenne en spécialité : %.2f"
445 "\n - Note globale attribuée : %.2f\n\n",
448 parcourir = parcourir->
suivant;
451 fprintf(stderr,
"\n\e[1;91mErreur : les candidatures n'ont pas encore été traitées ou aucun candidat n'est en attente, merci de réessayer plus tard.\n\n\e[0m");
void afficherCandidatures(ListeCandidatures candidatures, int nbCandidatures)
Affiche récursivement toutes les candidatures d'un seul candidat.
FileAttente * creerFile(void)
FileAttente * lireCandidatsAttente(char *dept, char *ville)
void menuCandidat_suivreCandidature(ListeCandidats liste, int nbCandidats, Candidat *candidat)
Permet de voir les candidatures et les décisions prises.
CandidatTraite defiler(FileAttente *file)
void menuResponsable_traiterCandidatures(VilleIUT **tiut, int nbVilles, ListeCandidats liste, int nbCandidats)
Permet d'accepter un certain nombre de candidat ayant une note minimale.
void enfiler(FileAttente *file, CandidatTraite candidat)
void afficherCandidatsAttente(FileAttente *file)
void ajouterCandidatAdmis(char *dept, char *ville, CandidatTraite *candidat)
void afficherCandidatsAdmis(char *dept, char *ville)
int compareCandidatsTraite(const void *p1, const void *p2)
void ecrireCandidatsAttente(char *dept, char *ville, FileAttente *file)
int estVide(FileAttente *file)
ListeCandidatures listeCandidatures
char departement[LEN_MAX]
struct MaillonDept * suiv
Candidature ** ListeCandidatures
CandidatTraite ** ListeAdmis
void traiterCandidatures(ListeCandidats liste, int nbCandidats, int nbCandidatsAccept, float noteMini, int checkQueue)
Permet de traiter les candidatures et met les candidats dans des fichiers txt suivant s'ils sont admi...
int rechercherVille(VilleIUT **tiut, int nbVilles, char *searchIUT)
Fonction de recherche pour trouver la position de la ville recherchée dans le tableau tiut.