17#include "../II/deux.c"
21 char connexion, poubelle;
24 printf(
"\nÊtes-vous déjà enregistré (O/N) ? : ");
25 scanf(
"%*c%c", &connexion);
29 if(connexion ==
'O' || connexion ==
'o') {
30 printf(
"\nTrès bien, merci de saisir votre ID : ");
32 if(scanf(
"%d",
id) == 0) {
34 fprintf(stderr,
"\e[0;91mErreur : cet ID n'existe pas !\n\n\e[0m");
38 if(*
id > *nbCandidats) {
40 fprintf(stderr,
"\e[0;91mErreur : cet ID n'existe pas !\n\n\e[0m");
44 printf(
"Merci de confirmer votre nom de famille : ");
47 if(strcasecmp(nom, (*listePointer)[*
id-1]->nom) != 0) {
49 fprintf(stderr,
"\n\e[0;91mErreur : le nom de famille ne correspond pas !\n\n\e[0m");
52 printf(
"\n\e[1;92mBienvenue %s %s !\n\e[1;91m"
53 "N'oubliez pas de revenir au menu principal pour vous déconnecter à la fin de votre session !\n\n\e[0m",
54 (*listePointer)[*
id-1]->prenom, (*listePointer)[*
id-1]->nom);
57 if(connexion ==
'n' || connexion ==
'N') {
58 printf(
"\nTrès bien, nous allons donc précéder à votre enregistrement.\n\n");
62 printf(
"Nom de famille : ");
63 scanf(
"%*c%[^\n]", candidat->
nom);
66 scanf(
"%*c%[^\n]", candidat->
prenom);
68 printf(
"Moyenne de mathématiques : ");
71 fprintf(stderr,
"\e[0;91mLa moyenne entrée est incorrecte\n\e[0mEntrez votre moyenne de mathématiques de l'année de terminale : ");
75 printf(
"Moyenne de français : ");
78 fprintf(stderr,
"\e[0;91mLa moyenne entrée est incorrecte\n\e[0mEntrez votre moyenne de français de l'année de terminale : ");
82 printf(
"Moyenne de anglais : ");
85 fprintf(stderr,
"\e[0;91mLa moyenne entrée est incorrecte\n\e[0mEntrez votre moyenne de anglais de l'année de terminale : ");
89 printf(
"Moyenne de spécialité : ");
92 fprintf(stderr,
"\e[0;91mLa moyenne entrée est incorrecte\n\e[0mEntrez votre moyenne de spécialité de l'année de terminale : ");
99 printf(
"\n\n\e[1mParfait ! Votre ID est \e[1;32m%d\e[0m\e[1m, ne le perdez pas, "
100 "il vous suivera tout le long de vos candidatures !\n\e[1;91m"
101 "N'oubliez pas de revenir au menu principal pour vous déconnecter à la fin de votre session !\n\n\e[0m", candidat->
id);
103 while ((poubelle = getchar()) !=
'\n' && poubelle != EOF);
104 fprintf(stderr,
"\n\e[0;91mLa valeur entrée est incorrecte. Merci de réessayer plus tard.\e[0m\n");
111 printf(
"\e[1;35m██████╗ ███████╗ ██████╗██████╗ ██╗ ██╗████████╗███████╗███╗ ███╗███████╗███╗ ██╗████████╗ ██╗██╗ ██╗████████╗\n");
112 printf(
"██╔══██╗██╔════╝██╔════╝██╔══██╗██║ ██║╚══██╔══╝██╔════╝████╗ ████║██╔════╝████╗ ██║╚══██╔══╝ ██║██║ ██║╚══██╔══╝\n");
113 printf(
"██████╔╝█████╗ ██║ ██████╔╝██║ ██║ ██║ █████╗ ██╔████╔██║█████╗ ██╔██╗ ██║ ██║ ██║██║ ██║ ██║ \n");
114 printf(
"██╔══██╗██╔══╝ ██║ ██╔══██╗██║ ██║ ██║ ██╔══╝ ██║╚██╔╝██║██╔══╝ ██║╚██╗██║ ██║ ██║██║ ██║ ██║ \n");
115 printf(
"██║ ██║███████╗╚██████╗██║ ██║╚██████╔╝ ██║ ███████╗██║ ╚═╝ ██║███████╗██║ ╚████║ ██║ ██║╚██████╔╝ ██║ \n");
116 printf(
"╚═╝ ╚═╝╚══════╝ ╚═════╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚══════╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═══╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ \e[0m\n\n");
128 printf(
"\n\nSouhaitez-vous vous connecter/enregistrer maintenant ou entrer en mode invité (O/N) ? : ");
129 scanf(
"%*c%c", &connexion);
131 if(connexion ==
'O' || connexion ==
'o')
134 if(connexion !=
'n' && connexion !=
'N')
135 while ((poubelle = getchar()) !=
'\n' && poubelle != EOF);
138 candidat = (*listePointer)[
id-1];
139 printf(
"\e[1;94mCandidat: %s %s, ID: %d\e[0m\n", candidat->
prenom, candidat->
nom,
id);
141 printf(
"\n\e[1;94mInvité\e[0m\n");
142 printf(
"-----------------------------------------------------------------------\n");
143 printf(
"\t1 - Consulter les ville possédant un IUT\n\n");
144 printf(
"\t2 - Voir les disponibilités des départements dans un IUT\n\n");
145 printf(
"\t3 - Rechercher un département\n\n");
148 printf(
"\t4 - Candidater\n\n");
149 printf(
"\t5 - Suivre sa candidature\n\n");
151 printf(
"\t4 - S'identifier\n\n");
153 printf(
"\t9 - Quitter\n");
154 printf(
"-----------------------------------------------------------------------\n");
157 if(scanf(
"%d", &choix) == 0)
160 printf(
"-----------------------------------------------------------------------\n");
166 printf(
"Consulter les ville possédant un IUT...\n\n");
170 printf(
"Voir les disponibilités des départements dans un IUT...\n\n");
171 printf(
"Saisissez le nom de la ville recherchée (tapez q pour annuler) : ");
173 scanf(
"\n%[^\n]", searchIUT);
175 if(strcasecmp(searchIUT,
"q") == 0)
181 printf(
"Rechercher un département...\n\n");
182 printf(
"Saisissez le nom du département recherché (tapez q pour annuler) : ");
184 scanf(
"\n%[^\n]", searchDept);
186 if(strcasecmp(searchDept,
"q") == 0)
193 printf(
"Candidater...\n\n");
197 fprintf(stderr,
"\e[0;91mErreur : la phase de candidature est arrêtée.\n\e[0m");
199 printf(
"S'identifier...\n\n");
202 candidat = (*listePointer)[
id-1];
207 printf(
"Suivre sa candidature...\n\n");
210 fprintf(stderr,
"\e[0;91mErreur : vous devez d'abord vous authentifier, merci de réessayer plus tard.\n\e[0m");
217 while ((poubelle = getchar()) !=
'\n' && poubelle != EOF);
218 fprintf(stderr,
"\e[0;91mErreur : la valeur entrée est invalide, merci de réessayer.\n\e[0m");
223 printf(
"\n\e[1;94mCandidat: %s %s, ID: %d\e[0m\n", candidat->
prenom, candidat->
nom,
id);
225 printf(
"\n\e[1;94mInvité\e[0m\n");
226 printf(
"-----------------------------------------------------------------------\n");
227 printf(
"\t1 - Consulter les ville possédant un IUT\n\n");
228 printf(
"\t2 - Voir les disponibilités des départements dans un IUT\n\n");
229 printf(
"\t3 - Rechercher un département\n\n");
232 printf(
"\t4 - Candidater\n\n");
233 printf(
"\t5 - Suivre sa candidature\n\n");
235 printf(
"\t4 - S'identifier\n\n");
237 printf(
"\t9 - Quitter\n");
238 printf(
"-----------------------------------------------------------------------\n");
240 if(scanf(
"%d", &choix) == 0)
244 printf(
"\nRetour au menu principal...\n");
254 printf(
"Merci d'entrer le mot de passe responsable : ");
255 system(
"stty -echo");
256 scanf(
"\n%[^\n]", pass);
259 if(strcmp(pass,
"resp2023") != 0) {
260 fprintf(stderr,
"\n\e[1;91mErreur: mot de passe incorrect !\n\n\e[0m");
264 printf(
"\n\n\e[1;32mMot de passe correct !\e[0m\n\n");
283 printf(
"\e[1;34mResponsable: M. BOUHOURS, IUT: Clermont-Ferrand, Département: Informatique\e[0m\n");
284 printf(
"--------------------------------------------------------------------------\n");
285 printf(
"\t1 - Lister les candidatures\n\n");
286 printf(
"\t2 - Traiter les candidatures\n\n");
287 printf(
"\t3 - Voir les candidats admis\n\n");
288 printf(
"\t4 - Voir les candidats en file d'attente\n\n");
289 printf(
"\t9 - Quitter\n");
290 printf(
"--------------------------------------------------------------------------\n");
292 if(scanf(
"%d", &choix) == 0)
295 printf(
"--------------------------------------------------------------------------\n");
300 printf(
"Lister les candidatures...\n");
304 printf(
"\n\e[1;32mAffichage des candidatures triées par ordre alphabétique pour le département 'Informatique' de l'IUT 'Clermont-Ferrand'\n\n\e[0m");
308 printf(
"Traiter les candidatures...\n");
314 printf(
"Voir les candidats admis...\n");
316 printf(
"\n\e[1;32mAffichage des candidats admis triés par ordre alphabétique pour le département 'Informatique' de l'IUT 'Clermont-Ferrand'\n\n\e[0m");
320 printf(
"Voir les candidats en liste d'attente...\n");
322 printf(
"\n\e[1;32mAffichage des candidats en file d'attente pour le département 'Informatique' de l'IUT 'Clermont-Ferrand'\n\n\e[0m");
327 while ((poubelle = getchar()) !=
'\n' && poubelle != EOF);
328 fprintf(stderr,
"\e[0;91mErreur : la valeur entrée est invalide, merci de réessayer.\n\n\e[0m");
332 printf(
"\e[1;34mResponsable: M. BOUHOURS, IUT: Clermont-Ferrand, Département: Informatique\e[0m\n");
333 printf(
"--------------------------------------------------------------------------\n");
334 printf(
"\t1 - Lister les candidatures\n\n");
335 printf(
"\t2 - Traiter les candidatures\n\n");
336 printf(
"\t3 - Voir les candidats admis\n\n");
337 printf(
"\t4 - Voir les candidats en file d'attente\n\n");
338 printf(
"\t9 - Quitter\n");
339 printf(
"--------------------------------------------------------------------------\n");
341 if(scanf(
"%d", &choix) == 0)
346 printf(
"\nRetour au menu principal...\n");
356 printf(
"Merci d'entrer le mot de passe administrateur : ");
357 system(
"stty -echo");
358 scanf(
"\n%[^\n]", pass);
361 if(strcmp(pass,
"admin2023") != 0) {
362 fprintf(stderr,
"\n\e[1;91mErreur: mot de passe incorrect !\n\n\e[0m");
366 printf(
"\n\n\e[1;32mMot de passe correct !\e[0m\n\n");
368 printf(
"--------------------------------------------------------------------\n");
369 printf(
"\t1 - Modifier le nombre de place d'une formation\n\n");
370 printf(
"\t2 - Créer un nouvel IUT\n\n");
371 printf(
"\t3 - Créer un nouveau département\n\n");
372 printf(
"\t4 - Supprimer un département\n\n");
374 printf(
"\t5 - Arrêter la phase de candidature\n\n");
376 printf(
"\t5 - Lancer la phase de candidature\n\n");
377 printf(
"\t6 - Modifier le nom du responsable d'un département\n\n");
378 printf(
"\t7 - Liste des candidats\n\n");
379 printf(
"\t9 - Quitter\n");
380 printf(
"---------------------------------------------------------------------\n");
382 if(scanf(
"%d", &choix) == 0)
385 printf(
"---------------------------------------------------------------------\n");
390 printf(
"Modifier le nombre de place d'une formation...\n\n");
394 printf(
"Créer un nouvel IUT...\n\n");
398 printf(
"Créer un nouveau département...\n\n");
402 printf(
"Supprimer un département...\n\n");
407 printf(
"Arrêter la phase de candidature...\n\n");
409 printf(
"Lancer la phase de candidature...\n\n");
412 status = (status ? 0 : 1);
414 printf(
"\n\e[1;32mLa phase de candidature à bien été %s !\e[0m\n\n", (status ?
"lancée" :
"arrêtée"));
417 printf(
"Modifier le nom du responsable d'un département...\n\n");
421 printf(
"Liste des candidats...\n");
422 printf(
"\n\e[4;37mListe des candidats (triés par ordre alphabétique) :\e[0m\n\n");
427 while ((poubelle = getchar()) !=
'\n' && poubelle != EOF);
428 fprintf(stderr,
"\e[0;91mErreur : la valeur entrée est invalide, merci de réessayer.\n\e[0m");
432 printf(
"\n--------------------------------------------------------------------\n");
433 printf(
"\t1 - Modifier le nombre de place d'une formation\n\n");
434 printf(
"\t2 - Créer un nouvel IUT\n\n");
435 printf(
"\t3 - Créer un nouveau département\n\n");
436 printf(
"\t4 - Supprimer un département\n\n");
438 printf(
"\t5 - Arrêter la phase de candidature\n\n");
440 printf(
"\t5 - Lancer la phase de candidature\n\n");
441 printf(
"\t6 - Modifier le nom du responsable d'un département\n\n");
442 printf(
"\t7 - Liste des candidats\n\n");
443 printf(
"\t9 - Quitter\n");
444 printf(
"---------------------------------------------------------------------\n");
446 if(scanf(
"%d", &choix) == 0)
450 printf(
"\nRetour au menu principal...\n");
467 printf(
"--------------------------------------------\n");
468 printf(
"Vous êtes : \n");
469 printf(
"--------------------------------------------\n");
470 printf(
"\t1 - Candidat\n\n");
471 printf(
"\t2 - Administrateur\n\n");
473 printf(
"\t3 - Responsable\n\n");
474 printf(
"\t9 - Quitter l'application\n");
475 printf(
"--------------------------------------------\n");
477 if(scanf(
"%d", &choix) == 0)
480 printf(
"-------------------------------------------------\n");
486 printf(
"\e[1;34m ██████╗ █████╗ ███╗ ██╗██████╗ ██╗██████╗ █████╗ ████████╗\n");
487 printf(
"██╔════╝██╔══██╗████╗ ██║██╔══██╗██║██╔══██╗██╔══██╗╚══██╔══╝\n");
488 printf(
"██║ ███████║██╔██╗ ██║██║ ██║██║██║ ██║███████║ ██║ \n");
489 printf(
"██║ ██╔══██║██║╚██╗██║██║ ██║██║██║ ██║██╔══██║ ██║ \n");
490 printf(
"╚██████╗██║ ██║██║ ╚████║██████╔╝██║██████╔╝██║ ██║ ██║ \n");
491 printf(
" ╚═════╝╚═╝ ╚═╝╚═╝ ╚═══╝╚═════╝ ╚═╝╚═════╝ ╚═╝ ╚═╝ ╚═╝ \e[0m\n\n");
498 printf(
"\e[1;34m █████╗ ██████╗ ███╗ ███╗██╗███╗ ██╗██╗███████╗████████╗██████╗ █████╗ ████████╗███████╗██╗ ██╗██████╗ \n");
499 printf(
"██╔══██╗██╔══██╗████╗ ████║██║████╗ ██║██║██╔════╝╚══██╔══╝██╔══██╗██╔══██╗╚══██╔══╝██╔════╝██║ ██║██╔══██╗\n");
500 printf(
"███████║██║ ██║██╔████╔██║██║██╔██╗ ██║██║███████╗ ██║ ██████╔╝███████║ ██║ █████╗ ██║ ██║██████╔╝\n");
501 printf(
"██╔══██║██║ ██║██║╚██╔╝██║██║██║╚██╗██║██║╚════██║ ██║ ██╔══██╗██╔══██║ ██║ ██╔══╝ ██║ ██║██╔══██╗\n");
502 printf(
"██║ ██║██████╔╝██║ ╚═╝ ██║██║██║ ╚████║██║███████║ ██║ ██║ ██║██║ ██║ ██║ ███████╗╚██████╔╝██║ ██║\n");
503 printf(
"╚═╝ ╚═╝╚═════╝ ╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝╚═╝╚══════╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚══════╝ ╚═════╝ ╚═╝ ╚═╝\e[0m\n\n");
505 menuAdmin(&tiut, liste, &nbVilles, nbCandidats);
512 printf(
"\e[1;34m██████╗ ███████╗███████╗██████╗ ██████╗ ███╗ ██╗███████╗ █████╗ ██████╗ ██╗ ███████╗\n");
513 printf(
"██╔══██╗██╔════╝██╔════╝██╔══██╗██╔═══██╗████╗ ██║██╔════╝██╔══██╗██╔══██╗██║ ██╔════╝\n");
514 printf(
"██████╔╝█████╗ ███████╗██████╔╝██║ ██║██╔██╗ ██║███████╗███████║██████╔╝██║ █████╗ \n");
515 printf(
"██╔══██╗██╔══╝ ╚════██║██╔═══╝ ██║ ██║██║╚██╗██║╚════██║██╔══██║██╔══██╗██║ ██╔══╝ \n");
516 printf(
"██║ ██║███████╗███████║██║ ╚██████╔╝██║ ╚████║███████║██║ ██║██████╔╝███████╗███████╗\n");
517 printf(
"╚═╝ ╚═╝╚══════╝╚══════╝╚═╝ ╚═════╝ ╚═╝ ╚═══╝╚══════╝╚═╝ ╚═╝╚═════╝ ╚══════╝╚══════╝\e[0m\n\n");
522 fprintf(stderr,
"\e[0;91mErreur : les recrutements sont en cours, impossible d'accéder au menu responsable. Merci de réessayer plus tard.\n\n\e[0m");
526 while ((poubelle = getchar()) !=
'\n' && poubelle != EOF);
527 fprintf(stderr,
"\e[0;91mErreur : la valeur entrée est invalide, merci de réessayer.\n\n\e[0m");
531 printf(
"--------------------------------------------\n");
532 printf(
"Vous êtes : \n");
533 printf(
"--------------------------------------------\n");
534 printf(
"\t1 - Candidat\n\n");
535 printf(
"\t2 - Administrateur\n\n");
537 printf(
"\t3 - Responsable\n\n");
538 printf(
"\t9 - Quitter l'application\n");
539 printf(
"--------------------------------------------\n");
541 if(scanf(
"%d", &choix) == 0)
545 printf(
"\nSauvegarde des IUT...\n");
547 printf(
"Sauvegarde des Candidats...\n");
549 printf(
"\nFermeture de l'application...\n");
562 printf(
"Entrez une ville (tapez q pour annuler) : ");
563 scanf(
"\n%[^\n]", searchIUT);
565 if(strcasecmp(searchIUT,
"q") == 0)
571 printf(
"Quel département souhaitez-vous modifier ? : ");
572 scanf(
"\n%[^\n]", searchDept);
573 printf(
"Entrez le nouveau nombre de places pour le département '%s' : ", searchDept);
574 scanf(
"%d", &nbPlaces);
583 printf(
"Entrez le nom de la ville (tapez q pour annuler) : ");
584 scanf(
"\n%[^\n]", nameIUT);
586 if(strcasecmp(nameIUT,
"q") == 0)
590 strcpy(ville->
ville, nameIUT);
594 printf(
"\n\e[1;32mL'IUT '%s' a bien été créé !\e[0m\n\n", nameIUT);
605 printf(
"Entrez la ville dans laquelle vous souhaitez ajouter un département (tapez q pour annuler) : ");
606 scanf(
"\n%[^\n]", searchIUT);
608 if(strcasecmp(searchIUT,
"q") == 0)
614 fprintf(stderr,
"\n\e[1;91mErreur: la ville '%s' n'est pas dans la liste des IUT.\e[0m\n\n", searchIUT);
618 printf(
"Entrez le nom du nouveau département : ");
619 scanf(
"%*c%[^\n]", addDept);
621 ldept = ville->
ldept;
625 fprintf(stderr,
"\n\e[1;91mErreur: le département '%s' existe déjà dans l'IUT '%s'.\e[0m\n\n", addDept, searchIUT);
629 while(ldept->
suiv != NULL) {
635 fprintf(stderr,
"\n\e[1;91mErreur: le département '%s' existe déjà dans l'IUT '%s'.\e[0m\n\n", addDept, searchIUT);
641 printf(
"Entrez le nombre de place disponibles en 1ère année : ");
643 printf(
"Entrez le nom du responsable de ce département : ");
644 scanf(
"%*c%[^\n]", responsable);
649 printf(
"\n\e[1;32mLe département '%s' a bien été ajouté à l'IUT '%s' !\e[0m\n\n", addDept, searchIUT);
660 printf(
"Entrez la ville dans laquelle vous souhaitez supprimer un département (tapez q pour annuler) : ");
661 scanf(
"\n%[^\n]", searchIUT);
663 if(strcasecmp(searchIUT,
"q") == 0)
669 fprintf(stderr,
"\e[1;91mErreur: la ville '%s' n'est pas dans la liste des IUT.\e[0m\n\n", searchIUT);
675 printf(
"Quel département souhaitez-vous supprimer ? : ");
676 scanf(
"%*c%[^\n]", searchDept);
681 fprintf(stderr,
"\e[1;91mErreur: vous ne pouvez pas supprimer de département pendant le recrutement/le traitement des candidatures.\e[0m\n\n");
689 printf(
"Dans quel IUT souhaitez-vous faire une modification ? (tapez q pour annuler) : ");
690 scanf(
"\n%[^\n]", searchIUT);
692 if(strcasecmp(searchIUT,
"q") == 0)
698 printf(
"Quel département souhaitez-vous modifier ? : ");
699 scanf(
"\n%[^\n]", searchDept);
701 printf(
"Quel est le nom du nouveau responsable : ");
702 scanf(
"\n%[^\n]", nom);
724 if(tiutNew == NULL) {
729 *tiutPointer = tiutNew;
731 (*tiutPointer)[*nbVilles] = ville;
737 for(i=0; i<nbVilles; i++)
738 if(strcasecmp(tiut[i]->ville, searchIUT) == 0)
745 printf(
"\e[4;37mListe des villes ayant un IUT disponibles :\e[0m\n\n");
748 for(i=0; i<nbVilles; i++)
749 printf(
" - %s\n", tiut[i]->ville);
763 fprintf(stderr,
"\n\e[1;91mErreur: la ville '%s' n'est pas dans la liste des IUT.\e[0m\n\n", searchIUT);
767 ldept = tiut[i]->
ldept;
770 fprintf(stderr,
"\n\e[1;91mErreur: la ville '%s' ne contient aucun département\e[0m\n\n", tiut[i]->ville);
772 printf(
"\n\e[4;37mDépartements disponibles dans la ville '%s' :\e[0m\n\n", tiut[i]->ville);
774 while (ldept != NULL) {
775 printf(
" - %s, \e[0;32m%d places disponibles\e[0m, Reponsable : %s\n", ldept->
departement, ldept->
nbP, ldept->
responsable);
789 printf(
"\n\e[4;37mListe des IUT contenant le département '%s':\e[0m\n\n", searchDept);
791 for(i=0; i<nbVilles; i++) {
792 ldept = tiut[i]->
ldept;
795 if(strcasecmp(ldept->
departement, searchDept) == 0) {
796 printf(
" - %s\n", tiut[i]->ville);
801 while(search->
suiv != NULL) {
802 search = search->
suiv;
803 if(strcasecmp(search->
departement, searchDept) == 0) {
804 printf(
" - %s\n", tiut[i]->ville);
813 fprintf(stderr,
" \e[1;91mAucun IUT ne contient ce département !\e[0m\n");
821 if(newDept == NULL) {
840 while(search->
suiv != NULL)
841 search = search->
suiv;
853 if(strcasecmp(ldept->
departement, searchDept) == 0) {
859 while(search->
suiv != NULL && strcasecmp(search->
departement, searchDept) != 0) {
861 search = search->
suiv;
864 if(strcasecmp(search->
departement, searchDept) == 0) {
871 printf(
"\n\e[1;32mLe département '%s' a bien été supprimé !\e[0m\n\n", searchDept);
873 fprintf(stderr,
"\n\e[1;91mErreur: la département '%s' n'existe pas.\e[0m\n\n", searchDept);
883 fprintf(stderr,
"\n\e[1;91mErreur: la ville '%s' n'est pas dans la liste des IUT.\e[0m\n\n", searchIUT);
887 ldept = tiut[i]->
ldept;
890 if(strcasecmp(ldept->
departement, searchDept) == 0) {
891 printf(
"\n\e[1;32mLe nombre de places de la formation '%s' à l'IUT '%s' est passé de %d à %d\e[0m\n\n", searchDept, searchIUT, ldept->
nbP, nb);
897 while(search->
suiv != NULL) {
898 search = search->
suiv;
899 if(strcasecmp(search->
departement, searchDept) == 0) {
900 printf(
"\n\e[1;32mLe nombre de places de la formation '%s' à l'IUT '%s' est passé de %d à %d\e[0m\n\n", searchDept, searchIUT, search->
nbP, nb);
909 fprintf(stderr,
"\n\e[1;91mErreur: le département '%s' n'a pas été trouvé dans l'IUT '%s'\e[0m\n\n", searchDept, searchIUT);
917 fprintf(stderr,
"\n\e[1;91mErreur: la ville '%s' n'est pas dans la liste des IUT.\e[0m\n\n", searchIUT);
921 ldept = tiut[i]->
ldept;
924 if(strcasecmp(ldept->
departement, searchDept) == 0) {
926 printf(
"\n\e[1;32mLe responsable de la formation '%s' à l'IUT '%s' est désormais '%s'.\e[0m\n\n", searchDept, searchIUT, ldept->
responsable);
931 while(search->
suiv != NULL) {
932 search = search->
suiv;
933 if(strcasecmp(search->
departement, searchDept) == 0) {
935 printf(
"\n\e[1;32mLe responsable de la formation '%s' à l'IUT '%s' est désormais '%s'.\e[0m\n\n", searchDept, searchIUT, search->
responsable);
943 fprintf(stderr,
"\n\e[1;91mErreur: le département '%s' n'a pas été trouvé dans l'IUT '%s'.\e[0m\n\n", searchDept, searchIUT);
947 int i, longueurNomVille, nbDepartements, lenDepartement, lenNomResponsable;
951 FILE *fe = fopen(
"donnees/villes.bin",
"wb");
954 fprintf(stderr,
"\e[1;91mErreur: impossible d'écrire dans le fichier villes.don\e[0m");
958 fwrite(&nbVilles,
sizeof(
int), 1, fe);
960 for (i=0; i<nbVilles; i++) {
963 longueurNomVille = strlen(ville.
ville)+1;
964 fwrite(&longueurNomVille,
sizeof(
int), 1, fe);
965 fwrite(ville.
ville,
sizeof(
char), longueurNomVille, fe);
968 maillon = ville.
ldept;
969 while (maillon != NULL) {
971 maillon = maillon->
suiv;
973 fwrite(&nbDepartements,
sizeof(
int), 1, fe);
975 maillon = ville.
ldept;
976 while (maillon != NULL) {
978 fwrite(&lenDepartement,
sizeof(
int), 1, fe);
979 fwrite(maillon->
departement,
sizeof(
char), lenDepartement, fe);
981 fwrite(&maillon->
nbP,
sizeof(
int), 1, fe);
983 lenNomResponsable = strlen(maillon->
responsable)+1;
984 fwrite(&lenNomResponsable,
sizeof(
int), 1, fe);
985 fwrite(maillon->
responsable,
sizeof(
char), lenNomResponsable, fe);
989 maillon = maillon->
suiv;
1000 int i, lenNomVille, nbDepartements, lenDepartement, lenNomResponsable;
1002 FILE *fe = fopen(
"donnees/villes.bin",
"rb");
1005 fprintf(stderr,
"\e[1;91mErreur: impossible de lire le fichier villes.bin\e[0m");
1009 fread(nbVilles,
sizeof(
int), 1, fe);
1018 for (i=0; i<*nbVilles; i++) {
1026 fread(&lenNomVille,
sizeof(
int), 1, fe);
1027 fread(ville->
ville,
sizeof(
char), lenNomVille, fe);
1029 fread(&nbDepartements,
sizeof(
int), 1, fe);
1032 maillonPrecedent = NULL;
1035 for (j=0; j<nbDepartements; j++) {
1038 if(maillon == NULL) {
1043 if(maillonPrecedent != NULL)
1044 maillonPrecedent->
suiv = maillon;
1046 fread(&lenDepartement,
sizeof(
int), 1, fe);
1047 fread(maillon->
departement,
sizeof(
char), lenDepartement, fe);
1049 fread(&maillon->
nbP,
sizeof(
int), 1, fe);
1051 fread(&lenNomResponsable,
sizeof(
int), 1, fe);
1052 fread(maillon->
responsable,
sizeof(
char), lenNomResponsable, fe);
1056 if(maillonPrecedent == NULL)
1057 ville->
ldept = maillon;
1059 maillonPrecedent = maillon;
int saveCandidats(ListeCandidats liste, int nbCandidats)
Enregistre la liste des candidats dans le fichier texte candidats.don.
void menuCandidat_candidater(VilleIUT **tiut, int nbVilles, Candidat *candidat)
Permet au candidat de déposer une candidature.
void saveStatus(int status)
Enregistre sur le fichier texte status.don le status actuel de la phase de candidature (0 si la phase...
void ajouterCandidat(ListeCandidats *listePointer, int *nbCandidats, Candidat *candidat)
Ajoute l'adresse du candidat dans le tableau de pointeur "liste".
Candidat * creerCandidat(void)
Alloue de la mémoire de la taille d'une structure Candidat avec un malloc.
ListeCandidats readCandidats(int *nbCandidats)
Lit la liste des candidats dans le fichier texte candidats.don puis les met dans la structure ListeCa...
int readStatus(void)
Lis le status actuel de la phase de candidature (0 si la phase est arrêtée et 1 si elle est lancée)
void afficherListeCandidats(ListeCandidats liste, int nbCandidats)
Affiche tous les candidats triés par nom.
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.
void menuResponsable_traiterCandidatures(VilleIUT **tiut, int nbVilles, ListeCandidats liste, int nbCandidats)
Permet d'accepter un certain nombre de candidat ayant une note minimale.
void afficherCandidatsAttente(FileAttente *file)
void afficherCandidatsAdmis(char *dept, char *ville)
void ecrireCandidatsAttente(char *dept, char *ville, FileAttente *file)
char departement[LEN_MAX]
char responsable[LEN_MAX]
struct MaillonDept * suiv
void afficherCandidaturesByDept(ListeCandidats liste, int nbCandidats, char *searchIUT, char *searchDept)
Affiche les candidatures pour un seul département dans un IUT.
void calculerNoteGlobale(ListeCandidats liste, int nbCandidats)
Calcul la note globale en fonction des coéfficients prédéfinis.
void modifierNomResponsable(VilleIUT **tiut, int nbVilles, char *searchIUT, char *searchDept, char *nom)
Modifie le nom du responsable d'une formation.
ListeDept creerListeDepartement(void)
Créer une liste vide.
void menuAdmin_creerIUT(VilleIUT ***tiutPointer, int *nbVilles)
BONUS: Fonction permettant à l'utilisateur administrateur de créer un nouvel IUT.
ListeDept supprimerDepartement(ListeDept ldept, char *searchDept)
Supprime le département dans une ville choisie par l'utilisateur.
int rechercherVille(VilleIUT **tiut, int nbVilles, char *searchIUT)
Fonction de recherche pour trouver la position de la ville recherchée dans le tableau tiut.
void identificationCandidat(int *id, ListeCandidats *listePointer, int *nbCandidats)
Propose à l'utilisateur de se connecter avec son id ou de créer son compte étudiant....
void menuResponsable(VilleIUT **tiut, ListeCandidats liste, int nbVilles, int nbCandidats)
Affiche le menu des responsables et permet l'appel des fonctions suivant le choix de l'utilisateur.
void menuAdmin_modifierPlaces(VilleIUT **tiut, int nbVilles)
Fonction permettant à l'administrateur de changer le nombre de places disponibles dans une formation.
MaillonDept * creerDepartement(char *departement, int nbP, char *responsable)
Alloue de la memoire de la taille d'une structure MaillonDept avec un malloc.
void menuAdmin(VilleIUT ***tiutPointer, ListeCandidats liste, int *nbVilles, int nbCandidats)
Affiche le menu des administrateurs et permet l'appel des fonctions suivant le choix de l'utilisateur...
void saveVilles(VilleIUT *tiut[], int nbVilles)
Enregistre les modifications apportées aux structures de données dans le fichier binaire ville....
void modifierNbPlaces(VilleIUT **tiut, int nbVilles, char *searchIUT, char *searchDept, int nb)
Modifie le nombre de place d'une formation.
void titreMenuPrincipal(void)
Affiche le titre "RECRUTEMENT IUT".
void ajouterVille(VilleIUT ***tiutPointer, VilleIUT *ville, int *nbVilles)
BONUS: ajoute l'adresse d'une ville dans le tableau tiut contenue à l'adresse tiutPointer....
VilleIUT * creerVille(void)
BONUS: Alloue de la memoire de la taille d'une structure VilleIUT avec un malloc.
ListeDept ajouterDepartement(ListeDept ldept, MaillonDept *dept)
Ajoute un département dans la liste chaînée des départements d'une ville.
void afficherDepartement(VilleIUT **tiut, int nbVilles, char *searchDept)
Affiche la liste des IUT comprenant un département recherché par l'utilisateur.
void menuAdmin_supprimerDepartement(VilleIUT **tiut, int nbVilles)
Fonction permettant à l'utilisateur administrateur de supprimer un département existant.
void menuPrincipal()
Affiche le menu principal et permet l'appel des menus candidats/administrateurs/responsables suivant ...
void menuAdmin_creerDepartement(VilleIUT **tiut, int nbVilles)
Fonction permettant à l'utilisateur administrateur de créer un nouveau département.
int afficherListeDepartement(VilleIUT **tiut, int nbVilles, char *searchIUT)
Affiche la liste des différents départements disponible dans une ville recherchée et le nombre de pla...
VilleIUT ** readVilles(int *nbVilles)
Lit le fichier binaire ville.bin et retourne le tableau tiut avec les structures de données et les do...
void menuAdmin_modifierResponsable(VilleIUT **tiut, int nbVilles)
Fonction permettant à l'utilisateur administrateur de modifier le nom d'un responsable d'un départeme...
void menuCandidat(VilleIUT **tiut, ListeCandidats *listePointer, int nbVilles, int *nbCandidats)
Affiche le menu des candidats et permet l'appel des fonctions suivant le choix de l'utilisateur.
void afficherListeVilles(VilleIUT **tiut, int nbVilles)
Affiche la liste des villes ayant un IUT.