Una ayudita.. Otra mas..!
Publicado por Angel (15 intervenciones) el 19/01/2012 00:30:33
Tengo este programa necesito saber como hago para que cuando introduzca la clave en ves de que salgan los numeros salgan asteriscos(**) y que cuando introduzca la clave solo la pueda meter 3 veces si las tres veces es incorrecta se cierre.!
gracias :)
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('|__________|');
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 : real;
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:4:2,' 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 : real;
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:4:2,' 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 :real;
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:4:2,' 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); readln(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); readln(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); readln(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(38,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.
gracias :)
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('|__________|');
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 : real;
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:4:2,' 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 : real;
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:4:2,' 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 :real;
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:4:2,' 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); readln(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); readln(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); readln(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(38,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


0