Commit 327283e27963e7b561c5edee228300272e2b5deb
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 | } |