viernes, 8 de julio de 2011

Especificacion Tecnica

Lo que le falta es poder -agregar, -modificar y -eliminar un videojuego ya que en mi caso estoy manejando dos tablas una de los clientes y otra del inventario en este caso cd's de videojuegos, tambien poder -eliminar y -modificar a un cliente, que los botones de consultas sirvan que me muestren el inventario ya sea por titulos o por clasificacion segun lo desee el usuario.
Tambien me gustaria agregar algo que sea referente a la paga y los dias que se prestara el CD algo mas o menos asi:
$20 = 2 Dias
y que en una seccion de mi ventana principal aparezca esto:
Cliente        CD                  Dias de renta:
nombre        Juego       2Dias(7/07/2011) a (9/07/20011)

A mi pensar creo que eso sera lo mas dificil de hacer. 

Para agregarle funcionalidad a las cosas que me faltan es solo agregar los actionperformed para que funcionen ademas trabajara con los comandos de mysql ya que como habia dicho la persona que use el software querra checar por titulo o por clasificacion segun la necesidad.

DEMO

Ahora explicare los procesos que puede realizar mi programa por el momento, bien mi programa inicia pidiendo el usuario y contraseña antes de poder abrir la ventana principal si son los indicados se abrira y si no lo son te aparecera un aviso en donde te dira que estan incorrectos, tambien puede mostrarme la base de datos que se a realizado previamente en mysql, y agregar a una persona.


 
Esta es la ventana despues de que le oprimi ver tabla


Estas ventanas es cuando oprimo el boton de agregar en el menu catalagos y me pide estos datos y me aparece que el registro a sido agregado.









Aqui aparece el registro agregado.

Herencia y Polimorfismo

Bien esta entrada es para explicar sobre las herencias que tiene mi proyecto, es facil por el momento la unica herencia que estoy usando es la del JFrame ya que todas mis ventanas heredan los parametros de la libreria.

Despues pienso editar la entrada con las otras herencias que vayan surgiendo en el transcurso de mi proyecto.

El polimorfismo es un concepto de la programación orientada a objetos que nos permite programar en forma general, en lugar de hacerlo en forma específica. En general nos sirve para programar objetos con características comunes y que todos estos compartan la misma superclase en una jerarquía de clases, como si todas fueran objetos de la superclase. Esto nos simplifica la programación.
Sugiero que vean la entrega de los esqueletos para que vean de que se habla.Creo que se entiende mejor en el esqueleto de la calase GUI.

Esqueleto del Software

Estos son los esqueletos que llevo por el momento habra mas y al final editare esta entrada para mostrar completamente el esqueleto de mi software, por el momento estos son los que tengo:



public class GUI extends JFrame implements  ActionListener
{
private static final BaseDatos bdm = null;    
private final String [] titulos = {"NOMBRE", "EDAD", "DIRECCION", "TELEFONO", "CELULAR", "REFERENTE", "ID"};
private DefaultTableModel dtm = new DefaultTableModel();
private JTable personTable = new JTable(dtm);
private BaseDatos dbm = new BaseDatos();

private JMenuBar menuBar;
privaterivate JMenu Catalagos,Juegos,Clientes,Inventario,VJ,Prestamos,Clientela,Ayuda,Consultas;
private JMenuItem Salir,Agregar,Eliminar,Modificar,Nuevo,Otro,Borrar,Todos,PC,PCL,PT,JP,JD,TC,CM,CU,ADprivate JScrollPane scroll;

public GUI(){
 }

public void addComponents(){
}
public void actionPerformed(ActionEvent ae) {
}

//MANEJA LA VENTANA PARA AGREGAR CLIENTES
class AgregarCliente extends JFrame implements ActionListener{
private JLabel cliente, direccion, tel, edad, cel, refe;
private JTextField campocliente, campodir, campotel, campoed, campocel, camporefe;
private JButton boton_aceptar, botoncancelar;
private BaseDatos objeto_base = new BaseDatos();
private String c,d,t,l,u,r, query;

public AgregarCliente(){
}
public void agregarcomponentes(){
}
public void actionPerformed(ActionEvent e) {
}

//MANEJA LA VENTANA PARA ELIMINAR CLIENTES
class EliminarCliente extends JFrame implements ActionListener{
private JLabel text1;
private JLabel text2;
private JTextField campoID;
JButton botonaceptar;
private JButton botoncancelar;
    private String IDString;
    private int IDInt;
    private String query;
    BaseDatos obd = new BaseDatos();    
    
    public EliminarCliente(){
    }
    private void agregarcomponentes() {
        }
    public void actionPerformed(ActionEvent e) {
    }    
}//fin de clase

class ModificarCliente extends JFrame implements ActionListener {
    private JButton botoncancelar, botonaceptar;
    private JLabel texto1;
    private JTexField campoid;
    private String IDString;
    private int IDInt;
    private String query;
    BaseDatos obd = new BaseDatos();
    
    public ModificarCliente() {    
    }
        private void addComponents{                
        }

        public void actionPerformed(ActionEvent e){
        }      
}//fin de clase



En este Esqueleto agregue varias clases para que sea mas facil acceder a ellas pero quizas cammbie.




public class BaseDatos {
    private final static String DRIVER = "com.mysql.jdbc.Driver";
    private final static String BD = "jdbc:mysql://localhost:3306/Su base de datos";
    private final static String USER = "root";
    private final static String PASS = "Su Contraseña";    
    public String usuario;
    public String contra;

    Connection ct; //Variable para la conexion
    Statement st; //Para consultas

    //Constructor
    public BaseDatos()
    }//fin constructor

     public void MostrarTodo(){
     }
        public Statement getSt() {
        return st;
    }
}








public class login extends JFrame implements ActionListener{
    private String usuario;
    private String contra;
    private JButton btninicio;
    private JButton btncancelar;
    private JLabel texto1;
    private JLabel texto2;
    private JTextField campouser;
    private JPasswordField campopas;
    private BaseDatos cosa = new BaseDatos();
    private String u,p;
    
    public login(){
    }
    public void Ventlogin(){
    }
        public void actionPerformed(ActionEvent e) {
    }
}





public class main {

public static void main(String[] args) {
BaseDatos bdm = new BaseDatos();
login x = new login();
GUI g = new GUI();
}
}

Seleccion e Instalacion de herramientas

Saludos doctora y  compaeñeros, en esta entrada explicare las herramientas a utilizar por mi parte.

Ahora mencionare que lo que se utilizara:
Como lenguaje utilizare: Java.
Como base de datos utilizare: MySQL.
Como lugar de trabajo utilizare el: Gedit Text Editor ( ya que me siento mas comodo trabajando aqui, tambien se podria utilizar la terminal).
Como sistema operativo utilizare: Ubuntu ( ya que en estos semestres e estado trabajando en este sistema y es muy accesible al momento de instalar o de programar algo).

Bien pasemos a como instalar Java, esto es facil ya que como mencione ubuntu tiene la facilidad de que se pueden instalar cosas con tan solo abrir la terminal y teclear:

sudo apt-get install nombre de lo que instalaras

En este caso instalaremos el Java opend jdk entonces se pone:

sudo apt-get install openjdk-6-jdk

damos enter y por si solo empezara a instalarse en ubuntu.
Se nos preguntara si deseamos continuar oprimimos la tecla Y luego enter y despues de unos segundos queda instalado.

Ahora para instalar Mysql es lo mismo solamente que cambiara el nombre de lo que instalaremos en este caso es:
sudo apt-get install mysql-server
sudo apt-get install mysql-admin
Practicamente sucede lo mismo que con java despues del comando tecleamos enter y empezara la instalacion.

Para poder realizar nuestras conexiones aun falta algo que es:
descargar unas librerias de esta pagina http//dev/mysql.com/downloads/connector/j.

Cuando se descargues esto se descomprime el archivo que sea tar.gz yse debe de utilizar el siguiente comando para ya poder hacer nuestras conexion JDBC claro esta moviendonos desde la terminal donde se encuentre nuestro archivo y es el :
sudo mv mysql-connector-java-5.1.16 /usr/lib/jvm/java-6-openjdk/jre/lib/ext.

Para realizar mis programas utilizo el gedit este se encuentra ya en ubuntu, para buscarlo es aplicaciones(aplications)->accesorios(accesories)->gedit en el menu de ubuntu.
Para lo que es el sistema operativo pueden hacer una memoria booteable con WUBI o simplemente particionar su computadora para instalarlo.

Ejemplo de una clase en java
import java.util.*; 
public class Suma { 
public static void main(String args[]) { 
int num1, num2; 
int sum = 0; 
Scanner console = new Scanner(System.in); 
System.out.println("Dame el primer numero"); 
num1 = console.nextInt(); 
System.out.println("Dame el segundo numero"); 
num2 = console.nextInt(); 
System.out.println("Sum = " +getSum(num1,num2)); 
} 
public static int getSum(int n1, int n2) {
return n1 + n2; 
} 
}

Un ejemplo simple y esto es lo que genera_

Aqui le dejo una liga de un tutorial de java:
http://www.chuidiang.com/java/index.php

jueves, 19 de mayo de 2011

Video donde explico el sistema

http://www.youtube.com/watch?v=AgQ9wDv6Mkc

Maestra aqui le dejo el enlace del video
Gracias y que tenga un buen dia.

Resumen Proyecto Final

Patrones de diseño
Mi proyecto utiliza diferentes patrones de diseño los cuales son  lo siguientes:
  • Composite
  • Facade (Fachada)
  • Strategy (Estrategia)
  • Abstract Factory (Fábrica abstracta)
  • Flyweight (Peso ligero)
  • Observer (Observador)

Eventos, excepciones, errores. (aplicados a mi sistema).
Eventos:

·         En el login cuando se haya puesto correctamente el servidor y la contraseña marcara una bienvenida.

·         Cuando haya ocurrido algún problema con un cliente como ya se mencionó se le pondrá una amonestación se marcara como una X en sus datos.
Excepciones:

·         Seria en el login que el servidor (persona que manejara el sistema) teclee números negativos en la contraseña, espacios o estén vacíos.

·         También en el login que presione la tecla enter en lugar de dirigir el cursor del mause al botón de entrar.
Error:
   
·         Sería que el sistema por alguna razón no elimine un artículo no disponible dentro de la base de datos.

Pruebas Unitarias
Una prueba unitaria es una forma de probar el correcto funcionamiento de un módulo de código. Esto sirve para asegurar que cada uno de los módulos funcione correctamente por separados.

JUnit es un conjunto de clases (framework) que permite realizar la ejecución de clases Java de manera controlada, para poder evaluar si el funcionamiento de cada uno de los métodos de la clase se comporta como se espera.
Interfaz Gráfica.
Es la ventana donde se realiza todo el sistema, los prestamos, el chequeo del inventario, etc.

Sistemas Distribuidos.
"Sistemas cuyos componentes hardware y software, que están en ordenadores conectados en red, se comunican y coordinan sus acciones mediante el paso de mensajes, para el logro de un objetivo. Se establece la comunicación mediante un protocolo prefijado por un esquema cliente-servidor".

2.-Base de Datos Distribuidas.- El cliente realiza la interacción con el usuario, ejecuta la aplicación, debe conocer la topología de la red, así como la disposición y ubicación de los datos. Se delega parte de la gestión de la base de datos al cliente.
Fuentes:
http://es.wikipedia.org/wiki/Patr%C3%B3n_de_dise%C3%B1o