martes, 10 de diciembre de 2013

MODULO 4:   BASE DE DATOS CON JDBC
REQUERIMIENTOS  FUNCIONALES  DE  LA  BASE  DE  DATOS 
COLEGIO
Se requiere una Base de Datos, de  La Escuela Preparatoria, para llevar a cabo la Organización de Información de los Estudiantes  y   Profesores.
REQUERIMIENTOS:
1.- Se necesita formar grupos UNICOS con diferente Asignatura, grupo, día, horario y Profesor Titular.
Con la Tabla: GRUPO
2.- Un profesor puede dar clase en diferentes grupos.
3.- Los Alumnos solo se registran una vez y el Sistema les asigna el grupo al cual pertenece.
4.- Se genera una Lista de Grupo por cada Asignatura.
5.- Cualquier Alumno puede tomar una Asignatura ó más.
6.- Cada Profesor se registra en el  Sistema y registra su contraseña.
7.- Cada Profesor solo puede ingresar a sus grupos de clase para ingresar calificaciones.

8.- El Sistema  puede  indicarnos;  el cupo máximo de cada grupo y cuando ya un grupo se lleno.
PARA LLEVAR ACABO LOS REQUERIMIENTOS SE PROPUSO LO SIGUIENTE:
1.-  Se Elaboraron las siguientes tablas:
Nombre de la Tabla:   ASIGNATURA ( id_asignatura, nombre_asig, grado   y cupo_máximo )
 Nombre de la Tabla:   NUM_GRUPO (  id_grupo,  grupo )
Nombre de la Tabla:   HORARIO ( id_horario, hora )
Nombre de la Tabla:   DIA (  id_dia, dia )
Nombre de la Tabla:   ALUMNO (  id_alumno, nombre_alumno, ap_paterno, ap_materno, matricula, status )
Nombre de la Tabla:   GRUPO ( id_formagrupo, id_asig, id_gpo, id_hor, id_day, id_prof  )
Nombre de la Tabla:   LISTA_GRUPO (  id_lista, id_alu, id_forgpo, calificación_1, calificación_2, num_inasistencias)
Nombre de la Tabla:  
USUARIO_PROFESOR ( id_profesor, nombre_prof, ap_paterno_prof, ap_materno_prof, password )
Nombre de la Tabla:   USUARIO_ESCUELA ( id_admin, nom_admin, password )
Con la siguiente multiplicidad, de acuerdo con el diagrama:
DIAGRAMA: Se presenta el Diseño de la Base de Datos Definitiva

Nombre de Base de Datos: COLEGIO

En base a esta BASE DE DATOS, se realizaron las clases de Borrar, Consultar y dar de Alta a un ALUMNO.
Las Tablas se Ingresaron datos desde consola:
INSERT INTO ALUMNO (nombre_alumno, ap_paterno, ap_materno, matricula, status)
VALUES ('Ignacio','Gonzalez','Millan','101011','INSCRITO'),
       ('Ana','Martinez','Garcia','202020','INSCRITO'),
       ('Victor','Garcia','Gonzalez','303030','INSCRITO'),……

Y también para la Tabla ASIGNATURA:



Para la tabla: GRUPO:


Se crearon las Clases para  ALTA de ALUMNO, BAJA de ALUMNO, MOSTRAR   ALUMNO ACTUALIZADO:
La Clase principal:
package com.siscolegio.escuela.view.console;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import com.siscolegio.escuela.modelo.Alumno;
import com.siscolegio.escuela.servicio.AlumnoServicio;
import com.siscolegio.escuela.servicio.AlumnoServicioImpl;
public class FormaAlumnoCrear {
       public static void main(String[] args) {
             // TODO Auto-generated method stub            
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
System.out.println("Bienvenido al Sistema de Colegio");
System.out.println("Forma de Registro Alumno");
System.out.println("Escribe el nombre del Alumno");
try{
       String nombreAlumno = br.readLine();//br contiene lo del buffer
       //Alumno alumno = new Alumno(); //alumno es un Objeto tipo Alumno
       System.out.println("Escribe el Apellido Paterno");
       String apellidoPaterno = br.readLine();
       System.out.println("Escribe el Apellido Materno");
       String apellidoMaterno = br.readLine();
       System.out.println("Escribe el numero de matricula");
       String numMatricula = br.readLine();
       System.out.println("Escriba La condicion del Alumno INSCRITO /BAJA");
       String nomStatus = br.readLine();
       Alumno alumno= new Alumno();//se crea alumno
       alumno.setNombrealumno(nombreAlumno);//se envia el valor de la variable nombrealumno
                                            //al campo Nombrealumno del objeto creado alumno
       alumno.setAppaterno(apellidoPaterno);
       alumno.setApmaterno(apellidoMaterno);
       alumno.setMatricula(numMatricula);
       alumno.setStatus(nomStatus);
       //alumno.setNombrealumno(nombreAlumno); //nombreAlumno es un objeto String y lo envia al campo NombreAlumno
           AlumnoServicio alumnoServicio = new AlumnoServicioImpl(); //
           alumnoServicio.crearAlumno(alumno);//el objeto alumnoServicio invoca al metodo crearAlumno para
                                              //pasarle de argumento el nuevo alumno formado
           System.out.println("Alumno: "+nombreAlumno+"  creado exitosamente");
}catch (IOException e){
       e.printStackTrace();
       System.out.println("Nombre de Alumno no valido");
}//Fin de catch
       }//FIN de main
}//FIN formaAlumnoCrear
Aquí se presentan las capas de:
DAO tienen las interfaces para conectarse a la base de datos Local COLEGIO
MODELO tienen las Clases de las entidades
SERVICIO Aquí están los métodos de Alumno y Asignatura Crear, Borrar, Actualizar
VISTA Aquí está la implementación de los métodos respectivos de CrearAlumno, CrearAsigantura, BorrarAlumno, BorrarAsignatura, ActualizarAlumno, ActualizarAsigantura.



package com.siscolegio.escuela.view.console;
import java.util.Collection;
import com.siscolegio.escuela.modelo.Alumno;
import com.siscolegio.escuela.servicio.AlumnoServicio;
import com.siscolegio.escuela.servicio.AlumnoServicioImpl;
public class FormaAlumnoConsultar {
public static void main(String[] args) {
System.out.println("Bienvenido al Sistema de Colegio");
       System.out.println("Forma de Alumnos Existentes");
       System.out.println("Lista de Alumnos");
                                        AlumnoServicio alumnoServicio = new AlumnoServicioImpl();
                                        Collection<Alumno> alumnos = alumnoServicio.consultarTodosAlumnos();
                                        //se crea un objeto tipo colection alumnos para aplicarle el metodo consultarTodosAlumnos
                                        //y poder imprimirlos en pantalla con un for
       //****************************************
                           for(Alumno alumno: alumnos){
System.out.println("Id_alumno: "+ alumno.getIdAlumno()+"  \n  Nombre_alu: "+alumno.getNombrealumno()+
             "   *Apellido Paterno: "+ alumno.getAppaterno()+"  *Apellido materno: "+ alumno.getApmaterno()+
             "   *Matricula: "+alumno.getMatricula()+" Status: "+  alumno.getStatus());
       }//FIN de for
}//FIN de main

}// FIN de Class FormaAlumnoConsultar

package com.siscolegio.escuela.view.console;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Collection;
import com.siscolegio.escuela.modelo.Alumno;
import com.siscolegio.escuela.servicio.AlumnoServicio;
import com.siscolegio.escuela.servicio.AlumnoServicioImpl;
public class FormaAlumnoBorrar { 
public static void main(String[] args) {
       InputStreamReader isr = new InputStreamReader(System.in);
       BufferedReader br = new BufferedReader(isr);
       System.out.println("Bienvenido al Sistema  Colegio");
       System.out.println("Forma de Registro Alumno");
       System.out.println("Alumnos EXISTENTES");
       try{
AlumnoServicio alumnoServicio = new AlumnoServicioImpl();
Collection<Alumno> alumnos = alumnoServicio.consultarTodosAlumnos();//se invoca al metodo consultarTodosALUMNOS
for(Alumno alumno: alumnos)//Recorre a alumnos y presenta a cada objeto Alumno, los va imprimiendo uno por uno
{System.out.println("Id Alumno: "+alumno.getIdAlumno()+"nombre Aluumno: "+alumno.getNombrealumno()
             +"Apellido Paterno: "+alumno.getAppaterno()+"Apellido Materno: "+alumno.getApmaterno()
             +"matricula numero: "+alumno.getMatricula()+"Status: "+alumno.getStatus());    }
 System.out.println("Escriba el numero del id del Alumno que desea Borrar");
 Integer idAlumno = Integer.valueOf(br.readLine());//se realizo un parser de lo leido en linea y lo convierte a Integer
 Alumno alumno = new Alumno();//se crea un objeto Alumno llamado alumno
 alumno.setIdAlumno(idAlumno);//a este alumno se le envia el valor de id_alumno quye queremos borrar
 alumnoServicio.borrarAlumno(alumno);//este alumno con este id_alumno se envia al metodo borrarAlumno
 System.out.println("Alumno: "+alumno+"  borrado exitosamente ");
 }catch (IOException e){
       e.printStackTrace();
       System.out.println("El valor de id no es valido");
       }//FIN de catch
}//FIN de main
}//FIN de FormaAlumnoBorrar 

********    CLASES PARA TABLA CATALOGO ASIGNATURA   ********
package com.siscolegio.escuela.view.console;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import com.siscolegio.escuela.modelo.Asignatura;
import com.siscolegio.escuela.servicio.AsignaturaServicio;
import com.siscolegio.escuela.servicio.AsignaturaServicioImpl;
public class FormaAsignaturaCrear {
       public static void main(String[] args) {
             InputStreamReader isr = new InputStreamReader(System.in);
             BufferedReader br = new BufferedReader(isr);
             System.out.println("Bienvenido al Sistema de Colegio");
             System.out.println("Forma para Registrar Asignaturas");
             System.out.println("Escribe el nombre de la Asignatura");         
             try{
                    String nombreAsignatura = br.readLine();//br contiene lo del buffer
                    System.out.println("Escribe el Año de esta Asignatura");
                    String grados = br.readLine();  //
                    System.out.println("Escribe el Cupo Maximo");
                    String cupomax = br.readLine();
                    Asignatura asignatura= new Asignatura();
                    asignatura.setNombreasig(nombreAsignatura);//
                    asignatura.setGrade(grados);
                    asignatura.setCupomaximo(cupomax);                   
                        AsignaturaServicio asignaturaServicio = new AsignaturaServicioImpl();
                        asignaturaServicio.crearAsignatura(asignatura);
                        System.out.println("Asignatura: "+nombreAsignatura+"  creada exitosamente");
             }catch (IOException e){
                    e.printStackTrace();
                    System.out.println("Nombre de Asignatura no valida");
             }//FIN catch                           
       }//FIN de main

}//FIN CLASE

CLASES PARA TABLA CATALOGO ASIGNATURA






En el avance de la plataforma se entrego con las clases y las imágenes.