Pascal/Turbo Pascal - Ayuda urgente por favor con este problema

 
Vista:
sin imagen de perfil

Ayuda urgente por favor con este problema

Publicado por Rocio (5 intervenciones) el 02/12/2014 20:13:48
Con el modelo de un "CLUB DE FUTBOL" tengo que hacer los siguiente:


1) Diseñar un registro que contenga campos de tipo cadena, enteros, reales y booleanos. No hay un límite de campos.




2) Diseñar un programa que contenga las siguientes opciones:
MENU PRINCIPAL

1- CREAR EL ARCHIVO

2- CARGAR REGISTROS

3- MODIFICAR REGISTROS

4- ELIMINAR REGISTROS FISICAMENTE DEL ARCHIVO.

5- CALCULAR PROMEDIO DE VALORES DE LOS REGISTROS . Por ej. Promedio de edades, peso ,altura ,etc.

6- MOSTRAR LOS REGISTROS QUE CUMPLAN ALGUN CRITERIO Por ejemplo aquellos registros que superen el promedio de edad establecido.

7- MOSTRAR TODOS LOS REGISTROS ELIMINADOS LOGICAMENTE.

8- MOSTRAR SI EL JUGADOR ESTA EN ACTIVIDAD O NO.




El programa no debería permitir hacer ninguna opción si el archivo no fue creado, solo si el archivo está creado se permitirá hacer las opciones de la 2 hasta la opción 8. El archivo debe crearse la primera vez que se ejecute el programa y no cada vez que se ejecute el programa, con lo cual la opción 1 solo se debe realizar la primera vez que ejecutamos el programa, luego hay que chequear que el archivo exista.



Desde ya muchisimas gracias para el que me pueda ayudar :)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ayuda urgente por favor con este problema

Publicado por ramon (2158 intervenciones) el 04/12/2014 01:05:59
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
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
{A ver si esto te hayiuda parte 1 de 2}
 
 program clubdefutbol;
  uses
     crt;
  const
     archivo = 'Equipo.dat';
 
  type
     jugadores = record
              nombre : string[100];
           apellidos : string;
                edad : integer;
                 dni : longint;
                peso : real;
              altura : real;
            telefono : longint;
           direccion : string[100];
              puesto : string[50];
              sueldo : real;
              inicio : string[12];
               final : string[12];
           actividad : boolean;
             end;
 
   var
     ficha : jugadores;
         f : file of jugadores;
 
 
   function existearchivo : boolean;
   begin
      assign(f,archivo);
   {$I-} reset(f); {$I+}
   if ioresult <> 0 then
   existearchivo := false
  else
     existearchivo := true;
   end;
 
   procedure guarda_a_archivo(a : jugadores);
   begin
      if existearchivo = false then
      begin
         rewrite(f);
         seek(f,0);
         write(f,a);
         close(f);
      end
    else
       begin
          seek(f,filesize(f));
          write(f,a);
          close(f);
       end;
   end;
 
   procedure entradaficha;
   begin
      clrscr;
      writeln('     ******* Entrada Ficha Jugador ********');
      writeln;
      with ficha do
      begin
      write('    Entre Nombre          : ');
      readln(nombre);
      write('    Entre Apellidos       : ');
      readln(apellidos);
      write('    Entre Edad            : ');
      readln(edad);
      write('    Entre Num. DNI        : ');
      readln(dni);
      write('    Entre Peso            : ');
      readln(peso);
      write('    Entre Altura          : ');
      readln(altura);
      write('    Entre Telefono        : ');
      readln(telefono);
      write('    Entre Direccion       : ');
      readln(direccion);
      write('    Entre Puesto          : ');
      readln(puesto);
      write('    Entre Sueldo          : ');
      readln(sueldo);
      writeln;
      writeln('  ----- Las Fechas De Inicio Y Fin Asi [Dia/Mes/A¤o] -----');
      writeln;
      write('    Entre Inicio Contrato : ');
      readln(inicio);
      write('    Entre Final Contrato  : ');
      readln(final);
      actividad := true;
      guarda_a_archivo(ficha);
   end;
  end;
 
  procedure cargarficha;
  var
    k, eldni : longint;
    encont : boolean;
  begin
     clrscr;
     writeln('   ***** Presentecion De Ficha Por DNI *****');
     writeln;
     write('   Entre El Num. Del DNI : ');
     readln(eldni);
     if existearchivo = true then
     begin
         close(f);
         encont := false;
     assign(f,archivo);
     reset(f);
     for k := 0 to filesize(f) - 1 do
     begin
        seek(f,k);
        read(f,ficha);
        if ficha.dni = eldni then
        begin
          if ficha.actividad = true then
          begin
           writeln('    ****** La Ficha Solicitada Es ******');
           writeln;
           with ficha do
           begin
           writeln('   Nombre           = ',nombre);
           writeln('   Apellidos        = ',apellidos);
           writeln('   Edad             = ',edad);
           writeln('   Num. DNI         = ',dni);
           writeln('   Peso             = ',peso:0:2);
           writeln('   Altura           = ',altura:0:2);
           writeln('   Telefono         = ',telefono);
           writeln('   Direccion        = ',direccion);
           writeln('   Puesto           = ',puesto);
           writeln('   Sueldo           = ',sueldo:0:2);
           writeln('   Inicio Contrato  = ',inicio);
           writeln('   Final Contrato   = ',final);
           writeln('   Activo           = ',actividad);
           writeln;
           writeln('    >>>>> Pulse Una Tecla <<<<<');
           readkey;
           end;
           encont := true;
         end;
           close(f);
         if encont = false then
         begin
            writeln('    ***** Ficha No Encontrada O No Activa *****');
            writeln('     <<<<<< Pulse Una Tecla >>>>>>');
            readkey;
         end;
        end;
      end;
    end;
  end;
 
  procedure muestrafichas(t : char);
  var
    encont : boolean;
    k : longint;
  begin
     if existearchivo = true then
     begin
         close(f);
     encont := false;
     assign(f,archivo);
     reset(f);
     for k := 0 to filesize(f) - 1 do
     begin
        seek(f,k);
        read(f,ficha);
        writeln;
        if t in['A','a'] then
        begin
           if ficha.actividad = true then
           begin
           with ficha do
           begin
           writeln('   Nombre           = ',nombre);
           writeln('   Apellidos        = ',apellidos);
           writeln('   Edad             = ',edad);
           writeln('   Num. DNI         = ',dni);
           writeln('   Peso             = ',peso:0:2);
           writeln('   Altura           = ',altura:0:2);
           writeln('   Telefono         = ',telefono);
           writeln('   Direccion        = ',direccion);
           writeln('   Puesto           = ',puesto);
           writeln('   Sueldo           = ',sueldo:0:2);
           writeln('   Inicio Contrato  = ',inicio);
           writeln('   Final Contrato   = ',final);
           writeln('   Activo           = ',actividad);
           writeln;
           writeln('    >>>>> Pulse Una Tecla <<<<<');
           readkey;
           encont := true;
           end;
         end;
       end;
       if t in['D','d'] then
        begin
           if ficha.actividad = true then
           begin
           with ficha do
           begin
           writeln('   Nombre           = ',nombre);
           writeln('   Apellidos        = ',apellidos);
           writeln('   Edad             = ',edad);
           writeln('   Num. DNI         = ',dni);
           writeln('   Peso             = ',peso:0:2);
           writeln('   Altura           = ',altura:0:2);
           writeln('   Telefono         = ',telefono);
           writeln('   Direccion        = ',direccion);
           writeln('   Puesto           = ',puesto);
           writeln('   Sueldo           = ',sueldo:0:2);
           writeln('   Inicio Contrato  = ',inicio);
           writeln('   Final Contrato   = ',final);
           writeln('   Activo           = ',actividad);
           writeln;
           writeln('    >>>>> Pulse Una Tecla <<<<<');
           readkey;
           encont := true;
           end;
         end;
       end;
     end;
       close(f);
     end;
  end;
 
  procedure modificarficha;
  var
     k, eldni : longint;
     sal, encont : boolean;
     rep : char;
     i : integer;
     activ : string[5];
  begin
     clrscr;
     writeln('    ******* Modificar Ficha *******');
     writeln;
     write('   Entre El Num. DNI : ');
     readln(eldni);
     encont := false;
     if existearchivo = true then
     begin
     close(f);
     encont := false;
     assign(f,archivo);
     reset(f);
     for k := 0 to filesize(f) - 1 do
     begin
        seek(f,k);
        read(f,ficha);
        if ficha.dni = eldni then
        begin
        sal := false;
      repeat
           clrscr;
           writeln('   ***** Los Datos Actuales Son *****');
           writeln;
           with ficha do
           begin
           writeln(' 1 =  Nombre           = ',nombre);
           writeln(' 2 =  Apellidos        = ',apellidos);
           writeln(' 3 =  Edad             = ',edad);
           writeln(' 4 =  Num. DNI         = ',dni);
           writeln(' 5 =  Peso             = ',peso:0:2);
           writeln(' 6 =  Altura           = ',altura:0:2);
           writeln(' 7 =  Telefono         = ',telefono);
           writeln(' 8 =  Direccion        = ',direccion);
           writeln(' 9 =  Puesto           = ',puesto);
           writeln(' A =  Sueldo           = ',sueldo:0:2);
           writeln(' B =  Inicio Contrato  = ',inicio);
           writeln(' C =  Final Contrato   = ',final);
           writeln(' D =  Activo           = ',actividad);
           writeln(' S = Salir');
           writeln;
           writeln('   >>>>> Elija Dato A Modificar O Salir <<<<<<<<');
           end;
           repeat
           rep := upcase(readkey);
      until rep in['1','2','3','4','5','6','7','8','9','A','B','C','D','S'];
      case rep of
 '1' : begin
         write('    Entre Nombre          : ');
         readln(ficha.nombre);
       end;
 '2' : begin
         write('    Entre Apellidos       : ');
         readln(ficha.apellidos);
      end;
 '3' : begin
         write('    Entre Edad            : ');
         readln(ficha.edad);
       end;
 '4' : begin
         write('    Entre Num. DNI        : ');
         readln(ficha.dni);
       end;
 '5' : begin
         write('    Entre Peso            : ');
         readln(ficha.peso);
       end;
 '6' : begin
         write('    Entre Altura          : ');
         readln(ficha.altura);
       end;
 '7' : begin
        write('    Entre Telefono        : ');
        readln(ficha.telefono);
       end;
 '8' : begin
         write('    Entre Direccion       : ');
         readln(ficha.direccion);
       end;
 '9' : begin
         write('    Entre Puesto          : ');
         readln(ficha.puesto);
       end;
 'A' : begin
        write('    Entre Sueldo          : ');
        readln(ficha.sueldo);
       end;
 'B' : begin
         write('    Entre Inicio Contrato : ');
         readln(ficha.inicio);
       end;
 'C' : begin
         write('    Entre Final Contrato  : ');
         readln(ficha.final);
       end;
 'D' : begin
         write('   Entre Activo True O False : ');
         readln(activ);
         for i := 1 to length(activ) do
         activ[i] := upcase(activ[i]);
         if activ = 'TRUE' then
         ficha.actividad := true
       else
         ficha.actividad := false;
       end;
 'S' : sal := true;
      end;
   until sal = true;
   end;
        seek(f,k);
        write(f,ficha);
        encont := true;
        end;
        close(f);
      end;
      if encont = false then
     begin
       writeln('    ***** Ficha No Encontrada *****');
       writeln('     <<<<<< Pulse Una Tecla >>>>>>');
       readkey;
     end;
  end;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda urgente por favor con este problema

Publicado por ramon (2158 intervenciones) el 04/12/2014 01:12:21
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
{parte 2}
 
 procedure anularficha;
  var
     k, eldni : longint;
     encont : boolean;
  begin
     clrscr;
     writeln('    ******* Anular Ficha ********');
     writeln;
     write('    Entre Num. DNI : ');
     readln(eldni);
     encont := false;
     if existearchivo = true then
     begin
     close(f);
     encont := false;
     assign(f,archivo);
     reset(f);
     for k := 0 to filesize(f) - 1 do
     begin
        seek(f,k);
        read(f,ficha);
        if ficha.dni = eldni then
        begin
          ficha.actividad := false;
          seek(f,k);
          write(f,ficha);
          encont := true;
          writeln('   ??????? Anulando Ficha ???????');
          delay(4999);
          break;
        end;
     end;
     close(f);
     if encont = false then
     begin
       writeln('    ***** Ficha No Encontrada O No Activa *****');
       writeln('     <<<<<< Pulse Una Tecla >>>>>>');
       readkey;
     end;
    end;
  end;
 
  procedure promedio_de;
  var
    tre : char;
    pp : string[12];
    ty : string[50];
    k, mdi, ee : integer;
    ss : real;
   begin
       writeln('    ****** Calculo De Promedio Por *******');
       writeln;
       writeln(' 1 = Por Edad');
       writeln(' 2 = Por Peso');
       writeln(' 3 = Por Altura');
       writeln(' 4 = Puesto En El Equipo');
       writeln(' 5 = Importe sueldo');
       writeln(' 6 = Inicio Contrato');
       writeln(' 7 = Final Contrato');
       writeln(' 8 = Nada');
       writeln;
       writeln('    >>>> Elija Opcion <<<<<');
       repeat
           tre := readkey;
       until tre in['1','2','3','4','5','6','7','8'];
       if existearchivo = true then
       begin
          close(f);
          assign(f,archivo);
          reset(f);
       clrscr;
     case tre of
  '1' : begin
           writeln('   Entre Edad : ');
           readln(ee);
           mdi := 0;
           for k := 0 to filesize(f) - 1 do
           begin
              seek(f,k);
              read(f,ficha);
              if ficha.edad = ee then
              mdi := mdi + 1;
           end;
            writeln;
        writeln('   LA Media Por Edad Es = ',(filesize(f) - 1 / mdi):0:2);
        writeln('   Pulse Una Tecla');
        readkey;
        close(f);
        end;
  '2' : begin
          writeln('   Entre Peso : ');
          readln(ss);
          mdi := 0;
          for k := 0 to filesize(f) - 1 do
           begin
              seek(f,k);
              read(f,ficha);
              if ficha.peso = ss then
              mdi := mdi + 1;
           end;
            writeln;
        writeln('   LA Media Por Peso Es = ',(filesize(f) - 1 / mdi):0:2);
        writeln('   Pulse Una Tecla');
        readkey;
        close(f);
       end;
  '3' : begin
          writeln('   Entre Altura : ');
          readln(ss);
          mdi := 0;
          for k := 0 to filesize(f) - 1 do
           begin
              seek(f,k);
              read(f,ficha);
              if ficha.altura = ss then
              mdi := mdi + 1;
           end;
            writeln;
        writeln('   LA Media Por Altura Es = ',(filesize(f) - 1 / mdi):0:2);
        writeln('   Pulse Una Tecla');
        readkey;
        close(f);
       end;
  '4' : begin
          writeln('   Entre Puesto : ');
          readln(ty);
          mdi := 0;
          for k := 0 to filesize(f) - 1 do
           begin
              seek(f,k);
              read(f,ficha);
              if ficha.puesto = ty then
              mdi := mdi + 1;
           end;
            writeln;
        writeln('   LA Media Por Puesto Es = ',(filesize(f) - 1 / mdi):0:2);
        writeln('   Pulse Una Tecla');
        readkey;
        close(f);
       end;
  '5' : begin
         writeln('   Entre Sueldo : ');
          readln(ss);
          mdi := 0;
          for k := 0 to filesize(f) - 1 do
           begin
              seek(f,k);
              read(f,ficha);
              if ficha.sueldo = ss then
              mdi := mdi + 1;
           end;
            writeln;
          writeln('   LA Media Por Sueldo Es = ',(filesize(f) - 1 / mdi):0:2);
          writeln('   Pulse Una Tecla');
          readkey;
          close(f);
       end;
  '6' : begin
         writeln('   Entre Inicio Contrato : ');
         readln(pp);
         mdi := 0;
         for k := 0 to filesize(f) - 1 do
           begin
              seek(f,k);
              read(f,ficha);
              if ficha.inicio = pp then
              mdi := mdi + 1;
           end;
            writeln;
         writeln('   LA Media Por Inicio Contrato Es = ',(filesize(f) - 1 / mdi):0:2);
         writeln('   Pulse Una Tecla');
         readkey;
         close(f);
       end;
  '7' : begin
          writeln('   Entre Fin Contrato : ');
          readln(pp);
          mdi := 0;
          for k := 0 to filesize(f) - 1 do
           begin
              seek(f,k);
              read(f,ficha);
              if ficha.final = pp then
              mdi := mdi + 1;
           end;
          writeln;
          writeln('   LA Media Por Fin Contrato Es = ',(filesize(f) - 1 / mdi):0:2);
          writeln('   Pulse Una Tecla');
          readkey;
          close(f);
       end;
     end;
   end;
  end;
 
  procedure activo_si_no;
  var
    eldni, j, ll : longint;
    begin
      write('  Entre El Num. DNI : ');
      readln(eldni);
      if existearchivo = true then
       begin
          close(f);
          assign(f,archivo);
          reset(f);
          for j := 0 to filesize(f) - 1 do
          begin
             seek(f,j);
             read(f,ficha);
             if ficha.dni = eldni then
             begin
             if ficha.actividad = true then
             writeln('   Ficha Activa')
          else
             writeln('   Ficha Anulada');
             close(f);
             break;
             end;
          end;
       end;
    end;
 
 
  procedure menu;
  var
    tec : char;
    sal : boolean;
  begin
      sal := false;
   repeat
       clrscr;
       writeln('    ******* Menu General *******');
       writeln;
       writeln('  1 = Entrada De Fichas');
       writeln('  2 = Cargar Ficha Por DNI');
       writeln('  3 = Modificar Ficha Por DNI.');
       writeln('  4 = Eliminar Ficha Por DNI');
       writeln('  5 = Calcular Promedios Por Valores');
       writeln('  6 = Mostrar Fichas Por Criterios');
       writeln('  7 = Mostrar Fichas Eliminadas');
       writeln('  8 = El Jugador Esta En Actividad Por DNI');
       writeln('  9 = Salir');
       writeln;
       writeln('    >>>> Elija Opcion <<<<');
       repeat
           tec := readkey;
       until tec in['1','2','3','4','5','6','7','8','9'];
     clrscr;
     case tec of
 '1' : entradaficha;
 '2' : cargarficha;
 '3' : modificarficha;
 '4' : anularficha;
 '5' : promedio_de;
 '6' : muestrafichas('A');
 '7' : muestrafichas('D');
 '8' : activo_si_no;
 '9' : sal := true;
  end;
   until sal = true;
 end;
 
 
   begin
      menu;
   end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar