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, buscar, eliminar espacios y eventos, y permitir conocer el valor que se ha recaudado.
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 en metros cuadrados. Debe ser un valor mayor a cero.
- Costo por hora del espacio. Debe ser un valor mayor a cero.
- Tipo. Puede ser: Al aire libre, Auditorio, Restaurante, Sala de cómputo y Salón.
- Si tiene internet o no.
- Nombre del responsable del espacio.
- Foto del espacio.
- Lista de eventos. No puede haber dos eventos al mismo tiempo y la lista está organizada por fecha de manera ascendente.

Cada evento tiene:

- Nombre.
- Fecha de inicio, compuesta por el año, el mes, el día y la hora de.
- Fecha de fin, compuesta por el año, el mes, el día y la hora.
- 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. Eliminar un espacio del centro de convenciones.
4. Eliminar un evento de un espacio.
5. Calcular el valor recaudado por todos los 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 cuyo nombre contenga la cadena dado.
10. Buscar los espacios que tengan un evento en una fecha dada.
11. Generar 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” de este documento.

Interfaz

 n9 centrodDeConvenciones