diff --git a/src/chargement.c b/src/chargement.c new file mode 100644 index 0000000..0cde77c --- /dev/null +++ b/src/chargement.c @@ -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; itravaux,typeTravaux) == 0) - return offre->listeDevis; - else - rechListeDevis(typeTravaux, offre->suivant); + for(int i=0; idevis.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; } } } \ No newline at end of file diff --git a/src/init.c b/src/init.c new file mode 100644 index 0000000..b25bc93 --- /dev/null +++ b/src/init.c @@ -0,0 +1,7 @@ +/** + * @file init.c + * @brief Fonctions d'initialisation de Pile/File/Liste +*/ + +#include "specification1.h" + diff --git a/src/main.c b/src/main.c index 80376b3..a727cc3 100644 --- a/src/main.c +++ b/src/main.c @@ -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,18 +18,37 @@ 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: printf("Vous ne pouvez choisir qu'entre 1 et 2.\n"); 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; } \ No newline at end of file diff --git a/src/specification1.h b/src/specification1.h index e87941b..98b70b9 100644 --- a/src/specification1.h +++ b/src/specification1.h @@ -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 :~~~ @@ -58,4 +57,22 @@ void AfficheDevisE(ListeDevis l, char entr, char t); //celle ayant le coût de réalisation le moins cher //si égalité : //Celle ayant le plus gros capital -void ShowEntrepTache(ListeDevis l, char trv); \ No newline at end of file +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~~~~~~~~~~~~ \ No newline at end of file