nouvelle fonction tableau et ajout doc doxygen prog cyriauqe le goat trés beau trés musclé trés intelligent etc etc

master
Cyriaque SEGERIE 1 year ago
parent 8a190f3d5f
commit c100f4fe5f

@ -224,17 +224,24 @@ void EcrireFichier(int Tref[], float Tpoid[],float Tvolume[],float Tprix[],int n
void modifclientglobal (void) 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"); printf("Bienvenue dans l'application de modulation client .\nque souhaitez vous faire aujourd'hui ?\n");
while(choix!=9) while(choix!=9)
{ {
n=compteurtaillelogique();
printf("\n"); 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); scanf("%d",&choix);
while (choix!=1 && choix!=2 && choix!=3 && choix!=4 && choix!=5 && choix!=9) while (choix!=1 && choix!=2 && choix!=3 && choix!=4 && choix!=5 && choix!=9)
{ {
@ -243,138 +250,152 @@ void modifclientglobal (void)
} }
if (choix==1) if (choix==1)
{ {
coderreur=ajoutClient(); coderreur=ajoutClient(tabNC,tabCAG,tabsuspension,&n,tmax);
} }
if (choix==2) if (choix==2)
{ {
coderreur=suspensioncarte(&n); coderreur=suspensioncarte(tabNC,tabCAG,tabsuspension,&n,tmax);
} }
if (choix==3) if (choix==3)
{ {
coderreur=supressionclient(&n); coderreur=supressionclient(tabNC,tabCAG,tabsuspension,&n,tmax);
} }
if (choix==4) if (choix==4)
{ {
coderreur=affichageall(); coderreur=affichageall(tabNC,tabCAG,tabsuspension,&n);
} }
if (choix==5) if (choix==5)
{ {
coderreur=affichagesolo(); coderreur=affichagesolo(tabNC,tabCAG,tabsuspension,&n);
} }
} }
coderreur=enregistrement(tabNC,tabCAG,tabsuspension,&n);
printf("Au revoir !\n"); printf("Au revoir !\n");
return; 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; float cagnotte;
FILE *fichierclient; 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"); fichierclient=fopen("fichierclient.don","r");
if (fichierclient==NULL) if (fichierclient==NULL)
{ {
printf("\n");
printf("Probléme d'ouverture"); printf("Probléme d'ouverture");
return -2; return -2;
} }
fscanf(fichierclient,"%d%f%d",&verif,&cagnotte,&suspension); fscanf(fichierclient,"%d%f%d",&nc,&cagnotte,&suspension);
while (feof(fichierclient)==0) while (feof(fichierclient)==0)
{ {
if (verif==numeroclient) if (compteur>tmax)
{ {
while(numeroclient==verif) printf("erreur de taille\n");
{ return -1;
printf("le numéro client existe déja ,veuillez ressaissir\n");
scanf("%d",&numeroclient);
}
} }
tabNC[compteur]=nc;
fscanf(fichierclient,"%d%f%d",&verif,&cagnotte,&suspension); tabCAG[compteur]=cagnotte;
tabsuspension[compteur]=suspension;
compteur=compteur+1;
fscanf(fichierclient,"%d%f%d",&nc,&cagnotte,&suspension);
} }
fclose (fichierclient); fclose (fichierclient);
fichierclient=fopen("fichierclient.don","a"); return compteur-1;
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;
} }
int suspensioncarte (int *n) int ajoutClient (int tabNC[],float tabCAG[],int tabsuspension[],int *tlogique,int tmax)
{ {
int tabNC [100]; int numeroclient,suspension,compteur=0;
float tabCAG [100];
int tabsuspension [100];
int nc,nouvellecarte,suspension,compteur=0,compteurCAG,taillemax=100,recherche;
float cagnotte; float cagnotte;
FILE *fichierclients; if (*tlogique+1>tmax)
fichierclients=fopen("fichierclient.don","r");
if (fichierclients==NULL)
{ {
printf("\n"); printf("tableau trop petit\n");
printf("Probléme d'ouverture"); return -1;
return -2;
} }
fscanf(fichierclients,"%d%f%d",&nc,&cagnotte,&suspension); printf("ajout d'un client au programme de fidélité...\nquel est le numéro de ce client ?\n'999' pour quitter.\n");
while (feof(fichierclients)==0) scanf("%d",&numeroclient);
if (numeroclient==999)
{ {
if (compteur>*n) printf("retour au menu global\n");
return 0;
}
while (numeroclient<0)
{ {
printf("erreur de taille\n"); printf("le numéro du client ne peut être négatif , réessayez\n'999' pour quitter.");
scanf("%d",&numeroclient);
if (numeroclient==999)
{
printf("retour au menu global\n");
return 0; return 0;
} }
tabNC[compteur]=nc; }
tabCAG[compteur]=cagnotte;
tabsuspension[compteur]=suspension; 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);
}
}
compteur=compteur+1; compteur=compteur+1;
fscanf(fichierclients,"%d%f%d",&nc,&cagnotte,&suspension);
} }
fclose (fichierclients);
printf("\n"); *tlogique=*tlogique+1;
printf("quel carte souhaitez vous suspendre ou désuspendre (entrez numéro client)\n"); tabNC[*tlogique]=numeroclient;
tabCAG[*tlogique]=0.00;
tabsuspension[*tlogique]=0;
printf("client ajouté au programme de fidélité !\n");
return 0;
}
int suspensioncarte (int tabNC[],float tabCAG[],int tabsuspension[],int *tlogique,int tmax)
{
int nouvellecarte,suspension=2,compteur=0,compteurCAG,recherche;
printf("quel carte souhaitez vous suspendre ou désuspendre (entrez numéro client)\n'999' pour quitter.\n");
scanf("%d",&recherche); scanf("%d",&recherche);
if (recherche==999)
{
printf("retour au menu global\n");
return 0;
}
while (recherche<0) while (recherche<0)
{ {
printf("numéro non valide , veuillez réessayez\n"); printf("numéro non valide , veuillez réessayez\n");
scanf("%d",&recherche); 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) if (tabNC[compteur]==recherche)
{ {
compteurCAG=compteur; compteurCAG=compteur;
printf("l'état de la carte de ce client est %d\n",tabsuspension[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"); printf("modifiez l'état (0 pour non suspendu) (1 pour suspendu)\n");
scanf("%d",&suspension); scanf("%d",&suspension);
@ -390,7 +411,6 @@ int suspensioncarte (int *n)
} }
tabsuspension[compteur]=suspension; tabsuspension[compteur]=suspension;
} }
} }
if (suspension!=0 && suspension!=1) if (suspension!=0 && suspension!=1)
@ -401,10 +421,14 @@ int suspensioncarte (int *n)
if (tabsuspension[compteurCAG]==1) if (tabsuspension[compteurCAG]==1)
{ {
*n=*n+1; if (*tlogique+1>tmax)
if (*n<=taillemax)
{ {
printf("tableau trop petit\n");
return -1;
}
*tlogique=*tlogique+1;
printf("création d'une nouvelle carte pour le client %d\n",tabNC[compteurCAG]); printf("création d'une nouvelle carte pour le client %d\n",tabNC[compteurCAG]);
printf("numéro de la nouvelle carte ?\n"); printf("numéro de la nouvelle carte ?\n");
scanf("%d",&nouvellecarte); scanf("%d",&nouvellecarte);
@ -413,126 +437,65 @@ int suspensioncarte (int *n)
printf("ne peut étre négatif\n"); printf("ne peut étre négatif\n");
scanf("%d",&nouvellecarte); scanf("%d",&nouvellecarte);
} }
for (compteur=0;compteur<*n;compteur++) for (compteur=0;compteur<=*tlogique;compteur++)
{
while (nouvellecarte==tabNC[compteur]) while (nouvellecarte==tabNC[compteur])
{ {
printf("le client existe déja, ressaisissez\n"); printf("le client existe déja, ressaisissez\n");
scanf("%d",&nouvellecarte); scanf("%d",&nouvellecarte);
while(nouvellecarte<0){ while(nouvellecarte<0){
{
printf("le numéro ne peut étre négatif , rééssayez.\n"); printf("le numéro ne peut étre négatif , rééssayez.\n");
scanf("%d",&nouvellecarte); scanf("%d",&nouvellecarte);
} }
} }
}
else
{
printf("quantité maximum de client atteint, le fichier est trop petit");
return -5;
}
fichierclients=fopen("fichierclient.don","w");
if (fichierclients==NULL)
{
printf("Probléme d'ouverture");
return -2;
} }
for (compteur=0;compteur<(*n-1);compteur++) tabNC[*tlogique]=nouvellecarte;
tabCAG[*tlogique]=tabCAG[compteurCAG];
tabsuspension[*tlogique]=0;
fprintf(fichierclients, "%d\t%.2f\t%d\n",tabNC[compteur],tabCAG[compteur],tabsuspension[compteur]); printf("état de suspension modifié et nouvelle carte crée !\n");
return 0;
fclose(fichierclients);
fichierclients=fopen("fichierclient.don","a");
if (fichierclients==NULL)
{
printf("Probléme d'ouverture");
return -2;
}
fprintf(fichierclients, "%d\t%.2f\t%d\n",nouvellecarte,tabCAG[compteurCAG],0);
fclose(fichierclients);
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++) if (tabsuspension[compteurCAG]==0)
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"); 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; int compteur,recherche,nt=1;
float cagnotte;
FILE *fichierclients;
printf("\n"); printf("\n");
printf("quel est le numéro du client que vous souhaitez supprimer ?\n"); printf("quel est le numéro du client que vous souhaitez supprimer ?\n'999' pour quitter.\n");
scanf("%d",&recherche2); scanf("%d",&recherche);
while(recherche2<0){ if (recherche==999)
printf("ne peut étre négatif\n");
scanf("%d",&recherche2);
}
fichierclients=fopen("fichierclient.don","r");
if (fichierclients==NULL)
{ {
printf("Probléme d'ouverture"); printf("retour au menu global\n");
return -2; return 0;
} }
while(recherche<0)
fscanf(fichierclients,"%d%f%d",&nc,&cagnotte,&suspension);
while(feof(fichierclients)==0)
{ {
if (compteur>*n) printf("ne peut étre négatif\n'999' pour quitter.");
scanf("%d",&recherche);
if (recherche==999)
{ {
printf("erreur de taille\n"); printf("retour au menu global\n");
return 0; return 0;
} }
tabNC[compteur]=nc;
tabCAG[compteur]=cagnotte;
tabsuspension[compteur]=suspension;
compteur=compteur+1;
fscanf(fichierclients,"%d%f%d",&nc,&cagnotte,&suspension);
} }
fclose(fichierclients);
for (compteur=0;compteur<*n;compteur++) for (compteur=0;compteur<=*tlogique;compteur++)
if (tabNC[compteur]==recherche2) if (tabNC[compteur]==recherche)
{ {
while (compteur<=*n) while (compteur<=*tlogique)
{ {
tabNC[compteur]=tabNC[compteur+1]; tabNC[compteur]=tabNC[compteur+1];
tabCAG[compteur]=tabCAG[compteur+1]; tabCAG[compteur]=tabCAG[compteur+1];
@ -541,94 +504,63 @@ int supressionclient (int *n)
nt=0; nt=0;
} }
*tlogique=*tlogique-1;
*n=*n-1;
} }
if (nt!=0) if (nt!=0)
{ {
printf("le numéro client n'existe pas\n"); printf("le numéro client n'existe pas\n");
return -6; return -4;
}
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);
printf("client supprimé.\n"); printf("client supprimé.\n");
return 0; return 0;
} }
int affichageall (void) int affichageall (int tabNC[],float tabCAG[],int tabsuspension[],int *tlogique)
{ {
int nc,suspension; int compteur;
float cagnotte;
FILE *flot;
printf("\n"); printf("\n");
flot=fopen("fichierclient.don","r"); for (compteur=0;compteur<=*tlogique;compteur++)
if (flot==NULL) printf("%d\t%.2f\t%d\n",tabNC[compteur],tabCAG[compteur],tabsuspension[compteur]);
{
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);
return 0; 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; float cagnotte;
FILE *flot;
flot=fopen("fichierclient.don","r");
if (flot==NULL)
{
printf("erreur d'ouverture du fichier\n");
return -1;
}
printf("\n"); printf("\n");
printf("quel client recherchez vous ?\n"); printf("quel client recherchez vous ?\n'999' pour quitter.\n");
scanf("%d",&rechercher); scanf("%d",&rechercher);
while(rechercher<0){ if (rechercher==999)
printf("ne peut étre négatif\n"); {
printf("retour au menu global\n");
return 0;
}
while(rechercher<0)
{
printf("ne peut étre négatif\n'999' pour quitter.");
scanf("%d",&rechercher); scanf("%d",&rechercher);
if (rechercher==999)
{
printf("retour au menu global\n");
return 0;
}
} }
printf("\n"); 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); printf("%d\t%.2f\t%d\n",tabNC[compteur],tabCAG[compteur],tabsuspension[compteur]);
validateur=12; return 0;
} }
fscanf(flot,"%d%f%d",&nc,&cagnotte,&suspension);
} }
fclose(flot);
if (validateur!=12)
{
printf("ce client n'existe pas\n"); printf("ce client n'existe pas\n");
return 1;
}
return 0; return 0;
} }
@ -640,21 +572,19 @@ int creationfichier(void)
return 0; return 0;
} }
int compteurtaillelogique (void)
int enregistrement (int tabNC[],float tabCAG[],int tabsuspension[],int *tlogique)
{ {
int i=0,placeholder1,placeholder2; int compteur;
float placeholder3;
FILE *flot; FILE *flot;
flot=fopen("fichierclient.don","r"); flot=fopen("fichierclient.don","w");
fscanf(flot,"%d%f%d",&placeholder1,&placeholder3,&placeholder2); if (flot==NULL)
while(feof(flot)==0)
{ {
i=i+1; printf("probléme d'ouverture fichier.");
fscanf(flot,"%d%f%d",&placeholder1,&placeholder3,&placeholder2); return -1;
} }
fclose(flot); for (compteur=0;compteur<=*tlogique;compteur++)
return i; fprintf(flot,"%d\t%.2f\t%d\n",tabNC[compteur],tabCAG[compteur],tabsuspension[compteur]);
return 0;
} }

@ -88,52 +88,86 @@ int posRef(int Tref[],int refR, int n);
*/ */
void EcrireFichier(int Tref[], float Tpoid[],float Tvolume[],float Tprix[],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); void modifclientglobal (void);
/** /**
*\brief Permet d'ajouter un client au fichier. *\brief charge les tableaux avec "fichierclient.don".
*\return Code d'erreur != 0 si un probléme se passe. *\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 ajoutClient (void); int tableaucharge(int tabNC[],float tabCAG[],int tabsuspension[],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). *\brief permet d'ajouter un client dans les tableaux.
*\return Code d'erreur != 0 si un probléme se passe. *\param[in,out] tabNC tableau d'entier, contient les identifiant des cartes clients.
*\param[in] n Taille logique des tableaux. *\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 suspensioncarte (int *n); int ajoutClient (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. *\brief permet de suspendre OU désuspendre un client.
*\return Taille logique des 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 d'un l'ajout.
*\return code d'erreur si une erreur apparaît.
*/ */
int compteurtaillelogique (void); int suspensioncarte (int tabNC[],float tabCAG[],int tabsuspension[],int *tlogique,int tmax);
/** /**
*\brief Permet de supprimer la carte d'un client. *\brief permet de supprimer un client.
*\return Code d'erreur != 0 si un probléme se passe. *\param[in,out] tabNC tableau d'entier, contient les identifiant des cartes clients.
*\param[in] n Taille logique des tableaux. *\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 supressionclient (int *n); int supressionclient (int tabNC[],float tabCAG[],int tabsuspension[],int *tlogique,int tmax);
/** /**
*\brief Permet d'afficher les informations d'un client précis. *\brief permet d'afficher le contenu des tableaux.
*\return Code d'erreur != 0 si un probléme se passe. *\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 affichageall (int tabNC[],float tabCAG[],int tabsuspension[],int *tlogique);
/** /**
*\brief Permet d'afficher tout le fichire client. *\brief permet d'afficher le contenu d'un tableau spécifique.
*\return Code d'erreur != 0 si un probléme se passe. *\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 affichageall (void); int affichagesolo (int tabNC[],float tabCAG[],int tabsuspension[],int *tlogique);
/** /**
*\brief Permet de vérifier la présence du fichier donnés , le crée si inexistant. *\brief vérifie la présence d'un fichier , et si non le crée.
*\return Code d'erreur != 0 si un probléme se passe. *\param void rien
*\return rien
*/ */
int creationfichier(void); int creationfichier(void);
/**
*\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 enregistrement (int tabNC[],float tabCAG[],int tabsuspension[],int *tlogique);
Loading…
Cancel
Save