Anda di halaman 1dari 16

Daro Vergara Base de datos cedecom

BDCedecom

CREATE TABLE docentes(iddocente bigint(20) not null primary key, nombres varchar (20) not null, apellidos varchar(20), telefono bigint(15), email varchar (30), especialidad varchar (50) not null, perfil varchar(200) not null )ENGINE=InnoDB; CREATE TABLE carreras (cod_carrera varchar (4) not null primary key, nombres varchar (30) not null, duracion int (2) not null ) ENGINE= InnoDB; CREATE TABLE asignaturas (cod_asig varchar(3) not null primary key, nombres varchar (30) not null, inten_hor int (3) not null ) ENGINE= InnoBD;

CREATE TABLE alumnos (idalumnos bigint (15) not null primary key, nombres varchar (20) not null, apellido1 varchar (30) not null, apellido2 varchar (30) not null, direccion varchar (50) not null, telefono bigint(15), email varchar (30), estrato int (2) not null, carnet_salud varchar (50) not null, cod_carrera varchar (4) not null, index (cod_carrera),foreign key (cod_carrera) references carreras (cod_carrera) on delete cascade on update cascade) ENGINE=InnoBD; CREATE TABLE matriculas(idmatriculas varchar (5) not null primary key,idalumnos bigint (15) not null, semestre varchar (15) not null, fecha date, index (idalumnos),foreign key (idalumnos) references alumnos (idalumnos) on delete cascade on update cascade) ENGINE=InnoBD; CREATE TABLE aux_carrera_asig(cod_carrera varchar (4) not null, cod_asig varchar (3) not null, primary key (cod_carrera, cod_asig), index (cod_asig), foreign key (cod_asig) references asignaturas (cod_asig) on delete cascade on update cascade, index (cod_carrera),foreign key (cod_carrera) references carreras (cod_carrera) on delete cascade on update cascade) ENGINE=InnoBD; CREATE TABLE aux_asig_doc (cod_asig varchar (3) not null, iddocente bigint(15) not null, primary key (cod_asig, iddocente), index (iddocente), foreign key (iddocente) references docentes (iddocente) on delete cascade on update cascade, index (cod_asig), foreign key (cod_asig) references asignaturas (cod_asig) on delete cascade on update cascade) ENGINE=InnoBD; CREATE TABLE aux_alum_asig (idalumnos bigint(15) not null, cod_asig varchar (3) not null, primary key (idalumnos, cod_asig), index (idalumnos), foreign key (idalumnos) references alumnos (idalumnos) on delete cascade on update cascade, index (cod_asig), foreign key (cod_asig) references asignaturas (cod_asig) on delete cascade on update cascade) ENGINE=InnoBD; CREATE TABLE aux_mat_asig (idmatriculas varchar (4) not null, cod_asig varchar (3) not null, index (idmatriculas), foreign key (idmatriculas) references matriculas (idmatriculas) on delete cascade on update cascade, index (cod_asig), foreign key (cod_asig) references asignaturas (cod_asig) on delete cascade on update cascade) ENGINE=InnoBD; CREATE TABLE calificacion (cod_calificacion varchar (5) not null primary key, cod_asig varchar (3) not null, nota float (2) not null, idalumnos bigint (15) not null, iddocente bigint (15) 1

Daro Vergara

BDCedecom

not null, index (cod_asig), foreign key (cod_asig) references asignaturas (cod_asig) on delete cascade on update cascade, index (idalumnos), foreign key (idalumnos) references alumnos (idalumnos) on delete cascade on update cascade, index (iddocente), foreign key (iddocente) references docentes (iddocente) on delete cascade on update cascade)ENGINE=InnoBD; Lo primero es descargar el controlador mysql-connector-java-5.0.6-bin.jar Creamos el proyecto en netbeans y luego importamos el controlador a nuestra librera. Damos click en Test Package-->addJar/Folder

buscamos el archivo en el lugar donde lo hemos descargado el mysql-connector-java-5.0.6bin.jar y damos clic en ok

Daro Vergara

BDCedecom

si todo salio bien podemos ver el controlador mysql-connector-java-5.0.6-bin.jar en netbeans ahora vamos a visualizar los objetos de una tabla nos vamos al paquete new-->Jframe Form..

En este caso le damos el nombre de frmdocente y pulsamos ok

Daro Vergara

BDCedecom

Damos clic botn derecho sobre el diseo del formulario para cambiar el Set Layout --> AbsoluteLayout, lo cual nos permitir usar los objetos de control ms libremente.

Formulario para docentes

Daro Vergara

BDCedecom

En el formulario crearemos el panel donde colocaremos 6 campos de textos a la que renombraremos como txtCedula, txtNombres, txtApellidos, txtTelefono, txtEmail, txtEspecialidad y un rea de textos txtPerfil, tres botones btnBuscar, btnVer, btnCerrar En medio de nuestro formulario colocamos un panel con 5 botones los cuales nombraremos con btnNuevo, btnEliminar, btnModificar, btnGrabar, btnCancelar En la parte inferior en un panel colocamos una tabla llamada tblDocentes Nota: Para dar el nombre a la variable, por ejemplo a un botn, damos clic derecho sobre 5

Daro Vergara

BDCedecom

este y escogemos la accin change variable name y colocamos el nuevo nombre

Introducir el cdigo Para introducir el cdigo a cada fuente, damos clic en Source como se muestra la figura

La estructura es la siguiente.

Daro Vergara

BDCedecom

El archivo conexin.java Esta clase nos permite conectar a java con mysql package cedecom.conexion; /** * * @author Dario */ import java.sql.*; import javax.swing.JOptionPane; import java.io.*; public class conexion { public String db = "cedecom"; public String url = "jdbc:mysql://localhost/"+db; public String user = "root"; public String pass = ""; public conexion() { } public Connection Conectar() { Connection link = null; try { //Cargamos el Driver MySQL Class.forName("org.gjt.mm.mysql.Driver"); //Creamos un enlace hacia la base de datos link = DriverManager.getConnection(this.url, this.user, this.pass); } catch (Exception e) 7

Daro Vergara { JOptionPane.showMessageDialog(null, e); } return link; } } A trabajar en el formulario

BDCedecom

import cedecom.conexion.conexion; import java.sql.*; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JOptionPane; import javax.swing.table.DefaultTableModel; import javax.swing.*; import javax.swing.table.*; public class frmdocentes extends javax.swing.JFrame { DefaultTableModel dtm=new DefaultTableModel(); /* en el constructor ***/ /** Creates new form frmdocentes */ public frmdocentes() { initComponents(); String titulos[]={"Cdula","Nombres","Apellidos","Telfono","E-mail","Especialidad","Perfil"}; dtm.setColumnIdentifiers(titulos); tblDocentes.setModel(dtm); setSize(530,230); setLocation(200,200); } /* activar y campos de textos*/ void habilitar() { txtCedula.setEnabled(true); txtNombres.setEnabled(true); txtApellidos.setEnabled(true); 8

Daro Vergara txtTelefono.setEnabled(true); txtEmail.setEnabled(true); txtEspecialidad.setEnabled(true); txtPerfil.setEnabled(true); txtCedula.requestFocus(); } /* desactivar campos de textos*/ void inhabilitar() { txtNombres.setEnabled(false); txtApellidos.setEnabled(false); txtTelefono.setEnabled(false); txtEmail.setEnabled(false); txtEspecialidad.setEnabled(false); txtPerfil.setEnabled(false);

BDCedecom

} /* Limpiar campos de textos*/ public void limpiarObjetos(){ txtCedula.setText(""); txtNombres.setText(""); txtApellidos.setText(""); txtTelefono.setText(""); txtEmail.setText(""); txtEspecialidad.setText(""); txtPerfil.setText("");

} /* activar y desactivar botones*/ public void activaBotones(boolean n,boolean e,boolean m,boolean g){ btnNuevo.setEnabled(n); btnEliminar.setEnabled(e); btnModificar.setEnabled(m); btnGrabar.setEnabled(g); }

Edicin de los botones Para editar los botones, damos doble clic sobre el botn que queremos editar y se abre la parte de edicin indicndonos donde hay que colocar el texto (La parte amarilla nos indica lo el cdigo del botn que se abri al dar doble clic) Otra forma es hacer clic derecho sobre el botn y escoger EventsActionactionPerformed 9

Daro Vergara Como se ve en la figura

BDCedecom

/*boton buscar***/

En el botn de comando btnBuscar si est habilitado despus de dar clic en dicho botn, se proceder a la conexin con la base de datos, luego en la variable rs se almacenar los datos provenientes de la tabla marca. En la variable b se coloca el valor ingresado en el cuadro de texto txtCedula. Se define una variable booleana para manejar la situacin de xito o fracaso de la bsqueda. En la sentencia while utilizamos el mtodo next que pertenece al objeto rs, es decir, es un mtodo de la interfaz ResulSet. El mtodo next devuelve verdadero si encuentra la primera fila de informacin, las siguientes veces se desplaza en cada registro almacenado en el rs. La sentencia if que se encuentra dentro del while, su condicin lgica se har verdadero cuando encuentre el cdigo de estadio buscado, haciendo que los cuadros de textos se muestren los dems datos, es entonces que la variable encuentra recin se hace verdadero.

private void btnBuscarActionPerformed(java.awt.event.ActionEvent evt) { String b; String sentencia =""; conexion mysql = new conexion(); Connection cn = mysql.Conectar(); sentencia= "SELECT * FROM docentes"; if(btnNuevo.isEnabled()){ try{ 10

Daro Vergara Statement st = cn.createStatement(); ResultSet rs = st.executeQuery(sentencia); b=txtCedula.getText(); boolean encuentra=false; while(rs.next()){ if(b.equals(rs.getString(1))){ txtNombres.setText((String)rs.getString(2)); txtApellidos.setText((String)rs.getString(3)); txtTelefono.setText((String)rs.getString(4)); txtEmail.setText((String)rs.getString(5)); txtEspecialidad.setText((String)rs.getString(6)); txtPerfil.setText((String)rs.getString(7)); this.activaBotones(true, true, true, false); inhabilitar(); encuentra=true; break; } } if(encuentra==false){ limpiarObjetos(); txtCedula.setText("No existe"); txtCedula.requestFocus(); } } catch (SQLException e){ JOptionPane.showMessageDialog(null, e); } } /*boton Ver Lista ***/

BDCedecom

Luego en el botn: Ver listas de Marcas de comando btnVer, consiste en aumentar el tamao del formulario para visualizar el objeto JTable. Posteriormente se establece la conexin con la base de datos y en la variable rs se almacena los datos provenientes de la tabla de Estadio. Se define un vector denominado datos de tamao 7 elementos del tipo String que servir colocar los datos de una fila para luego agregarlo al objeto dtm que est vinculado al objeto JTable llamado

private void btnVerActionPerformed(java.awt.event.ActionEvent evt) { String sentencia =""; conexion mysql = new conexion(); Connection cn = mysql.Conectar(); sentencia= "SELECT * FROM docentes"; 11

Daro Vergara try{ this.setSize(530,500); int f,i; Statement st = cn.createStatement(); ResultSet rs = st.executeQuery(sentencia); String datos[]=new String[7]; f=dtm.getRowCount(); if(f>0) for(i=0;i<f;i++) dtm.removeRow(0); while(rs.next()){ datos[0]=(String)rs.getString(1); datos[1]=(String)rs.getString(2); datos[2]=(String)rs.getString(3); datos[3]=(String)rs.getString(4); datos[4]=(String)rs.getString(5); datos[5]=(String)rs.getString(6); datos[6]=(String)rs.getString(7); dtm.addRow(datos); } } catch (SQLException e){ JOptionPane.showMessageDialog(null, e); } } /*boton salir ***/

BDCedecom

private void btnCerrarActionPerformed(java.awt.event.ActionEvent evt) { this.dispose(); } /*boton nuevo ***/


Para el botn de comando btnNuevo, limpiamos los cuadros de textos con el mtodo limpiarObjetos(). Se inhabilita el cuadro de texto txtCedula y se enva el cursor al cuadro de texto txtNombres. Se inhabilta los botones de comando a excepcin de grabar ya que estamos en el momento de ingresar nuevos datos y proceder a almacenar.

private void btnNuevoActionPerformed(java.awt.event.ActionEvent evt) { limpiarObjetos(); txtCedula.requestFocus(); 12

Daro Vergara activaBotones(false,false,false,true); } /*boton grabar ***/

BDCedecom

En el botn de comando btnGrabar se inicia visualizando un mensaje de confirmacin para proceder a grabar, esto se logra usando el mtodo showConfirmDialog de la clase JOptionPane. Si la respuesta es S entonces la sentencia if su condicin lgica se har verdadera y por lo tanto establecemos conexin con la base de datos transportes, pasamos los datos ingresados a Variables como descrip y pas. En la variable comando establecemos la instruccin con el comando INSERT para luego usar el mtodo executeUpdate quien proceder a grabar los datos. Posteriormente se procede a cerrar la conexin con el mtodo close del objeto connection

private void btnGrabarActionPerformed(java.awt.event.ActionEvent evt) { int resp; resp=JOptionPane.showConfirmDialog(null," Desea grabar el registro ?"," pregunta",0); if(resp==0){ try { conexion mysql = new conexion(); Connection cn = mysql.Conectar(); String ident, nomb,apell,tel,email,espec,perf; String sentenciaSql=""; ident=txtCedula.getText(); nomb=txtNombres.getText(); apell=txtApellidos.getText(); tel=txtTelefono.getText(); email=txtEmail.getText(); espec=txtEspecialidad.getText(); perf=txtPerfil.getText(); sentenciaSql="INSERT INTO docentes(iddocente,nombres,apellidos,telefono,email,especialidad,perfil)" +" VALUES('"+ident+"','"+nomb+"','"+apell+"','"+tel+"','"+email+"','"+espec+"','"+perf+"') "; Statement st = cn.createStatement(); st.executeUpdate(sentenciaSql); cn.close(); activaBotones(true,false,false,false); limpiarObjetos(); txtCedula.setEnabled(true); } catch (SQLException ex) { Logger.getLogger(frmdocentes.class.getName()).log(Level.SEVERE, null, ex); } } 13

Daro Vergara } /*boton Eliminar ***/

BDCedecom

private void btnEliminarActionPerformed(java.awt.event.ActionEvent evt) { int resp; String comando; int cod; conexion mysql = new conexion(); Connection cn = mysql.Conectar(); resp=JOptionPane.showConfirmDialog(null,"Deseas eliminar el registro? ","pregunta",0); if(resp==0){ try{ cod=Integer.parseInt(txtCedula.getText()); comando="DELETE FROM docentes WHERE iddocente='"+cod+"'"; Statement st = cn.createStatement(); st.executeUpdate(comando); st.close(); activaBotones(true,false,false,false); limpiarObjetos(); } catch(SQLException e){ JOptionPane.showMessageDialog(null," Error "+e.toString()); } } } /*boton Modificar***/

private void btnModificarActionPerformed(java.awt.event.ActionEvent evt) { int resp; resp=JOptionPane.showConfirmDialog(null,"Deseas Modificar lo datos, menos cedula? ","pregunta",0); if(resp==0){ try{ conexion mysql = new conexion(); Connection cn = mysql.Conectar(); String nom,apell,Email,Telefono,Especialidad,Perfil,comando; int cod; // si cod fuera de tipo entero ... int cod // se hace casting cod=Integer.parseInt(txtcedula.getText()); cod=Integer.parseInt(txtCedula.getText()); 14

Daro Vergara nom=txtNombres.getText(); apell=txtApellidos.getText(); Telefono=txtTelefono.getText(); Especialidad=txtEspecialidad.getText(); Perfil=txtPerfil.getText();

BDCedecom

Email=txtEmail.getText(); comando="UPDATE docentes SET nombres='"+nom+"',apellidos='"+apell+"',telefono='"+Telefono+"',email='"+Email+"',especiali dad='"+Especialidad+"',perfil='"+Perfil+"'"; comando=comando+"WHERE iddocente='"+cod+"'"; // =+String.valueOf(cod); Statement st = cn.createStatement(); st.executeUpdate(comando); st.close(); activaBotones(true,false,false,false); limpiarObjetos(); } catch(SQLException e){ JOptionPane.showMessageDialog(null," Error "+e.toString()); } } }

/*boton cancelar***/

En el botn de comando Cancelar, luego de dar respuesta afirmativa se procede a limpiar los cuadros de textos, habilita el cuadro de texto txtCedula para su uso y se vuelve a su estado inicial

private void btnCancelarActionPerformed(java.awt.event.ActionEvent evt) { inhabilitar(); // TODO add your handling code here: int resp; resp=JOptionPane.showConfirmDialog(null,"Deseas Cancelar el proceso? ","pregunta",0); if(resp==0){ limpiarObjetos(); txtCedula.setEnabled(true); activaBotones(true,false,false,false); } }

15

Daro Vergara

BDCedecom

Los campos de textos private void txtCedulaActionPerformed(java.awt.event.ActionEvent evt) { txtCedula.transferFocus(); // TODO add your handling code here: } private void txtNombresActionPerformed(java.awt.event.ActionEvent evt) { txtNombres.transferFocus(); // TODO add your handling code here: } private void txtApellidosActionPerformed(java.awt.event.ActionEvent evt) { txtApellidos.transferFocus(); // TODO add your handling code here: } private void txtTelefonoActionPerformed(java.awt.event.ActionEvent evt) { txtTelefono.transferFocus(); // TODO add your handling code here: } private void txtEmailActionPerformed(java.awt.event.ActionEvent evt) { txtEmail.transferFocus(); // TODO add your handling code here: } private void txtEspecialidadActionPerformed(java.awt.event.ActionEvent evt) { txtEspecialidad.transferFocus(); // TODO add your handling code here: } private void txtPerfilActionPerformed(java.awt.event.ActionEvent evt) { txtEspecialidad.transferFocus(); // TODO add your handling code here: }

16