//main commun #include #include #include "hCommun.h" //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //LOLA 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; } void GereAdhérent(void) { int tAd[TAILLE], tage[TAILLE], tstate[TAILLE], tacti[TAILLE], tpasseoupas[TAILLE], tptsbought[TAILLE], tptsbonus[TAILLE], place, nbacti, choix, chxacti, numAd, ret, insuf, day = 0; char tcateg[TAILLE], nom[TAILLE], pnom[TAILLE], fnom[TAILLE], fpnom[TAILLE], bCard, tnom[TAILLE][15], tpnom[TAILLE][15], action, 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) { Index(); } } choix = ChoiceMenu(); Loop(tAd, tnom, tpnom, tage, tstate, tacti, tpasseoupas, tptsbought, tptsbonus, tcateg, &choix, &insuf, place, nbacti); } 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]) { ("Points suffisants, confirmation ? (O/N) \n"); scanf("%*c%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]); } } 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(); } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //ROXANE //Fonction recherche, (*coderet = 1 si trouvé, = 0 si pas trouvé.) (*rang = rang a laquel se trouve ou doit se trouver la valeur) void fRecherche(int *tAd, int n, int noClient, int *coderet, int *rang) { int i; for(i = 0; i < n; i++) { if(tAd[i] == noClient) { *coderet = 1; *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 *tptsbought, char *tcateg) { int i, coderet, rang, trouve; fRecherche(tAd, n, noClient, &coderet, &rang); trouve = coderet; printf("%d",trouve); while (trouve == 0) { if(coderet == 0) { 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", &noClient); fRecherche(tAd, n, noClient, &coderet, &rang); trouve=coderet; printf("%d", trouve); if(noClient==-1) { return; } } } 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]); } //Affichage plusieurs client avec toutes les données int afficheTous(int *tAd, char tnom[][15], char tpnom[][15], int *tage, int *tstate, int n, int noClient ) { int i; printf(" N° Client\t Nom\t Prénom\t Age\t Tarif\n"); for (int i = 0; i < n; ++i) { printf("%d\t %s\t %s\t %d\t %s\n", tAd, tnom, tpnom, tage, tstate); } return i; } // calcul du nombre d'entree par jour et l'affiche 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); } }