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.

249 lines
9.1 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/**
* \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
*
* Perlet 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;
pas = RechercheAdherent(tNoCarte, nbElem, noCarte, &trouve);
if (trouve == 1)
{
printf("Entrez le nombre de points à ajouter : ");
scanf("%d", &pointsCarte);
if (pointsCarte > 0 && pointsCarte <= 20)
{
tPointsCarte[pas] = tPointsCarte[pas] + pointsCarte;
tCarteActive[pas] = 1;
printf("La carte est active.\n");
}
else if (pointsCarte > 20 && pointsCarte <= 50)
{
tPointsCarte[pas] = tPointsCarte[pas] + pointsCarte * (1 + (5 / 100.0));
tCarteActive[pas] = 1;
printf("Merci pour votre achat. Nous vous offrons 5%% supplémentaires.\nDe plus, votre carte est active.\n");
}
else if (pointsCarte > 50 && pointsCarte <= 100)
{
tPointsCarte[pas] = tPointsCarte[pas] + pointsCarte * (1 + (10 / 100.0));
tCarteActive[pas] = 1;
printf("Merci pour votre achat. Nous vous offrons 10%% supplémentaires.\nDe plus, votre carte est active.\n");
}
else if (pointsCarte > 100)
{
tPointsCarte[pas] = tPointsCarte[pas] + pointsCarte * (1 + (15 / 100.0));
tCarteActive[pas] = 1;
printf("Merci pour votre achat. Nous vous offrons 15%% supplémentaires.\nDe plus, votre carte est active.\n");
}
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
* \param tNoCarte tableau contenant les numéros de toutes les cartes
* \param tCarteActive tableau contenant l'état de chaque carte
* \param tNbActivitesJour tableau contenant le nombre d'activité qui a été faite dans la journée
* \param nbElem taille logique des tableaux
*/
/*
Mettre les points bonus
interdire à un adhérent de fréquenter le centre plus dune fois par jour
*/
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)
{
while (choix != 10)
{
choix = choixMenuActivites();
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éactivé.\n");
}
}
else
{
printf("Ce numéro d'adhérent n'existe pas. Veuillez réessayer.\n");
return;
}
}