Está en la página 1de 8

Universidad de Cuenca

Programacin 3 G1

Proyecto FastDelivery

Christian Fabian Barreto Paredes

Resumen

El proyecto FastDelivery es un sistema de transporte y comercio que permite la entrega


rpida y eficiente de un producto a diferentes puntos de la ciudad de Cuenca, para ello el
cliente debe registrar en el sistema sus datos y especificar la direccin exacta de donde
desea que se realice dicha entrega. Una de las ventajas de este sistema es que permite al
cliente visualizar la ruta que est recorriendo el vehculo de la compaa, y determinar el
lugar especfico en el que se encuentra en un determinado momento mediante un sistema
de rastreo.

Introduccin

En la actualidad debido a los cambios continuos del mercado y al avance de la tecnologa


las personas han adoptado nuevas formas de realizar sus compras, mediante el uso del
internet, sin necesidad de movilizarse. Por lo que se ha visto la necesidad de desarrollar
sistemas que permitan el reparto de productos a domicilio.
El objetivo de este proyecto es implementar un Software que permita realizar la entrega
rpida y eficiente de un producto a diferentes puntos de la ciudad de Cuenca, adems de
que se pueda realizar un control del comportamiento del vehculo de entrega mediante un
sistema de rastreo, optimizando el comercio.

Materiales y Mtodos
Google Maps
API Google StaticMap
OneDrive
GoogleDriv
IDE NetBeans
YouTube
Java
GitHub
Zootero

Funcionamiento

El proyecto est implementado por programacin por capas que consta de 5 paquetes:
datos. - este paquete est conformado por una clase llamada Cliente esta se encarga de
almacenar los datos que se registra por el cliente: Nombre y Ubicacin. Estos datos se
almacenan en un ArrayList.
imgenes. - en este paquete se almacena todas las imgenes usadas para la
implementacin del sistema.
lgica. - este paquete est conformado por 3 clases:

Distancia. - en esta clase se tiene 2 mtodos: un mtodo para calcular la ruta que va a
recorrer rutaOptima() este mtodo almacena en un ArrayList los puntos a recorrer tomando
las distancias ms cortas a travs de otro mtodo llamado distancia() este mtodo tiene
como parmetro un punto inicial y final
RunProyecto. - en esta clase se tiene el mtodo main() donde se va a ejecutar el sistema.
Rutas. - en esta clases se tiene un mtodo dibujarRuta() este mtodo retorna una imagen
con la traza de la ruta ptima en el mapa, que se obtiene a travs de la clase Route que se
ve ms adelante.

maps. - este paquete est conformado por 3 clases que interactan con las apis de google
maps:

MapsJava. - realiza todas las peticiones HTTP realizadas.


Route. - Devuelve la ruta especificada a partir de una direccin de origen y una de destino.
StaicMaps. - Crea un mapa esttico con las caractersticas indicadas con los diferentes
parmetros que se pases a los mtodos: getStaticMap() este mtodo crea un mapa con
una sola ubicacin y el mtodo getStaticMapRoute() crea un mapa con un grupo de
ubicaciones.

vistas. - este paquete est conformado por 5 clases que son las interfaces que va apreciar
el usuario para interactuar con el sistema.

Guardar. - esta interfaz sirve para notificar mensajes, interacta con la interfaz de Registro
al momento de guardar un registro.
Informacin. - esta interfaz sirve para notificar mensajes, interacta con la interfaz de
Registro al momento que los campos de guardar un registro y generar una ubicacin estn
vacos.
Inicio. - Es la interfaz principal del sistema, en esta interfaz se encarga de invocar a las
otras interfaces: Recorrido y Registro, y de terminar la ejecucin en el sistema.
Recorrido. - en esta interfaz se va a registrar los datos del cliente, interacta con la clase
Cliente del paquete datos y genera un mapa esttico a travs de la clase StaticMaps del
paquete maps.
Registro. - esta interfaz se encarga de generar la ruta en el mapa a travs de la clase
StaticMaps del paquete maps.

El sistema utiliza las apis de google maps para generar Mapas estticos para implementar
en el cdigo fuente del sistema es necesario generar URL para enviar al servidor de google
maps y obtener como respuesta una imagen que nos muestre un mapa con las peticiones
que se pida en los parmetros de la programacin al momento de generar la URL.

Manual de usuario
El sistema consta de 3 interfaces de usuario, en la primera interfaz se muestra un men
donde el usuario apreciar 3 opciones: una para el registro de datos y otra que le permite
saber el recorrido de la entrega hacia su domicilio y una ltima opcin que le permite salir
del sistema. La segunda interfaz se compone de: 2 campos de texto, un campo que guarda
una imagen y 5 botones. Por ltimo, se tiene un interfaz que consta de: 1 un campo que
guarda una imagen y 2 botones.

Funcionamiento de la primera interfaz(Men).

Una vez iniciado el sistema el usuario aprecia una interfaz que le permite escoger una entre
tres opciones:

Registro. - Cuando elige esta opcin el sistema le va a enlazar a la segunda


interfaz

Recorrido. - Cuando elige esta opcin el sistema le va a enlazar a la tercera


interfaz

Salir. - Si elige esta opcin el sistema se cierra en su totalidad

Funcionamiento de la segunda interfaz(Registro).

En esta interfaz se va a registrar y guardar los datos del cliente o usuario, los datos que
debe ingresar el usuario son:
Nombre. - nombre del cliente al cual se registra la entrega.
Ubicacin. - el cliente ingresa su ubicacin entre un cruce de calles.
Cuando se ingresa los datos del campo ubicacin el usuario puede verificar la ubicacin de

su domicilio pulsando el botn Generar este botn genera una imagen que le
permite ver la ubicacin en el mapa de la ciudad, el usuario puede hacer uso de 2 botones

Zoom que le permite acercar como alejar la vista del mapa.


Cuando el usuario o cliente a verificado su ubicacin puede guardar la informacin dando

click en el botn Guardar en el cual se indicar mediante un mensaje que se ha


guardado los datos satisfactoriamente.
Si el campo Ubicacin no es llenado al momento de generar la ubicacin en el mapa le
asomara un mensaje diciendo que hay campos vacos que requieren ser llenados de la
misma manera al momento de guardar los campos Ubicacin y Nombre deben estar llenos
caso contrario le mostrar el mismo mensaje.

Una vez realizado el registro mediante un botn Inicio regresamos a la interfaz


principal.

Funcionamiento de la tercera interfaz(Recorrido).

En esta interfaz se va a mostrar el camino que va a recorrer el vehculo de la entrega, para

que el usuario pueda visualizar este recorrido debe dar click sobre el botn
Recorrido y podr visualizar los puntos por donde va a recorrer el vehculo mediante una
imagen del mapa y para salir de esta interfaz y regresar a la interfaz principal damos click

sobre el botn Inicio.

Conclusiones

Gracias a este proyecto se ha podido investigar acerca de las apis de google map su
funcionamiento y cmo interacta con el lenguaje java.
Con este proyecto se ha podido investigar y profundizar conocimientos como la
programacin en capas, la utilizacin de objetos para realizar una interfaz usuaria
como Java Swing.
En el proyecto no se pudo realizar la parte de simulacin de GPS o rastreo ya que
nuestro sistema est implementado para aplicaciones de escritorio y se requiere
utilizar mapas de forma esttica obtenido imgenes a travs del servidor web de
google maps.

Referencias

Angel Vzquez Patio. (17:36:52 UTC). Programacin 3: programacin por capas.

Ingeniera. Recuperado a partir de https://es.slideshare.net/angenio2/programacin-3-

programacin-por-capas

Annimo. (2013, octubre 11). Java: API Google Maps para Java. Recuperado a partir de

http://algoimagen.blogspot.com.es/2013/10/java-api-google-maps-para-java.html

Blog-VB.NET. (2013a). API Google Maps Java. Recuperado a partir de


https://youtu.be/G306PbjhC-g

Blog-VB.NET. (2013b). API Google Maps Java II. Recuperado a partir de

https://youtu.be/NbB3bnYQ2gc

Google Maps API. (2017, de abril de). Gua del desarrollador de Google Static. Recuperado

a partir de https://developers.google.com/maps/documentation/static-maps/intro?

hl=es-419

Luis Joyanes Aguilar, & Ignacio Zahanero Martinez. (2008). Estructuras de datos en Java

(primera). Madrid: Mc Graw Hill.

pildorasinformaticas. (2014). Curso Java. Mtodos Static. Recuperado a partir de

https://youtu.be/V0wIZ-OglsY?list=PLU8oAlHdN5BktAXdEVCLUYzvDyqRQJ2lk

Figuras
Figura 1. Interfaz principal.

Figura 2. Interfaz de registro.

Figura 3. Interfaz de recorrido.

Figura 4. Interfaz notificacin-guardar.


Figura 5. Interfaz notificacin-informacin.

Seccin de cdigo

Algoritmo para encontrar la ruta ptima:

public ArrayList<String> rutaOptima() throws IOException {


String inicio, aux = "";
double distancia;
ArrayList ubicaciones = new ArrayList<String>();
ArrayList ubicacion = new ArrayList<String>();
ArrayList recorrido = new ArrayList<String>();
ubicaciones=Cliente.getUbicacion();
for (int i = 0; i < ubicaciones.size(); i++) {
ubicacion.add(""+ubicaciones.get(i));
}
inicio = "" + ubicacion.get(0);
while (ubicacion.size() != 1) {
distancia = 10000;
recorrido.add(inicio);
for (int i = 0; i < ubicacion.size(); i++) {

if (!inicio.equals(ubicacion.get(i)) && distancia > distancia(inicio, "" +


ubicacion.get(i))) {
distancia = distancia(inicio, "" + ubicacion.get(i));
aux = "" + ubicacion.get(i);
}
}
ubicacion.remove(inicio);
inicio = aux;
}
recorrido.add(ubicacion.get(ubicacion.size() - 1));
ubicacion.remove(ubicacion.get(ubicacion.size() - 1));
return recorrido;
}

Algoritmo para dibujar la ruta en el mapa:


public static Image dibujarRuta() throws UnsupportedEncodingException, IOException {
String marcador = "";
int etiqueta = 1;
Distancia distancia = new Distancia();
ArrayList ubicacion = new ArrayList<String>();
ubicacion=distancia.rutaOptima();
for (int i = 0; i < ubicacion.size(); i++) {
if (i == 0) {
marcador += "&markers=color:green|label:" + etiqueta + "|" +
URLEncoder.encode("" + ubicacion.get(i), "utf-8");
} else if (i == ubicacion.size() - 1) {
marcador += "&markers=color:red|label:" + etiqueta + "|" +
URLEncoder.encode("" + ubicacion.get(i), "utf-8");
} else {
marcador += "&markers=color:orange|label:" + etiqueta + "|" +
URLEncoder.encode("" + ubicacion.get(i), "utf-8");
}
etiqueta++;
}

String[] puntosVisita;
Route rutas = new Route();
String[][] camino;
Route.mode modoRuta = Route.mode.driving;
puntosVisita = new String[2];
try {
camino = rutas.getRoute("" + ubicacion.get(0), "" + ubicacion.get(ubicacion.size() -
1), ubicacion, true, modoRuta, Route.avoids.nothing);
String resultado = rutas.getGeneralPolyline();
StaticMaps map = new StaticMaps();
return map.getStaticMapRoute(new Dimension(950, 950), 1, marcador,
StaticMaps.Format.png, StaticMaps.Maptype.roadmap, resultado);
} catch (Exception e) {
System.err.println("Revise la conexion a internet");
return null;
}

También podría gustarte