Pascal/Turbo Pascal - Trabajo de almacenar nombres y sus datos

 
Vista:
sin imagen de perfil

Trabajo de almacenar nombres y sus datos

Publicado por Saimon (3 intervenciones) el 13/08/2021 04:46:14
El ejercicio
Se requiere clasificar a las personas que se jubilan en el año 2008, los tres tipos de jubilación son lo siguientes
Por edad
Por antigüedad joven
Por antigüedad adulta
Como se específica a continuación:

Por antigüedad por edad deben de tener 60 años o más y menos de 25 años de servicio en su empleo

Por antigüedad joven deben de tener menos de 60 años y mas de 25 años de servicio en su empleo

Por antigüedad adulta deben de tener 60 años o mas y mas de 25 años de servicio en su empleo

Se requiere un programa en pascal que genere un informe o reporte que genere todos los jubilados por edad que le corresponda su jubilación de acuerdo al mes

Se requiere un programa en pascal que genere un informe que genere todos los jubilados por antigüedad joven que le corresponda su jubilación de acuerdo al mes

Se requiere un programa en pascal que genere un informe que genere todos los jubilados por antigüedad adulta que le corresponda su jubilación de acuerdo al mes

El informe o reporte debe contener los siguientes datos en cada caso
JUBILACION POR EDAD
MES ENERO
APELLIDOS Y NOMBRE. CEDULA DE IDENTIDAD. FECHA DE NACIMIENTO EDAD

JUBILACION POR ANTIGUEDAD JOVEN
MES MAYO
APELLIDOS Y NOMBRE. CEDULA DE IDENTIDAD. FECHA DE NACIMIENTO EDAD

JUBILACION POR ANTIGUEDAD ADULTA
MES DIVIEMBRE
APELLIDOS Y NOMBRE. CEDULA DE IDENTIDAD. FECHA DE NACIMIENTO EDAD

MUCHAS GRACIAS A QUIEN PUEDA AYUDARME
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

Trabajo de almacenar nombres y sus datos

Publicado por ramon (2158 intervenciones) el 15/08/2021 19:35:50
Aver si esto te alluda.

program lajubilacion;
uses
crt;
type
string100 = string[100];

registro = record
edad : integer;
mes : string[12];
apellido : string100;
nombre : string100;
cedula : string100;
nacimiento : string;
end;

const
jubilacion : array[1..3] of string[32] = ('JUBILACION POR EDAD',
'JUBILACION POR ANTIGUEDAD JOVEN','JUBILACION POR ANTIGUEDAD ADULTA');


var
datos : registro;
f : file of registro;


procedure guarda_registro;
begin
assign(f,'datos.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 carga_registro(cedu : string100);
var
rec : longint;
rp : integer;
begin
assign(f,'datos.dat');
{$I-} reset(f); {$I+}
if ioresult <> 0 then
begin
writeln('Error de archivo o no existe pulse una tecla');
readkey;
exit;
end
else
begin
for rp := 1 to length(cedu) do
cedu[rp] := upcase(cedu[rp]);
for rec := 0 to filesize(f) - 1 do
begin
seek(f,rec);
read(f,datos);
for rp := 1 to length(datos.cedula) do
datos.cedula[rp] := upcase(datos.cedula[rp]);
if datos.cedula = cedu then
begin
clrscr;
writeln('Edad : ',datos.edad);
writeln('Mes : ',datos.mes);
writeln('Apellido : ',datos.apellido);
writeln('Nombre : ',datos.nombre);
writeln('Cedula : ',datos.cedula);
writeln('Nacimiento : ',datos.nacimiento);
writeln;
writeln('Pulse Una Tecla');
readkey;
break;
end;
end;
close(f);
end;
end;

procedure crea_registro;
var
da : char;
begin
clrscr;
writeln('******** Creacion De Registro ********');
writeln;
write('Entre Cedula : ');readln(datos.cedula);
write('Entre Nombre : ');readln(datos.nombre);
write('Entre Apellido : ');readln(datos.apellido);
write('Entre Edad : ');readln(datos.edad);
write('Entre Mes : ');readln(datos.mes);
write('Entre Fecha Nacimiento : ');readln(datos.nacimiento);
writeln;
write('((((((( Datos Correctos [S/N/F = Salir]');
repeat
da := upcase(readkey);
until da in['S','N','F'];
if da = 'F' then
exit;
if da = 'N' then
crea_registro;
if da = 'S' then
guarda_registro;
end;

procedure muestra_reporte;
var
rp : longint;
m : integer;
mess : string[12];
tt : char;
begin
clrscr;
writeln('******* Reporte *******');
writeln;
writeln(' [E]= ',jubilacion[1]);
writeln(' [M]= ',jubilacion[2]);
writeln(' [D]= ',jubilacion[3]);
writeln;
writeln('Elije Reporte');
repeat
tt := upcase(readkey);
until tt in['E','M','D'];
case tt of
'E' : mess := 'ENERO';
'M' : mess := 'MAYO';
'D' : mess := 'DICIEMBRE';
end;
assign(f,'datos.dat');
{$I-} reset(f); {$I+}
if ioresult <> 0 then
begin
writeln('Error de archivo o no existe pulse una tecla');
readkey;
exit;
end
else
begin
clrscr;
writeln('<<<<<< Reporte >>>>>>');
writeln('Mes Apellido Nombre Cedula Nacimiento Edad');
writeln;
for rp := 0 to filesize(f) - 1 do
begin
seek(f,rp);
read(f,datos);
for m := 1 to length(datos.mes) do
datos.mes[m] := upcase(datos.mes[m]);
if datos.mes = mess then
begin
writeln(datos.mes,' ',datos.apellido,' ',datos.nombre,' ',
datos.cedula,' ',datos.nacimiento,' ',datos.edad);
end;
end;
close(f);
end;
writeln;
writeln('Pulse Una Tecla');
readkey;
end;

procedure menu;
var
tec : char;
sal : boolean;
ced : string100;
begin
sal := false;
repeat
clrscr;
writeln('********> MENU PRINCIPAL <********');
writeln;
writeln(' [C] = Crear Registro');
writeln(' [B] = Ver un Registro');
writeln(' [M] = Mostrar Reporte');
writeln(' [S] = Salir');
writeln;
writeln(' Elija Opcion ');
repeat
tec := upcase(readkey);
until tec in['C','B','M','S'];
case tec of
'C' :crea_registro;
'B' : begin
write('Entre Cedula : ');
readln(ced);
carga_registro(ced);
end;
'M' :muestra_reporte;
'S' : sal := true;
end;
until sal = true;
end;



begin

clrscr;
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
sin imagen de perfil

Trabajo de almacenar nombres y sus datos

Publicado por Saimon (3 intervenciones) el 16/08/2021 05:26:42
Espero que si,,muchas gracias agradecido por su ayuda
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

Trabajo de almacenar nombres y sus datos

Publicado por Carlos Martinez (2 intervenciones) el 21/10/2021 03:28:38
Hola. Buenas noches.
Revise tu código, y el mismo no corre.
El procedimiento de mostrar reporte tiene un end; de más!!!!!.
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