sábado, 25 de julio de 2015

Ejercicio PSeInt (ESPECIAL) - Ferretería


Una ferretería necesita poder llevar el control del stock de un grupo de productos
que tiene a la venta, entre otras funcionalidades. El catalogo es fijo y se
conforma con los siguientes productos :

-------------------------------------------------------------
|CODIGO |   DESCRIPCION       |   PRECIO VENTA  | STOCK   |
--------+-----------------------+-----------------+----------
|A01    | BOLSA CLAVOS 4 PULG.    |   3500          |   40    |   
|A02    | TAPAGOTERAS SIKA    |   6500          |   60    |
|A03    | GUANTES DE CUERO    |   3000          |   35    |
|A04    | BOTELLA DILUYENTE     |   1200          |   70    |
|A05    | AMPOLLETA 60 W.       |   2400          |   80    |
|A06    | ESMERIL ANGULAR       |  18000          |   25    |
|A07    | TALADRO PERCUTOR    |  25000          |   45    |
|A08    | ALICATE               |   3800          |   55    |
|A09    | MARTILLO              |   5600          |   36    |
|A10    | ESMALTE AL AGUA BLANCO|   8500          |   90    |
+-------+-----------------------+-----------------+---------+

Por lo cual le solicita a usted que le construya un programa en PSEINT con
los siguientes requerimientos:

- Un menu con las siguientes opciones:

  MENU PRINCIPAL
  --------------------
  1. Ingresar Venta
  2. Actualizar Stock
  3. Informe de Stock
  4. Informe de Ventas
  5. Consulta Precio
  6. Consulta Stock
  7. Producto mas vendido
  8. Salir


- La opcion "Ingresar Venta" deberá permitir ingresar el código de producto y la cantidad
  vendida. El sistema deberá calcular el monto de la venta y acumularlo para cada producto
  vendido. El ingreso de productos vendidos finaliza cuando se digita codigo de producto
  A00, y de ahi debe volver al menu principal. Si un producto no existe debe mostrar un
  mensaje y volver a pedir un nuevo producto.

- La opcion "Actualizar Stock" deberá permitir aumentar el stock disponible de un producto
  determinado si la cantidad ingresada es mayor a cero, o disminuirlo si la cantidad es
  negativa. Se debe ingresar el codigo del producto y la cantidad de stock a actualizar.
  El ingreso de stock de productos finaliza cuando se digita codigo de producto A00, y
  de ahi debe volver al menu principal. Si un producto no existe debe mostrar un
  mensaje y volver a pedir un nuevo producto.

- La opcion "Informe de Stock" debe mostrar el stock actualizado en el siguiente formato:

|CODIGO |   DESCRIPCION       |  STOCK   |
  XXXX       YYYYYYYY               999
  XXXX       YYYYYYYY               999
  XXXX       YYYYYYYY               999
  XXXX       YYYYYYYY               999


- La opcion "Informe de Ventas" debe mostrar el monto vendido para cada producto en el
  siguiente formato:

|CODIGO |   DESCRIPCION       |  MONTO VENDIDO $ |
  XXXX       YYYYYYYY               999999
  XXXX       YYYYYYYY               999999
  XXXX       YYYYYYYY               999999
  XXXX       YYYYYYYY               999999


- La opcion "Consulta Precio" deberá permitir ingresar el código de producto. El sistema deberá
  mostrar el nombre del producto y su precio. El ingreso de productos consultados finaliza cuando
  se digita codigo de producto A00, y de ahi debe volver al menu principal. Si un producto no existe
  debe mostrar un mensaje y volver a pedir un nuevo producto.


- La opcion "Consulta Stock" deberá permitir ingresar el código de producto. El sistema deberá
  mostrar el nombre del producto y su stock disponible. El ingreso de productos consultados finaliza cuando
  se digita codigo de producto A00, y de ahi debe volver al menu principal. Si un producto no existe
  debe mostrar un mensaje y volver a pedir un nuevo producto.

- La opción "Producto mas vendido" deberá mostrar el código, descripcion y monto vendido, de aquel producto
  cuyo Monto Vendido sea el mayor de la lista de productos del catalogo.


- La opcion "Salir" debe permitir salir del programa.-

======================================================================

Algoritmo:



Proceso Ferreteria
    Dimension A[10,2], B[10,2], C[100], D[100], E[100], F[100], G[100];
    //Los vectores A y B son para almacenar los nombres y valores de los productos
    //Los vectores C D E son para almacenar la informacion del informe de ventas
    //Los vectores F G son para los productos mas vendidos
   
    Definir cont, menu, cantcompra, tcompra, aux, cant, cantmax Como Entero;
    Definir i Como Real
    Definir codigo, artmax Como Caracter;
   
    A[1,1]<-"A01"; A[1,2]<-"BOLSA CLAVOS 4 PULG.";     B[1,1]<-3500; B[1,2]<-40;
    A[2,1]<-"A02"; A[2,2]<-"TAPAGOTERAS";              B[2,1]<-6500; B[2,2]<-60;
    A[3,1]<-"A03"; A[3,2]<-"GUANTES DE CUERO";         B[3,1]<-3000; B[3,2]<-35;
    A[4,1]<-"A04"; A[4,2]<-"BOTELLA DILUYENTE";        B[4,1]<-1200; B[4,2]<-70;
    A[5,1]<-"A05"; A[5,2]<-"AMPOLLETA 60 W";           B[5,1]<-2400; B[5,2]<-80;
    A[6,1]<-"A06"; A[6,2]<-"ESMERIL ANGULAR";          B[6,1]<-18000; B[6,2]<-25;
    A[7,1]<-"A07"; A[7,2]<-"TALADRO PERCUTOR";         B[7,1]<-25000; B[7,2]<-45;
    A[8,1]<-"A08"; A[8,2]<-"ALICATE";                  B[8,1]<-3800; B[8,2]<-55;
    A[9,1]<-"A09"; A[9,2]<-"MARTILLO";                 B[9,1]<-5600; B[9,2]<-36;
    A[10,1]<-"A10"; A[10,2]<-"ESMALTE AL AGUA BLANCO"; B[10,1]<-8500; B[10,2]<-90;
   
   
    //La variable cont es para el informe de ventas
    cont<-1
    Repetir
        Limpiar Pantalla
        //Mostrar Matriz en pantalla
        Escribir "| CODIGO | DESCRICION | PRECIO VENTA $ | STOCK |";
        Para i<-1 Hasta 10 Con Paso 1 Hacer
            Escribir A[i,1],"  ",A[i,2],"  $",B[i,1],"  ",B[i,2];
        Fin Para
       
        Escribir " ";
        Escribir "MENU Principal";
        Escribir "1 Ingresar venta";
        Escribir "2 Actualizar Stock";
        Escribir "3 Informe de Stock";
        Escribir "4 Informe de ventas";
        Escribir "5 Consulta precio";
        Escribir "6 Consulta Stock";
        Escribir "7 Producto mas vendido";
        Escribir "8 Salir";
       
        Repetir //Este repetir es para que solo se ingresen numeros de 1 al 8
            Leer menu;
            si menu<>1 y menu<>2 y menu<>3 y menu<>4 y menu<>5 y menu<>6 y menu<>7 y  menu<>8 entonces
                Escribir "ERROR. Debe ingresar un numero del 1 al 8";
            FinSi
        hasta que menu=1 o menu=2 o menu=3 o menu=4 o menu=5 o menu=6 o menu=7 o menu=8
       
        Segun menu Hacer
            1:
                //Ingresar Venta
                Escribir " ";
               
                Repetir
                    Escribir "Ingrese el codigo del articulo. Para detener ingrese A00";
                    Repetir //Este Repetir y Si Entonces, es para que solo se ingresen los codigos mostrados en pantalla
                        Leer codigo;
                        Si codigo<>"A00" y codigo<>"A01" y codigo<>"A02" y codigo<>"A03" y codigo<>"A04" y codigo<>"A05" y codigo<>"A06" y codigo<>"A07" y codigo<>"A08" y codigo<>"A09" y codigo<>"A10" Entonces
                            Escribir "ERROR. Debe ingresar un codigo valido";
                        FinSi
                    Hasta Que codigo="A00" o codigo="A01" o codigo="A02" o codigo="A03" o codigo="A04" o codigo="A05" o codigo="A06" o codigo="A07" o codigo="A08" o codigo="A09" o codigo="A10"
                   
                    Si codigo<>"A00" Entonces
                        Escribir "Ingrese cuantos productos quiere comprar";
                        Leer cantcompra;
                    FinSi
                   
                    //Revisar el producto en la matriz
                    Para i<-1 Hasta 10 Con Paso 1 Hacer //Filas
                        Si A[i,1]=codigo Entonces
                            Si cantcompra>B[i,2] Entonces //Este si, es para que no se compren mas productos de los que se tienen
                                Escribir "No tenemos tal cantidad de productos";
                                Escribir "Ingrese una cantidad menor o igual a ", B[i,2];
                                i<-10;
                                j<-2; //Estas variables son para salir inmediatamente del ciclo
                            Sino
                                B[i,2]<-B[i,2]-cantcompra;
                                F[cont]<-cantcompra;//En los vectores F G se guardan los totales comprados y sus nombres para despues calcular el mas vendido
                                G[cont]<-A[i,2];
                                tcompra<-B[i,1]*cantcompra;
                                Escribir "Ha comprado ",cantcompra," unidades de ",A[i,2];
                                C[cont]<-codigo;//Las variable C D E son para almacenar los valores para el informe de ventas
                                D[cont]<-A[i,2];
                                E[cont]<-tcompra;
                                aux<-cont;
                                cont<-cont+1;
                            Fin Si
                        Fin Si
                    Fin Para
                Hasta Que codigo="A00"
               
            2:
                //Actualizar Stock
                Escribir " ";
               
                Repetir
                    Escribir "Ingrese el codigo del articulo. Para detener ingrese A00";
                    Repetir//Este Repetir y Si Entonces, es para que solo se ingresen los codigos mostrados en pantalla
                        Leer codigo;
                        Si codigo<>"A00" y codigo<>"A01" y codigo<>"A02" y codigo<>"A03" y codigo<>"A04" y codigo<>"A05" y codigo<>"A06" y codigo<>"A07" y codigo<>"A08" y codigo<>"A09" y codigo<>"A10" Entonces
                            Escribir "ERROR. Debe ingresar un codigo valido";
                        FinSi
                    Hasta Que codigo="A00" o codigo="A01" o codigo="A02" o codigo="A03" o codigo="A04" o codigo="A05" o codigo="A06" o codigo="A07" o codigo="A08" o codigo="A09" o codigo="A10"
                   
                    Si codigo<>"A00" Entonces
                        Escribir "Ingrese cuantos productos quiere agregar";
                        Leer cant;
                    Fin Si
                    Para i<-1 Hasta 10 Con Paso 1 Hacer //Filas
                        Si A[i,1]=codigo Entonces
                            B[i,2]<-B[i,2]+cant;
                            Escribir "Ha ingresado ", cant," unidades de ", A[i,2];
                        Fin Si
                    Fin Para
                Hasta Que codigo="A00"
            3:
                //Informe de Stock
                Escribir " ";
                Escribir "Informe de Stock";
                Escribir "| CODIGO | DESCRICION | STOCK |";
               
                Para i<-1 Hasta 10 Con Paso 1 Hacer
                    Escribir A[i,1],"  ",A[i,2],"  ",B[i,2];
                Fin Para
                Escribir " ";
                Escribir "Para volver al menu presione cualquier tecla";
                Esperar Tecla
            4:
                //Informe de ventas
                Escribir " ";
                Escribir "Informe de ventas";
                Escribir "| CODIGO | DESCRIPCION | MONTO VENDIDO $ |";
                Para i<-1 Hasta aux Con Paso 1 Hacer
                    Escribir C[i],"  ",D[i],"  $",E[i];
                Fin Para
               
                Escribir " ";
                Escribir "Para volver al menu presione cualquier tecla";
                Esperar Tecla
            5:
                //Consulta Precio
                Escribir " ";
                Escribir "Consulta Precio";
                Escribir "Para salir ingrese el codigo A00";
                Repetir
                    Escribir "Ingrese el codigo de un producto";
                   
                    Repetir
                        Leer codigo;
                        Si codigo<>"A00" y codigo<>"A01" y codigo<>"A02" y codigo<>"A03" y codigo<>"A04" y codigo<>"A05" y codigo<>"A06" y codigo<>"A07" y codigo<>"A08" y codigo<>"A09" y codigo<>"A10" Entonces
                            Escribir "El codigo no es valido, ingreselo nuevamente";
                        Fin Si
                    Hasta Que codigo="A00" o codigo="A01" o codigo="A02" o codigo="A03" o codigo="A04" o codigo="A05" o codigo="A06" o codigo="A07" o codigo="A08" o codigo="A09" o codigo="A10"
                   
                    Para i<-1 Hasta 10 Con Paso 1 Hacer
                        Para j<-1 Hasta 2 Con Paso 1 Hacer
                            Si codigo=A[i,j] Entonces
                                Escribir "El precio del producto ", A[i,2]," es de: $", B[i,1];
                            Fin Si
                        Fin Para
                    Fin Para
                Hasta Que codigo="A00";
               
            6:
                //Consulta de Stock
                Escribir " ";
                Escribir "Consulta de Stock";
                Escribir "Para salir ingrese el codigo A00";
                Repetir
                    Escribir "Ingrese el codigo del producto";
                    Repetir
                        Leer codigo;
                        Si codigo<>"A00" y codigo<>"A01" y codigo<>"A02" y codigo<>"A03" y codigo<>"A04" y codigo<>"A05" y codigo<>"A06" y codigo<>"A07" y codigo<>"A08" y codigo<>"A09" y codigo<>"A10" Entonces
                            Escribir "El codigo no es valido, ingreselo nuevamente";
                        Fin Si
                    Hasta Que codigo="A00" o codigo="A01" o codigo="A02" o codigo="A03" o codigo="A04" o codigo="A05" o codigo="A06" o codigo="A07" o codigo="A08" o codigo="A09" o codigo="A10"
                   
                    Para i<-1 Hasta 10 Con Paso 1 Hacer
                        Para j<-1 Hasta 2 Con Paso 1 Hacer
                            Si codigo=A[i,j] Entonces
                                Escribir "La cantidad de productos de ", A[i,2]," es de: ", B[i,2];
                            Fin Si
                        Fin Para
                    Fin Para
                   
                Hasta Que codigo="A00"
               
               
            7:
                //Producto mas vendido
                cantmax<-F[1];
                artmax<-G[1];
                Escribir "Producto mas vendido";
                Para i<-2 Hasta aux Con Paso 1 Hacer
                    Si F[i]>=F[i-1] Entonces
                        cantmax<-F[i]; //Esta variable es para almacenar la cantidad mas vendida
                        artmax<-G[i]; //Esta variale es para almacenar el producto mas vendido
                    Fin Si
                Fin Para
               
                Escribir "El producto mas vendido es: ", artmax," con un total de ", cantmax, " unidades";
               
                Escribir " ";
                Escribir "Para volver al menu presione cualquier tecla";
                Esperar Tecla
               
            De Otro Modo:
                Escribir "HA SALIDO DEL SISTEMA";
            Fin Segun
           
    Hasta Que menu=8
FinProceso

4 comentarios:

  1. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  2. no se puede ejecutar porque dice q la variable A(1,1) no esta definida

    ResponderEliminar

Cambiar imagen de fondo con JQuery

<!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <title>Cambiar ...