Commit 327283e27963e7b561c5edee228300272e2b5deb

Authored by acuadros
1 parent 9f3c7d31

main.c

Showing 1 changed file with 117 additions and 188 deletions   Show diff stats
1   -#include <stdio.h>
2   -#include <stdlib.h>
3   -#define NBC 20
4   -#define NBO 40
5   -#define NBF 10
6   -#define LINE_MAX 1000
  1 +#include "fonction.h"
7 2  
  3 +//explication de l'utilisation du menu
8 4  
9   -#include <string.h>
10   -
11   -
12   -
13   -typedef struct Oeuvres Oeuvres;
14   -struct Oeuvres
15   -{
16   - char title[LINE_MAX];
17   - char annee[LINE_MAX];
18   - char commentaire[LINE_MAX];
19   - Oeuvres *suivant;
20   -
21   -};
22   -
23   -
24   -typedef Oeuvres *ptoeuvres, *liste_chaine;
25   -
26   -
27   -typedef struct Realisateur Realisateur;
28   -struct Realisateur
  5 +void commande()
29 6 {
30   - char nom[LINE_MAX];
31   - char prenom[LINE_MAX];
32   - ptoeuvres filmographe;
33   - Realisateur *suivant;
34   -};
35   -
36   -typedef Realisateur *ptrealisateur, *liste_realisateur;
37   -
38   -typedef struct
39   -{
40   - Realisateur realisateur;
41   - ptrealisateur suivant;
42   -
43   -}REALISATEUR;
44   -
45   -
46   -int readPartOfLine(int a,int b,char line[LINE_MAX],char part[LINE_MAX])
47   -{
48   -
49   -
50   - int debut = a;
51   - int endAv = b;
52   - int av = 0;
53   - while(debut < endAv)
54   - {
55   -
56   - part[av] = line[debut];
57   - debut++;
58   - av++;
59   - }
60   - part[av] = '\0';
61   - return debut;
62   -
  7 + printf("que voulez vous faire ? \n1 = afficher les realisteurs\n2 = chercher et selectionner un realisteur\n3 = afficher le realisateur selectionner\n4 = effacer le realisateur selectionner\n5 = ajouter un film au realisateur selectionner\n6 = effacer un film au realisateur selectioner\n7 = ajouter un realisateur\n8 = quitter \n");
63 8 }
64   -void readElement(char element[LINE_MAX],ptoeuvres film)
65   -{
66   -
67   -
68   -
69 9  
70   - int begin = 0;
71   - if(element[0] == '\t')
72   - begin = 2;
73   - int Pbegin = strpbrk(element,"(") - element;
74   - int Pend =strpbrk(element,")") - element;
75   - int end = findEnd(element);
  10 +// Menu du programme
76 11  
77   - readPartOfLine(begin,Pbegin,element,film->title);
78   -
79   - readPartOfLine(Pbegin+1,Pend,element,film->annee);
80   -
81   - readPartOfLine(Pend+1,end,element,film->commentaire);
82   - printf("titre : %s , annee : %s , commentaire : %s \n",film->title,film->annee,film->commentaire);
83   -
84   -
85   -}
86   -int findEnd(char line[LINE_MAX])
87   -{
88   - int av = 0;
89   - while(line[av] != '\n')
90   - av++;
91   - return av;
92   -}
93   -void initOeuvre(ptoeuvres oe)
94   -{
95   -
96   -
97   - int e;
98   - for(e = 0;e<LINE_MAX;e++)
99   - {
100   - oe->annee[e] = malloc(sizeof(char));
101   - oe->commentaire[e] = malloc(sizeof(char));
102   - oe->title[e] = malloc(sizeof(char));
103   - }
104   - oe->suivant = malloc(sizeof(Oeuvres));
105   -
106   -
107   -}
108   -void readFile(FILE *file, ptrealisateur database)
  12 +void menu(tableReal table)
109 13 {
  14 + int QUITTER = 0;
  15 + int choix = 0;
  16 + char nom[LINE_MAX];
  17 + char prenom[LINE_MAX];
  18 + char nomNew[LINE_MAX];
  19 + char prenomNew[LINE_MAX];
  20 + char titre[LINE_MAX];
  21 + ptrealisateur pt = NULL;
  22 + commande();
110 23  
111   -
112   - char line[LINE_MAX];
113   - int av = 0;
114   -
115   - int first = 0;
116   -
117   - int virgule = 0;
118   - int tab = 0;
119   - int end = 0;
120   -
121   - char element[LINE_MAX];
122   -
123   -
124   -
125   - ptrealisateur actualReal = database;
126   - ptoeuvres actualOeuvre = NULL;
127   -
128   -
129   - actualReal->filmographe = malloc(sizeof(Oeuvres));
130   - actualOeuvre = actualReal->filmographe;
131   -
132   -
133   -
134   -
135   -
136   - char *ret;
137   - while(av == 0)
  24 + while(QUITTER==0)
138 25 {
139   -
140   - if(fgets(line,LINE_MAX,file) != NULL)
  26 + while(choix == 0)
  27 + {
  28 + scanf("%d",&choix);
  29 + if(choix > 8 || choix < 0)
  30 + choix = 0;
  31 + system("cls");
  32 + }
  33 + switch(choix)
141 34 {
142 35  
  36 + case 1: // afficher un realisateur
  37 + {
  38 + commande();
  39 + afficherTable(table);
  40 + choix = 0;
  41 + break;
  42 + }
  43 + case 2: // chercher un realisateur
  44 + {
  45 + commande();
  46 + printf("chercher, nom : ");
  47 + scanf("%s",&nom);
  48 + printf("prenom : ");
  49 + scanf("%s",&prenom);
  50 + pt = findReal(table,nom,prenom);
  51 + choix = 0;
  52 + break;
  53 + }
  54 + case 3: //afficher un realisteur selectionne
  55 + {
  56 + commande();
  57 + if(pt != NULL)
  58 + afficherReal(table,pt->nom,pt->prenom);
  59 + else
  60 + printf("pas de realisateur selectionner !");
  61 +
  62 + choix = 0;
  63 + break;
  64 + }
  65 + case 4: // supprimer un realisateur selectionne
  66 + {
  67 + commande();
  68 + if(pt != NULL)
  69 + eraseReal(table,pt->nom,pt->prenom);
  70 + else
  71 + printf("pas de realisateur selectionner !");
  72 +
  73 + choix = 0;
  74 + break;
  75 + }
143 76  
144   - ret = strpbrk(line,",");
145   - if(ret != NULL)
  77 + case 5: // ajouter un film dans le realisateur selectionne
  78 + {
  79 + commande();
  80 + if(pt != NULL)
  81 + addFilm(table,pt->nom,pt->prenom);
  82 + else
  83 + printf("pas de realisateur selectionner !");
  84 +
  85 + choix = 0;
  86 + break;
  87 + }
  88 + case 6: //supprimer un film dans le realisateur selectionne
  89 + {
  90 + commande();
  91 + if(pt != NULL)
146 92 {
147   -
148   - if(first == 1)
149   - {
150   -
151   - actualReal->suivant = malloc(sizeof(Realisateur));
152   - actualReal = actualReal->suivant;
153   - actualReal->filmographe = malloc(sizeof(Oeuvres));
154   - actualOeuvre = actualReal->filmographe;
155   - initOeuvre(actualOeuvre);
156   - }
157   -
158   -
159   - first = 1;
160   -
161   - virgule = ret - line;
162   - tab = strpbrk(line,"\t") - line;
163   - end = findEnd(line);
164   - readPartOfLine(0,virgule,line,actualReal->nom);
165   - readPartOfLine(virgule+1,tab,line,actualReal->prenom);
166   -
167   - printf("nom : %s prenom : %s \n",actualReal->nom,actualReal->prenom);
168   -
169   - readPartOfLine(tab+1,end,line,element);
170   -
171   - readElement(element,actualOeuvre);
172   -
173   -
174   - actualOeuvre = actualOeuvre->suivant;
175   -
176   -
177   -
  93 + printf("nom du film à effacer :");
  94 + scanf("%s",titre);
  95 + eraseFilm(pt,titre);
178 96 }
179   - else if(strcmp(line,"\n") != 0)
180   - {
181   -
182   -
183   -
184   - initOeuvre(actualOeuvre);
185   -
186   -
187   -
188   - readElement(line,actualOeuvre);
189   -
190   - actualOeuvre = actualOeuvre->suivant;
191   -
  97 + else
  98 + printf("pas de realisateur selectionner !");
192 99  
  100 + choix = 0;
  101 + break;
  102 + }
  103 + case 7: // ajouter un realisateur
  104 + {
  105 + commande();
  106 + printf("ajouter : nom : ");
  107 + scanf("%s",&nomNew);
  108 + printf("prenom : ");
  109 + scanf("%s",&prenomNew);
  110 + addReal(table,nomNew,prenomNew);
  111 +
  112 + choix = 0;
  113 + break;
  114 + }
  115 + case 8: // quitter
  116 + {
  117 + printf("bye bitches !");
  118 + QUITTER = 1;
  119 + break;
  120 + }
193 121  
194   - }
195 122  
196 123 }
197   - else
198   - av = 1;
199   -
200 124  
201 125  
202 126 }
203 127  
  128 +
204 129 }
205 130  
  131 +// Initialisation de tous les paramètres
206 132  
207   -int main()
  133 +void init()
208 134 {
209 135  
210   -
211   - Realisateur database;
212   - ptrealisateur ptDataBase = &database;
213   - database.filmographe = malloc(sizeof(Oeuvres));
214   - initOeuvre(database.filmographe);
  136 + tableReal table;
  137 + initTable(table);
215 138 FILE* fichier = NULL;
216 139 fichier = fopen("very_small_example.list", "r+");
  140 + readFile(fichier,table);
  141 + fclose(fichier);
217 142  
218   - readFile(fichier,ptDataBase);
  143 + menu(table);
219 144  
  145 +}
  146 +int main()
  147 +{
220 148  
  149 + init();
221 150 return 0;
222 151 }
... ...