Programa de Cajero Bancario en FoxPro: Apertura, Consignación y Préstamos
Programa Bancario en FoxPro: Banco del Pueblo
Este programa simula las operaciones básicas de un sistema bancario desarrollado en FoxPro. Utiliza bases de datos para gestionar clientes, operaciones y préstamos.
Configuración inicial
Se seleccionan las bases de datos de clientes, operación y préstamos, y se configura la fuente de la ventana.
SELECT 1
USE clientes
SELECT 2
USE operacion
SELECT 3
USE prestamos
MODIFY WINDOW screen FONT "Courier New", 12
Declaración de variables
mnombre = SPACE(20)
mapellido = SPACE(20)
mdireccion = SPACE(30)
mfijo = 0
mcel = 0
mcodigo = 0
mdinero = 0
mconsigna = 0
mretiro = 0
mdisponible = mdinero - 50000
Menú principal
DO WHILE .T.
CLEAR
SET COLOR TO GR+/B*
@1,30 SAY "BANCO DEL PUEBLO" FONT "Comic Sans MS", 80
@10,7 TO 23,40 PEN 5 STYLE "60"
@11,8 SAY "1) Apertura de cuenta"
@12,8 SAY "2) Consignación"
@13,8 SAY "3) Retiro"
@14,8 SAY "4) Consulta de saldo"
@15,8 SAY "5) Cinco últimos movimientos"
@17,8 SAY "6) Solicitud de préstamo"
@18,8 SAY "7) Consulta de cartera"
@20,8 SAY "8) Pago de cuotas"
@21,8 SAY "9) Salida"
@16.5,7 TO 19.5,40 PEN 5
mop = 0
@10,50 SAY "Por favor seleccione una de las opciones mostradas en la tabla:" GET mop VALID mop <= 9 .AND. mop > 0
READ
DO CASE
CASE mop = 9
DO salida
RETURN
CASE mop = 1
DO apertura
LOOP
CASE mop = 2
DO consignacion
LOOP
CASE mop = 3
DO retiro
LOOP
CASE mop = 4
DO consulta
LOOP
CASE mop = 6
DO prestamo
LOOP
ENDCASE
ENDDO
Procedimiento: Apertura de cuenta
PROCEDURE apertura
SELECT 1
mnombre = SPACE(20)
mapellido = SPACE(20)
mdireccion = SPACE(30)
mfijo = 0
mcel = 0
mcodigo = 0
@24,13 TO 43,90 PEN 6 STYLE "66"
@27,15 SAY "Ingrese su código:" GET mcodigo PICTURE "###########"
READ
IF mcodigo = 0
@22,45 SAY "Ingrese su documento"
j = INKEY(3)
RETURN
ENDIF
LOCATE FOR codigo = mcodigo
IF .NOT. EOF()
@22,45 SAY "Su cuenta se encuentra abierta..."
j = INKEY(3)
RETURN
ENDIF
@27,15 SAY "Ingrese su nombre:" GET mnombre PICTURE "@!"
@29,15 SAY "Ingrese sus apellidos:" GET mapellido PICTURE "@!"
@31,15 SAY "Ingrese su dirección:" GET mdireccion PICTURE "@!"
@33,15 SAY "Ingrese su teléfono fijo:" GET mfijo PICTURE "#######"
@35,15 SAY "Ingrese su teléfono celular:" GET mcel PICTURE "###########"
@37,15 SAY "Monto inicial (mínimo 50000)" GET mdinero PICTURE "##########" VALID mdinero >= 50000
READ
mop = SPACE(1)
@22,45 SAY "¿Quiere guardar los datos? S/N" GET mop PICTURE "@!" VALID mop $ "SN"
READ
IF mop = "S"
APPEND BLANK
REPLACE codigo WITH mcodigo
REPLACE apellido WITH mapellido
REPLACE nombre WITH mnombre
REPLACE direccion WITH mdireccion
REPLACE telfijo WITH mfijo
REPLACE telcel WITH mcel
REPLACE saldo WITH mdinero
mactivo = .T.
REPLACE activo WITH mactivo
ELSE
@22,45 SAY "Deshaciendo datos"
j = INKEY(3)
RETURN
ENDIF
@39,15 SAY "SU CUENTA SE HA CREADO"
j = INKEY(3)
READ
SELECT 2
mtipo = "AP"
mfechora = DATETIME()
APPEND BLANK
REPLACE codigo WITH mcodigo
REPLACE tipo WITH mtipo
REPLACE saldof WITH mdinero
REPLACE fechora WITH mfechora
REPLACE monto WITH mdinero
RETURN
Procedimiento: Salida
PROCEDURE salida
@15,50 SAY "Cerrando el programa..." FONT "Comic Sans MS", 35
j = INKEY(2)
CLEAR
RETURN
Procedimiento: Consulta de saldo
PROCEDURE consulta
SELECT 1
mcodigo = 0
@24,13 TO 43,90 PEN 6 STYLE "66"
@27,15 SAY "Ingrese su código:" GET mcodigo PICTURE "###########"
READ
IF mcodigo = 0
@22,45 SAY "Ingrese su documento"
j = INKEY(3)
RETURN
ENDIF
LOCATE FOR codigo = mcodigo
IF EOF()
@22,45 SAY "Su cuenta no se encuentra abierta..."
j = INKEY(3)
RETURN
ENDIF
mdisponible = 0
@13,105 SAY "nombre: " + nombre
@15,105 SAY "apellido: " + apellido
@17,105 SAY "dirección: " + direccion
@19,105 SAY "tel fijo: " + LTRIM(STR(telfijo,15))
@21,105 SAY "tel cel: " + LTRIM(STR(telcel,15))
@23,105 SAY "código: " + LTRIM(STR(codigo,15))
@25,105 SAY "dinero: " + LTRIM(STR(saldo,15))
@24,13 TO 43,90 PEN 6 STYLE "66"
@30,15 SAY "Su saldo total es: " + LTRIM(STR(saldo,10)) + " señor " + nombre
mdisponible = saldo - 50000
@32,15 SAY "Su saldo disponible es: " + LTRIM(STR(mdisponible,10))
READ
RETURN
Procedimiento: Consignación
PROCEDURE consignacion
SELECT 1
mcodigo = 0
mconsigna = 0
@24,13 TO 43,90 PEN 6 STYLE "66"
@27,15 SAY "Ingrese su código:" GET mcodigo PICTURE "###########"
READ
IF mcodigo = 0
@22,45 SAY "Ingrese su documento"
j = INKEY(3)
RETURN
ENDIF
LOCATE FOR codigo = mcodigo
IF EOF()
@22,45 SAY "Su cuenta no se encuentra abierta..."
j = INKEY(3)
RETURN
ENDIF
@13,105 SAY "nombre: " + nombre
@15,105 SAY "apellido: " + apellido
@17,105 SAY "dirección: " + direccion
@19,105 SAY "tel fijo: " + LTRIM(STR(telfijo,15))
@21,105 SAY "tel cel: " + LTRIM(STR(telcel,15))
@23,105 SAY "código: " + LTRIM(STR(codigo,15))
@25,105 SAY "dinero: " + LTRIM(STR(saldo,15))
@24,13 TO 43,90 PEN 6 STYLE "66"
@30,17 SAY "¿Cuánto dinero va a consignar?" GET mconsigna PICTURE "#########"
READ
mdinerof = mconsigna + saldo
REPLACE saldo WITH mdinerof
SELECT 2
mtipo = "CO"
mfechora = DATETIME()
APPEND BLANK
REPLACE codigo WITH mcodigo
REPLACE tipo WITH mtipo
REPLACE saldof WITH mdinerof
REPLACE fechora WITH mfechora
REPLACE monto WITH mconsigna
RETURN
Procedimiento: Retiro
PROCEDURE retiro
SELECT 1
mcodigo = 0
mretiro = 0
@24,13 TO 43,90 PEN 6 STYLE "66"
@27,15 SAY "Ingrese su código:" GET mcodigo PICTURE "###########"
READ
IF mcodigo = 0
@22,45 SAY "Ingrese su documento"
j = INKEY(3)
RETURN
ENDIF
LOCATE FOR codigo = mcodigo
IF EOF()
@22,45 SAY "Su cuenta no se encuentra abierta..."
j = INKEY(3)
RETURN
ENDIF
@13,105 SAY "nombre: " + nombre
@15,105 SAY "apellido: " + apellido
@17,105 SAY "dirección: " + direccion
@19,105 SAY "tel fijo: " + LTRIM(STR(telfijo,15))
@21,105 SAY "tel cel: " + LTRIM(STR(telcel,15))
@23,105 SAY "código: " + LTRIM(STR(codigo,15))
@25,105 SAY "dinero: " + LTRIM(STR(saldo,15))
@30,15 SAY "¿Cuánto va a retirar? (tenga en cuenta el saldo disponible: " + LTRIM(STR(mdisponible,15)) + "):" GET mretiro PICTURE "##########" VALID mretiro <= mdisponible
READ
mdineron = saldo - mretiro
mdisponible = saldo - mretiro - 50000
REPLACE saldo WITH mdineron
SELECT 2
mtipo = "RE"
mfechora = DATETIME()
APPEND BLANK
REPLACE codigo WITH mcodigo
REPLACE tipo WITH mtipo
REPLACE saldof WITH mdineron
REPLACE fechora WITH mfechora
REPLACE monto WITH mretiro
RETURN
Procedimiento: Préstamo
PROCEDURE prestamo
SELECT 1
mcodigo = 0
@24,13 TO 43,90 PEN 6 STYLE "66"
@27,15 SAY "Ingrese su código:" GET mcodigo PICTURE "###########"
READ
IF mcodigo = 0
@22,45 SAY "Ingrese su documento"
j = INKEY(3)
RETURN
ENDIF
LOCATE FOR codigo = mcodigo
IF EOF()
@22,45 SAY "Su cuenta no se encuentra abierta..."
j = INKEY(3)
RETURN
ENDIF
@13,105 SAY "nombre: " + nombre
@15,105 SAY "apellido: " + apellido
@17,105 SAY "dirección: " + direccion
@19,105 SAY "tel fijo: " + LTRIM(STR(telfijo,15))
@21,105 SAY "tel cel: " + LTRIM(STR(telcel,15))
@23,105 SAY "código: " + LTRIM(STR(codigo,15))
@25,105 SAY "dinero: " + LTRIM(STR(saldo,15))
READ
mmpres = saldo * 10
mvpres = 0
mcuota = 0
@27,15 SAY "Mínima cantidad de dinero: 1000000"
@29,15 SAY "Máxima cantidad de dinero: 50000000"
@31,15 SAY "Su máximo préstamo teórico sería: " + LTRIM(STR(mmpres,15))
@33,15 SAY "¿Cuánto dinero necesita?" GET mvpres PICTURE "#########" VALID mvpres <= 50000000 .AND. mvpres <= mmpres .AND. mvpres >= 1000000
READ
@35,15 SAY "¿En cuántas cuotas lo quiere? (opciones: 12, 24, 36)" GET mcuota PICTURE "##" VALID mcuota = 12 OR mcuota = 24 OR mcuota = 36
READ
j = INKEY(0)
mpcuo = 0
IF mcuota = 12
mpcuo = 0.15
ENDIF
IF mcuota = 24
mpcuo = 0.18
ENDIF
IF mcuota = 36
mpcuo = 0.22
ENDIF
mcuom = 0
mcuom = ((mvpres * mpcuo) / mcuota) + (mvpres * mpcuo)
@37,15 SAY "Usted eligió: " + LTRIM(STR(mcuota,15)) + " número de cuotas y se le cobrará: " + LTRIM(STR(mcuom,15))
READ
j = INKEY(0)
mop = SPACE(1)
@22,45 SAY "¿Quiere guardar los datos? S/N" GET mop PICTURE "@!" VALID mop $ "SN"
READ
IF mop = "S"
SELECT 3
mfechora = DATETIME()
APPEND BLANK
REPLACE codigo WITH mcodigo
REPLACE montopres WITH mvpres
REPLACE plazo WITH mcuota
REPLACE cuotasp WITH mcuota
REPLACE valcuota WITH mcuom
REPLACE fechapres WITH mfechora
mactivo = .T.
REPLACE activo WITH mactivo
ELSE
@22,45 SAY "Deshaciendo datos"
j = INKEY(3)
RETURN
ENDIF
RETURN!