From c100f4fe5fdd07079479804871451d4a2ce1a49a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=A9cyriaque=2Esegerie?= Date: Wed, 8 Nov 2023 22:50:33 +0100 Subject: [PATCH] =?UTF-8?q?nouvelle=20fonction=20tableau=20et=20ajout=20do?= =?UTF-8?q?c=20doxygen=20prog=20cyriauqe=20le=20goat=20tr=C3=A9s=20beau=20?= =?UTF-8?q?tr=C3=A9s=20muscl=C3=A9=20tr=C3=A9s=20intelligent=20etc=20etc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FonctionsResponsable.c | 446 +++++++++++++++++------------------------ FonctionsResponsable.h | 84 +++++--- 2 files changed, 247 insertions(+), 283 deletions(-) diff --git a/FonctionsResponsable.c b/FonctionsResponsable.c index bf245b9..6cacff6 100644 --- a/FonctionsResponsable.c +++ b/FonctionsResponsable.c @@ -224,17 +224,24 @@ void EcrireFichier(int Tref[], float Tpoid[],float Tvolume[],float Tprix[],int n void modifclientglobal (void) { - int n,coderreur,choix; + int n,choix,tmax=100,coderreur; + int tabNC [100]={0}, tabsuspension [100]={0}; + float tabCAG [100]={0}; - coderreur=creationfichier(); + //coderreur=creationfichier(); + n=tableaucharge(tabNC,tabCAG,tabsuspension,tmax); + if (n==-1 || n==-2) + { + printf("tableau non chargée, erreur\n"); + return; + } printf("Bienvenue dans l'application de modulation client .\nque souhaitez vous faire aujourd'hui ?\n"); while(choix!=9) { - n=compteurtaillelogique(); printf("\n"); - printf("Appuyez sur '1' pour ajouter un client,\nsur '2' pour changer l'état de suspension d'une carte client,\nsur '3' pour supprimer un client ,\nsur '4' pour afficher le fichier client,\nsur '5' pour chercher un seul client dans le fichier,\nOu sur '9' pour sortir du programme !\n"); + printf("Appuyez sur '1' pour ajouter un client,\nsur '2' pour changer l'état de suspension d'une carte client,\nsur '3' pour supprimer un client ,\nsur '4' pour afficher le fichier client,\nsur '5' pour chercher un seul client dans le fichier,\nOu sur '9' pour enregistrer et sortir du programme !\n"); scanf("%d",&choix); while (choix!=1 && choix!=2 && choix!=3 && choix!=4 && choix!=5 && choix!=9) { @@ -243,138 +250,152 @@ void modifclientglobal (void) } if (choix==1) { - coderreur=ajoutClient(); + coderreur=ajoutClient(tabNC,tabCAG,tabsuspension,&n,tmax); } if (choix==2) { - coderreur=suspensioncarte(&n); + coderreur=suspensioncarte(tabNC,tabCAG,tabsuspension,&n,tmax); } if (choix==3) { - coderreur=supressionclient(&n); + coderreur=supressionclient(tabNC,tabCAG,tabsuspension,&n,tmax); } if (choix==4) { - coderreur=affichageall(); + coderreur=affichageall(tabNC,tabCAG,tabsuspension,&n); } if (choix==5) { - coderreur=affichagesolo(); + coderreur=affichagesolo(tabNC,tabCAG,tabsuspension,&n); } } - + coderreur=enregistrement(tabNC,tabCAG,tabsuspension,&n); printf("Au revoir !\n"); return; } -int ajoutClient (void) - +int tableaucharge(int tabNC[],float tabCAG[],int tabsuspension[],int tmax) { - int numeroclient,suspension,verif; + int compteur=0,nc,suspension; float cagnotte; FILE *fichierclient; - printf("\n"); - printf("ajout d'un client au programme de fidélité...\nquel est le numéro de ce client ?\n"); - scanf("%d",&numeroclient); - while (numeroclient<0) - { - printf("le numéro du client ne peut être négatif , réessayez\n"); - scanf("%d",&numeroclient); - } - + fichierclient=fopen("fichierclient.don","r"); if (fichierclient==NULL) { + printf("\n"); printf("Probléme d'ouverture"); return -2; } - fscanf(fichierclient,"%d%f%d",&verif,&cagnotte,&suspension); - + fscanf(fichierclient,"%d%f%d",&nc,&cagnotte,&suspension); while (feof(fichierclient)==0) { - if (verif==numeroclient) + if (compteur>tmax) + { + printf("erreur de taille\n"); + return -1; + } + tabNC[compteur]=nc; + tabCAG[compteur]=cagnotte; + tabsuspension[compteur]=suspension; + compteur=compteur+1; + fscanf(fichierclient,"%d%f%d",&nc,&cagnotte,&suspension); + } + fclose (fichierclient); + return compteur-1; +} + +int ajoutClient (int tabNC[],float tabCAG[],int tabsuspension[],int *tlogique,int tmax) + +{ + int numeroclient,suspension,compteur=0; + float cagnotte; + + if (*tlogique+1>tmax) + { + printf("tableau trop petit\n"); + return -1; + } + + printf("ajout d'un client au programme de fidélité...\nquel est le numéro de ce client ?\n'999' pour quitter.\n"); + scanf("%d",&numeroclient); + if (numeroclient==999) + { + printf("retour au menu global\n"); + return 0; + } + while (numeroclient<0) + { + printf("le numéro du client ne peut être négatif , réessayez\n'999' pour quitter."); + scanf("%d",&numeroclient); + if (numeroclient==999) { - while(numeroclient==verif) + printf("retour au menu global\n"); + return 0; + } + } + + while (compteur<=*tlogique) + { + if (tabNC[compteur]==numeroclient) + { + while(tabNC[compteur]==numeroclient) { printf("le numéro client existe déja ,veuillez ressaissir\n"); scanf("%d",&numeroclient); } } - - fscanf(fichierclient,"%d%f%d",&verif,&cagnotte,&suspension); + compteur=compteur+1; } - fclose (fichierclient); - fichierclient=fopen("fichierclient.don","a"); - if (fichierclient==NULL) - { - printf("Probléme d'ouverture"); - return -2; - } - fprintf(fichierclient,"%d\t%.2f\t%d\n",numeroclient,0.00,0); - fclose(fichierclient); - printf("client ajouté au programme de fidélité ! \n"); - return numeroclient; + *tlogique=*tlogique+1; + tabNC[*tlogique]=numeroclient; + tabCAG[*tlogique]=0.00; + tabsuspension[*tlogique]=0; -} -int suspensioncarte (int *n) -{ - int tabNC [100]; - float tabCAG [100]; - int tabsuspension [100]; + printf("client ajouté au programme de fidélité !\n"); + return 0; - int nc,nouvellecarte,suspension,compteur=0,compteurCAG,taillemax=100,recherche; - float cagnotte; +} + +int suspensioncarte (int tabNC[],float tabCAG[],int tabsuspension[],int *tlogique,int tmax) - FILE *fichierclients; +{ - fichierclients=fopen("fichierclient.don","r"); - if (fichierclients==NULL) - { - printf("\n"); - printf("Probléme d'ouverture"); - return -2; - } + int nouvellecarte,suspension=2,compteur=0,compteurCAG,recherche; - fscanf(fichierclients,"%d%f%d",&nc,&cagnotte,&suspension); - while (feof(fichierclients)==0) - { - if (compteur>*n) - { - printf("erreur de taille\n"); - return 0; - } - tabNC[compteur]=nc; - tabCAG[compteur]=cagnotte; - tabsuspension[compteur]=suspension; - compteur=compteur+1; - fscanf(fichierclients,"%d%f%d",&nc,&cagnotte,&suspension); - } - fclose (fichierclients); - printf("\n"); - printf("quel carte souhaitez vous suspendre ou désuspendre (entrez numéro client)\n"); + printf("quel carte souhaitez vous suspendre ou désuspendre (entrez numéro client)\n'999' pour quitter.\n"); scanf("%d",&recherche); + if (recherche==999) + { + printf("retour au menu global\n"); + return 0; + } while (recherche<0) { printf("numéro non valide , veuillez réessayez\n"); scanf("%d",&recherche); + if (recherche==999) + { + printf("retour au menu global\n"); + return 0; + } } - suspension=2; - for (compteur=0;compteur<*n;compteur++) + + for (compteur=0;compteur<=*tlogique;compteur++) { if (tabNC[compteur]==recherche) { compteurCAG=compteur; - printf("l'état de la carte de ce client est %d\n",tabsuspension[compteur]); printf("modifiez l'état (0 pour non suspendu) (1 pour suspendu)\n"); scanf("%d",&suspension); @@ -390,7 +411,6 @@ int suspensioncarte (int *n) } tabsuspension[compteur]=suspension; } - } if (suspension!=0 && suspension!=1) @@ -401,138 +421,81 @@ int suspensioncarte (int *n) if (tabsuspension[compteurCAG]==1) { - *n=*n+1; - - if (*n<=taillemax) - { - printf("création d'une nouvelle carte pour le client %d\n",tabNC[compteurCAG]); - printf("numéro de la nouvelle carte ?\n"); - scanf("%d",&nouvellecarte); - while (nouvellecarte<0) - { - printf("ne peut étre négatif\n"); - scanf("%d",&nouvellecarte); - } - for (compteur=0;compteur<*n;compteur++) - - while (nouvellecarte==tabNC[compteur]) - { - printf("le client existe déja, ressaisissez\n"); - scanf("%d",&nouvellecarte); - while(nouvellecarte<0){ - printf("le numéro ne peut étre négatif , rééssayez.\n"); - scanf("%d",&nouvellecarte); - } - } - - } - else + if (*tlogique+1>tmax) { - printf("quantité maximum de client atteint, le fichier est trop petit"); - return -5; + printf("tableau trop petit\n"); + return -1; } - fichierclients=fopen("fichierclient.don","w"); - if (fichierclients==NULL) + *tlogique=*tlogique+1; + + printf("création d'une nouvelle carte pour le client %d\n",tabNC[compteurCAG]); + printf("numéro de la nouvelle carte ?\n"); + scanf("%d",&nouvellecarte); + while (nouvellecarte<0) { - printf("Probléme d'ouverture"); - return -2; + printf("ne peut étre négatif\n"); + scanf("%d",&nouvellecarte); } - - for (compteur=0;compteur<(*n-1);compteur++) - - fprintf(fichierclients, "%d\t%.2f\t%d\n",tabNC[compteur],tabCAG[compteur],tabsuspension[compteur]); - - fclose(fichierclients); - - - fichierclients=fopen("fichierclient.don","a"); - if (fichierclients==NULL) + for (compteur=0;compteur<=*tlogique;compteur++) { - printf("Probléme d'ouverture"); - return -2; + while (nouvellecarte==tabNC[compteur]) + { + printf("le client existe déja, ressaisissez\n"); + scanf("%d",&nouvellecarte); + while(nouvellecarte<0){ + { + printf("le numéro ne peut étre négatif , rééssayez.\n"); + scanf("%d",&nouvellecarte); + } + } } - fprintf(fichierclients, "%d\t%.2f\t%d\n",nouvellecarte,tabCAG[compteurCAG],0); + tabNC[*tlogique]=nouvellecarte; + tabCAG[*tlogique]=tabCAG[compteurCAG]; + tabsuspension[*tlogique]=0; - fclose(fichierclients); + printf("état de suspension modifié et nouvelle carte crée !\n"); + return 0; + } + if (tabsuspension[compteurCAG]==0) + { printf("état de suspension modifié !\n"); - - } - - else - { - fichierclients=fopen("fichierclient.don","w"); - if (fichierclients==NULL) - { - printf("Probléme d'ouverture"); - return -2; - } - - for (compteur=0;compteur<*n;compteur++) - - fprintf(fichierclients, "%d\t%.2f\t%d\n",tabNC[compteur],tabCAG[compteur],tabsuspension[compteur]); - - fclose(fichierclients); - - if (compteur=0) - { - printf("fichier vide"); - return -2; - } - - - printf("état de suspension modifié !\n"); + return 0; } - return 0; + } } -int supressionclient (int *n) +int supressionclient (int tabNC[],float tabCAG[],int tabsuspension[],int *tlogique,int tmax) { - int tabNC [100]; - float tabCAG [100]; - int tabsuspension [100]; - int nc,suspension,compteur=0,taillemax=100,recherche2,nt=1; - float cagnotte; - - FILE *fichierclients; + int compteur,recherche,nt=1; printf("\n"); - printf("quel est le numéro du client que vous souhaitez supprimer ?\n"); - scanf("%d",&recherche2); - while(recherche2<0){ - printf("ne peut étre négatif\n"); - scanf("%d",&recherche2); - } - fichierclients=fopen("fichierclient.don","r"); - if (fichierclients==NULL) + printf("quel est le numéro du client que vous souhaitez supprimer ?\n'999' pour quitter.\n"); + scanf("%d",&recherche); + if (recherche==999) { - printf("Probléme d'ouverture"); - return -2; + printf("retour au menu global\n"); + return 0; } - - fscanf(fichierclients,"%d%f%d",&nc,&cagnotte,&suspension); - while(feof(fichierclients)==0) + while(recherche<0) { - if (compteur>*n) - { - printf("erreur de taille\n"); - return 0; - } - tabNC[compteur]=nc; - tabCAG[compteur]=cagnotte; - tabsuspension[compteur]=suspension; - compteur=compteur+1; - fscanf(fichierclients,"%d%f%d",&nc,&cagnotte,&suspension); + printf("ne peut étre négatif\n'999' pour quitter."); + scanf("%d",&recherche); + if (recherche==999) + { + printf("retour au menu global\n"); + return 0; + + } } - fclose(fichierclients); - for (compteur=0;compteur<*n;compteur++) - if (tabNC[compteur]==recherche2) + for (compteur=0;compteur<=*tlogique;compteur++) + if (tabNC[compteur]==recherche) { - while (compteur<=*n) + while (compteur<=*tlogique) { tabNC[compteur]=tabNC[compteur+1]; tabCAG[compteur]=tabCAG[compteur+1]; @@ -541,94 +504,63 @@ int supressionclient (int *n) nt=0; } - - *n=*n-1; + *tlogique=*tlogique-1; } if (nt!=0) { printf("le numéro client n'existe pas\n"); - return -6; - } - - fichierclients=fopen("fichierclient.don","w"); - if (fichierclients==NULL) - { - printf("Probléme d'ouverture"); - return -2; + return -4; } - - for (compteur=0;compteur<*n;compteur++) - - fprintf(fichierclients, "%d\t%.2f\t%d\n",tabNC[compteur],tabCAG[compteur],tabsuspension[compteur]); - - fclose(fichierclients); - printf("client supprimé.\n"); - return 0; } -int affichageall (void) +int affichageall (int tabNC[],float tabCAG[],int tabsuspension[],int *tlogique) { - int nc,suspension; - float cagnotte; - - FILE *flot; + int compteur; printf("\n"); - flot=fopen("fichierclient.don","r"); - if (flot==NULL) - { - printf("erreur d'ouverture du fichier\n"); - return -1; - } - fscanf(flot,"%d%f%d",&nc,&cagnotte,&suspension); - while (feof(flot)==0) - { - printf("%d\t%.2f\t%d\n",nc,cagnotte,suspension); - fscanf(flot,"%d%f%d",&nc,&cagnotte,&suspension); - } - fclose(flot); + for (compteur=0;compteur<=*tlogique;compteur++) + printf("%d\t%.2f\t%d\n",tabNC[compteur],tabCAG[compteur],tabsuspension[compteur]); return 0; } -int affichagesolo (void) +int affichagesolo (int tabNC[],float tabCAG[],int tabsuspension[],int *tlogique) { - int rechercher,nc,suspension,validateur=0; + int rechercher,compteur=0; float cagnotte; - FILE *flot; - flot=fopen("fichierclient.don","r"); - if (flot==NULL) - { - printf("erreur d'ouverture du fichier\n"); - return -1; - } printf("\n"); - printf("quel client recherchez vous ?\n"); + printf("quel client recherchez vous ?\n'999' pour quitter.\n"); scanf("%d",&rechercher); - while(rechercher<0){ - printf("ne peut étre négatif\n"); + if (rechercher==999) + { + printf("retour au menu global\n"); + return 0; + } + while(rechercher<0) + { + printf("ne peut étre négatif\n'999' pour quitter."); scanf("%d",&rechercher); + if (rechercher==999) + { + printf("retour au menu global\n"); + return 0; + } + } printf("\n"); - fscanf(flot,"%d%f%d",&nc,&cagnotte,&suspension); - while (feof(flot)==0) + + while (compteur<*tlogique) { - if (nc==rechercher) + if (tabNC[compteur]==rechercher) { - printf("%d\t%.2f\t%d\n",nc,cagnotte,suspension); - validateur=12; + printf("%d\t%.2f\t%d\n",tabNC[compteur],tabCAG[compteur],tabsuspension[compteur]); + return 0; } - fscanf(flot,"%d%f%d",&nc,&cagnotte,&suspension); - } - fclose(flot); - if (validateur!=12) - { - printf("ce client n'existe pas\n"); - return 1; } + printf("ce client n'existe pas\n"); return 0; } @@ -640,21 +572,19 @@ int creationfichier(void) return 0; } -int compteurtaillelogique (void) +int enregistrement (int tabNC[],float tabCAG[],int tabsuspension[],int *tlogique) { - int i=0,placeholder1,placeholder2; - float placeholder3; - FILE *flot; - flot=fopen("fichierclient.don","r"); - fscanf(flot,"%d%f%d",&placeholder1,&placeholder3,&placeholder2); - while(feof(flot)==0) - { - i=i+1; - fscanf(flot,"%d%f%d",&placeholder1,&placeholder3,&placeholder2); - - } - fclose(flot); - return i; + int compteur; + FILE *flot; + flot=fopen("fichierclient.don","w"); + if (flot==NULL) + { + printf("probléme d'ouverture fichier."); + return -1; + } + for (compteur=0;compteur<=*tlogique;compteur++) + fprintf(flot,"%d\t%.2f\t%d\n",tabNC[compteur],tabCAG[compteur],tabsuspension[compteur]); + return 0; } \ No newline at end of file diff --git a/FonctionsResponsable.h b/FonctionsResponsable.h index 40e201a..be898ed 100644 --- a/FonctionsResponsable.h +++ b/FonctionsResponsable.h @@ -88,52 +88,86 @@ int posRef(int Tref[],int refR, int n); */ void EcrireFichier(int Tref[], float Tpoid[],float Tvolume[],float Tprix[],int n); - /** -*\brief Permet d'accéder à toutes les autres fonctions de cette partie. +*\brief lance le menu global de la partie gestion fichier client. +*\param void rien +*\return rien */ void modifclientglobal (void); /** -*\brief Permet d'ajouter un client au fichier. -*\return Code d'erreur != 0 si un probléme se passe. +*\brief charge les tableaux avec "fichierclient.don". +*\param[in,out] tabNC tableau d'entier, contient les identifiant des cartes clients. +*\param[in,out] tabCAG tableau de flottant, contient les cagnottes des clients. +*\param[in,out] tabsuspension tableau d'entier, contient informations sur la suspension des cartes. +*\param[in] tmax entier, taille physique des tableaux. +*\return la taille logique. +*/ +int tableaucharge(int tabNC[],float tabCAG[],int tabsuspension[],int tmax); + +/** +*\brief permet d'ajouter un client dans les tableaux. +*\param[in,out] tabNC tableau d'entier, contient les identifiant des cartes clients. +*\param[in,out] tabCAG tableau de flottant, contient les cagnottes des clients. +*\param[in,out] tabsuspension tableau d'entier, contient informations sur la suspension des cartes. +*\param[in] tmax entier, taille physique des tableaux. +*\param[in,out] tlogique pointeur de la taille logique , modifier lors de l'ajout. +*\return code d'erreur si une erreur apparaît. */ -int ajoutClient (void); +int ajoutClient (int tabNC[],float tabCAG[],int tabsuspension[],int *tlogique,int tmax); /** -*\brief Permet de suspendre la carte d'un client ou de la désuspendre (Et de créer un utilisateur si la carte se fais suspendre). -*\return Code d'erreur != 0 si un probléme se passe. -*\param[in] n Taille logique des tableaux. +*\brief permet de suspendre OU désuspendre un client. +*\param[in,out] tabNC tableau d'entier, contient les identifiant des cartes clients. +*\param[in,out] tabCAG tableau de flottant, contient les cagnottes des clients. +*\param[in,out] tabsuspension tableau d'entier, contient informations sur la suspension des cartes. +*\param[in] tmax entier, taille physique des tableaux. +*\param[in,out] tlogique pointeur de la taille logique , modifier lors d'un l'ajout. +*\return code d'erreur si une erreur apparaît. */ -int suspensioncarte (int *n); +int suspensioncarte (int tabNC[],float tabCAG[],int tabsuspension[],int *tlogique,int tmax); /** -*\brief Permet de compter le nombre de ligne d'un fichier et donc la taille logique des tableaux. -*\return Taille logique des tableaux. +*\brief permet de supprimer un client. +*\param[in,out] tabNC tableau d'entier, contient les identifiant des cartes clients. +*\param[in,out] tabCAG tableau de flottant, contient les cagnottes des clients. +*\param[in,out] tabsuspension tableau d'entier, contient informations sur la suspension des cartes. +*\param[in] tmax entier, taille physique des tableaux. +*\param[in,out] tlogique pointeur de la taille logique. +*\return code d'erreur si une erreur apparaît. */ -int compteurtaillelogique (void); +int supressionclient (int tabNC[],float tabCAG[],int tabsuspension[],int *tlogique,int tmax); /** -*\brief Permet de supprimer la carte d'un client. -*\return Code d'erreur != 0 si un probléme se passe. -*\param[in] n Taille logique des tableaux. +*\brief permet d'afficher le contenu des tableaux. +*\param[in] tabNC tableau d'entier, contient les identifiant des cartes clients. +*\param[in] tabCAG tableau de flottant, contient les cagnottes des clients. +*\param[in] tabsuspension tableau d'entier, contient informations sur la suspension des cartes. +*\param[in] tlogique pointeur de la taille logique. +*\return code d'erreur si une erreur apparaît. */ -int supressionclient (int *n); +int affichageall (int tabNC[],float tabCAG[],int tabsuspension[],int *tlogique); /** -*\brief Permet d'afficher les informations d'un client précis. -*\return Code d'erreur != 0 si un probléme se passe. +*\brief permet d'afficher le contenu d'un tableau spécifique. +*\param[in] tabNC tableau d'entier, contient les identifiant des cartes clients. +*\param[in] tabCAG tableau de flottant, contient les cagnottes des clients. +*\param[in] tabsuspension tableau d'entier, contient informations sur la suspension des cartes. +*\param[in] tlogique pointeur de la taille logique. +*\return code d'erreur si une erreur apparaît. */ -int affichagesolo (void); +int affichagesolo (int tabNC[],float tabCAG[],int tabsuspension[],int *tlogique); /** -*\brief Permet d'afficher tout le fichire client. -*\return Code d'erreur != 0 si un probléme se passe. +*\brief vérifie la présence d'un fichier , et si non le crée. +*\param void rien +*\return rien */ -int affichageall (void); +int creationfichier(void); /** -*\brief Permet de vérifier la présence du fichier donnés , le crée si inexistant. -*\return Code d'erreur != 0 si un probléme se passe. +*\brief lorsque l'utilisateur quitte le global , écrit les tableaux dans le fichier en écrasant le contenue précédent. +*\param void rien +*\return rien */ -int creationfichier(void); \ No newline at end of file +int enregistrement (int tabNC[],float tabCAG[],int tabsuspension[],int *tlogique); \ No newline at end of file