Centro de Convenciones

Enunciado

Se desea crear una aplicación para administrar los espacios y eventos en un centro de convenciones. La aplicación debe permitir agregar nuevos espacios, buscar espacios y ordenar los espacios dado un criterio.
Cada espacio maneja la siguiente información:

- Nombre. No puede haber dos espacios con el mismo nombre.
- Capacidad. Cantidad máxima de personas.
- Tamaño del espacio. Valor mayor a cero.
- Costo por hora del espacio. Valor mayor a cero.
- Tipo. Puede ser: Al aire libre, Auditorio, Restaurante, Sala de cómputo y Salón.
- Tiene internet o no.
- Nombre del responsable del espacio.
- Foto del espacio.
- Lista de eventos. No puede haber dos eventos al mismo tiempo.

Cada evento tiene:

- Nombre.
- Fecha. Compuesta de año, mes, día, hora de inicio y hora de fin.
- Cantidad de asistentes.
- Descripción.
- Foto de la publicidad.

La aplicación debe permitir:

1. Agregar un nuevo espacio al centro de convenciones.
2. Agregar eventos a un espacio.
3. Ordenar ascendentemente los espacios por nombre.
4. Ordenar ascendentemente los espacios por capacidad.
5. Ordenar descendentemente los espacios por cantidad de eventos.
6. Buscar un espacio dado su nombre.
7. Buscar el espacio menos usado (con menor cantidad de eventos).
8. Buscar el espacio más usado (con mayor cantidad de eventos).
9. Buscar los espacios que tengan un evento con el nombre dado.
10. Buscar los espacios que tengan un evento en una fecha dada.
11. Generar un reporte de los espacios.

La información de los espacios debe ser persistente y el proceso debe ser completamente transparente para el usuario. Esto quiere decir que el programa debe ser capaz de guardar la información del mundo en un archivo binario cada vez que el usuario termina la ejecución del mismo y de cargar dicho archivo al inicio de la ejecución del programa para reconstruir el estado del mundo. Esta persistencia se debe manejar por medio de serialización/deserialización.

En caso de cualquier error en la ejecución del programa, este debe desplegar un mensaje claro que explique la razón del problema y en algunos casos registrar el problema en un archivo de log de errores llamado error.log (en el directorio "data"). Este archivo debe contener todo el histórico de errores registrados (esto quiere decir que la escritura de un nuevo error debe añadirse al final del archivo existente). El formato de este archivo es especificado en la sección “Persistencia” del documento de descripción.

Interfaz

 n8 centroDeConvenciones

 

Demo