Está en la página 1de 5

{ *

* Garzon.pas
*
* Autores:
* Dennys Yahir Gutiérrez
* Johanfer Gafaro Rodriguez
* }

Program Supermercado_Garzon;

Uses
Crt;

Const
nTrab = 8;
nDias = 5;
nHor = 25;
nHorExt = 35;
pHor = 15;
pHorExt = 17.5;

Var
Nombre : Array[1..nTrab] of String[20];
Cedula : Array[1..nTrab] of String[20];
Horas : Array[1..nTrab,1..nDias] of Integer;
acumH : Array[1..nTrab] of Integer;
Pago : Array[1..nTrab] of Real;
i, j, k : Integer;

Function Buscar(Ced:String; i:Integer): Integer;


Var
o : Integer;
Begin
o := 0;
if (Ced = Cedula[i]) Then
Begin
o := i;
End;
Buscar := o;
End;

Procedure Bienvenida;
Begin
Writeln();
Writeln('********************************************************************');
Writeln('**** BIENVENIDOS A NOMINA DE SUPERMERCADO GARZON: ******');
Writeln('********************************************************************');
Delay(1000);
Writeln('Presione ''Enter'' Para continuar... ');
Readln;
Clrscr;
End;

Procedure Ingresar;
Var
Valido : Integer;
Begin
Bienvenida;
ClrScr;
for i := 1 to nTrab do
Begin
Valido := 0;
Writeln();
Write('Ingrese Nombre del ',i,'o Trabajador: ');
Readln(Nombre[i]);
Repeat
Begin
Write('Ingrese Cedula de ',Nombre[i],': ');
Readln(Cedula[i]);
if not(i = 1) Then
Begin
for k := (i - 1) downto 1 do
Begin
Valido := Buscar(Cedula[i], k);
if Not(Valido = 0) Then
Begin
Readln;
Break;
End;
End;
End;
End;
Until (Valido = 0);
Repeat
Begin
acumH[i] := 0;
for j := 1 to nDias do
Begin
Repeat
Begin
Write('Ingrese Numero de hojas trabajadas en el ',j,'o Dia de ',Nombre[i],': ');
Readln(Horas[i,j]);
acumH[i] := acumH[i] + Horas[i,j];
if ((Horas[i,j] < 0) or (Horas[i,j] > 24)) then
Begin
Writeln('Debe ingresar un limite de 0 a 24 horas por dia como maximo.');
acumH[i] := acumH[i] - Horas[i,j];
End;
End;
Until ((Horas[i,j] >= 0) and (Horas[i,j] <= 24));
End;
if ((acumH[i] < 0) or (acumH[i] > nHorExt)) then
Begin
Writeln('Debe ingresar un limite de 0 a 35 horas por semana como maximo.');
End;
End;
Until ((acumH[i] >= 0) and (acumH[i] <= nHorExt));
if (acumH[i] <= nHor) Then
Begin
Pago[i] := acumH[i] * pHor;
End
else
Begin
Pago[i] := (pHor * nHor) + ((acumH[i] - nHor) * pHorExt);
End;
Delay(500);
ClrScr;
End;
Writeln('Nomina Ingresada con Exito.');
Writeln('Presione ''Enter'' Para continuar... ');
Readln;
End;

Procedure Imprimir(i:Integer);
Begin
Writeln('Nombre: ',Nombre[i],', Cedula: ',Cedula[i]);
for j := 1 to nDias do
Begin
Writeln('Horas trabajadas en el ',j,'o Dia: ',Horas[i,j]);
End;
Writeln('Total de horas trabajadas en la Semana: ',acumH[i]);
Writeln('Pago Total de la Semana ',Pago[i]:3:2);
Writeln('-----------------------------------------------------');
Delay(100);
End;

Procedure ListarT;
Begin
ClrScr;
for i := 1 to nTrab do
Begin
Imprimir(i);
End;
Writeln('Presione ''Enter'' Para continuar... ');
Readln;
End;
Procedure Listar25;
Begin
ClrScr;
for i := 1 to nTrab do
Begin
if (acumH[i] >= nHor) Then
Begin
Imprimir(i);
End;
End;
Writeln('Presione ''Enter'' Para continuar... ');
Readln;
End;

Procedure Menu;
Var
Ced : String[20];
l : Integer;
Val : Boolean;
m : Char;
Begin
Repeat
begin
ClrScr;
Writeln('**********************************************************************');
Writeln('**** SUPERMERCADO GARZON C.A. ******');
Writeln('**********************************************************************');
Writeln('**** Ingrese ''1'' para mostrar la lista de Trabajadores: ******');
Writeln('**** Ingrese ''2'' para consultar los datos de un Trabajador: ******');
Writeln('**** Ingrese ''3'' Lista de Trabajadores que cumplieron con ******');
Writeln('**** horario de 25 horas trabajadas: ******');
Writeln('**** Ingrese ''4'' para salir del menu: ******');
Writeln('**********************************************************************');
Readln(m);
Case m of
'1' : ListarT;
'2' :
Begin
Writeln('Ingrese Cedula a buscar: ');
Readln(Ced);
Val := true;
for i := 1 to nTrab do
Begin
l := Buscar(Ced, i);
if Not (l = 0) Then
Begin
Imprimir (l);
Val := false;
break;
End;
End;
if (Val = true) Then
Begin
Writeln('Cedula no Encontrada.');
End;
Writeln('Presione ''Enter'' Para continuar... ');
Readln;
End;
'3' : Listar25;
End;
End;
Until (m = '4');
Writeln('Feliz Dia.');
Writeln('Presione ''Enter'' Para continuar... ');
Readln;
End;

Begin
Ingresar;
Menu;
End.

También podría gustarte