Skip to content

MrZLeviatan/Virtual_Wallet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

💰 Virtual Wallet App - Proyecto Final Programación II

Universidad del Quindío
Ingeniería de Sistemas y Computación
Curso: Programación II

📌 Descripción

Esta aplicación es una billetera virtual desarrollada en Java que permite a los usuarios gestionar sus finanzas personales de forma digital. Ofrece funcionalidades como registro, administración de cuentas bancarias, creación de presupuestos, seguimiento de transacciones y generación de reportes financieros, tanto para usuarios como para administradores.


📚 Tabla de Contenidos

  1. Características
  2. Herramientas Principales
    1. Dependencias del Proyecto
  3. Roles del Sistema
  4. Entidades principales
  5. Requisitos técnicos
  6. Patrones de diseño aplicados
  7. Interfaz del aplicativo
  8. Estructura del proyecto
  9. Autores


Características

Virtual Wallet App es una aplicación de escritorio desarrollada en Java con interfaz gráfica basada en JavaFX, que permite la administración eficiente de las finanzas personales mediante una billetera virtual. Esta solución ofrece una experiencia completa tanto para usuarios comunes, que desean gestionar sus cuentas y presupuestos, como para administradores, encargados del control y monitoreo del sistema financiero digital.

Entre sus principales características se encuentran:

  • 📌 Registro e inicio de sesión de usuarios.

  • 🧾 Administración de cuentas bancarias, incluyendo transferencias, depósitos y retiros.

  • 📊 Creación y seguimiento de presupuestos categorizados.

  • 💳 Registro y consulta detallada de transacciones financieras.

  • 🗃️ Generación de reportes en formatos PDF y CSV usando librerías como Apache POI y PDFBox.

  • 📈 Visualización de estadísticas mediante gráficas dinámicas con JavaFX Charts.

  • 🛡️ Sistema de roles con funcionalidades diferenciadas para usuarios y administradores.

  • ♻️ Aplicación de múltiples patrones de diseño (Factory, Singleton, Builder, Facade, Observer, Strategy, entre otros) para garantizar un código modular, reutilizable y escalable.

  • 🧩 Estructura del proyecto bien organizada, que separa la lógica de negocio, controladores, servicios, vistas y utilidades.



Herramientas Principales

  • Backend:

    • Java
  • Frontend:

    • Java fx
  • IDEs/ Editors:

    • IntelliJ IDEA Apache Maven

Dependencias del Proyecto

  • 🎨 UI / JavaFX y Extensiones:

    • tilesfx: Biblioteca para crear paneles de información tipo dashboard, ideales para estadísticas y visualización de datos.
  • 📄 Generación de Reportes:

    • pdfbox: Librería de Apache para generar documentos PDF de forma dinámica desde Java. Usada para reportes financieros.
    • commons-csv: Herramienta de Apache para exportar datos en formato CSV, útil para reportes que pueden ser abiertos en Excel o Google Sheets.


Roles del sistema

👤 Usuario

  • RF-001: Registrarse y/o iniciar sesión.
  • RF-002: Modificar su perfil (nombre, correo, teléfono).
  • RF-003: Agregar, retirar y transferir dinero entre cuentas.
  • RF-004: Crear, modificar y eliminar presupuestos.
  • RF-005: Consultar y categorizar transacciones.
  • RF-006: Gestionar cuentas bancarias.
  • RF-007: Ver todas sus transacciones y presupuestos.
  • RF-008: Consultar saldo actual y estado financiero.

👨‍💼 Administrador

  • RF-009: Crear, actualizar, eliminar y listar usuarios.
  • RF-010: Gestionar cuentas bancarias.
  • RF-011: Crear y listar transacciones.
  • RF-012: Ver estadísticas (gastos comunes, usuarios activos, saldo promedio).
  • RF-013: Mostrar estadísticas gráficas con JavaFX Charts.


📊 Entidades principales

🏦 Cuenta (RF-014)

  • Agregar/editar/eliminar cuentas.
  • Consultar detalles de cuentas.

💳 Transacción (RF-015)

  • Crear y listar transacciones.
  • Filtrar por fecha, tipo y categoría.

📈 Presupuesto (RF-016)

  • Crear/modificar/eliminar presupuestos.
  • Monitorear el gasto asignado por categoría.

🗂️ Categoría (RF-017)

  • Crear y gestionar categorías de transacciones.


⚙️ Requisitos técnicos

  • RF-018: Implementación técnica:
    • Estructura organizada del proyecto.
    • CRUD funcionales con datos de prueba.
    • Interfaz gráfica con JavaFX.
  • RF-019: Generador de reportes (PDF/CSV) con Apache POI / PDFBox.


Patrones de diseño aplicados

  • Creacionales:

    • Singleton: Gestión global de configuración o conexión.
    • Factory Method: Creación flexible de transacciones.
    • Builder: Creación manejable de los modelos y los DTO`s
  • Estructurales:

    • Facade: Validación de acceso (usuario/admin).
    • Flyweight: Optimización de imágenes de perfil.
    • Decorator: Funcionalidad adicional como cuentas aseguradas.
  • Comportamiento:

    • Observer: Notificación de cambios en cuentas.
    • Command: Manejo de acciones como transacciones.
    • Strategy: Estrategias de categorización de transacciones.


🖼️ Interfaz del Aplicativo

  • Login / Pantalla Inicial

Descripción de la imagen


  • Panel de Administrador

Descripción de la imagen


  • Panel de Usuario

Descripción de la imagen



🗃️ Estructura del proyecto

/src/main/java/co.edu.uniquindio.virtual_wallet
 ├── command/
 ├── controller/
 ├── decorate/
 ├── exceptions/
 ├── factory/
 ├── mapping/
      ├── dto/
      ├── mapper/
 ├── models/   
      ├── builder/
      ├── enums
 ├── service/
 ├── strategy/
 ├── utils/
      ├── facade/     
 ├── viewController/
 └── App.java
 ├
 /resources/
 ├── images/
 ├── view/


👤 Autores

Autor
@Nicolas C.S
Icon.jpg

About

Esta aplicación es una billetera virtual desarrollada en Java que permite a los usuarios gestionar sus finanzas personales de forma digital.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages