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 | 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 | } | ... | ... |