@ -1,6 +1,50 @@
# include "sae.h"
int modifclientglobal ( void )
{
char choix ;
int n , coderreur ;
printf ( " Bienvenue dans l'application de modulation client . \n que souhaitez vous faire aujourd'hui ? \n " ) ;
while ( choix ! = ' X ' )
{
n = compteurtaillelogique ( ) ;
printf ( " Appuyez sur 'A' pour ajouter un client, \n sur 'S' pour changer l'état de suspension d'une carte client, \n sur 'D' pour supprimer un client , \n sur 'V' pour afficher le dossier client, \n Ou sur 'X' pour sortir du programme ! \n " ) ;
scanf ( " %c%*c " , & choix ) ;
while ( choix ! = ' A ' & & choix ! = ' S ' & & choix ! = ' D ' & & choix ! = ' X ' & & choix ! = ' V ' )
{
printf ( " Entrée incorrect, veuillez ressasisir. \n " ) ;
scanf ( " %c%*c " , & choix ) ;
}
if ( choix = = ' A ' )
{
coderreur = ajoutClient ( ) ;
}
if ( choix = = ' S ' )
{
coderreur = suspensioncarte ( & n ) ;
}
if ( choix = = ' D ' )
{
coderreur = supressionclient ( & n ) ;
}
if ( choix = = ' V ' )
{
coderreur = affichage ( ) ;
}
}
printf ( " au revoir ! \n " ) ;
return 0 ;
}
int ajoutClient ( void )
{
@ -9,7 +53,7 @@ int ajoutClient (void)
FILE * fichierclient ;
printf ( " ajout d'un client au programme de fidélité... \n quel est le numéro de ce client ? \n " ) ;
scanf ( " %d " , & numeroclient ) ;
scanf ( " %d %*c " , & numeroclient ) ;
while ( numeroclient < 0 )
{
printf ( " le numéro du client ne peut être négatif , réessayez \n " ) ;
@ -47,28 +91,25 @@ int ajoutClient (void)
return - 2 ;
}
fprintf ( fichierclient , " %d \t % * .2f\t %d \n " , numeroclient , 1 00, 0 ) ;
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 su pensioncarte ( void )
int su spensioncarte ( int * n )
{
int tabNC [ 100 ] = { 0 } ;
float tabCAG [ 100 ] = { 0 } ;
int tab SUS [ 100 ] = { 0 } ;
int tabNC [ 100 ] ;
float tabCAG [ 100 ] ;
int tab suspension [ 100 ] ;
int nc , nouvellecarte , sus , compteur = 0 , compteurCAG , taillemax = 100 , recherche , n ;
int nc , nouvellecarte , sus pension , compteur = 0 , compteurCAG , taillemax = 100 , recherche ;
float cagnotte ;
FILE * fichierClientmegacool ;
n = compteurtaillelogique ( ) ;
fichierClientmegacool = fopen ( " fichierclient.don " , " r " ) ;
if ( fichierClientmegacool = = NULL )
{
@ -76,92 +117,111 @@ int supensioncarte (void)
return - 2 ;
}
fscanf ( fichierClientmegacool , " %d%f%d " , & nc , & cagnotte , & sus ) ;
fscanf ( fichierClientmegacool , " %d%f%d " , & nc , & cagnotte , & sus pension ) ;
while ( feof ( fichierClientmegacool ) = = 0 )
{
tabNC [ compteur ] = nc ;
tabCAG [ compteur ] = cagnotte ;
tab SUS [ compteur ] = sus ;
tab suspension [ compteur ] = sus pension ;
compteur = compteur + 1 ;
if ( compteur > n )
if ( compteur > * n )
{
printf ( " erreur de taille \n " ) ;
return 0 ;
}
fscanf ( fichierClientmegacool , " %d%f%d " , & nc , & cagnotte , & sus ) ;
fscanf ( fichierClientmegacool , " %d%f%d " , & nc , & cagnotte , & sus pension ) ;
}
fclose ( fichierClientmegacool ) ;
printf ( " quel carte souhaitez vous suspendre ou désuspendre (entrez numéro client) \n " ) ;
scanf ( " %d " , & recherche ) ;
scanf ( " %d %*c " , & recherche ) ;
while ( recherche < 0 )
{
printf ( " numéro non valide , veuillez réessayez \n " ) ;
scanf ( " %d " , & recherche ) ;
}
for ( compteur = 0 ; compteur < taillemax ; compteur + + )
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 " , tab SUS [ compteur ] ) ;
printf ( " l'état de la carte de ce client est %d \n " , tab suspension [ compteur ] ) ;
printf ( " modifiez l'état (0 pour non suspendu) (1 pour suspendu) \n " ) ;
scanf ( " %d " , & sus ) ;
while ( sus ! = 1 & & sus ! = 0 )
scanf ( " %d %*c " , & sus pension ) ;
while ( sus pension ! = 1 & & sus pension ! = 0 )
{
printf ( " état de suspension non valide , retapez. \n " ) ;
scanf ( " %d " , & sus ) ;
scanf ( " %d %*c " , & sus pension ) ;
}
if ( tab SUS [ compteur ] = = sus )
if ( tab suspension [ compteur ] = = sus pension )
{
printf ( " état de suspension est déja de %d \n " , sus ) ;
printf ( " état de suspension est déja de %d \n " , sus pension ) ;
return - 4 ;
}
tab SUS [ compteur ] = sus ;
tab suspension [ compteur ] = sus pension ;
}
compteur = compteur + 1 ;
}
if ( compteur > taillemax )
if ( suspension ! = 0 & & suspension ! = 1 )
{
printf ( " le client n'existe pas \n " ) ;
return - 2 ;
}
printf ( " le numéro client n'existe pas \n " ) ;
return - 7 ;
}
if ( tab SUS [ compteurCAG ] = = 1 )
if ( tab suspension [ compteurCAG ] = = 1 )
{
printf ( " création d'une nouvelle carte pour le client %d \n " , tabNC [ compteurCAG ] ) ;
* 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 ) ;
for ( compteur = 0 ; compteur < n ; compteur + + )
while ( tabNC [ n + 1 ] = = tabNC [ compteur ] )
scanf ( " %d%*c " , & nouvellecarte ) ;
while ( nouvellecarte < 0 )
{
printf ( " ne peut étre négatif \n " ) ;
scanf ( " %d%*c " , & nouvellecarte ) ;
}
for ( compteur = 0 ; compteur < * n ; compteur + + )
while ( nouvellecarte = = tabNC [ compteur ] )
{
printf ( " le client existe déja, ressaisissez \n " ) ;
scanf ( " %d " , & nouvellecarte ) ;
scanf ( " %d %*c " , & nouvellecarte ) ;
}
while ( nouvellecarte < 0 ) ;
}
else
{
printf ( " ne peut étre négatif \n " ) ;
scanf ( " %d " , & nouvellecarte ) ;
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 ] ) ;
tabNC [ n + 1 ] = nouvellecarte ;
tabCAG [ n + 1 ] = tabCAG [ compteurCAG ] ;
tabSUS [ n + 1 ] = sus ;
fclose ( fichierClientmegacool ) ;
for ( compteur = 0 ; compteur < n ; compteur + + )
fichierClientmegacool = fopen ( " fichierclient.don " , " a " ) ;
if ( fichierClientmegacool = = NULL )
{
printf ( " Probléme d'ouverture " ) ;
return - 2 ;
}
fprintf ( fichierClientmegacool , " %d \t %*.2f \t %d \n " , tabNC [ compteur ] , tabCAG [ compteur ] , tabSUS [ compteur ] ) ;
fprintf ( fichierClientmegacool , " %d \t % .2f\t %d \n " , nouvellecarte, tabCAG [ compteurCAG ] , 0 ) ;
fclose ( fichierClientmegacool ) ;
@ -171,10 +231,16 @@ int supensioncarte (void)
else
{
fichierClientmegacool = fopen ( " fichierclient.don " , " w " ) ;
if ( fichierClientmegacool = = NULL )
{
printf ( " Probléme d'ouverture " ) ;
return - 2 ;
}
for ( compteur = 0 ; compteur < n ; compteur + + )
for ( compteur = 0 ; compteur < * n ; compteur + + )
fprintf ( fichierClientmegacool , " %d \t %*.2f \t %d \n " , tabNC [ compteur ] , tabCAG [ compteur ] , tabSUS [ compteur ] ) ;
fprintf ( fichierClientmegacool , " %d \t % .2f\t %d \n " , tabNC [ compteur ] , tabCAG [ compteur ] , tab suspension [ compteur ] ) ;
fclose ( fichierClientmegacool ) ;
@ -188,15 +254,107 @@ int supensioncarte (void)
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%*c " , & 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 )
{
tabNC [ compteur ] = nc ;
tabCAG [ compteur ] = cagnotte ;
tabsuspension [ compteur ] = suspension ;
compteur = compteur + 1 ;
if ( compteur > * n )
{
printf ( " erreur de taille \n " ) ;
return 0 ;
}
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 affichage ( void )
{
int compteur , 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 ) ;
}
return 0 ;
}
int compteurtaillelogique ( void )
@ -216,5 +374,3 @@ int compteurtaillelogique (void)
return i ;
}
//fix les probléme de négativités