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.
415 lines
8.7 KiB
415 lines
8.7 KiB
#include "sae.h"
|
|
#include <string.h>
|
|
#include <stdio.h>
|
|
|
|
|
|
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();
|
|
}
|
|
}
|