You are on page 1of 40

PROGRAM EDITORIAL;

Uses Crt;

Const N=100; Genero: Set of Char= ['F','M']; Menu: Set of Char= ['C','N','S','D','B','O','F','T','V','X','c','n','s','t','d','b', 'o','f','v','x']; Type Datos= record codigo: string [10]; cedula: string[10]; telefono: string[12]; nombre_apellido: string [40]; sexo: char; direccion: string [50]; sueldo_base, objetivo_venta, factor_boni, venta_real, comision: real;

end;

Arreglo= array [1..N] of Datos;

var cont,error,numero, x1,x2, y1, y2, l: integer;

Empresa: Arreglo; letra:char; v,tmpstr,busca:string; numeroTxt : string[20]; numeroLong : longInt; estado : integer;

num:real; tecla:integer;

encontrado:boolean;

procedure Valida_Sexo (var letra:char; x1,y1:integer); begin repeat gotoxy (x1,y1); letra:= upcase(readkey); write (letra);

if not (letra in Genero) then begin gotoxy (x1,y1); write (' '); end;

until (letra in Genero) and (Length(letra)=1); gotoxy (27,5); end; function leerNumero(longitud: integer): string; var numero : string; tecla : char; i,x,y : integer; begin x := whereX; y := whereY; numero := ''; i := 1; repeat tecla := readKey; case tecla of '0'..'9' : {Teclas del 0 al 9} if i <= longitud then begin numero := numero + tecla; i := i + 1; end; chr(8) : { Tecla de retroceso para borrar el ultimo digito} if i > 1 then begin

i := i - 1; numero[i] := ' '; gotoxy(x,y); write(numero); numero := copy(numero,1,i-1); end end; gotoxy(x,y); write(numero); until ( tecla = chr(13) ) and ( length(numero) > 0 ); leerNumero := numero; end;

function leerReal(longitud: integer): real; var numero : string; tecla : char; i,x,y, error : integer; numero_real:real; begin x := whereX; y := whereY; numero := ''; numero_real:=0; i := 1; repeat

tecla := readKey; case tecla of '0'..'9' : {Teclas del 0 al 9} if i <= longitud then begin numero := numero + tecla; i := i + 1; val (numero, numero_real, error); end; chr(8) : { Tecla de retroceso para borrar el ultimo digito} if i > 1 then begin i := i - 1; numero[i] := ' '; gotoxy(x,y); write(numero); numero := copy(numero,1,i-1); end end; gotoxy(x,y); write(numero); until ( tecla = chr(13) ) and ( length(numero) > 0 ); leerReal := numero_real; end; function leerEntero(longitud: integer):integer; var

numero : string; tecla : char; i,x,y, error : integer; numero_real:integer; begin x := whereX; y := whereY; numero := ''; numero_real:=0; i := 1; repeat tecla := readKey; case tecla of '0'..'9' : {Teclas del 0 al 9} if i <= longitud then begin numero := numero + tecla; i := i + 1; val (numero, numero_real, error); end; chr(8) : { Tecla de retroceso para borrar el ultimo digito} if i > 1 then begin i := i - 1; numero[i] := ' '; gotoxy(x,y);

write(numero); numero := copy(numero,1,i-1); end end; gotoxy(x,y); write(numero); until ( tecla = chr(13) ) and ( length(numero) > 0 ); leerEntero := numero_real; end; procedure validar (var v:string; x1,y1,x2:integer); var t : integer; valido : boolean;

begin writeln;

repeat valido := true; gotoxy (x2,y1);

readln(v); for t := 1 to length(v) do if ord(v[t]) in[32,65..90,97..122,164,165]

then begin

upcase (v); end else

begin valido := false; gotoxy (x2,y1); writeln(' end; ');

until (valido = true) and (t = Length(v));

end; procedure Formulario_Entrada(Empresa: Arreglo);

begin

writeln('

** DATOS PERSONALES DE VENDEDOR ** ');

gotoxy(1,3);

write('Codigo: '); gotoxy (15,3); write ('Cedula: ' ); gotoxy (33,3); write('Nombre y Apellido: '); gotoxy (1,5); write ('Sexo (F/M): '); gotoxy (15,5); write('Direccion: '); gotoxy (50,5); write('Telefono: '); gotoxy (1,7); writeln(' ** DATOS LABORALES DE VENDEDOR ** ');

gotoxy(1,8); write ('Sueldo Base: '); gotoxy (33,8); write ('Objetivo de Ventas: ') ; gotoxy(1,10); write('Factor Bonificacion: '); gotoxy (33,10); write ('Venta Real: ');

end; procedure Validar_Numero (numeroTxt:string; x1,y1,l:integer;

var num:real); var i:integer; begin

repeat for i:=1 to l do begin gotoxy (x1,y1); readln (numeroTxt); val (numeroTxt, num, error); if (numeroTxt[i] in ['A'..'Z']) then begin gotoxy (x1,y1); write (' end; end; until (error=0) ; ');

end;

procedure Valida_Num ( x1,y1:integer;

var num: real); var numeroTxt: string; letra:char; i:integer; begin numeroTxt:='';

repeat gotoxy (x1,y1); letra:= upcase(readkey);

if not (letra in ['0'..'9']) then begin gotoxy (x1,y1); write (' '); end else begin numeroTxt:= numeroTxt + letra; val (numeroTxt, num, error);

write (letra);

end; until (letra in ['0'..'9']) ;

end;

procedure Buscar_Codigo ( var Empresa: Arreglo; var cont: integer; v:string; var encontrado: boolean); var

i, pos: integer;

begin

encontrado:=false;

i:=1;

repeat

if (v= Empresa[i].codigo) then

begin encontrado:=true; pos:= i; end else encontrado:=false;

inc (i); until (encontrado=true) or (i>cont);

end;

procedure Incluir (var Empresa: Arreglo; var cont:integer; var encontrado: boolean); var resp,r,car: char; i:integer; cadena_num,c: string[10]; nomb,dir:string; begin resp:='S'; while (resp in ['S','s']) do

begin clrscr; cont:= cont + 1; Formulario_Entrada(Empresa); repeat gotoxy (8,3); c:= leerNumero(5); Buscar_Codigo ( Empresa,cont,v,encontrado); if encontrado then begin gotoxy (13,16); write ('Cdigo de Vendedor ya Exite! <<Pulse Enter >> '); readln; end else begin Empresa[cont].codigo:= c; gotoxy (13,16); write (' end; until (encontrado=false); ');

gotoxy(23,3); Empresa[cont].cedula:= leerNumero(8);

validar (nomb,33,3,51); Empresa[cont].nombre_apellido := upcase (nomb); Valida_Sexo (Empresa[cont].sexo,12,5);

gotoxy(27,5); readln (dir); Empresa[cont].direccion := upcase (dir); gotoxy(60,5); Empresa[cont].telefono:=leerNumero(12); gotoxy(13,8); Empresa[cont].sueldo_base:=leerReal(10);

gotoxy(54,8); Empresa[cont].objetivo_venta:=leerReal(10);

gotoxy(22,10); Empresa[cont].factor_boni:=leerReal(10);

gotoxy(45,10); Empresa[cont].venta_real:=leerReal(10); Empresa[cont].comision:=0;

if (Empresa[cont].venta_real > Empresa[cont].objetivo_venta) then begin

Empresa[cont].comision:=Empresa[cont].factor_boni * (Empresa[cont].venta_real - Empresa[cont].objetivo_venta ); gotoxy(20,12); writeln('Comisiones a pagar: ',Empresa[cont].comision:2:2,' Bs.'); end else begin gotoxy (20,12); writeln ('Comisiones a pagar: 0.0 Bs.'); end; gotoxy (17,15); writeln ('Vendedor registrado exitosamente!'); repeat gotoxy(17,17); write('Desea agregar otro vendedor (S/N): '); readln (resp); if not (resp in ['N','S','n', 's']) then begin gotoxy (25,19); writeln ('Opcion invalida'); gotoxy (47,17); write (' ');

end else begin gotoxy (47,17); write (resp); end; until resp in ['N','S','n', 's'];

end;{fin de while} end;

procedure Formulario_Consulta (var pos:integer); begin clrscr; writeln (' gotoxy (1,4); write ('Cedula: '); gotoxy(8,4); write (Empresa[pos].cedula); gotoxy(20,4); write ('Nombre y Apellido: '); gotoxy (39,4); write (Empresa[pos].nombre_apellido); gotoxy (1,6); write ('Sexo: '); gotoxy (7,6); Datos Personales del Vendedor: N ',Empresa[pos].codigo,' ');

write (Empresa[pos].sexo); gotoxy (10,6); write ('Direccion: '); gotoxy (22,6); write (Empresa[pos].direccion); gotoxy (10,6); write ('Direccion: '); gotoxy (22,6); write (Empresa[pos].direccion); gotoxy (30,6); write ('Telefono: '); gotoxy (40,6); write (Empresa[pos].telefono); gotoxy (1,8); write (' gotoxy (1,10); write ('Sueldo Base: '); gotoxy (13,10); write (Empresa[pos].sueldo_base:2:2); gotoxy(29,10); write ('Objetivo de Ventas: '); gotoxy(50,10); write (Empresa[pos].objetivo_venta:2:2); gotoxy(1,12); write('Factor de Bonificacion: '); gotoxy(25, 12); Datos Laborales ');

write(Empresa[pos].factor_boni:2:2); gotoxy (41,12); write ('Venta Real: '); gotoxy(52,12); write(Empresa[pos].venta_real:2:2); gotoxy (30,14); write ('Comisiones a pagar: ',Empresa[pos].comision:2:2, ' Bs.' );

end; procedure Consultar ( var Empresa: Arreglo; var cont: integer); var busca:string[10]; i, pos: integer; encontrado: boolean;

begin clrscr; encontrado:=false;

i:=1;

writeln ('Cantidad de Vendedores Registrados: ',cont); readln;

gotoxy (15,3); write ('Indique Cdigo de Vendedor a Consultar: '); readln (busca);

repeat

if (Empresa[i].codigo= busca) then begin encontrado:=true; pos:= i; end else encontrado:=false;

inc (i); until (encontrado=true) or (i>cont);

if encontrado then begin Formulario_Consulta(pos); gotoxy (18,17); write ('Pulse <<Enter>> para continuar'); end

else begin gotoxy (15,10); writeln ('Vendedor (a) no registrado (a) ! <<Pulse Enter>>'); end; readln;

end; procedure Eliminar ( var Empresa: Arreglo; var cont: integer); var busca:string[10]; i, pos,p: integer; encontrado: boolean; opcion:char;

begin clrscr; encontrado:=false;

i:=1;

writeln ('Cantidad de Vendedores Registrados: ',cont); readln;

gotoxy (15,3); write ('Indique Cdigo de Vendedor a Eliminar: '); readln (busca);

repeat

if (Empresa[i].codigo= busca) then begin encontrado:=true; pos:= i; end else encontrado:=false;

inc (i); until (encontrado=true) or (i>cont);

if encontrado then begin Formulario_Consulta(pos); gotoxy (17,16); write ('Desea Eliminar este vendedor (S/N) ?: '); repeat

readln (opcion); if (opcion in ['S','s']) then begin dec (cont); p:=1; Empresa[pos]:= Empresa[pos+p]; for p:=1 to cont do begin Empresa[pos +p] := Empresa [pos +p+1]; end;

if (cont<0) then cont:=0 else; if (cont = 0) then Empresa[pos].codigo:=' ' else; gotoxy (14,18); writeln ('Vendedor (a) Eliminado (a) exitosamente! << Pulse Enter>>'); end else if opcion in ['N','n'] then

begin gotoxy (14,18); writeln ('Vendedor (a) no ha sido eliminado (a)! << Pulse Enter>> '); end else begin gotoxy (23,18); writeln ('Opcion inv lida'); gotoxy (54,16); writeln (' gotoxy (54,16); end; until opcion in ['S','s','n','N']; end else begin gotoxy(15,6); writeln ('Vendedor (a) no registrado (a) ! <<Pulse Enter>>'); end; readln; ');

end; procedure Ordenar ( var Empresa: Arreglo; var cont: integer); var k,j:integer;

aux:Datos; begin for k:=1 to cont -1 do for j:= k+1 to cont do begin if (Empresa[k].comision < Empresa[j].comision) then begin aux:= Empresa[k]; Empresa[k]:= Empresa[j]; Empresa[j]:= aux; end; end; end; procedure Formulario_Reporte ( Empresa: Arreglo; pos,i:integer); begin gotoxy(15,1); write (' ** EDITORIAL LA CIENCIA Y SU UNIVERSO **'); gotoxy (1,3); write ('CODIGO DE VENDEDOR '); inc (pos); gotoxy (6,3 + pos); write (Empresa [i]. codigo); gotoxy (22, 3); write ('NOMBRE Y APELLIDO ');

gotoxy (22, 3 + pos); write ( Empresa[i].nombre_apellido); gotoxy (41,3); write ('BONIFICACION (Bs.)'); gotoxy (41, 3 + pos); if (i=1) and (Empresa[i].comision>0) then write (Empresa[i].comision:2:2, ' --Felicitaciones !!') else if (Empresa[i].comision = 0.0) then write (Empresa [i].comision:2:2, ' -- No cumpli con el objetivo !!') else write (Empresa [i].comision:2:2);

end; procedure Reporte (var Empresa:Arreglo; var cont: integer); var i, pos, k, j:integer; aux:Arreglo; opcion: char; begin

pos:=1; gotoxy(15,1);

write (' ** EDITORIAL LA CIENCIA Y SU UNIVERSO **'); if (cont=0) then begin gotoxy (11,3); write ('No exiten vendedores registrados en la empresa <<Pulse Enter>>');

end else begin Ordenar (Empresa,cont); for i:=1 to cont do begin Formulario_Reporte (Empresa,pos,i); inc (pos); gotoxy (23,20); writeln ('<<Pulse Enter para continuar >>');

end;{for} end;{else} readln; end; procedure Modificar (var Empresa: Arreglo; var cont: integer); var busca: string[10];

i, error, pos:integer; encontrado:boolean; opcion,re:char; dir, nomb: string;

begin clrscr; encontrado:=false;

i:=1;

writeln ('Cantidad de Vendedores Registrados: ',cont); readln; gotoxy(15,3); write ('Indique Cdigo de Vendedor a Consultar: '); readln (busca);

repeat

if (Empresa[i].codigo= busca) then begin encontrado:=true; pos:= i; end else

encontrado:=false;

inc (i); until (encontrado=true) or (i>cont);

if encontrado then begin Formulario_Consulta(pos); gotoxy (1,14); writeln ('====Datos a Modificar==='); writeln ('C--> Cedula'); writeln ('N--> Nombre y Apellido'); writeln ('S--> Sexo'); writeln ('D--> Direccion'); writeln ('T--> Telefono'); writeln ('B--> Sueldo Base'); writeln ('O--> Objetivo de Venta'); writeln ('F--> Factor de Bonificacion'); writeln ('V--> Venta Real'); writeln ('X--> Ninguno ');

repeat gotoxy (36,17); write ('Indique Dato a Modificar: ');

readln (opcion);

if not (opcion in Menu) then begin gotoxy(62,17); write (' ');

gotoxy (62,17); end; until opcion in Menu ; case upcase (opcion) of 'C': begin gotoxy (8,4); write (' ');

gotoxy (8,4); Empresa[pos].cedula:= leerNumero(8);

gotoxy(31,19); write ('Cedula modificada exitosamente! << Pulse Enter>>'); readln; end; 'N': begin gotoxy (39,4); write (' gotoxy (39,4); validar (nomb,39,4,39); ');

Empresa[pos].nombre_apellido:= upcase(nomb); gotoxy(31,19); write ('Nombre modificado exitosamente! <<Pulse Enter>>'); readln; end; 'S': begin gotoxy (7,6); write (' '); gotoxy (7,6); Valida_Sexo (Empresa[pos].sexo,7,6); gotoxy(31,19); write ('Sexo modificado exitosamente! <<Pulse Enter>>'); readln; end; 'D': begin gotoxy (22,6); write (' gotoxy (22,6); readln (dir); Empresa[pos].direccion:= upcase(dir); gotoxy(28,19); write ('Direccion modificada exitosamente! <<Pulse Enter>>'); readln; end; ');

'T': begin

gotoxy (40,6); write (' gotoxy (40,6); Empresa[pos].telefono:=leerNumero(12); gotoxy(28,19); write ('Telefono modificado exitosamente! <<Pulse Enter>>'); readln; end; 'B': begin gotoxy (13,10); write (' '); ');

gotoxy (13,10); Empresa[pos].sueldo_base:=leerReal(10); gotoxy(31,19); write ('Sueldo modificado exitosamente! <<Pulse Enter>>'); readln; end; 'O': begin gotoxy (50,10); write (' gotoxy (50,10); Empresa[pos].objetivo_venta:=leerReal(10); ');

if (Empresa[pos].venta_real > Empresa[pos].objetivo_venta) then begin

Empresa[pos].comision:=Empresa[pos].factor_boni * (Empresa[pos].venta_real - Empresa[pos].objetivo_venta ); gotoxy(12,14); writeln('Comisiones a pagar: ', Empresa[pos].comision:2:2,' Bs. end else begin gotoxy (12,14); writeln ('Comisiones a pagar: 0.0 Bs. end; gotoxy(28,19); write ('Objetivo modificado exitosamente! <<Pulse Enter>>'); readln; end; '); ');

'F': begin gotoxy (25,12); write (' gotoxy (25,12); Empresa[pos].factor_boni:=leerReal(10); ');

if (Empresa[pos].venta_real > Empresa[pos].objetivo_venta) then

begin

Empresa[pos].comision:=Empresa[pos].factor_boni * (Empresa[pos].venta_real - Empresa[pos].objetivo_venta ); gotoxy(12,14); writeln('Comisiones a pagar: ', Empresa[pos].comision:2:2,' Bs. end else begin gotoxy (12,14); writeln ('Comisiones a pagar: 0.0 Bs. end; gotoxy(25,19); write ('Bonificacion modificada exitosamente! <<Pulse Enter>>'); readln; end; '); ');

'V': begin gotoxy (52,12); write (' gotoxy (52,12); Empresa[pos].venta_real:=leerReal(10); ');

if (Empresa[pos].venta_real > Empresa[pos].objetivo_venta)

then begin

Empresa[pos].comision:=Empresa[pos].factor_boni * (Empresa[pos].venta_real - Empresa[pos].objetivo_venta ); gotoxy(12,14); writeln('Comisiones a pagar: ', Empresa[pos].comision:2:2,' Bs. end else begin gotoxy (12,14); writeln ('Comisiones a pagar: 0.0 Bs. end; gotoxy(26,19); write ('Venta Real modificada exitosamente! <<Pulse Enter>>'); readln; end; '); ');

end; {case}

end else begin gotoxy(12,6);

writeln ('Cdigo de vendedor no registrado <<Pulse Enter>>'); readln; end;

end;

procedure Bienvenida; begin clrscr;

writeln (' writeln (' writeln (' writeln ('

_________________________________________________'); '); UNIVERSIDAD NACIONAL ABIERTA. CENTRO LOCAL LARA '); INGENIERA DE SISTEMAS ');

writeln (' writeln (' writeln (' writeln (' writeln (' writeln (' writeln (' writeln (' writeln (' writeln ('

================================================='); BIENVENIDOS AL SISTEMA DE REGISTRO DE '); '); '); ');

BONOS AL PERSONAL DE VENTAS DE LA EDITORIAL "CIENCIAS E IDEAS

================================================='); '); Realizado por: Oscar Garca C.I.: Fecha: Mayo 2013 '); '); ');

writeln ('

_________________________________________________');

gotoxy (22,22); write (' Pulse <<Enter>> para continuar' );

readln;

end;

procedure Menu_Principal (var tecla:integer); begin

clrscr; repeat writeln (' writeln (' writeln (' writeln (''); writeln (' writeln (''); writeln (' writeln (' writeln (' writeln (' writeln (' writeln (' [ 1 ] ---> Incluir '); [ 2 ] ---> Consultar '); [ 3 ] ---> Modificar '); [ 4 ] ---> Eliminar '); [ 5 ] ---> Reporte '); [ 6 ] ---> Salir del Sistema '); MENU PRINCIPAL '); '); EDITORIAL "CIENCIAS E IDEAS " ');

__________________________________________');

gotoxy (27,15);

write ('Indique Opcin del Men: ');

gotoxy (52,15);

tecla:=leerEntero(1);

case tecla of 1 : begin clrscr;

writeln ('incluir'); Incluir(Empresa, cont,encontrado); clrscr; end; 2: begin clrscr; Consultar (Empresa, cont); clrscr;

end;

3: begin clrscr; Modificar (Empresa, cont); clrscr;

end; 4: begin clrscr; Eliminar (Empresa,cont); clrscr; end; 5: begin clrscr; Reporte (Empresa, cont); readln; clrscr; end; 6: begin exit; end; else gotoxy (20,19);

writeln ('Error! Seleccin inv lida. Pulse <<Enter>>');

readkey;

clrscr; end; { fin de case} until tecla=6 ;

end;

Begin Bienvenida; Menu_Principal (tecla);

end.

You might also like