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