Pascal/Turbo Pascal - No se que pasa :(

   
Vista:

No se que pasa :(

Publicado por Angel (15 intervenciones) el 12/01/2012 06:11:09
Tengo un problema con ese programa. cuando voy al menu y le doy a la opcion 4 me abre bien pero a lo que vuelvo a abrirla me abre pero solo la pantalla en negro.
Lo otro es que en la tres partes que resalte con negrita sub rayado y cursiva agregue algo en comentario pero eso que agregue en comentario es parte de la operacion y cuando ejecuta el programa me sale directo ingresar las horas y deberia salir que me pida el nombre y el tipo.. Ayuda con esto por fa gracias de ante mano..! :) Saludos


program nomina;
uses crt;

const
pass = '1308';
NumeroEmpleados = 15;

type
trabajador = record
cedula : string[10];
nombre : string[20];
tipo : char;
end;

var
password : string[8];
opcion : char;
empleado : array[1..NumeroEmpleados] of trabajador;
contador : integer;


procedure mostrar_centrado(linea:integer; texto:string);
var
longitud_cadena, posicion : integer;

begin
longitud_cadena := length(texto);
posicion := round((80 - longitud_cadena) / 2);
gotoxy(posicion, linea);
write(texto);
end;

procedure pausa;
begin
mostrar_centrado(24, 'Presione la tecla ENTER para regresar.');
repeat
opcion := readkey;
until opcion = #13;
end;

procedure mostrar_pantalla_principal;
begin
clrscr;
textcolor(7);

mostrar_centrado(1, 'REPUBLICA BOLIVARIANA DE VENEZUELA');
mostrar_centrado(2, 'MINISTERIO DEL PODER POPULAR PARA LA EDUCACION SUPERIOR');
mostrar_centrado(3, 'UNIVERSIDAD NACIONAL EXPERIMENTAL DE LAS FUERZAS ARMADAS');
mostrar_centrado(4, 'MARACAIBO - EDO. ZULIA');

gotoxy(35,7); write('INVERSIONES');

gotoxy(20,8); write(':::::: ::: ::: :: :: ::::: ::: ');
gotoxy(20,9); write(':: :: :: :: :::: :: :: :: :: :: ');
gotoxy(20,10); write(':: :: ::...:: :: :: :: :: ::::: ::...::');
gotoxy(20,11); write(':: :: :: :: :: :::: :: :: :: ::');
gotoxy(20,12); write(':::::: :: :: :: ::: :: ::::: :: :: C.A.');

gotoxy(1,23); write('BACHILLER: SOLMAR ALBORNOZ');
gotoxy(1,24); write('C.I.:20.430.832');

mostrar_centrado(17, 'Por favor introduzca su contrase¤a personal: ');
gotoxy(34,18); write(' __________');
gotoxy(34,19); write('I__________I');

end;

procedure mostrar_menu_principal;
begin
clrscr;
mostrar_centrado(1,' _____ _ ____ __ __ __ __ ____ __ __ __ ____ _____ ');
mostrar_centrado(2,'I I I I I __I I \ I I I II I I __I I \ I I I I I \ I I ');
mostrar_centrado(3,'I I) I I I I I_ I \ I I I II I I I_ I \ I I I I I I I _ I ');
mostrar_centrado(4,'I / I I I _I I I\ \I I I II I I _I I I\ \I I I I I I) I I I I I ');
mostrar_centrado(5,'I I) \ I I I I_ I I \ I I II I I I_ I I \ I I I I I) I I I_I I ');
mostrar_centrado(6,'I I I I I I I I \ I \ \/ / I I I I \ I I I I I I I ');
mostrar_centrado(7,'I_____I I_I I___I I_I I_I \____/ I___I I_I I_I I_I I___/ I_____I ');
mostrar_centrado(8,'INVERSIONES DANISA C.A.');
mostrar_centrado(15,'MENU');

gotoxy(10,17); write('1. Registrar trabajador');
gotoxy(10,18); write('2. Ver Informacion del trabajador');
gotoxy(10,19); write('3. Mostrar lista de trabajadores');
gotoxy(10,20); write('4. Ver Pago por Hora');
gotoxy(10,21); write('5. Ver aumento por horas trabajadas');
gotoxy(10,22); write('6. Consultar la nomina');
gotoxy(10,23); write('0. Salir');
gotoxy( 2,24); write('Opcion: ');
end;


procedure mostrar_datos_trabajador;
var
cedula : string[12];
i : integer;
encontrado : boolean;
begin
clrscr;
mostrar_centrado(1,'INVERSIONES DANISA C.A.');
gotoxy (4,4); write('Introduzca el numero de cedula del empleado: ');
readln(cedula);

i:=1;
encontrado := false;
while (i <= NumeroEmpleados) and not encontrado do
begin
if empleado[i].cedula = cedula then
encontrado := true
else
i := i + 1;
end;

if encontrado then
begin
mostrar_centrado(1,'INVERSIONES DANISA C.A.');
gotoxy (7,6); write ('Nombre: ', empleado[i].nombre);
gotoxy (7,8); write ('Tipo : ', empleado[i].tipo);
end
else
writeln('La cedula indicada no fue encontrada');

pausa;

end;

procedure mostrar_dat_nom_sol;
var
cedula : string[12];
i : integer;
encontrado : boolean;
hor_trab : integer;
resultado : integer;

begin
clrscr;
gotoxy (4,4); write('Introduzca el numero de cedula del empleado: ');
readln(cedula);

i:=1;
encontrado := false;
while (i <= NumeroEmpleados) and not encontrado do
begin
if empleado[i].cedula = cedula then
encontrado := true
else
i := i + 1;
end;

if encontrado then
begin
gotoxy (7,6); write ('Nombre: ', empleado[i].nombre);
gotoxy (7,8); write ('Tipo : ', empleado[i].tipo);
gotoxy (7,10); write ( 'Introduzca el numero de Horas trabajadas en el mes');
gotoxy (7,12); read (hor_trab);
if hor_trab >= 35 then

resultado := 50*hor_trab(*+50*hor_trab*0.20*)

else resultado := 50*hor_trab;
gotoxy (7,14); write (resultado,' bs. es su sueldo para este mes');
pausa;
end
else
writeln('La cedula indicada no fue encontrada');
pausa;
end;

procedure mostrar_dat_nom_mec;
var
cedula : string[12];
i : integer;
encontrado : boolean;
hor_trab : integer;
resultado : integer;
begin
clrscr;
write('Introduzca el numero de cedula del empleado: ');
readln(cedula);

i:=1;
encontrado := false;
while (i <= NumeroEmpleados) and not encontrado do
begin
if empleado[i].cedula = cedula then
encontrado := true
else
i := i + 1;
end;

if encontrado then
begin
gotoxy (7,6); write ('Nombre: ', empleado[i].nombre);
gotoxy (7,8); write ('Tipo : ', empleado[i].tipo);
gotoxy (7,10); write ( 'Introduzca el numero de Horas trabajadas en el mes');
gotoxy (7,12); read (hor_trab);
if hor_trab >= 35 then

resultado := 50*hor_trab(*+50*hor_trab*0.18*)

else resultado := 50*hor_trab;
gotoxy (7,14); write (resultado,' bs. es su sueldo para este mes');
pausa;
end
else
writeln('La cedula indicada no fue encontrada');
pausa;
end;

procedure mostrar_dat_nom_ger;
var
cedula : string[12];
i : integer;
encontrado : boolean;
hor_trab : integer;
resultado : integer;
begin
clrscr;
write('Introduzca el numero de cedula del empleado: ');
readln(cedula);

i:=1;
encontrado := false;
while (i <= NumeroEmpleados) and not encontrado do
begin
if empleado[i].cedula = cedula then
encontrado := true
else
i := i + 1;
end;

if encontrado then
begin
gotoxy (7,6); write ('Nombre: ', empleado[i].nombre);
gotoxy (7,8); write ('Tipo : ', empleado[i].tipo);
gotoxy (7,10); write ( 'Introduzca el numero de Horas trabajadas en el mes');
gotoxy (7,12); read (hor_trab);
if hor_trab >= 35 then
resultado := 50*hor_trab(*+50*hor_trab*0.25*)

else resultado := 50*hor_trab;
gotoxy (7,14); write (resultado,' bs. es su sueldo para este mes');
pausa;
end
else
writeln('La cedula indicada no fue encontrada');
pausa;
end;

procedure mostrar_pago_hora;
var
pago_hora : char;
begin
clrscr;
gotoxy(23,10); write('1: Soldadores');
gotoxy(23,12); write('2: Mecanicos');
gotoxy(23,14); write('3: Gerentes');
gotoxy(20,17); write('Seleccione una opcion de acuerdo al tipo de trabajador');
gotoxy(23,19); read(pago_hora);

clrscr;
case pago_hora of
'1': begin
mostrar_centrado(10,'El pago por hora de un Soldador es de 50 bs.');
pausa;
end;
'2': begin
mostrar_centrado(10,'El pago por hora de un Mecanico es de 45 bs.');
pausa;
end;
'3': begin
mostrar_centrado(10,'El pago por hora de un Gerente es de 60 bs.');
pausa;
end;
end;
pausa;
end;

procedure mostar_aumento;
var
aumento : char;
begin
clrscr;
gotoxy(23,10); write('1: Aumento de Soldadores');
gotoxy(23,12); write('2: Aumento de Mecanicos');
gotoxy(23,14); write('3: Aumento de Gerentes');
gotoxy(20,17); write('Seleccione una opcion de acuerdo al tipo de trabajador');
gotoxy(23,19); read(aumento);

clrscr;
case aumento of
'1': begin
mostrar_centrado(10,'El aumento del sueldo de un Soldador al trabajar mas de 35 horas es de 20%.');
pausa;
end;
'2': begin
mostrar_centrado(10,'El aumento del sueldo de un Mecanico al trabajar mas de 35 horas es de 18%.');
pausa;
end;
'3': begin
mostrar_centrado(10,'El aumento del sueldo de un Gerente al trabajar mas de 35 horas es de 25%.');
pausa;
end;
end;
pausa;
end;

procedure consultar_nomina;
var
tip_empleado : char;

begin
clrscr;
gotoxy(23,10); write('1: Nomina de Soldadores');
gotoxy(23,12); write('2: Nomina de Mecanicos');
gotoxy(23,14); write('3: Nomina de Gerentes');
gotoxy(20,17); write('Seleccione una opcion de acuerdo al tipo de trabajador');
gotoxy(23,19); read(tip_empleado);

case tip_empleado of
'1': mostrar_dat_nom_sol;
'2': mostrar_dat_nom_mec;
'3': mostrar_dat_nom_ger;
end;
end;

procedure registrar_trabajador;
begin
clrscr;

if contador<NumeroEmpleados then
begin
contador := contador + 1;
mostrar_centrado(4,'Cedula: '); readln(empleado[contador].cedula);
mostrar_centrado(6,'Nombre: '); readln(empleado[contador].nombre);
mostrar_centrado(8,'Tipo (G; Gerente, M: Mecanico, S: Soldador): '); readln(empleado[contador].tipo);
end
else
begin
writeln('La nomina esta completamente llena');
writeln('No se pueden agregar mas empleados');
pausa;
end
end;

procedure mostrar_lista_trabajadores;
var
i : integer;
begin
clrscr;
writeln('Listado de empleados');
writeln('====================');
writeln;
writeln('Cedula':12, '|', 'Nombre':30, '|', 'Tipo':4);
writeln('------------------------------------------------');
for i:=1 to NumeroEmpleados do
begin
writeln(empleado[i].cedula:12, '|', empleado[i].nombre:30, '|', empleado[i].tipo:4);
end;

pausa
end;

begin
contador := 0;
repeat
mostrar_pantalla_principal;
gotoxy(36,19); readln(password);
if password = pass then
repeat
mostrar_menu_principal;
repeat
opcion := readkey();
until opcion in ['1','2','3', '4', '5', '6','0'];
case opcion of
'1': registrar_trabajador;
'2': mostrar_datos_trabajador;
'3': mostrar_lista_trabajadores;
'4': mostrar_pago_hora;
'5': mostar_aumento;
'6': consultar_nomina;
end;
until opcion = '0'
else
begin
mostrar_centrado(20, 'Contrasena incorrecta. Debe intentar nuevamente.');
pausa;
end;
until false;
end.
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

No se que pasa :(

Publicado por Angel (15 intervenciones) el 12/01/2012 07:38:14
de verdad ayuden por favor..!
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

No se que pasa :(

Publicado por ramon (2072 intervenciones) el 12/01/2012 20:06:17
Observa esto que te pongo.

procedure mostrar_pago_hora;
var
pago_hora : char;
begin
clrscr;
gotoxy(23,10); write('1: Soldadores');
gotoxy(23,12); write('2: Mecanicos');
gotoxy(23,14); write('3: Gerentes');
gotoxy(20,17); write('Seleccione una opcion de acuerdo al tipo de trabajador');
gotoxy(23,19); read(pago_hora);

cambia esto.
gotoxy(23,19); readln(pago_hora);
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

No se que pasa :(

Publicado por Angel (15 intervenciones) el 12/01/2012 20:11:38
Listo resuelto :) amigo y con respecto a este problemita que hago?

Lo otro es que en la tres partes que resalte con negrita sub rayado y cursiva agregue algo en comentario pero eso que agregue en comentario es parte de la operacion y cuando ejecuta el programa me sale directo ingresar las horas y deberia salir que me pida el nombre y el tipo.. Ayuda con esto por fa gracias de ante mano..! :)
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