diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..1e6db57 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "files.autoSaveDelay": 1000, + "files.autoSave": "afterDelay" +} \ No newline at end of file diff --git a/SAE.h b/SAE.h index bed6c22..b464700 100755 --- a/SAE.h +++ b/SAE.h @@ -45,6 +45,33 @@ void modificationRespDept(VilleIUT *tiut[], int nb); // Partie 3 +// Liste Admission +ListeAdmission listenouvAdm(void); +ListeAdmission insererEnTeteAdm(ListeAdmission la, Admission candidat); +ListeAdmission insererAdm(ListeAdmission la, Admission candidat); +void afficherAdm(ListeAdmission la); +bool videAdm(ListeAdmission la); +ListeAdmission supprimerEnTeteAdm(ListeAdmission la); +ListeAdmission supprimerAdm(ListeAdmission la, Admission candidat); +bool rechercheAdm(ListeAdmission la, Admission candidat); +int TeteAdm(ListeAdmission la); +int longueurAdm(ListeAdmission la); +void afficherCandidatsAdm(Admission candidat); + +// Liste Departement +ListeDepartement listenouvDpt(void); +ListeDepartement insererEnTeteDpt(ListeDepartement ld, Departement dpt); +ListeDepartement insererDpt(ListeDepartement ld, Departement dpt); +ListeDepartement supprimerEnTeteDpt(ListeDepartement ld); +ListeDepartement supprimerDpt(ListeDepartement ld, Departement dpt); +bool rechercheDpt(ListeDepartement ld, Departement dpt); +int TeteDpt(ListeDepartement ld); +bool videDpt(ListeDepartement ld); +void afficherDpt(ListeDepartement ld); +void afficherDepartement(Departement dpt); +int longueurDpt(ListeDepartement ld); + +/* Departement lireDpt(FILE *flot); void afficherDpt(Departement dpt); Admission lireCandidat(FILE *flot); @@ -60,7 +87,7 @@ int modifNoteMinAdmis(); int modifNbAdmisMax(); // Authentification -/* + int ConnexionUtilisateur(char *login, char *mdp); ListeUtilisateurs chargerUtilisateurs(char *ficUtilisateurs, ListeUtilisateurs Utilisateurs); Utilisateur lireUtilisateur(FILE *flot); diff --git a/exe b/exe new file mode 100755 index 0000000..23a11fb Binary files /dev/null and b/exe differ diff --git a/partie_3.c b/partie_3.c index b5ef606..c2663d2 100755 --- a/partie_3.c +++ b/partie_3.c @@ -1,9 +1,10 @@ #include "SAE.h" - -Departement lireDpt(FILE *flot) +/* +Departement lireDpt(FILE *flot, Admission ListeDepartement) { Departement dpt; fscanf(flot, "%s\n%d\n%d\n", dpt.departement, &dpt.decisionAdmission, &dpt.decisionCandidat); + return dpt; } void afficherDpt(Departement dpt) @@ -11,12 +12,10 @@ void afficherDpt(Departement dpt) printf("\t%s\t%d\t%d", dpt.departement, dpt.decisionAdmission, dpt.decisionCandidat); } -Admission lireCandidat(FILE *flot) +Admission lireCandidat(FILE *flot, ListeAdmission la) { - Admission candidat; - Departement dpt; int i = 0; - fscanf(flot, "%d\n", &candidat.num); + fscanf(flot, "%d\n", &la->candidat.num); fgets(candidat.nom, 22, flot); candidat.nom[strlen(candidat.nom) - 1] = '\0'; fgets(candidat.prenom, 22, flot); @@ -32,7 +31,7 @@ Admission lireCandidat(FILE *flot) { if(strcmp(dpt.departement, dptResAdmi) == 0) { - candidat.ldept = insererDpt(candidat, dpt); + candidat.ldept = inserer(candidat, dpt); } dpt = lireDpt(flot); i++; @@ -54,18 +53,17 @@ void afficherCandidats(Admission candidat) // Regarder si le nombre de choix est = à 0 Que se passe-t-il ? -ListeAdmission chargerCandidats(char *ficAdmission, char dptResAdmi[30]) +ListeAdmission chargerCandidats(char *ficAdmission, char dptResAdmi[30], ListeAdmission la) { - ListeAdmission listeCandidats = listeNouvCand(); - Admission candidat; FILE *flot; + listenouv(); flot=fopen(ficAdmission, "r"); if(flot == NULL) { printf("Erreur d'ouverture du fichier !\n"); exit(1); } - candidat = lireCandidat(flot); + la->v = lireCandidat(flot); while(!feof(flot)) { listeCandidats = insererCand(listeCandidats, candidat); @@ -227,8 +225,4 @@ int modifNbAdmisMax() scanf("%d", &nbAdmisMax); return nbAdmisMax; } - - - - - +*/ \ No newline at end of file diff --git a/structures.c b/structures.c index 82f27cf..29b299d 100755 --- a/structures.c +++ b/structures.c @@ -1,13 +1,15 @@ #include "SAE.h" +/* +// ListeAdmission -ListeAdmission listenouv(void) +ListeAdmission listenouvAdm(void) { - ListeAdmission f; - f = NULL; - return f; + ListeAdmission la; + la = NULL; + return la; } -ListeAdmission adjq(ListeAdmission f, Admission candidat) +ListeAdmission insererEnTeteAdm(ListeAdmission la, Admission candidat) { MaillonAdmission *p; p = (MaillonAdmission *)malloc(sizeof(MaillonAdmission)); @@ -17,80 +19,213 @@ ListeAdmission adjq(ListeAdmission f, Admission candidat) exit(1); } p->v = candidat; - if(vide(f)) - { - p->suiv = p; - return p; - } - p->suiv = f->suiv; - f->suiv = p; + p->suiv = la; return p; } -ListeAdmission supt(ListeAdmission f) +ListeAdmission insererAdm(ListeAdmission la, Admission candidat) +{ + if(la == NULL) + return insererEnTeteAdm(f, candidat); + if(candidat.num < la->v.num) + return insererEnTeteAdm(f, candidat); + if(candidat.num > la->v.num) + return la; + la->suiv = insererAdm(la->suiv, candidat); + return la; +} + +ListeAdmission supprimerEnTeteAdm(ListeAdmission la) { MaillonAdmission *aux; - if(vide(f)) + if(videAdm(la)) { printf("Opérations interdites !!!!\n"); exit(1); } - if(f->suiv == f) - { - free(f); - return Listenouv(); - } - aux = f->suiv; - f->suiv = aux->suiv; + aux = la + la = la->suiv; free(aux); - return f; + return la; +} + +ListeAdmission supprimerAdm(ListeAdmission la, Admission candidat) +{ + if(videAdm(la)) + return la; + if(candidat.num < la->v.num) + return la; + if(candidat.num == la->v.num) + return supprimerEnTeteAdm(la); + la->suiv = supprimerAdm(la->suiv, candidat.num); + return la; } -bool vide(ListeAdmission f) + +bool rechercherAdm(ListeAdmission la, Admission candidat) { - return f == NULL; + if(videAdm(la)) + return false; + if(candidat.num < la->v.num) + return false; + if(candidat.num == la->v.num) + return true; + return rechercherAdm(la->suiv, candidat.num); } -Admission tete(ListeAdmission f) +int TeteAdm(ListeAdmission la) { - if(vide(f)) + if(videAdm(la)) { printf("Opérations interdites !!!!\n"); exit(1); } - return f->suiv->v; + return la->v; /* Retourne un candidat } -int longueur(ListeAdmission f) +bool videAdm(ListeAdmission la) { - int cpt = 1; - MaillonAdmission *aux; - if(vide(f)) + return la == NULL; +} + +void afficherAdm(ListeAdmission la) +{ + while(!videAdm(la)) { - return 0; + afficherCandidatsAdm(Tete(la)); + la = la->suiv; } - aux = f->suiv; - while(aux != f) + printf("\n"); +} + +int longueurAdm(ListeAdmission la) +{ + int cpt = 0; + while(!vide(la)) { cpt++; - aux = aux->suiv; + la = la->suiv; } return cpt; } -void afficher(ListeAdmission f) +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); + afficherDpt(candidat.ListeDepartement); +} + +// ListeDepartement + +ListeDepartement listenouvDpt(void) +{ + ListeDepartement ld; + ld = NULL; + return ld; +} + +ListeDepartement insererEnTeteDpt(ListeDepartement ld, Departement dpt) +{ + MaillonDepartement *p; + p = (MaillonDepartement *)malloc(sizeof(MaillonDepartement)); + if(p == NULL) + { + printf("Opérations interdites !!!!\n"); + exit(1); + } + p->v = dpt; + p->suiv = ld; + return p; +} + +ListeDepartement insererDpt(ListeDepartement ld, Departement dpt) { - MaillonAdmission *p=f; - if(vide(f)) + if(ld == NULL) + return insererEnTeteDpt(ld, dpt); + if(strcmp(dpt.departement, ld->v.departement) < 0) + return insererEnTeteDpt(ld, dpt); + if(strcmp(dpt.departement, ld->v.departement) = 0) + return ld; + ld->suiv = insererDpt(ld->suiv, dpt); + return ld; +} + +ListeDepartement supprimerEnTeteDpt(ListeDepartement ld) +{ + MaillonDepartement *aux; + if(videDpt(ld)) { printf("Opérations interdites !!!!\n"); exit(1); } - afficherCandidats(f->v); - while(f->suiv != p) + aux = ld; + ld = ld->suiv; + free(aux); + return ld; +} + +ListeDepartement supprimerDpt(ListeDepartement ld, Departement dpt) +{ + if(videDpt(ld)) + return ld; + if(strcmp(dpt.departement, ld->v.departement) < 0) + return ld; + if(strcmp(dpt.departement, ld->v.departement) = 0) + return supprimerEnTeteDpt(ld); + ld->suiv = supprimerDpt(ld->suiv, dpt.departement); + return ld; +} + +bool rechercherDpt(ListeDepartement ld, Departement dpt) +{ + if(videDpt(ld)) + return false; + if(strcmp(dpt.departement, ld->v.departement) < 0) + return false; + if(strcmp(dpt.departement, ld->v.departement) = 0) + return true; + return rechercherDpt(ld->suiv, dpt.departement); +} + +int TeteDpt(ListeDepartement ld) +{ + if(videDpt(ld)) { - f = f->suiv; - afficherCandidats(f->v); + printf("Opérations interdites !!!!\n"); + exit(1); + } + return ld->v; /* Retourne un département +} + +bool videDpt(ListeDepartement ld) +{ + return ld == NULL; +} + +void afficherDpt(ListeDepartement ld) +{ + while(!videDpt(ld)) + { + afficherDepartement(TeteDpt(ld)); + ld = ld->suiv; } printf("\n"); -} \ No newline at end of file +} + +void afficherDepartement(Departement dpt) +{ + printf("%s\t%d\t%d\t", dpt.departement, dpt.decisionAdmission, dpt.decisionCandidat); +} + +int longueurDpt(ListeDepartement ld) +{ + int cpt = 0; + while(!videDpt(ld)) + { + cpt++; + ld = ld->suiv; + } + return cpt; +} + +*/ \ No newline at end of file