sábado, 12 de noviembre de 2011

Guardando Datos.

Competencia: Gestion en TI
Curso:Desarrollo cliente servidor
Actividad: Ejercicio 2 de Evaluacion.
 
Descripcion de la actividad.

Diseñar e implementar una aplicación que permita guardar, en una base de datos, los autos de
una persona, con el fin de llevar un registro de los autos que posee cierta persona sabiendo su rut. 
Este nivel de  programacion implementa los conocimientos adquiridos en el primer semestre, ya que mezcla el ramo de programacion I en java con Base de Datos (mysql).
Esta aplicacion seria un ejemplo de los grandes programas los cuales son  utilizados tanto el registro civil, asi como tambien las grandes empresas.
Esta aplicacion puede ser llevada a modo de prueba a pequeños negocios, y o arriendo de vehiculos, asiendole las modificaciones pertinentes, para que se ajusten a la necesidad de cada  ususario.

Descripcion del programa.

  El programa le muestra al ususario las personas que existen en la base de datos, con su rut y edad. Este debe ingresar el rut de la persona a la que le decea añadir un vehiculo, si ingresa bien el rut le pedira los datos del vehiculo y los ingresara a la base de datos, si no, le dara una segunda oportunidad de volver a ingresar el rut. Al final le preguntara si decea volver a ingresar mas vehiculos de ser la respuesta negativa finalizara el programa.

Ejemplos


Al ingresar el rut

11.    <Egrgrgt>                  →        <proceso>     →        <El rut no se encuentra desea volver a intentar>
22.    <???.>                                   <proceso>     →        <El rut no se encuentra desea volver a intentar>
33.    <……>                       →        <proceso>     →        <El rut no se encuentra desea volver a intentar> 


Analisis y solucion

El problema planteado constaba de una serie de pasos que se debían cumplir para llegar a una solución concreta, a continuación se analizaran los principales pasos o pedazos de códigos fundamentales para la ejecución del programa
.
(fig.1)

Como muestra la fig.1 establecemos la conexión, luego creamos el TreeSeet llamado tabla.
Realizamos la consulta a la base de datos para que nos  entregue todos los atributos que se encuentran en nuestra tabla llamada personas.
Los datos que nos entrega la consulta son guardados en el TreeSeet, para luego ser mostrados por pantalla. 


 (fig.2)

En la fig.2 verificamos si el rut se encuentra en el TreeSet, si se encuentra verificar tomara un valor boolean =true por lo que prosigue el código, si no se le envía un mensaje al usuario de que se equivoco al ingresar el rut y se le consulta si quiere seguir intentándolo.

(Fig.3)

Pedimos al usuario los datos del vehículo, y los guardamos en un array creado y llamado obj., como muestra la fig.10
 
(Fig.4)

 Diseñamos la sentencia de ingresa y recorremos el arrayList, para obtener los datos guardados anteriormente, los que son enviados a  las posiciones espectivas, el primer signo de interrogación será la primera posición, con lo que el dato que se pide con getPatente ira allí.


    




 
     Codigo fuente.


         String rut_propietario;

         String patente;

         String marca;

         String año;

         String modelo;

         DatosAutos obj;

         String res;

         String res2;

        

         boolean verificar;

         boolean masPersonas=true;

         boolean oportunidad=true;

        



        conexion conMysql = new conexion();

        TreeSet tabla = new TreeSet();

        Scanner Leer = new Scanner(System.in);

       

        try{

            Statement s = conMysql.getConexionMysql().createStatement();

            ResultSet rs = s.executeQuery("select * from persona");

         

        //guardamos en un treset la tabla he imprimimos la tabla.

        System.out.println("rut    |            nombre     |         edad " );

        while (rs.next())

              {

                tabla.add(rs.getString(1));

                tabla.add(rs.getString(2));

                tabla.add(rs.getString(3));

                System.out.println(rs.getString(1)+ "     " +rs.getString(2)+"       "+rs.getString(3));

                }

    

       

        

         /*iniciamos un while el cual nos ayudara a

         revertir un posible error que halla al ingreso del rut */      

         while(oportunidad==true){

               

                //pedimos el rut de la persona a la que quiere ponerle el nombre.

                 System.out.println("ingrese el rut de la persona a la que le desea agregar un vehiculo");

                 rut_propietario=Leer.nextLine();

                

                /*revisamos si se encuentra el rut ingresado por el ususario en el TreeSet*/

                 verificar = tabla.contains(rut_propietario);

       

         //si se encuentra el rut continua con el codigo

          if(verificar==true){  

                   System.out.println("el rut fue bien ingresado");       

                while(masPersonas){       //while para que si el usuario desea igresar ma autos a la persona

                    System.out.println("ingrese la Patente: Patron =(AB-CD-13");

                        patente=Leer.nextLine();

                    System.out.println("Ingrese Marca del vehiculo");

                        marca=Leer.nextLine();

                    System.out.println("ingrese modelo del vehiculo");

                        modelo=Leer.nextLine();

                    System.out.println("ingrese año del vehiculo");

                        año=Leer.nextLine();

                   

                    List<DatosAutos>DatosAutos = new ArrayList<DatosAutos>();

                    obj= new DatosAutos(patente, marca, modelo, año, rut_propietario);

                    DatosAutos.add(obj);

                   

                   

                    /*luego que se guardan los datos del vehiculos en el

                     * arrayList se le pregunta al usuario si desea ingresar

                     * mas vehiculos al mismo rut.*/

                    System.out.println("desea volver ingresar otro vehiculo: s/n");

                            res=Leer.nextLine();

                  

                    if(res.equalsIgnoreCase("s"))

                            { masPersonas =true;}

                               /*si decea ingresar mas automoviles*/

                    else{ masPersonas = false;

             

         try{

            //Crreamos la sentencias para hacer la insercion.

            String sql = "insert into vehiculo  values(?, ?, ?, ?, ?)";

            PreparedStatement ps = conMysql.getConexionMysql().prepareStatement(sql);

           /*Con Preparestetment hace que la sentencia sea un poco mas ordenada,

            *ya que cada signo de interrogacion es unaposicion que luego es ocupada

            *por un dato leido del arrayList*/

           

            /*con el for hacemos la lectura del array list, para pedir los datos

             de la clase DatosAutos*/

            for (int i = 0; i < DatosAutos.size(); i++)

                {

                DatosAutos Datos = DatosAutos.get(i);

                ps.setString(1, Datos.getPatente().trim());

                ps.setString(2, Datos.getMarca().trim());

                ps.setString(3, Datos.getModelo().trim());

                ps.setString(4, Datos.getYear().trim());

                ps.setString(5, Datos.getRutPropietario().trim());

                ps.executeUpdate();

                /*ejecutamos la sentencia, para que quede libre para ingresarle

                 * nuevos datos.*/

                }

             System.out.println("Los datos del vehiculo se han ingresado");

               System.out.println("satisfactoriamente");

                   System.out.println("****congratulation****");

                }

         catch(SQLException e)

                {

            System.out.println("error al ingresar los vehiculos");

            System.out.println("***FAIL***");

                }

         finally {

                  conMysql.closeConexionMysql();

                  System.out.println("Aplicacion finalizada");

                }

           }

      }

 }

                 

                 

                 

                 

  

                 

                  /*En el caso de que el usuario se equivocara o no ingresara

                   * un rut que no se encuentra en la tabla.*/

               else

                System.out.println("el rut que acaba de ingresar no se encuentra, desea volver a intentar: s/n");

                res2 =Leer.nextLine();

                           

                        if(res2.equalsIgnoreCase("s")) //si desea volver a intentarlo digitara "s" y volvera al inicio

                                   { oportunidad=true;}

                        else                            //si  responde "n" terminara el programa.

                                    {oportunidad=false;

                                     System.out.println("Programa terminado");

                        }

                    }

                }

            }

           

           

        /*Si exciste un error en la conexion con la base de datos sera

         detectada por la siguiente excedpcion*/

        catch (SQLException e)

            {

         System.out.println("Error en la consulta a la Base de Datos: " + e.getMessage());

             }

        

        finally

            {

           conMysql.closeConexionMysql();

            }

    }

}


Programa en ejecucion




Conclusion.

El programa realizado anteriormente fue parte de una prueba, por lo qu presenta un  gran grado de presiciony anti errores en el codigo fuente, por lo mismo el progra puede ser utilizado como modo de prueba para diferentes sectores del mercado.





































No hay comentarios:

Publicar un comentario