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

/**
* \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;
}
}