You are on page 1of 11

SEMANA03-MANTENIMIENTO DE TABLA

APLICACIN MODELO EXAMEN


En una clnica se requiere elaborar una aplicacin JDEVELOPER de gestin de reserva de habitaciones en un
Hotel que pueda obtener la siguiente informacin:
a) La lista de las Habitaciones
b) La lista de los Clientes
c) El registro de reservacin de habitacin.
d) Los nombres de los Clientes y cuantas veces se atendi.
e) La relacin de las Habitaciones
f) El Nombre de la Habitacin y cuantos clientes se atendieron.
PREGUNTAS
Realizar la aplicacin JDEVELOPER-Cliente Servidor con lo siguiente:
1. Elaborar un Modelo de Diseo de Base de Datos para realizar los requerimientos indicados en
los puntos a, b, c, d, e, f .Asuma su criterio para definir los atributos, claves primarias,
secundarias, concatenadas.... que correspondan.
2. Crear el Mantenimiento de las tablas (Considere MVC)
a) HABITACION con las opciones(Guardar, Eliminar, Buscar, Actualizar)
b) CLIENTES con las opciones(Guardar, Eliminar, Buscar, Actualizar)
3. Crear una aplicacin ADF que muestre la informacin MAESTRO-DETALLE en donde se muestra el
MAESTRO (Datos del Paciente) y el DETALLE (citas del paciente) , de tal manera que se observe por
cada paciente sus respectivas citas.

CONSIDERACIONES:
PREGUNTA1 (Enviar en formato MSPAINT)Nombre Archivo:MBDAPELLIDOPREG1
PREGUNTA2
o Enviar las Pantallas que demuestren que se ha realizado correctamente el proceso de
Guardar, Eliminar, Buscar, Actualizar.
o Enviar la aplicacin de mywork.
PREGUNTA 3
o Enviar las Pantallas que demuestren que se ha realizado correctamente la muestra de
informacin maestro-detalle
o Enviar la aplicacin de mywork
ENVIAR EL SCRIPT DE LA BASE DE DATOS
TODOS EN UNA SOLA CARPETA AL CORREO DEL CAMPUS

PUNTAJE
PREGUNTA PUNTAJE
1 5
2 5
2b 5
3 5





CAPA DE DATOS
La clase HabitacionBd permite la conexin a la Base de Datos y las operaciones de
Mantenimiento(guardar,actualizar,eliminar,buscar).
HabitacionBD
import java.sql.*;
import javax.swing.*;
public class HabitacionBd {
Connection con = null;
Statement stm = null;
ResultSet res = null;
Habitacion hab = null;

public HabitacionBd() {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("Jdbc:Odbc:dsnHotel","system","vandres");
stm = con.createStatement();

} catch (ClassNotFoundException e) {
JOptionPane.showMessageDialog(null, e.getMessage(), "Error Controlador",
JOptionPane.ERROR_MESSAGE);
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, e.getMessage(), "Error Base de Datos",
JOptionPane.ERROR_MESSAGE);
}



}

public void grabar(Habitacion h) {
try {
String sql = "insert into habitacion values('" + h.getNum() + "','" + h.getTip() + "',"+ h.getPre() + ")";
stm.executeUpdate(sql);
stm.close();
con.close();
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, e.getMessage(), "Error Base de datos",
JOptionPane.ERROR_MESSAGE);
}
}

public void eliminar(String n) {
try {
String sql = "delete from habitacion where num='" + n + "'";
stm.executeUpdate(sql);
stm.close();
con.close();
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, e.getMessage(), "Error Base de datos",
JOptionPane.ERROR_MESSAGE);
}
}
public void actualizar(Habitacion h) {
try {
String sql ="update habitacion set tipo='"+ h.getTip() + "', precio=" + h.getPre() + " where num='" + h.getNum()
+ "'";
stm.executeUpdate(sql);
stm.close();
con.close();
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, e.getMessage(), "Error Base de datos",
JOptionPane.ERROR_MESSAGE);
}
}
public void buscar(String n) {
try {
String sql = "select * from habitacion where num='" + n + "'";
res = stm.executeQuery(sql);
while (res.next())
hab = new Habitacion(res.getString(1), res.getString(2), res.getDouble(3));
stm.close();
con.close();
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, e.getMessage(), "Error Base de datos",
JOptionPane.ERROR_MESSAGE);
}
}



public Habitacion getHabitacion() {
return hab;
}
}

Clase Habitacion
Esta clase permite encapsular los tipos de datos utilizando los mtodos set y get

package client;
public class Habitacion {
String num, tip;
double pre;

public Habitacion(String n, String t, double p) {
this.num = n;
this.tip = t;
this.pre = p;
}

public String getNum() {
return num;
}

public String getTip() {
return tip;
}
public double getPre() {
return pre;
}
}





Clase Hotel
Esta clase permite el acceso a la clase Habitacion y HabitacionBd

package client;
public class Hotel {
public void grabarHabitacion(String n, String t, double p) {
Habitacion h = new Habitacion(n, t, p);
HabitacionBd hb = new HabitacionBd();
hb.grabar(h);
}
public void eliminarHabitacion(String n) {
HabitacionBd hb = new HabitacionBd();
hb.eliminar(n);
}
public void actualizarHabitacion(String n, String t, double p) {
Habitacion h = new Habitacion(n, t, p);
HabitacionBd hb = new HabitacionBd();
hb.actualizar(h);
}
public Habitacion buscarHabitacion(String n) {
HabitacionBd hb = new HabitacionBd();
hb.buscar(n);
Habitacion hab = hb.getHabitacion();
return hab;
}
public void grabarCliente(String dni, String nomcli, String clase, double cons) {
Cliente h = new Cliente(dni, nomcli, clase, cons);
ClienteBd hb = new ClienteBd();
hb.grabar(h);
}
public void eliminarCliente(String dni) {
ClienteBd hb = new ClienteBd();
hb.eliminar(dni);
}
public void actualizarCliente(String dni, String nomcli, String clase, double cons) {
Cliente h = new Cliente(dni, nomcli, clase, cons);
ClienteBd hb = new ClienteBd();
hb.actualizar(h);
}
public Cliente buscarCliente(String dni) {
ClienteBd hb = new ClienteBd();
hb.buscar(dni);
Cliente cli = hb.getCliente();
return cli;
}
}



Clase HabitacionGui

Esta clase muestra la interfase de presentacin



package client;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;


import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
public class HabitacionGui extends JFrame {
private JTextField t1 = new JTextField();
private JTextField t3 = new JTextField();
private JButton Grabar = new JButton();
private JButton jButton2 = new JButton();
private JScrollPane jScrollPane1 = new JScrollPane();
private JTextField t2 = new JTextField();
Hotel h=new Hotel();
private JButton jButton3 = new JButton();
private JButton jButton4 = new JButton();
private JButton jButton5 = new JButton();
private JLabel jLabel1 = new JLabel();
private JLabel jLabel2 = new JLabel();
private JLabel jLabel3 = new JLabel();
private JButton btnlistar = new JButton();
private JTable jtQuery = new JTable();
private BorderLayout borderLayout1 = new BorderLayout();

public HabitacionGui() {
try {
jbInit();mostrartabla();
} catch (Exception e) {
e.printStackTrace();
}

}
public void grabar(){
h.grabarHabitacion(t1.getText(),t2.getText(),Double.parseDouble(t3.getText()));
JOptionPane.showMessageDialog(null,"Registro grabado");
}
public void buscar(){
Habitacion hab=h.buscarHabitacion(t1.getText());
if(hab!=null){
t1.setText(hab.getNum());
t2.setText(hab.getTip());
t3.setText(String.valueOf(hab.getPre()));
}else{
JOptionPane.showMessageDialog(null,"No existe el registro solicitado");
t1.setText("");
}
}
public void actualizar(){
h.actualizarHabitacion(t1.getText(),t2.getText(),Double.parseDouble(t3.getText()));
JOptionPane.showMessageDialog(null,"Registro actualizado");
}



public void eliminar(){
h.eliminarHabitacion(t1.getText());
JOptionPane.showMessageDialog(null,"Registro eliminado");
cancelar();
}
public void cancelar(){
t1.setText("");t2.setText("");t3.setText("");t1.requestFocus();
}

private void jbInit() throws Exception {
this.getContentPane().setLayout( null );
this.setSize(new Dimension(422, 373));
t1.setBounds(new Rectangle(180, 15, 115, 25));
t2.setBounds(new Rectangle(185, 75, 110, 35));
t3.setBounds(new Rectangle(180, 90, 115, 30));
Grabar.setText("Grabar");
Grabar.setBounds(new Rectangle(5, 135, 75, 45));
Grabar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jButton1_actionPerformed(e);
}
});
jButton2.setText("Buscar");
jButton2.setBounds(new Rectangle(80, 135, 80, 45));
jButton2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jButton2_actionPerformed(e);
}
});
jScrollPane1.setBounds(new Rectangle(195, 100, 2, 2));
t2.setBounds(new Rectangle(180, 50, 115, 30));
jButton3.setText("Actualizar");
jButton3.setBounds(new Rectangle(160, 135, 80, 45));
jButton3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jButton3_actionPerformed(e);
}
});
jButton4.setText("Eliminar");
jButton4.setBounds(new Rectangle(240, 135, 85, 45));
jButton4.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jButton4_actionPerformed(e);
}
});
jButton5.setText("Cancelar");
jButton5.setBounds(new Rectangle(325, 135, 85, 45));
jButton5.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jButton5_actionPerformed(e);
}


});
jLabel1.setText("Numero");
jLabel1.setBounds(new Rectangle(50, 15, 75, 25));
jLabel1.setFont(new Font("Tahoma", 1, 15));
jLabel2.setText("Tipo");
jLabel2.setBounds(new Rectangle(50, 50, 80, 25));
jLabel2.setFont(new Font("Tahoma", 1, 14));
jLabel3.setText("Precio");
jLabel3.setBounds(new Rectangle(50, 90, 80, 25));
jLabel3.setFont(new Font("Tahoma", 1, 14));
btnlistar.setText("Lista");
btnlistar.setBounds(new Rectangle(325, 40, 81, 22));
btnlistar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
btnlistar_actionPerformed(e);
}
});
jtQuery.setBounds(new Rectangle(20, 190, 375, 140));
jtQuery.setBorder(BorderFactory.createLineBorder(Color.black, 1));
jtQuery.setLayout(borderLayout1);
this.getContentPane().add(jtQuery, null);
this.getContentPane().add(btnlistar, null);
this.getContentPane().add(jLabel3, null);
this.getContentPane().add(jLabel2, null);
this.getContentPane().add(jLabel1, null);
this.getContentPane().add(jButton5, null);
this.getContentPane().add(jButton4, null);
this.getContentPane().add(jButton3, null);
this.getContentPane().add(t2, null);
this.getContentPane().add(jScrollPane1, null);
this.getContentPane().add(jButton2, null);
this.getContentPane().add(Grabar, null);
this.getContentPane().add(t3, null);
this.getContentPane().add(t1, null);
}
public void mostrartabla()
{ Connection con=null;
Statement stm=null;
ResultSet rs=null;
try {
//Para establecer el modelo al JTable
final DefaultTableModel modelo = new DefaultTableModel();
this.jtQuery.setModel(modelo);
//Para conectarnos a nuestra base de datos
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con=DriverManager.getConnection("Jdbc:Odbc:dsnHotel","system","vandres");
stm=con.createStatement();
rs=stm.executeQuery("Select * from habitacion");





//Obteniendo la informacion de las columnas que estan siendo consultadas
ResultSetMetaData rsMd = rs.getMetaData();
//La cantidad de columnas que tiene la consulta
int cantidadColumnas = rsMd.getColumnCount();
//Establecer como cabezeras el nombre de las colimnas
for (int i = 1; i <= cantidadColumnas; i++) {
modelo.addColumn(rsMd.getColumnLabel(i));
}
//Creando las filas para el JTable
while (rs.next()) {
Object[] fila = new Object[cantidadColumnas];
for (int i = 0; i < cantidadColumnas; i++) {
fila[i]=rs.getObject(i+1);
}
modelo.addRow(fila);
}
rs.close();
con.close();
} catch (Exception ex) {
ex.printStackTrace();
}

}
private void jButton1_actionPerformed(ActionEvent e) {
grabar();
}
private void jButton2_actionPerformed(ActionEvent e) {
buscar();
}
private void jButton3_actionPerformed(ActionEvent e) {
actualizar();
}
private void jButton4_actionPerformed(ActionEvent e) {
eliminar();
}
private void jButton5_actionPerformed(ActionEvent e) {
cancelar();
}
private void btnlistar_actionPerformed(ActionEvent e) {
mostrartabla();
}
}