From 32285155ab3c1c8e0126ec18d1c3939c1a62045e Mon Sep 17 00:00:00 2001 From: loris OBRY Date: Fri, 13 Jan 2023 13:06:25 +0100 Subject: [PATCH 1/5] menu candidat --- header/sae.h | 3 ++ source/sae.c | 92 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 92 insertions(+), 3 deletions(-) diff --git a/header/sae.h b/header/sae.h index de7b7c7..7c665b9 100644 --- a/header/sae.h +++ b/header/sae.h @@ -109,6 +109,9 @@ int existeUtilisateur(char * utilisateur, int * indice, Log * tLog, int nbLog); int mdpValide(char * mdp, int indice, Log * tLog); //void menuVisiteur(VilleIut *villeIut, int nbVilles); void menuVisiteur(Log * tLog, int nbLog, VilleIut *tIut[], int nbVilles); +void menuCandidat(Log * tLog, int nbLog, VilleIut *tIut[], int nbVilles); +int choixMenuCandidat(void); +int afficherMenuCandidat(void); int afficherMenuVisiteur(void); int choixMenuVisiteur(void); void banniereConnection(void); diff --git a/source/sae.c b/source/sae.c index 44fe570..cc6bbb7 100644 --- a/source/sae.c +++ b/source/sae.c @@ -85,13 +85,13 @@ Log * chargementLog(char * nomFichier, int * nbLog) return tLog; } -/*void test(VilleIut * tIut[], int nbVilles) +void test(VilleIut * tIut[], int nbVilles) { for (int i = 0 ; i nom); } -}*/ +} /** * @brief Cette fonction affiche le menu des options disponibles pour un visiteur @@ -138,6 +138,91 @@ void menuVisiteur(Log * tLog, int nbLog, VilleIut *tIut[], int nbVilles) } } +/** + * @brief Cette fonction affiche le menu des options disponibles pour un candidat + * et demande à l'utilisateur de faire son choix en appelant la fonction + * choixMenuCandidat. Selon le choix de l'utilisateur, la fonction appelle la fonction correspondante + * ou met fin à l'exécution de la fonction. +*/ +void menuCandidat(Log * tLog, int nbLog, VilleIut *tIut[], int nbVilles) +{ + int choix; + int actif = 1; + + clean + + while(actif) + { + choix = choixMenuVisiteur(); + clean + switch(choix) + { + case 1: + //test(tIut, nbVilles); + afficheVillesIUT(tIut, nbVilles); + //printf("Affiche les Villes contenant des IUT (En attente d'une fonction de chargement fonctionnelle)\n"); + break; + case 2: + printf("Affiche le nombre de place dans un departement (En attente de Guillaume)\n"); + break; + case 3 : + printf("Affiche les departements d'un IUT donne (En attente de Loris)\n"); + break; + case 4 : + printf("Affiche les IUT possedant un departement donne (En attente de Jean)\n"); + break; + case 5 : + seConnecter(tLog, nbLog); + clean + break; + case 0 : + actif = 0; + break; + } + } +} + +/** + +@brief affiche le menu des candidats et renvoie le choix de l'utilisateur + +@return int : le choix de l'utilisateur +*/ +int choixMenuCandidat(void) +{ + int choix; + + choix = afficherMenuCandidat(); + while (choix < 0 || choix > 4) + { + clean + printf("\nChoix incorrect.\n\n"); + choix = afficherMenuCandidat(); + } + return choix; +} + +/** + +@brief affiche le menu pour les visiteurs et renvoie le choix de l'utilisateur + +@return int : le choix de l'utilisateur +*/ +int afficherMenuCandidat(void) +{ + int choix; + + printf("============================================================\n\t\t\tMENU CANDIDAT\n============================================================\n\n"); + printf("\t1. Creer une candidature\n"); + printf("\t2. Modifier une candidature\n"); + printf("\t3. Supprimer une candidature\n"); + printf("\t4. Gestion des candidatures\n"); + printf("\t0. Quitter\n"); + printf("\nChoix : "); + scanf("%d%*c", &choix); + return choix; +} + /** * @brief Affiche le menu des options disponibles pour un visiteur. * @@ -157,7 +242,8 @@ void menuVisiteur(Log * tLog, int nbLog, VilleIut *tIut[], int nbVilles) * * @return Le choix de l'utilisateur, sous forme d'un entier */ -int afficherMenuVisiteur(void) { +int afficherMenuVisiteur(void) +{ int choix; printf("============================================================\n\t\t\tMENU VISITEUR\n============================================================\n\n"); From b62783d50250309b1d8dadf1b81a62952584be28 Mon Sep 17 00:00:00 2001 From: loris OBRY Date: Fri, 13 Jan 2023 13:33:14 +0100 Subject: [PATCH 2/5] MenuCandidat --- source/sae.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/source/sae.c b/source/sae.c index cc6bbb7..5be2f77 100644 --- a/source/sae.c +++ b/source/sae.c @@ -153,23 +153,21 @@ void menuCandidat(Log * tLog, int nbLog, VilleIut *tIut[], int nbVilles) while(actif) { - choix = choixMenuVisiteur(); + choix = choixMenuCandidat(); clean switch(choix) { case 1: - //test(tIut, nbVilles); - afficheVillesIUT(tIut, nbVilles); - //printf("Affiche les Villes contenant des IUT (En attente d'une fonction de chargement fonctionnelle)\n"); + //afficher une candidature break; case 2: - printf("Affiche le nombre de place dans un departement (En attente de Guillaume)\n"); + //Creer une candidature break; case 3 : - printf("Affiche les departements d'un IUT donne (En attente de Loris)\n"); + //Modifier une candidature break; case 4 : - printf("Affiche les IUT possedant un departement donne (En attente de Jean)\n"); + //Supprimer une candidature break; case 5 : seConnecter(tLog, nbLog); @@ -512,7 +510,11 @@ int modifieChefDept(VilleIut *tVilleIut[], int nbVilles, char ville[], char nomD return 0; } - +void afficherDeptIutDonne(VilelIut **villeIut, int nbVille) +{ + afficheVillesIUT(); + printf() +} /** * @brief Affiche les IUT possédant un département spécifique. From 9daa5b84410b33923973b3c70c0875b03f6f4e16 Mon Sep 17 00:00:00 2001 From: loris OBRY Date: Fri, 13 Jan 2023 13:33:28 +0100 Subject: [PATCH 3/5] MenuCandidat --- source/sae.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/source/sae.c b/source/sae.c index 5be2f77..68a7d7c 100644 --- a/source/sae.c +++ b/source/sae.c @@ -169,10 +169,6 @@ void menuCandidat(Log * tLog, int nbLog, VilleIut *tIut[], int nbVilles) case 4 : //Supprimer une candidature break; - case 5 : - seConnecter(tLog, nbLog); - clean - break; case 0 : actif = 0; break; From a5be4a0ecb67fbaa7b512e9b9c7ada2bd77e37e8 Mon Sep 17 00:00:00 2001 From: DahmaneYanis Date: Fri, 13 Jan 2023 13:33:46 +0100 Subject: [PATCH 4/5] =?UTF-8?q?Fonction=20de=20chargement=20des=20IUT=20fa?= =?UTF-8?q?ite=20-=20Commentaire=20approximatif=20-=20Manque=20la=20prise?= =?UTF-8?q?=20en=20charge=20des=20m=C3=AAmes=20IUT?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- donnees/iut.don | 2 +- header/sae.h | 20 +++- source/chargEtSauvFich.c | 197 ++++++++++++++++++++++++++++++++++++++- source/main.c | 3 +- source/sae.c | 19 +--- 5 files changed, 215 insertions(+), 26 deletions(-) diff --git a/donnees/iut.don b/donnees/iut.don index a39f02c..b435ca0 100644 --- a/donnees/iut.don +++ b/donnees/iut.don @@ -3,4 +3,4 @@ Clermont-Ferrand Informatique 136 Simon Carine Aurillac Bio-Informatique 56 Durand Alex Clermont-Ferrand Biologie 120 Perrier Yanick Millau mathematiques 100 Fauchon Sophie - +Paris Informatique 55 Dahmane Yanis diff --git a/header/sae.h b/header/sae.h index de7b7c7..75e02b6 100644 --- a/header/sae.h +++ b/header/sae.h @@ -148,8 +148,18 @@ void afficherListe(ListeDept ldept); // chargEtSauvFich.c -int chargIutDon(VilleIut *tVilleIut[], int nbMax, char nomFich[]); -void lireDep(FILE *flot, char nomDept[], int *nbP, char resp[]); -int appartientIut(VilleIut *tVilleIut[], int nb, char nom[], int *trouve); -void sauvegarderFichierIutDon(VilleIut *tVilleIut[], int nbVille, char nomFich[]); - +//int chargIutDon(VilleIut *tVilleIut[], int nbMax, char nomFich[]); +//void lireDep(FILE *flot, char nomDept[], int *nbP, char resp[]); +//int appartientIut(VilleIut *tVilleIut[], int nb, char nom[], int *trouve); +//void sauvegarderFichierIutDon(VilleIut *tVilleIut[], int nbVille, char nomFich[]); + +void testCharge(void); +void lectureDep(ListeDept ldept, FILE * fichier); +ListeDept initialiseDep(void); +ListeDept lireDep(FILE * fichier); +void lectureIut(VilleIut * iut, FILE * fichier); +VilleIut * initialiseIut(void); +VilleIut * lireIut (FILE * fichier); +VilleIut ** chargeIutDon(char nomFichier[], int * nbIut, int * nbMax); +VilleIut ** initialiseTabIut(void); +void tailleSupTabIut(VilleIut ** tIut, int *nbMax); \ No newline at end of file diff --git a/source/chargEtSauvFich.c b/source/chargEtSauvFich.c index 4c3c15e..ac7ff34 100644 --- a/source/chargEtSauvFich.c +++ b/source/chargEtSauvFich.c @@ -1,6 +1,193 @@ #include "../header/sae.h" -int chargIutDon(VilleIut *tVilleIut[], int nbMax, char nomFich[]) +/** + * @brief charge les données d'un fichier dans un tableau de struct VilleIut + * @param nomFichier nom du fichier contenant les données + * @param nbIut pointeur vers un entier qui contiendra le nombre d'IUT lus + * @param nbMax pointeur vers un entier qui contiendra la taille maximale du tableau + * @return le tableau de struct VilleIut rempli avec les données du fichier + */ +VilleIut ** chargeIutDon(char nomFichier[], int * nbIut, int * nbMax) +{ + FILE * fichier; + VilleIut ** tIut; + int i = 0; + + fichier = fopen(nomFichier, "r"); + + if (fichier == NULL) + { + printf("Error: Ouverture du fichier %s impossible\n", nomFichier); + exit(1); + } + + // Si tout s'est bien passé dans l'ouverture de fichier + + tIut = initialiseTabIut(); + + *nbMax = 5; + + i = 0; + while (!feof(fichier)) + { + // Taille max atteinte ? + if (i+1 == *nbMax) + { + tailleSupTabIut(tIut, nbMax); // Augmentation de la taille avec un realloc + } + + tIut[i] = lireIut(fichier); // Lecture d'un IUT + + i++; + } + + *nbIut = i-1; + return tIut; +} + +/** + * @brief initialise un tableau de struct VilleIut + * @return le tableau initialisé + */ +VilleIut ** initialiseTabIut(void) +{ + VilleIut ** tIut = (VilleIut **) malloc(sizeof(VilleIut *)*5); + + if (tIut == NULL) + { + printf("Error: Probleme d'allocation dynamique du tableau\n"); + exit(1); + } + + return tIut; +} + +/** + * @brief augmente la taille d'un tableau de struct VilleIut + * @param tIut le tableau à augmenter + * @param nbMax pointeur vers un entier qui contiendra la nouvelle taille maximale du tableau + */ +void tailleSupTabIut(VilleIut ** tIut, int *nbMax) +{ + VilleIut **aux; + + *nbMax+=5; + aux = (VilleIut **) realloc(tIut, *nbMax); + if (aux == NULL) + { + printf("Error : Probleme de realloc\n"); + exit(1); + } + + tIut = aux; +} + +/** + * @brief lit les données d'un IUT dans un fichier et les stocke dans un struct VilleIut + * @param fichier pointeur vers le fichier contenant les données de l'IUT + * @return un struct VilleIut rempli avec les données lues + */ +VilleIut * lireIut (FILE * fichier) +{ + VilleIut * iut; + + iut = initialiseIut(); + + lectureIut(iut, fichier); + + return iut; +} + +/** + * @brief Initialise un struct VilleIut + * @return le struct VilleIut initialisé + */ +VilleIut * initialiseIut(void) +{ + VilleIut * iut; + + iut = (VilleIut *)malloc(sizeof(VilleIut)); + if (iut == NULL) + { + printf("Error : Probleme d'allocation dynamique de l'IUT\n"); + exit(1); + } + + return iut; +} + +/** + * @brief lit les données d'un IUT dans un fichier et les stocke dans un struct VilleIut + * @param iut pointeur vers le struct VilleIut où stocker les données + * @param fichier pointeur vers le fichier contenant les données de l'IUT + */ +void lectureIut(VilleIut * iut, FILE * fichier) +{ + fscanf(fichier, "%s", iut->nom); + + iut->lDept = lireDep(fichier); +} + +/** + * @brief lit les données d'un département dans un fichier et les stocke dans une liste chaînée + * @param fichier pointeur vers le fichier contenant les données du département + * @return une liste chaînée contenant les données du département + */ +ListeDept lireDep(FILE * fichier) +{ + ListeDept ldept; + + ldept = initialiseDep(); + + lectureDep(ldept, fichier); +} + +/** + * @brief Initialise une liste chaînée de départements + * @return la liste chaînée initialisée + */ +ListeDept initialiseDep(void) +{ + ListeDept ldept = (MaillonDept *) malloc(sizeof(MaillonDept)); + if (ldept == NULL) + { + printf("Erreur : Erreur de malloc ldept\n"); + exit(1); + } + + return ldept; +} + +/** + * @brief lit les données d'un département dans un fichier et les stocke dans une liste chaînée + * @param ldept pointeur vers la liste chaînée où stocker les données + * @param fichier pointeur vers le fichier contenant les données du département + */ +void lectureDep(ListeDept ldept, FILE * fichier) +{ + // Lecture des données du département + fscanf(fichier, "%s %d ", ldept->nomDept, &ldept->nbP); + fgets(ldept->resp, 30, fichier); + ldept->resp[strlen(ldept->resp)-1] = '\0'; +} + +/** + * @brief teste la fonction chargeIutDon + */ +void testCharge(void) +{ + int nbIut, nbMax; + VilleIut ** tIut = chargeIutDon("../donnees/iut.don", &nbIut, &nbMax); + + for (int i = 0; i < nbIut; i++) + { + printf("[ %s | %s | %d | %s ]\n", tIut[i]->nom, tIut[i]->lDept->nomDept, tIut[i]->lDept->nbP, tIut[i]->lDept->resp); + } +} + + + +/*int chargIutDon(VilleIut *tVilleIut[], int nbMax, char nomFich[]) { FILE *flot; int i=0, nbP, trouve, indice; @@ -98,4 +285,10 @@ void sauvegarderFichierIutDon(VilleIut *tVilleIut[], int nbVille, char nomFich[] i = i + 1; } fclose(flot); -} \ No newline at end of file +} + +*/ + +/* + +*/ \ No newline at end of file diff --git a/source/main.c b/source/main.c index 3b65606..70adc37 100644 --- a/source/main.c +++ b/source/main.c @@ -9,7 +9,8 @@ int main(void) // color // #endif - Globale(); + testCharge(); + //Globale(); //testJean(); return 0; diff --git a/source/sae.c b/source/sae.c index 35c5866..e4a79e2 100644 --- a/source/sae.c +++ b/source/sae.c @@ -23,7 +23,7 @@ void Globale(void) //Chargement des fichiers tLog = chargementLog("../donnees/log.don", &nbLog); - nbVilles = chargIutDon(tIut, 50, "../donnees/iut.don"); + //nbVilles = chargIutDon(tIut, 50, "../donnees/iut.don"); //Appel du menu visiteur menuVisiteur(tLog, nbLog, tIut, nbVilles); @@ -426,8 +426,6 @@ int modifieChefDept(VilleIut *tVilleIut[], int nbVilles, char ville[], char nomD return 0; } - - /** * @brief Affiche les IUT possédant un département spécifique. * @@ -482,7 +480,6 @@ void afficheVillesIUT(VilleIut **villeIut, int nbVilles) } } - /** * @brief Affiche les IUT et le nombre de places associé pour un département donné * @@ -511,8 +508,6 @@ void afficheNbPlacesDep(VilleIut *tVilleIut[], int nbVilles, char nomDept[]) } - - /** * Affiche et gère le menu administrateur. * @@ -577,11 +572,6 @@ void menuAdmin(VilleIut **villeIut, int nbVilles) } while (choix != 7); } - - - - - /* ================================================ Partie 2 @@ -624,7 +614,6 @@ void afficherCandidats(Candidat *candidats, int nbCandidats) } } - // =============================================================================== // PARTIE 3 //=============================================================================== @@ -684,8 +673,6 @@ ListeDeptV2 configurationDeptV2( ListeDept ldept ) return lDeptV2; } - - // ============================================================================== // Partie 4 // ============================================================================== @@ -786,6 +773,4 @@ ListeCandidats insertionTeteCand( ListeCandidats nvL, ListeCandidats l ) free( l ); return nvL; -} - - +} \ No newline at end of file From 55cbda105ee723e531862079f1750e2849b332e3 Mon Sep 17 00:00:00 2001 From: DahmaneYanis Date: Fri, 13 Jan 2023 13:59:39 +0100 Subject: [PATCH 5/5] Commentaire chargeIutDon --- source/chargEtSauvFich.c | 10 +++++----- source/sae.c | 17 ++++++++++------- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/source/chargEtSauvFich.c b/source/chargEtSauvFich.c index ac7ff34..3a46d4e 100644 --- a/source/chargEtSauvFich.c +++ b/source/chargEtSauvFich.c @@ -1,11 +1,11 @@ #include "../header/sae.h" /** - * @brief charge les données d'un fichier dans un tableau de struct VilleIut - * @param nomFichier nom du fichier contenant les données - * @param nbIut pointeur vers un entier qui contiendra le nombre d'IUT lus - * @param nbMax pointeur vers un entier qui contiendra la taille maximale du tableau - * @return le tableau de struct VilleIut rempli avec les données du fichier + * @brief Charge les données d'un fichier dans un tableau de pointeur de VilleIut + * @param nomFichier [CHAINE DE CARACTERES] Nom du fichier contenant les données + * @param nbIut [POINTEUR - Taille Logique] Nombre d'IUT + * @param nbMax [POINTEUR - Taille Physique Dynamique] + * @return Tableau de pointeur de VilleIut rempli avec les données du fichier */ VilleIut ** chargeIutDon(char nomFichier[], int * nbIut, int * nbMax) { diff --git a/source/sae.c b/source/sae.c index 0f75301..8c1968b 100644 --- a/source/sae.c +++ b/source/sae.c @@ -594,7 +594,6 @@ void afficheNbPlacesDep(VilleIut *tVilleIut[], int nbVilles, char nomDept[]) dept = dept->suiv; } } - } /** @@ -703,9 +702,11 @@ void afficherCandidats(Candidat *candidats, int nbCandidats) } } -// =============================================================================== -// PARTIE 3 -//=============================================================================== +/* +================================================ + Partie 3 +================================================ +*/ /** * \brief Permet de convertir la liste de departement des VilleIut de la partie 1 @@ -762,9 +763,11 @@ ListeDeptV2 configurationDeptV2( ListeDept ldept ) return lDeptV2; } -// ============================================================================== -// Partie 4 -// ============================================================================== +/* +================================================ + Partie 4 +================================================ +*/ /** * @brief Affiche une liste de candidats après l'avoir triée par ordre alphabétique