En aquest estudi de cas, desenvoluparem un sistema de gestió d'inventari utilitzant RPG. Aquest projecte ens permetrà aplicar els conceptes apresos en els mòduls anteriors i veure com es poden utilitzar en una aplicació del món real.
Objectius del Sistema de Gestió d'Inventari
- Registrar Productes: Permetre l'entrada de nous productes a l'inventari.
- Actualitzar Quantitats: Modificar les quantitats dels productes existents.
- Consultar Inventari: Visualitzar l'estat actual de l'inventari.
- Eliminar Productes: Treure productes de l'inventari.
Estructura del Sistema
El sistema es compondrà de diversos mòduls:
- Mòdul de Dades: Gestió de la base de dades.
- Mòdul de Lògica de Negoci: Processament de les operacions d'inventari.
- Mòdul d'Interfície d'Usuari: Interacció amb l'usuari.
- Mòdul de Dades
Estructura de la Base de Dades
Crearem una taula per emmagatzemar la informació dels productes. La taula tindrà les següents columnes:
Columna | Tipus de Dada | Descripció |
---|---|---|
product_id |
CHAR(10) | Identificador únic del producte |
name |
CHAR(50) | Nom del producte |
quantity |
INT | Quantitat en estoc |
price |
DEC(10, 2) | Preu del producte |
Creació de la Taula
CREATE TABLE products ( product_id CHAR(10) PRIMARY KEY, name CHAR(50), quantity INT, price DEC(10, 2) );
- Mòdul de Lògica de Negoci
Funcions Principals
- Afegir Producte
- Actualitzar Quantitat
- Consultar Inventari
- Eliminar Producte
Afegir Producte
Dcl-Proc AddProduct; Dcl-Pi AddProduct; productId CHAR(10); name CHAR(50); quantity INT(10); price DEC(10, 2); End-Pi; Exec SQL INSERT INTO products (product_id, name, quantity, price) VALUES (:productId, :name, :quantity, :price); End-Proc;
Actualitzar Quantitat
Dcl-Proc UpdateQuantity; Dcl-Pi UpdateQuantity; productId CHAR(10); newQuantity INT(10); End-Pi; Exec SQL UPDATE products SET quantity = :newQuantity WHERE product_id = :productId; End-Proc;
Consultar Inventari
Dcl-Proc GetInventory; Dcl-Pi GetInventory; productList DS LIKE(ProductsDS) DIM(100); End-Pi; Exec SQL SELECT * INTO :productList FROM products; End-Proc;
Eliminar Producte
Dcl-Proc DeleteProduct; Dcl-Pi DeleteProduct; productId CHAR(10); End-Pi; Exec SQL DELETE FROM products WHERE product_id = :productId; End-Proc;
- Mòdul d'Interfície d'Usuari
Menú Principal
Dcl-Proc MainMenu; Dcl-S option CHAR(1); DoU option = '5'; Dsply '1. Afegir Producte'; Dsply '2. Actualitzar Quantitat'; Dsply '3. Consultar Inventari'; Dsply '4. Eliminar Producte'; Dsply '5. Sortir'; Dsply 'Selecciona una opció: ' option; Select; When option = '1'; CallP AddProductUI; When option = '2'; CallP UpdateQuantityUI; When option = '3'; CallP GetInventoryUI; When option = '4'; CallP DeleteProductUI; EndSl; EndDo; End-Proc;
Funcions d'Interfície
Afegir Producte UI
Dcl-Proc AddProductUI; Dcl-S productId CHAR(10); Dcl-S name CHAR(50); Dcl-S quantity INT(10); Dcl-S price DEC(10, 2); Dsply 'Introdueix ID del producte: ' productId; Dsply 'Introdueix nom del producte: ' name; Dsply 'Introdueix quantitat: ' quantity; Dsply 'Introdueix preu: ' price; CallP AddProduct(productId: name: quantity: price); End-Proc;
Actualitzar Quantitat UI
Dcl-Proc UpdateQuantityUI; Dcl-S productId CHAR(10); Dcl-S newQuantity INT(10); Dsply 'Introdueix ID del producte: ' productId; Dsply 'Introdueix nova quantitat: ' newQuantity; CallP UpdateQuantity(productId: newQuantity); End-Proc;
Consultar Inventari UI
Dcl-Proc GetInventoryUI; Dcl-S productList DS LIKE(ProductsDS) DIM(100); CallP GetInventory(productList); For i = 1 to %Elem(productList); If productList(i).product_id <> *Blanks; Dsply 'ID: ' + productList(i).product_id + ' Nom: ' + productList(i).name + ' Quantitat: ' + %Char(productList(i).quantity) + ' Preu: ' + %Char(productList(i).price); EndIf; EndFor; End-Proc;
Eliminar Producte UI
Dcl-Proc DeleteProductUI; Dcl-S productId CHAR(10); Dsply 'Introdueix ID del producte: ' productId; CallP DeleteProduct(productId); End-Proc;
Exercicis Pràctics
- Afegir Validacions: Modifica les funcions per afegir validacions, com ara assegurar que la quantitat i el preu siguin positius.
- Millorar la Interfície: Crea una interfície més amigable per a l'usuari, utilitzant pantalles més detallades.
- Afegir Funcionalitats: Implementa funcionalitats addicionals, com ara la cerca de productes per nom.
Conclusió
Aquest estudi de cas ens ha permès veure com es poden aplicar els conceptes de RPG en una aplicació pràctica. Hem creat un sistema de gestió d'inventari que inclou la gestió de dades, la lògica de negoci i la interfície d'usuari. Aquests coneixements són fonamentals per desenvolupar aplicacions més complexes en el futur.
Curs de Programació RPG
Mòdul 1: Introducció a la Programació RPG
- Què és RPG?
- Configuració del Teu Entorn de Desenvolupament
- Sintaxi i Estructura Bàsiques
- Programa Hello World
Mòdul 2: Conceptes Bàsics
Mòdul 3: Treballant amb Dades
Mòdul 4: Tècniques Avançades de Programació
Mòdul 5: RPG IV i Més Enllà
Mòdul 6: Integrant RPG amb Tecnologies Modernes
Mòdul 7: Aplicacions del Món Real
- Construint una Aplicació Simple
- Estudi de Cas: Sistema de Gestió d'Inventari
- Estudi de Cas: Sistema de Nòmines
- Millors Pràctiques i Revisió de Codi