Proyecto educativo: "Tienda de Celulares 1.0" - Sistema de gestión de inventario y ventas.
Aplicación Java Swing para gestionar un catálogo de teléfonos móviles y procesar ventas con descuentos y obsequios automáticos.
Proyecto_Telefonos/
├── src/tienda/ # Código fuente Java
│ ├── VentanaPrincipal.java
│ ├── Telefono.java
│ ├── DatosGlobales.java
│ └── Dialogo*.java (7 diálogos)
├── bin/ # Clases compiladas
├── README.md # Este archivo
└── INFORME_PROYECTO.md # Documentación detallada
- ✅ Consultar detalles de teléfonos
- ✅ Listar todos los teléfonos disponibles (con opción de ordenar)
- ✅ Modificar atributos de teléfonos
- ✅ Procesar ventas con cálculo automático de descuentos
- ✅ Asignación automática de obsequios según cantidad
- ✅ Configuración de descuentos y obsequios
- ✅ Interfaz gráfica intuitiva (Swing)
- ✅ Fondo con imagen escalable en ventana principal
- ✅ Comportamiento del botón cerrar (X) con confirmación igual que "Salir"
# Crear directorio bin si no existe
if (-not (Test-Path -Path "bin")) { New-Item -ItemType Directory -Path "bin" }
# Compilar todos los archivos Java
javac -d bin src\tienda\*.java# Ejecutar la aplicación
java -cp bin tienda.VentanaPrincipalEl proyecto está configurado para ejecutarse directamente desde VS Code usando el botón "Run Java". Los archivos de configuración incluyen:
.projecty.classpath: Definen el proyecto Java..vscode/launch.json: Configura la ejecución deVentanaPrincipal..vscode/settings.json: Establece el directorio de salida enbin.
Simplemente abre el proyecto en VS Code y presiona "Run Java".
Ventana principal que contiene la barra de menú con 5 opciones:
- Archivo: Salir
- Mantenimiento: Consultar, Modificar, Listar teléfonos
- Ventas: Procesar ventas
- Configuración: Ajustar descuentos y obsequios
- Ayuda: Información sobre la aplicación
Clase modelo que representa un teléfono con:
- 14 atributos (marca, modelo, color, procesador, pantalla, etc.)
- Constructor completo
- Getters y Setters para cada atributo
Centro de datos que almacena:
- Hasta 5 teléfonos (variables individuales: marca0-4, modelo0-4, etc.)
- Configuración de descuentos (4 rangos por cantidad)
- Configuración de obsequios (3 tipos por cantidad)
- Métodos para procesar ventas y calcular descuentos
- Variables de control de ventas (contador, total acumulado, cuota diaria)
- DialogoConsultarTelefono: Ver detalles de un teléfono
- DialogoListarTelefonos: Mostrar reporte de todos los teléfonos
- Actualización importante:
DialogoListarTelefonosahora incluye un selector de orden (JComboBox) que permite ordenar la lista por:Precio (Mayor → Menor),Precio (Menor → Mayor)yMarca (A → Z)sin modificarDatosGlobales.
- Actualización importante:
- DialogoModificarTelefono: Editar atributos de un teléfono
- DialogoVender: Procesar venta y generar boleta
- DialogoConfigurarDescuentos: Ajustar porcentajes de descuento
- DialogoConfigurarObsequios: Modificar nombres de obsequios
- DialogoAcercaDe: Información sobre la aplicación y autores
- Lenguaje: Java 8 o superior
- Framework UI: Swing (incluido en JDK)
- Sistema Operativo: Windows, macOS, Linux (cualquiera con JDK)
- ✅ Errores: 0
⚠️ Advertencias: 8 (principalmentethis-escape- no impiden ejecución)- ✅ Funcionalidad: 100% operativa
src/tienda/DialogoAcercaDe.java- possible 'this' escape (setDefaultCloseOperation)src/tienda/DialogoConfigurarDescuentos.java- possible 'this' escape (setDefaultCloseOperation)src/tienda/DialogoConfigurarObsequios.java- possible 'this' escape (setDefaultCloseOperation)src/tienda/DialogoConsultarTelefono.java- possible 'this' escape (setDefaultCloseOperation)src/tienda/DialogoListarTelefonos.java- possible 'this' escape (setDefaultCloseOperation)src/tienda/DialogoModificarTelefono.java- possible 'this' escape (setDefaultCloseOperation)src/tienda/DialogoVender.java- possible 'this' escape (setDefaultCloseOperation)src/tienda/VentanaPrincipal.java- possible 'this' escape (crearMenu call in constructor)
Nota: Estas advertencias son no-críticas y se producen porque algunos métodos que usan this se llaman durante la construcción del objeto. Si deseas, puedo remediarlas moviendo esos registros/llamadas al final de cada constructor sin cambiar la funcionalidad.
- El código está comentado para facilitar la lectura a programadores novatos
- Cada diálogo es completamente funcional y maneja errores básicos
- Los datos se almacenan en memoria (sin persistencia a disco)
- Se proporciona documentación detallada en
INFORME_PROYECTO.md
- Refactorizar
DatosGlobalespara usarList<Telefono>(mejor escalabilidad) - Agregar persistencia (guardar datos en archivo o BD)
- Crear pruebas unitarias con JUnit
- Internacionalización (i18n) para múltiples idiomas
- Mejoras de validación en formularios
- ✅ Corregido error de doble cierre de diálogos (cambio de
DISPOSE_ON_CLOSEaDO_NOTHING_ON_CLOSE) - ✅ Añadidos
serialVersionUIDy JavaDoc de clase en diálogos para mejorar warnings y documentación - ✅ Restaurado comportamiento de tecla
Escapeen diálogos (cierra con ESC) - ✅ Actualizado
README.mdeINFORME_PROYECTO.md
- ✅ Añadido selector de orden en
DialogoListarTelefonoscon opciones:Original,Precio (Mayor → Menor),Precio (Menor → Mayor),Marca (A → Z). - ✅ Implementada la lógica de ordenación local en el diálogo (no se modificó
DatosGlobales).
- ✅ Agregado fondo con imagen "Tienda_1.png" escalable proporcionalmente en la ventana principal.
- ✅ Modificado comportamiento del botón cerrar (X) para mostrar diálogo de confirmación igual que la opción "Salir".
- ✅ Configurado proyecto para ejecución directa desde el botón "Run Java" en VS Code (archivos
.project,.classpath,launch.json,settings.json). - ✅ Actualizada documentación en
README.mdeINFORME_PROYECTO.md. - ✅ Ajustado ancho y centrado de controles en
DialogoConfigurarObsequiospara mejorar legibilidad sin alterar tamaños. - ✅ Cambiado texto del botón "Cerrar" a negrita en
DialogoAcercaDe.
- ✅ Edición gráfica en Eclipse: Modificados diálogos
DialogoAcercaDe,DialogoConsultarTelefonoyDialogoModificarTelefonopara declarar componentes como variables de instancia, permitiendo edición visual con WindowBuilder u otros editores gráficos. - ✅ Imagen de fondo escalable: Cambiada la lógica de escalado en
VentanaPrincipalpara que la imagen cubra toda el área de la ventana sin mantener proporción, y declaradopanelPrincipalcomo variable de instancia para compatibilidad con editores gráficos. - ✅ Documentación completa: Agregados comentarios Javadoc a todos los métodos faltantes en el proyecto, incluyendo explicaciones detalladas de parámetros y funcionalidad.
- ✅ Compilación verificada: Proyecto compilado exitosamente sin errores, manteniendo toda la funcionalidad existente.
- ✅ Botón guardar mejorado: Corregidos los botones "Guardar" en
DialogoModificarTelefono,DialogoConfigurarDescuentosyDialogoConfigurarObsequiospara no cerrar la ventana y mostrar los cambios guardados inmediatamente. - ✅ Persistencia de cambios: Los cambios en teléfonos se guardan correctamente en
DatosGlobalesdurante la sesión actual. - ✅ Comentarios actualizados: Actualizados los Javadoc de los métodos modificados para reflejar el nuevo comportamiento (ventana abierta, refresco de datos).
- Nayeli Bianca Clemente Morales
- Milagros Eugenia Loza Cavero
- Nicole Paucar Quispe
- Emerson Víctor Aliaga Velán
- Carlos Eduardo Saavedra Alvarado
Última actualización: 19 de diciembre de 2025