Foros del Web » Programando para Internet » PHP »

Duda sobre elección de alumnos segun cupos y fecha inscripción

Estas en el tema de Duda sobre elección de alumnos segun cupos y fecha inscripción en el foro de PHP en Foros del Web. Hola a todos. En estos momentos estoy haciendo un ejercicio para preparar un examen y estoy dudoso sobre como diseñar una parte del mismo ejercicio. ...
  #1 (permalink)  
Antiguo 21/03/2013, 07:32
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
Duda sobre elección de alumnos segun cupos y fecha inscripción

Hola a todos. En estos momentos estoy haciendo un ejercicio para preparar un examen y estoy dudoso sobre como diseñar una parte del mismo ejercicio.

Resumo el ejercicio y lo que de momento llevo hecho.

En una universidad se quiere sistematizar un proceso de admisión que cumpla con las siguientes condiciones:

• La nota final del aspirante es el promedio de la prueba de estado y el examen hecho por la universidad.
• Se puede aspirar a varias carreras con un orden de prioridad pero solo puede ser admitido en una (la de mayor prioridad).
• Para ser admitido en una carrera se debe cumplir con una nota mínima y está sujeto a la disponibilidad de cupo por carrera (ambas condiciones deben ser ciertas).
• En caso que 2 o más aspirantes estén en igualdad de condiciones, se debe definir por la menor fecha de inscripción hasta completar el cupo (esta parte es la que mas me enreda a la hora de pensar la solución)
• El estudiante debe poder consultar en una página Web si fue admitido o no.

Lo que de momento llevo es el planteo de las tablas asi:

Código HTML:
Ver original
  1. tabla aspirantes
  2. documento
  3. nombre
  4. nota_u<!--nota examen universidad-->
  5. nota_es<!--nota examen de estado-->
  6.  
  7. tabla materias
  8. id_carrera
  9. nombre
  10. puntaje_minimo
  11. cupo
  12.  
  13. tabla materiaAspirante
  14. id_aspirante
  15. id_materia
  16. prioridad
  17.  
  18.  
  19. tabla admitidos
  20. id_estudiante
  21. id_materia

Bueno, digamos que eso lo tengo claro, lo que aun no tengo del todo claro es como implementar la parte en que un alumno si quedo admitido o no.

Para poner un ejemplo practico les digo lo que se me ocurrio a mi. La idea principal seria que el algoritmo fuera mirando uno a uno los estudiantes para decidir si se debe o no inscribir.

Digamos que pepito se inscribio a tres carreras, en la primera no paso, en la segunda digamos que si tiene la nota y existe cupo pero como no conozco a los otros aspirantes puede que para esa carrera en especial se tengan 2 cupos y otros dos estudiantes tienen la misma nota entonces el desempate seria la fecha (no me queda claro como hacer eso), ademas como no paso esa carrera deberia darle la opción de mirar si en la siguiente ya clasifica o no.

Como la idea no es que la gente me haga el codigo ni nada me gustaria que me ayudaran a pensar como deberia atacar el ejercicio porque esa parte de la decisión no se como hacerla y le he dado vueltas. De verdad agradecere las ideas que me ayuden a desatascarme y poder encontrar la solución.

De antemano doy las gracias.
__________________
Blog de humor http://elcuasatar.net63.net/
  #2 (permalink)  
Antiguo 21/03/2013, 07:51
 
Fecha de Ingreso: septiembre-2011
Mensajes: 219
Antigüedad: 12 años, 7 meses
Puntos: 31
Respuesta: Duda sobre elección de alumnos segun cupos y fecha inscripción

Si, el planteo que estas haciendo de recorrer uno a uno los aspirantes es como lo haría yo (al finalizar todos los examenes por supuesto), con el tema de la fecha de inscripción sería un campo más en la tabla "aspirantes" para cotejarlo en el algoritmo que armes.

En principio eso pero lo voy a mirar con mas detenimiento.
  #3 (permalink)  
Antiguo 21/03/2013, 07:58
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Duda sobre elección de alumnos segun cupos y fecha inscripción

Cita:
tabla aspirantes
documento
nombre
nota_u<!--nota examen universidad-->
nota_es<!--nota examen de estado-->
fecha DATETIME <--- fecha de inscripción

Yo lo enfocaria como un problema de ordenación...

Preguntate: ¿Es importante el orden de las carreras?

Para cada carrera buscaria la manera de obtener la lista de estudiantes ordenada por los "meritos" que tenga cada uno de manera que los "cupo" primeros serian los inscritos en esa carrera. Al atacar la segunda carrera debes quitar (NOT IN (...algo...)) los que se hayan inscrito en la primera y asi sucesivamente.

El orden de prioridad que haya elegido cada alumno en cada carrera es uno de los meritos del estudiante a tener en cuenta, es decir un estudiante que ha elegido con prioridad 1 la carrera X debe tener mas meritos o prioridad que otro que la elige con prioridad 2....por encima de notas y fecha de inscripción... pero ojo me inscribire en mi segunda opción siempre que no pueda entrar en la primera....es decir primero hay que matricular a TODOS lo que entren en la carrera de su primera opción...

Un algoritmo que pase por todas las carreras, y prioridades deberia inscribir a un numero de estudiantes igual o inferior a sumatorio de cupos ... no forzosamente a todos los aspirantes.

Para nota deberías obtener al final un listado de la oferta no cubierta o de la demanda no satisfecha.

Un ejercicio divertido... no para el estudiante y menos para el aspirante!!!!
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 21/03/2013 a las 08:38
  #4 (permalink)  
Antiguo 21/03/2013, 09:08
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
Respuesta: Duda sobre elección de alumnos segun cupos y fecha inscripción

cachusan y quimfv gracias por sus consejos. Cuando edite mi tabla me di cuenta despues que no le habia ingresado la fecha, gracias de todas maneras por hacerme caer en cuenta del error.

Creo que la manera como lo dice quim es buena porque al hacerlo por aspirante estaba entrando en esas incoherencias que no sabia como manejarlas.

Al ser un ejercicio de preparación me interesa mas razonar la manera de atacarlo que el resultado final en si pero igual lo voy a implementar en la vida real porque quiero verificar si mis analisis fueron correctos. De verdad agradezco quim tu colaboración porque ha sido como una palanca para salir del empanao mental que tenia en la cabeza.

Procurare si me queda facil en estos dias charlar la manera como solucione el problema porque me parece que como ejercicio es interesante para consolidar varios temas sobre preguntas que me haran en mi examen.
__________________
Blog de humor http://elcuasatar.net63.net/
  #5 (permalink)  
Antiguo 22/03/2013, 11:03
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
Respuesta: Duda sobre elección de alumnos segun cupos y fecha inscripción

Hola a todos de nuevo:

Finalmente pude hacer el ejercicio y solo dure un día , explico basicamente lo que hice.

Lo primero que hice fue crear una tabla auxiliar llamada precandidatos en la cual insertaba todos aquellos alumnos cuya nota era superior al minimo exigido por la universidad asi de una descartaba muchos candidatos. Una vez con esa tabla tal como me sugirio quim lo organice por materias, por mayor nota y por fecha (para tener los mejores promedios de primero y si quedaban empatados por nota que apareciera primero el que se inscribio primero) Revisaba en el campo cupos y por cada materia hacia la consulta colocando de limite la cantidad de cupos disponibles. Si la consulta da algun valor inserto los valores en la tabla admitidos (verificando previamente que el usuario no este en la tabla). Al final actualizaba los cupos en función de los registros insertados.

Para no liarme hago la consulta entre la primera materia a la ultima, de igual forma como tenia una prioridad empezaba por la prioridad 1,2,3, hasta la ultima prioridad de la tabla.

Ahora tengo el lio mas grande y no se si me puedan ayudar, no se como hacer la consulta usando las tres tablas.

Código MySQL:
Ver original
  1. select a.nombre from aspirantes as a inner join admitidos as ad on a.documento=ad.estudiante

Código MySQL:
Ver original
  1. SELECT distinct m.nombre from materias as m right join admitidos as ad on ad.materia=m.id_carrera

Con esas dos consultas por separado obtengo el nombre y la carrera, pero me gustaria poder hacerlo solo con una consulta. La verdad siempre me lian estas tablas intermedias. Si me pueden explicar un poco como podria hacerlo lo agradeceria.
__________________
Blog de humor http://elcuasatar.net63.net/
  #6 (permalink)  
Antiguo 22/03/2013, 11:54
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Duda sobre elección de alumnos segun cupos y fecha inscripción

Código MySQL:
Ver original
  1. SELECT a.nombre Alumno,m.nombre Materia FROM (aspirantes a INNER JOIN admitidos ad on a.documento=ad.estudiante) LEFT JOIN materias m on ad.materia=m.id_carrera

AS es obsoleto.

Lo de la tabla de precandidatos te la podias ahorrar con un simple WHERE....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #7 (permalink)  
Antiguo 22/03/2013, 12:28
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
Respuesta: Duda sobre elección de alumnos segun cupos y fecha inscripción

Nuevamente mil gracias por la colaboración. Me ha sido de mucha ayuda.

Cosas puntuales:

No tenia ni idea que as estaba obsoleto. Literalmente lo podia seguir usando por toda la eternidad.

Lo de la tabla precandidatos si quisiera mejorarlo porque al fin y al cabo la uso e inmediamente la borro y por tanto solo esta para soporte temporal, pero me toca pensarlo un poco mejor.

Ya me quedo mas claro como usar el inner join con tabla de por medio. Voy a estudiarlo que uno de los conceptos que debo tener claros para mi examen es precisamente es hacer eso.

Como tal el aplicativo ya quedo listo, ahora me toca compartirlo por web services para terminar mi estudio pero digamos que espero que sea mas facil que lo que ya hice.

quimfv me quedo corto al darte las gracias.
__________________
Blog de humor http://elcuasatar.net63.net/

Etiquetas: alumnos, fecha, tabla
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 01:01.