@ -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 . \n que souhaitez vous faire aujourd'hui ? \n " ) ;
while ( choix ! = 9 )
{
n = compteurtaillelogique ( ) ;
printf ( " \n " ) ;
printf ( " Appuyez sur '1' pour ajouter un client, \n sur '2' pour changer l'état de suspension d'une carte client, \n sur '3' pour supprimer un client , \n sur '4' pour afficher le fichier client, \n sur '5' pour chercher un seul client dans le fichier, \n Ou sur '9' pour sortir du programme !\n " ) ;
printf ( " Appuyez sur '1' pour ajouter un client, \n sur '2' pour changer l'état de suspension d'une carte client, \n sur '3' pour supprimer un client , \n sur '4' pour afficher le fichier client, \n sur '5' pour chercher un seul client dans le fichier, \n Ou 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é... \n quel 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é... \n quel 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 ] = = recherche 2 )
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 , valida teur= 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 ;
}