Pascal/Turbo Pascal - Una ayudita.. Otra mas..!

   
Vista:

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.
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
información
Otras secciones de LWP con contenido de Pascal/Turbo Pascal
- Código fuente de Pascal/Turbo Pascal
- Cursos de Pascal/Turbo Pascal
- Temas de Pascal/Turbo Pascal
- Chat de Pascal/Turbo Pascal
información
Códigos de Pascal/Turbo Pascal
- Toros y Vacas
- TTokenizer
- Calculadora

Una ayudita.. Otra mas..!

Publicado por ramon (2072 intervenciones) el 19/01/2012 20:01:51
{A ver si esto sirve }

program password;
uses
crt;
const
pachh : longint = 2012;

var
tecla : char;
passwo : string[12];
cont : integer;

function entrapassword : longint;
var
error, veces : integer;
pass : longint;
begin
gotoxy(10,2);write('**** ENTRADA PASSWORD ****');
gotoxy(10,4);write('Password : ');
gotoxy(21,4);
cont := 1;
fillchar(passwo,13,' ');
passwo[0] := chr(12);
veces := 1;
repeat
repeat
tecla := readkey;
if tecla in[#48..#57] then
begin
passwo[cont] := tecla;
passwo[0] := chr(cont);
gotoxy(20 + cont,4);write('*');
cont := cont + 1;
if cont > 12 then
cont := 12;
end;
if tecla = #8 then
begin
cont := cont - 1;
if cont < 1 then
cont := 1;
passwo[cont] := ' ';
passwo[0] := chr(cont);
gotoxy(20 + cont,4);write(' ');
end;
until tecla = #13;
val(passwo,pass,error);
if error <> 0 then
begin
delete(passwo,error,1);
val(passwo,pass,error);
end;
if pass <> pachh then
begin
veces := veces + 1;
cont := 1;
gotoxy(21,4);clreol;
end;
until (veces > 3) or (pass = pachh);
if pass = pachh then
entrapassword := pass
else
entrapassword := 0;
gotoxy(21,4);clreol;
end;

begin
clrscr;
if entrapassword = pachh then
{Ejecutamos El Programa Que Siga}
writeln('Password Correcto')
else
{Salimos Del Programa Sin Mas}
writeln('Password Erroneo');
readln;
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