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.

203 lines
6.5 KiB

/**
* @file traitement.c
* @brief Traitement des données depuis les fichiers. Chargement - Sauvegarde
*/
#include "main.h"
void chargeDonnees(int *tLogArticle, int *tLogClient,int reference[], float weight[], float volume[], float unitPrice[], int clientID[], int clientPassword[], float cagnotte[], int suspended[], int isAdmin[])
{
/*
Chargement des données des articles et clients de fichiers vers des tableaux
+param tLogArticle: taille logique des tableaux des articles
+param tLogClient: taille logique des tableaux des clients
+param reference: tableau des références des articles
+param weight: tableau des poids des articles
+param volume: tableau des volumes des articles
+param unitPrice: tableau des prix à l'unité des articles
+param clientID: tableau des identifiants des clients
+param cagnotte: tableau des cagnottes des clients
+param suspended: tableau de l'état du compte des clients
*/
*tLogArticle = chargeArticles(reference, weight, volume, unitPrice);
*tLogClient = chargeClients(clientID, clientPassword, cagnotte, suspended, isAdmin);
}
int chargeArticles(int reference[], float weight[], float volume[], float unitPrice[])
{
/*
Chargement des données des articles d'un fichier vers des tableaux
+param reference: tableau des références des articles
+param weight: tableau des poids des articles
+param volume: tableau des volumes des articles
+param unitPrice: tableau des prix à l'unité des articles
+return: taille logique des tableaux
+var article: fichier 'articles.txt' ouvert en lecture
+var ref: reference de l'article
+var tL: taille logique des tableaux
+var w: poids de l'article
+var v: volume de l'article
+var up: prix de l'article à l'unité
*/
FILE *article;
article = fopen("articles.txt","r");
if(article==NULL)
{
errorHandling(-4);
}
int ref, tL=0;
float w, v, up;
fscanf(article, "%d %f %f %f", &ref, &w, &v, &up);
while(!feof(article))
{
if(tL == tmaxArticles)
{
errorHandling(-3);
return tL;
}
reference[tL] = ref;
weight[tL] = w;
volume[tL] = v;
unitPrice[tL] = up;
tL++;
fscanf(article, "%d %f %f %f", &ref, &w, &v, &up);
}
fclose(article);
return tL;
}
int chargeClients(int clientID[], int clientPassword[], float cagnotte[], int suspended[], int isAdmin[])
{
/*
Chargement des données des clients d'un fichier vers des tableaux
+param clientID: tableau des identifiants des clients
+param cagnotte: tableau des cagnottes des clients
+param suspended: tableau de l'état du compte des clients
+return: taille logique des tableaux
+var client: fichier 'clients.txt' ouvert en lecture
+var id: identifiant du client
+var sus: état du compte du client
+var tL: taille logique des tableaux
+var cag: montant de la cagnotte du client
*/
FILE *client;
client = fopen("clients.txt","r");
if(client==NULL)
{
errorHandling(-4);
}
int id, passwd, sus, tL=0, adm;
float cag;
fscanf(client, "%d %d %f %d %d", &id, &passwd, &cag, &sus, &adm);
while(!feof(client))
{
if(tL == tmaxArticles)
{
errorHandling(-3);
return tL;
}
clientID[tL] = id;
clientPassword[tL] = passwd;
cagnotte[tL] = cag;
suspended[tL] = sus;
isAdmin[tL] = adm;
tL++;
fscanf(client, "%d %d %f %d %d", &id, &passwd, &cag, &sus, &adm);
}
fclose(client);
return tL;
}
void sauvegardeDonnees(int tLogArticle, int tLogClient, int reference[], float weight[], float volume[], float unitPrice[], int clientID[], int clientPassword[], float cagnotte[], int suspended[], int isAdmin[])
{
/*
Sauvegarde des données des articles et clients de tableaux vers des fichiers
+param tLogArticle: taille logique des tableaux des articles
+param tLogClient: taille logique des tableaux des clients
+param reference: tableau des références des articles
+param weight: tableau des poids des articles
+param volume: tableau des volumes des articles
+param unitPrice: tableau des prix à l'unité des articles
+param clientID: tableau des identifiants des clients
+param cagnotte: tableau des cagnottes des clients
+param suspended: tableau de l'état du compte des clients
*/
sauvegardeArticles(reference, weight, volume, unitPrice, tLogArticle);
sauvegardeClients(clientID, clientPassword, cagnotte, suspended, isAdmin, tLogClient);
}
void sauvegardeArticles(int reference[], float weight[], float volume[], float unitPrice[], int tLogArticle)
{
/*
Sauvegarde des données des articles de tableaux vers le fichier des articles
+param reference: tableau des références des articles
+param weight: tableau des poids des articles
+param volume: tableau des volumes des articles
+param unitPrice: tableau des prix à l'unité des articles
+param tLogArticle: taille logique des tableaux des articles
+var article: fichier 'articles.txt' ouvert en écriture
+var i: compteur permettant de parcourir les tableaux
*/
FILE *article;
article = fopen("articles.txt","w");
if(article==NULL)
{
errorHandling(-5);
}
printf("ERREUR: Echec de l'ouverture en écriture de 'clients.txt'.\n");
exit(1);%f\n", reference[i], weight[i], volume[i], unitPrice[i]);
}
fclose(article);
}
void sauvegardeClients(int clientID[], int clientPassword[], float cagnotte[], int suspended[], int isAdmin[], int tLogClient)
{
/*
Sauvegarde des données des articles de tableaux vers le fichier des articles
+param clientID: tableau des identifiants des clients
+param cagnotte: tableau des cagnottes des clients
+param suspended: tableau de l'état du compte des clients
+param tLogClient: taille logique des tableaux des clients
+var client: fichier 'clients.txt' ouvert en lecture
+var i: compteur permettant de parcourir les tableaux
*/
FILE *client;
client = fopen("clients.txt","w");
if(client==NULL)
{
errorHandling(-5);
}
int i;
for(i=0; i<tLogClient; i++)
{
fprintf(client, "%d %d %f %d %d\n", clientID[i], clientPassword[i], cagnotte[i], suspended[i], isAdmin[i]);
}
fclose(client);
}