Pascal/Turbo Pascal - programa en pascal

   
Vista:

programa en pascal

Publicado por leonardp (3 intervenciones) el 18/10/2013 01:35:50
hola me podrían ayudar con este programa en pascal

el problema dice:
elaborar el programa que imprima el cheque quincenal de una compañía para sus empleados, conociendo el nombre, dirección, sueldo mensual y categoría. el programa realizara la lectura desde el archivo empleado.dat, presentara un reporte que incluya el nombre y dirección de los empleados, categoría, pago quincenal y lo grabara con el nombre de pagoemp.rep; se deberán considerar lo impuestos que correspondan sabiendo que para la categoría a es el 8%, b es el 10%, c es el 12% y x es el 15%.

es para diez empleados y deben diseñarse tres procedimientos

procedimiento de lectura. lee la información desde el archivo empleado.dat y los guardara de manera temporal

procedimiento graba , graba la información del arreglo con los datos de los empleados y el pago quincenal calculado en el archivo pagoemp.rep

procedimiento imprime, lee desde el archivo pagoemp.rep y presentara en pantalla la información de los empleados.
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

programa en pascal

Publicado por ramon (2072 intervenciones) el 20/10/2013 13:20:32
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
{A ver si esto te sirve de ayuda}
 
program empleados;
 uses
    crt;
 
  const
     categ : array['A'..'D'] of integer = (8,10,12,15);
     emp = 10;
  type
    regdatos = record
          nombre : string[100];
       direccion : string[80];
  sueldo_mensual : real;
       categoria : char;
      end;
 
    regreport = record
           nombre : string[100];
        direccion : string[80];
        categoria : char;
   pago_quincenal : real;
              end;
 
 var
   datos : regdatos;
   porte : regreport;
   long : longint;
   f : file of regdatos;
   f1 : file of regreport;
 
 
  procedure crear_archivo_empleado_dat;
  var
    tecla : char;
  begin
     clrscr;
     writeln('****** Entrada Datos Empleado *******');
     writeln;
     write('   Entre Nombre         : ');
     readln(datos.nombre);
     write('   Entre Direccion      : ');
     readln(datos.direccion);
     write('   Entre Sueldo Mensual : ');
     readln(datos.sueldo_mensual);
     write('   Entre Categoria [A,B,C,D] : ');
     repeat
         tecla := upcase(readkey);
     until tecla in['A','B','C','D'];
     write(tecla);
     datos.categoria := tecla;
     writeln;
     assign(f,'empleado.dat');
  {$I-} reset(f); {$I+}
     if ioresult <> 0 then
     begin
        rewrite(f);
        seek(f,0);
        write(f,datos);
        close(f);
     end
 else
    begin
       seek(f,filesize(f));
       write(f,datos);
       close(f);
    end;
 end;
 
 procedure presentadatosempleados;
 var
   tt : longint;
  begin
      assign(f,'empleado.dat');
  {$I-} reset(f); {$I+}
     if ioresult <> 0 then
     begin
 
     end
   else
      begin
          clrscr;
          for tt := 0 to filesize(f) - 1 do
          begin
             seek(f,tt);
             read(f,datos);
             writeln(datos.nombre,'   ',datos.direccion,'   ',datos.categoria,
             '   ',datos.sueldo_mensual:0:2);
         end;
           readkey;
           close(f);
      end;
  end;
 
 
 procedure crea_reporte;
 var
    arch : longint;
    sulquin : real;
 begin
    assign(f,'empleado.dat');
  {$I-} reset(f); {$I+}
     if ioresult <> 0 then
     begin
        writeln('*** Error De Archivo No Existe Pulse Una Tecla ***');
        readkey;
     end
   else
    begin
    for arch := 0 to filesize(f) - 1 do
    begin
       seek(f,arch);
       read(f,datos);
       porte.nombre := datos.nombre;
       porte.direccion := datos.direccion;
       porte.categoria := datos.categoria;
       sulquin := (datos.sueldo_mensual -
      ((datos.sueldo_mensual * categ[datos.categoria]) / 100)) / 2;
       porte.pago_quincenal := sulquin;
    assign(f1,'pagoemp.rep');
 {$I-} reset(f1); {$I+}
    if ioresult <> 0 then
    begin
        rewrite(f1);
        seek(f1,0);
        write(f1,porte);
        close(f1);
    end
  else
     begin
        seek(f1,filesize(f1));
        write(f1,porte);
        close(f1);
     end;
    end;
   end;
   close(f);
 end;
 
  procedure presenta_informacion;
  var
    info : longint;
  begin
     assign(f1,'pagoemp.rep');
 {$I-} reset(f1); {$I+}
    if ioresult <> 0 then
    begin
       writeln('*** Error De Archivo No Existe Pulse Una Tecla ***');
       readkey;
    end
  else
    begin
     clrscr;
     writeln('<<<< Informacion Quincenal De Empleados >>>>');
     writeln;
     writeln('Nombre       Direccion    Categoria     Pago Quincenal');
   for info := 0 to filesize(f1) - 1 do
   begin
     seek(f1,info);
     read(f1,porte);
     writeln(porte.nombre,'       ',porte.direccion,'       ',porte.categoria,
             '         ',porte.pago_quincenal:0:2);
   end;
   writeln;
   writeln('//// Pulse Una Tecla ////');
   readkey;
   close(f1);
   erase(f1);
    end;
  end;
 
  procedure menu;
   var
    opc, teb : char;
    sal : boolean;
  begin
      sal := false;
    repeat
       clrscr;
       writeln('***** Menu Principal *****');
       writeln;
       writeln('  1 = Entrada Datos Empleado');
       writeln('  2 = Crear Reporte Quincenal');
       writeln('  3 = Presentar Reporte');
       writeln('  4 = Salir');
       writeln;
       writeln('<<<<<< Elija Opcion >>>>>>');
       repeat
           teb := readkey;
       until teb in['1','2','3','4'];
       clrscr;
     case teb of
  '1' : crear_archivo_empleado_dat;
  '2' : crea_reporte;
  '3' : presenta_informacion;
  '4' : 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
Imágen de perfil de Marisol

programa en pascal

Publicado por Marisol (16 intervenciones) el 06/07/2014 14:59:06
Buenos dias,

No se si podrias ayudarme,

yo estoy haciendo un programa parecido a este. Estoy empezando a penas a aprender pascal, y bueno ya se archivos registros, mas no se como hacer con unos detalles.

Yo ingreso varios empleados, y luego quiero consultar y que me aprarezca una lista con todos los empleados ingresados. Lo hago pero solo me aparece el ultimo ingresado.

Tambien quiero buscar al empleado por cedula y no lo logro.

Agradeceria mucho tu ayuda, soy novata en pascal y de verdad quiero aprender.

Gracias de antemano.
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