viernes, 29 de noviembre de 2013

Descripción Proyecto Final.

Objetivo.
Este sistema tiene como principal trabajo el soporte al inventario de una tienda de ropa de manera automatizada. De esta manera se reducirá el tiempo empleado en realizar operaciones y llevar el control de todos los productos existentes, los productos que llegan, registro de los clientes y los proveedores, así como realizar facturas de las ventas rápidamente. Esta base de datos será una herramienta de gran ayuda para los administradores de la boutique, ya que con solo un clic podrá tener el reporte de las ventas realizadas y el detalle de cada una de ellas.

Requerimientos funcionales.
·         Mantenimiento. El sistema debe permitir consultar la información de algún producto, cliente o proveedor, especificar el ID de cualquiera de ellos. En el caso de los productos saber cuánta existencia hay en el almacén, el precio de costo y de venta, y su proveedor. En la pestaña de Clientes podemos saber datos personales como teléfono o dirección. Y en el caso de los proveedores es parecido a los clientes.

·         Consultas. El sistema debe permitir saber el inventario actual de cada uno de los productos, y hacer una búsqueda de cualquier producto que nos interese.

Métodos de distribución de Poisson e Hipergeometrica.

Clase Main.
package Estadistica;


public class Main {
public static void main(String[]argc) {
Estadistica p = new Estadistica ();
System.out.printf ("Factorial de 5 = %f\n", p.Factorial(5));
System.out.printf("Permutacion 5,  3 = %.0f\n", p.Permutacion(5, 3));
System.out.printf("Combinacion 5,  3 = %.0f\n", p.Combinacion(5, 3));
System.out.printf("Binomial 20,  3, 0.5 puntual = %f\n", p.Binomial(20, 3, 0.5, false));
System.out.printf("Binomial 20,  14, 0.5 acumulado = %f\n", p.Binomial(20, 14, 0.5, true));
System.out.printf("Normal 1.75, 1.85, 1.80, 0.5 = %f\n", p.Normal(1.75, 1.85, 1.80, 0.05));
System.out.printf( "Hipergeometrica 4, 6, 3, 1 = %f\n", p.Hipergeometrica(4, 6, 3, 1));
System.out.printf( "Poisson 5,8 = %f\n", p.Poisson(5,8));
}

}


Clase Estadistica.

package Estadistica;

public class Estadistica {
final static double e  = 2.7182;

//double es el tipo de dato que regresara la pc
public double Factorial(double args) {
       if (args <= 0.0) {
           return 1.0;
       }
       return(args * Factorial(args - 1.0));
   }
public double Permutacion (int n, int r) {
return (this.Factorial(n) / this.Factorial(n-r));
}
public double Combinacion (double n, double n2) {
return (this.Factorial (n) / (this.Factorial(n-n2) * this.Factorial(n2)));
}
public double Binomial (int n, int r, double p, boolean acum){
double acumulado;
if( acum ){
acumulado=0.0;
for (int i =0; i <= r; i++){
acumulado += (this.Combinacion( n, i ) *  Math.pow(p,i) * Math.pow (1.0-p, (n-i)));
}
return acumulado;

}
else {
return (this.Combinacion( n, r ) *  Math.pow(p,r) * Math.pow (1.0-p, (n-r)));
}
}

   
    public double Normal( double linf, double lsup, double media, double sigmma) {
    double parte1, parte2, dx, area1 = 0.0, area2 = 1.0;
    int celdas = 50;
    parte1 = 1.0 / ( sigmma * Math.sqrt(2.0 * Math.PI));
    while(Math.abs(area1 - area2) > 0.0000001) {
    area2 = area1;
    area1 = 0.0;
    celdas *= 2;
    dx = (double)Math.abs(linf - lsup) / celdas;
    for( double i = linf; i < lsup; i += dx ) {
    parte2 = (i - media) / sigmma;
    area1 += ( parte1 * Math.pow(Math.E, ( -1.0/2.0 * Math.pow(parte2, 2) ))) * dx;
    }
    }
    return area1;
}
public double Hipergeometrica (double N, double n, double d, double x) {

return(this.Combinacion(d, x) * this.Combinacion(N - d, n - x) / this.Combinacion(N, n));
}
public double Poisson (double K, double A) {
return ((Math.pow (e,-A)) * ( Math.pow( A, K))) / (this.Factorial(K));

}

}





jueves, 14 de noviembre de 2013

Cajero Automatico

Código.

Clase Principal Cajero:
public class Cajero {
public static void main(String[] args) {
     Cajero2 trin = new Cajero2();        
       trin.menu();
       System.exit(0); 
   }    

}


Clase Cajero 2:
import javax.swing.JOptionPane;
public class Cajero2 {  
  
   int saldo=100000; // SALDO INICIAL
   String clave="POO";//PIN
     public void menu(){
         String ax;
       int op=0;        
       do{
           ax = JOptionPane.showInputDialog(null, "1. Saldo \n 2. Depositar \n 3. Retirar \n 4. Cambiar PIN \n 5. Salir");
           if(ax!=null && auxi.isNum(ax)){
               op = Integer.parseInt(ax);
               switch(op){
                   case 1:
                       verSal(); break; 
                   case 2:
                       consig(); break;
                   case 3:
                       retirar(); break;
                   case 4: 
                       chanPass(); break;
               }    
           }else{
               JOptionPane.showMessageDialog(null, "Digite una opcion valida....");
           }                    
       }while(op !=5);       
   }
 
   public void verSal(){
       JOptionPane.showMessageDialog(null, "Tu saldo a la fecha es: "+saldo);
   }
 
   public void consig(){
       String ax; int consig=0;        
 
       ax = JOptionPane.showInputDialog(null, "Cuanto desea consginar? ");
       
if((ax!=null) && !ax.equals("") && auxi.isNum(ax)){          
           consig = Integer.parseInt(ax);
           if(consig>0){
               saldo+=consig;
           }else{
               JOptionPane.showMessageDialog(null, "Ingrese una cantidad mayor a 0 !");
           }                    
       }else{
            JOptionPane.showMessageDialog(null, "Ingrese la cantidad a depositar: ");
       }
   }  
   public void retirar(){  
       String ax;                
       ax = JOptionPane.showInputDialog(null, "Ingrese su PIN ");  
       if(ax==null){
         }else{
           if(!ax.equals("")){            
               if(ax.equals(clave)){
                   ax = JOptionPane.showInputDialog(null, "a. 5000 \n b. 10.000 \n c. 20.000 \n d. 50.000\n e. 100.000\n f. Ingresar valor",
                           "CANTIDAD A RETIRAR", JOptionPane.INFORMATION_MESSAGE);
                   if(ax!=null){
                       if(!ax.equals("")){
                           switch(ax){
                               case "a":
                                   if((saldo-5000>=10000)){
                                       saldo-=5000;
                                   }                            
                                   break;
                               case "b":
                                  if((saldo-10000>=10000)){
                                       saldo-=10000;
                                   }
                                   break;
                               case "c":
                                  if((saldo-20000>=10000)){
                                       saldo-=20000;
                                   }
                                   break;
                               case "d":
                                   if((saldo-50000>=10000)){
                                       saldo-=50000;
                                   }
                                   break;
                               case "e":
                                   if((saldo-100000>=10000)){
                                       saldo-=100000;
                                   }
                                   break;
                               case "f":
                                   ax = JOptionPane.showInputDialog(null, "Introduzca el valor a retirar: ");
                                   if(!ax.equals("") && auxi.isNum(ax) && (Integer.parseInt(ax)>0) && (saldo-Integer.parseInt(ax)>=10000) ){
                                       saldo-= Integer.parseInt(ax);
                                   }
                                   break;
                               default:
                                   JOptionPane.showMessageDialog(null, "Introduzca una opcion valida", "OPCION INCORRECTA", JOptionPane.ERROR_MESSAGE);
                                   break;
                           }             
                       } 
                   }
               }
               else{
                   JOptionPane.showMessageDialog(null, "El PIN ingresado no es valido....");
               }
           }
       }              
   }
     public void chanPass(){  
       String ax, cl;
         ax = JOptionPane.showInputDialog(null, "Digite su PIN....");
       if(ax!=null){
           if(!ax.equals("")){            
               if(ax.equals(clave)){
                  cl = JOptionPane.showInputDialog(null, "Digite su nuevo PIN");
                  if(cl!=null){
                      if(cl.length()>3){
                           ax=null;
                           ax="Su anterior PIN es:"+clave;
                           clave=cl;
                           ax+="\nSu nuevo PIN es: "+clave; 
                           JOptionPane.showMessageDialog(null, ax);
                      }
                      else{
                           JOptionPane.showMessageDialog(null, "El PIN que desea cambiar es muy corto, necesita ser mayor a 3 caracteres...");
                      }
                  }                   
               }
               else{
                   JOptionPane.showMessageDialog(null, "El PIN ingresado no coincide....");
               }
           }
       }        
   }
}

Clase Auxiliar:
public class auxi { 
    public static boolean isNum(String a){      
         try{
            int b = Integer.parseInt(a);
            return true;
        }
        catch(NumberFormatException e){
            return false;
        }        
    } 

}


Imágenes.













Lista Enlazada

Código.

Clase principal:
public class Main {
    public static void main(String[] args)
    {
        ListaEnlazada miLista = new ListaEnlazada();
        miLista.InsertarEnPrimero (10);
        miLista.InsertarEnPrimero (15);
        miLista.InsertarEnPrimero (30);
        miLista.InsertarEnPrimero (50);
        miLista.InsertarEnPrimero (40);
        miLista.InsertarEnPrimero (60);
        System.out.println(miLista.Listar());
        System.out.println("borrar");
        miLista.BorrarUltimo();
        miLista.BorrarPrimero();
        //miLista.BorrarPosicion(2);
        System.out.println(miLista.Listar());       
    }  
}

Clase Nodo:
public class Nodo {
    int info;    
    public Nodo siguiente;
    public Nodo anterior;  
    public Nodo (int dato){
    info = dato;
    anterior = null;
    siguiente = null;
            }
    public void VerNodo() {
    System.out.println ("{ "+info+"}");
      }

}

Clase Lista Enlazada:
public class ListaEnlazada {
    Nodo cabeza;
    Nodo cola;    
    public ListaEnlazada() {
    cabeza = null;
    cola = null;
         }
    public boolean vacia() {
    if (cabeza == null) {
    return(true);
                }
    else {
    return (false);
    }
    }
    //Insertar en cabeza
    public void InsertarEnPrimero (int Dato) {
    Nodo Temporal = new Nodo (Dato); //Crea el nodo temporal
    if (vacia()){
        cabeza = Temporal;
        cola = Temporal;
            }
    else {
    Temporal.siguiente = cabeza;
    cabeza.anterior = Temporal;
    cabeza = Temporal;
    }
    }
    public void InsertarAlFinal (int Dato){
    Nodo Temporal = new Nodo(Dato); 
     if (vacia()){
        cabeza = Temporal;
        cola = Temporal;
            }
    else {
    cola.siguiente = Temporal;
    Temporal.anterior = cola;
    cola = Temporal;
    }
    }    
   public void BorrarPrimero(){
   cabeza = cabeza.siguiente;
   cabeza.anterior = null;   
   }
    public void BorrarUltimo(){
   if (cola.anterior == null){
        cabeza = null;
        cola = null;
   }
   else {
       cola = cola.anterior;
       cola.siguiente = null;
          }
    }
    public String Listar(){
    String Dato = "";
    Nodo axu = cabeza ;
    while (axu!= null){
        Dato+="{" +axu.info+ "}";
        axu = axu.siguiente;
    }
        return (Dato);
   
      }
    public void BorrarPosicion (int pos) {
    Nodo anterior = cabeza;
    Nodo actual = cabeza;
    int k=0;
    if (pos>0){
    while (k!=pos && actual.siguiente != null){
    anterior = actual;
    actual= actual.siguiente;
    k++;
    System.out.println(" k " + k);
       }
    anterior.siguiente = actual.siguiente;       
            }   
    }
  

}

Imágenes.
Ejecutando:


Borrando el primer dato:



Borrando la Posición 2:


Borrando la ultima posición:




viernes, 8 de noviembre de 2013

Que es una lista enlazada..?

Una representación enlazada de un grupo de elementos de un cierto tipo es una lista enlazada de nodos, es decir, una secuencia de nodos situados en la memoria dinámica y conectados entre si..

Un nodo tiene dos atributos:
-El dato, de tipo genérico (para guardar cualquier tipo de objeto).
-Una referencia al nodo siguiente.

jueves, 31 de octubre de 2013

My SQL

He estado realizando mi proyecto final para la clase y el taller de Programación Orientada a Objetos, que sera una Base de Datos utilizando el lenguaje JAVA y My SQL.
Me he apoyado mucho en estos tutoriales de My SQL, y lo visto en clase.
Les dejo el Link.
Tutorial MySQL

martes, 29 de octubre de 2013

Presentación.

HOLA!
He creado este blog para compartir algunos de mis trabajos de la clase de Programación Orientada a Objetos.
Espero y les pueda servir de algo.