From a5be4a0ecb67fbaa7b512e9b9c7ada2bd77e37e8 Mon Sep 17 00:00:00 2001 From: DahmaneYanis Date: Fri, 13 Jan 2023 13:33:46 +0100 Subject: [PATCH] =?UTF-8?q?Fonction=20de=20chargement=20des=20IUT=20faite?= =?UTF-8?q?=20-=20Commentaire=20approximatif=20-=20Manque=20la=20prise=20e?= =?UTF-8?q?n=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