Siwa12100 2 years ago
commit 81ae4d6c8b

@ -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

@ -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);

@ -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);
}
}
*/
/*
*/

@ -9,7 +9,8 @@ int main(void)
// color
// #endif
Globale();
testCharge();
//Globale();
//testJean();
return 0;

@ -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 <nbVilles ; i++)
{
printf("%s\n", tIut[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;
}
}
Loading…
Cancel
Save