Universidad de Costa Rica
Escuela de Computación
Examen 03
CI-1201 Programación II - 2017a
Profesor Jeisson Hidalgo-Céspedes

En cada ejercicio se evaluará la eficiencia del código, el uso de identificadores significativos, la indentación, escritura correcta de llaves {}, el uso adecuado de la palabra reservada const, el uso de copias, punteros y referencias. Se dispone de tres horas para entregar la prueba y debe realizarse en forma estrictamente individual.

Suponga que una exitosa Agencia de Eventos, especializada en cumpleaños, mariachis, bodas, té de canastilla, bautizos, primera comunión, etc., está experimentando un crecimiento exponencial en su demanda, y en la misma proporción su descontrol; tanto que hay sospechas de empleados cobrando más de lo debido a los clientes, o reportando a la empresa menos de lo pagado por los clientes. Preocupado, el dueño de la Agencia le ha contratado para automatizar parte de sus operaciones, con el fin de obtener estadísticas que le ayuden a corroborar el buen manejo del dinero y la salud de la empresa.

El dueño le ha solicitado en la fase inicial de desarrollo, implementar un sistema de control de los eventos más importantes: los cumpleaños, los mariachis y las bodas. Estos tres representan más del 90% de los ingresos actuales de la empresa.

Todo evento tiene una fecha (en formato AAAAMMDD), duración en horas, el número de participantes, el lugar donde se realizó, una persona de contacto, y su número de teléfono. Por política de la empresa, todo evento tiene un costo mínimo de 50,000 colones.

El costo de un cumpleaños es de 8,000 colones por participante, lo cual incluye tarjetas de invitación, el salón, comida, decoración y piñata. Si el cliente además quiere animación de payaso, se cobra un adicional de 30,000 colones por hora.

El costo de contratar un mariachi es de 90,000 colones la hora, indiferentemente de la cantidad de participantes.

El costo de organizar una boda es de 13,000 colones por participante, lo cual incluye tarjetas de invitación, comida, decoración, música y animación. Si el cliente desea asistencia de profesional de fotografía y filmación, tendrá a disposición tres paquetes: (1) 30,000 colones por 10 fotografías impresas. (2) 50,000 colones por 10 fotografías impresas, una en marco, y un DVD con todos los "negativos". (3) 120,000 colones por lo anterior más todo el evento filmado con edición básica y entregado en blue-ray.

El dueño de la empresa le ha indicado que necesita un programa interactivo que permita inicialmente hacer dos tareas: registrar eventos y obtener estadísticas. Cuando su programa se ejecuta, presentará repetitivamente un menú con tres opciones: las dos anteriores y una tercera para terminar su ejecución.

Cuando el empleado escoge la opción Registrar evento, el sistema le muestra un submenú con los tipos de eventos que realiza la empresa (cumpleaños, mariachis y bodas). El sistema solicitará luego los detalles del evento de acuerdo a su tipo, como la fecha (en formato AAAAMMDD donde AAAA es el año, MM el mes y DD el día), número de prticipantes, si quiere o no payaso en caso de cumpleaños, el tipo de paquete de fotografía en caso de boda, etc., etc.

Cuando se haya terminado de ingresar el evento, el sistema muestra el costo del evento en la pantalla y pregunta al empleado si desea guardar el evento en disco. En caso de responder afirmativamente, el sistema agrega el evento a un archivo histórico de eventos que la empresa ha organizado. Si responde negativamente, no se hace ninguna modificación al archivo; esto es útil para los empleados a la hora de realizar cotizaciones.

Cuando un empleado o el dueño de la empresa quiere Ver estadísticas, el sistema recorre el archivo histórico de eventos, y calcula la siguiente información:

Usted debe diseñar el sistema tan modular como le sea posible, dado que el dueño de la empresa pretende agregar los demás tipos de eventos en las fases subsecuentes de desarrollo. Además, la empresa está en crecimiento y evaluando la posibilidad de expandir la oferta a nuevos tipos de eventos aún no conocidos; por ejemplo, se rumora que se quiere incursionar en fiestas de graduación y despedidas de solteros. Con esto en mente, diseñe su solución polimórficamente para que la tarea de agregar un nuevo tipo de evento al sistema implique pocas modificaciones de código y disminuya la probabilidad de introducir errores.

Evaluación

  1. [15%] Clase controladora que representa la aplicación como un todo. Presenta el menú. Correcto manejo de archivos.

  2. [25%] Registra eventos adecuada y polimórficamente.

  3. [25%] Representa adecuadamente la jerarquía de clases. Obliga a nuevos eventos a implementar funcionalidad requerida. Eventos se comportan polimórficamente.

  4. [25%] Imprime estadísticas correctamente. Para efectos de este examen basta con imprimir estadísticas de eventos y cumpleaños (no de mariachis ni bodas). Sugerencia puede utilizar variables estáticas en cada tipo de evento.

  5. [10%] Evita fugas de memoria a toda costa.

Sesión de ejemplo:

Agencia de eventos v1.0

  1. Registrar evento
  2. Ver estadísticas
  0. Salir

Opción [0-2]: 1
Registrar nuevo evento:

  1. Cumpleaños
  2. Mariachi
  3. Boda
  0. Regresar

Opción [0-3]: 1
Ingrese evento en formato:

  fecha duracion participantes
  lugar
  contacto
  telefono payaso

20170801 3 35
Concepcion de Tres Rios
Wendy Barrientos
88125911 0

El costo del evento es de 280000.00 colones
¿Guardar evento en disco [sN]: s
Evento guardado

Agencia de eventos v1.0

  1. Registrar evento
  2. Ver estadísticas
  0. Salir

Opción [0-2]: 1
Registrar nuevo evento:

  1. Cumpleaños
  2. Mariachi
  3. Boda
  0. Regresar

Opción [0-3]: 2
Ingrese evento en formato:

  fecha duracion participantes
  lugar
  contacto
  telefono

20170725 0.5 250
Llorente de Tibas
Maria Cecilia Vega
86510845

El costo del evento es de 50000.00 colones
¿Guardar evento en disco [sN]: s
Evento guardado

Agencia de eventos v1.0

  1. Registrar evento
  2. Ver estadísticas
  0. Salir

Opción [0-2]: 1
Registrar nuevo evento:

  1. Cumpleaños
  2. Mariachi
  3. Boda
  0. Regresar

Opción [0-3]: 3
Ingrese evento en formato:

  fecha duracion participantes
  lugar
  contacto
  telefono paqueteFotografico

20170915 5 54
Gravilias de Desamparados
Samuel Villalta
70110037 1

El costo del evento es de 678000.00 colones
¿Guardar evento en disco [sN]: s
Evento guardado

Agencia de eventos v1.0

  1. Registrar evento
  2. Ver estadísticas
  0. Salir

Opción [0-2]: 1
Registrar nuevo evento:

  1. Cumpleaños
  2. Mariachi
  3. Boda
  0. Regresar

Opción [0-3]: 2
Ingrese evento en formato:

  fecha duracion participantes
  lugar
  contacto
  telefono

20170715 3 15
Casa Presidencial, Zapote
LuisGui
68707860

El costo del evento es de 270000.00 colones
¿Guardar evento en disco [sN]: n

Agencia de eventos v1.0

  1. Registrar evento
  2. Ver estadísticas
  0. Salir

Opción [0-2]: 1
Registrar nuevo evento:

  1. Cumpleaños
  2. Mariachi
  3. Boda
  0. Regresar

Opción [0-3]: 1
Ingrese evento en formato:

  fecha duracion participantes
  lugar
  contacto
  telefono payaso

20170730 4 30
Jaco
Jackeline Coto
26718860 1

El costo del evento es de 360000.00 colones
¿Guardar evento en disco [sN]? s
Evento guardado

Agencia de eventos v1.0

  1. Registrar evento
  2. Ver estadísticas
  0. Salir

Opción [0-2]: 2
  EVENTOS:
    4 eventos en total
    3.12 horas promedio por evento
    92 participantes promedio por evento
    342000 colones de costo promedio por evento
    1368000 colones de costo total de todos los eventos

  CUMPLEAÑOS:
    2 cumpleaños en total
    3.50 horas promedio por cumpleaños
    32 participantes promedio por cumpleaños
    320000 colones costo promedio por cumpleaños
    640000 colones costo total de todos los cumpleaños
    1 cumpleaños contratados con payaso
    50.00% de cumpleaños con payaso

Agencia de eventos v1.0

  1. Registrar evento
  2. Ver estadísticas
  0. Salir

Opción [0-2]: 0