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.

452 lines
13 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.

#include "SAE.h"
int Ouverture(int tNoCarte[], int tage[], int tPointsCarte[], int tCarteActive[], int tNbActivitesJour[], int tDate[], int tmax, int *pasAct)
{
int pasMembres;
pasMembres = OuvertureMembres(tNoCarte, tage, tPointsCarte, tCarteActive, tmax);
*pasAct = OuvertureActivitesJour(tNbActivitesJour, tDate, tmax);
return pasMembres;
}
int OuvertureMembres(int tNoCarte[], int tage[], int tPointsCarte[], int tCarteActive[], int tmax)
{
int i = 0;
int NoCarte, age, pointsCarte, CarteActive;
FILE *flot;
flot = fopen("membres.don", "r");
if (flot == NULL)
{
printf("Pb d'ouverture du fichier membres.don\n");
return -1;
}
fscanf(flot, "%d%d%d%d", &NoCarte, &age, &pointsCarte, &CarteActive);
while (!feof(flot))
{
if (i == tmax)
{
printf("Tableau plein\n");
fclose(flot);
return -1;
}
tNoCarte[i] = NoCarte;
tage[i] = age;
tPointsCarte[i] = pointsCarte;
tCarteActive[i] = CarteActive;
fscanf(flot, "%d%d%d%d", &NoCarte, &age, &pointsCarte, &CarteActive);
i++;
}
fclose(flot);
return i;
}
int OuvertureActivitesJour(int tNbActivitesJour[], int tDate[], int tmax)
{
int i = 0;
int Date, nbActivitesJour;
FILE *jour;
jour = fopen("ActivitesJour.don", "r");
if (jour == NULL)
{
printf("Pb d'ouverture du fichier ActivitesJour.don\n");
return -1;
}
fscanf(jour, "%d%d", &Date, &nbActivitesJour);
while (!feof(jour))
{
if (i == tmax)
{
printf("Tableau plein\n");
fclose(jour);
return -1;
}
tDate[i] = Date;
tNbActivitesJour[i] = nbActivitesJour;
fscanf(jour, "%d%d", &Date, &nbActivitesJour);
i++;
}
fclose(jour);
return i;
}
int choixMenu(void)
{
int choix;
printf("\t Gestion des matières\n");
printf("1.\tAffichage\n");
printf("2.\tAjouter un adhérent\n");
printf("3.\tModifier l'âge d'un adhérent\n");
printf("4.\tSuppression d'un adhérent\n");
printf("5.\tAjout de points sur une carte\n");
printf("6.\tModification de l'état de la carte\n");
printf("7.\tCréditer une activité à une carte\n");
printf("8.\tQuitter\n");
printf("\noption choisie :\n");
scanf("%d", &choix);
return choix;
}
int choixMenuAffichage(void)
{
int choix;
printf("\t Gestion des matières\n");
printf("1.\tAffichage des informations d'un adhérent\n");
printf("2.\tAffichage des informations de tous les adhérents\n");
printf("3.\tAffichage du nombre dentrées totale de toutes les journée\n");
printf("4.\tAffichage du nombre d'entrées totale depuis le début\n");
printf("5.\tAffichage du nombre total d'adhérents\n");
printf("6.\tquitter\n");
printf("\noption choisie :\n");
scanf("%d", &choix);
return choix;
}
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;
}
if(tNoCarte[i] > NoCarte)
{
*trouve = 0;
return i;
}
}
}
void Affichage1Adherent(int tNoCarte[], int tage[], int tPointsCarte[], int tCarteActive[], int nbelem)
{
int pas, NoCarte, CarteActive, trouve;
printf("Entrez le numéro de la carte de l'adhérent recherché : ");
scanf("%d",&NoCarte);
pas = rechercheAdherant(tNoCarte, nbelem, NoCarte, &trouve);
if(trouve == 1)
{
printf(" N°_de_carte\tAge Points Carte_active\n");
printf("\t%d\t%d\t%d\t%d\n", tNoCarte[pas], tage[pas], tPointsCarte[pas], tCarteActive[pas]);
}
else
{
printf("Ce numéro d'adhérant n'existe pas, veuillez réessayer\n");
return;
}
}
void AffichageTousAdherents(int tNoCarte[], int tage[], int tPointsCarte[], int tCarteActive[], int nbelem)
{
int i;
printf(" N°_de_carte\tAge Points Carte_active\n");
for (i = 0; i < nbelem; i++)
{
printf("\t%d\t%d\t%d\t%d\n", tNoCarte[i], tage[i], tPointsCarte[i], tCarteActive[i]);
}
}
void AffichageNbEntreesTousJour(int tNbActivitesJour[], int tDate[], int nbelem)
{
int i;
printf(" Date\tNb_Activites\n");
for (i = 0; i < nbelem; i++)
{
printf("\t%d\t%d\n", tDate[i], tNbActivitesJour[i]);
}
}
void AffichageNbEntreesTotal(int tNbActivitesJour[], int nbelem)
{
int i, somme = 0;
for (i = 0; i < nbelem; i++)
{
somme = somme + tNbActivitesJour[i];
}
printf("Le nombre total d'entrées est de %d depuis le début.\n", somme);
}
void AffichageNbAdherents(int nbelem)
{
int i, somme = 0;
for (i = 0; i < nbelem; i++)
{
somme = somme + 1;
}
printf("Le nombre total d'adhérents est de %d.\n", somme);
}
void gestionMenus(void)
{
int tNoCarte[20] = {0}, tage[20] = {0}, tPointsCarte[20] = {0}, tCarteActive[20] = {0};
int tDate[20] = {0}, tNbActivitesJour[20] = {0};
int tmax = 20, nbelem, choix, pasAct;
nbelem = Ouverture(tNoCarte, tage, tPointsCarte, tCarteActive, tNbActivitesJour, tDate, tmax, &pasAct);
if (nbelem < 0)
{
printf("Erreur d'ouverture du fichier ou tableau plein !!!\n");
return;
}
choix = choixMenu();
while (choix != 8)
{
if (choix == 1)
{
choix = choixMenuAffichage();
while (choix != 6)
{
if (choix == 1)
{
Affichage1Adherent(tNoCarte, tage, tPointsCarte, tCarteActive, nbelem);
}
if (choix == 2)
{
AffichageTousAdherents(tNoCarte, tage, tPointsCarte, tCarteActive, nbelem);
}
if (choix == 3)
{
AffichageNbEntreesTousJour(tNbActivitesJour, tDate, nbelem);
}
if (choix == 4)
{
AffichageNbEntreesTotal(tNbActivitesJour, nbelem);
}
if (choix == 5)
{
AffichageNbAdherents(nbelem);
}
choix = choixMenuAffichage();
}
}
if (choix == 2)
{
nbelem = AjoutAdherent(tNoCarte, tage, tPointsCarte, tCarteActive, tmax, nbelem);
}
if (choix == 3)
{
ModificationAge(tNoCarte, tage, nbelem);
}
if (choix == 4)
{
nbelem = SupprimmerAdherent(tNoCarte, tage, tPointsCarte, tCarteActive, nbelem);
}
if (choix == 5)
{
AjoutPoints(tNoCarte, tPointsCarte, nbelem);
}
if (choix == 6)
{
ModificationActivationCarte(tNoCarte, tCarteActive, nbelem);
}
if (choix == 7)
{
DebitActivitee(tNoCarte, tPointsCarte, tNbActivitesJour, tDate, nbelem, &pasAct);
}
choix = choixMenu();
}
Sauvegarde(tNoCarte, tage, tPointsCarte, tCarteActive, tNbActivitesJour, tDate, nbelem);
exit(1);
}
void ModificationAge(int tNoCarte[], int tage[], int nbelem)
{
int pas, NoCarte, age;
printf("Entrez le numéro de la carte de l'adhérent recherché : ");
scanf("%d",&NoCarte);
pas = rechercheAdherant(tNoCarte, nbelem, NoCarte, &trouve);
if(trouve == 1)
{
printf("Entrez l'age de l'adhérent : ");
scanf("%d",&age);
tage[pas] = age;
}
else
{
printf("Ce numéro d'adhérant n'existe pas, veuillez réessayer\n");
return;
}
}
int SupprimmerAdherent(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 = rechercheAdherant(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;
return nbelem;
}
else
{
printf("Ce numéro d'adhérant n'existe pas, veuillez réessayer\n");
return -1;
}
}
int AjoutAdherent(int tNoCarte[], int tage[], int tPointsCarte[], int tCarteActive[], int tmax, int nbelem)
{
int NoCarte, age, pointsCarte, CarteActive, pas;
char reponse;
printf("Donnez l'âge de l'adhérent :\n");
scanf("%d", &age);
pas = rechercheAdherant(tNoCarte, nbelem);
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("Le numero de carte de l'adherent qui a %d ans est %d.\nLa carte n'est pas active car il n'y a pas de points dessus.\nVoulez-vous en ajouter ? (O / N)", tage[pas], tNoCarte[pas]);
scanf("%*c%c", &reponse);
if(reponse == 'O' || reponse == 'o')
{
AjoutPoints(tNoCarte, tPointsCarte, tCarteActive, nbelem, pas);
}
else
{
printf("La carte n'est pas active.\n");
return nbelem;
}
return nbelem;
}
void AjoutPoints(int tNoCarte[], int tPointsCarte[], int tCarteActive[], int nbelem, int pas)
{
int pointsCarte, NoCarte, trouve;
printf("Entrez le numéro de la carte de l'adhérent recherché : ");
scanf("%d",&NoCarte);
pas = rechercheAdherant(tNoCarte, nbelem, NoCarte, &trouve);
if(trouve == 1)
{
printf("Entrez le nombre de points a ajouter: ");
scanf("%d", &pointsCarte);
if(pointsCarte > 0 && pointsCarte < 20)
{
tPointsCarte[pas] = pointsCarte;
tCarteActive[pas] = 1;
printf("La carte est active.\n");
}
if(pointsCarte > 20 && pointsCarte < 50)
{
tPointsCarte[pas] = pointsCarte + pointsCarte*(1 + (5/100.0));
tCarteActive[pas] = 1;
printf("Merci pour votre achat. Nous vous offrons 5%% supplémentaires. De plus, votre carte est active.\n");
}
if(pointsCarte > 50 && pointsCarte < 100)
{
tPointsCarte[pas] = pointsCarte + pointsCarte*(1 + (10/100.0));
tCarteActive[pas] = 1;
printf("Merci pour votre achat. Nous vous offrons 10%% supplémentaires. De plus, votre carte est active.\n");
}
if(pointsCarte > 100)
{
tPointsCarte[pas] = pointsCarte + pointsCarte*(1 + (15/100.0));
tCarteActive[pas] = 1;
printf("Merci pour votre achat. Nous vous offrons 15%% supplémentaires. De plus, votre carte est active.\n");
}
else
{
printf("Le nombre de points est incorrect.\n");
printf("Veuillez ressaisir le nombre de points a ajouter: ");
scanf("%d", &pointsCarte);
}
}
else
{
printf("Ce numéro d'adhérant n'existe pas, veuillez réessayer\n");
return -1;
}
}
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 = rechercheAdherant(tNoCarte, nbelem, NoCarte, &trouve);
if(trouve == 1)
{
if(tCarteActive[pas] == 1)
{
printf("Voulez-vous desactiver 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érant n'existe pas, veuillez réessayer\n");
return -1;
}
}
void ModificationActivationCarte(int tNoCarte[], int tCarteActive[], int nbelem)
{
int NoCarte, trouve, pas;
printf("Entrez le numéro de la carte de l'adhérent recherché : ");
scanf("%d",&NoCarte);
pas = rechercheAdherant(tNoCarte, nbelem, NoCarte, &trouve);
if(trouve == 1)
{
if(tCarteActive[pas] == 1)
{
tCarteActive[pas] = 0;
printf("La carte est desactivée.\n");
}
else
{
tCarteActive[pas] = 1;
printf("La carte est activée.\n");
}
}
else
{
printf("Ce numéro d'adhérant n'existe pas, veuillez réessayer\n");
return -1;
}
}