Professional Documents
Culture Documents
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.
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) {
/*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 {
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);}
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();
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);}
} 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);}
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){}
} 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);}
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){}
} public void Actualiza_Estatusticket(String user, String Ticket, String Estatus){ GeneraTicket hora_final =new GeneraTicket(); String Hora_final;
Hora_final=hora_final.regresa_hora(); }
} 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);}
} /* * 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
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();
/* * * 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 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();
/* * * 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; }
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 } }
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
CATEDRATICO(A): INTEGRANTE
Luis Fernando Escobar Morales Juan Carlos Lopez Huertas Heinz Richard Turcios Lam Jorge Barrera Barrera
TELFONO
5403-0957 5633-8269 4336-6815 5825-2770
lance.3@hotmail.com
juancarloslopezh@gmail.com heinzlam1@hotmail.com george.barrerab@gmail.com