Gestión de Condominios
“Los Clarines”
Integrantes: Dariel Benjamín Opazo
Cortés Leydy Diana Rivera Rodríguez
Asignatura: Programación Avanzada
Paralelo 2
Profesora: Niriaska del Carmen Perozo de Linares
Fecha entrega: 13/12/2024
Introducción
El presente proyecto, desarrollado en el marco de la asignatura de Programación
Avanzada, tiene como objetivo principal diseñar e implementar un sistema integral
para el control de condominios del Centro Metropolitano "Los Clarines". Este sistema
se divide en tres módulos fundamentales: gestión de edificios, apartamentos y
propietarios; administración de cobros; y priorización de pagos, todo bajo los
principios de la Programación Orientada a Objetos utilizando Java. Con un enfoque en
la eficiencia, organización y cumplimiento de los requerimientos establecidos, este
proyecto busca proporcionar una solución robusta y escalable que facilite la
administración de datos, la generación de reportes y la priorización de tareas,
permitiendo una gestión optimizada de los recursos del condominio. Además, el
desarrollo contempla validaciones estrictas, integración de estructuras de datos
avanzadas como pilas y colas de prioridad, y un diseño modular que asegura la
cohesión del sistema.
pág. 2
Clases
Clase propietario:
Esta clase almacena los atributos del objeto llamado Propietario, los cuales son:
nombre, apellido y RUT.
En el método ToString se guardarán los atributos como cadenas de texto. Los gets
sirven para agregar los atributos a la clase y los sets sirven para obtener esos atributos
de la clase.
Clase Edificio
Esta clase almacena los atributos del objeto llamado Edificio, los cuales son: Código,
nombre, nombre Conserje, número de pisos, ascensor, monto del condominio y el día
de cobro del edificio.
pág. 3
En el método ToString se guardarán los atributos como cadenas de texto. Los gets
sirven para agregar los atributos a la clase y los sets sirven para obtener esos atributos
de la clase.
Clase Departamento
Esta clase almacena los atributos del objeto llamado Departamento, los cuales son:,
numero del departamento, piso, alquilado, numero Habitaciones, propietario y código
del edificio al que pertenece.
En el método ToString se guardarán los atributos como cadenas de texto. Los gets
sirven para agregar los atributos a la clase y los sets sirven para obtener esos atributos
de la clase.
pág. 4
Clase FichaCobro
Esta clase almacena los atributos del objeto llamado Propietario, los cuales son:
propietario, el total a pagar, la fecha(día del mes en que pago) y una cola llamada
coladepartamento que explicaré más adelante.
En el método ToString se guardarán los atributos como cadenas de texto. Los gets
sirven para agregar los atributos a la clase y los sets sirven para obtener esos atributos
de la clase
Clase principal
Main
En el main se llama al método men
pág. 5
Menu
Este método menu implementa un menú interactivo para un sistema de control de
condominios. Su funcionamiento se divide en dos partes principales:
1. Validación de registros mínimos:
o Si no hay al menos 3 propietarios, 3 edificios y 3 departamentos
registrados, el menú solicita completar estos registros mostrando
cuántos faltan. Permite registrar propietarios, edificios o departamentos,
o salir del programa.
2. Opciones avanzadas:
o Una vez cumplidos los registros mínimos, el menú habilita
funcionalidades avanzadas como generación de fichas de cobro,
construcción de colas de prioridad, reportes y gestión de datos. Estas
opciones se ejecutan mediante un switch-case.
El método incluye manejo de errores para entradas inválidas y asegura que el menú se
mantenga en funcionamiento hasta que el usuario decida salir.
pág. 6
5. Submenús
El sistema cuenta con submenús organizados por funcionalidad para facilitar la
interacción con el usuario. Estos submenús permiten acceder a operaciones
específicas relacionadas con reportes, propietarios, edificios y departamentos. A
continuación, se detallan las características y opciones disponibles en cada submenú.
5.1. Submenú de Reportes
El submenú de reportes está diseñado para generar diferentes tipos de informes que
ayudan a analizar el estado del condominio. Entre las opciones disponibles se
encuentran:
1. Imprimir la cola de prioridad: Muestra las fichas de cobro ordenadas por el
monto total a pagar. Esto facilita priorizar los cobros más importantes.
2. Reporte general de edificios: Presenta un listado de los edificios ordenados
según criterios de prioridad, como el monto total a cobrar.
3. Departamentos con fechas de cobro vencidas: Genera un informe de los
departamentos que no han pagado dentro del tiempo establecido, ordenados
por piso.
4. Reporte general de fichas de cobro: Muestra todas las fichas de cobro
generadas, con detalles sobre montos, propietarios y fechas de cobro.
5. Propietarios con cobros vencidos (+5 días): Lista los propietarios que tienen
cobros pendientes por más de cinco días.
6. Propietarios con cobros vencidos (-5 días): Similar al anterior, pero muestra
propietarios con cobros vencidos en un rango de hasta cinco días.
7. Listado general de propietarios: Presenta todos los propietarios registrados en
el sistema, junto con sus datos.
8. Listado general de edificios: Muestra información básica de todos los edificios
registrados.
9. Listado de edificios con sus propietarios: Relaciona cada edificio con los
propietarios que tienen departamentos en él.
10. Listado de departamentos agrupados por edificio: Organiza los
departamentos según el edificio al que pertenecen, detallando pisos y
propietarios.
pág. 7
11. Listado de departamentos agrupados por propietario: Muestra los
departamentos que son propiedad de cada propietario registrado.
Estos reportes son fundamentales para la administración del condominio, ya que
brindan una visión clara y detallada de los datos almacenados.
5.2. Submenú de Propietarios
El submenú de propietarios gestiona todas las operaciones relacionadas con los
residentes del condominio. Las opciones incluyen:
1. Registrar propietario: Permite agregar un nuevo propietario al sistema. Antes
del registro, valida que el RUT ingresado no exista ya en la lista de propietarios.
2. Consultar propietario: Busca un propietario específico ingresando su RUT. Si
se encuentra, muestra su información detallada.
pág. 8
3. Modificar propietario: Ofrece la posibilidad de actualizar los datos personales
del propietario, como nombre y apellido.
4. Eliminar propietario: Antes de eliminar un propietario, el sistema verifica que
no tenga departamentos asociados. Si existen dependencias, la eliminación es
bloqueada para preservar la integridad de los datos.
Este submenú garantiza que la información de los propietarios esté actualizada y
permite gestionar posibles errores en los registros.
5.3. Submenú de Edificios
Este submenú se enfoca en la gestión de los edificios que forman parte del
condominio. Las opciones son:
1. Registrar edificio: Agrega un nuevo edificio al sistema con datos como:
o Código único.
o Nombre del edificio.
o Nombre del conserje.
o Número de pisos.
o Presencia o ausencia de ascensor.
o Monto del condominio.
o Día de cobro mensual.
pág. 9
2. Consultar edificio: Permite buscar un edificio por su código único y muestra
todos los datos asociados.
3. Modificar edificio: Actualiza atributos como el nombre, el número de pisos y el
monto de condominio.
4. Eliminar edificio: Verifica que no existan departamentos vinculados al edificio
antes de eliminarlo. Si hay departamentos asociados, la operación es
rechazada.
Este submenú asegura una administración efectiva de los edificios registrados y evita
inconsistencias en los datos.
5.4. Submenú de Departamentos
El submenú de departamentos facilita la gestión de las unidades residenciales dentro
de los edificios. Las funcionalidades incluyen:
1. Registrar departamento: Crea un nuevo departamento asociado a un edificio
existente. Si el departamento está alquilado, valida que el propietario esté
registrado en el sistema.
2. Consultar departamento: Busca un departamento específico por su número y
muestra los detalles registrados.
3. Modificar departamento: Actualiza información como el piso, el número de
habitantes, el estado de alquiler y el propietario asociado.
4. Eliminar departamento: Verifica que el departamento no esté en uso antes de
eliminarlo del sistema.
pág. 10
Este submenú permite registrar y mantener actualizada la información de cada
departamento, asegurando la integridad de los datos relacionados con edificios y
propietarios.
Generación de Fichas de Cobro
El sistema incluye una funcionalidad avanzada para generar fichas de cobro
mensuales para los propietarios. Estas fichas contienen:
1. Detalles de los departamentos asociados: Lista los departamentos que
pertenecen al propietario.
2. Monto total a pagar: Calculado en función del monto de condominio de los
edificios a los que pertenecen los departamentos.
3. Día de cobro: Indica la fecha límite para realizar el pago.
Las fichas generadas se almacenan en una pila, lo que permite gestionar los cobros en
orden y priorizarlos según sea necesario.
pág. 11
7. Reportes
Los reportes permiten obtener una visión general y detallada del estado del
condominio. Los tipos de reportes incluyen:
1. Cobros vencidos: Lista propietarios con pagos atrasados, agrupados en rangos
de más o menos cinco días.
2. Listado general: Presenta información de propietarios, edificios y
departamentos organizados por diferentes criterios.
3. Cola de prioridad: Ordena las fichas de cobro por el monto total a pagar,
permitiendo una gestión eficiente de los cobros más significativos.
4. Departamentos con cobros vencidos: Filtra los departamentos según los días
de retraso en el pago y los organiza por piso.
Estos reportes son esenciales para la toma de decisiones y el análisis de los datos
administrativos.
8. Validaciones
El sistema asegura la integridad de los datos mediante validaciones estrictas:
1. Evitar registros duplicados: Al registrar propietarios, edificios o
departamentos, se verifica que no existan duplicados en los datos clave (RUT,
código de edificio, número de departamento).
pág. 12
2. Mantener dependencias: Bloquea la eliminación de propietarios o edificios si
existen departamentos asociados a ellos.
Estas validaciones garantizan que los datos se mantengan consistentes y correctos.
9. Manejo de Excepciones
Se utiliza un manejo robusto de excepciones para evitar que errores del usuario afecten
el funcionamiento del sistema:
1. Captura de entradas no válidas: Si el usuario ingresa un valor no numérico
donde se espera un número, se captura la excepción InputMismatchException.
2. Limpieza del buffer: Después de una entrada incorrecta, se limpia el buffer del
Scanner para evitar errores en iteraciones posteriores.
Este enfoque asegura una experiencia de usuario más fluida y previene fallos
inesperados.
10. Métodos Auxiliares
Se implementan métodos específicos que encapsulan operaciones frecuentes, como:
1. construirColaDePrioridad: Crea una cola de prioridad ordenando las fichas de
cobro por el monto total a pagar.
2. imprimirColaDePrioridad: Muestra los elementos de la cola de prioridad en el
orden establecido.
3. Operaciones CRUD (Crear, Leer, Actualizar, Eliminar): Métodos para
gestionar propietarios, edificios y departamentos, como registrarPropietario,
consultarEdificio, y modificarDepartamento.
Estos métodos mejoran la modularidad y la reutilización del código.
pág. 13
Imágenes de referencia
Estas imágenes están extraídas del código
pág. 14
pág. 15
pág. 16
Conclusión
La implementación de este proyecto no solo satisface los requerimientos operativos y
administrativos del Centro Metropolitano "Los Clarines", sino que también refleja un
alto nivel de dominio en conceptos avanzados de programación. Los módulos
desarrollados garantizan una administración eficiente y ordenada del condominio,
desde la gestión de datos básicos hasta la automatización de procesos complejos
como la generación de fichas de cobro y la priorización de pagos. Esta solución
integral, además de cumplir con los objetivos planteados, se presenta como una
herramienta adaptable y escalable para futuras mejoras y expansiones,
consolidándose como un modelo de excelencia en la gestión de condominios.
pág. 17