/** * @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); exit(1); } 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) { printf("ERREUR: Echec de l'ouverture en lecture de 'clients.txt'.\n"); exit(1); } 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) { printf("Tableau trop petit.\n"); 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) { printf("ERREUR: Echec de l'ouverture en écriture de 'articles.txt'.\n"); exit(1); } int i; for(i=0; i