Bonjour à tous,

suite à un projet que je dois rendre dans le cadre des mes études, je suis amené à créer une sorte de gestion de cinéma en c.

J'ai cependant un problème dans mon code mais je ne trouve pas de solutions ...

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
#include<stdio.h>
#include<conio-bis.h>
#include<string.h>
#include<windows.h>
 
int main ()
{
   void menu ();          
  menu ();           
 
getch ();
return 0;
}
 
void menu ()
{
 int flag=1;
int choix ;
void tarif ();
void affiche ();
void sorties ();
void admin (); // mot de passe = admin 
 
textcolor(WHITE);
printf("\n				   |--------------------------------------------------------------------------------------------------------------------------|");
printf("\n				   |                                                                                                                          |");
printf("\n				   |   |------------------------------------------------------------------------------------------------------------------|   |");
printf("\n				   |   |                                                                                                                  |   |");
printf("\n				   |   |     CCCCCCCCCCCCC    IIIIIIIIIIIII    NNNN         NNN    EEEEEEEEEEEEE    MMM             MMM    AAAAAAAAAAAAA  |   |");
printf("\n				   |   |    CCCCCCCCC         IIIIIIIIIIIII    NNN NN       NNN    EEEEEEEEEEEEE    MMMM           MMMM    AAAAAAAAAAAAA  |   |");
printf("\n				   |   |   CCCCCCCCC          IIIIIIIIIIIII    NNN  NN      NNN    EEEE             MMM MM       MM MMM    AAA       AAA  |   |");
printf("\n				   |   |  CCCCCCC                 IIII         NNN   NN     NNN    EEEE             MMM  MM     MM  MMM    AAA       AAA  |   |");
printf("\n		 		   |   |  CCCCCC                  IIII         NNN    NN    NNN    EEEEEEEEEEEEE    MMM   MM   MM   MMM    AAAAAAAAAAAAA  |   |");
printf("\n		 		   |   |  CCCCCCC                 IIII         NNN     NN   NNN    EEEE             MMM    MM MM    MMM    AAAAAAAAAAAAA  |   |");
printf("\n				   |   |   CCCCCCCCC          IIIIIIIIIIIII    NNN      NN  NNN    EEEE             MMM      M      MMM    AAA       AAA  |   |");
printf("\n				   |   |    CCCCCCCCC         IIIIIIIIIIIII    NNN       NN NNN    EEEEEEEEEEEEE    MMM             MMM    AAA       AAA  |   |");
printf("\n				   |   |     CCCCCCCCCCCCC    IIIIIIIIIIIII    NNN         NNNN    EEEEEEEEEEEEE    MMM             MMM    AAA       AAA  |   |");
printf("\n				   |   |                                                                                                                  |   |");
printf("\n				   |   |------------------------------------------------------------------------------------------------------------------|   |");
printf("\n				   |                                                                                                                          |");              
printf("\n				   |--------------------------------------------------------------------------------------------------------------------------|");
printf("\n\n\n");
printf("\n                                                                                     Bienvenue au CineMaverick                                \n\n");
printf("\n                                                                                     1  :  Films a l ' affiche                                ");
printf("\n                                                                                     2  :  Consulter les tarifs                               ");
printf("\n                                                                                     3  :  Films bientot disponibles                          ");
printf("\n                                                                                     4  :  Modifier fichier central ( ! admin )               ");
printf("\n                                                                                     5  :  Quitter le CineMaverick                            ");
 
 
do
  {
    printf("\n\n                                                                                     Quel est votre choix ?");
    scanf("%d",&choix);
 
         if (choix >0 && choix <6 )
         {
 
         	 switch (choix)
              {
                case 1 : flag=1;affiche();break;
                case 2 : flag=1;tarif();break; 
		        case 3 : flag=1;sorties();break;
		        case 4 : flag=1;admin();break;
                case 5 : flag=1;printf("\n                                                                                Vous avez choisi le numero 5 : Quitter le CineMaverick\n\n                                                                                Merci de votre viste et a bientot chez CineMaverick");exit(0); 
              }
        }
         else
  	     printf("\n                                                                                     Vous avez saisi un mauvais numero, veuillez recommencer s'il vous plait");
	     flag=0; 
  }
  while (flag!=1);
}
 
void affiche ()
{
	struct film 
    { char titre[20],acteurs[20];
      int duree[20],places;
      short supp;
    };
    struct film a;
  FILE *f;
  int n,nb;
  f=fopen("d:/film.dat","rb");
  if(f)
  { fseek(f,0L,SEEK_END);//on va a la fin du fichier
    n=ftell(f);//on prend la position actuelle 
    nb=n/sizeof(a);//on divise par la taille de la structure pour obtenir le nombre de records
    printf("\nil y a %d films enregistres dans le fichier",nb);
    rewind(f);//on revient au debut pour tout afficher 
    fread(&a,sizeof(a),1,f);
    while(!feof(f))
    { if(a.supp==0)
      {printf("\n TITRE : %s \nACTEURS : %s \nDUREE : %d \nPLACES DISPOS : %d ",a.titre,a.acteurs,a.duree,a.places);
      } 
      fread(&a,sizeof(a),1,f);
 
    }
    fclose(f);
  }
  else
    printf("\nle fichier n'existe pas");	
}
 
 
void tarif ()
{
	struct film 
    { char titre[20],acteurs[20];
      int duree[20],places;
      short supp;
    };
    struct film a;
    char *title;
    int code,x,nombre,pla,prix;
    nombre=a.places;
    FILE *f;
 
  printf ("\n                                                                                     Bienvenue dans la consultation des tarifs de CineMaverick ! ");
  printf ("\n\n                                                                                     Pour quel film voulez vous reserver vos places ?");
  scanf("%s",&title);
  f=fopen("d:/film.dat","rb");
  if(f)
  { x=fread(&a,sizeof(a),1,f);
    printf("\n%d",x);
    while(!feof(f))
    { if(a.supp==0)
      {if(strcmp(a.titre,title)==0)
        {
		  printf("\n                                       TITRE : %s \n                                 ACTEURS : %s \n                                    DUREE : %d \n                         PLACES DISPOS : %d ",a.titre,a.acteurs,a.duree,a.places);
 
            printf("\n                                                                                 Combien de places voulez vous ?");
            scanf("%d",&pla);
            if (nombre-pla<0)
        	     printf("\n                                                                            Il n'y a plus assez de places restantes");
           else
		   {
           nombre=nombre-pla;
           prix=pla*10;
           printf("\n                                                                                  Il y a : %d , places restantes",nombre);
           printf("\n                                                                                  Vous devez payer : %d",prix);
           a.places=nombre;
 
 
           }
 
        }
 
       else
       printf("\n                                                                                       erreur, ce film n'existe pas!");
  }
      x=fread(&a,sizeof(a),1,f);
      printf("\n%d",x);  
    }
    fclose(f);
  }
  else
    printf("\nerreur, le fichier n'existe pas ");
 
 
}
 
 
void sorties ()
{
		struct sorties 
    { char titre[20],acteurs[20];
      int duree[20];
      short supp;
    };
    struct sorties a;
  FILE *f;
  int n,nb;
  f=fopen("d:/sorties.dat","rb");
  if(f)
  { fseek(f,0L,SEEK_END);//on va a la fin du fichier
    n=ftell(f);//on prend la position actuelle 
    nb=n/sizeof(a);//on divise par la taille de la structure pour obtenir le nombre de records
    printf("\nil y a %d films enregistres dans le fichier",nb);
    rewind(f);//on revient au debut pour tout afficher 
    fread(&a,sizeof(a),1,f);
    while(!feof(f))
    { if(a.supp==0)
      {printf("\n TITRE : %s \nACTEURS : %s \nDUREE : %d ",a.titre,a.acteurs,a.duree);
      } 
      fread(&a,sizeof(a),1,f);
 
    }
    fclose(f);
  }
  else
    printf("\nle fichier n'existe pas");
}
 
 
 
void admin ()  // mot de passe = admin
{
	char pass[7]={"admin"};
	char mdp[7];
	int choix,flag,i;
	char menu[6][250]={ "\n                                                                                     1. Ajout","\n                                                                                     2. Affichage","\n                                                                                     3. Modification","\n                                                                                     4. Suppression logique ","\n                                                                                     5. Fin"};
	void affiche ();
	void ajout ();
	void modif();
	void supp ();
	printf("\n                                                                                     Vous voulez modifier le fichier central, veuillez vous connecter . ");
 
	do 
	{
		printf("\n\n                                                                                     Entrez le mot de passe ");
	    scanf("%s",&mdp);
 
	    if (strcmp(mdp,pass)==0)
	    {
 
	      printf("\n                                                                                     Vous etes bien connecte?");
	      flag=1;
	      for(i=0;i<6;i++)
          printf("\n%s",menu[i]);
          do
         {
          printf("\n\n                                                                                     Quel est votre choix ?");
          scanf("%d",&choix);
 
         if (choix >0 && choix <6 )
         {
 
         	 switch (choix)
              {
                case 1 : flag=1;ajout();break;
                case 2 : flag=1;affiche();break; 
		        case 3 : flag=1;modif();break;
		        case 4 : flag=1;supp();break;
                case 5 : flag=1;printf("\n                                                                                     Vous avez choisi le numero 5 : Quitter le menu admin\n\n");exit(0); 
              }
         }
           else
  	       printf("\n                                                                                     Vous avez saisi un mauvais numero, veuillez recommencer s'il vous plait");
	       flag=0; 
        }
         while (flag!=1);
 
	    }
	      else
	      {
	      printf("\n                                                                                     Echec de l'autentification , veuillez reesayer ");
	      flag=0;
	      }
    }
    while(flag!=1);
}
 
 
void ajout ()
{
 struct film 
    { char titre[20],acteurs[20];
      int duree[20],places;
      short supp;
    };
	struct film a;     
    FILE *f;
    f=fopen("d:/film.dat","ab");
     if(f)
    {
	  a=saisie();
      fwrite(&a,sizeof(a),1,f);
      fclose(f);
    } 
   else
     printf("\nerreur lors de l'ajout d'un film ");
}
 
struct film saisie()
{    
    struct film tmp;
    printf("\ntitre ? ");
    scanf("%s",tmp.titre);
    printf("\nacteurs ? ");
    scanf("%s",tmp.acteurs);
    printf("\nduree ? ");
    scanf("%d",tmp.duree);
    printf("\nnombres places ? ");
    scanf("%d",tmp.places);
    tmp.supp=0;
    return tmp;
}

Voici ce que le compilateur m'indique :

D:\projetc\projetfinal.cpp In function 'void ajout()':
268 13 D:\projetc\projetfinal.cpp [Error] 'saisie' was not declared in this scope
D:\projetc\projetfinal.cpp At global scope:
276 23 D:\projetc\projetfinal.cpp [Error] variable 'film saisie' has initializer but incomplete type
276 20 D:\projetc\projetfinal.cpp [Error] 'tmp' was not declared in this scope
277 1 D:\projetc\projetfinal.cpp [Error] expected ',' or ';' before '{' token



Comment remédier à cela , car d'apres moi j'ai bien déclaré ma fonction saisie qui est de type : struct film...


En vous remerciant d'avance ,

bonne journée.
Cordialement Maverick