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.
257 lines
10 KiB
257 lines
10 KiB
/**
|
|
* \file GestionPoints.c
|
|
* \brief Fichier contenant les fonctions pour la gestion des points des adhérents
|
|
* \author Antoine Perederii - Kyllian Chabanon
|
|
*/
|
|
|
|
#include "Fonctions.h"
|
|
|
|
/**
|
|
* \brief Recherche un adhérent
|
|
* \author Kyllian Chabanon
|
|
* \param tNoCarte tableau contenant les numéros de toutes les cartes
|
|
* \param nbElem taille logique des tableaux
|
|
* \param noCarte numéro de la carte à rechercher
|
|
* \param trouve pointeur prenant comme valeur 1 si le numéro a été trouvé et 0 sinon
|
|
* \return l'index où se trouve le numéro de la carte recherché, s'il n'y est pas, retourne l'endroit où il doit être inséré
|
|
*/
|
|
int RechercheAdherent(int tNoCarte[], int nbElem, int noCarte, int *trouve)
|
|
{
|
|
int i;
|
|
for (i = 0; i < nbElem; i++)
|
|
{
|
|
if (tNoCarte[i] == noCarte)
|
|
{
|
|
*trouve = 1;
|
|
return i;
|
|
}
|
|
else if (tNoCarte[i] > noCarte)
|
|
{
|
|
*trouve = 0;
|
|
return i + 1;
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* \brief Ajoute des points sur une carte
|
|
* \author Kyllian Chabanon
|
|
* \param tNoCarte tableau contenant les numéros de toutes les cartes
|
|
* \param tPointsCarte tableau contenant le nombre de points restants sur chaque carte
|
|
* \param tCarteActive tableau contenant l'état de chaque carte
|
|
* \param nbElem taille logique des tableaux
|
|
* \param noCarte numéro de la carte à créditer
|
|
*
|
|
* Permet d'ajouter des points à la carte correspondant au numéro de carte donné en paramètre.
|
|
* Il y a des bonus donnés selon le nombre de points ajoutés :
|
|
* - En dessous de 20 : aucun bonus
|
|
* - Entre 21 et 50 : 5%
|
|
* - Entre 51 et 100 : 10%
|
|
* - Au dessus de 101 : 15%
|
|
*/
|
|
void AjoutPoints(int tNoCarte[], int tPointsCarte[], int tCarteActive[], int nbElem, int noCarte)
|
|
{
|
|
int pointsCarte, trouve, pas, err = 1, bonus;
|
|
pas = RechercheAdherent(tNoCarte, nbElem, noCarte, &trouve);
|
|
if (trouve == 1)
|
|
{
|
|
if (tCarteActive[pas] == 0)
|
|
{
|
|
printf("La carte est désactivée. Achat de points impossible.");
|
|
return;
|
|
}
|
|
printf("Entrez le nombre de points à ajouter : ");
|
|
scanf("%d", &pointsCarte);
|
|
while (err == 1)
|
|
{
|
|
if (pointsCarte > 0 && pointsCarte <= 20)
|
|
{
|
|
tPointsCarte[pas] = tPointsCarte[pas] + pointsCarte;
|
|
printf("Merci pour votre achat. Vous avez crédité la carte n°%d de %d points.\nNombre de points total : %d\n", noCarte, pointsCarte, tPointsCarte[pas]);
|
|
err = 0;
|
|
}
|
|
else if (pointsCarte > 20 && pointsCarte <= 50)
|
|
{
|
|
bonus = pointsCarte * (1 + (5 / 100.0)) - pointsCarte;
|
|
tPointsCarte[pas] += pointsCarte + bonus;
|
|
printf("Merci pour votre achat. Vous avez crédité la carte n°%d de %d points. De plus, nous vous offrons un bonus de 5%%, soit %d points supplémentaires.\nNombre de points total : %d\n", noCarte, pointsCarte, bonus, tPointsCarte[pas]);
|
|
err = 0;
|
|
}
|
|
else if (pointsCarte > 50 && pointsCarte <= 100)
|
|
{
|
|
bonus = pointsCarte * (1 + (5 / 100.0)) - pointsCarte;
|
|
tPointsCarte[pas] += pointsCarte + bonus;
|
|
printf("Merci pour votre achat. Vous avez crédité la carte n°%d de %d points. De plus, nous vous offrons un bonus de 5%%, soit %d points supplémentaires.\nNombre de points total : %d\n", noCarte, pointsCarte, bonus, tPointsCarte[pas]);
|
|
err = 0;
|
|
}
|
|
else if (pointsCarte > 100)
|
|
{
|
|
bonus = pointsCarte * (1 + (5 / 100.0)) - pointsCarte;
|
|
tPointsCarte[pas] += pointsCarte + bonus;
|
|
printf("Merci pour votre achat. Vous avez crédité la carte n°%d de %d points. De plus, nous vous offrons un bonus de 5%%, soit %d points supplémentaires.\nNombre de points total : %d\n", noCarte, pointsCarte, bonus, tPointsCarte[pas]);
|
|
err = 0;
|
|
}
|
|
else
|
|
{
|
|
printf("Le nombre de points est incorrect.\n");
|
|
printf("Veuillez ressaisir le nombre de points à ajouter : ");
|
|
scanf("%d", &pointsCarte);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
printf("Ce numéro d'adhérent n'existe pas. Veuillez réessayer.\n");
|
|
return;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* \brief Débite une carte lorsqu'un adhérent pratique une activité
|
|
* \author Antoine Perederii - Kyllian Chabanon
|
|
* \param tNoCarte tableau contenant les numéros de toutes les cartes
|
|
* \param tNbActivitesJour tableau contenant le nombre d'activité qui a été faite dans la journée
|
|
* \param tCarteActive tableau contenant l'état de chaque carte
|
|
* \param tNbActivitesJour tableau contenant le nombre d'activités du jour
|
|
* \param nbElem taille logique des tableaux
|
|
*
|
|
* Demande à l'adhérent quelle activité il veut faire et retire le nombre de points correspondant.
|
|
*/
|
|
void DebitCarte(int tNoCarte[], int tPointsCarte[], int tCarteActive[], int tNbActivitesJour[], int nbElem)
|
|
{
|
|
int choix, trouve, pas, noCarte;
|
|
char reponse;
|
|
printf("Entrez le numéro de la carte de l'adhérent recherché : ");
|
|
scanf("%d", &noCarte);
|
|
pas = RechercheAdherent(tNoCarte, nbElem, noCarte, &trouve);
|
|
if (trouve == 1)
|
|
{
|
|
if (tCarteActive[pas] == 1)
|
|
{
|
|
choix = choixMenuActivites();
|
|
while (choix != 10)
|
|
{
|
|
switch (choix)
|
|
{
|
|
case 1:
|
|
if (tPointsCarte[pas] >= 0)
|
|
{
|
|
tNbActivitesJour[pas] = tNbActivitesJour[pas] + 1;
|
|
printf("Vous avez pratiqué la piscine.\n");
|
|
}
|
|
else
|
|
{
|
|
printf("Vous n'avez pas assez de points.\n");
|
|
}
|
|
break;
|
|
case 2:
|
|
if (tPointsCarte[pas] >= 0)
|
|
{
|
|
tPointsCarte[pas] = tPointsCarte[pas] - 0;
|
|
tNbActivitesJour[pas] = tNbActivitesJour[pas] + 1;
|
|
printf("Vous avez pratiqué l'option accessibilité.\n");
|
|
}
|
|
else
|
|
{
|
|
printf("Vous n'avez pas assez de points.\n");
|
|
}
|
|
break;
|
|
case 3:
|
|
if (tPointsCarte[pas] >= 5)
|
|
{
|
|
tPointsCarte[pas] = tPointsCarte[pas] - 5;
|
|
tNbActivitesJour[pas] = tNbActivitesJour[pas] + 1;
|
|
printf("Vous avez pratiqué Aquakid + Aquaplouf.\n");
|
|
}
|
|
else
|
|
{
|
|
printf("Vous n'avez pas assez de points.\n");
|
|
}
|
|
break;
|
|
case 4:
|
|
if (tPointsCarte[pas] >= 9)
|
|
{
|
|
tPointsCarte[pas] = tPointsCarte[pas] - 9;
|
|
tNbActivitesJour[pas] = tNbActivitesJour[pas] + 1;
|
|
printf("Vous avez pratiqué Aquafit.\n");
|
|
}
|
|
else
|
|
{
|
|
printf("Vous n'avez pas assez de points.\n");
|
|
}
|
|
break;
|
|
case 5:
|
|
if (tPointsCarte[pas] >= 10)
|
|
{
|
|
tPointsCarte[pas] = tPointsCarte[pas] - 10;
|
|
tNbActivitesJour[pas] = tNbActivitesJour[pas] + 1;
|
|
printf("Vous avez pratiqué Cours de natation.\n");
|
|
}
|
|
else
|
|
{
|
|
printf("Vous n'avez pas assez de points.\n");
|
|
}
|
|
break;
|
|
case 6:
|
|
if (tPointsCarte[pas] >= 12)
|
|
{
|
|
tPointsCarte[pas] = tPointsCarte[pas] - 12;
|
|
tNbActivitesJour[pas] = tNbActivitesJour[pas] + 1;
|
|
printf("Vous avez pratiqué Cours de gymnastique aquatique.\n");
|
|
}
|
|
else
|
|
{
|
|
printf("Vous n'avez pas assez de points.\n");
|
|
}
|
|
break;
|
|
case 7:
|
|
if (tPointsCarte[pas] >= 15)
|
|
{
|
|
tPointsCarte[pas] = tPointsCarte[pas] - 15;
|
|
tNbActivitesJour[pas] = tNbActivitesJour[pas] + 1;
|
|
printf("Vous avez pratiqué Vagues.\n");
|
|
}
|
|
else
|
|
{
|
|
printf("Vous n'avez pas assez de points.\n");
|
|
}
|
|
break;
|
|
case 8:
|
|
if (tPointsCarte[pas] >= 20)
|
|
{
|
|
tPointsCarte[pas] = tPointsCarte[pas] - 20;
|
|
tNbActivitesJour[pas] = tNbActivitesJour[pas] + 1;
|
|
printf("Vous avez pratiqué Aquabike.\n");
|
|
}
|
|
else
|
|
{
|
|
printf("Vous n'avez pas assez de points.\n");
|
|
}
|
|
break;
|
|
case 9:
|
|
if (tPointsCarte[pas] >= 35)
|
|
{
|
|
tPointsCarte[pas] = tPointsCarte[pas] - 35;
|
|
tNbActivitesJour[pas] = tNbActivitesJour[pas] + 1;
|
|
printf("Vous avez pratiqué Aquafamily.\n");
|
|
}
|
|
else
|
|
{
|
|
printf("Vous n'avez pas assez de points.\n");
|
|
}
|
|
break;
|
|
}
|
|
choix = choixMenuActivites();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
printf("Votre carte est inactive. Veuillez la réactiver.\n");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
printf("Ce numéro d'adhérent n'existe pas. Veuillez réessayer.\n");
|
|
return;
|
|
}
|
|
} |