En aquest estudi de cas, desenvoluparem un sistema bancari senzill utilitzant COBOL. Aquest projecte ens permetrà aplicar molts dels conceptes apresos al llarg del curs, des de la gestió d'arxius fins a la programació modular i la gestió d'errors.
Objectius del Projecte
- Crear un sistema per gestionar comptes bancaris.
- Permetre operacions bàsiques com dipòsits, retirades i consultes de saldo.
- Emmagatzemar les dades dels comptes en un arxiu seqüencial.
- Implementar tècniques de gestió d'errors per assegurar la robustesa del sistema.
Estructura del Sistema
El sistema bancari constarà de les següents funcionalitats:
- Creació de comptes nous.
- Dipòsit de diners en un compte.
- Retirada de diners d'un compte.
- Consulta de saldo d'un compte.
- Llistat de tots els comptes.
Estructura de Dades
Utilitzarem un arxiu seqüencial per emmagatzemar les dades dels comptes. Cada registre de l'arxiu contindrà la següent informació:
- Número de compte (10 caràcters)
- Nom del titular (30 caràcters)
- Saldo (9 dígits, 2 decimals)
Definició del Registre en COBOL
01 ACCOUNT-RECORD. 05 ACCOUNT-NUMBER PIC X(10). 05 ACCOUNT-HOLDER PIC X(30). 05 ACCOUNT-BALANCE PIC 9(7)V99.
Programa Principal
El programa principal gestionarà el menú d'opcions i cridarà els subprogrames corresponents per a cada funcionalitat.
Estructura del Programa Principal
IDENTIFICATION DIVISION. PROGRAM-ID. BankingSystem. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT ACCOUNT-FILE ASSIGN TO "accounts.dat" ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS WS-FILE-STATUS. DATA DIVISION. FILE SECTION. FD ACCOUNT-FILE. 01 ACCOUNT-RECORD. 05 ACCOUNT-NUMBER PIC X(10). 05 ACCOUNT-HOLDER PIC X(30). 05 ACCOUNT-BALANCE PIC 9(7)V99. WORKING-STORAGE SECTION. 01 WS-FILE-STATUS PIC XX. 01 WS-OPTION PIC 9. 01 WS-ACCOUNT-NUMBER PIC X(10). 01 WS-ACCOUNT-HOLDER PIC X(30). 01 WS-AMOUNT PIC 9(7)V99. PROCEDURE DIVISION. MAIN-PROCEDURE. PERFORM INITIALIZE PERFORM DISPLAY-MENU PERFORM UNTIL WS-OPTION = 5 EVALUATE WS-OPTION WHEN 1 PERFORM CREATE-ACCOUNT WHEN 2 PERFORM DEPOSIT-MONEY WHEN 3 PERFORM WITHDRAW-MONEY WHEN 4 PERFORM CHECK-BALANCE WHEN 5 PERFORM LIST-ACCOUNTS WHEN OTHER DISPLAY "Opció Invàlida. Si us plau, intenta-ho de nou." END-EVALUATE PERFORM DISPLAY-MENU END-PERFORM PERFORM TERMINATE STOP RUN. INITIALIZE. OPEN I-O ACCOUNT-FILE IF WS-FILE-STATUS NOT = "00" DISPLAY "Error obrint l'arxiu de comptes." STOP RUN END-IF. DISPLAY-MENU. DISPLAY "1. Crear Compte" DISPLAY "2. Dipositar Diners" DISPLAY "3. Retirar Diners" DISPLAY "4. Consultar Saldo" DISPLAY "5. Llistar Comptes" DISPLAY "6. Sortir" ACCEPT WS-OPTION. CREATE-ACCOUNT. DISPLAY "Introdueix el número de compte:" ACCEPT WS-ACCOUNT-NUMBER DISPLAY "Introdueix el nom del titular:" ACCEPT WS-ACCOUNT-HOLDER MOVE 0 TO ACCOUNT-BALANCE WRITE ACCOUNT-RECORD IF WS-FILE-STATUS = "00" DISPLAY "Compte creat amb èxit." ELSE DISPLAY "Error creant el compte." END-IF. DEPOSIT-MONEY. DISPLAY "Introdueix el número de compte:" ACCEPT WS-ACCOUNT-NUMBER PERFORM FIND-ACCOUNT IF WS-FILE-STATUS = "00" DISPLAY "Introdueix l'import a dipositar:" ACCEPT WS-AMOUNT ADD WS-AMOUNT TO ACCOUNT-BALANCE REWRITE ACCOUNT-RECORD DISPLAY "Dipòsit realitzat amb èxit." ELSE DISPLAY "Compte no trobat." END-IF. WITHDRAW-MONEY. DISPLAY "Introdueix el número de compte:" ACCEPT WS-ACCOUNT-NUMBER PERFORM FIND-ACCOUNT IF WS-FILE-STATUS = "00" DISPLAY "Introdueix l'import a retirar:" ACCEPT WS-AMOUNT IF WS-AMOUNT > ACCOUNT-BALANCE DISPLAY "Saldo insuficient." ELSE SUBTRACT WS-AMOUNT FROM ACCOUNT-BALANCE REWRITE ACCOUNT-RECORD DISPLAY "Retirada realitzada amb èxit." END-IF ELSE DISPLAY "Compte no trobat." END-IF. CHECK-BALANCE. DISPLAY "Introdueix el número de compte:" ACCEPT WS-ACCOUNT-NUMBER PERFORM FIND-ACCOUNT IF WS-FILE-STATUS = "00" DISPLAY "Saldo actual: " ACCOUNT-BALANCE ELSE DISPLAY "Compte no trobat." END-IF. LIST-ACCOUNTS. DISPLAY "Llistat de tots els comptes:" PERFORM UNTIL WS-FILE-STATUS = "10" READ ACCOUNT-FILE NEXT AT END MOVE "10" TO WS-FILE-STATUS NOT AT END DISPLAY ACCOUNT-NUMBER, ACCOUNT-HOLDER, ACCOUNT-BALANCE END-PERFORM. FIND-ACCOUNT. MOVE "00" TO WS-FILE-STATUS READ ACCOUNT-FILE AT END MOVE "10" TO WS-FILE-STATUS NOT AT END IF ACCOUNT-NUMBER NOT = WS-ACCOUNT-NUMBER PERFORM FIND-ACCOUNT END-IF END-READ. TERMINATE. CLOSE ACCOUNT-FILE.
Exercicis Pràctics
- Afegir una funcionalitat per eliminar un compte.
- Implementar la gestió d'errors per a cada operació.
- Crear un informe que mostri el total de diners en tots els comptes.
Solucions als Exercicis
- Afegir una funcionalitat per eliminar un compte
DELETE-ACCOUNT. DISPLAY "Introdueix el número de compte a eliminar:" ACCEPT WS-ACCOUNT-NUMBER PERFORM FIND-ACCOUNT IF WS-FILE-STATUS = "00" DELETE ACCOUNT-RECORD DISPLAY "Compte eliminat amb èxit." ELSE DISPLAY "Compte no trobat." END-IF.
- Implementar la gestió d'errors per a cada operació
CREATE-ACCOUNT. DISPLAY "Introdueix el número de compte:" ACCEPT WS-ACCOUNT-NUMBER DISPLAY "Introdueix el nom del titular:" ACCEPT WS-ACCOUNT-HOLDER MOVE 0 TO ACCOUNT-BALANCE WRITE ACCOUNT-RECORD IF WS-FILE-STATUS = "00" DISPLAY "Compte creat amb èxit." ELSE DISPLAY "Error creant el compte. Codi d'error: " WS-FILE-STATUS END-IF.
- Crear un informe que mostri el total de diners en tots els comptes
GENERATE-REPORT. MOVE 0 TO WS-TOTAL-BALANCE PERFORM UNTIL WS-FILE-STATUS = "10" READ ACCOUNT-FILE NEXT AT END MOVE "10" TO WS-FILE-STATUS NOT AT END ADD ACCOUNT-BALANCE TO WS-TOTAL-BALANCE END-PERFORM DISPLAY "Total de diners en tots els comptes: " WS-TOTAL-BALANCE.
Conclusió
Aquest estudi de cas ens ha permès aplicar molts dels conceptes apresos al llarg del curs de COBOL. Hem creat un sistema bancari senzill que gestiona comptes, permet dipòsits, retirades i consultes de saldo, i emmagatzema les dades en un arxiu seqüencial. A més, hem implementat tècniques de gestió d'errors per assegurar la robustesa del sistema. Amb aquests coneixements, estem preparats per abordar projectes més complexos i avançats en COBOL.
Curs de Programació COBOL
Mòdul 1: Introducció al COBOL
- Què és el COBOL?
- Història del COBOL
- Configuració de l'Entorn COBOL
- Estructura Bàsica d'un Programa COBOL
Mòdul 2: Sintaxi Bàsica del COBOL i Tipus de Dades
Mòdul 3: Estructures de Control
Mòdul 4: Treballant amb Dades
- Gestió d'Arxius en COBOL
- Processament d'Arxius Seqüencials
- Processament d'Arxius Indexats
- Processament d'Arxius Relatius
Mòdul 5: Gestió Avançada de Dades
Mòdul 6: Subprogrames i Programació Modular
Mòdul 7: Gestió d'Errors i Depuració
Mòdul 8: COBOL i Bases de Dades
Mòdul 9: Temes Avançats
- COBOL Orientat a Objectes
- COBOL i Serveis Web
- Optimització del Rendiment
- Millors Pràctiques en Programació COBOL