Prueba regresion lineal

  • 1,384 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to like this
No Downloads

Views

Total Views
1,384
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
31
Comments
1
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. 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-Servidorde tres niveles (MVC: Modelo-Vista-Controlador). Debe presentar dos alternativasde 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 unabase 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.
  • 3. Diagramas de Clases:
  • 4. Puebla en swing.Diagrama Clases
  • 5. Prueba en consola
  • 6. Diagrama flujos programa swingDiagrama de flujos- programa consola
  • 7. Codigo Fuente Programa swing:
  • 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 - DiegoTapia" ); 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 losnumerosn 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); doubleresultado_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); } }
  • 21. FUENTE PROGRAMA CONSOLA:
  • 22. MODELADO BASE DE DATOS:
  • 23. CAPTURAS:Programa en swing
  • 24. Programa consola