Kyllian CHABANON 2 years ago
commit 7b7a322822

14
SAE.h

@ -47,6 +47,18 @@ void modificationRespDept(VilleIUT *tiut[], int nb);
// Partie 3 // Partie 3
Departement lireDpt(FILE *flot, ListeDepartement dpt);
void afficherDept(Departement dpt);
Admission lireCandidat(FILE *flot, ListeAdmission la);
void afficherCandidat(Admission candidat);
ListeAdmission chargerCandidats(char *ficAdmission, char dptResAdmi[30], ListeAdmission la);
void sauvegarderCandidats(ListeAdmission listeCandidats, char dptResAdmi[30]);
void afficherCandidatsAdmis(ListeAdmission listeCandidats);
void afficherCandidatsNonAdmis(ListeAdmission listeCandidats);
void afficherCandidatsAttente(ListeAdmission listeCandidats);
void afficherCandidatsDpt(ListeAdmission listeCandidats);
ListeAdmission MoyenneCandidats(ListeAdmission listeCandidats);
// Liste Admission // Liste Admission
ListeAdmission listenouvAdm(void); ListeAdmission listenouvAdm(void);
ListeAdmission insererEnTeteAdm(ListeAdmission la, Admission candidat); ListeAdmission insererEnTeteAdm(ListeAdmission la, Admission candidat);
@ -56,7 +68,7 @@ bool videAdm(ListeAdmission la);
ListeAdmission supprimerEnTeteAdm(ListeAdmission la); ListeAdmission supprimerEnTeteAdm(ListeAdmission la);
ListeAdmission supprimerAdm(ListeAdmission la, Admission candidat); ListeAdmission supprimerAdm(ListeAdmission la, Admission candidat);
bool rechercheAdm(ListeAdmission la, Admission candidat); bool rechercheAdm(ListeAdmission la, Admission candidat);
int TeteAdm(ListeAdmission la); Departement TeteAdm(ListeAdmission la);
int longueurAdm(ListeAdmission la); int longueurAdm(ListeAdmission la);
void afficherCandidatsAdm(Admission candidat); void afficherCandidatsAdm(Admission candidat);

@ -1,8 +1,7 @@
#include "SAE.h" #include "SAE.h"
/*
Departement lireDpt(FILE *flot, Admission ListeDepartement) Departement lireDept(FILE *flot, ListeDepartement dpt)
{ {
Departement dpt;
fscanf(flot, "%s\n%d\n%d\n", dpt.departement, &dpt.decisionAdmission, &dpt.decisionCandidat); fscanf(flot, "%s\n%d\n%d\n", dpt.departement, &dpt.decisionAdmission, &dpt.decisionCandidat);
return dpt; return dpt;
} }
@ -12,41 +11,41 @@ void afficherDpt(Departement dpt)
printf("\t%s\t%d\t%d", dpt.departement, dpt.decisionAdmission, dpt.decisionCandidat); printf("\t%s\t%d\t%d", dpt.departement, dpt.decisionAdmission, dpt.decisionCandidat);
} }
Admission lireCandidat(FILE *flot, ListeAdmission la) Admission lireCandidat(FILE *flot, ListeAdmission la, char dptResAdmis[])
{ {
int i = 0; int i = 0;
fscanf(flot, "%d\n", &la->candidat.num); fscanf(flot, "%d\n", &la->v.num);
fgets(candidat.nom, 22, flot); fgets(la->v.nom, 22, flot);
candidat.nom[strlen(candidat.nom) - 1] = '\0'; la->v.nom[strlen(la->v.nom) - 1] = '\0';
fgets(candidat.prenom, 22, flot); fgets(la->v.prenom, 22, flot);
candidat.prenom[strlen(candidat.prenom) - 1] = '\0'; la->v.prenom[strlen(la->v.prenom) - 1] = '\0';
fscanf(flot, "%d\t%d\t%d\t%d\n%d\n%s\n", &candidat.tabMatiere[0], &candidat.tabMatiere[1], &candidat.tabMatiere[2], &candidat.tabMatiere[3], &candidat.nbChoix, candidat.ville); 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(candidat.nbChoix == 0) if(la->v.nbChoix == 0)
{ {
listenouv(); listenouv();
return candidat; return la->v;
} }
dpt = lireDpt(flot); ajouterDpt(la->v.ldept, lireDept(flot, la->v.ldept));
while(!feof(flot) && i < candidat.nbChoix) while(!feof(flot) && i < la->v.nbChoix)
{ {
if(strcmp(dpt.departement, dptResAdmi) == 0) if(strcmp(la->v.ldept, dptResAdmi) == 0)
{ {
candidat.ldept = inserer(candidat, dpt); la->v.ldept = insererDpt(la->v.ldept, la->v.ldept->v.departement);
} }
dpt = lireDpt(flot); ajouterDpt(la->v.ldept, lireDept(flot, la->v.ldept));
i++; i++;
} }
return candidat; return la->v;
} }
void afficherCandidats(Admission candidat) void afficherCandidats(ListeAdmission la)
{ {
int i; 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", candidat.num, candidat.nom, candidat.prenom, candidat.noteMaths, candidat.noteFrançais, candidat.noteAnglais, candidat.noteSpe, candidat.nbChoix, candidat.ville); 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 < candidat.nbChoix; i++) for(i = 0; i < la->v.nbChoix; i++)
{ {
afficherDpt(candidat.ldept->v); afficherDpt(la->v.ldept->v);
ldept = ldept->suiv; la->v.ldept = la->v.ldept->suiv;
} }
printf("\n"); printf("\n");
} }
@ -63,17 +62,17 @@ ListeAdmission chargerCandidats(char *ficAdmission, char dptResAdmi[30], ListeAd
printf("Erreur d'ouverture du fichier !\n"); printf("Erreur d'ouverture du fichier !\n");
exit(1); exit(1);
} }
la->v = lireCandidat(flot); insererAdm(la, lireCandidat(flot, la, dptResAdmi));
while(!feof(flot)) while(!feof(flot))
{ {
listeCandidats = insererCand(listeCandidats, candidat); la = insererCand(la, la->v);
candidat = lireCandidat(flot); la->v = lireCandidat(flot, la, dptResAdmi);
} }
fclose(flot); fclose(flot);
return listeCandidats; return la;
} }
void sauvegarderCandidats(ListeAdmission listeCandidats, char dptResAdmi[30]) void sauvegarderCandidats(ListeAdmission la, char dptResAdmi[30])
{ {
FILE *flot; FILE *flot;
flot=fopen("admissionInfo.txt", "w"); flot=fopen("admissionInfo.txt", "w");
@ -82,74 +81,71 @@ void sauvegarderCandidats(ListeAdmission listeCandidats, char dptResAdmi[30])
printf("Erreur d'ouverture du fichier !\n"); printf("Erreur d'ouverture du fichier !\n");
exit(1); exit(1);
} }
while(! videCand(listeCandidats)) while(! videAdm(la))
{ {
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); fprintf(flot, "%d\n%s\n%s\n%d\t%d\t%d\t%d\n%d\n%s\n", 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);
while(! videDpt(listeCandidats->v.ldept)) while(! videDpt(la->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); fprintf(flot, "%s\n%d\n%d\n", la->v.ldept->v.departement, la->v.ldept->v.decisionAdmission, la->v.ldept->v.decisionCandidat);
listeCandidats->v.ldept = listeCandidats->v.ldept->suiv; la->v.ldept = la->v.ldept->suiv;
} }
listeCandidats = listeCandidats->suiv; la = la->suiv;
} }
fclose(flot); fclose(flot);
} }
void afficherCandidatsAdmis(ListeAdmission listeCandidats) void afficherCandidatsAdmis(ListeAdmission la)
{ {
while(! videCand(listeCandidats)) while(! videCand(la->v.ldept))
{ {
if(listeCandidats->v.admis == 1) if(la->v.ldept->v.decisionAdmission == 1)
{ {
afficherCandidats(listeCandidats->v); afficherCandidats(la);
} }
listeCandidats = listeCandidats->suiv; la->v.ldept = la->v.ldept->suiv;
} }
} }
void afficherCandidatsNonAdmis(ListeAdmission listeCandidats) void afficherCandidatsNonAdmis(ListeAdmission la)
{ {
while(! videCand(listeCandidats)) while(! videCand(la->v.ldept))
{ {
if(listeCandidats->v.admis == 0) if(la->v.ldept->v.decisionAdmission == 0)
{ {
afficherCandidats(listeCandidats->v); afficherCandidats(la);
} }
listeCandidats = listeCandidats->suiv;
} }
} }
void afficherCandidatsAttente(ListeAdmission listeCandidats) void afficherCandidatsAttente(ListeAdmission la)
{ {
while(! videCand(listeCandidats)) while(! videCand(la->v.ldept))
{ {
if(listeCandidats->v.admis == 2) if(la->v.ldept->v.decisionAdmission == 2)
{ {
afficherCandidats(listeCandidats->v); afficherCandidats(la);
} }
listeCandidats = listeCandidats->suiv; la = la->suiv;
} }
} }
void afficherCandidatsDpt(ListeAdmission listeCandidats) void afficherCandidatsDpt(ListeAdmission la)
{ {
while(! videCand(listeCandidats)) while(! videAdm(la->v.ldept))
{ {
afficherCandidats(listeCandidats->v); afficherCandidats(la);
listeCandidats = listeCandidats->suiv; la = la->suiv;
} }
} }
ListeAdmission MoyenneCandidats(ListeAdmission listeCandidats) ListeAdmission MoyenneCandidats(ListeAdmission la)
{ {
ListeAdmission listeMoyenne = listeNouvCand(); while(! videAdm(la))
while(! videCand(listeCandidats))
{ {
listeCandidats->v.moyenne = (listeCandidats->v.noteMaths + listeCandidats->v.noteFrançais + listeCandidats->v.noteAnglais + listeCandidats->v.noteSpe) / 4; la->v.tabMatiere[4] = (la->v.tabMatiere[0] + la->v.tabMatiere[1] + la->v.tabMatiere[2] + la->v.tabMatiere[3]) / 4;
listeMoyenne = insererCand(listeMoyenne, listeCandidats->v); la = la->suiv;
listeCandidats = listeCandidats->suiv;
} }
return listeMoyenne; return la;
} }
// Comment definir la note sur 20 mise lors de l'etude du dossier ? // Comment definir la note sur 20 mise lors de l'etude du dossier ?
@ -225,4 +221,3 @@ int modifNbAdmisMax()
scanf("%d", &nbAdmisMax); scanf("%d", &nbAdmisMax);
return nbAdmisMax; return nbAdmisMax;
} }
*/

@ -1,5 +1,5 @@
#include "SAE.h" #include "SAE.h"
/*
// ListeAdmission // ListeAdmission
ListeAdmission listenouvAdm(void) ListeAdmission listenouvAdm(void)
@ -26,9 +26,9 @@ ListeAdmission insererEnTeteAdm(ListeAdmission la, Admission candidat)
ListeAdmission insererAdm(ListeAdmission la, Admission candidat) ListeAdmission insererAdm(ListeAdmission la, Admission candidat)
{ {
if(la == NULL) if(la == NULL)
return insererEnTeteAdm(f, candidat); return insererEnTeteAdm(la, candidat);
if(candidat.num < la->v.num) if(candidat.num < la->v.num)
return insererEnTeteAdm(f, candidat); return insererEnTeteAdm(la, candidat);
if(candidat.num > la->v.num) if(candidat.num > la->v.num)
return la; return la;
la->suiv = insererAdm(la->suiv, candidat); la->suiv = insererAdm(la->suiv, candidat);
@ -43,7 +43,7 @@ ListeAdmission supprimerEnTeteAdm(ListeAdmission la)
printf("Opérations interdites !!!!\n"); printf("Opérations interdites !!!!\n");
exit(1); exit(1);
} }
aux = la aux = la;
la = la->suiv; la = la->suiv;
free(aux); free(aux);
return la; return la;
@ -57,7 +57,7 @@ ListeAdmission supprimerAdm(ListeAdmission la, Admission candidat)
return la; return la;
if(candidat.num == la->v.num) if(candidat.num == la->v.num)
return supprimerEnTeteAdm(la); return supprimerEnTeteAdm(la);
la->suiv = supprimerAdm(la->suiv, candidat.num); la->suiv = supprimerAdm(la->suiv, la->v);
return la; return la;
} }
@ -70,17 +70,17 @@ bool rechercherAdm(ListeAdmission la, Admission candidat)
return false; return false;
if(candidat.num == la->v.num) if(candidat.num == la->v.num)
return true; return true;
return rechercherAdm(la->suiv, candidat.num); return rechercherAdm(la->suiv, la->v);
} }
int TeteAdm(ListeAdmission la) Admission TeteAdm(ListeAdmission la)
{ {
if(videAdm(la)) if(videAdm(la))
{ {
printf("Opérations interdites !!!!\n"); printf("Opérations interdites !!!!\n");
exit(1); exit(1);
} }
return la->v; /* Retourne un candidat return la->v; /* Retourne un candidat */
} }
bool videAdm(ListeAdmission la) bool videAdm(ListeAdmission la)
@ -92,7 +92,7 @@ void afficherAdm(ListeAdmission la)
{ {
while(!videAdm(la)) while(!videAdm(la))
{ {
afficherCandidatsAdm(Tete(la)); afficherCandidatsAdm(TeteAdm(la));
la = la->suiv; la = la->suiv;
} }
printf("\n"); printf("\n");
@ -101,7 +101,7 @@ void afficherAdm(ListeAdmission la)
int longueurAdm(ListeAdmission la) int longueurAdm(ListeAdmission la)
{ {
int cpt = 0; int cpt = 0;
while(!vide(la)) while(!videAdm(la))
{ {
cpt++; cpt++;
la = la->suiv; la = la->suiv;
@ -111,8 +111,8 @@ int longueurAdm(ListeAdmission la)
void afficherCandidatsAdm(Admission candidat) void afficherCandidatsAdm(Admission candidat)
{ {
printf("%d\t%s\t%s\t%d\t%d\t%d\t%d\t%d\t%s\t%s\t%d\t%d", candidat.num, candidat.nom, candidat.prenom, candidat.noteMaths, candidat.noteFrançais, candidat.noteAnglais, candidat.noteSpe, candidat.nbChoix, candidat.ville); printf("%d\t%s\t%s\t%d\t%d\t%d\t%d\t%d\t%s\t%s\t%d\t%d", candidat.num, candidat.nom, candidat.prenom, candidat.tabMatiere[0], candidat.tabMatiere[1], candidat.tabMatiere[2], candidat.tabMatiere[3], candidat.nbChoix, candidat.ville);
afficherDpt(candidat.ListeDepartement); afficherDpt(candidat.ldept);
} }
// ListeDepartement // ListeDepartement
@ -138,13 +138,13 @@ ListeDepartement insererEnTeteDpt(ListeDepartement ld, Departement dpt)
return p; return p;
} }
ListeDepartement insererDpt(ListeDepartement ld, Departement dpt) ListeDepartement insererDpt(ListeDepartement ld, char dpt)
{ {
if(ld == NULL) if(ld == NULL)
return insererEnTeteDpt(ld, dpt); return insererEnTeteDpt(ld, dpt);
if(strcmp(dpt.departement, ld->v.departement) < 0) if(strcmp(dpt, ld->v.departement) < 0)
return insererEnTeteDpt(ld, dpt); return insererEnTeteDpt(ld, dpt);
if(strcmp(dpt.departement, ld->v.departement) = 0) if(strcmp(dpt, ld->v.departement) = 0)
return ld; return ld;
ld->suiv = insererDpt(ld->suiv, dpt); ld->suiv = insererDpt(ld->suiv, dpt);
return ld; return ld;
@ -164,37 +164,37 @@ ListeDepartement supprimerEnTeteDpt(ListeDepartement ld)
return ld; return ld;
} }
ListeDepartement supprimerDpt(ListeDepartement ld, Departement dpt) ListeDepartement supprimerDpt(ListeDepartement ld, char dpt)
{ {
if(videDpt(ld)) if(videDpt(ld))
return ld; return ld;
if(strcmp(dpt.departement, ld->v.departement) < 0) if(strcmp(dpt, ld->v.departement) < 0)
return ld; return ld;
if(strcmp(dpt.departement, ld->v.departement) = 0) if(strcmp(dpt, ld->v.departement) = 0)
return supprimerEnTeteDpt(ld); return supprimerEnTeteDpt(ld);
ld->suiv = supprimerDpt(ld->suiv, dpt.departement); ld->suiv = supprimerDpt(ld->suiv, dpt);
return ld; return ld;
} }
bool rechercherDpt(ListeDepartement ld, Departement dpt) bool rechercherDpt(ListeDepartement ld, char dpt)
{ {
if(videDpt(ld)) if(videDpt(ld))
return false; return false;
if(strcmp(dpt.departement, ld->v.departement) < 0) if(strcmp(dpt, ld->v.departement) < 0)
return false; return false;
if(strcmp(dpt.departement, ld->v.departement) = 0) if(strcmp(dpt, ld->v.departement) = 0)
return true; return true;
return rechercherDpt(ld->suiv, dpt.departement); return rechercherDpt(ld->suiv, dpt);
} }
int TeteDpt(ListeDepartement ld) Departement TeteDpt(ListeDepartement ld)
{ {
if(videDpt(ld)) if(videDpt(ld))
{ {
printf("Opérations interdites !!!!\n"); printf("Opérations interdites !!!!\n");
exit(1); exit(1);
} }
return ld->v; /* Retourne un département return ld->v; /* Retourne un département */
} }
bool videDpt(ListeDepartement ld) bool videDpt(ListeDepartement ld)
@ -227,5 +227,3 @@ int longueurDpt(ListeDepartement ld)
} }
return cpt; return cpt;
} }
*/
Loading…
Cancel
Save