Foros del Web » Programación para mayores de 30 ;) » Java »

¿Porqué no me permite agregar nuevas notas? - EJercicio I

Estas en el tema de ¿Porqué no me permite agregar nuevas notas? - EJercicio I en el foro de Java en Foros del Web. La problemática del ejercicio dice así: Cita: Una institución educativa desea almacenar la información correspondiente a su proceso de notas, para ello es importante la ...
  #1 (permalink)  
Antiguo 15/03/2013, 07:10
 
Fecha de Ingreso: septiembre-2008
Mensajes: 221
Antigüedad: 16 años, 1 mes
Puntos: 1
¿Porqué no me permite agregar nuevas notas? - EJercicio I

La problemática del ejercicio dice así:

Cita:
Una institución educativa desea almacenar la información correspondiente a su
proceso de notas, para ello es importante la información del estudiante como
el codigo, nombre, apellido, dirección y los teléfonos de contacto. Para realizar
la matricula se tiene en cuenta el año, el semestre (I ó II) y el programa
académico. Además cada estudiante matricula como minimo tres materias por
semestre y máximo siete. Para cada materia se considera un código, nombre y
su número de creditos. La institución a considerado el siguiente esquema de
evaluación para cada una de las materias:

5 Quices 25%
2 Trabajos 10%
3 Parciales 60%

Cada docente tiene a su cargo una o más materias y el será responsable de
agregar ó modificar las notas en el sistema. Cada docente tiene una
identificación, nombre, apellido y los teléfonos de contacto. El programa debe
permitir:

-- Leer la información correspondiente a los n estudiantes matriculados en
la institución educativa.
-- Agregar y modificar las notas de las asignaturas a cargo de un docente
en particular.
-- Calcular el promedio de las notas del semestre con respecto al número
de creditos de cada una de las asignaturas matriculadas por un
estudiantes especifico.
-- Calcular el promedio general de toda la institución.
-- Imprimir los estudiantes con promedio inferior a 3.0
-- Buscar un estudiante y un docente por su número de identificación y/o
número de contacto.
Esta es mi solución actual:

Formato Java: https://www.dropbox.com/s/mq3umg7vbi...stitucion4.rar

Formato TXT: http://ideone.com/VSQ238


Saludos. Me encantaría saber: ¿Porqué cuando le pido que me llene las notas del segundo estudiante me dice que yá está lleno?

He usado estos datos para ejemplificar la situación.

Prueba de escritorio : https://www.dropbox.com/s/i6zmlu00wc...ritorio_6.xlsx


NOTA:
He omitido los códigos de la materia y los teléfonos de los estudiantes y docentes para agilizar el ingreso de datos.
  #2 (permalink)  
Antiguo 15/03/2013, 09:24
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 16 años, 2 meses
Puntos: 188
Respuesta: ¿Porqué no me permite agregar nuevas notas? - EJercicio I

Donde están las trazas del System.out que te van saliendo? Porque así viendo el código a pelo se tarda un poco de más... ¿qué pasos exactos ha realizado?
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #3 (permalink)  
Antiguo 16/03/2013, 06:25
 
Fecha de Ingreso: septiembre-2008
Mensajes: 221
Antigüedad: 16 años, 1 mes
Puntos: 1
Respuesta: ¿Porqué no me permite agregar nuevas notas? - EJercicio I

Aqui un video demostrativo :) https://www.youtube.com/watch?v=k5_df6OC5hc
  #4 (permalink)  
Antiguo 16/03/2013, 08:07
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 16 años, 2 meses
Puntos: 188
Respuesta: ¿Porqué no me permite agregar nuevas notas? - EJercicio I

El código está bastante bien, me extraña que no te hayas dado cuenta. La materia tiene una lista de notas, tú las cubres y añades para un alumno, pero no veo cómo sabes luego que son de ese alumno en concreto.

Cuando ingresas las notas para esa misma materia y otro alumno, compruebas que la lista de notas tenga un tamaño distinto de cero, y eso se cumple ya que las has introducido una vez.

Deberías plantearte el utilizar un hashMap o algo de ese estilo, introduciendo el codigo del alumno como clave y la nota como valor, de esa forma podrías ver si se han creado las notas de ese alumno concreto buscando en el conjunto a partir de la clave.

:) Te has currado lo del video.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #5 (permalink)  
Antiguo 17/03/2013, 10:20
 
Fecha de Ingreso: septiembre-2008
Mensajes: 221
Antigüedad: 16 años, 1 mes
Puntos: 1
Respuesta: ¿Porqué no me permite agregar nuevas notas? - EJercicio I

Gracias por tu respuesta

¿Cómo sé que las notas son de ese estudiante? Pues sencillo, cuando uso el método matricular materias entonces agrego la materia que seleccionó a una lista de Materiasdelestudiante, así:

Código Javascript:
Ver original
  1. docente.materiasdocente.get(j).estudiantesdelamateria.add(estudiante);
  2. estudiante.materiasdelestudiante.add(docente.materiasdocente.get(j));

Código de referencia:

Código Javascript:
Ver original
  1. public void matricular_materias() throws IOException{
  2.        
  3.         System.out.println("Ingrese el nombre del estudiante");
  4.         String buscador1 = lector.readLine();
  5.        
  6.        
  7.        
  8.         for (Estudiante estudiante : estudiantes)
  9.         {
  10.                 if ( estudiante.getNombre().equals(buscador1) )
  11.                 {
  12.                   System.out.println("Debe matricular minimo 3 materias o maximo 7");
  13.                   System.out.println("¿Cuantas materias va a matricular?");
  14.                   int n = Integer.parseInt(lector.readLine());
  15.                   if( n < 1 || n > 7 )
  16.                   {System.out.println("Ingreso erroneo, porfavor ingrese nuevamente el numero de materias");}
  17.                   else{    
  18.                          
  19.                         for ( Docente docente : docentes ) // Impresion de cada docente las materias de que dicta - PRUEBA 1
  20.                         {
  21.                                 for ( int i=0; i<docente.materiasdocente.size(); i++ )
  22.                                 {
  23.                                         System.out.println(docente.materiasdocente.get(i).getNombremateria());
  24.                                 }
  25.                         }
  26.                        
  27.  
  28.                        
  29.                   for ( int i=0; i<n; i++)
  30.                   {      
  31.                         System.out.println("De las materias descritas anteriormente digite la que quiere matricular");
  32.                         String buscador2 = lector.readLine();
  33.                        
  34.                     for ( Docente docente : docentes ) // Impresion de cada docente las materias de que dicta - PRUEBA 2
  35.                         {
  36.                                 for ( int j=0; j<docente.materiasdocente.size(); j++ )// Añadir materia a la lista de materias del estudiante - PRUEBA 1
  37.                                 {
  38.                                         if ( docente.materiasdocente.get(j).getNombremateria().equalsIgnoreCase(buscador2) )
  39.                                         {      
  40.                                                 docente.materiasdocente.get(j).estudiantesdelamateria.add(estudiante);
  41.                                                 estudiante.materiasdelestudiante.add(docente.materiasdocente.get(j));
  42.                                         }
  43.                                 }
  44.                         }
  45.                    
  46.                        
  47.  
  48.                   }  
  49.                   System.out.println("-----------------------");
  50.                                 System.out.println("Las materias que matriculo: "+estudiante.getNombre());
  51.                                                                
  52.                           for ( int i=0; i<estudiante.materiasdelestudiante.size(); i++)
  53.                           {
  54.                                   System.out.println(estudiante.materiasdelestudiante.get(i).getNombremateria());
  55.                           }
  56.                          
  57.                        }
  58.                            
  59.                 }
  60.         }
  61.     }

Luego al ingresar las notas se supone que ingreso a la materia en cuestión de ese estudiante en específico. Y le matriculo las notas así:

Código Javascript:
Ver original
  1. if ( docente.materiasdocente.get(i).estudiantesdelamateria.get(j).materiasdelestudiante.get(k).getNombremateria().equalsIgnoreCase(buscador2) )
  2.                                                {
  3.                                                    System.out.println("Estoy dentro 2");
  4.                                                    docente.materiasdocente.get(i).estudiantesdelamateria.get(j).materiasdelestudiante.get(k).notas_materia();
  5.                                                }

Código de referencia:

Código Javascript:
Ver original
  1. public void notas_docente() throws IOException{
  2.    
  3.         System.out.println("Ingrese el nombre del docente");
  4.         String buscador1 = lector.readLine();
  5.  
  6.  
  7.         for ( Docente docente : docentes ) // Impresion de cada docente las materias de que dicta - PRUEBA 1
  8.         {
  9.                 if ( docente.getNombredocente().equals(buscador1) )
  10.             {
  11.                 System.out.println("Ingrese el nombre de la materia");
  12.                 String buscador2 = lector.readLine();
  13.                
  14.                         for ( int i=0; i<docente.materiasdocente.size(); i++ )// Añadir materia a la lista de materias del estudiante - PRUEBA 1
  15.                         {
  16.                                 if ( docente.materiasdocente.get(i).getNombremateria().equalsIgnoreCase(buscador2) )
  17.                                 {      
  18.                                        
  19.                                         System.out.println("El tamaño de la lista estudiantes de la materia es:" +docente.materiasdocente.get(i).estudiantesdelamateria.size());
  20.                                         System.out.println("Los estudiantes son:");
  21.                                         for ( int j=0; j<docente.materiasdocente.get(i).estudiantesdelamateria.size(); j++)
  22.                                         {
  23.                                                
  24.                                                 System.out.println(docente.materiasdocente.get(i).estudiantesdelamateria.get(j).getNombre());
  25.                                         }
  26.                                        
  27.                                         System.out.println("Seleccione el estudiante al que quiere ingresar notas");
  28.                                         String buscador3 = lector.readLine();
  29.                                        
  30.                                         for ( int j=0; j<docente.materiasdocente.get(i).estudiantesdelamateria.size(); j++)
  31.                                         {
  32.                                            if ( docente.materiasdocente.get(i).estudiantesdelamateria.get(j).getNombre().equalsIgnoreCase(buscador3))
  33.                                                
  34.                                            {
  35.                                                 System.out.println("Estoy dentro 1");
  36.                                               for ( int k=0; k<docente.materiasdocente.get(i).estudiantesdelamateria.get(j).materiasdelestudiante.size(); k++ )
  37.                                               {
  38.                                                   if ( docente.materiasdocente.get(i).estudiantesdelamateria.get(j).materiasdelestudiante.get(k).getNombremateria().equalsIgnoreCase(buscador2) )
  39.                                                {
  40.                                                    System.out.println("Estoy dentro 2");
  41.                                                    docente.materiasdocente.get(i).estudiantesdelamateria.get(j).materiasdelestudiante.get(k).notas_materia();
  42.                                                }  
  43.                                               }  
  44.                                            }    
  45.                                         }
  46.                                 }
  47.                         }  
  48.         }  
  49.     }  
  50. }

Nosé si aclaré tu duda. La idea que tienes serviría sí y sólo si tuviera en cuenta la materia. Porque además del código del estudiante tendría que tener en cuenta un código para la Materia. Recuerda que un estudiante puede tener varias materias.

La duda máxima que tengo es específicamente: ¿Será que estoy agregando bien el objeto Materia: Matematica, Física o lo que sea cuando matriculo las materias a un estudiante?, ¿Será que estoy asignando la MISMA materia para más de un estudiante y por eso me dice que ya están llenas las notas cuando las lleno por primera vez?.


Gracias de antemano por tu ayuda.
  #6 (permalink)  
Antiguo 17/03/2013, 16:50
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 16 años, 2 meses
Puntos: 188
Respuesta: ¿Porqué no me permite agregar nuevas notas? - EJercicio I

Te has respondido a ti mismo, de hecho lo ideal es que materia sea la que tenga una lista de estudiantes, y el profesor entrando en la materia pueda asignar unas notas de esa materia a ese estudiante.

Otra opción distinta a la que te comenté antes, y que me parece que no has terminado de comprender, sería crear una clase Notas_Materia con el id o nombre de la materia que cada estudiante tendría asociada, separando asi las calificaciones como un objeto diferente al de la materia cursada.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #7 (permalink)  
Antiguo 03/04/2013, 11:01
 
Fecha de Ingreso: septiembre-2008
Mensajes: 221
Antigüedad: 16 años, 1 mes
Puntos: 1
Respuesta: ¿Porqué no me permite agregar nuevas notas? - EJercicio I

Hola amigo, perdón por no contestar estuve de vacaciones.

Bueno, hablé con mi profesor y él me dijo lo mismo que tú re-estrucutrar y que uno ingrese pues desde una lista materias.

Sin embargo, después de 4 intentos, sigo sin lograr la meta de almacenar correctamente las notas. Estoy convencido que estoy usando la misma materia para todos y que no estoy guardando una materia para cada estudiante. Ejemplo, la materia matemática la matriculan 2 estudiantes....pero es como si al ingresar las notas en la materia de Josefito, inmediatamente me agrega las notas de Laura...entonces...¿Qué debo hacer para guardar correctamente la misma materia pero pues en dos listados osea que sean Dos objetos diferentes..? ¿No será el problema que tengo "Public List<Materia> materiasdelestudiante"?....Pues nosé...estoy desesperado :(

Te comparto los intentos

Intento 3 : https://www.dropbox.com/s/wlokhczak1...titucion_3.rar
Intengo 4: https://www.dropbox.com/s/rrjrtc3nwi...titucion_4.rar
Intengo 5: https://www.dropbox.com/s/nkt6yzbxhf...titucion_5.rar
Intengo 6: https://www.dropbox.com/s/q9fwfr7dkl...titucion_6.rar

Gracias de antemano hombre :)

Etiquetas: ejercicio, notas, nuevas, permite, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:33.