En aquest estudi de cas, desenvoluparem un sistema de gestió d'inventari utilitzant COBOL. Aquest projecte ens permetrà aplicar els coneixements adquirits al llarg del curs, des de la manipulació de dades fins a la gestió d'arxius i l'ús de subprogrames.

Objectius del Projecte

  1. Crear un sistema d'inventari bàsic que permeti afegir, actualitzar, eliminar i consultar productes.
  2. Utilitzar arxius seqüencials per emmagatzemar la informació dels productes.
  3. Implementar subprogrames per modularitzar el codi.
  4. Gestionar errors i assegurar la integritat de les dades.

Estructura del Sistema

El sistema de gestió d'inventari tindrà les següents funcionalitats:

  1. Afegir Producte: Permet afegir un nou producte a l'inventari.
  2. Actualitzar Producte: Permet actualitzar la informació d'un producte existent.
  3. Eliminar Producte: Permet eliminar un producte de l'inventari.
  4. Consultar Producte: Permet consultar la informació d'un producte específic.
  5. Llistar Productes: Mostra tots els productes de l'inventari.

Estructura de Dades

Cada producte tindrà els següents camps:

  • Codi del Producte: Un identificador únic per a cada producte.
  • Nom del Producte: El nom del producte.
  • Quantitat: La quantitat disponible en l'inventari.
  • Preu: El preu del producte.

Definició de la Dada en COBOL

01 PRODUCTE.
   05 CODI-PRODUCTE      PIC X(10).
   05 NOM-PRODUCTE       PIC X(30).
   05 QUANTITAT          PIC 9(5).
   05 PREU               PIC 9(5)V99.

Estructura del Programa

El programa principal es dividirà en diverses seccions per gestionar les diferents funcionalitats. Utilitzarem subprogrames per modularitzar el codi.

Programa Principal

IDENTIFICATION DIVISION.
PROGRAM-ID. GESTIO-INVENTARI.

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
    SELECT INVENTARI ASSIGN TO 'inventari.dat'
    ORGANIZATION IS LINE SEQUENTIAL.

DATA DIVISION.
FILE SECTION.
FD INVENTARI.
01 PRODUCTE-REGISTRE.
   05 CODI-PRODUCTE      PIC X(10).
   05 NOM-PRODUCTE       PIC X(30).
   05 QUANTITAT          PIC 9(5).
   05 PREU               PIC 9(5)V99.

WORKING-STORAGE SECTION.
01 OPCIO-USUARI          PIC 9.
01 FINALITZAR            PIC X VALUE 'N'.

PROCEDURE DIVISION.
INICI.
    PERFORM MENU-PRINCIPAL
    PERFORM UNTIL FINALITZAR = 'S'
        DISPLAY 'Selecciona una opció:'
        ACCEPT OPCIO-USUARI
        EVALUATE OPCIO-USUARI
            WHEN 1
                PERFORM AFEGIR-PRODUCTE
            WHEN 2
                PERFORM ACTUALITZAR-PRODUCTE
            WHEN 3
                PERFORM ELIMINAR-PRODUCTE
            WHEN 4
                PERFORM CONSULTAR-PRODUCTE
            WHEN 5
                PERFORM LLISTAR-PRODUCTES
            WHEN OTHER
                DISPLAY 'Opció no vàlida.'
        END-EVALUATE
    END-PERFORM
    STOP RUN.

MENU-PRINCIPAL.
    DISPLAY '1. Afegir Producte'
    DISPLAY '2. Actualitzar Producte'
    DISPLAY '3. Eliminar Producte'
    DISPLAY '4. Consultar Producte'
    DISPLAY '5. Llistar Productes'
    DISPLAY '6. Sortir'
    DISPLAY 'Selecciona una opció:'
    ACCEPT OPCIO-USUARI
    IF OPCIO-USUARI = 6
        MOVE 'S' TO FINALITZAR.

AFEGIR-PRODUCTE.
    DISPLAY 'Introdueix el codi del producte:'
    ACCEPT CODI-PRODUCTE
    DISPLAY 'Introdueix el nom del producte:'
    ACCEPT NOM-PRODUCTE
    DISPLAY 'Introdueix la quantitat:'
    ACCEPT QUANTITAT
    DISPLAY 'Introdueix el preu:'
    ACCEPT PREU
    OPEN OUTPUT INVENTARI
    WRITE PRODUCTE-REGISTRE
    CLOSE INVENTARI
    DISPLAY 'Producte afegit correctament.'

ACTUALITZAR-PRODUCTE.
    DISPLAY 'Funcionalitat no implementada encara.'

ELIMINAR-PRODUCTE.
    DISPLAY 'Funcionalitat no implementada encara.'

CONSULTAR-PRODUCTE.
    DISPLAY 'Funcionalitat no implementada encara.'

LLISTAR-PRODUCTES.
    DISPLAY 'Funcionalitat no implementada encara.'

Exercicis Pràctics

  1. Implementar la Funcionalitat d'Actualització: Completa la secció ACTUALITZAR-PRODUCTE per permetre l'actualització de la informació d'un producte existent.
  2. Implementar la Funcionalitat d'Eliminació: Completa la secció ELIMINAR-PRODUCTE per permetre l'eliminació d'un producte de l'inventari.
  3. Implementar la Funcionalitat de Consulta: Completa la secció CONSULTAR-PRODUCTE per permetre la consulta de la informació d'un producte específic.
  4. Implementar la Funcionalitat de Llistat: Completa la secció LLISTAR-PRODUCTES per mostrar tots els productes de l'inventari.

Solucions

Actualitzar Producte

ACTUALITZAR-PRODUCTE.
    DISPLAY 'Introdueix el codi del producte a actualitzar:'
    ACCEPT CODI-PRODUCTE
    OPEN I-O INVENTARI
    PERFORM UNTIL END-OF-FILE
        READ INVENTARI
            AT END
                MOVE 'S' TO END-OF-FILE
            NOT AT END
                IF CODI-PRODUCTE = CODI-PRODUCTE-REGISTRE
                    DISPLAY 'Introdueix el nou nom del producte:'
                    ACCEPT NOM-PRODUCTE
                    DISPLAY 'Introdueix la nova quantitat:'
                    ACCEPT QUANTITAT
                    DISPLAY 'Introdueix el nou preu:'
                    ACCEPT PREU
                    REWRITE PRODUCTE-REGISTRE
                    DISPLAY 'Producte actualitzat correctament.'
                END-IF
    END-PERFORM
    CLOSE INVENTARI.

Eliminar Producte

ELIMINAR-PRODUCTE.
    DISPLAY 'Introdueix el codi del producte a eliminar:'
    ACCEPT CODI-PRODUCTE
    OPEN I-O INVENTARI
    PERFORM UNTIL END-OF-FILE
        READ INVENTARI
            AT END
                MOVE 'S' TO END-OF-FILE
            NOT AT END
                IF CODI-PRODUCTE = CODI-PRODUCTE-REGISTRE
                    DELETE INVENTARI
                    DISPLAY 'Producte eliminat correctament.'
                END-IF
    END-PERFORM
    CLOSE INVENTARI.

Consultar Producte

CONSULTAR-PRODUCTE.
    DISPLAY 'Introdueix el codi del producte a consultar:'
    ACCEPT CODI-PRODUCTE
    OPEN INPUT INVENTARI
    PERFORM UNTIL END-OF-FILE
        READ INVENTARI
            AT END
                MOVE 'S' TO END-OF-FILE
            NOT AT END
                IF CODI-PRODUCTE = CODI-PRODUCTE-REGISTRE
                    DISPLAY 'Nom del Producte: ' NOM-PRODUCTE
                    DISPLAY 'Quantitat: ' QUANTITAT
                    DISPLAY 'Preu: ' PREU
                END-IF
    END-PERFORM
    CLOSE INVENTARI.

Llistar Productes

LLISTAR-PRODUCTES.
    OPEN INPUT INVENTARI
    PERFORM UNTIL END-OF-FILE
        READ INVENTARI
            AT END
                MOVE 'S' TO END-OF-FILE
            NOT AT END
                DISPLAY 'Codi: ' CODI-PRODUCTE
                DISPLAY 'Nom: ' NOM-PRODUCTE
                DISPLAY 'Quantitat: ' QUANTITAT
                DISPLAY 'Preu: ' PREU
    END-PERFORM
    CLOSE INVENTARI.

Conclusió

Aquest estudi de cas ha demostrat com es pot utilitzar COBOL per desenvolupar un sistema de gestió d'inventari. Hem cobert la creació, actualització, eliminació, consulta i llistat de productes, utilitzant arxius seqüencials i subprogrames per modularitzar el codi. Aquest projecte proporciona una base sòlida per a la creació de sistemes més complexos i robustos en COBOL.

© Copyright 2024. Tots els drets reservats