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.

250 lines
6.9 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 "fonction.h"
int chargementAdherent(int tabAdherent[], int tabPoints[], int jour[], int mois[], int annee[], int carte[], int tphys)
{
int adhe, points, valjour, valmois, valannee, perdue, i = 0, pos;
FILE* flot;
flot = fopen("adherent.txt","r");
if (flot == NULL) {
printf("Erreur ouverture du fichier !\n");
return -2;
}
fscanf(flot,"%d%d%d%d%d%d",&adhe,&points,&valjour,&valmois,&valannee,&perdue);
while(!feof(flot))
{
if(i >= tphys)
{
printf("tableau plein\n");
fclose(flot);
return -1;
}
pos = ajouter(tabAdherent,i,adhe,tphys);
if (pos >= 0) {
tabPoints[pos] = points;
jour[pos] = valjour;
mois[pos] = valmois;
annee[pos] = valannee;
carte[pos] = perdue;
i = i + 1;
}
fscanf(flot,"%d%d%d%d%d%d",&adhe,&points,&valjour,&valmois,&valannee,&perdue);
}
if (i == 0) printf("Fichier vide !\n");
fclose(flot);
return i;
}
int recherche(int tabTri[], int val, int nb, int *trouve){
int i;
*trouve = 0;
for(i = 0 ; i < nb ; i++) {
if (val == tabTri[i]) {
*trouve = 1;
return i;
}
if (val < tabTri[i]) return i;
}
return nb;
}
void decalageDroite(int tabTri[], int nb, int pos) {
int j;
for (j = nb ; j > pos ; j--) tabTri[j] = tabTri[j-1];
}
void decalageGauche(int tabTri[], int nb, int pos) {
int j;
for(j = pos ; j < nb-1 ; j++) tabTri[j] = tabTri[j+1];
}
int ajouter(int tab[], int nb, int val, int tphys) {
int pos, trouve;
if (nb == tphys) {
printf("Impossible d'insérer un nouvel élément, le tableau est plein !\n");
return -1;
}
pos = recherche(tab, val, nb, &trouve);
if (trouve == 1) {
printf("Valeur déjà présente dans le tableau !\n");
return -1;
}
decalageDroite(tab, nb, pos);
tab[pos] = val;
return pos;
}
int ajouterAdherent(int tabAdhe[], int tabPoints[], int jour[], int mois[], int annee[], int carte[], int nb, int tmax) {
int val, trouve, points = 10, valJour, valMois, valAnnee, perdue = 1, pos, coderetour;
printf("Nouveau numéro de carte : ");
scanf("%d",&val);
pos = recherche(tabAdhe, val, nb, &trouve);
coderetour = ajouter(tabAdhe, nb, val, tmax);
if (coderetour == -1) {
printf("Erreur ajout du nouvel élement !\n");
return nb;
}
printf("\nJour : ");
scanf("%d",&valJour);
printf("\nMois : ");
scanf("%d",&valMois);
printf("\nAnnée : ",valAnnee);
scanf("%d",&valAnnee);
tabPoints[pos] = points;
jour[pos] = valJour;
mois[pos] = valMois;
annee[pos] = valAnnee;
carte[pos] = perdue;
nb += 1;
return nb;
}
int suppression(int tab[], int tabPoints[], int nb, int val) {
int pos, trouve;
if (nb == 0) {
printf("Aucun élément à supprimer dans le tableau !\n");
return nb;
}
pos = recherche(tab, val, nb, &trouve);
decalageGauche(tab, nb, pos);
decalageGauche(tabPoints, nb, pos);
nb -= 1;
return nb;
}
void affichageTous(int tabAdhe[], int tabPoints[], int jour[], int mois[], int annee[], int carte[],int taille)
{
int i;
printf("Numéro\tPoints\tDate d'activation\t\n");
for (i = 0 ; i < taille ; i++) {
if (carte[i] == 1) printf("%d\t%d\t%d/%d/%d\t\t Carte Active\n",tabAdhe[i],tabPoints[i],jour[i],mois[i],annee[i]);
else if (carte[i] == 0) printf("%d\t%d\t%d/%d/%d\t\t Carte Désactivée\n",tabAdhe[i],tabPoints[i],jour[i],mois[i],annee[i]);
}
}
void affichageCarte(int tabAdhe[], int tabPoints[], int jour[], int mois[], int annee[], int carte[], int nb) {
int carteVal, pos, trouve;
printf("Numéro de la carte ?\n");
scanf("%d",&carteVal);
pos = recherche(tabAdhe, carteVal, nb, &trouve);
if (trouve == 0) printf("Valeur non trouvée !\n");
else {
printf("Numéro\tPoints\tDate d'activation\t\n");
if (carte[pos] == 1) printf("%d\t%d\t%d/%d/%d\t\t Carte Active\n",tabAdhe[pos],tabPoints[pos],jour[pos],mois[pos],annee[pos]);
else if (carte[pos] == 0) printf("%d\t%d\t%d/%d/%d\t\t Carte Désactivée\n",tabAdhe[pos],tabPoints[pos],jour[pos],mois[pos],annee[pos]);
}
}
int chargementActivite(int tabPoint[],int tabNbEntree[], int tphys)
{
int num, point, nbEntree, i =0;
FILE*flot;
flot = fopen("activite.txt","r");
fscanf(flot,"%d %d %d",&num, &point, &nbEntree);
while(!feof(flot))
{
if(i < tphys)
{
printf("tableau plein\n");
fclose(flot);
return i;
}
tabPoint[num] = point;
tabNbEntree[num] = nbEntree;
i = i + 1;
fscanf(flot,"%d %d %d",&num, &point, &nbEntree);
}
fclose(flot);
return i;
}
void afficheNbEntreAct(int tabNbEntree[], int tabPoint[], int tphys)
{
int num;
printf("numero dactivité :");
scanf("%d",&num);
if (tabPoint[num] == 0 && tabNbEntree[num] == 0)
printf("Activité inexistante\n");
else
printf("Nombre dentrée : %d", tabNbEntree[num]);
}
void alimenterCarte (int tabAdherent[], int tabPoint[],int nb)
{
int num, trouve, i;
char formule;
printf("numero carte :");
scanf("%d",&num);
i = recherche(tabAdherent, num, nb, &trouve);
if (trouve == 1)
{
printf("Quelle formule :\n");
printf("A : 5€ -> 5 points\n");
printf("B : 10€ -> 12 point\n");
printf("C : 15€ -> 20 point\n");
printf("Choisir :");
scanf("%*c%c", &formule);
while (formule != 'A' || formule != 'B' || formule != 'C')
{
printf("Erreur récupération de donnée\n");
printf("A : 5€ -> 5 points\n");
printf("B : 10€ -> 12 point\n");
printf("C : 15€ -> 20 point\n");
printf("Choisir :");
scanf("%*c%c", &formule);
}
if (formule == 'A')
{
tabAdherent[i] = tabAdherent[i] + 5;
printf("accréditation de 5 points\n");
}
if (formule == 'B')
{
tabAdherent[i] = tabAdherent[i] + 12;
printf("accréditation de 12 points\n");
}
if (formule == 'B')
{
tabAdherent[i] = tabAdherent[i] + 20;
printf("accréditation de 20 points\n");
}
}
if (trouve == 0)
printf("Erreur ! Numéro de carte absente de la base de donnée\n");
}
int SauvegardeAdherent(int tabAdherent[], int tabPoints[], int jour[], int mois[], int annee[], int carte[], int tailleL) {
int i;
FILE* flot = fopen("adherent.txt","w");
if (flot == NULL) {
printf("Erreur d'ouverture du fichier !\n");
return -1;
}
for (i = 0 ; i < tailleL ; i++) {
fprintf(flot,"%d %d %d %d %d %d\n",tabAdherent[i],tabPoints[i],jour[i],mois[i],annee[i],carte[i]);
}
fclose(flot);
return 0;
}