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.
706 lines
21 KiB
706 lines
21 KiB
/**
|
|
* \file sae.c
|
|
* \brief Ce fichier contient des fonctions afin de gérer un complexe sportif et relaxant.
|
|
* \author ROUX Denovan, GUITARD Maxence, LOUVET Titouan
|
|
* \date 10 novembre 2022
|
|
*/
|
|
|
|
|
|
#include "complexe.h"
|
|
|
|
|
|
|
|
/**
|
|
* \brief Cette fonction récupère les données stockées dans le fichier adherent.txt, elle les stockes dans leurs tableaux respectifs.
|
|
* \param tabId Tableau contenant l'id des adhérents.
|
|
* \param tabNbP Tableau contenant le nombre de points des adhérents.
|
|
* \param tabEtat Tableau contenant l'état des cartes des adhérents.
|
|
* \param tabDate Tableau contenant la dernière date de fréquentation des adhérents.
|
|
* \param tabPBonus Tableau contenant le nombre de fréquentation des adhérents.
|
|
* \param tmax Taille physique des tableaux
|
|
* \return Taille logique des tableaux
|
|
*/
|
|
|
|
int chargement(int tabID[], int tabNbP[], int tabEtat[], int tabDate[], int tabPBonus[], int tmax)
|
|
{
|
|
int i=0,nbp, etat, date, pbonus, id;
|
|
FILE *flot;
|
|
flot = fopen("adherent.txt","r");
|
|
if(flot==NULL)
|
|
{
|
|
printf("Pb d'ouverture du fichier adherent.txt\n");
|
|
fclose(flot);
|
|
return -1;
|
|
}
|
|
fscanf(flot,"%d%d%d%d%d", &id, &nbp, &etat, &date, &pbonus);
|
|
while(!feof(flot))
|
|
{
|
|
if(i==tmax)
|
|
{
|
|
printf("tableaux pleins\n");
|
|
return tmax;
|
|
}
|
|
tabID[i] = id;
|
|
tabNbP[i]=nbp;
|
|
tabEtat[i]=etat;
|
|
tabDate[i]=date;
|
|
tabPBonus[i]=pbonus;
|
|
i=i+1;
|
|
fscanf(flot,"%d%d%d%d%d", &id, &nbp, &etat, &date, &pbonus);
|
|
}
|
|
fclose(flot);
|
|
return i;
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* \brief Cette fonction cherche la position dans l'ordre croissant
|
|
* \param tab Tableau trié où l'on cherche
|
|
* \param val Valeur recherché dans le tableau
|
|
* \param nb Taille logique du tableau
|
|
* \param trouve Pointeur d'un variable pour savoir si val a était trouvé
|
|
* \return Renvoie la position de val si elle est trouvé ou la position où elle doit être insérer
|
|
*/
|
|
int position(int tab[], int val, int nb, int *trouve)
|
|
{
|
|
int i;
|
|
for(i=0; i<nb; i++)
|
|
{
|
|
if(tab[i] == val)
|
|
{
|
|
*trouve = 1;
|
|
return i;
|
|
}
|
|
if(tab[i] > val)
|
|
{
|
|
*trouve = -1;
|
|
return i;
|
|
}
|
|
}
|
|
*trouve = -1;
|
|
return nb;
|
|
}
|
|
|
|
|
|
/**
|
|
* \brief Cette fonction sauvegarde les données changés dans le fichier adherent.txt
|
|
* \param tabID Les éléments de tabID seront enregistrés dans le fichier
|
|
* \param tabNbP Les éléments de tabNbP seront enregistrés dans le fichier
|
|
* \param tabEtat Les éléments de tabEtat seront enregistrés dans le fichier
|
|
* \param tabDate Les éléments de tabDate seront enregistrés dans le fichier
|
|
* \param tabPBonus Les éléments de tabPBonus seront enregistrés dans le fichier
|
|
* \param nb Taille logique des tableaux
|
|
*/
|
|
|
|
|
|
void sauvegarde(int tabID[], int tabNbP[], int tabEtat[], int tabDate[], int tabPBonus[], int nb)
|
|
{
|
|
FILE *flot;
|
|
int i=0;
|
|
flot = fopen("adherent.txt", "w");
|
|
if (flot == NULL)
|
|
{
|
|
printf("Erreur d'ouverture du fichier matieres_save.txt en écriture\n");
|
|
fclose(flot);
|
|
return;
|
|
}
|
|
while(i<nb)
|
|
{
|
|
fprintf(flot, "%d\t%d\t%d\t%d\t%d\n",tabID[i], tabNbP[i], tabEtat[i], tabDate[i], tabPBonus[i]);
|
|
i++;
|
|
}
|
|
fclose(flot);
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* \brief Cette fonction sert a supprimer un adhérent et toutes ses données
|
|
* \param tabID Les éléments concernant l'adhérents de tabID vont etre supprimer
|
|
* \param tabNbP Les éléments concernant l'adhérents de tabNbP vont etre supprimer
|
|
* \param tabEtat Les éléments concernant l'adhérents de tabEtat vont etre supprimer
|
|
* \param tabDate Les éléments concernant l'adhérents de tabDate vont etre supprimer
|
|
* \param tabPBonus Les éléments concernant l'adhérents de tabPBonus vont etre supprimer
|
|
* \param nb On enlève 1 a la taille logique des tableaux
|
|
*/
|
|
|
|
void supprAdherent(int tabID[], int tabNbP[], int tabEtat[], int tabDate[], int tabPBonus[], int *nb)
|
|
{
|
|
int i, trouve, id, pos;
|
|
printf("Entrez l'id que vous souhaitez supprimer : ");
|
|
scanf("%d", &id);
|
|
pos = position(tabID, id, *nb, &trouve);
|
|
if(trouve == -1)
|
|
{
|
|
printf("Id non existant");
|
|
return;
|
|
}
|
|
for(i=pos; i<=*nb; i++) // décaler à gauche
|
|
{
|
|
tabID[i] = tabID[i+1];
|
|
tabNbP[i] = tabNbP[i+1];
|
|
tabEtat[i] = tabEtat[i+1];
|
|
tabPBonus[i] = tabPBonus[i+1];
|
|
}
|
|
*nb = *nb-1;
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* \brief Cette fonction affiche tous les adhérents avec leur infos
|
|
* \param tabID Affiche les ID
|
|
* \param tabPBonus Affiche les Points bonus
|
|
* \param tabEtat Affiche l'état des cartes
|
|
* \param tabNbP Affiche le nombre de points
|
|
* \param tabDate Affiche la date de la dernière fréquentation
|
|
* \param nb Taille logique des tableaux
|
|
*/
|
|
|
|
void afficherTAdherent(int tabID[], int tabPBonus[], int tabEtat[], int tabNbP[], int tabDate[], int nb)
|
|
{
|
|
int i;
|
|
printf("N° Adhérent\tNbre de points\tÉtat carte\tNbre points bonus\tDate derniere venue\n");
|
|
for(i=0; i<nb; i++)
|
|
printf("%d\t\t%d\t\t%d\t\t%d\t\t\t%d\n", tabID[i], tabNbP[i], tabEtat[i], tabPBonus[i], tabDate[i]);
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* \brief Cette fonction sert a ajouter un adhérent et toutes ses données
|
|
* \param tabID Les éléments concernant l'adhérents de tabID vont etre ajouter
|
|
* \param tabNbP Les éléments concernant l'adhérents de tabNbP vont etre ajouter
|
|
* \param tabEtat Les éléments concernant l'adhérents de tabEtat vont etre ajouter
|
|
* \param tabDate Les éléments concernant l'adhérents de tabDate vont etre ajouter
|
|
* \param tabPBonus Les éléments concernant l'adhérents de tabPBonus vont etre ajouter
|
|
* \param nb On ajoute 1 a la taille logique des tableaux
|
|
*/
|
|
|
|
void insertAdherent(int tabID[], int tabNbP[], int tabEtat[], int tabDate[], int tabPBonus[], int *nb, int tPhysiq)
|
|
{
|
|
|
|
int ID, euro, i, verif, pos;
|
|
|
|
if(*nb == tPhysiq)
|
|
{
|
|
printf("Err : Problème de place, veuillez supprimer des adhérents.\n");
|
|
return;
|
|
}
|
|
|
|
printf("Entrez l'ID de l'adhérent :");
|
|
scanf("%d", &ID);
|
|
pos = position(tabID, ID, *nb, &verif);
|
|
|
|
if(verif == 1)
|
|
{
|
|
printf("Err : L'adhérent existe déjà.\n");
|
|
return;
|
|
}
|
|
printf("\nEntrez l'argent en € déboursé par l'adhérent à l'inscription (2pt = 1€):");
|
|
scanf("%d", &euro);
|
|
|
|
|
|
|
|
//Décalage à droite
|
|
for(i=*nb; i>=pos; i--)
|
|
{
|
|
tabID[i+1] = tabID[i];
|
|
tabNbP[i+1] = tabNbP[i];
|
|
tabEtat[i+1] = tabEtat[i];
|
|
tabDate[i+1] = tabDate[i];
|
|
tabPBonus[i+1] = tabPBonus[i];
|
|
}
|
|
|
|
tabID[pos] = ID;
|
|
tabNbP[pos] = euro * 2;
|
|
tabEtat[pos] = 1;
|
|
tabDate[pos] = 0;
|
|
tabPBonus[pos] = 0;
|
|
*nb = *nb+1;
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
* \brief Cette fonction est un menu qui affiche les activités et les fait en fonction du choix de l'adhérents
|
|
* \param tabID L'id de l'adhérent est rentré pour utiliser les points sur son compte
|
|
* \param tabDate La date de dernière fréquentation est changé à celle du jour
|
|
* \param tabEtat Vérifie que l'étatt de la carte de l'adhérent est activé
|
|
* \param tabNbP Compte le nm de points de l'ahdérent, en enlève ou en ajoute
|
|
* \param tabPBonus Donne des points à l'ahdérent si il a fait plus de 10 activités
|
|
* \param nb Taille logique du tableau
|
|
*/
|
|
|
|
void menuActivite(int tabID[], int tabDate[], int tabEtat[], int tabNbP[], int tabPBonus[], int tabActivite[], int nb)
|
|
{
|
|
int i, trouve, pos, id, point, date, choix, ptTotal = 0, autreAct, ptCumul;
|
|
printf("Entrez l'ID du compte avec lequel vous souhaitez faire une/des activités : ");
|
|
scanf("%d", &id);
|
|
pos = position(tabID, id, nb, &trouve);
|
|
if(trouve == -1)
|
|
{
|
|
printf("ID non existant\n");
|
|
return;
|
|
}
|
|
printf("Entrez la date du jour (JJMMAAAA) : ");
|
|
scanf("%d", &date);
|
|
if(tabDate[pos] == date)
|
|
{
|
|
printf("Vous avez déja fréquenter le centre aujourd'hui\n");
|
|
return;
|
|
}
|
|
if(tabEtat[pos] == 0)
|
|
{
|
|
printf("Votre carte est désactiver\n");
|
|
return;
|
|
}
|
|
tabDate[pos] = date;
|
|
printf("\nUn système de point bonus est actuellement en cours. Au bout de 10 activités effectué, vous gagnez 20 points.\n");
|
|
printf("Vous avez actuellement effectué %d activités.\n", tabPBonus[pos]);
|
|
choix = afficherActivite();
|
|
ptCumul = tabNbP[pos];
|
|
while((choix >= 1 || choix <= 7) && choix!=9)
|
|
{
|
|
if(choix==1)
|
|
{
|
|
if(10 > ptCumul)
|
|
{
|
|
printf("Vous n'avez pas assez de points\n");
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
ptCumul = ptCumul - 10;
|
|
ptTotal = ptTotal + 10;
|
|
printf("%d\n", ptTotal);
|
|
tabPBonus[pos] = tabPBonus[pos] + 1;
|
|
tabActivite[0] = tabActivite[0] +1;
|
|
if(tabPBonus[pos] >= 10)
|
|
{
|
|
printf("Vous avez gagné 20points !\n");
|
|
tabPBonus[pos] = tabPBonus[pos] - 10;
|
|
ptCumul = ptCumul + 20;
|
|
}
|
|
printf("Vous avez choisis une scéance de musculation. Souhaitez vous faire une autre activité aprés cette séance ? (Oui :1 / Non: 0): ");
|
|
scanf("%d", &autreAct);
|
|
if(autreAct == 0)
|
|
break;
|
|
if(autreAct == 1)
|
|
choix = afficherActivite();
|
|
}
|
|
}
|
|
if(choix==2)
|
|
{
|
|
if(15 > ptCumul)
|
|
{
|
|
printf("Vous n'avez pas assez de points\n");
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
ptCumul = ptCumul - 15;
|
|
ptTotal = ptTotal + 15;
|
|
printf("%d\n", ptTotal);
|
|
tabPBonus[pos] = tabPBonus[pos] + 1;
|
|
tabActivite[1] = tabActivite[1] +1;
|
|
if(tabPBonus[pos] >= 10)
|
|
{
|
|
printf("Vous avez gagné 20points !\n");
|
|
tabPBonus[pos] = tabPBonus[pos] - 10;
|
|
ptCumul = ptCumul + 20;
|
|
}
|
|
printf("Vous avez choisis une scéance d'aquagym. Souhaitez vous faire une autre activité aprés cette séance ? (Oui :1 / Non: 0): ");
|
|
scanf("%d", &autreAct);
|
|
if(autreAct == 0)
|
|
break;
|
|
if(autreAct == 1)
|
|
choix = afficherActivite();
|
|
}
|
|
}
|
|
if(choix==3)
|
|
{
|
|
if(12 > ptCumul)
|
|
{
|
|
printf("Vous n'avez pas assez de points\n");
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
ptCumul = ptCumul - 12;
|
|
ptTotal = ptTotal + 12;
|
|
printf("%d\n", ptTotal);
|
|
tabPBonus[pos] = tabPBonus[pos] + 1;
|
|
tabActivite[2] = tabActivite[2] +1;
|
|
if(tabPBonus[pos] >= 10)
|
|
{
|
|
printf("Vous avez gagné 20points !\n");
|
|
tabPBonus[pos] = tabPBonus[pos] - 10;
|
|
ptCumul = ptCumul + 20;
|
|
}
|
|
printf("Vous avez choisis une scéance de SPA. Souhaitez vous faire une autre activité aprés cette séance ? (Oui :1 / Non: 0): ");
|
|
scanf("%d", &autreAct);
|
|
if(autreAct == 0)
|
|
break;
|
|
if(autreAct == 1)
|
|
choix = afficherActivite();
|
|
}
|
|
}
|
|
|
|
if(choix==4)
|
|
{
|
|
if(ptCumul < 13)
|
|
{
|
|
printf("Vous n'avez pas assez de points\n");
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
ptCumul = ptCumul - 13;
|
|
ptTotal = ptTotal + 13;
|
|
printf("%d\n", ptTotal);
|
|
tabPBonus[pos] = tabPBonus[pos] + 1;
|
|
tabActivite[3] = tabActivite[3] +1;
|
|
if(tabPBonus[pos] >= 10)
|
|
{
|
|
printf("Vous avez gagné 20points !\n");
|
|
tabPBonus[pos] = tabPBonus[pos] - 10;
|
|
ptCumul = ptCumul + 20;
|
|
}
|
|
printf("Vous avez choisis une scéance de badminton. Souhaitez vous faire une autre activité aprés cette séance ? (Oui :1 / Non: 0): ");
|
|
scanf("%d", &autreAct);
|
|
if(autreAct == 0)
|
|
break;
|
|
if(autreAct == 1)
|
|
choix = afficherActivite();
|
|
}
|
|
}
|
|
if(choix==5)
|
|
{
|
|
if(20 > ptCumul)
|
|
{
|
|
printf("Vous n'avez pas assez de points\n");
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
ptCumul = ptCumul - 20;
|
|
ptTotal = ptTotal + 20;
|
|
printf("%d\n", ptTotal);
|
|
tabPBonus[pos] = tabPBonus[pos] + 1;
|
|
tabActivite[4] = tabActivite[4] +1;
|
|
if(tabPBonus[pos] >= 10)
|
|
{
|
|
printf("Vous avez gagné 20points !\n");
|
|
tabPBonus[pos] = tabPBonus[pos] - 10;
|
|
ptCumul = ptCumul + 20;
|
|
}
|
|
printf("Vous avez choisis une scéance de massage. Souhaitez vous faire une autre activité aprés cette séance ? (Oui :1 / Non: 0): ");
|
|
scanf("%d", &autreAct);
|
|
if(autreAct == 0)
|
|
break;
|
|
if(autreAct == 1)
|
|
choix = afficherActivite();
|
|
}
|
|
|
|
}
|
|
if(choix==6)
|
|
{
|
|
if(11 > ptCumul)
|
|
{
|
|
printf("Vous n'avez pas assez de points\n");
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
ptCumul = ptCumul - 11;
|
|
ptTotal = ptTotal + 11;
|
|
printf("%d\n", ptTotal);
|
|
tabPBonus[pos] = tabPBonus[pos] + 1;
|
|
tabActivite[5] = tabActivite[5] +1;
|
|
if(tabPBonus[pos] >= 10)
|
|
{
|
|
printf("Vous avez gagné 20points !\n");
|
|
tabPBonus[pos] = tabPBonus[pos] - 10;
|
|
ptCumul = ptCumul + 20;
|
|
}
|
|
printf("Vous avez choisis une scéance de relaxation. Souhaitez vous faire une autre activité aprés cette séance ? (Oui :1 / Non: 0): ");
|
|
scanf("%d", &autreAct);
|
|
if(autreAct == 0)
|
|
break;
|
|
if(autreAct == 1)
|
|
choix = afficherActivite();
|
|
}
|
|
}
|
|
if(choix==7)
|
|
{
|
|
printf("\nVous avez actuellement %d points.\n", ptCumul);
|
|
choix = afficherActivite();
|
|
}
|
|
else
|
|
{
|
|
printf("Valeur saisie incorrect, veuillez réessayer\n");
|
|
choix = afficherActivite();
|
|
}
|
|
}
|
|
printf("Vous avez dépenser %d points\n", ptTotal);
|
|
tabNbP[pos] = ptCumul;
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* \brief Affiche le menu des activités
|
|
* \return Renvoi le choix de l'adhérents
|
|
*/
|
|
|
|
int afficherActivite(void)
|
|
{
|
|
int choix;
|
|
printf("\n1\tSéance de musculation (10pt)\n");
|
|
printf("2\tSéance d'aquagym (15pt)\n");
|
|
printf("3\tSéance de SPA (12pt)\n");
|
|
printf("4\tSéance de Badminton (13pt)\n");
|
|
printf("5\tSéance de massage (20pt)\n");
|
|
printf("6\tSéance de relaxation (11pt)\n");
|
|
printf("7\tAfficher votre nombre de points\n");
|
|
printf("9\tQuitter\n\n");
|
|
printf("Entrez votre choix : ");
|
|
scanf("%d", &choix);
|
|
return choix;
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* \brief Affiche un adhérent en entrant son ID
|
|
* \param tabID Affiche l'id de l'ahérent et vérifie qu'il y est
|
|
* \param tabNbP Affiche le nombre de points de l'adhérent
|
|
* \param tabEtat Affiche l'étant de la carte de l'adhérent
|
|
* \param tabDate Affiche la date de la dernière fréquentation de l'adhérent
|
|
* \param tabPBonus Affiche les points bonus de l'adhérent
|
|
* \param nb Taille logique des tableaux
|
|
*/
|
|
|
|
void afficherAdherent(int tabID[], int tabNbP[], int tabEtat[], int tabDate[], int tabPBonus[], int nb)
|
|
{
|
|
|
|
int id, pos, verif;
|
|
|
|
printf("Entrez l'ID de l'adhérent :");
|
|
scanf("%d", &id);
|
|
|
|
pos = position(tabID, id, nb, &verif);
|
|
|
|
if(verif == -1)
|
|
{
|
|
printf("Err : L'adhérent ciblé n'existe pas.\n");
|
|
return;
|
|
}
|
|
|
|
printf("N°Adhérent\tNbre Points\tEtat Carte\tDernière Visite (JJMMYYYY)\n");
|
|
printf("%d\t\t%d\t\t", id, tabNbP[pos]);
|
|
if(tabEtat[pos] == 0)
|
|
{
|
|
printf("Désactivé\t");
|
|
} else {
|
|
printf("Activé\t");
|
|
}
|
|
printf("\t%d\n", tabDate[pos]);
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* \brief Cette fonction ajoute des points à un adhérent en entrant son ID
|
|
* \param tabID Le tableau avec les id pour vérifier que l'adhérent est existant
|
|
* \param tabNbP Ajoute les points à l'adhérent
|
|
* \param nb La taille logique des tableaux
|
|
*/
|
|
|
|
void ajouterPoint(int tabID[], int tabNbP[], int nb)
|
|
{
|
|
|
|
int id, pos, verif, euro;
|
|
|
|
printf("Entrez l'ID de l'adhérent :");
|
|
scanf("%d", &id);
|
|
|
|
pos = position(tabID, id, nb, &verif);
|
|
|
|
if(verif == -1)
|
|
{
|
|
printf("Err : L'adhérent ciblé n'existe pas.\n");
|
|
return;
|
|
}
|
|
|
|
printf("Entrez l'argent en € déboursé par l'adhérent (2pt = 1€):");
|
|
scanf("%d", &euro);
|
|
|
|
tabNbP[pos] = tabNbP[pos] + euro*2;
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* \brief Cette fonction affiche le nombre d'utilisation d'activité par jours
|
|
* \param tabActivite Tableau ou est stocké les utilisations des activité
|
|
*/
|
|
|
|
void activiteJour(int tabActivite[])
|
|
{
|
|
printf("\nMusculation: %d\n", tabActivite[0]);
|
|
printf("Aquagym: %d\n", tabActivite[1]);
|
|
printf("SPA: %d\n", tabActivite[2]);
|
|
printf("Badminton: %d\n", tabActivite[3]);
|
|
printf("Massage: %d\n", tabActivite[4]);
|
|
printf("Relaxation: %d\n", tabActivite[5]);
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* \brief Cette fonction affiche l'état de la carte d'un adhérent et le change à la demande
|
|
* \param tabID Tableau des id pour vérifier que l'adhérent existe et changer l'état de sa carte
|
|
* \param tabEtat Tableau ou est stocké l'état des cartes
|
|
* \param nb Taille logique des tableaux
|
|
*/
|
|
|
|
void etatcarte(int tabID[], int tabEtat[], int nb)
|
|
{
|
|
int etat, pos, id, arret, trouve;
|
|
printf("ID de l'adhérent :");
|
|
scanf("%d",&id);
|
|
pos = position(tabID,id,nb,&trouve);
|
|
while(1)
|
|
{
|
|
if(trouve==1)
|
|
{
|
|
printf("L'état actuel de la carte est : ");
|
|
if(tabEtat[pos] == 1)
|
|
printf("Activé\n");
|
|
else printf("Désactivé\n");
|
|
|
|
printf("Activer(1)/Désactiver(0): ");
|
|
scanf("%d",&etat);
|
|
while(etat != 1 && etat != 0)
|
|
{
|
|
printf("Valeur saisi non correct, veuillez réesayer\n");
|
|
printf("Activer(1)/Désactiver(0): ");
|
|
scanf("%d",&etat);
|
|
}
|
|
tabEtat[pos] = etat;
|
|
return;
|
|
}
|
|
if(trouve==-1)
|
|
{
|
|
printf("Aucun N° d'adhérent avec comme id %d trouvée\n", id);
|
|
printf("Voulez vous ressaisir un nouveau N° d'adhérent(1) OU annulé(0) : ");
|
|
scanf("%d", &arret);
|
|
if(arret == 1)
|
|
{
|
|
printf("Veuillez ressaisir un N° d'adhérent :");
|
|
scanf("%d",&id);
|
|
pos = position(tabID,id,nb,&trouve);
|
|
}
|
|
if(arret == 0)
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* \brief Affiche le menu de gestion
|
|
* \return le choix entré par l'utilisateur
|
|
*/
|
|
|
|
int choixMenu(void)
|
|
{
|
|
int choix;
|
|
printf("\nGestion du complexe\n\n");
|
|
printf("1\tAfficher tous les adhérents\n");
|
|
printf("2\tAfficher un seul adhérent\n");
|
|
printf("3\tCréer un adhérent\n");
|
|
printf("4\tSupprimer un adhérent\n");
|
|
printf("5\tAlimenter une carte\n");
|
|
printf("6\tActiver/Désactiver une carte\n");
|
|
printf("7\tFaire une activité\n");
|
|
printf("8\tAfficher nbres d'entrée par activité\n");
|
|
printf("9\tQuitter\n\n");
|
|
printf("Entrez votre choix : ");
|
|
scanf("%d%*c", &choix);
|
|
return choix;
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* \brief Fonction qui gère toutes les autres fonctions, les atbleaux sont crées dedans et utilisé pour les appels des fonctions.
|
|
*/
|
|
|
|
void global(void)
|
|
{
|
|
char rep='n';
|
|
int tabID[100], tabNbP[100], tabEtat[100], tabDate[100], tabPBonus[100], tabActivite[100]={0};
|
|
int nb, choix;
|
|
nb = chargement(tabID, tabNbP, tabEtat, tabDate, tabPBonus, 100);
|
|
if(nb<0)
|
|
return;
|
|
choix=choixMenu();
|
|
fonction : while(rep=='n'||rep=='N'){
|
|
while(choix!=9)
|
|
{
|
|
switch(choix){
|
|
case 1:
|
|
|
|
afficherTAdherent(tabID, tabPBonus, tabEtat, tabNbP, tabDate, nb);
|
|
break;;
|
|
case 2:
|
|
afficherAdherent(tabID, tabNbP, tabEtat, tabDate, tabPBonus, nb);
|
|
break;
|
|
case 3:
|
|
insertAdherent(tabID, tabNbP, tabEtat, tabDate, tabPBonus, &nb, 100);
|
|
break;
|
|
case 4:
|
|
supprAdherent(tabID, tabNbP, tabEtat, tabDate, tabPBonus, &nb);
|
|
break;
|
|
|
|
case 5:
|
|
ajouterPoint(tabID, tabNbP, nb);
|
|
break;
|
|
case 6:
|
|
etatcarte(tabID, tabEtat, nb);
|
|
break;
|
|
case 7:
|
|
menuActivite(tabID, tabDate, tabEtat, tabNbP, tabPBonus, tabActivite, nb);
|
|
break;
|
|
case 8:
|
|
activiteJour(tabActivite);
|
|
break;
|
|
default:
|
|
printf("Valeur saisie incorrect, veuillez réessayer\n");
|
|
break;
|
|
}
|
|
|
|
choix = choixMenu();
|
|
}
|
|
printf("Êtes vous sur de vouloir quitter ? (O/N): ");
|
|
scanf("%c%*c",&rep);
|
|
while((rep != 'o' && rep != 'O' && rep != 'n' && rep != 'N') ){
|
|
printf("Erreur saisie, Êtes vous sur de vouloir quitter ? (O/N): ");
|
|
scanf("%c%*c",&rep);
|
|
}
|
|
|
|
if(rep=='o' || rep=='O'){
|
|
sauvegarde(tabID, tabNbP, tabEtat, tabDate, tabPBonus, nb);
|
|
printf("Les données sont sauvegardées\nAu revoir ;)\n");
|
|
break;
|
|
}
|
|
choix = choixMenu();
|
|
goto fonction;
|
|
}
|
|
} |