domingo, 5 de junio de 2011

[SEGUNDA OPORTUNIDAD] Proyecto Final Taller

Proyecto Final

Video del programa funcionando, muy simple ya que no logre implementar una interfaz gráfica, pero funciona y es lo que importa.




Códigos finales del programa:

Para mi base de datos:
package Organidatabase;

import java.sql.*;

public class Database {
 
 PreparedStatement stmt = null;
 ResultSet rs=null;
 
 public final static String drv ="com.mysql.jdbc.Driver";
 public final static String db ="jdbc:mysql://localhost:3306/organischema";
 public final static String user ="***";
 public final static String pword="***";
 
 Connection ct;
 public Statement st;

 public Database(){
  try{
   Class.forName(drv);
   ct =DriverManager.getConnection(db, user, pword);
   st =ct.createStatement();
  }catch(Exception e){
   System.err.println("No se pudo conectar a la base de datos.");
   return;
  }
 }

 public Statement getSt(){
  return st;
 }

}


Aqui mis eventos:
package Organidatabase;

import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Locale;
import java.util.Scanner;

public class Eventos extends Database{
 
 String lugar;
 String fecha;
 String hora;
 
 public Eventos(){}
 
 public void total_eventos(String id){
  try{
   int i = 0;
   stmt = ct.prepareStatement("SELECT * FROM events, Alumnos WHERE events.idAlumnos = "+id+" and Alumnos.idAlumnos ="+id+"");
   rs= stmt.executeQuery();
   while(rs.next()){
    i++;
   }
   if(i!=0){
    System.out.println("Tiene "+i+" eventos pendientes.");
   }
   else{}
  }catch(SQLException e){
   System.out.println("No tiene eventos");
  } 
 }
 
 public void show_event(String id){
  try{
   int i = 0;
   stmt = ct.prepareStatement("SELECT * FROM events, Alumnos WHERE events.idAlumnos = "+id+" and Alumnos.idAlumnos ="+id+"");
   rs= stmt.executeQuery();
   while(rs.next()){
    i++;
    System.out.println("*******************************************************");
    System.out.println("("+i+")");
    System.out.println("Lugar: "+rs.getString("events.place"));
    System.out.println("El "+rs.getString("events.date")+"a las "+rs.getString("events.time"));
   }
   System.out.println("*******************************************************");
  }catch(SQLException e){}
 }
 
 public void make_event(String id){
  System.out.print("Lugar: ");
  Scanner a = new Scanner(System.in);
  lugar = a.nextLine();
  lugar = lugar.replace(' ','_');
  System.out.print("Fecha (dd/MM/aaaa): ");
  fecha = a.next();
  while(comprobar_fecha(fecha)==false){
   System.out.println("Fecha incorrecta");
   System.out.print("Fecha (dd/MM/aa): ");
   fecha = a.next();
  }
  System.out.print("Hora: ");
  hora = a.next();
  while(comprobar_hora(hora)==false){
   System.out.println("Hora incorrecta");
   System.out.print("Hora (hh:mm): ");
   hora = a.next();
  }
  send(id);
 }
 
 private boolean comprobar_hora(String hora) {
  int hora1 = Integer.parseInt(hora.substring(0, 2));
  int hora2 = Integer.parseInt(hora.substring(3, 5));
  if(hora1>23||hora2>59){
  return false;
  }
  else{
  return true;
  }
 }


 private static boolean comprobar_fecha(String fechax) {
  try {
  SimpleDateFormat formatoFecha = new SimpleDateFormat("dd/MM/yy", Locale.getDefault());
  formatoFecha.setLenient(false);
  formatoFecha.parse(fechax);
  } catch (ParseException e) {
  return false;
  }

  return true;
  }
 
 public void send(String id){
  try {
   stmt = ct.prepareStatement("INSERT INTO events (place, date, time, idAlumnos) VALUES (?,?,?,?)");
   stmt.setString(1, lugar);
   stmt.setString(2, fecha);
   stmt.setString(3, hora);
   stmt.setString(4, id);
   stmt.executeUpdate();
   stmt.close();

  } catch (SQLException e) {}
 }
 
}

Para mis horarios:
package Organidatabase;

import java.io.IOException;
import java.sql.SQLException;
import java.util.*;

public class Horario extends Database{

 public String dayselection;

 public String subselection;

 public Horario(){
  
 }

 public void phrs(int a){
  if(a==2)
   System.out.print("Profesor: ");
  if(a==3)
   System.out.print("Examen 1: ");
  if(a==4)
   System.out.print("Examen 2: ");
  if(a==5)
   System.out.print("Faltas: ");
  if(a==6)
   System.out.print("Tareas: ");
  if(a==7)
   System.out.print("Tareas no cumplidas: ");
  if(a==8)
   System.out.print("Total de tareas: ");
  if(a==9)
   System.out.print("Promedio: ");
 }

 public void showAll(String matt, String pass) throws IOException {
  boolean selec = true;
  while(selec == true){
  String dia = new String();
  Scanner a = new Scanner(System.in);
  System.out.println("Introduzca un dia (Lu, Ma, Mi, Ju, Vi, Sa): ");
  dia = a.next();
  dayselection = dia;
  try{
   do{
    stmt = ct.prepareStatement("SELECT * FROM Alumnos, "+dia+" WHERE  Alumnos.idAlumnos = ? AND Alumnos.idPass = ? AND Alumnos.idAlumnos = "+dia+".idAlumnos");

    stmt.setString(1,matt);
    stmt.setString(2, pass);
    rs = stmt.executeQuery();
    if(rs.next()){
     System.out.println("Seleccione Horario: ");
     String sub = a.next();
     subselection=rs.getString(sub);
     fill_data();
     rs.close();
    }
    else{
     System.out.print("Error");
     rs.close();
    }
   }while(rs.isClosed()==false);
  }catch(SQLException e){
   System.out.println("No se pudo realizar la consulta.");
  }
  System.out.print("¿Desea ver otra materia?(S/N): ");
  char sel= (char) System.in.read();
   switch(sel) {
   case 's': 
    selec = true;
       break;
       
   case 'S':
    selec=true;
    break;
   
   default:
    selec = false;
       break;
  }
  }
 }

 public void fill_data(){
  try{
   stmt = ct.prepareStatement("SELECT * FROM "+subselection+", "+dayselection+" WHERE "+dayselection+".idAlumnos = "+subselection+".idAlumnos");
   rs = stmt.executeQuery();
   while(rs.next()){
    System.out.println(subselection.replace('_', ' '));
    for(int i=2; i<=9; i++){
     phrs(i);
     if(rs.getString(i) == null){
      System.out.println("Sin Datos");
     }
     else{
      System.out.println(rs.getString(i));
     }
    }

   }
  }catch(SQLException i){
   System.out.println("No tiene materia asignada en ese horario.");
   
  }
 }
 
 

}

Tambien las notas:
package Organidatabase;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class Notas extends Database{
 String nota;
 String para;
 
 InputStreamReader isr = new InputStreamReader(System.in);
 BufferedReader br = new BufferedReader (isr);

  public Notas () {
     }

  public void nuevo(String id){
   try{
    int i=0;
    stmt = ct.prepareStatement("SELECT * FROM notes, Alumnos WHERE notes.idTo = "+id+" and Alumnos.idAlumnos = notes.idAlumnos");
    rs = stmt.executeQuery();
    while(rs.next()){
     if(rs.getBoolean("visto")==false){
      i++;
     }
    }
    if(i==0){
     System.out.println("No tiene mensajes.");
    }
    else{
     System.out.println("Tiene "+i+" mensajes nuevos.");
    }
   }
   catch(SQLException e){}
 }

  public String note() throws IOException{
    System.out.println("Escriba su nota: ");
        nota=br.readLine();
        nota = nota.replace(' ','_');
        return nota;
  }

  public String to(){
   System.out.println("Para: ");
      Scanner a = new Scanner(System.in);
      para=a.next();
      para=comprueba(para);
      return para;
  }

  public void show_notes(String id){
   try{
    int i=0;
    stmt = ct.prepareStatement("SELECT * FROM notes, Alumnos WHERE notes.idTo = "+id+" and Alumnos.idAlumnos = notes.idAlumnos");
    rs = stmt.executeQuery();
    while(rs.next()){
     int x = rs.getInt(1);
     i++;
     System.out.println("*******************************************************");
     if(rs.getBoolean("visto")==false){
      System.out.print("Nuevo ");
      try{
       stmt = ct.prepareStatement("UPDATE notes SET visto = ? WHERE Idnote = "+x+"");
       stmt.setBoolean(1, true);
       stmt.executeUpdate();
       stmt.close();
      }catch(SQLException e){}
    }
     System.out.println("Mensaje: "+i);
     System.out.println(rs.getString("Alumnos.NomApell")+" ("+rs.getString("notes.idAlumnos")+"):");
     System.out.println(rs.getString("note").replace('_',' '));
     System.out.println("Recibida el "+rs.getString("fecha")+" a las "+rs.getString("hora"));
    }
    System.out.println("*******************************************************");
    if(i==0){
     System.out.println("No hay mensajes.");
    }
    else{
     System.out.print("Desea eliminar una nota?: ");
     Scanner a = new Scanner(System.in);
     String line = a.nextLine();
     char s = line.charAt(0);
     if(s=='S'||s=='s'){
      System.out.print("Seleccione el número de mensaje: ");
      int y = a.nextInt();
      eliminar(y,id);
     }
    }
    
   }
   catch(SQLException e){}
 }

  public void eliminar(int sel, String id){
   int x;
   int i=0;
   try{
    stmt = ct.prepareStatement("SELECT * FROM notes, Alumnos WHERE notes.idTo = "+id+" and Alumnos.idAlumnos = notes.idAlumnos");
    rs = stmt.executeQuery();
    while(rs.next()){
     i++;
     x=rs.getInt(1);
     if(i==sel){
    try{
      stmt = ct.prepareStatement("DELETE FROM notes WHERE Idnote="+x+"");
      stmt.executeUpdate();
      stmt.close();
      }catch(SQLException e){}
     }
    }
   }catch(SQLException e){
    System.out.println("wey");
   }

  }


  public String comprueba(String para){
   
 try {
  stmt = ct.prepareStatement("SELECT idAlumnos FROM Alumnos");    
  rs = stmt.executeQuery();
  while(para!=rs.getString("idAlumnos")){
   if(para.equals(rs.getString("idAlumnos")))
    para= rs.getString("idAumnos");
   else{
    rs.next();
    para= null;
   }
  }
 }catch (SQLException e) {
  }
 return para;
  }
   
  public String get_all(String note, String to, String from){
  Date fecha = new Date();
  SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yy");
  SimpleDateFormat formatohora = new SimpleDateFormat("hh:mm a");
  String cadenaFecha = formato.format(fecha);
  String cadenaHora =formatohora.format(fecha);
  try{
   stmt = ct.prepareStatement("INSERT INTO notes (idAlumnos, note, idTo, fecha, hora) VALUES (?,?,?,?,?)");
   stmt.setString(1,from);
   stmt.setString(2, note);
   stmt.setString(3, to);
   stmt.setString(4, cadenaFecha);
   stmt.setString(5, cadenaHora);
   stmt.executeUpdate();
   stmt.close();
   String all = "Se envió exitosamente:\n"+note+"\nPara:\n"+to;
   return all;
  }catch(SQLException i){
   System.out.println("Ocurrio un error.");
   return null;
  }
 }
}
Sus respectivas pruebas unitarias:
package Organidatabase;

import java.io.IOException;

import junit.framework.TestCase;

public class TestNotas extends TestCase {
 
 private String s;
 
  public TestNotas( String nombre ) {
    super( nombre );
  }

  public static void main( String args[] ) {
    junit.textui.TestRunner.run( TestNotas.class );
  }
  
  public void setUp() {
   Notas n = new Notas();
   try {
  s=n.get_all(n.note(), n.to(), "1441708");
 } catch (IOException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }
  }

  public void testEnviaNota() {
    assertNotNull(s);
  }
}
Y por ultimo el main:
package Organidatabase;

import java.io.BufferedReader;
import java.io.Console;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;

import javax.swing.UIManager;

public class Main {

 private static void limpiar(){
  try {
   String línea;

   Process p = Runtime.getRuntime().exec("clear");
   BufferedReader input = new BufferedReader (new InputStreamReader(p.getInputStream()));

   while ((línea = input.readLine()) != null) {
   System.out.print(línea);
   }
   input.close();
   } catch (Exception e) {
   e.printStackTrace();
   }
 }

 public static void main(String[] args) throws IOException{
  Horario h = new Horario();
  Notas n = new Notas();
  Eventos e = new Eventos();
  Scanner a = new Scanner(System.in);
  Console terminal = System.console();
        if (terminal==null ) {
            System.err.println("No puedo obtener la consola.");
            return;
        }
      
  String matt = new String (terminal.readLine("Ingresar Usuario: "));
  String pass= new String (terminal.readPassword("Ingresar contraseña: "));
  limpiar();
  n.nuevo(matt);
  e.total_eventos(matt);
  System.out.print("\n");
  System.out.println("Selecione una opcion:");
  System.out.println("1 - Ver Materias.");
  System.out.println("2 - Ver y crear notas.");
  System.out.println("3 - Ver y crear eventos.");
  System.out.println("0 - Salir.");
  System.out.print("Seleccion: ");
  int sel= a.nextInt();
  limpiar();
  while(sel!= 0){
   switch(sel){
   case 1:
    h.showAll(matt, pass);
    limpiar();
    break;
   case 2:
    System.out.println("1 - Ver notas recibidas.");
    System.out.println("2 - Crear una nota.");
    System.out.print("Seleccion: ");
    int sel1=a.nextInt();
    limpiar();
    switch(sel1){
    case 1:
     n.show_notes(matt);
     break;
    case 2:
     n.get_all(n.note(), n.to(), matt);
     break;
    }
    break;
   case 3:
    System.out.println("1 - Ver eventos pendientes.");
    System.out.println("2 - Crear un evento.");
    System.out.print("Seleccion: ");
    int sel2=a.nextInt();
    limpiar();
    switch(sel2){
    case 1:
     e.show_event(matt);
     break;
    case 2:
     e.make_event(matt);
     break;
    }
    break;
   }
   System.out.print("\n");
   n.nuevo(matt);
   System.out.print("\n");
   System.out.println("Selecione una opcion: ");
   System.out.println("1 - Ver Materias.");
   System.out.println("2 - Ver y crear notas.");
   System.out.println("3 - Ver y crear eventos.");
   System.out.println("0 - Salir.");
   System.out.print("Seleccion: ");
   sel= a.nextInt();
   limpiar();
  }
 }
 
}

Liga a la documentación: aquí.

9 comentarios:

Abraham dijo...

Bien victor por tu presentación, solo ojo con la ortografía y más en el video, te falto lo que es diseño de interface en tu programa, quitar uno que otro print, ya que en ciertas partes te dice hola mundo. Me parecio muy bien que como base de datos hayas usado sql, si tienes tiempo, me gustaria ver la tabla de los campos que usaste.

Anónimo dijo...

Bien Victor, te falto lo de la interfaz gráfica fue lo malo, lo que pudiéramos hacer es implementarlo con la facilidad que nos da el sistema operativo android, y seria mucho mas cómodo para el estudiante tenerlo en un dispositivo que se pueda trasportar fácilmente.

guelmi_rick dijo...

A lo que dices Victor ya funciona pero acuerdate que a la mayoria de la gente les gusta mucho la presentación.

Asi que por lo menos hubieras hecho una Interfaz sencilla para darnos una idea de cual es tu imagen de la Interfaz de tu Programa

guelmi_rick dijo...

Y en base al comentario de Raúl concuerdo con el y ya que el Programa en Android y aparte conviven los dos pudieran ayudarse mutuamente para hacer una aplicación, muchos ahora les gusta traer todo en su teléfono celular y esa seria buena idea.

David Sosa Valdes dijo...

Me parece un buen programa, solamente como ya lo comentas el diseño de la interfaze te falto pero en si todo parece estar funcionando.

Te recomendaria que trabajaras en esa interfaz para completar tu proyecto, te dejo unos links que espero te ayuden:

~- http://www.publispain.com/supertutoriales/diseno/java/cursos/3/Cap4/cambf.html Cambio de Font de Caracteres
~- http://www.publispain.com/supertutoriales/diseno/java/cursos/3/Cap4/colores.html Colores de Fondo y Texto
~- http://www.publispain.com/supertutoriales/diseno/java/cursos/3/Cap4/fijatam.html Fijar el Tamaño Preferido
~- http://www.publispain.com/supertutoriales/diseno/java/cursos/3/Cap4/insets.html Uso de //Insets//
~- http://www.publispain.com/supertutoriales/diseno/java/cursos/3/Cap4/habilita.html Habilitar y Deshabilitar Componentes

Elisa dijo...

19 por el demo a Víctor. NO ENTIENDO porqué no has puesto comentarios, Víctor. Con la pura presentación NO PUEDES completar los 70 puntos para pasar, ya que vale un máximo 20 y tenías 46 de primera oportunidad :|

Puntos extra (contabilizados en la clase): Abraham 1, Raúl 1, Miguel 2

Punto extra David (contabilizado en el taller)

Víctor Briones dijo...

rayos me quede dormido :/

no importa XD

@abraham
Cuenta con ello, lo de interfaces me hice bolas XD, aun estoy en ello, lo de las tabls sql las subire pronto para mañana antes de las 9:00.

Víctor Briones dijo...

@rulo
lo se lo que pasa es que no se nada de android, tal vez tu me ayudes XD.

@pedro
Lo se, lo intente :/

@David
gracias por los tutos, seguire mejorandolo, alrato podrian verlo hasta en Android o en iOS.

Víctor Briones dijo...

a por cierto

@pedro
no se si notaste qe en el video use tu matricula porfa no me vayas a demandar por usarla sin permiso :P

Publicar un comentario