You are on page 1of 28

INTRODUCCIN

Una de las aplicaciones ms interesantes y potentes de la memoria dinmica y de los punteros son, sin duda, las estructuras dinmicas de datos. En muchas ocasiones se necesitan estructuras que puedan cambiar de tamao durante la ejecucin del programa. Por supuesto, podemos crear arrays dinmicos, pero una vez creados, tu tamao tambin ser fijo, y para hacer que crezcan o disminuyan de tamao, deberemos reconstruirlos desde el principio. Las estructuras dinmicas nos permiten crear estructuras de datos que se adapten a las necesidades reales a las que suelen enfrentarse nuestros programas. Pero no slo eso, como veremos, tambin nos permitir crear estructuras de datos muy flexibles, ya sea en cuanto al orden, la estructura interna o las relaciones entre los elementos que las componen. Las estructuras de datos estn compuestas de otras pequeas estructuras a las que llamaremos nodos o elementos, que agrupan los datos con los que trabajar nuestro programa y adems uno o ms punteros autorreferenciales, es decir, punteros a objetos del mismo tipo nodo. En esta investigacin crearemos y documentaremos un mdulo de control de colas o turnos en java.

Presentamos esta investigacin basados en investigacin y dudas que se nos han planteado, que tiene como finalidad reforzar los conocimientos de colas, pilas y memoria dinmica en Lenguaje java para aplicarlos a necesidades especficas de la materia estructura de datos.

MARCO CONCEPTUAL

Las razones que nos llevaron a realizar esta investigacin principalmente fue validar los conocimientos bsicos del curso de estructura de datos, recibidos durante nuestros estudios en la Universidad Mariano Glvez en forma lgica, crtica y analticamente para la solucin de problemas en los diferentes necesidades que se plantearan a lo largo de la carrera, con modelos de solucin sencilla. Facilitarles a los estudiantes el entendimiento del manejo de pilas, colas y memoria dinmica para que el aprendizaje de las estructuras de datos, mediante el uso de documentacin de un mdulo de control de colas o turnos en java, en el trabajo. Le mostramos al estudiante paso a paso como se construye el programa as estimulando el pensamiento crtico. Proporcionamos un programa de control de colas o turnos que ejercita la construccin de conocimiento, que permita discernir sobre la base conceptual manejo de memoria dinmica. En el trabajo tambin Exploramos herramientas moderna con el uso de java convencional en los que se pida al estudiante su interpretacin y anlisis como un medio para entender relaciones matemticas. La importancia de los temas investigados es principalmente que nos permite Reforzar los conceptos de manejo colas, pilas y memoria dinmica, sus relaciones y sus aplicaciones a problemas orientados hacia la ingeniera. Solucionar

problemas a travs de las diferentes estrategias de programacin y mediante la solucin de problemas, usando modelos de programacin de java optimizacin de los recursos que tenga a su disposicin para una

MARCO METODOLGICO
El propsito fundamental de la presente investigacin, es contribuir al entendimiento de pilas, colas y memoria dinmica, ya que generalmente traemos problemas desde la programacin bsica, a travs de una propuesta que propicie el desarrollo de habilidades de lgica para todo estudiante de Ingeniera que comienza, revisar y desarrollar conceptos y procedimientos de programacin.

METODOLOGA
Se consider el mtodo cientfico porque proporciona lineamientos lgicos en la investigacin, con la finalidad de alcanzar los resultados concluyentes que fueron analizados cientficamente, lo que nos permiti determinar las causas que originaron el problema del estudio. Se elabor un trabajo de forma Explicativa y explicativa y concluyente en el rea de estructura de datos de la Universidad Mariano Glvez.

MARCO TERICO
Todo problema de investigacin se da dentro de un conjunto de proposiciones ms o menos relacionadas entre s, que definen trminos de programacin que se logran aplicar a la carrera de ingeniera. De acuerdo con sus contenidos y con sus niveles de elaboracin, est diseado con el fin de poder explicar lo ms mnimo y lograr luego un nivel ms profesional con el entendimiento. Ya que la informacin que se encuentra plasmada con el ideal de poder de poder facilitar el aprendizaje personal como profesional en el uso de java, pilas, colas y memoria dinmica.

INFORME DE INVESTIGACIN
PUNTOS DEL PROGRAMA RELACIONADOS CON EL TEMA
El foco de nuestra investigacin est dirigido nicamente a un tema en especfico del programa de estructura de datos de la universidad mariano Glvez, como lo es pilas, colas y memoria dinmica, nuestra investigacin se centra en la

explicacin breve y bien formulada de los conceptos bsicos documentando el programa, en la investigacin se utiliza lo visto en curso de estructura de datos como lo son secuencias, pasos y estructura de la solucin de problemas.

JUSTIFICACIN DE LA INVESTIGACIN
Decidimos el siguiente proyecto de investigacin debido a que prcticamente toda teora en las ciencias de la comunicacin e ingeniera es formulada en trminos de programacin, por lo que es fundamental para todo estudiante de Ingeniera que comienza, revisar y desarrollar conceptos y estructuras de programacin avanzada.

VENTAJA COMPETITIVA DE LA INVESTIGACIN


El plus que aporta nuestra investigacin es que el estudiante cuenta con ella con una documentacin completa mdulo de control de colas o turnos en java. con una recopilacin de los puntos ms importantes para seguir los pasos a seguir para realizar y solucionar problemas de estructura de datos y memoria dinmica . Tambin ayuda a que el estudiante desarrolle su capacidad de anlisis y pensamiento lgico para emplearlos en la formulacin y resolucin de problemas de programacin de Ingeniera, haciendo nfasis en los conceptos que servirn como base para el estudio la memoria dinmica y programacin avanzada.

OBJETIVOS DE APRENDIZAJE DE LA INVESTIGACIN

Identificar la forma correcta de manejar Memoria Dinmica, pilas y colas.

Decidir de manera correcta y de la forma ms eficiente, para manejar la estructura de datos cuando y como se deben de aplicar.

Justificar cada paso que realizan, cuando se encuentren frente a un ejercicio en el cual deban aplicar pilas, colas y memoria dinmica dentro de una estructura de datos en la programacin de java.

/*clase para generar las estaciones */ package Datos; /** * * @author George */ public class Estaciones { public String getEstatus() { return estatus; } public void setEstatus(String estatus) { this.estatus = estatus; } String estatus;

public String getId_estacion() { return id_estacion; } public void setId_estacion(String id_estacion) { this.id_estacion = id_estacion; } public String getNombre_estacion() { return nombre_estacion; } public void setNombre_estacion(String nombre_estacion) { this.nombre_estacion = nombre_estacion; } String id_estacion; String nombre_estacion; }

/*clase para poder generar los servicios * *. */ package Datos; /** * * @author George */ public class Servicios { public String getId() { return id; } public void setId(String id) { this.id = id; } public String getNombre_servicio() { return nombre_servicio; } public void setNombre_servicio(String nombre_servicio) {

this.nombre_servicio = nombre_servicio; } String id; String nombre_servicio;

/*Clase para generar los tickets */ package Datos; /** * * @author George */ public class Ticket { // estructura de fecha YYYY-MM-DD Estructura minutos HH:MM:SS hora final default 00:00:00

//variable interna de contador private int ticket; private String servicio; private String hora_inicio; private String hora_final; String No_ticket; //Campos para controlar la funcionalidad String usuario; String Estatus; String fecha; // opciones del camo Estatus "1. EN COLA, ATENDIENDO, FINALIZADO" public void setEstatus(String Estatus) { this.Estatus = Estatus; }

public String getEstatus() { return Estatus; } public String getFecha() { return fecha; } public void setFecha(String fecha) { this.fecha = fecha; } public String getUsuario() { return usuario; } public void setUsuario(String usuario) { this.usuario = usuario; }

// generador de tickets public void Genera_No_ticket(String servicio, int ticket) { No_ticket=servicio+ticket+""; this.No_ticket = No_ticket; }

//lectura de tickets desde DB public void setNo_ticket(String No_ticket) { this.No_ticket = No_ticket; } public String getNo_ticket() {

return No_ticket; } public String getHora_final() { return hora_final; } public void setHora_final(String Hora_final) { if (Hora_final.equals("")){ this.hora_final="00:00:00"; }else { this.hora_final = Hora_final; }} public String getHora_inicio() { return hora_inicio; } public void setHora_inicio(String Hora_inicio) { if (Hora_inicio.equals("")){ this.hora_inicio="00:00:00"; } else{ this.hora_inicio = Hora_inicio; }} public String getServicio() { return servicio; }

/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package Funcionalidad; /** * * Aca se encuentra toda la funcionalidad para consultar y grabar en la base de datos */ import Datos.Estaciones; import Datos.Servicios; import Datos.Ticket; import java.sql.*; import java.util.Vector; public class ConexionBasedatos {

// variables para conexion

public String db="costumer_service"; public String url="jdbc:mysql://127.0.0.1/"+db; public String user="root"; public String pass="root"; Connection link=null;

public Connection Conectar(){ try{ Class.forName("org.gjt.mm.mysql.Driver"); link=DriverManager.getConnection(this.url,this.user, this.pass); } catch(Exception e){ System.out.println(e); } return link; } // metodos para la parte de record public void graba_ticket(Ticket x){ Conectar(); if (x!=null){

try{ Statement stmt=link.createStatement(); stmt.executeUpdate("INSERT INTO transacciones(fecha, no_ticket, hora_inicio, hora_final, " + "usuario, Estatus)" +"VALUES('"+x.getFecha()+"','"+x.getNo_ticket()+"','"+x.getHora_inicio()+"','" +x.getHora_final()+"','"+x.getUsuario()+"','"+x.getEstatus()+"')"); }catch (SQLException e){System.out.println(e);}

}else System.out.println("no hay datos para grabar");

public Vector Consulta_servicios(){ Vector respuesta=null; Conectar(); Servicios lista=null; Vector listado_servicios=null; try{ Statement stmt= link.createStatement();

ResultSet rs=stmt.executeQuery("SELECT * FROM servicios "); listado_servicios = new Vector(); while(rs.next()){ Servicios temp=new Servicios(); temp.setId(rs.getString("id")); temp.setNombre_servicio(rs.getString("nombre_servicio")); listado_servicios.addElement(temp); } }catch(SQLException e){ System.out.println(e); } return listado_servicios; } //Query para estaciones public void Consulta_Estaciones(){ Conectar(); Vector listado_Estaciones=null; Estaciones lista=null; try{ Statement stmt= link.createStatement(); ResultSet rs=stmt.executeQuery("SELECT * FROM estaciones "); listado_Estaciones = new Vector(); while(rs.next()){ Estaciones temp=new Estaciones(); temp.setId_estacion(rs.getString("id_estacion")); temp.setNombre_estacion(rs.getString("nombre_Estacion")); temp.setEstatus(rs.getString("estatus")); listado_Estaciones.addElement(temp); } }catch(SQLException e){ System.out.println(e); }

for (int i=0; i<listado_Estaciones.size(); i++){ lista = (Estaciones) listado_Estaciones.elementAt(i); System.out.println(lista.getId_estacion()); System.out.println(lista.getNombre_estacion()); System.out.println(lista.getEstatus()); }

public Vector Lista_de_tickets(String x){ Conectar(); Vector listado_Ticket=null; Ticket lista=null; try{ Statement stmt= link.createStatement();

ResultSet rs=stmt.executeQuery("SELECT * FROM transacciones WHERE Estatus='"+x+"' ");

listado_Ticket = new Vector(); while(rs.next()){ Ticket temp=new Ticket(); temp.setFecha(rs.getString("fecha")); temp.setNo_ticket(rs.getString("no_ticket")); temp.setHora_inicio(rs.getString("hora_inicio")); temp.setHora_final(rs.getString("hora_final")); temp.setUsuario(rs.getString("usuario")); temp.setEstatus(rs.getString("estatus")); listado_Ticket.addElement(temp); } }catch(SQLException e){ System.out.println(e); } return listado_Ticket; } public void InsertaServicio(String x , String y){ Conectar(); if (x!=null&& y!= null){

try{ Statement stmt=link.createStatement(); stmt.executeUpdate("INSERT INTO servicios(id, " + " nombre_servicio)" +"VALUES('"+x+"','"+y+"')"); }catch (SQLException e){System.out.println(e);}

}else System.out.println("no hay datos para grabar");

} public void UpdateServicio(String x , String y,String xx , String yy){ Conectar(); if (x!=null && y!= null && xx!=null && yy!=null){

try{ Statement stmt=link.createStatement(); // Prepare a statement to update a record //String sql = "UPDATE servicios SET id='"+xx+"' WHERE id = '"+x+"'" ; String sql= "UPDATE servicios SET nombre_servicio='"+yy+"' WHERE nombre_servicio = '"+y+"'" ; String sql2= "UPDATE servicios SET id='"+xx+"' WHERE id = '"+x+"'" ;

// Execute the insert statement int updateCount = stmt.executeUpdate(sql); int updateCount2= stmt.executeUpdate(sql2); //int updateCount2= stmt.executeUpdate(sql1) ; // updateCount contains the number of updated rows }catch (SQLException e){System.out.println(e);}

}else System.out.println("no hay datos para grabar");

} public void DeleteServicio(String x ){ Conectar(); if (x!=null){

try{ String sql = "DELETE FROM servicios WHERE id = ?"; String Id = x; // Create a statement object. We use PreparedStatement here. PreparedStatement statement = link.prepareStatement(sql); // Pass a value of a userId that will tell the database which // records in the database to be deleted. Remember that when // using a statement object the indext parameter is start from // 1 not 0 as in the Java array data type index. statement.setString(1, Id); // Tell the statement to execute the command. The executeUpdate() // method for a delete command returns number of records deleted // as the command executed in the database. If no records was // deleted it will simply return 0 int rows = statement.executeUpdate(); System.out.println(rows + " record(s) deleted."); }catch(Exception e){}

}else System.out.println("no hay datos para grabar");

} public void InsertaUsuario(String x , String y,String w, String z){ Conectar(); // if (x!=null&& y!= null){

try{

Statement stmt=link.createStatement(); stmt.executeUpdate("INSERT INTO usuarios (user_id, " + " password,nombre,apellido)" +"VALUES('"+x+"','"+y+"','"+w+"','"+z+"')"); }catch (SQLException e){System.out.println(e);}

//}else //System.out.println("no hay datos para grabar");

} public void DeleteUsuario(String x ){ Conectar(); if (x!=null){

try{ String sql = "DELETE FROM usuarios WHERE user_id = ?"; String Id = x; // Create a statement object. We use PreparedStatement here. PreparedStatement statement = link.prepareStatement(sql); // Pass a value of a userId that will tell the database which // records in the database to be deleted. Remember that when // using a statement object the indext parameter is start from // 1 not 0 as in the Java array data type index. statement.setString(1, Id);

// Tell the statement to execute the command. The executeUpdate() // method for a delete command returns number of records deleted // as the command executed in the database. If no records was // deleted it will simply return 0 int rows = statement.executeUpdate(); System.out.println(rows + " record(s) deleted."); }catch(Exception e){}

}else System.out.println("no hay datos para grabar");

} public void Actualiza_Estatusticket(String user, String Ticket, String Estatus){ GeneraTicket hora_final =new GeneraTicket(); String Hora_final;

if (Estatus.equals("Atendiendo")){ Hora_final="00:00:00"; }else {

Hora_final=hora_final.regresa_hora(); }

Conectar(); if (Ticket !=null) { try{ Statement stmt=link.createStatement();

stmt.executeUpdate("UPDATE transacciones set usuario='"+user+"', Estatus='"+Estatus+"', hora_final='"+Hora_final+"'" + "WHERE no_ticket='"+Ticket+"'" );

}catch (SQLException e){System.out.println(e);}

}else System.out.println("no hay datos para grabar");

} public void InsertarEstacion(String x , String y,String w){ Conectar(); if (x!=null&& y!= null){

try{ Statement stmt=link.createStatement(); stmt.executeUpdate("INSERT estaciones(id_estacion, " + " nombre_estacion,estatus)" +"VALUES('"+x+"','"+y+"','"+w+"')"); }catch (SQLException e){System.out.println(e);}

}else System.out.println("no hay datos para grabar");

} /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package Funcionalidad; /** * * @author George */ import Sonido.separaString; import Datos.Ticket; import Login.Principal;

import forms.Funcionalidad_DispensaTicket; import java.awt.print.PrinterException; import java.awt.print.PrinterJob; import java.util.*; import java.util.Date; import java.sql.*; import java.util.logging.Level; import javax.swing.JDialog; import javax.swing.JFrame; public class Estructuras_final { Vector servicios=null; Connection conn=null;

/** * Aqui se encuentra el metodo principal de main donde est el acceso a la conexin y la llamada a todos lo objetos de l */las clases. public static void main(String[] args) { // TODO code application logic here // // separaString voz = new separaString(); voz.Obtener_sonido("A1548978"); new Principal().setVisible(true);

GeneraTicket generador_ticket=new GeneraTicket(); Ticket temp = new Ticket(); temp=generador_ticket.generar_ticket("B"); //ingresa el servicio del que quiere generar el ticket

System.out.println("hora "+temp.getHora_inicio()); System.out.println("ticket "+temp.getNo_ticket()); System.out.println("fecha 1 "+generador_ticket.regresa_fecha());

ConexionBasedatos conexion = new ConexionBasedatos(); temp.setFecha(generador_ticket.regresa_fecha()); //YYY-MM-DD //conexion.graba_ticket(temp); System.out.println(temp.getFecha()+" esta es la fecha"); //conexion.Conectar();

conexion.Consulta_servicios(); conexion.Consulta_Estaciones(); conexion.Lista_de_tickets("Atendiendo"); cola cola1 = new cola();

// Logger.getLogger(PrintMe.class.getName()).log(Level.SEVERE, null, ex); } }

/* * * clase que genera los tickets. */ package Funcionalidad; import Datos.Ticket; import java.util.Calendar;

import java.util.Random; /** * * @author George */ public class GeneraTicket { int auxx;

public int generarNumero(){ auxx++; int aux=auxx; return aux;

} public Ticket generar_ticket(String Servicio){ Ticket respuesta=new Ticket(); //correlativo para ticket // int aux; // aux=generarNumero(); Random rnd = new Random(); int aux= rnd.nextInt(100) ;

//asignacion de valores a variables respuesta.Genera_No_ticket( Servicio,aux); respuesta.setHora_inicio(regresa_hora()); respuesta.setHora_final(""); respuesta.setUsuario(""); respuesta.setEstatus("En cola"); respuesta.setUsuario(""); return respuesta; }

// regresa hora del sistema cuando se genero el ticket public String regresa_hora(){ String hora_inicio=null; Calendar calendario =Calendar.getInstance(); int hora= calendario.get(Calendar.HOUR); int min=calendario.get(Calendar.MINUTE); int sec=calendario.get(Calendar.SECOND); hora_inicio=(hora+":"+min+":"+sec); return hora_inicio; }

public String regresa_fecha(){ String fecha= null; Calendar calendario =Calendar.getInstance(); int anio =calendario.get(Calendar.YEAR); int mes=calendario.get(Calendar.MONTH); int dia =calendario.get(Calendar.DAY_OF_MONTH); fecha =(anio+"/"+mes+"/"+dia);

return fecha; }

} /* * * Genera nuevos servicios para ser agregados a la base de datos. */ package Funcionalidad; /** * * @author George */ public class ServiciosDisponibles { ConexionBasedatos conexion= new ConexionBasedatos();

public void muesra_servicios(){

/* * * Objeto que manda a la imprimir el ticket generado. */ package Impresiones; import java.awt.Graphics; import java.awt.print.PageFormat; import java.awt.print.Printable; public class PrintObject implements Printable { private String gg; public PrintObject(String g){

gg=g; }

@Override public int print (Graphics g, PageFormat f, int pageIndex) { if (pageIndex == 0) {

g.drawString(gg, 100,100); // Draw the letter 1 at pixel coordinates (100,100) return PAGE_EXISTS; }else return NO_SUCH_PAGE; } }

/* * Clase que hace la consulta si el usuario exite * */ package Login; import Funcionalidad.*; import java.sql.*; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JOptionPane; /** * @author heinz */ public class Consultas { // objeto para conectar ConexionBasedatos con=new ConexionBasedatos(); //variables de conectar Connection conect=null; Statement st=null; ResultSet rs=null; String query; public boolean verificar (String user, String pwr) { int sw=0; query = "select * from usuarios where nombre='"+user+"' and password='"+pwr+"'"; try { conect=con.Conectar(); st=conect.createStatement(); rs=st.executeQuery(query); while (rs.next()){ if (rs.getString(1)==null) sw=0; else sw=1; } } catch (SQLException ex) { JOptionPane.showMessageDialog(null,"Error sql"+ ex); } if (sw==1)return true; else return false; } }

/* * Clase principal para reproducir el audio en la llamada de tickets. * */ ackage Sonido; import javazoom.jl.player.Player; public class Sonido { public void reproducirAudio(String archivo) { try { Player player = new Player(getClass().getResourceAsStream(archivo)); player.play(); player.close(); } catch (Exception e) {

System.out.println("Error al reproducir el audio"); } } } import javax.swing.*; public class separaString { public void Obtener_sonido(String x){

char numero1; numero1=x.charAt(1); char letra[]=new char[10]; Sonido sonido1 = new Sonido(); sonido1.reproducirAudio("/recursos/ticket.mp3"); for ( int j=0; j < x.length(); j++) { letra[j]= x.charAt (j); switch(letra[j]) {

case '1': sonido1.reproducirAudio("/recursos/UNO.mp3"); break; case '2': sonido1.reproducirAudio("/recursos/DOS.mp3"); break; case '3': sonido1.reproducirAudio("/recursos/TRES.mp3"); break; case '4': sonido1.reproducirAudio("/recursos/CUATRO.mp3"); break; case '5': sonido1.reproducirAudio("/recursos/CINCO.mp3"); break; case '6': sonido1.reproducirAudio("/recursos/SEIS.mp3"); break; case '7': sonido1.reproducirAudio("/recursos/SIETE.mp3"); break; case '8': sonido1.reproducirAudio("/recursos/OCHO.mp3"); break; case '9': sonido1.reproducirAudio("/recursos/NUEVE.mp3"); break; case '0': sonido1.reproducirAudio("/recursos/CERO.mp3"); break; case 'A': sonido1.reproducirAudio("/recursos/A.mp3"); break; case 'B': sonido1.reproducirAudio("/recursos/B.mp3"); break; case 'C': sonido1.reproducirAudio("/recursos/C.mp3"); break; }// fin de swithc

} sonido1.reproducirAudio("/recursos/pasar.mp3"); switch(numero1) {

case '1': sonido1.reproducirAudio("/recursos/UNO.mp3"); break; case '2': sonido1.reproducirAudio("/recursos/DOS.mp3"); break; case '3': sonido1.reproducirAudio("/recursos/TRES.mp3"); break; case '4': sonido1.reproducirAudio("/recursos/CUATRO.mp3"); break; case '5': sonido1.reproducirAudio("/recursos/CINCO.mp3"); break; case '6': sonido1.reproducirAudio("/recursos/SEIS.mp3"); break; case '7': sonido1.reproducirAudio("/recursos/SIETE.mp3"); break; case '8': sonido1.reproducirAudio("/recursos/OCHO.mp3"); break; case '9': sonido1.reproducirAudio("/recursos/NUEVE.mp3"); break; case '0': sonido1.reproducirAudio("/recursos/CERO.mp3"); break; case 'A': sonido1.reproducirAudio("/recursos/A.mp3"); break; case 'B': sonido1.reproducirAudio("/recursos/B.mp3"); break; case 'C': sonido1.reproducirAudio("/recursos/C.mp3"); break; }// fin de swithc } }

Pantallazos dela ejecucin del programa

Costo del desarrollo del proyecto


Costo de Desarrollo Curso de universidad Mariano Galvez Estructura de datos(mensualidades e inscripcion) Curso Gastos Dia Sabado (Gasolina, almuerzo,refaccion, gastos varios) comunicaciones (Celular, Internet) tiempo dedicado dentro de horario laboral (144 horas) Tiempo dedicado fuetra de horario laboral Reunion todos los integrantes (12 Horas) Tiempo dedicado fuera de horario laboral (Casa personal) Comida reunion todos los integrantes(pizza, bebidas,cenas) Documentacion(cd, encuadernado,presentacion) Total de desarrollo Costo Quetzales Q9,275 Q8,000 Q400 Q900 Q75 Q500 Q195 Q35 Q19,380

UNIVERSIDAD MARIANO GLVEZ DE GUATEMALA FACULTAD DE INGENIERA INGENIERA EN SISTEMAS DE INFORMACIN Y CIENCIAS DE LA COMPUTACIN ESTRUCTURA DE DATOS PLAN FIN DE SEMANA

MODULO DE CONTROL DE COLAS O TURNOS

GUATEMALA, JUNIO DEL 2012

CATEDRATICO(A): INTEGRANTE
Luis Fernando Escobar Morales Juan Carlos Lopez Huertas Heinz Richard Turcios Lam Jorge Barrera Barrera

INGENIERO RICARDO BELTRAN. CARNET EMAIL


0900-10-11306 0900-10-703 0900-10-1132 0900-10-12569

TELFONO
5403-0957 5633-8269 4336-6815 5825-2770

lance.3@hotmail.com
juancarloslopezh@gmail.com heinzlam1@hotmail.com george.barrerab@gmail.com

You might also like