CarPooling

Enunciado

Se desea crear una aplicación que permita manejar un sistema de CarPooling. La aplicación debe permitir manejar los diferentes servicios ofrecidos, los conductores y todas las carreras asignadas al usuario.

La aplicación maneja 4 servicios con categorías diferentes:

- Categoría Y: Servicio económico. Consta de vehículos que no son utilizados exclusivamente para el transporte de pasajeros. Permite máximo 4 pasajeros.
- Categoría Orange: Servicio de lujo. Consta de vehículos de último modelo que son utilizados exclusivamente para el transporte de pasajeros. Permite máximo 4 pasajeros.
- Categoría Van: Consta de camionetas. Permite hasta 8 pasajeros.
- Categoría Conductor elegido: Se envía un conductor para que conduzca el carro del usuario.

De cada servicio se conoce la siguiente información:

- Categoría: Categoría a la que pertenece el servicio. Puede ser Y, Orange, Van o Conductor elegido.

- Tarifa mínima: Tarifa mínima que se cobra por cada carrera.
- Tarifa tiempo: Tarifa cobrada por minuto de duración de una carrera.
- Tarifa distancia: Tarifa cobrara por cada kilómetro recorrido durante una carrera.
- Imagen: Imagen que representa el servicio.
- Lista de conductores que pertenecen al servicio. No puede haber dos conductores con el mismo número de cédula en la aplicación.

De cada conductor se conoce la siguiente información:

- Nombre del conductor.
- Cédula. Es el identificador único de un conductor.
- Placa del carro conducido por el conductor.
- Modelo el carro conducido por el conductor.
- Foto del conductor.
- Carrera actual del conductor. Un conductor puede o no tener una carrera. Se considera que un conductor está disponible si no tiene una carrera asignada.

De cada carrera se conoce:

- Nombre del usuario que pidió la carrera.
- Teléfono del usuario que pidió la carrera.
- Medio de pago. Este puede ser efectivo o tarjeta.
- Lugar de origen de la carrera.
- Lugar de destino de la carrera.
- Estado de la carrera: Indica si la carrera está en camino o terminada.

Para asignar una carrera, se debe indicar el tipo de servicio que el usuario desea utilizar. La aplicación asignará la carrera al primer conductor del servicio que esté disponible.


Cuando se termina una carrera, la aplicación permite conocer el costo de la misma. Para esto, el usuario debe ingresar la duración en minutos de la carrera y la distancia en kilómetros recorrida durante la carrera. Este costo se obtiene sumando la tarifa mínima y la tarifa adicional por la carrera, de la siguiente manera.

costoCarrera=tarifaMinima+costoAdicional

donde

costoAdicional=tarifaTiempo*duracion+tarifaDistancia*distancia

Una vez se termina la carrera y se hace el pago correspondiente, la aplicación permite terminar el servicio, dejando al conductor disponible para nuevas asignaciones.

Adicionalmente, se está haciendo un estudio sobre los modelos de carro utilizados por los conductores. Par esto, se desea conocer cuál es el modelo de carro más utilizado (más popular) por los conductores de un servicio dado.

La aplicación debe permitir:

1. Agregar un nuevo conductor.
2. Eliminar un conductor.
3. Asignar una carrera a un conductor.
4. Terminar la carrera actual de un conductor.
5. Terminar el servicio de un conductor.
6. Buscar un conductor dada su cédula.
7. Buscar la información de una carrera dado el número telefónico del usuario.
8. Conocer el modelo de carro más popular.
9. Visualizar la información de un servicio.
10. Visualizar la información de un conductor.

Interfaz

 n3 carpooling

Demo