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 5a6c174..945b049 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); @@ -149,8 +152,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..3a46d4e 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 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) +{ + 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 b1d85bd..62c01a6 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); @@ -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,85 @@ 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 = choixMenuCandidat(); + clean + switch(choix) + { + case 1: + //afficher une candidature + break; + case 2: + //Creer une candidature + break; + case 3 : + //Modifier une candidature + break; + case 4 : + //Supprimer une candidature + 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 +236,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"); @@ -426,7 +506,11 @@ int modifieChefDept(VilleIut *tVilleIut[], int nbVilles, char ville[], char nomD return 0; } - +/*void afficherDeptIutDonne(VilleIut **villeIut, int nbVille) +{ + afficheVillesIUT(); + printf() +}*/ /** * @brief Affiche les IUT possédant un département spécifique. @@ -485,7 +569,6 @@ void afficheVillesIUT(VilleIut **villeIut, int nbVilles) printf(" \n\n\n"); } - /** * @brief Affiche les IUT et le nombre de places associé pour un département donné * @@ -511,21 +594,8 @@ void afficheNbPlacesDep(VilleIut *tVilleIut[], int nbVilles, char nomDept[]) dept = dept->suiv; } } - } -int existeVille( VilleIut * tIut[], char ville[], int nbvilles ) -{ - int i = 0; - // Recherche de la ville - - for ( i = 0; i < nbvilles, i ++ ) - { - if ( strcmp( tIut[i] -> nom, ville ) == 0 ) return i; - } - - return -1; -} /** * Affiche et gère le menu administrateur. @@ -592,6 +662,10 @@ void menuAdmin(VilleIut **villeIut, int nbVilles) } + + + + /* ================================================ Partie 2 @@ -634,10 +708,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 @@ -694,11 +769,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 @@ -796,6 +871,4 @@ ListeCandidats insertionTeteCand( ListeCandidats nvL, ListeCandidats l ) free( l ); return nvL; -} - - +} \ No newline at end of file