diff --git a/Partie_1/menus.c b/Partie_1/menus.c new file mode 100644 index 0000000..da36434 --- /dev/null +++ b/Partie_1/menus.c @@ -0,0 +1,130 @@ +#include "partie1.h" + +void choixMenu(void) +{ + int choix; + bool c = false; + while (c == false) + { + system("clear"); + printf("Veuillez choisir votre menu :\n"); + printf("\t1 - Menu utilisateur\n"); + printf("\t2 - Menu administrateur\n"); + printf("\t9 - Quitter\n"); + printf("\nChoix : "); + scanf("%d", &choix); + switch (choix) + { + case 1: + c = true; + menuUtilisateur(); + break; + case 2: + c = true; + menuAdministrateur(); + break; + case 9: + c = true; + break; + default: + printf("Option non reconnue. Veuillez recommencer.\n"); + break; + } + } +} + +void menuUtilisateur(void) +{ + int choix; + bool c = false; + while (c == false) + { + system("clear"); + printf("Menu d'utilisateur : Que voulez-vous faire ?\n"); + printf("\t1 - Voir les villes possédant un IUT\n"); + printf("\t2 - Voir les départements dans chaque IUT\n"); + printf("\t3 - Voir le nombre de places en première année\n"); + printf("\t4 - Voir les IUT possédant un département particulier\n"); + printf("\t9 - Quitter\n"); + printf("\nChoix : "); + scanf("%d", &choix); + switch (choix) + { + case 1: + c = true; + // affichageVillesIUT(VilleIUT *tiut[], int nb); + break; + case 2: + c = true; + // affichageDeptIUT(VilleIUT *tiut[], int nb); + break; + case 3: + c = true; + // + break; + case 4: + c = true; + // + break; + case 9: + c = true; + return choixMenu(); + default: + printf("Option non reconnue. Veuillez recommencer.\n"); + break; + } + } +} + +void menuAdministrateur(void) +{ + int choix; + bool c = false; + while (c == false) + { + system("clear"); + printf("Menu d'administrateur : Que voulez-vous faire ?\n"); + printf("\t1 - Modifier le nombre de places dans un département\n"); + printf("\t2 - Créer un département dans un IUT\n"); + printf("\t3 - Supprimer un département d'un IUT\n"); + printf("\t4 - Lancer la phase de candidature\n"); + printf("\t5 - Stopper la phase de candidature\n"); + printf("\t6 - Modifier le responsable d'un département\n"); + printf("\t9 - Quitter\n"); + printf("\nChoix : "); + scanf("%d", &choix); + switch (choix) + { + case 1: + c = true; + // + break; + case 2: + c = true; + // + break; + case 3: + c = true; + // + break; + case 4: + c = true; + // + break; + case 5: + c = true; + // + break; + case 6: + c = true; + // + break; + case 9: + return choixMenu(); + break; + default: + printf("Option non reconnue. Veuillez recommencer.\n"); + break; + } + } +} \ No newline at end of file diff --git a/Partie_1/menus.h b/Partie_1/menus.h new file mode 100644 index 0000000..e9f222e --- /dev/null +++ b/Partie_1/menus.h @@ -0,0 +1,5 @@ +#include + +void choixMenu(void); +void menuUtilisateur(void); +void menuAdministrateur(void); \ No newline at end of file diff --git a/Partie_1/partie1.c b/Partie_1/partie1.c index a7b1ac7..02933bf 100755 --- a/Partie_1/partie1.c +++ b/Partie_1/partie1.c @@ -14,8 +14,8 @@ ListeDept chargeListeDept(VilleIUT *tiut[]) int chargementVillesIUT(VilleIUT *tiut[]) { FILE *file = fopen("informationsIUT.txt", "r"); - char ville[30], dept[30], nomResp[30]; - int nbP, i = 0, trouve; + char ville[30], dept[30], resp[30]; + int nbP, i = 0, trouve, insertPos; if (file == NULL) { printf("Fonction chargementVillesIUT : Problème lors de l'ouverture du fichier informationsIUT.txt"); @@ -25,8 +25,9 @@ int chargementVillesIUT(VilleIUT *tiut[]) while (!feof(file)) { fscanf(file, "%s%s%d", ville, dept, &nbP); - fgets(nomResp, 30, file); - trouve = recherche(tiut, i, ville); + fgets(resp, 30, file); + insertPos = recherche(tiut, i, ville, &trouve); + if (trouve == 0) { tiut[i] = (VilleIUT *)malloc(sizeof(VilleIUT)); @@ -35,32 +36,52 @@ int chargementVillesIUT(VilleIUT *tiut[]) printf("Fonction chargementVillesIUT : Problème lors du malloc"); exit(-1); } - strcpy(tiut[i]->ville, ville); + + tiut[i]->ldept = listenouv(); + tiut[i]->ldept = inserer(tiut[i]->ldept, dept, nbP, resp); i++; } + else + { + tiut[insertPos]->ldept = inserer(tiut[insertPos]->ldept, dept, nbP, resp); + } } fclose(file); return i; } -int recherche(VilleIUT *tiut[], int nb, char val[]) +int recherche(VilleIUT *tiut[], int nb, char val[], int *trouve) { - for (int i = 0; i < nb; i++) + int i; + for (i = 0; i < nb; i++) { if (strcmp(tiut[i]->ville, val) == 0) { - return 1; + *trouve = 1; + return i; } } - return 0; + *trouve = 0; + return i; } -void affichage(VilleIUT *tiut[], int nb) +void affichageVillesIUT(VilleIUT *tiut[], int nb) { + printf("Voici les villes qui ont un IUT :\n"); for (int i = 0; i < nb; i++) { - printf("%s\n", tiut[i]->ville); + printf("\t%s\n", tiut[i]->ville); } } + +void affichageDeptIUT(VilleIUT *tiut[], int nb) +{ + printf("Voici les départements présents dans chaque IUT :\n"); + for (int i = 0; i < nb; i++) + { + printf("\t%s :\n", tiut[i]->ville); + afficherDept(tiut[i]->ldept); + } +} \ No newline at end of file diff --git a/Partie_1/partie1.h b/Partie_1/partie1.h index fc932c7..4b5fd78 100755 --- a/Partie_1/partie1.h +++ b/Partie_1/partie1.h @@ -2,8 +2,12 @@ #include #include #include "structures.h" +#include "menus.h" /* Fichier */ int chargementVillesIUT(VilleIUT *tiut[]); -void affichage(VilleIUT *tiut[], int nb); -int recherche(VilleIUT *tiut[], int nb, char val[]); \ No newline at end of file +int recherche(VilleIUT *tiut[], int nb, char val[], int *trouve); + + +void affichageVillesIUT(VilleIUT *tiut[], int nb); +void affichageDeptIUT(VilleIUT *tiut[], int nb); \ No newline at end of file diff --git a/Partie_1/structures.c b/Partie_1/structures.c index 1278007..263eb31 100644 --- a/Partie_1/structures.c +++ b/Partie_1/structures.c @@ -2,10 +2,12 @@ ListeDept listenouv(void) { - return NULL; + ListeDept l; + l = NULL; + return l; } -ListeDept insererEnTete(ListeDept l, char departement[], int nbP) +ListeDept insererEnTete(ListeDept l, char departement[], int nbP, char resp[]) { MaillonDept *m; m = (MaillonDept *)malloc(sizeof(MaillonDept)); @@ -16,6 +18,52 @@ ListeDept insererEnTete(ListeDept l, char departement[], int nbP) } strcpy(m->departement, departement); m->nbP = nbP; + strcpy(m->resp, resp); m->suiv = l; + return m; +} + +ListeDept inserer(ListeDept l, char departement[], int nbP, char resp[]) +{ + if (l == NULL) + { + return insererEnTete(l, departement, nbP, resp); + } + if (strcmp(departement, l->departement) < 0) + { + return insererEnTete(l, departement, nbP, resp); + } + if (departement == l->departement) + { + return l; + } + l->suiv = inserer(l->suiv, departement, nbP, resp); return l; +} + +void afficher(ListeDept l) +{ + if (vide(l)) + { + printf("\n"); + return; + } + printf("%s\t%d\t%s\n", l->departement, l->nbP, l->resp); + afficher(l->suiv); +} + +void afficherDept(ListeDept l) +{ + if (vide(l)) + { + printf("\n"); + return; + } + printf("\t\t%s\n", l->departement); + afficherDept(l->suiv); +} + +bool vide(ListeDept l) +{ + return l == NULL; } \ No newline at end of file diff --git a/Partie_1/structures.h b/Partie_1/structures.h index b14b5d4..5ec3e33 100644 --- a/Partie_1/structures.h +++ b/Partie_1/structures.h @@ -17,4 +17,8 @@ typedef struct } VilleIUT; ListeDept listenouv(void); -ListeDept insererEnTete(ListeDept l, char departement[], int nbP); \ No newline at end of file +ListeDept insererEnTete(ListeDept l, char departement[], int nbP, char resp[]); +ListeDept inserer(ListeDept l, char departement[], int nbP, char resp[]); +void afficher(ListeDept l); +bool vide(ListeDept l); +void afficherDept(ListeDept l); \ No newline at end of file diff --git a/Partie_1/test.c b/Partie_1/test.c index bcca1b9..6321725 100755 --- a/Partie_1/test.c +++ b/Partie_1/test.c @@ -5,6 +5,8 @@ int main(void) int nbVilles; VilleIUT *tiut[100]; nbVilles = chargementVillesIUT(tiut); - affichage(tiut, nbVilles); + //affichageVillesIUT(tiut, nbVilles); + affichageDeptIUT(tiut, nbVilles); + return 0; }