Buscar
Social
Ofertas laborales ES

Foro sobre Java EE > Ayuda con caso de uso de estudio.

Hol comunidad soy estudiante de programacion, me apasiona, me encontre este enunciado y me parece una super practica para mejorar mis habilidades.

Quisiera que me den una orientacion para tener mejores practicas si es posible

CASO DE ESTUDIO


Enunciado

Se quiere construir un sistema web para la gestión de pedidos de una cadena de restaurantes a nivel nacional, este sistema permitirá incrementar la fuerza de ventas y permitirá abarcar más clientes para la cadena. Este sistema debe soportar el manejo de los productos del catálogo base de la cadena, como también cupones de promoción, y debe soportar promociones dinámicas de acuerdo a la categoría del cliente y de acuerdo a ciertos beneficios particulares ofrecidos por la cadena de restaurantes.

Implemente el siguiente caso de uso:


CU Registrar pedido

Actores

Comprador

Precondiciones:

Ya existe registrado un catálogo de productos en el sistema.

Post Condiciones:

Se registra el pedido en el sistema, para proceder a darle trámite en la sede de la cadena más cercana a la dirección de residencia del comprador.

Datos de entrada:

Datos básicos

Ciudad (Requerido)
Nombre cliente (Requerido)
Cedula (Requerido)
Dirección (Requerido)
Teléfono Fijo (Opcional)
Teléfono Móvil (Requerido)
Tipo de pago (Requerido)
Observaciones sobre el pedido. (Opcional).
Valor cancelado por el cliente (Opcional, aplica para pagos en efectivo).
Cupones de descuento (Opcional).

Datos complejos


Catálogo de productos: Este catálogo es mostrado en una tabla (organizada por categoría de las comidas), acá se muestran los datos básicos de cada producto (nombre, descripción, valor)

Flujo Básico:


1. El sistema muestra la información de la solicitud del pedido por defecto de acuerdo a los datos básicos especificados en las entradas.
2. El comprador diligencia la información de los datos básicos mostrados.
3. El sistema valida los campos requeridos y el respectivo formato de los datos básicos.
4. El sistema despliega los datos complejos.
5. El comprador selecciona uno o varios de los productos del catálogo de productos desplegado.
6. El comprador selecciona la opción “Agregar a pedido”
7. El sistema muestra una ventana modal en donde se confirma la adición de los productos seleccionados al pedido.
8. El comprador confirma la información a agregar.
9. El sistema agrega el o los productos confirmados al carrito de compras.
10. El comprador selecciona la opción “Realizar Pedido”
11. Si se agregaron cupones de descuento, el sistema verifica para que producto(s) aplican y se aplica el descuento particular al valor total del pedido.
12. El sistema valida las promociones a las cuales el cliente derecho (ver reglas de negocio).
13. El sistema aplica el descuento de las promociones que se encontraron en el paso anterior al valor total del pedido.
14. El sistema valida que el valor total del pedido (luego de aplicar los respectivos descuentos) pueda ser cubierto por el valor a cancelar por parte del cliente.
15. El sistema muestra un resumen con todos los datos del pedido (incluyendo el valor de descuentos por promociones y el valor total a pagar ) y presenta la opción “Confirmar datos pedido”
16. El comprador confirma los datos del pedido.
17. El sistema registra los datos del pedido y muestra un mensaje de confirmación confirmando el tiempo estimado (en minutos) para la entrega del pedido.


Supuestos y restricciones.

• Los pasos 4 al 8, pueden ser ejecutados varias veces antes de ejecutar el paso 9.

• Se debe hacer manejo de los errores que se consideren necesarios a nivel de código y en la presentación de mensajes de error al usuario.


Reglas de negocio


Categorías cliente:

Cliente tipo A: Cliente con consumos acumulados en el trimestre de al menos $600.000, a este tipo de cliente se le aplica un descuento del 20 % en todos los pedidos realizados.

Cliente tipo B: Cliente con consumos acumulados en el trimestre de al menos $300.000, a este tipo de cliente se le aplica un descuento del 10 % en todos los pedidos realizados.

Cliente tipo C: Cliente con consumos acumulados en el trimestre de al menos $100.000, a este tipo de cliente se le aplica un descuento del 5 % en todos los pedidos realizados.

Nota: Se tiene en cuenta un trimestre de acuerdo a la fecha actual del sistema.


Días promocionales:

Los martes y jueves las comidas rápidas tienen un 30 % de descuento.
Los lunes, miércoles y jueves se tiene happy hour de consumo en todos los productos (20% de descuento) de 8 a 10 pm.


Nota: Tanto las categorías de los clientes, como los días promocionales son parametrizables dentro del sistema.

febrero 12, 2013 | Unregistered Commenterlinira

Hola, ¿cuál es la pregunta que tienes sobre tu practica?

Un saludo,

febrero 12, 2013 | Unregistered CommenterUnoPorAhi

hola, pues mira ahora ando en la etapa de diseño antes de intentar implementar el CU y ps he creado un modelo E-R intentando organizar mis ideas.. pero ya me he complicado.

he identificado las siguientes entidades :
restaurante, sucursal_restaurante, cliente, pedido ,producto(platos-comida), entre otras..

en mi modelo E-R tengo una relacion N:N entre la tabla pedido y la tabla producto.

segun el enunciado debo hayar el valor total del pedido como lo indica los puntos :

5.El comprador selecciona uno o varios de los productos del catálogo de productos desplegado.
6.El comprador selecciona la opción “Agregar a pedido”
7.El sistema muestra una ventana modal en donde se confirma la adición de los productos seleccionados al pedido.
8.El comprador confirma la información a agregar.
9.El sistema agrega el o los productos confirmados al carrito de compras.
10.El comprador selecciona la opción “Realizar Pedido”

Mi pegunta es como hallar el valor total del pedido si el cliente selecciona mas de un producto.?

me gustaría que me orientaran un poco ya que es el primer caso de uso al que me enfrento para asi sacarle todo el provecho a esta practica.

gracias

febrero 12, 2013 | Unregistered Commenterlinira

Buenas Linira,

Debes evitar al disenar el modelo de datos las relaciones N a N, ya que como comprobaras son muy dificiles de gestionar y producen ineficiencias redundancias (ejemplo: si un pedido tiene varios productos entonces creo varios registros en pedidos por cada producto con el mismo identificador, ah wait! si el identificador tiene que ser unico!, etc). Mas detalle aqui
Lo que tienes que hacer es crear una tabla de relacion (la puedes llamar detalle_pedido o pedido_producto o como quieras) que contenga y relacione el id del pedido, el id del producto y el importe. El modelo seria algo parecido a esto

Una vez utilices ese modelo, para calcular el importe total haces una consulta sobre dicha tabla de relacion utilizando el id de pedido y la funcion SUM de SQL

Un saludo

febrero 13, 2013 | Unregistered CommenterUnoPorAhi

vale muchas gracias ya he resuelto esa duda, ahora estoy implementando el caso de estudio y me surgio esta duda:

el caso de estudio lo quiero hacer usando jsf +ejb +jpa, he creado un dynamic web project para realizar la parte de la presentacion, ahora quiero crear el modelo y mapear las entidades. mi pregunta es: cual es la mejor practica para realizar esto ? debo crear un proyecto EJB Y a ese prooyecto agregarle JPA ? para despues integrar ambos? que el web contenga el proyecto ejb ?

febrero 13, 2013 | Unregistered Commenterlinira

Buenas, teniendo en cuenta que aun estas aprendiendo me parece un autentico suicidio ponerse a trabajar con todo ese stack de tecnologias si no se entiende bien lo que se hace. Ademas, para un caso de uso tan sencillo seria como matar moscas a cañonazos.
Si aun así te animas, la principal referencia a considerar y punto de partida es la especificación Java EE 6 de Oracle: http://docs.oracle.com/javaee/6/tutorial/doc/ donde se explican todas las tecnologias y se aportan ejemplos.

Para saber como usar los asistentes de proyecto, que es lo que preguntas, eso depende de si utilizas Eclipse o Netbeans. En cualquier caso, quien te puede guiar mejor que nadie en la configuración de tu proyecto es el señor Google. Una búsqueda rápida de "Tutorial JSF+EJB+JPA" devuelve los siguientes resultados:

Tutorial JSF+EJB+JPA en Java EE 6 - Netbeans:
http://netbeans.dzone.com/articles/develop-java-ee-6-app-jsf2

Tutorial JSF+EJB+JPA en Java EE 6 - Eclipse:
http://www.javacodegeeks.com/2012/06/full-webapplication-jsf-ejb-jpa-jaas.html

También en la sección de Documentación de Java Hispano encontrarás información interesante que te puede ayudar.

Un saludo y mucha suerte con tu practica

febrero 13, 2013 | Unregistered CommenterUnoPorAhi

vale muchas gracias tomare en cuenta todas las respuestas, gracias por los links.

febrero 13, 2013 | Unregistered Commenterlinira