#include "SAE.h" Departement lireDept(FILE *flot, ListeDepartement dpt) { fscanf(flot, "%s\n%d\n%d\n", dpt.departement, &dpt.decisionAdmission, &dpt.decisionCandidat); return dpt; } void afficherDpt(Departement dpt) { printf("\t%s\t%d\t%d", dpt.departement, dpt.decisionAdmission, dpt.decisionCandidat); } Admission lireCandidat(FILE *flot, ListeAdmission la, char dptResAdmis[]) { int i = 0; fscanf(flot, "%d\n", &la->v.num); fgets(la->v.nom, 22, flot); la->v.nom[strlen(la->v.nom) - 1] = '\0'; fgets(la->v.prenom, 22, flot); la->v.prenom[strlen(la->v.prenom) - 1] = '\0'; fscanf(flot, "%d\t%d\t%d\t%d\n%d\n%s\n", &la->v.tabMatiere[0], &la->v.tabMatiere[1], &la->v.tabMatiere[2], &la->v.tabMatiere[3], &la->v.nbChoix, la->v.ville); if(la->v.nbChoix == 0) { listenouv(); return la->v; } ajouterDpt(la->v.ldept, lireDept(flot, la->v.ldept)); while(!feof(flot) && i < la->v.nbChoix) { if(strcmp(la->v.ldept, dptResAdmi) == 0) { la->v.ldept = inserer(la->v, la->v.ldept); } ajouterDpt(la->v.ldept, lireDept(flot, la->v.ldept)); i++; } return la->v; } void afficherCandidats(ListeAdmission la) { int i; printf("%d\t%s\t%s\t%d\t%d\t%d\t%d\t%d\t%s\t%s\t%d\t%d", la->v.num, la->v.nom, la->v.prenom, la->v.tabMatiere[0], la->v.tabMatiere[1], la->v.tabMatiere[2], la->v.tabMatiere[3], la->v.nbChoix, la->v.ville); for(i = 0; i < la->v.nbChoix; i++) { afficherDpt(la->v.ldept->v); la->v.ldept = la->v.ldept->suiv; } printf("\n"); } // Regarder si le nombre de choix est = à 0 Que se passe-t-il ? ListeAdmission chargerCandidats(char *ficAdmission, char dptResAdmi[30], ListeAdmission la) { FILE *flot; listenouv(); flot=fopen(ficAdmission, "r"); if(flot == NULL) { printf("Erreur d'ouverture du fichier !\n"); exit(1); } la->v = lireCandidat(flot, la, dptResAdmi); while(!feof(flot)) { listeCandidats = insererCand(listeCandidats, candidat); candidat = lireCandidat(flot); } fclose(flot); return listeCandidats; } void sauvegarderCandidats(ListeAdmission listeCandidats, char dptResAdmi[30]) { FILE *flot; flot=fopen("admissionInfo.txt", "w"); if(flot == NULL) { printf("Erreur d'ouverture du fichier !\n"); exit(1); } while(! videCand(listeCandidats)) { fprintf(flot, "%d\n%s\n%s\n%d\t%d\t%d\t%d\n%d\n%s\n", listeCandidats->v.num, listeCandidats->v.nom, listeCandidats->v.prenom, listeCandidats->v.tabMatiere[0], listeCandidats->v.tabMatiere[1], listeCandidats->v.tabMatiere[2], listeCandidats->v.tabMatiere[3], listeCandidats->v.nbChoix, listeCandidats->v.ville); while(! videDpt(listeCandidats->v.ldept)) { fprintf(flot, "%s\n%d\n%d\n", listeCandidats->v.ldept->v.departement, listeCandidats->v.ldept->v.decisionAdmission, listeCandidats->v.ldept->v.decisionCandidat); listeCandidats->v.ldept = listeCandidats->v.ldept->suiv; } listeCandidats = listeCandidats->suiv; } fclose(flot); } void afficherCandidatsAdmis(ListeAdmission listeCandidats) { while(! videCand(listeCandidats)) { if(listeCandidats->v.admis == 1) { afficherCandidats(listeCandidats->v); } listeCandidats = listeCandidats->suiv; } } void afficherCandidatsNonAdmis(ListeAdmission listeCandidats) { while(! videCand(listeCandidats)) { if(listeCandidats->v.admis == 0) { afficherCandidats(listeCandidats->v); } listeCandidats = listeCandidats->suiv; } } void afficherCandidatsAttente(ListeAdmission listeCandidats) { while(! videCand(listeCandidats)) { if(listeCandidats->v.admis == 2) { afficherCandidats(listeCandidats->v); } listeCandidats = listeCandidats->suiv; } } void afficherCandidatsDpt(ListeAdmission listeCandidats) { while(! videCand(listeCandidats)) { afficherCandidats(listeCandidats->v); listeCandidats = listeCandidats->suiv; } } ListeAdmission MoyenneCandidats(ListeAdmission listeCandidats) { ListeAdmission listeMoyenne = listeNouvCand(); while(! videCand(listeCandidats)) { listeCandidats->v.moyenne = (listeCandidats->v.noteMaths + listeCandidats->v.noteFrançais + listeCandidats->v.noteAnglais + listeCandidats->v.noteSpe) / 4; listeMoyenne = insererCand(listeMoyenne, listeCandidats->v); listeCandidats = listeCandidats->suiv; } return listeMoyenne; } // Comment definir la note sur 20 mise lors de l'etude du dossier ? // Ajouter une variable dans la structure Admission ? // Ou mettre la liste et la note dans un tableau ? // Après examen de chaque dossier de candidature, // le jury doit regarder ou la note peut etre calculée automatiquement ? int modifNoteMinAdmis() { int noteMaths, noteFrançais, noteAnglais, noteSpe; printf("Entrez la nouvelle note minimale d'admission en maths (-1 pour quitter) : "); while(noteMaths < 0 || noteMaths > 20) { scanf("%d", ¬eMaths); if(noteMaths == -1) { break; } printf("La note doit être comprise entre 0 et 20 !\n"); } printf("Entrez la nouvelle note minimale d'admission en français (-1 pour quitter) : "); while(noteFrançais < 0 || noteFrançais > 20) { scanf("%d", ¬eFrançais); if(noteFrançais == -1) { break; } printf("La note doit être comprise entre 0 et 20 !\n"); } printf("Entrez la nouvelle note minimale d'admission en anglais (-1 pour quitter) : "); while(noteAnglais < 0 || noteAnglais > 20) { scanf("%d", ¬eAnglais); if(noteAnglais == -1) { break; } printf("La note doit être comprise entre 0 et 20 !\n"); } printf("Entrez la nouvelle note minimale d'admission en spécialité (-1 pour quitter) : "); while(noteSpe < 0 || noteSpe > 20) { scanf("%d", ¬eSpe); if(noteSpe == -1) { break; } printf("La note doit être comprise entre 0 et 20 !\n"); } } int modifNbAdmisMax() { int nbAdmisMax; printf("Entrez le nouveau nombre d'admis maximum : "); scanf("%d", &nbAdmisMax); return nbAdmisMax; }