From b44dcf4bb1929b276909a2c35a82d44ccf8ef528 Mon Sep 17 00:00:00 2001 From: Nolan DEVOUASSOUX Date: Thu, 10 Nov 2022 14:52:25 +0100 Subject: [PATCH] =?UTF-8?q?j'ai=20fait=20la=20gestion=20des=20adh=C3=A8ren?= =?UTF-8?q?ts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sequegfait/adherent.txt | 3 + sequegfait/saeN.c | 432 ++++++++++++++++++++++++++++++++++++++++ sequegfait/saeN.h | 86 ++++++++ sequegfait/saetestN.c | 8 + sequegfait/sport.txt | 4 + sequegfait/test | Bin 0 -> 21776 bytes 6 files changed, 533 insertions(+) create mode 100644 sequegfait/adherent.txt create mode 100644 sequegfait/saeN.c create mode 100644 sequegfait/saeN.h create mode 100644 sequegfait/saetestN.c create mode 100644 sequegfait/sport.txt create mode 100755 sequegfait/test diff --git a/sequegfait/adherent.txt b/sequegfait/adherent.txt new file mode 100644 index 0000000..8ee5c5c --- /dev/null +++ b/sequegfait/adherent.txt @@ -0,0 +1,3 @@ +100 56 55 52 1 42 +102 55 55 25 1 117 +103 55 56 30 1 3 diff --git a/sequegfait/saeN.c b/sequegfait/saeN.c new file mode 100644 index 0000000..ef2e6bc --- /dev/null +++ b/sequegfait/saeN.c @@ -0,0 +1,432 @@ +#include +#include +#include "saeN.h" +#define TAILLE 50 + +void chargementInit (void) +{ + int idSports[TAILLE], nbPtSpo[TAILLE], nSports, choix/*nb de sports, choix*/; + int tNC[50], tA[50], tCA[50], tPO[50]; //pour tes fonctions + int nAdherent; /*nb d'adherents*/ //J'ai enlevé TAILLE vu que j'avais déjà define TAILLE à 50 , mais faudra probablement y changer vu que ça fait pas bcp 50 adhérents + char tN[50],tPR[50],venu[50] = {0}; + nSports = chargementSport(idSports,nbPtSpo); + nAdherent = chargementadherent(tNC,tN,tPR,tA,tCA,tPO); + choixMenu(choix,idSports,nbPtSpo,&nSports,tNC,tA,tCA,tPO,&nAdherent,tN,tPR,venu); + return; +} + +int choixMenu (int choix, int *idSports, int *nbPtSpo, int *nSports, int *tNC, int *tA, int *tCA, int *tPO, int *nAdherent, char *tN, char *tPR, char *venu) +{ + printf("------------------------------------------------\n"); //tableau qui s'affiche en premier pour choisir + printf("| Gestion des activités |\n"); + printf("| |\n"); + printf("| 1. suppre personne |\n"); + printf("| 2. Ajout de points |\n"); + printf("| 3. Suppression d'une Activité |\n"); + printf("| 4. Changer le prix d'une activité |\n"); + printf("| 5. Afficher les adhérents |\n"); + printf("| 6. Ajouter un adhérent |\n"); + printf("| 7. Arrivée d'un client |\n"); //espace libre , vérifie que ça s'affiche bien en testant si tu y change + printf("| |\n"); //espace libre , vérifie que ça s'affiche bien en testant si tu y change (tu peux toujours rajouter plus de fonctions stv) + printf("| 9. Quitter |\n"); + printf("| |\n"); + printf("------------------------------------------------\n"); //tableau qui s'affiche en premier pour choisir + printf("Rentrez un chiffre : \n"); //choix de l'option + scanf("%d%*c",&choix); + if (choix == 1) + {printf("\n");supprpers(tNC,tN,tPR,tA,tCA,tPO,nAdherent); printf("\n");} + if (choix == 2) + {printf("\n");rajouteDpoints(tNC,tPO,nAdherent);; printf("\n");} + if (choix == 3) + {printf("\n");enlèveSport(idSports,nbPtSpo,nSports);printf("\n");} + if (choix == 4) + {printf("\n");changprix(idSports,nbPtSpo,*nSports);printf("\n");} + if (choix == 5) + {printf("\n");affichageA(tNC,tN,tPR,tA,tCA,tPO,*nAdherent);printf("\n");} + if (choix == 6) + {printf("\n");insertpers(tNC,tN,tPR,tA,tCA,tPO,nAdherent);printf("\n");} + if (choix == 7) + {printf("\n");clientVenu(tNC,tCA,tPO,idSports,nbPtSpo,venu);printf("\n");} + if (choix == 9) //quitte le logiciel si l'utilisateur a rentré 9 + {printf("\n"); printf("Arrêt du logiciel"); printf("\n"); printf("\n");} + if (choix != 9) + choixMenu (choix,idSports,nbPtSpo,nSports,tNC,tA,tCA,tPO,nAdherent,tN,tPR,venu); + sauvegardeaderents(tNC,tN,tPR,tA,tCA,tPO,*nAdherent); + sauvegardeSports(idSports,nbPtSpo,*nSports); + return 0; +} + +int chargementadherent(int *tNC,char *tN,char *tPR,int *tA,int *tCA,int *tPO) //j'ai renommé la fonction car c'est le plus le chargement que la création +{ + int NC,N,PR,A,CA,PO, i=0; + FILE *fe; + fe=fopen("adherent.txt","r"); + if(fe == NULL) + { + printf("pbouvrfichier\n"); + return -1; + } + + fscanf(fe,"%d %s %s %d %d %d",&NC,&N,&PR,&A,&CA,&PO); + while (!feof(fe)) + { + if(i==TAILLE) + { + printf("%d \t %d\n",i, TAILLE); + printf("capasité atteinte\n"); + fclose(fe); + return -1; + } + tNC[i]=NC; + tN[i]=N; + tPR[i]=PR; + tA[i]=A; + tCA[i]=CA; + tPO[i]=PO; + i++; + fscanf(fe,"%d %s %s %d %d %d",&NC,&N,&PR,&A,&CA,&PO); + + } + fclose(fe); + return i; +} + +int clientVenu (int *tNC, int *tCA, int *tPO, int *idSports, int *nbPtSpo, char *venu) +{ + int arrive, position, positionSpo, activité; + char trouvoupas, creation, nvAct = 'O'; + printf("Quel client est arrivé ?\n"); + scanf("%d%*c",&arrive); + position = rechercheSport(tNC,TAILLE,arrive,&trouvoupas); + if (venu[position] == 'O') + { + printf("Erreur, le client est déjà venu aujourd'hui"); + return -1; + } + if (trouvoupas == 'N') + { + printf("Erreur, le client n'existe pas, voulez vous le créer ?\n"); + scanf("%c%*c",&creation); + if (creation == 'O') + {/*Mettre la fonction ajouter un adhérent*/ return 0;} + else + return 0; + } + if (trouvoupas == 'O') + { + while (nvAct == 'O') + { + printf("Quelle activité va t-il faire ?\n"); + scanf("%d%*c",&activité); + positionSpo = rechercheSport(idSports,TAILLE,activité,&trouvoupas); + if (trouvoupas == 'N') + { + printf("Le sport n'existe pas\n"); + return -1; + } + if (tPO[position] < nbPtSpo[position]) + { + printf("Erreur, le client n'as pas assez de points\n"); + return -1; + } + tPO[position] = tPO[position] - nbPtSpo [positionSpo]; + printf("Veut-il faire une autre activité ?\n"); + scanf("%c%*c",&nvAct); + } + venu[position] = 'O'; + } +} + + +void affichageA(int *tNC,char *tN,char *tPR,int *tA,int *tCA,int *tPO, int n) +{ + printf("%d\n",tA[3]); + int i; + printf("----------------------------------------------------------------------------\n"); + printf("n°client nom\t prenom\t age\t carte\t point\n"); + for (i=0;i valacherch) //il est plus loin que la valeur a recherché donc a pas trouvé + { + *trouvoupas = 'N'; + return i; + } + } +} + +void ajoutSport (int *idSports, int *pt, int *n) +{ + int nvSpo, nvNbPt, place, i; + char trouvoupas; + if (*n == TAILLE) //vérifie qu'il y a encore de la place dans le tableau + { + printf("Erreur: la table est pleine"); + return; + } + printf("Numéro du nouveau sport: \n"); + scanf("%d%*c",&nvSpo); + printf("Nombre de points du nouveau sport: \n"); + scanf("%d%*c",&nvNbPt); + place = rechercheSport(idSports,*n,nvSpo,&trouvoupas); //donne où il doit ajouter le sport ou si il existe pas déjà + if (trouvoupas == 'O') //si le sport existe déjà + { + printf("Erreur, le sport existe déjà\n"); + return; + } + for (i = *n - 1 ; i >= place; i--) //décale les sports après celui à ajouter + { + idSports[i+1] = idSports[i]; + pt[i+1] = pt[i]; + } + idSports[place] = nvSpo; //ajoute le sport a sa place + pt[place] = nvNbPt; //ajoute le nb de points a sa place + *n = *n + 1; //augmente la taille logique + return; +} + +void changprix (int *idSport, int *pt, int n) +{ + int nvPrix , SpoChoix, place; + char trouve; + printf("Changer le prix de quel sport ?\n"); + scanf("%d%*c",&SpoChoix); + place = rechercheSport(idSport,n,SpoChoix,&trouve); + if (trouve == 'N') + { + printf("Erreur, le sport n'existe pas\n"); + return; + } + printf("Veuillez rentrer le nouveau prix: \n"); + scanf("%d%*c",&nvPrix); + pt[place] = nvPrix ; +} + +void enlèveSport (int *idSport, int *pt, int *n) +{ + int place, i, supSpo; + char trouvoupas; + printf("Numéro du sport à supprimer: \n"); + scanf("%d%*c",&supSpo); + place = rechercheSport(idSport,*n,supSpo,&trouvoupas); //donne la place du sport et si il l'a trouvé + if (trouvoupas == 'N') //il ne l'a pas trouvé + { + printf("Erreur, le sport existe pas\n"); + return; + } + for (i = place ; i < *n - 1; i++) //décalle pour pouvoir supprimer le sport + { + idSport[i] = idSport[i+1]; + pt[i] = pt[i+1]; + } + *n = *n - 1; //réduit la taille logique + return; +} diff --git a/sequegfait/saeN.h b/sequegfait/saeN.h new file mode 100644 index 0000000..43bb04e --- /dev/null +++ b/sequegfait/saeN.h @@ -0,0 +1,86 @@ +/* \file: sae.h + \author: Nolan Devouassoux, Renaud Beuret + \date: 25 oct + + */ + + + + /* + \brief: gestion adhèrent + */ +int chargementadherent(int *tNC,char *tN,char *tPR,int *tA,int *tCA,int *tPO); + + /* + \brief: affiche les adèrent + */ +void affichageA(int *tNC,char *tN,char *tPR,int *tA,int *tCA,int *tPO, int n); + + /* + \brief: fonction qui recher le client + */ +int rechercheclient(int*tNC,int n, int val, int* trouve); + /* + \brief: ajoute un adèrent + */ +int insertpers(int *tNC,char *tN,char *tPR,int *tA,int *tCA,int *tPO,int *nAdherent); + /* + \brief: suprime un adèrent +*/ + +int supprpers(int *tNC,char *tN,char *tPR,int *tA,int *tCA,int *tPO,int *nAdherent); + /* + \brief: sauvegarde le tableau dans le fichier adèrent +*/ + + +void rajouteDpoints(int *tNC,int *tPO,int *nAdherent); + /* + \brief: rajoute des points +*/ + +void sauvegardeaderents(int *tNC,char *tN,char *tPR,int *tA,int *tCA,int *tPO,int nAdherent); + + /* + \brief: globale + */ +void globale(); //pareil , mit en com et remplacé par mon tableau (où j'ai rajouté tes fonctions) + +/* + brief: charge les sports +*/ +int chargementSport (int *idSports, int *nbPtSpo); + +/* + brief: affiche les sports +*/ + +void affichage (int *idSports, int *pt, int n); + +/* + brief: enlève un sport +*/ + +void enlèveSport (int *idSport, int *pt, int *n); + +/* + brief: menu +*/ + +void chargementInit (void); + +/* + brief: recherche sport +*/ + +int rechercheSport (int *tablchoisi ,int tailletabl, int valacherch, char *trouvoupas); + +void sauvegardeSports (int *idSports, int *pt, int n); + +void ajoutSport (int *idSports, int *pt, int *n); + +void changprix (int *idSport, int *pt, int n); + +int clientVenu (int *tNC, int *tCA, int *tPO, int *idSports, int *nbPtSpo, char *venu); + +int choixMenu (int choix, int *idSports, int *nbPtSpo, int *nSports, int *tNC, int *tA, int *tCA, int *tPO, int *nAdherent, char *tN, char *tPR, char *venu); \ No newline at end of file diff --git a/sequegfait/saetestN.c b/sequegfait/saetestN.c new file mode 100644 index 0000000..52bc20a --- /dev/null +++ b/sequegfait/saetestN.c @@ -0,0 +1,8 @@ +#include "saeN.h" +#include + +int main(void) +{ + chargementInit(); + return 0; +} diff --git a/sequegfait/sport.txt b/sequegfait/sport.txt new file mode 100644 index 0000000..5178ae4 --- /dev/null +++ b/sequegfait/sport.txt @@ -0,0 +1,4 @@ +1 6 +3 5 +5 18 +7 56 diff --git a/sequegfait/test b/sequegfait/test new file mode 100755 index 0000000000000000000000000000000000000000..9a2c8273caaa533c62bf613255c7593c9ee490e3 GIT binary patch literal 21776 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 literal 0 HcmV?d00001