#include "sae.h" #include #include 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) { 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, "%d%*c", &numAd); fscanf(f, "%s%*c", fnom); fscanf(f, "%s%*c", fprenom); fscanf(f, "%d%*c", &age); fscanf(f, "%d%*c", &state); fscanf(f, "%d%*c", &acti); fscanf(f, "%d%*c", &passeoupas); fscanf(f, "%d%*c", &ptsbought); fscanf(f, "%d%*c", &ptsbonus); fscanf(f, "%c%*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, "%d%*c", &numAd); fscanf(f, "%s%*c", fnom); fscanf(f, "%s%*c", fprenom); fscanf(f, "%d%*c", &age); fscanf(f, "%d%*c", &state); fscanf(f, "%d%*c", &acti); fscanf(f, "%d%*c", &passeoupas); fscanf(f, "%d%*c", &ptsbought); fscanf(f, "%d%*c", &ptsbonus); fscanf(f, "%c%*c", &categ); } fclose(f); return i; } 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; } 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; } } 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%*c", &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("%d%*c", &acti); while (acti <= 0 && acti >= 6) { 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); } 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; } return chxacti; } int ChoiceMenu(void) { int choix; printf("Recharge carte (1) | Afficher points (2) | Choix activités (3) | Quitter (4)\n"); scanf("%d", &choix); while (choix > 4 || choix < 1) { printf("Entrer un caractère correct 1 | 2 | 3 | 4 \n"); scanf("%d%*c", &choix); } return 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]) { printf("Points suffisants, confirmation ? (O/N) \n"); scanf("%c%*c", &confirm); if (confirm == 'O') { tptsbought[place] -= ptsneeded; tptsbonus[place] += ptsneeded; printf("Achat effectué\n"); 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]); } } void Loop(int *tAd, char tnom[][15], char tpnom[][15], int *tage, int *tstate, int *tacti, int *tpasseoupas, int *tptsbought, int *tptsbonus, char *tcateg, int *choix, int *insuf, int place, int nbacti) { int chxacti; char recharge; while (*choix != 4) { if (*choix == 2) { printf("La carte dispose de %d points.\n", tptsbought[place]);//infos sur ses points } if (*choix == 1) { Recharge(tptsbought, place, tcateg); } if (*choix == 3) { printf("Nombre d'activités souhaitées ? (max 3)\n"); scanf("%*c%d", &nbacti); while (nbacti < 0 || nbacti > 3) { printf("Nombre d'activités incorrect (max 3)\n"); scanf("%*c%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%*c", &recharge); if (recharge == 'R') { Recharge(tptsbought, place, tcateg); } } } *choix = ChoiceMenu(); } }