Pequeño sistema de gestión de transacciones bancarias escrito en Java y utiliza MySQL como base de datos.
- Java 8 o superior
- Maven
- MySQL 5.7 o superior
- Protitpos de Interfaz gráfica
- Establecer interfaces necesarias
- ClienteForm
- Nuevo
- Editar
- CuentaBancariaForm
- Nuevo
- Cancelar
- Transferencia
- Retiro Sin Tarjeta
- Login
- Modelos
- Entidad Relacion
- Relacional
- Scripts
- init.sql
- DB
- Tablas
- Triggers
- dumbdata.sql
- init.sql
- Check transacciones
- Uso de Maven
- JavaDoc
- Permite Gestionar las transacciones
- Puede tener diferentes cuentas asociadas
- Posibilidad de registro de usuario
- Posibilidad de actualizar datos de usuario
- Posibilidad de cancelar cuenta
- Un usuario puede transferir a otras cuentas (suyas o no)
- Realizar retiros sin ser clientes
- Historial de operaciones con rango de fechas
- Diferentes cuentas por usuario.
- Encriptación de contraseñas al almacenarlas
- Retiros sin tarjeta pasan a no cobrado después de 10 min sin retirar dinero.
- Validaciones
- Datos de entrada (e.g. formato / campos vacíos)
- Logicas (e.g. saldo negativo, doble retiro sin cuenta)
- información repetida
- Fechas y dinero con formato correspondiente
-
Entradas a la tabla
operaciones
esta tabla va a guardar diferentes tipos de operaciones, entre estos se encuentran: "actualizacion", "transferencia", y "retiro". a. Las actualizaciones se refiere a cambios en la información del usuario, estos se van a ver efectuadas medianteb.UPDATE
's, un trigger en los updates a la tablaclientes
podría alimentar esos registros.Las operacion "transferencia" indica la creación de un registro en la tablac.transferencias
, otro trigger podría estar en todos losINSERT INTO
de esta tabla.En la última operación "retiro", un trigger podría ser aplicado al hacerUPDATE
en la tabla deCuentasBancarias
, el único campo a actualizar es el saldo.
-
Propuesta de alteración aoperaciones
: esta también podría almacenar la creación de cuentas bancarias, agregando un trigger en losINSERT INTO
de CuentasBancarias, esto podría no ser del todo necesario ya que cada cuenta bancaria tiene una fecha de apertura que contendría esta operación. -
Para asegurar que no se guarden montos de dinero negativos, se podría aplicar un trigger en todos los cambios que manejen este tipo de atributo, verificando antes de insertar que el valor sea mayor a 0. Esto aplicaría a: Monto de RetiroSinCuenta, SaldoMXN de CuentasBancarias, y Monto de Transferencias.
-
Hay ingresos de fechas que no tendrían sentido, y sería lógico meter algunas validaciones mediante triggers. Esto podría aplicar a la FechaNacimiento de Clientes, que no sea mayor a la fecha actual; que FechaFin no sea menor a FechaInicio en RetirosSinCuenta; FechaApertura de CuentasBancarias tampoco debería ser mayor a la fecha actual.
-
La transferencia de dinero de una cuenta a otra require el uso de transacciones para asegurar la integridad de la operación.
-
Se podría aplicar transferencia en ambas, retiro y depósito, a cuentas bancarias, siendo este aparentemente no tan necesario podría asegurar que los movimientos se reflejen de manera correcta.
-
Se pueden simplificar operaciones CRUD para realizar conjuntos de consultas en una sola desde el código, por ejemplo, se puede crear un procedimiento almacenado que maneje las transferencias, recibiendo una referencia de cada cuenta con el monto, y que se encargue de crear el registro de la misma transferencia y los cambios en el dinero de ambas cuentas
-
Podría aplicarse un procedimiento almacenado que reciba un tiempo en el cual el retiro pasará a un estado en el que no pueda ser retirado, calculando dentro de aquí la fecha de FechaFin.
- Modelo entidad-relación de la base de datos.1
- Modelo relacional de la base de datos.
- Script SQL de creación de base de datos.
- Diagrama de base de datos generado por el asistente de MySQL Workbench.
- Prototipos de interfaz gráfica con información de muestra.
- Consideren utilizar el control apropiado según el contenido que deseen mostrar o interactuar.
- Definir dónde pretenden utilizar el trigger.
- Definir dónde pretenden utilizar la transacción.
- Definir dónde pretenden utilizar el stored procedure.
- Desarrollar completamente un formulario de su elección. Debe incluir conexión con BD, DAO, Formulario, clases de Dominio, validaciones, etc.
- URL del repositorio público de Github con el código del proyecto actualizado hasta ese momento.
Footnotes
-
El modelo ER pueden ser abierto mediante esta página o usando la aplicación de escritorio ↩