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.
saeAlgo/GestionAdherents.c

185 lines
6.2 KiB

/**
* \file GestionAdherents.c
* \brief Fichier qui contient les fonctions de gestion des adhérents
* \author
*/
#include "Fonctions.h"
/**
* \brief Recherche un adhérent pour la fonction AjoutAdherent
* \author
* \param tNoCarte tableau contenant les numéros de toutes les cartes
* \param nbElem taille logique du tableau
* \param noCarte numéro de la carte à rechercher
*/
int RechercheAjoutAdherent(int tNoCarte[], int nbElem, int noCarte)
{
int i;
while(i < nbElem)
{
if(tNoCarte[i] != i + 1)
{
return i;
}
i++;
}
}
/**
* \brief Affiche les informations d'un adhérent
* \author
* \param tNoCarte tableau contenant les numéros de toutes les cartes
* \param tAge tableau contenant les âges des membres
* \param tPointsCarte tableau qui contient le nombre de points restants sur chaque carte
* \param tCarteActive tableau qui contient l'état de chaque carte
* \param tMax taille physique des tableaux
* \param nbElem taille logique des tableaux
* \return la nouvelle taille logique des tableaux
*/
int AjoutAdherent(int tNoCarte[], int tAge[], int tPointsCarte[], int tCarteActive[], int tMax, int nbElem)
{
int noCarte, age, pointsCarte, pas, trouve, j;
char reponse;
printf("Vous voulez créer un nouvel adhérent.\n");
printf("Donnez l'âge de l'adhérent : ");
scanf("%d", &age);
pas = RechercheAjoutAdherent(tNoCarte, nbElem, noCarte);
for (j = nbElem; j > pas; j--)
{
if (j == tMax)
{
printf("Tableau plein, impossible d'ajouter un adhérent.\n");
return -1;
}
tNoCarte[j] = tNoCarte[j - 1];
tAge[j] = tAge[j - 1];
tPointsCarte[j] = tPointsCarte[j - 1];
tCarteActive[j] = tCarteActive[j - 1];
}
tNoCarte[pas] = pas + 1;
tAge[pas] = age;
tPointsCarte[pas] = 0;
tCarteActive[pas] = 0;
nbElem++;
printf("Vous avez créé l'adhérent numéro %d. Il a %d ans.\nSa carte n'est pas active car il n'y a pas de points dessus.\nIl est nécessaire de créditer la carte.\n", tNoCarte[pas], tAge[pas]);
AjoutPoints(tNoCarte, tPointsCarte, tCarteActive, nbElem, tNoCarte[pas]);
return nbElem;
}
/**
* \brief Permet de modifier l'âge d'un adhérent
* \author
* \param tNoCarte tableau contenant les numéros de toutes les cartes
* \param tAge tableau contenant les âges des membres
* \param nbElem taille logique des tableaux
*/
void ModificationAge(int tNoCarte[], int tAge[], int nbElem)
{
int pas, noCarte, age, trouve;
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)
{
printf("Entrez le nouvel âge de l'adhérent : ");
scanf("%d", &age);
tAge[pas] = age;
printf("Vous avez modifié l'âge de l'adhérent avec le numéro de carte %d. Son nouvel âge est de %d ans.\n", noCarte, age);
}
else
{
printf("Ce numéro d'adhérent n'existe pas. Veuillez réessayer.\n");
return;
}
}
/**
* \brief Permet de supprimer un adhérent
* \author
* \param tNoCarte tableau contenant les numéros de toutes les cartes
* \param tAge tableau contenant les âges des membres
* \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
* \return la nouvelle taille logique des tableaux
*/
int SupprimerAdherent(int tNoCarte[], int tAge[], int tPointsCarte[], int tCarteActive[], int nbElem)
{
int pas, i, noCarte, trouve;
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)
{
for (i = pas; i < nbElem; i++)
{
tNoCarte[i] = tNoCarte[i + 1];
tAge[i] = tAge[i + 1];
tPointsCarte[i] = tPointsCarte[i + 1];
tCarteActive[i] = tCarteActive[i + 1];
}
nbElem = nbElem - 1;
printf("Vous avez bien supprimé l'adhérent numéro %d.\n", noCarte);
return nbElem;
}
else
{
printf("Ce numéro d'adhérent n'existe pas. Veuillez réessayer.\n");
return -1;
}
}
/**
* \brief Modifie l'état de la carte
* \author
* \param tNoCarte tableau contenant les numéros de toutes les cartes
* \param tCarteActive tableau qui contient l'état de chaque carte
* \param nbElem taille logique des tableaux
*/
void ModificationActivationCarte(int tNoCarte[], int tCarteActive[], int nbElem)
{
int noCarte, trouve, pas, choix, choixRaison;
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)
{
printf("\nQue voulez-vous faire ?\n1.\tActiver la carte\n2.\tDésactiver la carte\n");
printf("\nOption choisie :");
scanf("%d", &choix);
if (choix == 1)
{
printf("\nPourquoi voulez-vous activer la carte ?\n1.\tCarte retrouvée\n2.\tNouvelle carte à la place de l'ancienne\n3.\tLevée de sanction\n");
printf("\nOption choisie : ");
scanf("%d", &choixRaison);
if (tCarteActive[pas] == 1)
{
printf("La carte est déjà activée.\n");
return;
}
tCarteActive[pas] = 1;
printf("La carte numéro %d est désormais activée.\n", noCarte);
}
else if (choix == 2)
{
printf("\nPourquoi voulez-vous désactiver la carte ?\n1.\tPerte\n2.\tVol\n3.\tSanction\n");
printf("\nOption choisie : ");
scanf("%d", &choixRaison);
if (tCarteActive[pas] == 0)
{
printf("La carte est déjà désactivée.\n");
return;
}
tCarteActive[pas] = 0;
printf("La carte numéro %d est désormais désactivée.\n", noCarte);
}
}
else
{
printf("Ce numéro d'adhérent n'existe pas. Veuillez réessayer.\n");
return;
}
}