|
|
@ -5,6 +5,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
#include "specification1.h"
|
|
|
|
#include "specification1.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @brief Charge les données des devis d'un fichier dans l'Offre
|
|
|
|
|
|
|
|
* @param offre L'offre dans laquelle stocker les données
|
|
|
|
|
|
|
|
* @param fichier Le fichier à lire
|
|
|
|
|
|
|
|
* @return int Le nombre de devis chargés (-1 si erreur d'ouverture, -2 si en-tête invalide)
|
|
|
|
|
|
|
|
* @see lireDevis()
|
|
|
|
|
|
|
|
* @see insererDevis()
|
|
|
|
|
|
|
|
*/
|
|
|
|
int chargement(Offre *offre, char fichier[])
|
|
|
|
int chargement(Offre *offre, char fichier[])
|
|
|
|
{
|
|
|
|
{
|
|
|
|
FILE *flot;
|
|
|
|
FILE *flot;
|
|
|
@ -23,15 +31,82 @@ int chargement(Offre *offre, char fichier[])
|
|
|
|
return -2;
|
|
|
|
return -2;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
offre = (Offre*)malloc(tLog*sizeof(Offre));
|
|
|
|
char typeTravaux[30];
|
|
|
|
for(int i=0; i<tLog; i++)
|
|
|
|
//TODO Fonction insererDevis(Devis d, Offre *o, char typeTravaux[])
|
|
|
|
offre[i] = lireDevis(flot);
|
|
|
|
for(int i = 0; i < tLog; i++)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
Devis d;
|
|
|
|
|
|
|
|
lireDevis(flot, &d, typeTravaux);
|
|
|
|
|
|
|
|
insererDevis(d, offre, typeTravaux);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
fclose(flot);
|
|
|
|
fclose(flot);
|
|
|
|
return tLog;
|
|
|
|
return tLog;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Offre lireDevis(FILE *flot)
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @brief Lit un seul devis et le stocke dans la structure Devis
|
|
|
|
|
|
|
|
* @param flot Le fichier à lire
|
|
|
|
|
|
|
|
* @param devis La structure Devis dans laquelle stocker les données
|
|
|
|
|
|
|
|
* @param typeTravaux Le type de travaux
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
void lireDevis(FILE *flot, Devis *devis, char *typeTravaux)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
char ligne[102];
|
|
|
|
|
|
|
|
fscanf(flot, "%s", typeTravaux);
|
|
|
|
|
|
|
|
fgets(devis->entreprise, 28, flot);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fgets(ligne, sizeof(ligne), flot);
|
|
|
|
|
|
|
|
sscanf(ligne, "%d %[^0-9] %d %s", &devis->adresse.numero, devis->adresse.rue, &devis->adresse.codePostal, devis->adresse.ville);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fscanf(flot, "%d", &devis->capital);
|
|
|
|
|
|
|
|
fscanf(flot, "%d", &devis->duree);
|
|
|
|
|
|
|
|
fscanf(flot, "%d", &devis->cout);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @brief Sauvegarde tout les devis d'une Offre
|
|
|
|
|
|
|
|
* @param offre L'offre à sauvegarder
|
|
|
|
|
|
|
|
* @param tLog Le nombre de devis à sauvegarder
|
|
|
|
|
|
|
|
* @param fichier Le fichier dans lequel sauvegarder
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
* @see ecrireDevis()
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
void sauvegarde(Offre offre, int tLog, char fichier[])
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
FILE *flot;
|
|
|
|
|
|
|
|
flot = fopen(fichier, "w");
|
|
|
|
|
|
|
|
if(flot==NULL)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
printf("[ERREUR] - Problème dans l'ouverture de %s en écriture !\n");
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fprintf(flot, "%d\n", tLog);
|
|
|
|
|
|
|
|
for(int i = 0; i < tLog; i++)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
ecrireDevis(flot, offre.travaux, offre.ldevis->devis);
|
|
|
|
|
|
|
|
offre.ldevis = offre.ldevis->suiv;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fclose(flot);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @brief Ecrit un seul devis dans un fichier
|
|
|
|
|
|
|
|
* @param flot Le fichier dans lequel écrire
|
|
|
|
|
|
|
|
* @param typeTravaux Le type de travaux
|
|
|
|
|
|
|
|
* @param devis Le devis à écrire
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
void ecrireDevis(FILE *flot, char typeTravaux[], Devis devis)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
//TODO
|
|
|
|
fprintf(flot, "%s\n", typeTravaux);
|
|
|
|
|
|
|
|
fprintf(flot, "%s\n", devis.entreprise);
|
|
|
|
|
|
|
|
fprintf(flot, "%d, %s - %d - %s\n", devis.adresse.numero, devis.adresse.rue, devis.adresse.codePostal, devis.adresse.ville);
|
|
|
|
|
|
|
|
fprintf(flot, "%d\n", devis.capital);
|
|
|
|
|
|
|
|
fprintf(flot, "%d\n", devis.duree);
|
|
|
|
|
|
|
|
fprintf(flot, "%d\n", devis.cout);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|