Ejercicio pr ctico apareo

Anuncio
Se tiene un archivo maestro de stock de un almacén y otro con las
novedades de las compras y ventas de los artículos que se
comercializan. Aparear estos archivos a efectos de grabar dicho
maestro con el stock actualizado y producir un informe de dicha
actualización.
Archivo maestro: 1 registro por artículo
|| NRO. ARTICULO | DESCRIPCIÓN | STOCK ACTUAL ||
Archivo de novedades: 1, varios o ningún registro por artículo
|| NRO.ARTICULO | CANTIDAD | COD.MOV. ||
COD.MOV.:
1-COMPRAS
2-VENTAS
DEBERÁ:
1.Actualizar el campo stock actual del maestro, para lo cuál hay que
sumar las cantidades de compras y restar las cantidades de ventas de la
novedad.
2.Detectar el artículo con mayor stock actual.
3.Imprimir el siguiente informe, colocando un “*” en observaciones
para los artículos sin novedad
NRO.ARTICULO
DESCRIPCIÓN STOCK ACTUAL BSERVACIONES
XXX
XXXXXXXXXX
XXXX
XXX
XXXXXXXXXX
XXXX
*
XXX
XXXXXXXXXX
XXXX
MAYOR STOCK ACTUAL: XXXX
ARTICULO NRO: XXX
CANTIDAD DE ARTICULOS SIN MOVIMIENTO: XXXX
PROGRAM EJERCICIO_EJEMPLO;
USES CRT;
TYPE
DM = RECORD
ART_M: INTEGER;
DESC: STRING[20];
EXIST: INTEGER;
END;
TYPE
DN = RECORD
ART_N: INTEGER;
CANTIDAD: INTEGER;
CODMOV: INTEGER;
END;
VAR
MAE:FILE OF DM;
R_MAE:DM;
NOV:FILE OF DN;
R_NOV: DN;
MAYOR_STOCK:INTEGER;
ART_MAYOR: INTEGER;
STOCK_ACT: INTEGER;
TOTAL_C, TOTAL_V, TOTAL_G:INTEGER;
OBSERVACIONES:CHAR;
CANT_ART_SM:INTEGER;
PROCEDURE LEER_M;
BEGIN
IF EOF(MAE) THEN
R_MAE.ART_M:=999
ELSE
READ(MAE,R_MAE);
END;
PROCEDURE LEER_N;
BEGIN
IF EOF(NOV) THEN
R_NOV.ART_N:=999
ELSE
READ(NOV,R_NOV);
END;
PROCEDURE PRINCIPIO;
BEGIN
CLRSCR;
ASSIGN (MAE,'ARTICULO.DAT');
RESET(MAE);
ASSIGN (NOV,'NOVE.DAT');
RESET(NOV);
WRITELN('ARTICULO DESCRIPCION STOCK ACT
MAYOR_STOCK:= 0;
LEER_M;
LEER_N;
END;
OBSERVACIONES');
PROCEDURE PRINCIPIO_APAREO;
BEGIN
TOTAL_C:= 0;
TOTAL_V:= 0;
CMOV:=0;
END;
PROCEDURE MOVIMIENTO;
BEGIN
IF R_NOV.CODMOV =1 THEN
TOTAL_C:= TOTAL_C + R_NOV.CANTIDAD
ELSE
TOTAL_V:= TOTAL_V + R_NOV.CANTIDAD;
CMOV:= 1;
LEER_N;
END;
PROCEDURE MAYOR;
BEGIN
IF R_MAE.EXIST > MAYOR_STOCK THEN
BEGIN
MAYOR_STOCK:=R_MAE.EXIST;
ART_MAYOR:=R_MAE.ART_M;
END;
END;
PROCEDURE ACTUALIZAR;
BEGIN
R_MAE.EXIST:= R_MAE.EXIST + TOTAL_C - TOTAL_V;
SEEK(MAE, FILEPOS(MAE)-1);
WRITE(MAE,R_MAE);
END;
PROCEDURE FIN_APAREO;
BEGIN
IF CMOV:=0 THEN
BEGIN
OBSERVACIONES:= '*';
CANT_ART_SM:=CANT_ART_SM + 1;
END
ELSE
OBSERVACIONES:= ' ';
ACTUALIZAR;
MAYOR;
WRITELN(R_MAE.ART_M, R_MAE.DESC,R_MAE.EXIST,
OBSERVACIONES);
LEER_M;
END;
PROCEDURE APAREO;
BEGIN
PRINCIPIO_APAREO;
WHILE R_MAE.ART_M = R_NOV.ART_N DO
MOVIMIENTO;
FIN_APAREO;
END;
PROCEDURE FIN_PROGRAMA;
BEGIN
WRITELN(' ');
WRITE('MAYOR STOCK ACTUAL: '); WRITELN (MAYOR_STOCK);
WRITE('ARTICULO NUMERO:
'); WRITELN (ART_MAYOR);
WRITE('CANTIDAD DE ARTICULOS SIN MOPVIMIENTO ');
WRITELN (CANT_ART_SM);
CLOSE(MAE);
CLOSE(NOV);
END
BEGIN
PRINCIPIO;
WHILE (R_MAE.ART_M<>999) DO
APAREO;
FIN_PROGRAMA;
END.
Descargar