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
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;
|
|
}
|
|
} |