diff --git a/commun.c b/commun.c index a110713..fcbe6b0 100644 --- a/commun.c +++ b/commun.c @@ -1,4 +1,6 @@ //main commun +#include +#include #include "hCommun.h" //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -7,68 +9,451 @@ int Fillvar(int *tAd, char tnom[][15], char tpnom[][15], int *tage, int *tstate, int *tacti, int *tpasseoupas, int *tptsbought, int *tptsbonus, char *tcateg, int tmax)//lis le fichier et met les valeurs dans les tableaux { - FILE *f; - f = fopen("donneeClient.don", "r"); - if (f == NULL) + FILE *f; + f = fopen("donneeClient.don", "r"); + if (f == NULL) + { + printf("Problème d'ouverture du fichier Clients..."); + return -1; + } + int i = 0; + int numAd, age, state, acti, passeoupas, ptsbought, ptsbonus; + char categ, fnom[15], fprenom[15]; + + fscanf(f, "%6d", &numAd); + fscanf(f, "%s", fnom); + fscanf(f, "%s", fprenom); + fscanf(f, "%2d", &age); + fscanf(f, "%d", &state); + fscanf(f, "%d", &acti); + fscanf(f, "%d", &passeoupas); + fscanf(f, "%2d", &ptsbought); + fscanf(f, "%2d%*c", &ptsbonus); + fscanf(f, "%c", &categ); + + while (!feof(f)) + { + if (i == tmax) + { + printf("Problème de gestion: trop de clients enregistrés à ce jour"); + return -1; + } + + + tAd[i] = numAd; + strcpy(tnom[i], fnom); + strcpy(tpnom[i], fprenom); + tage[i] = age; + tstate[i] = state; + tacti[i] = acti; + tpasseoupas[i] = passeoupas; + tptsbought[i] = ptsbought; + tptsbonus[i] = ptsbonus; + tcateg[i] = categ; + + i++; + + fscanf(f, "%6d", &numAd); + fscanf(f, "%s", fnom); + fscanf(f, "%s", fprenom); + fscanf(f, "%2d", &age); + fscanf(f, "%d", &state); + fscanf(f, "%d", &acti); + fscanf(f, "%d", &passeoupas); + fscanf(f, "%2d", &ptsbought); + fscanf(f, "%2d%*c", &ptsbonus); + fscanf(f, "%c", &categ); + + } + fclose(f); + return i; +} +void GereAdhérent(void) +{ + int tAd[TAILLE], tage[TAILLE], tstate[TAILLE], tacti[TAILLE], tpasseoupas[TAILLE], tptsbought[TAILLE], tptsbonus[TAILLE], place, nbacti, chxacti, numAd, ret, insuf; + char tcateg[TAILLE], nom[TAILLE], pnom[TAILLE], fnom[TAILLE], fpnom[TAILLE], bCard, tnom[TAILLE][15], tpnom[TAILLE][15], action, choix, recharge; + place = Fillvar(tAd, tnom, tpnom, tage, tstate, tacti, tpasseoupas, tptsbought, tptsbonus, tcateg, 500); + + bCard = Card();//demande si carte avec client ou non + + + + if (bCard == 'N')// si client n'a pas la carte + { + Name(nom, pnom); + + puts("Recherche de la carte !"); + + place = FindData(nom, pnom, tnom, tpnom, tpasseoupas, tptsbought, &action, 500); + if (place == -1) + { + return; + } + } + + if (bCard == 'O') + { + printf("Numéro carte : \t"); + scanf("%*c%d", &numAd); + ret = FindN(tAd, numAd, tpasseoupas, 500); + if (ret == -1) + { + GereAdhérent(); + } + } + + + ChoiceMenu(&choix); + + if (choix == 'A') + { + printf("La carte dispose de %d points.\n", tptsbought[place]);//infos sur ses points + ChoiceMenu(&choix); + } + + if (choix == 'R') + { + Recharge(tptsbought, place, tcateg); + ChoiceMenu(&choix); + } + + if (choix == 'C') + { + printf("Nombre d'activités souhaitées ? (max 3)\n"); + scanf("%d", &nbacti); + while (nbacti < 0 || nbacti > 3) + { + printf("Nombre d'activités incorrect (max 3)\n"); + scanf("%d", &nbacti); + } + + chxacti = ChoiceActi(nbacti, tacti); + CheckPts(tptsbonus, tptsbought, tpasseoupas, tacti, tcateg, place, chxacti, &insuf); + if (insuf == 1) + { + printf("Nombre de points insuffisants : Recharge (R) ou Quitter (Q)"); + scanf("%c%*c", &recharge); + if (recharge == 'R') + { + Recharge(tptsbought, place, tcateg); + } + else + { + ChoiceMenu(&choix); + } + } + + + ChoiceMenu(&choix); + + } + + if (choix == 'Q') { - printf("Problème d'ouverture du fichier Clients..."); + //menuglobal() + return; + } +} + +char Card(void)//demande si client a la carte +{ + char bCard; + printf("Avez-vous votre numéro de carte adhérent avec vous ?(O/N)\n"); + scanf("%c", &bCard); + return bCard; +} + + + +void Name( char *nom, char *prenom)//demande nom et prénom +{ + printf("Dans ce cas, quel est votre nom ?\n"); + scanf("%s", nom); + + printf("Et votre prénom ?\n"); + scanf("%s", prenom); +} + + + + +int FindData(char *nom, char *pnom, char tnom[][15], char tpnom[][15], int *tpasseoupas, int *tptsbought, char *action, int tmax) +{ + int i, found = 0, testnom, testpnom; + i = 0; + testnom = strcmp(tnom[i], nom);//comparer nom du fichier et nom donné + testpnom = strcmp(tpnom[i], pnom);//comparer prénom du fichier et prénom donné + while (found == 0 && i < tmax) + { + if (testnom == 0) + { + if (testpnom == 0) + found = 1; + break; + } + i++; + testnom = strcmp(tnom[i], nom); + testpnom = strcmp(tpnom[i], pnom); + } + + if (found == 0) + { + printf("Recherche non aboutie : numéro non enregistré...\n");//si le client n'est au final pas enregistré return -1; } - int i = 0; - int numAd, age, state, acti, passeoupas, ptsbought, ptsbonus; - char categ, fnom[15], fprenom[15]; - - fscanf(f, "%6d", &numAd); - fscanf(f, "%s", fnom); - fscanf(f, "%s", fprenom); - fscanf(f, "%2d", &age); - fscanf(f, "%d", &state); - fscanf(f, "%d", &acti); - fscanf(f, "%d", &passeoupas); - fscanf(f, "%2d", &ptsbought); - fscanf(f, "%2d%*c", &ptsbonus); - fscanf(f, "%c", &categ); - - while (!feof(f)) - { - if (i == tmax) + + if (found == 1)//si trouvé + { + if (tpasseoupas[i] == 1)//si client déjà passé { - printf("Problème de gestion: trop de clients enregistrés à ce jour"); + printf("Déjà passé, nombre possible de passage dans une journée : 1...\n"); return -1; } + printf("Carte trouvée !\n"); + return i; + } +} - tAd[i] = numAd; - strcpy(tnom[i], fnom); - strcpy(tpnom[i], fprenom); - tage[i] = age; - tstate[i] = state; - tacti[i] = acti; - tpasseoupas[i] = passeoupas; - tptsbought[i] = ptsbought; - tptsbonus[i] = ptsbonus; - tcateg[i] = categ; +int FindN(int *tAd, int numAd, int *tpasseoupas, int tmax) +{ + int i, found = 0; + i = 0; + while (found == 0 && i < tmax) + { + if(tAd[i] == numAd) + { + break; + } i++; + } + + if (found == 0) + { + printf("Recherche non aboutie : numéro non enregistré...\n");//si le client n'est au final pas enregistré + return -1; + } + + if (found == 1)//si trouvé + { + if (tpasseoupas[i] == 1)//si client déjà passé + { + printf("Déjà passé, nombre possible de passage dans une journée : 1...\n"); + return -1; + } + printf("Carte trouvée !\n"); + return i; + } +} + + +void Recharge(int *tptsbought, int place, char *tcateg) +{ + int dizpts, topay, nbpts; + printf("Combien de dizaines de points souhaitez-vous acheter ?\n"); + scanf("%d", &dizpts); + while (dizpts > 100 || dizpts < 0) + { + printf("Veuillez entrer un nombre correct de dizaines de points\n"); + scanf("%d", &dizpts); + } + + if (tcateg[place] == 'E') + { + nbpts = dizpts * 10; + topay = dizpts * 2; + tptsbought[place] += nbpts; + + printf("Vous avez désormais %d points sur la carte, vous nous devez %d €\n", tptsbought[place], topay); + } + + if (tcateg[place] == 'S') + { + nbpts = dizpts * 10; + topay = dizpts * 4; + tptsbought[place] += nbpts; + + printf("Vous avez désormais %d points sur la carte, vous nous devez %d €\n", tptsbought[place], topay); + } + + if (tcateg[place] == 'A') + { + nbpts = dizpts * 10; + topay = dizpts * 6; + tptsbought[place] += nbpts; + + printf("Vous avez désormais %d points sur la carte, vous nous devez %d €\n", tptsbought[place], topay); + } + +} + + + +int Acti(int i) +{ + int acti; + printf("Choix de l'activité %d: badminton (1) | football (2) | zumba (3) | musculation (4) | squash (5) \n", i); + scanf("%*c%d%*c", &acti); + while (acti != 1 && acti != 2 && acti != 3 && acti != 4 && acti != 5) + { + printf("Veuillez entrer un nombre d'activité correct (badminton (1) | football (2) | zumba (3) | musculation (4) | squash (5))\n"); + scanf("%d%*c", &acti); + } + return acti; +} + + + +int ChoiceActi(int nbacti, int *tacti) +{ + int chxacti, chx1, chx2, chx3; + + if (nbacti == 1) + { + chxacti = Acti(nbacti); + } + - fscanf(f, "%6d", &numAd); - fscanf(f, "%s", fnom); - fscanf(f, "%s", fprenom); - fscanf(f, "%2d", &age); - fscanf(f, "%d", &state); - fscanf(f, "%d", &acti); - fscanf(f, "%d", &passeoupas); - fscanf(f, "%2d", &ptsbought); - fscanf(f, "%2d%*c", &ptsbonus); - fscanf(f, "%c", &categ); + if (nbacti == 2) + { + chx1 = Acti(nbacti-1); + chx2 = Acti(nbacti); + chxacti = chx1 + chx2*10 ; + + } + if (nbacti == 3) + { + chx1 = Acti(nbacti-2); + chx2 = Acti(nbacti-1); + chx3 = Acti(nbacti); + chxacti = chx1 + chx2*10 + chx3*100; } - fclose(f); - return 0; + return chxacti; } +void ChoiceMenu(char *choix) +{ + printf("Recharge carte (R) | Afficher points (A) | Choix activités (C) | Quitter (Q)\n"); + scanf("%c%*c", choix); + while (*choix != 'R' && *choix != 'A' && *choix != 'C' && *choix != 'Q') + { + printf("Entrer un caractère correct R | A | C | Q \n"); + scanf("%c%*c%*c", choix); + } +} + + +void CheckPts(int *tptsbonus, int *tptsbought, int *tpasseoupas, int *tacti, char *tcateg, int place, int acti, int *insuf) +{ + int u , d, c, actu = 0, actd = 0, actc = 0, ptsneeded; + char confirm; + u = acti % 10;//acti1 + d = (acti % 100 )/10 ;//acti2 + c = acti / 100;//acti3 + actu = CheckActi(u); + actd = CheckActi(d); + actc = CheckActi(c); + ptsneeded = actu + actd + actc; + + if (ptsneeded <= tptsbought[place]) + { + ("Points suffisants, confirmation ? (O/N) \n"); + scanf("%c%*c", &confirm); + if (confirm == 'O') + { + tptsbought[place] -= ptsneeded; + tptsbonus[place] += ptsneeded; + if (tptsbonus[place] >= 100) + { + tptsbought[place] += 15; + tptsbonus[place] -= 100; + tpasseoupas[place] = 1; + } + + tacti[place] = acti; + } + } + else + { + *insuf = 1; + } +} + + +int CheckActi(int nb) +{ + if (nb == 1)//badminton + { + return 8; + } + + if (nb == 2)//football + { + return 5; + } + + if (nb == 3)//zumba + { + return 5; + } + + if (nb == 4)//muscu + { + return 15; + } + + if (nb == 5)//squash + { + return 10; + } +} + +void Save(int *tAd, char tnom[][15], char tpnom[][15], int *tage, int *tstate, int *tacti, int *tpasseoupas, int *tptsbought, int *tptsbonus, char *tcateg, int tmax, int place) +{ + int i = 0; + FILE *fs; + + + fs = fopen("data.don", "a"); + if (fs == NULL) + { + printf("Erreur fichier data.don\n"); + } + fprintf(fs, "%d ", tAd[i]); + fprintf(fs, "%s ", tnom[i]); + fprintf(fs, "%s\t", tpnom[i]); + fprintf(fs, "%d\t", tage[i]); + fprintf(fs, "%d\t", tstate[i]); + fprintf(fs, "%d\t", tacti[i]); + fprintf(fs, "%d\t", tpasseoupas[i]); + fprintf(fs, "%d\t", tptsbought[i]); + fprintf(fs, "%d\t", tptsbonus[i]); + fprintf(fs, "%c", tcateg[i]); + + i++; + for (i; i < place; i++) + { + fprintf(fs, "%d ", tAd[i]); + fprintf(fs, "%s ", tnom[i]); + fprintf(fs, "%s\t", tpnom[i]); + fprintf(fs, "%d\t", tage[i]); + fprintf(fs, "%d\t", tstate[i]); + fprintf(fs, "%d\t", tacti[i]); + fprintf(fs, "%d\t", tpasseoupas[i]); + fprintf(fs, "%d\t", tptsbought[i]); + fprintf(fs, "%d\t", tptsbonus[i]); + fprintf(fs, "%c", tcateg[i]); + } + + + + +} + @@ -92,22 +477,20 @@ void fRecherche(int *tAd, int n, int noClient, int *coderet, int *rang) *rang = i; return; } - if(tAd[i] > noClient) - - *rang = i; - return; } + *coderet=0; } //Affichage D'UN client avec toutes ses données. -void fAffichage1Client(int *tAd, char tnom[][15], char tpnom[][15], int *tage, int *tstate, int n, int noClient ) -{ - int i, coderet, rang, trouve, NonTrouve; +void fAffichage1Client(int *tAd, char tnom[][15], char tpnom[][15], int *tage,int *tstate, int n, int noClient , int *tptsbought, char *tcateg) + { + int i, coderet, rang, trouve; fRecherche(tAd, n, noClient, &coderet, &rang); trouve = coderet; + printf("%d",trouve); while (trouve == 0) { @@ -115,16 +498,19 @@ void fAffichage1Client(int *tAd, char tnom[][15], char tpnom[][15], int *tage, i { printf("Le numero client n'a pas été trouvé \n"); printf("Veuillez entrer a nouveau le N° Client ou taper -1 pour annuler\n"); - scanf("%d", &NonTrouve); - } - if(NonTrouve==-1) + scanf("%d", &noClient); + fRecherche(tAd, n, noClient, &coderet, &rang); + trouve=coderet; + printf("%d", trouve); + if(noClient==-1) + { return; - else - fRecherche(tAd, n, noClient, &coderet, &rang); - trouve=coderet; + } + } - printf(" N° Client\t Nom\t Prénom\t Age\t Tarif\n"); - printf("%d\t %s \t %S\t %d\t %S\n", tAd[rang], tnom[rang], tpnom[rang], tage[rang], tstate[rang]); +} + printf(" N° Client\t Nom\t Prénom\t Age\t Tarif\t Nombre de points \t \n"); + printf("%d\t %s \t %s\t %d\t %c \t%d\n", tAd[rang], tnom[rang], tpnom[rang], tage[rang], tcateg[rang], tptsbought[rang]); } @@ -146,9 +532,9 @@ int affNbmEntree( int *tpasseoupas, int tlog) { int i, nbentre; for( i=0 ; i VSUIVANTE) + { + VSUIVANTE=next; + } + } + printf("\n###########################################################\n"); + printf("\nQue souhaitez vous faire? |"); + printf("\n |"); + printf("\n\t1- Créer un compte |\n"); + printf("\t2- Adhérent |\n"); + printf("\t3- Accueil client |\n"); + printf("\t4- Suppression |\n"); + printf("\t5- Carte |\n"); + printf("\t6- Fin de journée |\n"); + printf("\tControle C pour quitter sans sauvegarder |\n"); + printf("\n###########################################################\n\n"); + + //printf("\nTapez h pour une aide\n"); + scanf("%d%*c", &choix); + + while (1 > choix || choix> 6) + { + printf("\nEntrez soit 1, soit 2.\t"); + scanf("%d%*c", &choix); + } +/* + if (choix == 'h') + { + printf("\n\tBienvenue dans notre application!\n"); + printf("\nVous êtes arrivées dans le menu de notre incroyable salle de sport\n"); + printf("Tapez le nombre au début de la liste des fonctionnalitées pour y accéder"); + printf("\nSi vous êtes nouveau, nous vous conseillons de créer un compte en tapant 1 dan le menu"); + printf("\nTapez O pour retourner au menu principal\n"); + scanf("%c",&retourmenu); + + while ( retourmenu != 'O') + { + printf("\nTapez la lettre O pour revenir au menu.\t"); + scanf("%*c%c%*c", &retourmenu); + } + + if (retourmenu == 'O') + Index(); + + } +*/ + if (choix == 1) + { + creationCompte( &VSUIVANTE); + } + + if (choix == 2) + { + menuAff(tAd, tnom, tpnom, tage, tstate, tacti, tpasseoupas, tptsbought, tptsbonus, tcateg, 500, n); + } + + if (choix == 3) + { + GereAdhérent(); + } + + } + +void creationCompte(int *VSUIVANTE) + { + char nom[15], prenom[20], categorie, gen, retour; + int age, nclient; + FILE *fe, *fx, *fn; + fe= fopen("donneClient.don", "a"); + fx= fopen("x.don","a"); + + + if (fe==NULL) + { + printf(" Erreur ouverture fichier"); + } + + printf("\nEntrez votre nom\n"); + scanf("%s%*c", nom); + + printf("\nEntrez votre prenom\n"); + scanf("%s%*c", prenom); + + printf("\nEntrez votre age\n"); + scanf("%d%*c", &age); + + printf("Avez-vous un tarif spécial: Etudiant(E), Senior(S), aucun(A)?\n"); + scanf("%c%*c", &categorie); + + + fprintf(fe,"\n%d\t",*VSUIVANTE); + fprintf(fe,"%s\t",nom); + fprintf(fe,"%s\t",prenom); + fprintf(fe,"%d\t",age); + fprintf(fe, "0\t"); //état de la carte + fprintf(fe, "0\t"); //activité + fprintf(fe, "0\t"); //passé ou pas + fprintf(fe, "30\t"); //point acheté + fprintf(fe, "0\t"); //point cumulé + fprintf(fe,"%c",categorie); + + *VSUIVANTE=*VSUIVANTE+1; + + fprintf(fx,"\n%d",*VSUIVANTE); + + printf("Ajoutez un contact?(O/N)\n"); + scanf("%c%*c", &retour); + + if (retour == 'O') + creationCompte(VSUIVANTE); + else + return; + +} + +void menuAff (int *tAd, char tnom[][15], char tpnom[][15], int *tage, int *tstate, int *tacti, int *tpasseoupas, int *tptsbought, int *tptsbonus, char *tcateg, int tmax, int n) + { + int choix, noClient; + printf("\n1-Affiche un client"); + printf("\n1-Affiche un client"); + printf("\n1-Affiche un client"); + + scanf("%d%*c", &choix); + + if ( choix == 1) + { + printf("\nNuméro du client recherché?"); + scanf("%d%*c", &noClient); + fAffichage1Client(tAd, tnom, tpnom, tage, tstate, n, noClient, tptsbought, tcateg); + } + } + diff --git a/evsae.c b/evsae.c index 7946af4..6644576 100644 --- a/evsae.c +++ b/evsae.c @@ -73,22 +73,6 @@ void menu (void) } - -/* -void c(void) - { - int x=10000000, i=0; - FILE *fe; - fe = fopen("nclient.don","w"); - - for (i=0; i +#include +#define TAILLE 500 int Fillvar(int *tAd, char tnom[][15], char tpnom[][15], int *tage, int *tstate, int *tacti, int *tpasseoupas, int *tptsbought, int *tptsbonus, char *tcateg, int tmax); +void fAffichage1Client(int *tAd, char tnom[][15], char tpnom[][15], int *tage,int *tstate, int n, int noClient , int *tptsbought, char *tcateg); +int affNbmEntree( int *tpasseoupas, int tlog); +void cptAct(int *bad, int *muscu, int *foot, int *squa, int * zumba, int chx); +void affNbParAct(int *tacti, int tlog); +void suppr1Client(int *tAd, char tnom[][15], char tpnom[][15], int *tage, int *tstate, int *tacti, int *tpasseoupas, int *tptsbought, int *tptsbonus, char *tcateg, int *n, int tmax); char Card(void);//check si le client a la carte -void Name( char *nom, char *prenom); -void scanNandP(char *nom, char *prenom); - +void Index(void); +void creationCompte(int *VSUIVANTE); +void fRecherche(int *tAd, int n, int noClient, int *coderet, int *rang); +void Name( char *nom, char *prenom); +int FindData(char *nom, char *prenom, char tnom[][15], char tpnom[][15], int *tpasseoupas, int *tptsbought, char *action, int tmax); +void Recharge(int *tptsbought, int place, char *tcateg); +int ChoiceActi(int nbacti, int *tacti); +int Acti(int i); +void ChoiceMenu(char *choix); +int CheckActi(int nb); +int FindN(int *tAd, int numAd, int *tpasseoupas, int tmax); +void CheckPts(int *tptsbonus, int *tptsbought, int *tpasseoupas, int *tacti, char *tcateg, int place, int acti, int *insuf); +void GereAdhérent(void); +void Save(int *tAd, char tnom[][15], char tpnom[][15], int *tage, int *tstate, int *tacti, int *tpasseoupas, int *tptsbought, int *tptsbonus, char *tcateg, int tmax, int place); +void menuAff (int *tAd, char tnom[][15], char tpnom[][15], int *tage, int *tstate, int *tacti, int *tpasseoupas, int *tptsbought, int *tptsbonus, char *tcateg, int tmax, int n); diff --git a/tsae.c b/tsae.c index 1a766bc..f1b65c4 100644 --- a/tsae.c +++ b/tsae.c @@ -2,7 +2,7 @@ #include #include -void main(void) +void GereAdhérent(void) { int tAd[TAILLE], tage[TAILLE], tstate[TAILLE], tacti[TAILLE], tpasseoupas[TAILLE], tptsbought[TAILLE], tptsbonus[TAILLE], place, nbacti, chxacti, numAd, ret, insuf, day = 0; char tcateg[TAILLE], nom[TAILLE], pnom[TAILLE], fnom[TAILLE], fpnom[TAILLE], bCard, member, tnom[TAILLE][15], tpnom[TAILLE][15], action, choix, recharge;