Ajout des fonctions de chargement et fix de la recherche. Création de la fct global

pull/1/head
Rémi LAVERGNE 1 year ago
parent 9a397648d3
commit 710723a79d

@ -0,0 +1,37 @@
/**
* @file chargement.c
* @brief Fonctions de chargement des fichiers de données
*/
#include "specification1.h"
int chargement(Offre *offre, char fichier[])
{
FILE *flot;
flot = fopen(fichier, "r");
if(flot==NULL)
{
printf("[ERREUR] - Problème dans l'ouverture de %s en lecture !\n");
return -1;
}
int tLog;
fscanf(flot, "%d", &tLog); // Lecture de l'en-tête
if(tLog <= 0)
{
printf("[ERREUR] - Il n'y a pas de donnée à charger dans le fichier spécifié ou vous n'avez pas un en-tête valide.\n");
return -2;
}
offre = (Offre*)malloc(tLog*sizeof(Offre));
for(int i=0; i<tLog; i++)
offre[i] = lireDevis(flot);
fclose(flot);
return tLog;
}
Offre lireDevis(FILE *flot)
{
//TODO
}

@ -1,3 +1,4 @@
3
Plomberie
Pros De Leau
12, Av. la république 63000 Clermont-Ferrand de lentreprise champs du

@ -1,12 +1,12 @@
#include "specification1.h"
//? ListeDevis ou ListeDevis* ?
ListeDevis rechListeDevis(char typeTravaux[], Offre *offre)
ListeDevis rechListeDevis(char typeTravaux[], Offre *offre, int tLog)
{
if(strcmp(offre->travaux,typeTravaux) == 0)
return offre->listeDevis;
else
rechListeDevis(typeTravaux, offre->suivant);
for(int i=0; i<tLog; i++)
if(strcmp(offre[i].travaux,typeTravaux) == 0)
return offre[i].ldevis;
return NULL; //! Temporaire
}
//~~~~~~~~~~~~PARTIE 1~~~~~~~~~~~~
@ -19,15 +19,10 @@ ListeDevis rechListeDevis(char typeTravaux[], Offre *offre)
void Affiche(ListeDevis l)
{
printf("#######################################################################\n");
printf("Devis n°%d\n",l->devis.numDevis);
printf("Nom de l'entreprise : %s\n",l->devis.nomEntreprise);
printf("Type de travaux : %s\n",l->devis.typeTravaux);
printf("Montant du devis : %d\n",l->devis.montant);
printf("Date de création : %d/%d/%d\n",l->devis.dateDevis.jour,l->devis.dateDevis.mois,l->devis.dateDevis.annee);
printf("Date de début des travaux : %d/%d/%d\n",l->devis.dateDebutTravaux.jour,l->devis.dateDebutTravaux.mois,l->devis.dateDebutTravaux.annee);
printf("Date de fin des travaux : %d/%d/%d\n",l->devis.dateFinTravaux.jour,l->devis.dateFinTravaux.mois,l->devis.dateFinTravaux.annee);
printf("Etat du devis : %d\n",l->devis.etat);
printf("Commentaire : %s\n",l->devis.commentaire);
//printf("Devis n°%d\n",???);
printf("Nom de l'entreprise : %s\n",l->devis.entreprise);
printf("Durée du devis : %d\n", l->devis.duree);
printf("Montant du devis : %d\n",l->devis.cout);
printf("######################################################################\n");
}
@ -46,7 +41,7 @@ void AfficheDevis(ListeDevis l)
while(l != NULL)
{
Affiche(l);
l = l->suivant;
l = l->suiv;
}
}
}
@ -57,7 +52,7 @@ void AfficheDevis(ListeDevis l)
* \param[in] entr nom de l'entreprise
*/
void AfficheDevisE(ListeDevis l, char entr)
void AfficheDevisE(ListeDevis l, char entr[])
{
if(l == NULL)
{
@ -67,11 +62,11 @@ void AfficheDevisE(ListeDevis l, char entr)
{
while(l != NULL)
{
if(strcmp(l->devis.nomEntreprise,entr) == 0)
if(strcmp(l->devis.entreprise, entr) == 0)
{
Affiche(l);
}
l = l->suivant;
l = l->suiv;
}
}
}

@ -0,0 +1,7 @@
/**
* @file init.c
* @brief Fonctions d'initialisation de Pile/File/Liste
*/
#include "specification1.h"

@ -1,10 +1,11 @@
#include "specification1.h"
void affiche(Offre *offre)
void affiche(Offre *offre, int tLog)
{
//TODO Optimiser cet étron de code
int choix
int choix;
char typeTravaux[30], nomEntreprise[30];
ListeDevis l;
printf("####################################################\n");
printf("1- Afficher les devis pour un type de travaux.\n");
printf("2- Afficher les devis par type pour une entreprise.\n");
@ -17,14 +18,14 @@ void affiche(Offre *offre)
printf("Quel type de travaux voulez-vous afficher ?\n");
scanf("%s",typeTravaux); //! Vérifier que la chaine de caractère ne peut pas disposer pas d'espace
ListeDevis l = rechListeDevis(typeTravaux, offre);
l = rechListeDevis(typeTravaux, offre, tLog);
AfficheDevis(l);
break;
case 2:
printf("Quel est le nom de l'entreprise ?\n");
scanf("%s",nomEntreprise); //! Vérifier que la chaine de caractère ne peut pas disposer pas d'espace
ListeDevis l = rechListeDevis(typeTravaux, offre);
l = rechListeDevis(typeTravaux, offre, tLog);
AfficheDevisE(l, nomEntreprise);
break;
default:
@ -32,3 +33,22 @@ void affiche(Offre *offre)
break;
}
}
void global(void)
{
Offre *tabTravaux;
tabTravaux = (Offre*)malloc(20*sizeof(Offre));
int tLog=0;
if(tabTravaux==NULL)
{
printf("Pb malloc.\n");
exit(1);
}
affiche(tabTravaux, tLog);
}
int main(void)
{
global();
return 0;
}

@ -35,16 +35,15 @@ typedef struct
} Offre;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~FONCTION~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//remplir les liste
//~~~~~~~~~~~~PARTIE 1~~~~~~~~~~~~
//Afficher l'ensemble des devis pour un type de travaux
//@t étant la tache
void AfficheDevis(ListeDevis l, char t);
ListeDevis rechListeDevis(char typeTravaux[], Offre *offre, int tLog);
void Affiche(ListeDevis l);
void AfficheDevis(ListeDevis l);
void AfficheDevisE(ListeDevis l, char entr[]);
//Afficher le devis d'une entreprise donnée pour un type de travaux donnée
//Peut-on utiliser la fct précédente ?
//@t étant la tâche
//@entr étant le nom de l'entreprise
void AfficheDevisE(ListeDevis l, char entr, char t);
int chargement(Offre *offre, char fichier[]);
//~~~Idée :~~~
@ -59,3 +58,21 @@ void AfficheDevisE(ListeDevis l, char entr, char t);
//si égalité :
//Celle ayant le plus gros capital
void ShowEntrepTache(ListeDevis l, char trv);
//~~~~~~~~~~~~PARTIE 3~~~~~~~~~~~~
typedef struct
{
char tache[20] ; // nom de la tâche ex : Plomberie
int duree ; // durée de la tâche
int nbPred ; // nombre de prédécesseurs de la tâche
Liste succ ; // liste des successeurs de la tâche
int dateDebut ; // date de début au plutôt de la tâche
bool traite ; // booléen : la tâche est-elle traitée
}Tache ;
//Charger un tableau de pointeur vers cette structure ??
//~~~~~~~~~~~~PARTIE 4~~~~~~~~~~~~
Loading…
Cancel
Save