tsCadCodigo = STRING [10 - Informatica

Anuncio
PROGRAM Junio_2011 ;
USES
Crt, SysUtils ;
CONST
iMAX_COMP_PEDIDO = 20 ;
TYPE
tsCadAnios = STRING [4] ;
tsCadCodigo = STRING [10] ;
tsCadFechas = STRING [10] ;
tsCadNombres = STRING [30] ;
PROCEDURE ListarPedidosCliente (sCIF_Cliente : tsCadCodigo ;
sNomFichPedidos: tsCadNombres) ;
VAR
fbrgFich
: tfbrgFicherosPedidos ;
rgDatosPedido : trgDatosPedidos ;
rTotalPedidos, rTotalEnviados, rTotalIngresos : Real ;
BEGIN
Assign (fbrgFich, sNomFichPedidos) ;
Reset (fbrgFich) ;
trgProductoPedido =
RECORD
sCod_Producto :tsCadCodigo ;
iCantidad : Integer ;
rPrecio : Real ;
END ;
targListaProductosPedido = ARRAY [1..iMAX_COMP_PEDIDO] OF
trgProductoPedido ;
trgDatosPedidos =
RECORD
iCod_Pedido
sCIF
argListaProductos
iNum_Prods
rImporte
sFecha_Pedido,
sFecha_Envio,
sFecha_Ingreso
END ;
:
:
:
:
:
Integer ;
tsCadCodigo ;
targListaProductosPedido ;
Integer ;
Real ;
rTotalPedidos := 0 ;
rTotalEnviados := 0 ;
rTotalIngresos := 0 ;
Writeln ;
Writeln ('Cod. Pedido':12, 'Fecha Pedido':13, 'Fecha Envio':13,
'Fecha Ingreso':13) ;
Writeln ('---------------------------------------------------') ;
WHILE NOT EOF (fbrgFich) DO
BEGIN
Read (fbrgFich, rgDatosPedido) ;
WITH rgDatosPedido DO
IF sCIF = sCIF_Cliente THEN
BEGIN
Writeln (iCod_Pedido : 12, sFecha_Pedido:13,
sFecha_Envio:13, sFecha_Ingreso:13) ;
: tsCadFechas
tfbrgFicherosPedidos = FILE OF trgDatosPedidos ;
rTotalPedidos := rTotalPedidos + rImporte ;
VAR
cOpcion, cEspera
sNomFichPedidos
sCIF_Cliente
iCodigo_Pedido
sFecha_Ingreso_Pedido
sCod_Producto_Contar
iTotal
rImporteIngresado
sAnio
:
:
:
:
:
:
:
:
:
IF sFecha_Envio <> 'PENDIENTE' THEN
BEGIN
rTotalEnviados := rTotalEnviados + rImporte ;
Char ;
tsCadNombres ;
tsCadCodigo ;
Integer ;
tsCadFechas ;
tsCadCodigo ;
Integer ;
Real ;
tsCadAnios ;
IF sFecha_Ingreso <> 'PENDIENTE' THEN
rTotalIngresos := rTotalIngresos + rImporte ;
END ;
END ;
END ;
Writeln
Writeln
Writeln
Writeln
FUNCTION fncMenu : Char;
VAR
cOpcion : Char ;
BEGIN
Clrscr;
Writeln (' -------------- Gestión de pedidos --------------------');
Writeln ;
WriteLn ('
1. Listar pedidos de un cliente') ;
WriteLn ('
2. Modificar un pedido: recibido el ingreso') ;
WriteLn ('
3. Crear fichero con los pedidos PENDIENTES') ;
WriteLn ('
4. Unidades vendidas de un producto en un año') ;
Writeln ('
0. Finalizar');
Writeln ;
Write
('
Pulsa la tecla de la opcion: ') ;
REPEAT
cOpcion := UpCase (Readkey) ;
UNTIL (cOpcion>='0') AND (cOpcion<='4') ;
Writeln (cOpcion);
fncMenu:=cOpcion;
END; { fin fncMenu }
Informática
3/Junio/2011
Close
END ;
;
('Total pedidos: ', rTotalPedidos:0:2, ' euros') ;
('Total
envios: ', rTotalEnviados:0:2, ' euros') ;
('Total ingresos: ', rTotalIngresos:0:2, ' euros') ;
(fbrgFich) ;
PROCEDURE ModificarFechaIngreso
(iCodigo_Pedido_Modificar
sFecha_Ingreso_Pedido
sNomFichPedidos
rImporteIngresado
VAR
fbrgFich
: tfbrgFicherosPedidos ;
rgDatosPedido : trgDatosPedidos ;
boEncontrado : Boolean ;
BEGIN
Assign (fbrgFich, sNomFichPedidos) ;
Reset (fbrgFich) ;
1
Informática
3/Junio/2011
:
:
:
:
Integer ;
tsCadFechas ;
tsCadNombres ;
Real) ;
2
boEncontrado := FALSE ;
FUNCTION fniBuscarProductosPedido
(
sCod_Producto_Contar : tsCadCodigo ;
CONST argListaProductos : targListaProductosPedido ;
iProds_Pedido
: Integer) : Integer ;
VAR
i
: Integer ;
boEncontrado: Boolean ;
WHILE NOT boEncontrado AND NOT EOF (fbrgFich) DO
BEGIN
Read (fbrgFich, rgDatosPedido) ;
WITH rgDatosPedido DO
IF (iCod_Pedido = iCodigo_Pedido_Modificar) THEN
IF (sFecha_Ingreso = 'PENDIENTE') AND
(rImporte = rImporteIngresado) THEN
BEGIN
boEncontrado := TRUE ;
BEGIN
boEncontrado := FALSE ;
i :=
sFecha_Ingreso := sFecha_Ingreso_Pedido ;
WHILE NOT boEncontrado AND (i <= iProds_Pedido) DO
IF argListaProductos[i].sCod_Producto = sCod_Producto_Contar THEN
boEncontrado := TRUE
ELSE
i := i + 1;
Seek (fbrgFich, FilePos (fbrgFich) - 1 ) ;
Write (fbrgFich, rgDatosPedido) ;
END ;
END ;
IF boEncontrado THEN
fniBuscarProductosPedido := argListaProductos[i].iCantidad
ELSE
fniBuscarProductosPedido := 0
END ;
IF NOT boEncontrado THEN
WriteLn ('ERROR: alguno de los datos leídos no es correcto')
Close
END ;
1;
(fbrgFich) ;
FUNCTION
PROCEDURE CrearFicheroPedidosPendientes
(sNomFichPedidos: tsCadNombres) ;
VAR
fbrgFich,
fbrgFichNoEnviados, fbrgFichNoCobrados: tfbrgFicherosPedidos ;
rgDatosPedido : trgDatosPedidos ;
BEGIN
Assign (fbrgFich, sNomFichPedidos) ;
Reset (fbrgFich) ;
fniContarProductos
(sCod_Producto_Contar : tsCadCodigo ;
sAnio : tsCadAnios ;
sNomFichPedidos : tsCadNombres) : Integer ;
VAR
fbrgFich
: tfbrgFicherosPedidos ;
rgDatosPedido : trgDatosPedidos ;
iTotal
: Integer ;
BEGIN
iTotal := 0 ;
Assign (fbrgFichNoEnviados, 'NO_ENVIADOS.DAT') ;
Rewrite (fbrgFichNoEnviados) ;
Assign (fbrgFich, sNomFichPedidos) ;
Reset (fbrgFich) ;
Assign (fbrgFichNoCobrados, 'NO_COBRADOS.DAT') ;
Rewrite (fbrgFichNoCobrados) ;
WHILE NOT EOF (fbrgFich) DO
BEGIN
Read (fbrgFich, rgDatosPedido) ;
WITH rgDatosPedido DO
IF Pos (sAnio, sFecha_Envio) <> 0 THEN
iTotal := iTotal + fniBuscarProductosPedido
(sCod_Producto_Contar,
argListaProductos, iNum_Prods) ;
END ;
WHILE NOT EOF (fbrgFich) DO
BEGIN
Read (fbrgFich, rgDatosPedido) ;
WITH rgDatosPedido DO
IF sFecha_Envio = 'PENDIENTE' THEN
Write (fbrgFichNoEnviados, rgDatosPedido)
Close
ELSE IF sFecha_Ingreso = 'PENDIENTE' THEN
Write (fbrgFichNoCobrados, rgDatosPedido) ;
END ;
BEGIN {****************PROGRAMA PRINCIPAL***************}
Writeln ('Programa de gestión de fichero de pedidos') ;
WriteLn ;
Write (' Nombre del fichero con los pedidos: ') ;
ReadLN (sNomFichPedidos) ;
Close (fbrgFichNoCobrados) ;
Close (fbrgFichNoCobrados) ;
Close (fbrgFich) ;
END ;
Informática
(fbrgFich) ;
fniContarProductos := iTotal ;
END ;
3/Junio/2011
3
Informática
3/Junio/2011
4
IF NOT FileExists(sNomFichPedidos) THEN
writeln ('ERROR: NO existe el fichero: "', sNomFichPedidos, '"')
ELSE
REPEAT
cOpcion:= fncMenu;
CASE cOpcion OF
'1' : BEGIN
Writeln ('Escribe el CIF del cliente: ') ;
ReadLn (sCIF_Cliente) ;
ClrScr ;
Writeln ('Listado de los pedidos de: ', sCIF_Cliente) ;
ListarPedidosCliente (sCIF_Cliente, sNomFichPedidos) ;
Writeln ('---------- Final del listado -------------') ;
END ;
'2' : BEGIN
Writeln ('Escribe el Codigo del pedido: ') ;
ReadLn (iCodigo_Pedido) ;
Writeln ('
Fecha del ingreso: ') ;
ReadLn (sFecha_Ingreso_Pedido) ;
Writeln ('
Cantidad ingresada: ') ;
ReadLn (rImporteIngresado) ;
ModificarFechaIngreso (iCodigo_Pedido,
sFecha_Ingreso_Pedido,
sNomFichPedidos,
rImporteIngresado) ;
END ;
'3' : CrearFicheroPedidosPendientes (sNomFichPedidos) ;
'4' : BEGIN
Write
ReadLN
Write
ReadLN
('Codigo del producto: ') ;
(sCod_Producto_Contar) ;
('
Año: ') ;
(sAnio) ;
iTotal := fniContarProductos (sCod_Producto_Contar,
sAnio, sNomFichPedidos) ;
Writeln ('Se han vendido: ', iTotal, ' unidades') ;
END ;
END ; { CASE }
IF cOpcion <> '0' THEN
BEGIN
Writeln ;
Writeln ('Pulsa una tecla para continuar');
cEspera := ReadKey ;
END ;
UNTIL cOpcion='0';
Write ('---------------cEspera := ReadKey ;
Fin del programa --------------------') ;
END. { FIN del PROGRAMA }
Informática
3/Junio/2011
5
Descargar