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 Plomberie
Pros De Leau Pros De Leau
12, Av. la république 63000 Clermont-Ferrand de lentreprise champs du 12, Av. la république 63000 Clermont-Ferrand de lentreprise champs du

@ -1,12 +1,12 @@
#include "specification1.h" #include "specification1.h"
//? ListeDevis ou ListeDevis* ? //? ListeDevis ou ListeDevis* ?
ListeDevis rechListeDevis(char typeTravaux[], Offre *offre) ListeDevis rechListeDevis(char typeTravaux[], Offre *offre, int tLog)
{ {
if(strcmp(offre->travaux,typeTravaux) == 0) for(int i=0; i<tLog; i++)
return offre->listeDevis; if(strcmp(offre[i].travaux,typeTravaux) == 0)
else return offre[i].ldevis;
rechListeDevis(typeTravaux, offre->suivant); return NULL; //! Temporaire
} }
//~~~~~~~~~~~~PARTIE 1~~~~~~~~~~~~ //~~~~~~~~~~~~PARTIE 1~~~~~~~~~~~~
@ -19,15 +19,10 @@ ListeDevis rechListeDevis(char typeTravaux[], Offre *offre)
void Affiche(ListeDevis l) void Affiche(ListeDevis l)
{ {
printf("#######################################################################\n"); printf("#######################################################################\n");
printf("Devis n°%d\n",l->devis.numDevis); //printf("Devis n°%d\n",???);
printf("Nom de l'entreprise : %s\n",l->devis.nomEntreprise); printf("Nom de l'entreprise : %s\n",l->devis.entreprise);
printf("Type de travaux : %s\n",l->devis.typeTravaux); printf("Durée du devis : %d\n", l->devis.duree);
printf("Montant du devis : %d\n",l->devis.montant); printf("Montant du devis : %d\n",l->devis.cout);
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("######################################################################\n"); printf("######################################################################\n");
} }
@ -46,7 +41,7 @@ void AfficheDevis(ListeDevis l)
while(l != NULL) while(l != NULL)
{ {
Affiche(l); Affiche(l);
l = l->suivant; l = l->suiv;
} }
} }
} }
@ -57,7 +52,7 @@ void AfficheDevis(ListeDevis l)
* \param[in] entr nom de l'entreprise * \param[in] entr nom de l'entreprise
*/ */
void AfficheDevisE(ListeDevis l, char entr) void AfficheDevisE(ListeDevis l, char entr[])
{ {
if(l == NULL) if(l == NULL)
{ {
@ -67,11 +62,11 @@ void AfficheDevisE(ListeDevis l, char entr)
{ {
while(l != NULL) while(l != NULL)
{ {
if(strcmp(l->devis.nomEntreprise,entr) == 0) if(strcmp(l->devis.entreprise, entr) == 0)
{ {
Affiche(l); 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" #include "specification1.h"
void affiche(Offre *offre) void affiche(Offre *offre, int tLog)
{ {
//TODO Optimiser cet étron de code //TODO Optimiser cet étron de code
int choix int choix;
char typeTravaux[30], nomEntreprise[30]; char typeTravaux[30], nomEntreprise[30];
ListeDevis l;
printf("####################################################\n"); printf("####################################################\n");
printf("1- Afficher les devis pour un type de travaux.\n"); printf("1- Afficher les devis pour un type de travaux.\n");
printf("2- Afficher les devis par type pour une entreprise.\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"); 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 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); AfficheDevis(l);
break; break;
case 2: case 2:
printf("Quel est le nom de l'entreprise ?\n"); 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 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); AfficheDevisE(l, nomEntreprise);
break; break;
default: default:
@ -32,3 +33,22 @@ void affiche(Offre *offre)
break; 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; } Offre;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~FONCTION~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //~~~~~~~~~~~~~~~~~~~~~~~~~~~FONCTION~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//remplir les liste
//~~~~~~~~~~~~PARTIE 1~~~~~~~~~~~~ //~~~~~~~~~~~~PARTIE 1~~~~~~~~~~~~
//Afficher l'ensemble des devis pour un type de travaux ListeDevis rechListeDevis(char typeTravaux[], Offre *offre, int tLog);
//@t étant la tache void Affiche(ListeDevis l);
void AfficheDevis(ListeDevis l, char t); 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 int chargement(Offre *offre, char fichier[]);
//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);
//~~~Idée :~~~ //~~~Idée :~~~
@ -59,3 +58,21 @@ void AfficheDevisE(ListeDevis l, char entr, char t);
//si égalité : //si égalité :
//Celle ayant le plus gros capital //Celle ayant le plus gros capital
void ShowEntrepTache(ListeDevis l, char trv); 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