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.

142 lines
4.8 KiB

/**
* \file GestionPoints.c
* \brief Contient les fonctions pour la gestion des points des adhérents
* \author :
*/
#include "Fonctions.h"
/**
* \brief Permet de rechercher un adhérent
* \author :
* \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 qui prend 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 :
* \param tNoCarte tableau contenant les numéros de toutes les cartes
* \param tPointsCarte tableau qui contient le nombre de points restants sur chaque carte
* \param tCarteActive tableau qui contient l'état de chaque carte
* \param nbElem taille logique des tableaux
* \param noCarte numéro de la carte à créditer
*/
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 :
* \param tNoCarte tableau contenant les numéros de toutes les cartes
* \param tCarteActive tableau qui contient 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
*/
void DebitActivitee(int tNoCarte[], int tCarteActive[], int tNbActivitesJour[], int nbElem)
{
int noCarte, trouve, pas, pointsCarte;
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)
{
printf("Voulez-vous désactiver cette carte ? (o/n)\n");
scanf("%*c%c", &reponse);
if (reponse == 'O' || reponse == 'o')
{
tCarteActive[pas] = 0;
printf("La carte est desactivée.\n");
}
else
{
printf("La carte est toujours active.\n");
}
}
else
{
printf("La carte est desactivée. Voulez-vous la réactiver ? (o/n)\n");
scanf("%*c%c", &reponse);
if (reponse == 'O' || reponse == 'o')
{
tCarteActive[pas] = 1;
printf("La carte est activée.\n");
}
else
{
printf("La carte est toujours desactivée.\n");
}
}
}
else
{
printf("Ce numéro d'adhérent n'existe pas. Veuillez réessayer.\n");
return;
}
}