jueves, 24 de noviembre de 2011

Ejercicios SQL

Ejercicio 1
Para generar este resultado:
Utilice este comando:
SELECT City, CompanyName FROM customers WHERE City LIKE 'Ber%'
En donde se realiza solo la consulta de las columnas City y CompanyName en donde se encuentren las iniciales Ber en la columna City.

Ejercicio B
Para generar este resultado:
Utilice este comando:
SELECT CompanyName, ContactName FROM customers ORDER BY ContactName
En donde se realiza la consulta de las columnas CompanyName y ContactName, pero la columna ContactName se ordena en forma ascendente.

Ejercicio C
Pata generar este resultado:
Utilice este comando:
SELECT COUNT(City) FROM CUSTOMERS WHERE City LIKE 'Ber%'
En donde se cuentan el número de registros en la columna City en donde las iniciales son Ber.

Ejercicio D
Consultas de la página de prueba

Comando:
SELECT * FROM customers
Resultado:
Se seleccionó la consulta de toda la tabla customers.

Comando:
SELECT CompanyName, ContactName FROM customers
Resultado:
Se seleccionó la consulta de las columnas CompanyName y ContactName de la tabla customers.

Comando:
SELECT * FROM customers WHERE CompanyName LIKE 'a%'
Resultado:
Se seleccionó la consulta de todos los campos en donde en la columna CompanyName los registros comenzarán con a.

Comando:
SELECT CompanyName, ContactName
FROM customers
WHERE CompanyName > 'a'

Resultado:
Se realizó la consulta de las columnas CompanyName y ContactName en donde aparecieran todos los registros de la columna CompanyName después del registro que empeieza con la letra a, incluyendo a este.


---Continuación---

Referencias

Eventos en Java

En esta entrada explicaré como funcionan los eventos al presionar un botón en Java.

Cuando creamos una aplicación en Java utilizamos botones que al presionarlos, realizan una función. Explicare un ejemplo sencillo de como funcionan tres botones al presionarlos, uno de ellos será un botón de salida de la ventana, el otro al presionarlo imprimirá algo en la terminal y el otro cambiará de color al panel contenido en la ventana.

Ejemplo

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class Eventos implements ActionListener{

JButton boton;
JButton boton2;
JButton boton3;
JPanel ev;

public Eventos(){
JFrame ventana = new JFrame();
ventana.setTitle("Ventana");
ventana.setSize(500, 250);
ventana.setVisible(true);
ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

ev = new JPanel();
ventana.setContentPane(ev);
ev.setBackground(Color.WHITE);
ev.setLayout(null);

boton = new JButton("Imprime");
boton.addActionListener(this);
boton.setBounds(60, 100, 100, 50);
ev.add(boton);

boton2 = new JButton("Salir");
boton2.addActionListener(this);
boton2.setBounds(170, 100, 100, 50);
ev.add(boton2);

boton3 = new JButton("Cambia color");
boton3.addActionListener(this);
boton3.setBounds(280, 100, 150, 50);
ev.add(boton3);

}

public void actionPerformed(ActionEvent e){
if(boton == e.getSource()){
System.out.println("Imprimiendo");
}
if(boton2 == e.getSource()){
System.exit(0);
}
if(boton3 == e.getSource()){
ev.setBackground(Color.GREEN);
}
}
public static void main(String args[]){

Eventos evento = new Eventos();

}
}

El ActionListener avisa que se a presionado el boton, es decir, se a creado un evento, por esta razón los botones Imprime, Salir y Cambia color agregan un AcionListener.
El actionPerformed es en donde van las acciones que se realizarán al presionar cada botón.

Si presionamos el botón Imprime, se imprimirá un mensaje en la terminal que dice "Imprimiendo", en cambio si presionamos el botón Salir, se cerrará la ventana y si presionamos el botón Cambia color, el panel de la ventana, cambiará de color blanco a verde.

La clase debe implementar el ActionListener para que los botones realicen una acción al ser presionados.

Imagenes


Referencias

Saludos.



Comandos SQL

Esta entrada es para explicar como se manipula una base de datos en MySQL en terminal, para cuando se desea trabajar un proyecto en el cual se incorpore una conexión a una base de datos en Mysql.

Para comenzar a usar MySQL en la terminal, abrimos nuestra terminal y tecleamos lo siguiente:
mysql -u root -p
Nos pedirá la contraseña que le asignamos cuando instalamos el cliente y el servidor de MySQL.
Ahora ya estamos en MySQL, y ya podremos crear nuestra base de datos.

Para crear nuestra base de datos escribimos el comando siguiente:
CREATE DATABASE nombrebase;

El comando CREATE DATABASE esta escrito en mayúsculas, pero se puede escribir con minúsculas en Linux, solo se escribe en mayúsculas para separar los comandos de los nombres de las bases, de los nombres de los campos, etc.

Ahora para ver nuestra base, tecleamos el comando:
SHOW DATABASES;

Con el comando anterior, se muestran las bases creadas en MySQL.

Ahora, para insertar tablas en nuestra base de datos, tenemos que teclear el comando:
USE nombrebase;

El comando anterior se utiliza para usar la base de datos a la que le queremos insertar tablas, datos.
Para crear una tabla en nuestra base se utiliza el comando:
CREATE TABLE nombretabla();
Pero dentro de los paréntesis van los campos que llevara nuestra tabla a crear y el tipo de dato que es. Además se puede agregar cual es la llave primaria en nuestra tabla y si algun campo puede ser o no NULL (nulo).

Por ejemplo, para crear una tabla que se llame cliente, en donde queremos que el cliente tenga un ID, un nombre, una edad y un telefono, teclearemos lo siguiente:
CREATE TABLE cliente(ID int AUTO_INCREMENT PRIMARY KEY, nombre CHAR(15), edad CHAR(5), telefono CHAR(10));
Creé el campo ID como un INT y AUTO_INCREMENT es para que la ID del cliente se vaya aumentando automáticamente conforme se vaya ingresando un cliente; coloqué PRIMARY KEY en este campo, ya que este campo será la llave primaria de la tabla cliente.
Creé los campos nombre, edad y telefono como CHAR(), ya que serán caracteres porque en los campos edad y telefono no se necesita que sean de tipo entero, ya que no se realizará ninguna operación con ellos. Dentro de los paréntestis se coloca el número de caracteres para el campo.

Ahora ingresamos el comando:
SHOW TABLES;
Y nos mostrará las tablas que hayamos creado en nuestra base.

Para ingresar datos en nuestra tabla se usa el comando:
INSERT INTO cliente VALUES();

Dentro de los paréntesis van en orden los valores que le queremos agregar a los campos nombre, edad y telefono.

Por ejemplo si queremos agregar un cliente que se llame Sandra y de edad tenga 20 años y su telefono sea 83765420, estos datos, se ingresarán de la manera siguiente:
INSERT INTO cliente VALUES(1, 'Sandra', '20', '83765420');
Coloque el número 1, como ID de sandra. Solo los datos que ingresamos de tipo CHAR, deben estar dentro de comillas simples ' '.

Ahora para ver los datos que acabamos de ingresar en MySQL hay un comando que es SELECT, este comando, sirve para realizar consultas.
Para consultar toda la tabla, ingresamos el comando siguiente:
SELECT * FROM cliente;

Si queremos que solo ciertos datos aparezcan y no toda la tabla, se utiliza este comando SELECT pero con condiciones.
Por ejemplo, si solo queremos ver la columna nombre, el comando a utilizar será:
SELECT nombre FROM cliente;
Lo anterior, es algo básico para comenzar a utilizar MySQL en terminal.

Referencias
Referencia1 Esta referencia es muy buena, sirve mucho.

Saludos.

Layouts en Java

Los Layouts son clases que dicen como se van a acomodar los componentes en una interfaz gráfica en Java.
Algunos de ellos, son GridLayout, GridBagLayout, FlowLayout, BorderLayout, etc.

Cada Layout tiene una manera diferente de acomodar los componentes como botones, labels, textfields, etc., en una ventana.

Explicaré el uso de algunos de los Layouts de Java, con el siguiente código.

Uso del BorderLayout, GridLayout y FlowLayout.
import java.awt.*;
import javax.swing.*;

public class Layouts{

public Layouts(){
}

public static void main(String[] args) {

JFrame ventana = new JFrame(); //creacion de la ventana

ventana.setSize(1028, 740); //tamaño de la ventana
ventana.setLocation(0, 25); //donde se localiza la ventana
ventana.setTitle("Ventana"); //como se llama la ventana
ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //cuando se cierra la ventana

JPanel p = new JPanel(); //panel contenedor de los demas paneles
JPanel pBorder = new JPanel(); //panel para el BorderLayout
JPanel pGrid = new JPanel(); //panel para el GridLayout
JPanel pFlow = new JPanel(); //panel para el FlowLayout

ventana.setContentPane(p); //la ventana contiene el panel p
p.add(pBorder);
p.add(pGrid); //el panel p contiene a los paneles pBorder, pGrid y pFlow
p.add(pFlow);

p.setLayout(new GridLayout(3, 1));
pBorder.setLayout(new BorderLayout());
pGrid.setLayout(new GridLayout(3, 2));
pFlow.setLayout(new FlowLayout());

p.setBackground(Color.WHITE);
pBorder.setBackground(Color.YELLOW); //colores de los layouts
pGrid.setBackground(Color.GREEN);
pFlow.setBackground(Color.RED);

JLabel centro = new JLabel("¡Centro!");
JLabel norte = new JLabel("¡Norte!");
JLabel sur = new JLabel("¡Sur!"); //labels
JLabel este = new JLabel("¡Este!");
JLabel oeste = new JLabel("¡Oeste!");

JPanel panel = new JPanel(); //panel que esta en el centro del panel pBorder
panel.add(centro); //este panel agrega el label centro
pBorder.add(panel, BorderLayout.CENTER);
pBorder.add(norte, BorderLayout.NORTH); //este panel agrega el label norte al norte
pBorder.add(sur, BorderLayout.SOUTH); //este panel agrega el label sur al sur
pBorder.add(este, BorderLayout.EAST); //este panel agrega el label este al este
pBorder.add(oeste, BorderLayout.WEST); //este panel agrega el label oeste al oeste

JButton bot1 = new JButton("Boton1");
JButton bot2 = new JButton("Boton2");
JButton bot3 = new JButton("Boton3"); //botones
JButton bot4 = new JButton("Boton4");
JButton bot5 = new JButton("Boton5");
JButton bot6 = new JButton("Boton6");

pGrid.add(bot1);
pGrid.add(bot2);
pGrid.add(bot3); //el panel pGrid agrega todos estos botones
pGrid.add(bot4);
pGrid.add(bot5);
pGrid.add(bot6);

JLabel lab = new JLabel("Ejemplo");
JButton bot = new JButton("Boton");
JButton boton = new JButton("Boton");
JLabel label = new JLabel("Ejemplo");

pFlow.add(lab);
pFlow.add(bot); //el panel pFlow contiene estos componentes
pFlow.add(boton);
pFlow.add(label);

ventana.setVisible(true);

return;
}
}
Imagen de la ejecución

BorderLayout
Como se ve en el código anterior el BorderLayout se usa para acomodar los componentes al norte, sur, este, oeste y centro de una ventana. Solo hay que agregar un componente a un BorderLayout y decir donde queremos que se vea, ya sea al centro, al norte, al sur, al este o al oeste.

GridLayout
El GridLayout se utiliza para crear matrices en una ventana. Acomoda los componentes en un mismo tamaño. Es útil para realizar calculadoras.
Como se muestra en el código, para decir cuantas filas y columnas queremos en la matriz, se coloca primero el número de filas y después el número de columnas, por ejemplo, en el código, en el GridLayut del panel pGrid hay 3 filas y dos columnas, pGrid.setLayout(new GridLayout(3, 2)).

FlowLayout
Este Layout es muy sencillo, ya que solo acomoda los componentes en fila hasta donde se lo permita la ventana.

Referencias

Clase Moto

Pseudocódigo

Clase Moto{
placa, estadoMotor, velocidad, vidaBateria

Moto(placa)
placa = placa
estadoMotor = apagado
velocidad = 0
vidaBateria = 100

verPlaca()
return placa

encender()
estadoMotor = encendido
vidaBateria --

apagar()
estadoMotor = apagado
velocidad = 0

acelerar()
if estadoMotor == encendido
velocidad = velocidad + 20

frenar()
if estadoMotor == encendido && velocidad > 0
velocidad = velocidad - 20

}

Clase MainMoto
public class Moto
{
private int placa;
private boolean estadom;
private int velocidad;
private int vbateria; //atributos

public Moto(int placa)
{
placa = placa;
estadom = false;
velocidad = 0;
vbateria = 100;
}

public int verplaca(int placa)
{
System.out.println("Placa: "+placa);

return placa;
}

public void encender()
{
estadom = true;
System.out.println("El motor esta encendido");
vbateria--;
System.out.println("Bateria: "+ vbateria);

return;
}

public void apagar()
{
estadom = false;
System.out.println("El motor esta apagado");
velocidad = 0;
System.out.println("La velocidad es 0");

return;
}

public void acelerar()
{
if(estadom==true){
velocidad = velocidad + 20;
System.out.println("Velocidad: "+ velocidad);
}
else{
System.out.println("El motor esta apagado");
}

return;
}

public void frenar()
{
if(velocidad > 0 && estadom == true){
velocidad = velocidad - 20;
System.out.println("Velocidad: "+ velocidad);
}
else{
System.out.println("El motor esta apagado / La velocidad no puede ser negativa");
}

return;
}

}
Clase Moto
import java.util.Scanner;

public class MainMoto{

public static void main(String args[]){

Moto motoEjemplo = new Moto(42424);

Scanner leer = new Scanner(System.in);
int opc;
do{

System.out.println("\t\tMoto");
System.out.println("1.- Ver placa");
System.out.println("2.- Encender");
System.out.println("3.- Apagar");
System.out.println("4.- Acelerar");
System.out.println("5.- Frenar");
opc = leer.nextInt();

switch(opc){
case 1:
motoEjemplo.verplaca(343);
break;
case 2:
motoEjemplo.encender();
break;
case 3:
motoEjemplo.apagar();
break;
case 4:
motoEjemplo.acelerar();

break;
case 5:
motoEjemplo.frenar();
break;
}
}while(opc<=5);
}
}

Ejecución

Referencias

Saludos.

miércoles, 23 de noviembre de 2011

Documentación técnica y auto-generación de código

Documentación técnica y auto-generación de código de ogro y príncipe

Para realizar la auto-generación de código del juego del ogro y príncipe, utilizare Umbrello.

En la terminal nos posicionamos en la carpeta del juego y escribimos lo siguiente umbrello juego.

Se desplegará el diagrama de clases del proyecto juego del ogro y príncipe.
Para la auto-generación de código, daremos click en la opción Code y damos click a Code Generation Wizard y nos aparecerá una ventana como esta:


Ahora le damos click al botón Next y nos aparecerá otra ventana en la que nos aparece la dirección en que se guardara la auto-generación del código y además aparece en que lenguaje deseamos que se auto-genere el código, en este caso pondre la opción que el código se realice en el lenguaje Java. Damos click al botón Next.
Nos aparecerá otra ventana en la que daremos click a Generate. Y automáticamente el código del ogro y el príncipe se a generado en el lenguaje Java a partir del diagrama de clases creado en Umbrello.

Código auto-generado
/**
* Class Personaje
*/
public class Personaje {

//
// Fields
//

private String nombre;

//
// Constructors
//
public Personaje () { };

//
// Methods
//


//
// Accessor methods
//

/**
* Set the value of nombre
* @param newVar the new value of nombre
*/
private void setNombre ( String newVar ) {
nombre = newVar;
}

/**
* Get the value of nombre
* @return the value of nombre
*/
private String getNombre ( ) {
return nombre;
}

//
// Other methods
//

}
/**
* Class Princesa
*/
public class Princesa extends Personaje implements Capturable {

//
// Fields
//

private String status = "libre";

//
// Constructors
//
public Princesa () { };

//
// Methods
//


//
// Accessor methods
//

/**
* Set the value of status
* @param newVar the new value of status
*/
private void setStatus ( String newVar ) {
status = newVar;
}

/**
* Get the value of status
* @return the value of status
*/
private String getStatus ( ) {
return status;
}

//
// Other methods
//

/**
*/
public void capturar( )
{
}


/**
*/
public void liberar( )
{
}


}
import java.util.*;


/**
* Class Principe
*/
public class Principe extends PersonajeAtacable implements Curable {

//
// Fields
//


//
// Constructors
//
public Principe () { };

//
// Methods
//


//
// Accessor methods
//

//
// Other methods
//

/**
* @return Mago
*/
public Mago invocarMago( )
{
}


/**
* @param o
*/
public void atacar( Ogro o )
{
}


/**
* @param c
*/
public void rescatar( Capturable c )
{
}


/**
* @return int
*/
public int curar( )
{
}


}
/**
* Class PersonajeAtacable
*/
public class PersonajeAtacable extends Personaje implements Atacable {

//
// Fields
//

static private int DEFAULT_VIDA = 100;
private int vida;

//
// Constructors
//
public PersonajeAtacable () { };

//
// Methods
//


//
// Accessor methods
//

/**
* Get the value of DEFAULT_VIDA
* @return the value of DEFAULT_VIDA
*/
private int getDEFAULT_VIDA ( ) {
return DEFAULT_VIDA;
}

/**
* Set the value of vida
* @param newVar the new value of vida
*/
private void setVida ( int newVar ) {
vida = newVar;
}

/**
* Get the value of vida
* @return the value of vida
*/
private int getVida ( ) {
return vida;
}

//
// Other methods
//

/**
* @param cuanta
*/
public void restarVida( int cuanta )
{
}


/**
* @param a
*/
public void atacar( Atacable a )
{
}


/**
* @param intensidad
*/
public void recibirAtaque( int intensidad )
{
}


}
import java.util.*;


/**
* Class Ogro
*/
public class Ogro extends PersonajeAtacable implements Capturable, Congelable {

//
// Fields
//

private boolean congelado = false;

//
// Constructors
//
public Ogro () { };

//
// Methods
//


//
// Accessor methods
//

/**
* Set the value of congelado
* @param newVar the new value of congelado
*/
private void setCongelado ( boolean newVar ) {
congelado = newVar;
}

/**
* Get the value of congelado
* @return the value of congelado
*/
private boolean getCongelado ( ) {
return congelado;
}

//
// Other methods
//

/**
* @param c
*/
public void capturar( Capturable c )
{
}


/**
*/
public void capturar( )
{
}


/**
*/
public void liberar( )
{
}


/**
*/
public void congelar( )
{
}


}
import java.util.*;


/**
* Class Mago
*/
public class Mago extends Personaje {

//
// Fields
//


//
// Constructors
//
public Mago () { };

//
// Methods
//


//
// Accessor methods
//

//
// Other methods
//

/**
* @param c
*/
public void lanzarHechizo( Congelable c )
{
}


/**
* @param c
*/
public void curar( Curable c )
{
}


}
/**
* Interface Curable
*/
public interface Curable {

//
// Fields
//


//
// Methods
//


//
// Accessor methods
//

//
// Other methods
//

/**
* @return int
*/
public int curar( );


}
/**
* Interface Congelable
*/
public interface Congelable {

//
// Fields
//


//
// Methods
//


//
// Accessor methods
//

//
// Other methods
//

/**
*/
public void congelar( );


}
/**
* Interface Capturable
*/
public interface Capturable {

//
// Fields
//


//
// Methods
//


//
// Accessor methods
//

//
// Other methods
//

/**
*/
public void capturar( );


/**
*/
public void liberar( );


}
/**
* Interface Atacable
*/
public interface Atacable {

//
// Fields
//


//
// Methods
//


//
// Accessor methods
//

//
// Other methods
//

/**
* @param a
*/
public void atacar( Atacable a );


/**
* @param intensidad
*/
public void recibirAtaque( int intensidad );


}
Como vimos en el código anterior se encuentran algunos comentarios inicializados con /** y terminados con */, esto es parte de la documentación técnica.
Dentro de la documentación en un proyecto podrán ir diferentes identificadores como:
@author - Autor del código fuente
@exception - Excpeciones del código
@param - Parámetros que se reciben en los métodos
@return - El valor que se regresa

Cualquier identificador comienza con /** y termina con */. Además cada línea escrita dentro de esos símboloes tendrán un * al comenzar.

Por ejemplo:
/**
*Esto es un ejemplo
*@return ejemplo
*/

Ahora para realizar la documentación técnica del juego el ogro y el príncipe, utilizare JavaDoc.
En la terminal, dentro de la carpeta del código fuente que se auto-generó, escribimos: javadoc *.java

Después de esto, la documentación del código fuente se generó. Se generaron varios archivos, entre ellos un archivo llamado index.html. Abrimos este archivo y se mostrará toda la documentación del juego del ogro y el príncipe.

Algunas imagenes de la documentación



En la documentación se muestran el constructor, los métodos, parámetros, atributos, etc del código fuente del ogro y el príncipe.

Referencias



Saludos.

martes, 22 de noviembre de 2011

Sistemas Distribuidos

El proyecto que yo realize es un sistema de un Videoclub que puede ser distribuido como un sistema cliente-servidor.

En cuanto a compatibilidad, el sistema esta creado en el lenguaje JAVA. Por la razón anterior el sistema, puede distribuirse en cualquier plataforma. Pero además, utiliza una base de datos, creada en MySQL, el cual tiene la ventaja de ser un software libre.

Puede ser utilizado por cualquier persona, lo cual es poco confiable, ya que no cuenta con contraseña de administrador, ni de usuarios.

En cuanto a tolerancia a fallos, el sistema puede producir fallos por diferentes razones, principalmente por la base de datos en MySQL, ya que podría haber concurrencia al acceder a la base de datos.

Referencias

viernes, 4 de noviembre de 2011

Eventos y excepciones

Algunos de los eventos y excpeciones en mi proyecto son los siguientes:

Clase Película y Cliente (conexión con la base de datos)
try{
Class.forName("com.mysql.jdbc.Driver");

conexion = DriverManager.getConnection("jdbc:mysql://localhost/videoclub", "root", "gjosue19");
System.out.println("Conexion realizada");
}
catch(ClassNotFoundException e){
System.out.println(e);
}
catch(SQLException e){
System.out.println(e);
}

Clase Cliente (método agregar)
 try{
st = conexion.createStatement();

st.executeUpdate("INSERT INTO cliente(nombre, telefono, colonia, calle, numero, cp) VALUES ('"+name+"', '"+tel+"', '"+col+"', '"+ca+"', '"+num+"', '"+codp+"')");

System.out.println("Se insertaron los datos");

JOptionPane.showMessageDialog(null, "Se han insertado los datos", "Cliente agregado", JOptionPane.WARNING_MESSAGE);

}catch(Exception e){
System.out.println("No se insertaron los datos");
JOptionPane.showMessageDialog(null, "No se han insertado los datos", "Cliente agregado", JOptionPane.WARNING_MESSAGE);
}

Clase Cliente (eventos de los botones)
public void actionPerformed(ActionEvent e){

if(bMenu == e.getSource()){
Videoclub vid = new Videoclub();
vid.crearVentanaV();
cliente.dispose();
}

if(bAgr == e.getSource()){
registrar();
}

if(bCan == e.getSource()){
System.exit(0);
}

if(limpiar == e.getSource()){
textNom.setText("");
textTel.setText("");
textCol.setText("");
textC.setText("");
textNum.setText("");
textCP.setText("");
}

}
Clase Película (eventos de los botones)
 public void actionPerformed(ActionEvent e){

if(botM == e.getSource()){
Videoclub vid = new Videoclub();
vid.crearVentanaV();
pelicula.dispose();
}

if(botAgP == e.getSource()){
agregar();
}

if(botCP == e.getSource()){
System.exit(0);
}
if(botLim == e.getSource()){
textTit.setText("");
textGen.setText("");
textCl.setText("");
textCV.setText("");
textCR.setText("");
textCantV.setText("");
textCantR.setText("");
}

if(botE == e.getSource()){
eliminar();
}

if(botC == e.getSource()){
System.exit(0);
}

if(botL == e.getSource()){
textNumPel.setText("");
}

if(botCPel == e.getSource()){
consultar();
}

}

Clase Película (método agregar)
  try{

st = conexion.createStatement();

st.executeUpdate("INSERT INTO pelicula(titulo, genero, clasif, costoVta, costoRta, cantVta, cantRta) VALUES ('"+tit+"', '"+gen+"', '"+cl+"', '"+CV+"', '"+CR+"', '"+cantV+"', '"+cantR+"')");

System.out.println("Se insertaron los datos");
JOptionPane.showMessageDialog(null, "Se han insertado los datos", "Pelicula agregada", JOptionPane.WARNING_MESSAGE);

}catch(Exception e){
System.out.println("Aun No se insertaron los datos");
JOptionPane.showMessageDialog(null, "No se han insertado los datos", "Pelicula agregada", JOptionPane.WARNING_MESSAGE);

}
Clase Película (método eliminar)
 try{

st = conexion.createStatement();

st.executeUpdate("DELETE FROM pelicula WHERE id = '"+numPel+"'");

System.out.println("Se borraron los datos");
JOptionPane.showMessageDialog(null, "Se han eliminado los datos", "Pelicula eliminada", JOptionPane.WARNING_MESSAGE);

}catch(Exception e){
System.out.println("Aun no se borraron los datos");
JOptionPane.showMessageDialog(null, "No se han eliminado los datos", "Pelicula agregada", JOptionPane.WARNING_MESSAGE);

}
Clase Película (método consultar)
 try{
st = conexion.createStatement();
rs = st.executeQuery("SELECT * FROM pelicula where id = '"+numPel+"'");

while(rs.next()){
labTitulo.setText(""+rs.getObject(2));
labGenero.setText(""+rs.getObject(3));
labClas.setText(""+rs.getObject(4));
labCVta.setText(""+rs.getObject(5));
labCRta.setText(""+rs.getObject(6));

System.out.println("Consultando datos");
}

}catch(Exception e){
System.out.println("Aun no se han podido consultar los datos");
}
Clase TicketVenta (eventos de botones)
    public void actionPerformed(ActionEvent e){
if(botM == e.getSource()){
Videoclub vid = new Videoclub();
vid.crearVentanaV();
venta.dispose();
}

if(botAgP == e.getSource()){
consultar();
}

if(botAc == e.getSource()){
agregar();
}

if(botC == e.getSource()){
System.exit(0);
}
}
Clase TicketVenta (método consultar)
 try{
st = conexion.createStatement();
rs = st.executeQuery("SELECT * FROM pelicula where id = '"+num_pel+"'");

while(rs.next()){
titulo.setText(""+rs.getObject(2));
genero.setText(""+rs.getObject(3));
clasificacion.setText(""+rs.getObject(4));
costoVta.setText(""+rs.getObject(5));

System.out.println("Consultando datos");
String dato = String.valueOf(rs.getObject(5));
int x = Integer.parseInt(dato);
tot = tot + x;
total.setText(""+tot);

}

}catch(Exception e){
System.out.println("Aun no se han podido consultar los datos");
}
Clase TicketVenta (método agregar)
try{
st = conexion.createStatement();

st.executeUpdate("INSERT INTO ventas(total) VALUES ('"+tot+"')");

System.out.println("Se insertaron los datos");

JOptionPane.showMessageDialog(null, "Venta generada", "Ventas", JOptionPane.WARNING_MESSAGE);
}catch(Exception e){
System.out.println("No se insertaron los datos");

}

Referencias

Saludos.

Interfaz gráfica

Interfaz gráfica de mi proyecto.

Para realizar la interfaz gráfica utilice los Layouts GridLayout y GridBagLayout, este último fue el que mas utilice para acomodar los componentes como los JTextField, JButton, JLabel en los diferentes paneles que coloque en las ventanas.

Ventana prinicipal de menú


Ventana de Clientes


Ventana de Películas


Ventana de Ventas


Ventana de Rentas


Referencias

Saludos.