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 FILE* fichier = NULL; 138 FILE* fichier = NULL;
216 fichier = fopen("very_small_example.list", "r+"); 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 return 0; 150 return 0;
222 } 151 }