You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

423 lines
9.0 KiB

#include "sae.h"
int modifclientglobal (void)
{
int n,coderreur,choix;
coderreur=creationfichier();
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");
scanf("%d",&choix);
while (choix!=1 && choix!=2 && choix!=3 && choix!=4 && choix!=5 && choix!=9)
{
printf("Entrée incorrect, veuillez ressasisir.\n");
scanf("%d",&choix);
}
if (choix==1)
{
coderreur=ajoutClient();
}
if (choix==2)
{
coderreur=suspensioncarte(&n);
}
if (choix==3)
{
coderreur=supressionclient(&n);
}
if (choix==4)
{
coderreur=affichageall();
}
if (choix==5)
{
coderreur=affichagesolo();
}
}
printf("Au revoir !\n");
return 0;
}
int ajoutClient (void)
{
int numeroclient,suspension,verif;
float cagnotte;
FILE *fichierclient;
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("Probléme d'ouverture");
return -2;
}
fscanf(fichierclient,"%d%f%d",&verif,&cagnotte,&suspension);
while (feof(fichierclient)==0)
{
if (verif==numeroclient)
{
while(numeroclient==verif)
{
printf("le numéro client existe déja ,veuillez ressaissir\n");
scanf("%d",&numeroclient);
}
}
fscanf(fichierclient,"%d%f%d",&verif,&cagnotte,&suspension);
}
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;
}
int suspensioncarte (int *n)
{
int tabNC [100];
float tabCAG [100];
int tabsuspension [100];
int nc,nouvellecarte,suspension,compteur=0,compteurCAG,taillemax=100,recherche;
float cagnotte;
FILE *fichierClientmegacool;
fichierClientmegacool=fopen("fichierclient.don","r");
if (fichierClientmegacool==NULL)
{
printf("Probléme d'ouverture");
return -2;
}
fscanf(fichierClientmegacool,"%d%f%d",&nc,&cagnotte,&suspension);
while (feof(fichierClientmegacool)==0)
{
if (compteur>*n)
{
printf("erreur de taille\n");
return 0;
}
tabNC[compteur]=nc;
tabCAG[compteur]=cagnotte;
tabsuspension[compteur]=suspension;
compteur=compteur+1;
fscanf(fichierClientmegacool,"%d%f%d",&nc,&cagnotte,&suspension);
}
fclose (fichierClientmegacool);
printf("quel carte souhaitez vous suspendre ou désuspendre (entrez numéro client)\n");
scanf("%d",&recherche);
while (recherche<0)
{
printf("numéro non valide , veuillez réessayez\n");
scanf("%d",&recherche);
}
suspension=2;
for (compteur=0;compteur<*n;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);
while (suspension!=1 && suspension !=0)
{
printf("état de suspension non valide , retapez.\n");
scanf("%d",&suspension);
}
if (tabsuspension[compteur]==suspension)
{
printf("état de suspension est déja de %d\n",suspension);
return -4;
}
tabsuspension[compteur]=suspension;
}
}
if (suspension!=0 && suspension!=1)
{
printf("le numéro client n'existe pas\n");
return -7;
}
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);
}
}
else
{
printf("quantité maximum de client atteint, le fichier est trop petit");
return -5;
}
fichierClientmegacool=fopen("fichierclient.don","w");
if (fichierClientmegacool==NULL)
{
printf("Probléme d'ouverture");
return -2;
}
for (compteur=0;compteur<(*n-1);compteur++)
fprintf(fichierClientmegacool, "%d\t%.2f\t%d\n",tabNC[compteur],tabCAG[compteur],tabsuspension[compteur]);
fclose(fichierClientmegacool);
fichierClientmegacool=fopen("fichierclient.don","a");
if (fichierClientmegacool==NULL)
{
printf("Probléme d'ouverture");
return -2;
}
fprintf(fichierClientmegacool, "%d\t%.2f\t%d\n",nouvellecarte,tabCAG[compteurCAG],0);
fclose(fichierClientmegacool);
printf("état de suspension modifié !\n");
}
else
{
fichierClientmegacool=fopen("fichierclient.don","w");
if (fichierClientmegacool==NULL)
{
printf("Probléme d'ouverture");
return -2;
}
for (compteur=0;compteur<*n;compteur++)
fprintf(fichierClientmegacool, "%d\t%.2f\t%d\n",tabNC[compteur],tabCAG[compteur],tabsuspension[compteur]);
fclose(fichierClientmegacool);
if (compteur=0)
{
printf("fichier vide");
return -2;
}
printf("état de suspension modifié !\n");
}
return 0;
}
int supressionclient (int *n)
{
int tabNC [100];
float tabCAG [100];
int tabsuspension [100];
int nc,suspension,compteur=0,taillemax=100,recherche2,nt=1;
float cagnotte;
FILE *fichierClientmegacool;
printf("quel est le numéro du client que vous souhaitez supprimer ?\n");
scanf("%d",&recherche2);
fichierClientmegacool=fopen("fichierclient.don","r");
if (fichierClientmegacool==NULL)
{
printf("Probléme d'ouverture");
return -2;
}
fscanf(fichierClientmegacool,"%d%f%d",&nc,&cagnotte,&suspension);
while(feof(fichierClientmegacool)==0)
{
if (compteur>*n)
{
printf("erreur de taille\n");
return 0;
}
tabNC[compteur]=nc;
tabCAG[compteur]=cagnotte;
tabsuspension[compteur]=suspension;
compteur=compteur+1;
fscanf(fichierClientmegacool,"%d%f%d",&nc,&cagnotte,&suspension);
}
fclose(fichierClientmegacool);
for (compteur=0;compteur<*n;compteur++)
if (tabNC[compteur]==recherche2)
{
while (compteur<=*n)
{
tabNC[compteur]=tabNC[compteur+1];
tabCAG[compteur]=tabCAG[compteur+1];
tabsuspension[compteur]=tabsuspension[compteur+1];
compteur=compteur+1;
nt=0;
}
*n=*n-1;
}
if (nt!=0)
{
printf("le numéro client n'existe pas\n");
return -6;
}
fichierClientmegacool=fopen("fichierclient.don","w");
if (fichierClientmegacool==NULL)
{
printf("Probléme d'ouverture");
return -2;
}
for (compteur=0;compteur<*n;compteur++)
fprintf(fichierClientmegacool, "%d\t%.2f\t%d\n",tabNC[compteur],tabCAG[compteur],tabsuspension[compteur]);
fclose(fichierClientmegacool);
printf("client supprimé.\n");
return 0;
}
int affichageall (void)
{
int nc,suspension;
float cagnotte;
FILE *flot;
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);
return 0;
}
int affichagesolo (void)
{
int rechercher,nc,suspension,validateur=0;
float cagnotte;
FILE *flot;
flot=fopen("fichierclient.don","r");
if (flot==NULL)
{
printf("erreur d'ouverture du fichier\n");
return -1;
}
printf("quel client recherchez vous ?\n");
scanf("%d",&rechercher);
fscanf(flot,"%d%f%d",&nc,&cagnotte,&suspension);
while (feof(flot)==0)
{
if (nc==rechercher)
{
printf("%d\t%.2f\t%d\n",nc,cagnotte,suspension);
validateur=12;
}
fscanf(flot,"%d%f%d",&nc,&cagnotte,&suspension);
}
fclose(flot);
if (validateur!=12)
{
printf("valeur non trouvé\n");
return 1;
}
return 0;
}
int creationfichier(void)
{
FILE *flot;
flot=fopen("fichierclient.don","a");
fclose(flot);
return 0;
}
int compteurtaillelogique (void)
{
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;
}