Contenu connexe Similaire à Prueba regresion lineal Similaire à Prueba regresion lineal (20) Prueba regresion lineal1. Fecha de Entrega: 01 de diciembre de 2011.
Integrantes: -Robert Calbul Yevilao.
-Camilo Friz Gómez.
-Jonathan Lincoqueo.
-Diego Tapia .
2. Actividades de Aplicación:
Objetivos: Desarrollar una aplicación basada en la arquitectura Cliente-Servidor
de tres niveles (MVC: Modelo-Vista-Controlador). Debe presentar dos alternativas
de solución al problema de ayudar a ajustar una curva, usando regresión lineal,
para lo cual, la aplicación debe permitir al usuario ingresar los puntos (x,y) en una
base de datos MySql.
Paso 1: Ejemplos Entrada/Salida:
ENTRADA > [PROGRAMA] > Salida
12.5,1.3 > [PROGRAMA] > Éxito al ingresar.
12,10 > [PROGRAMA] > Éxito al ingresar.
1.0,1.5 > [PROGRAMA] > Éxito al ingresar.
Abc,1.5 A > [PROGRAMA] > Error en el ingreso de datos.
ABC,d-c > [PROGRAMA] > Error en el ingreso de datos.
1-5,1-2 > [PROGRAMA] > Error en el ingreso de datos.
@1,# > [PROGRAMA] > Error en el ingreso de datos.
12.1,10.1 > [PROGRAMA] > Éxito al ingresar.
10 > [PROGRAMA] > Error en el ingreso de datos.
1.2 > [PROGRAMA] > Error en el ingreso de datos.
> [PROGRAMA] > Error en el ingreso de datos.
2,45,67 > [PROGRAMA] > Error en el ingreso de datos.
0012,0010 > [PROGRAMA] > Éxito al ingresar.
1 2,1,2 > [PROGRAMA] > Error en el ingreso de datos.
Tres,cuatro > [PROGRAMA] > Error en el ingreso de datos.
8. import com.mysql.jdbc.PreparedStatement;
import conexion.conexion;
import java.awt.Color;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;
import java.awt.event.*;
import java.sql.ResultSet;
import java.util.*;
import javax.swing.table.DefaultTableModel;
public class Prueba21 implements ActionListener{
String tabla;
conexion con;
JFrame ventana=new JFrame( "Regresion lineal" );
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable jTable1;
DefaultTableModel modelo;
List <x_e_y> lista=new ArrayList <x_e_y>();
JScrollPane j =new JScrollPane();
JPanel p1= new JPanel();
9. JPanel p2= new JPanel();
JPanel p3= new JPanel();
int contador=0;
String funcion;
private JButton consulta;
private JLabel jLabel2;
private JLabel jLabel3;
private JLabel jLabel4;
private JTextField texto_a;
private JTextField texto_b;
private JTextField texto_r;
public JPanel panel1(JPanel jPanel1){
jPanel1.setBorder(javax.swing.BorderFactory.createEtchedBorder());
jLabel4 = new JLabel();
texto_r = new JTextField();
texto_b = new JTextField();
jLabel3 = new JLabel();
jLabel2 = new JLabel();
texto_a = new JTextField();
consulta = new JButton();
jPanel1.setLayout(null);
10. jLabel4.setText( "R²:" );
consulta.setText( "consultar datos" );
jLabel3.setText( "b: " );
jLabel2.setText( "a: " );
jPanel1.add(consulta);
jPanel1.add(jLabel4);
jPanel1.add(texto_r);
jPanel1.add(texto_b);
jPanel1.add(jLabel3);
jPanel1.add(jLabel2);
jPanel1.add(texto_a);
consulta.addActionListener(this);
jPanel1.setBackground(Color.white);
jPanel1.setBounds(380, 20, 300, 140);
texto_a.setBounds(50, 80, 230, 20);
texto_r.setBounds(50, 110, 230, 20);
consulta.setBounds(20, 10, 130, 23);
jLabel3.setBounds(20, 80, 47, 20);
texto_b.setBounds(50, 50, 230, 20);
jLabel2.setBounds(20, 50, 47, 14);
jLabel4.setBounds(20, 110, 190, 14);
return jPanel1;
}
private JButton eliminar_fila;
11. private JButton eliminar_fila_n;
private JTextField fila_ingreso;
private JLabel jLabel10;
private JLabel jLabel11;
private JLabel jLabel9;
public JPanel panel2(JPanel jPanel2){
jPanel2 = new JPanel();
jLabel9 = new JLabel();
eliminar_fila = new JButton();
eliminar_fila_n = new JButton();
fila_ingreso = new JTextField();
jLabel10 = new JLabel();
jLabel11 = new JLabel();
jPanel2.setBorder(javax.swing.BorderFactory.createEtchedBorder());
jPanel2.setLayout(null);
jLabel9.setText( "Eliminar fila anterior" );
eliminar_fila.setText( "OK" );
eliminar_fila_n.setText( "OK" );
jLabel10.setText( "ingrese n° de fila" );
jLabel11.setText( "Eliminar fila " );
jPanel2.add(jLabel9);
12. jPanel2.add(eliminar_fila);
jPanel2.add(eliminar_fila_n);
jPanel2.add(jLabel11);
jPanel2.add(jLabel10);
jPanel2.setLayout(null);
jPanel2.add(fila_ingreso);
eliminar_fila.addActionListener(this);
eliminar_fila_n .addActionListener(this);
jPanel2.setBackground(Color.white);
jPanel2.setBounds(380, 170, 300, 130);
jLabel11.setBounds(20, 20, 100, 14);
jLabel10.setBounds(20, 40, 110, 20);
fila_ingreso.setBounds(130, 40, 50, 20);
eliminar_fila_n.setBounds(200, 40, 80, 20);
eliminar_fila.setBounds(80, 100, 130, 23);
jLabel9.setBounds(50, 80, 180, 14);
return jPanel2;
}
private JButton guardar_salir;
private JLabel jLabel1;
private JLabel jLabel8;
private JPanel jPanel3;
public JPanel panel3(JPanel jPanel3,String e[],Object[][] matriz){
13. jScrollPane1 = new JScrollPane();
jTable1 = new JTable();
jTable1.setModel(new DefaultTableModel(matriz,e));
modelo=(DefaultTableModel) jTable1.getModel();
jScrollPane1.setViewportView(jTable1);
guardar_salir = new JButton();
jLabel1 = new JLabel();
jLabel8 = new JLabel();
jPanel3.setLayout(null);
guardar_salir.setText( "guardar y salir" );
jLabel1.setText( "tabla de datos" );
jLabel8.setText( "jonathan Lincoqueo - Camilo Friz - Robert Calbul - Diego
Tapia" );
jPanel3.add(guardar_salir);
jPanel3.add(jLabel1);
jPanel3.add(jLabel8);
jPanel3.add(jScrollPane1);
guardar_salir.addActionListener(this);
jTable1.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent e)
14. {
int fila = jTable1.rowAtPoint(e.getPoint());
fila_ingreso.setText( "" +fila);
}
});
jPanel3.setBackground(Color.white);
jPanel3.setBounds(0, 0, 690, 450);
jLabel1.setBounds(21, 5, 144, 19);
jScrollPane1.setBounds(10, 32, 340, 390);
jLabel8.setBounds(60, 430, 620, 14);
guardar_salir.setBounds(420, 330, 230, 70);
return jPanel3;
}
Prueba21(String tabla,String funcion) throws SQLException{
this.funcion=funcion;
this.tabla=tabla;
Object[][] filas= {{null,null}};
String enunciados[]={ " x " , " y " };
panel3(p1,enunciados,filas);
p1.add(panel1(p2));
p1.add(panel2(p3));
if(funcion.equals( "select " )){
llenar_tabla();
}
ventana.setLayout(null);
15. ventana.add(p1);
ventana.setSize(700,500);
ventana.setVisible(true);
jTable1.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent evt) {
if(modelo.getValueAt(contador,0)!=null &&
modelo.getValueAt(contador,1)!=null){
modelo.addRow(new Object[0]);
contador++;
}
}
});
}
public void llenar_tabla() throws SQLException{
con=new conexion();
PreparedStatement select= (PreparedStatement)
con.getConexionMysql().prepareStatement(""
+ "select * from " +this.tabla);
ResultSet rs = select.executeQuery();
while (rs.next()) {
16. System.out.println(rs.getDouble(2)+ " " +rs.getDouble(3));
modelo.addRow(new Object[0]);
modelo.setValueAt(rs.getDouble(2)+ "" ,contador,0);
modelo.setValueAt(rs.getDouble(3)+ "" ,contador,1);
contador++;
}
modelo.removeRow(modelo.getRowCount()-1);
contador--;
con.closeConexionMysql();
}
public void insertar() throws SQLException{
con=new conexion();
PreparedStatement delete= (PreparedStatement)
con.getConexionMysql().prepareStatement(""
+ "delete from " +this.tabla+ ";" );
delete.executeUpdate();
PreparedStatement insert= (PreparedStatement)
con.getConexionMysql().prepareStatement(""
+ "INSERT INTO " +this.tabla+ "(x,y)values(?,?);" );
for (Iterator <x_e_y>datos= lista.iterator(); datos.hasNext();){
x_e_y e= datos.next();
insert.setDouble(1,e.getX());
insert.setDouble(2,e.getY());
insert.executeUpdate();
}
}
public void generar_listas(){
17. try{
for(int filas=0;filas<=contador;filas++){
double datos_x=Double.parseDouble(modelo.getValueAt(filas,0)+ "" );
double datos_y=Double.parseDouble(modelo.getValueAt(filas,1)+ "" );
lista.add(new x_e_y(filas,datos_x,datos_y));
System.out.println( "raro muy raro" );
}
}catch(NumberFormatException e){
JOptionPane.showMessageDialog(null,"ingrese solo numeros y/o valide los
numerosn validacion == enter","Error",JOptionPane.ERROR_MESSAGE);
}
}
}
public void actionPerformed(ActionEvent e) {
Object fuente = e.getSource();
if (fuente==eliminar_fila && modelo.getRowCount()!=0){
modelo.removeRow(modelo.getRowCount()-1);
contador--;
}
if (fuente==eliminar_fila_n && modelo.getRowCount()!=0){
modelo.removeRow(Integer.parseInt(fila_ingreso.getText()));
fila_ingreso.setText( "" );
contador--;
}
if (fuente==guardar_salir) {
18. contador--;
lista.clear();
generar_listas();
try {
insertar();
} catch (SQLException ex) {
Logger.getLogger(Prueba21.class.getName()).log(Level.SEVERE, null,
ex); }
}
if (fuente==consulta){
lista.clear();
generar_listas();
if(!funcion.equals( "select" )) {
contador --;
}
calculo();
}
}
public void calculo(){
double promedio_x=0,promedio_y=0,suma_x=0,suma_y=0,suma_x_e_y=0;
contador++;
double x_menos_promedio_x[]=new double[contador];
double y_menos_promedio_y[]=new double[contador];
19. for (Iterator <x_e_y>datos= lista.iterator(); datos.hasNext();){
x_e_y e= datos.next();
System.out.println( "x" +e.getX());
suma_x+=e.getX();
suma_y+=e.getY();
}
promedio_x=suma_x/contador;
promedio_y=suma_y/contador;
int i=0;
for (Iterator <x_e_y>datos= lista.iterator(); datos.hasNext();){
x_e_y e= datos.next();
suma_x_e_y+=(e.getX()-promedio_x)*(e.getY()-promedio_y);
x_menos_promedio_x[i]=(e.getX()-promedio_x);
y_menos_promedio_y[i]=(e.getY()-promedio_y);
i++;
}
double suma_x_cuadrado=0,suma_y_cuadrado=0;
for(int jj=0;jj<contador;jj++){
suma_x_cuadrado+=((x_menos_promedio_x[jj])*(x_menos_promedio_x[jj]));
suma_y_cuadrado+= y_menos_promedio_y[jj]* y_menos_promedio_y[jj];
}
20. double resultado_b=(suma_x_e_y/suma_x_cuadrado);
double
resultado_r=((suma_x_e_y*suma_x_e_y)/(suma_x_cuadrado*suma_y_cuadrado));
double resultado_a=(promedio_y-(resultado_b*promedio_x));
if(suma_x_e_y==0 ||suma_x_cuadrado==0){
resultado_a=promedio_y;
resultado_r=1;
}
texto_b.setText(""+resultado_b);
texto_a.setText(""+resultado_a);
texto_r.setText(""+resultado_r);
}
}