Hotel Un nuevo cliente en la empresa para la cual trabajamos es dueño del futuro hotel “Estrellita de Mar” y nos comenta su problema de no poder encontrar un software en el mercado que cubra todas sus necesidades. Luego de haber realizado un par de reuniones, y de realizada la propuesta, y aprobada por el cliente, podemos identificar los siguientes requerimientos: Ingresar las habitaciones, según su tipo (simple, doble y matrimonial) y comodidades (frigobar, TV, y DVD). Consultar las habitaciones disponibles y poder reservar habitaciones en su hotel. El hotel posee dos tipos de clientes: habituales y esporádicos. Una reserva almacena datos del cliente, de la habitación reservada, la fecha de comienzo y el número de días que será ocupada la habitación. El recepcionista del hotel debe poder hacer las siguientes operaciones: · Obtener un listado de las habitaciones disponible de acuerdo a su tipo. · Preguntar por el precio de una habitación de acuerdo a su tipo. · Preguntar por el descuento ofrecido a los clientes habituales. · Preguntar por el precio total para un cliente dado, especificando su número de reserva, tipo de habitación y número de noches. · Dibujar en pantalla la foto de una habitación de acuerdo a su tipo. · Reservar una habitación especificando el número de la pieza, reserva y nombre del cliente. · Eliminar una reserva especificando el número de la habitación. El administrador puede usar el programa para: · Cambiar el precio de una habitación de acuerdo a su tipo. · Cambiar el valor del descuento ofrecido a los clientes habituales. · Calcular las ganancias que tendrán en un mes especificado (considere que todos los meses tienen treinta días). El diseño a desarrollar debe facilitar la extensibilidad de nuevos tipos de habitaciones o clientes y a su vez permitir agregar nuevas consultas. También, nuestro cliente, quiere realizar un portal en la web, en donde, los visitantes puedan reservar una o las habitaciones que desee (si el mismo posee tarjeta de crédito). Este debe registrarse al Portal, por el cual el sistema deberá reconocer el tipo de cliente. Actividades: 1. Leer atentamente el enunciado y actividades. 2. Realizar todas las consultas que crean necesarias. 3. Realizar el Diagrama de Casos de Uso. Opcional: Realizar previamente un listado con todos los requerimientos, del cual se van a derivar los casos de uso. 4. Realizar dos Casos de Uso críticos y que no representen funcionalidad de consulta. 5. Realizar los Casos de Prueba de los dos casos de uso anteriores. 6. Realizar el Diagrama de Clases. 7. Realizar el Diagrama de Actividad de alta de reserva. 8. Realizar el Diagrama de Estado de la reserva de una Habitación (en esta actividad puede utilizar supuestos). Diagrama de Casos de Uso Sistema de Reservas «uses» ABM_Administrar Habitaciones Include ADM_Administrar Precio por Tipo de Habitación «uses» «uses» Administrador REP_Obtener Ganancias por Mes ABM_Administrar Cliente «uses» CON_Consultar Cliente «uses» «extends» «uses» CON_Consultar habitaciones REP_Obtener Listado de habitaciones Disponibles «uses» «uses» ACC_Reservar Habitación Recepcionista ACC_Eliminar Reserva Include ACC_Validar Tarjeta de Credito «extends» ACC_Registrar Usuario «uses» «uses» ACC_Reservar Habitación Web Cliente Código ABM01 Nombre del caso de uso Administrar Habitaciones Actor Administrador Frecuencia de utilización Media Objetivo Realizar el alta y baja de habitaciones, ingresando todas las características posibles para el buen funcionamiento del sistema. Realizar modificaciones de los atributos de las mismas. Pre-Condiciones El usuario debe estar identificado en el sistema. Post-Condiciones Se ha dado de alta o baja alguna habitación o modificado algún atributo de las mismas. Curso Normal Crear Habitación 1. El Actor ingresa al Modulo Habitación y selecciona la opción del menú Alta. 2. El sistema muestra la pantalla de “Alta de Habitación”, con los siguiente campos: a. Número de habitación (obligatorio - numérico): este campo identifica en forma univoca a la habitación. Valor por defecto: numero posterior al último número de habitación ingresado. b. Tipo de Habitación (obligatorio - combo): este campo identifica que tipo de habitación se esta creando (ver caso de uso ADM – Administrar Precio por Tipo de Habitación). Valor por defecto: Vacío. c. Titulo Comodidades i. Frigobar (check), indica si la habitación contiene frigobar. Valor por defecto: false / no seleccionado. ii. TV (check), indica si la habitación contiene TV por cable. Valor por defecto: false / no seleccionado. . iii. DVD (check), indica si la habitación contiene un reproductor de DVD. Valor por defecto: false / no seleccionado. . Y las opciones: d. Grabar (habilitada por defecto): guarda los cambios en la base de datos. e. Cancelar (habilitada por defecto): cierra la ventana alta de sistema. 3. El actor ingresa los datos correspondiente e ingresa la opción Grabar. 4. El sistema valida: a. Que los campos obligatorios estén completos. b. Que el número de habitación sea numérico. c. Que el número de habitación no exista. 5. El sistema guarda los datos validos en la base de datos y muestra el mensaje “Se ha creado exitosamente la habitación <número de habitación>.(Aceptar)” 6. El usuario acepta el mensaje. 7. El sistema vuelve a la pantalla “Alta de Habitación”. Eliminar Habitación 8. El Actor ingresa al Modulo Habitación y selecciona la opción Buscar. 9. El sistema muestra la pantalla “Búsqueda de habitación” con el siguiente campo: a. Número de Habitación (obligatorio – combo): Lista todas las habitaciones existentes. Valor por defecto: Vacío. Y la opción: b. Buscar (habilitada una vez seleccionada la habitación) permite iniciar la búsqueda según el parámetro seleccionado. 10. El Actor selecciona el numero de habitación y la opción Buscar. 11. El sistema muestra por debajo de los parámetros de búsqueda los mismos campos que “Alta de Habitación”, pero con los campos completos según la habitación elegida y las opciones: a. Grabar (habilitada una vez modificado algún dato): guarda los cambios en la base de datos. b. Eliminar (habilitada por defecto): elimina de la base de datos la habitación. 12. El Actor selecciona la opción Eliminar. 13. El sistema verifica: a. Que la Habitación no tenga reservas a futuro de la fecha actual. b. Muestra el mensaje: “¿Esta seguro que desea eliminar la Habitación <numero de habitación seleccionada>? (Si/No)”. 14. El Actor selecciona la opción Si. 15. El sistema guarda los datos validos en la base de datos y muestra el mensaje “Se ha eliminado exitosamente la habitación <número de habitación eliminada>.(Aceptar)” 16. El usuario acepta el mensaje. 17. El sistema vuelve a la pantalla “Búsqueda de habitación”. Modificar Habitación 18. El Actor modifica los datos de la pantalla “Búsqueda de habitación” y selecciona la opción Grabar. 19. El sistema realiza las mismas validaciones para el Alta de una Habitación. 20. El sistema guarda las modificaciones en la base de datos y muestra el mensaje “Se ha modificado exitosamente la habitación <número de habitación>.(Aceptar)” 21. El usuario acepta el mensaje. 22. El sistema vuelve a la pantalla “Búsqueda de habitación”. Alternativas A1_El usuario cancela el alta 3.1. El usuario selecciona la opción Cancelar de la pantalla “Alta de Habitación”. 3.2 El Sistema deja sin efecto el alta de habitación y cierra la pantalla “Alta de Habitación”. A2_Campos obligatorios incompletos 4.a.1. El sistema: identifica que los campos obligatorios están incompletos y muestra el mensaje: “El campo <nombre del primer campo obligatorio incompleto> es obligatorio.(Aceptar)” Al aceptar el mensaje, muestra la pantalla “Alta de Habitación”, haciendo foco en el primer campo obligatorio incompleto. A3_Número de Habitación no valido 4.b.1. El sistema: Identifica que el número de habitación ingresado NO es numérico y muestra el siguiente mensaje: “El numero <valor ingresado> no es válido. Ingrese un valor numérico valido. (Aceptar)” Al aceptar el mensaje, muestra la pantalla “Alta de Habitación”, haciendo foco en el campo “Número de habitación”. A4_Número de Habitación existente 4.c.1. El sistema: Identifica que el número de habitación ingresado existe y muestra el siguiente mensaje: “El numero <numero de habitación ingresado> ya existe. Modifique el número ingresado. (Aceptar)” Al aceptar el mensaje, muestra la pantalla “Alta de Habitación”, haciendo foco en el campo “Número de habitación”. A5_Habitación con Reservas futuras 13.a.1 El sistema: Identifica que la habitación ha ingresar posee reservas futuras y muestra el siguiente mensaje: “La habitación <numero de habitación seleccionada> posee reservas futuras. La Habitación no puede ser eliminada. (Aceptar)” Al aceptar el mensaje, muestra la pantalla “Búsqueda de habitación”, sin ninguna habitación seleccionada. NOTA: Depende del análisis realizado se puede dividir el caso de uso “Administrar Habitaciones”, en por ejemplo, “Alta de Habitación”, “Modificar Habitación” o “Eliminar Habitación”, dependiendo de la complejidad de la funcionalidad. Código ACC01 Nombre del caso de uso Reservar Habitación Actor Recepcionista Frecuencia de utilización Alta Objetivo Realizar la alta de una reserva por parte del recepcionista, cuando llega un cliente al mostrador. Pre-Condiciones El usuario debe estar identificado en el sistema y que el cliente exista. Post-Condiciones Se ha dado de alta una reserva. Curso Normal Crear Habitación 1. El Actor ingresa al Modulo Reservas y selecciona la opción del menú Alta. 2. El sistema muestra la pantalla de “Alta de Reserva”, con los siguiente campos: a. Nombre y Apellido (obligatorio - texto): permite ingresar el nombre y apellido del cliente. Valor por defecto: Vacío. b. Forma de Pago (obligatorio - combo): lista la forma de pago existente al día de la reserva. Valor por defecto: efectivo. c. Número de Tarjeta (obligatorio - numérico): permite el número de tarjeta. Esta se habilita si se selecciona la opción “Tarjeta de Crédito” del campo “Forma de Pago”. d. Número de habitación (obligatorio – combo): lista en forma ascendente las habitaciones libres existentes a la fecha de la reserva. Valor por defecto: primera habitación de la lista. Y las opciones: e. Buscar Cliente (habilitada por defecto) Permite buscar un cliente existente. (Ver Caso de Uso CON01_Consultar Cliente) f. Cancelar (habilitada por defecto): cierra la ventana alta “Alta de Reserva”. g. Reservar (habilitada por defecto): Permite efectuar la reservar. 3. El actor ingresa los datos y selecciona la opción Reservar. 4. El sistema valida: a. Que los campos obligatorios estén completos. b. En caso de ser la forma de pago, “Tarjeta de Crédito”, el numero ingresado (Ver Caso de Uso ACC03_Validar Tarjeta de Crédito). 5. El sistema guarda la reserva en la base de datos y Muestra el mensaje: “Se realizo la reserva numero <numero de reserva>” (Aceptar). 6. El usuario acepta el mensaje. 7. El sistema vuelve a la pantalla “Alta de Reserva”. Alternativas A1_El usuario cancela el alta 3.1. El usuario selecciona la opción Cancelar de la pantalla “Alta de Reserva”. 3.2 El Sistema deja sin efecto el alta de habitación y cierra la pantalla ““Alta de Reserva”. A2_Campos obligatorios incompletos 4.a.1. El sistema: identifica que los campos obligatorios están incompletos y muestra el mensaje: “El campo <nombre del primer campo obligatorio incompleto> es obligatorio.(Aceptar)” Al aceptar el mensaje, muestra la pantalla “Alta de Habitación”, haciendo foco en el primer campo obligatorio incompleto. Diagrama de Clases Comodidades Cliente -DNI -Nombre -ID -Descripción Habitacion 1 0..* Reserva 0..* -Nro -Fecha_desde -Fecha_hasta -Nro -Precio 0..* 0..* 0..* ClienteHabitual HabitacionDoble HabitacionSimple HabitacionMatrimonial -Descripcion -Descripcion -Descripcion -Descuento NOTA: El diagrama de clases modela la estructura del sistema, tengan en cuenta que este es inicialmente un modelo conceptual, sobre este diagrama se irán incorporando detalles para llegar al modelo más cercano al diseño del sistema. Un ejemplo en este aspecto lo podemos encontrar en las clases que definen el tipo de habitación, conceptualmente el diagrama muestra la herencia de dichas clases, pero dado que el sistema debe tener la flexibilidad suficiente para incorporar nuevos tipos de habitación sin que esto implique una modificación en el código, deberíamos darle otro tratamiento al tipo de habitación. Cliente -DNI -Nombre -Descuento +Alta_Cliente() +Baja_Cliente() +Modif_Cliente() Habitacion Reserva 1 0..* -Nro -Fecha_desde -Fecha_hasta -Duracion -Nro_Hab -DNI_Cliente +Alta_Reserva() +Baja_Reserva() +Modif_Reserva() +Calc_Duracion() +Calc_Importe() 0..* 0..* -Nro -Precio -Tipo +Alta_Hab() +Baja_Hab() +Modif_Hab() +Mostrar_Foto() +Asignar_comodidades() Comodidades -ID -Descripción 0..* 0..* Diagrama de Estados de una Reserva Activa Vencida Finalizada Cancelada Diagrama de Estados de una Habitación Disponible Reservada Ocupada Limpieza