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

problema con planeacion de sistema

Estas en el tema de problema con planeacion de sistema en el foro de Programación General en Foros del Web. Hola a todos espero puedan ayudarme con una lluvia de ideas, tengo que desarrollar un proyecto para el pase de lista de una escuela (es ...
  #1 (permalink)  
Antiguo 20/09/2013, 16:54
 
Fecha de Ingreso: julio-2011
Ubicación: donde me encuentre la noche
Mensajes: 140
Antigüedad: 12 años, 8 meses
Puntos: 3
Pregunta problema con planeacion de sistema

Hola a todos espero puedan ayudarme con una lluvia de ideas, tengo que desarrollar un proyecto para el pase de lista de una escuela (es proyecto escolar) y al mismo tiempo tengo que hacer algun filtro para mostrar las faltas de los alumnos, por dia, semana y mes

tengo mas o menos claro lo que tengo que hacer pero tengo problema en la planeacion de mi base de datos

ejemplo de lo que hay que hacer el alumno tiene un numero de control la maestra lo mete en el sistema y asi le pone que asistio entonces como deberia de organizar esta tabla?
el pase de lista solo es de lunes a viernes?

entonces el pase de lista seria en general sin poner el dia solo la fecha o como podria poner mi tabla de asistencia de tal modo que la al terminar el pase de lista tambien se registren a los que no fueron en automatico



Mi problema es en como organizar las tablas de pase de lista
ya tengo en una base de datos previa 30 registros de alumnos los cuales tienen asignado un numero de control

pero de que manera lo programo para guardar el pase de lista al mismo tiempo tambien tengo que agregar una calificacion al alumno por su asistencia al final de la semana el maestro sabra que calificacion tendra el alumno si este falta le afectara directamente en su calificacion ya que no la tendra asignada por un dia por ejemplo

cualquier idea o comentario seria de ayuda

lo hare con php y mysql o en su defecto con visual y mysql
  #2 (permalink)  
Antiguo 22/09/2013, 08:40
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 11 años, 7 meses
Puntos: 83
Respuesta: problema con planeacion de sistema

Puedes usar una segunda tabla con los ids de los alumnos y las calificaciones semanales o diarias:

Código C:
Ver original
  1. --alumnos
  2. CREATE TABLE 'alumnos' ('id' int(11) NOT NULL auto_increment, 'nombre' varchar(255) character set utf8 collate utf8_unicode_ci NOT NULL) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
  3.  
  4. --calificaciones
  5. CREATE TABLE 'calificaciones' ('id_alumno' int(11) NOT NULL, 'calificacion' float) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

En la tabla de calificaciones tambien estará el identificador de semestre (o lo que sea), el año (para guardar un historial), ... De alguna forma podras encontrar o definir el nº de semanas que hay en la evaluacion de forma que el nº de entradas por alumno tiene que coincidir con el nº de semanas (si las calificaciones son diarias entonces será lo mismo pero con el nº de dias).

Opcionalmente puedes añadir una automatizacion para rellenar a 0 las calificaciones de la semana para los alumnos que no obtuvieron nota esa semana (depende de la validacion final, esto incluso puedes omitirlo). P.ej. en windows puedes añadir un bat al scheduler para que ejecute un script de mantenimiento, hay mil formas de solventar lo de la automatizacion.

A partir de aqui solo tienes que aplicar las reglas de evaluacion: si la nota final es la media (independientemente de las asistencias) sumas las calificaciones por alumno y divides por el nº de semanas, o si se requiere un minimo de asistencia, o si solo computan las calificaciones pueriores a x, o lo que sea... Es una idea :)

Saludos
vosk
  #3 (permalink)  
Antiguo 22/09/2013, 08:49
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 11 años, 7 meses
Puntos: 83
Respuesta: problema con planeacion de sistema

"...el pase de lista solo es de lunes a viernes?..."

No, el pase de lista depende de la profesora: cuando la profesora accede al sistema se computa un dia de pase. Los profesores tendran tambien su registro en la base de datos (es injusto que solo se controle a los alumnos no? ), de forma que cada dia que imparten clase queda registrado. Para los profesores puedes añadir tambien un campo para la hora que abren el registro y la ip desde donde se conectan, para evitar que un profesor modifique los registros fuera de horario y/o fuera de la lan de la escuela/instituto/loquesea.

Saludos
vosk
  #4 (permalink)  
Antiguo 22/09/2013, 12:53
 
Fecha de Ingreso: julio-2011
Ubicación: donde me encuentre la noche
Mensajes: 140
Antigüedad: 12 años, 8 meses
Puntos: 3
Pregunta Respuesta: problema con planeacion de sistema

Gracias por las respuestas

mas sintetizado el problema

tiene que generar un pase de lista (no tengo problema con crear tablas, modificarlas, eliminarlas con sql etc)

tengo dos tablas
- alumnos
- asistencia

es un solo grupo un solo profesor

tabla alumnos contiene los datos del alumno ya los tengo en base de datos

|No. Control | Nombre | Direccion | Grado |
0392130 | Edson Vargas | Venustiano Carranza | 5A
0324112 | Daniela Escamilla | benito Juarez | 5A


para el pase de lista la maestr@ solo insertara el No. de Control en el sistema y este le arrojara los datos de a quien pertenecen y asi ponerle la asistencia


esto lo hago con un select de la tabla alumnos, creo que eso no es mi problema, mas bien el problema es, como creo mi tabla asistencia y calificaciones!!de tal modo que si yo agrego a todos los que tienen asistencia como agrego en la misma tabla asistencia a los que no fueron

es decir tengo un total de 30 alumnos en el salon de los cuales por ejemplo el dia lunes fueron 25 esos como la maestra los va agregar a la tabla asistencia entonces apareceran los 25 registros de alumnos con asistencia pero como agrego en automatico a los 5 que dia lunes no fueron? y claro en un campo de asistencia en lugar de que diga si, diga no y asi aparezcan todos mis alumnos tanto los que fueron como los que no

ocuparia un while para recorrer mi tabla o mas bien con arreglos la verdad estoy echo un nudo no se ni como jaja para comparar la de alumnos comparada con la de asistencia o como?
al finalizar el dia la maestra ingresa una calificacion al alumno por su asistencia de tal manera que los que no fueron tampoco tienen calificacion. pero pues es la misma metodica que de la asistencia no?
las clases son de lunes a viernes el pase de lista solo es en esos dias

Última edición por ecosysonidos; 22/09/2013 a las 13:28
  #5 (permalink)  
Antiguo 22/09/2013, 15:41
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 11 años, 7 meses
Puntos: 83
Respuesta: problema con planeacion de sistema

Y usando un campo boleano para la asistencia? Es decir que cada dia entraran 30 registros de asistencia: 25 que asistieron (boleano 1) y 5 que no (0)

Como recibes la lista de asistencias? Recibes una lista con todas las asistencias o cada alumno requiere una operacion de registro? Para entendernos: cuando la profesora selecciona el alumno se envia la consulta al servidor y asi para cada alumno? O primero selecciona todos los que estan y luego sube la lista? Dependiendo de esto podras automatizarlo de una forma u otra.

Para las comparaciones seguramente será preferible que primero saques las listas con un filtrado previo: un array de alumnos y otro de asistencias por dias o semanas, las comparaciones es mejor que las hagas sobre los arrays, cuanto menos ataques la base de datos mejor.
  #6 (permalink)  
Antiguo 22/09/2013, 17:37
 
Fecha de Ingreso: julio-2011
Ubicación: donde me encuentre la noche
Mensajes: 140
Antigüedad: 12 años, 8 meses
Puntos: 3
Pregunta Respuesta: problema con planeacion de sistema

Cita:
Iniciado por vosk Ver Mensaje
Y usando un campo boleano para la asistencia? Es decir que cada dia entraran 30 registros de asistencia: 25 que asistieron (boleano 1) y 5 que no (0)

Como recibes la lista de asistencias? Recibes una lista con todas las asistencias o cada alumno requiere una operacion de registro? Para entendernos: cuando la profesora selecciona el alumno se envia la consulta al servidor y asi para cada alumno? O primero selecciona todos los que estan y luego sube la lista? Dependiendo de esto podras automatizarlo de una forma u otra.
cada alumno requiere una operacion de asistencia, tengo un text se introduce su id en este, hago una consulta a mi tabla de alumnos me arroja los datos de este y al mismo tiempo guardo su asistencia pero solo guardo los que asisten al dia entonces como se quienes no asistieron?

se me ocurre esto
tengo dos tablas
una se llama alumnos y la otra asistencia

la tabla alumnos contiene los datos generales del alumno nombre, direccion, grupo, etc
en la tabla asistencia capturo los datos del alumno que tiene su asistencia primero hago un select para buscar al alumno en alumnos
si existe inserto esos datos en la tabla asistencia hasta hay todo bien

el problema resulta en lo siguiente, supongamos que estas son mis tablas

Tabla alumnos

|NO.CONTROL|NOMBRE|GRUPO|
|9090909090|jazmin jp|sistemas 30123|
|0101010101|alberto r|sistemas 30123|
|9393939393|juan carl|sistemas 34567

mi tabla asistencia (aun la planeo) seria algo mas o menos asi suponiendo que solo jazmin jp y juancarlos carl asistieron este dia

|NO.CONTROL|NOMBRE|GRUPO|FECHA|ASISTENCIA
|9090909090|jazmin jp|sistemas 30123|22-09-13|SI
|9393939393|juan carl|sistemas 34567|22-09-13|SI


Como hago para insertar en la misma tabla o en una externa de inasistencia para el registro de alberto r que en este caso no asistio para tal dia

O mas bien como planeo las tablas de asistencia con los campos de asistencia con si y no o solamente guardo los que asistieron, pero como recorreria las tablas de tal modo que sabria quien no asistio
  #7 (permalink)  
Antiguo 23/09/2013, 14:40
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 11 años, 7 meses
Puntos: 83
Respuesta: problema con planeacion de sistema

Segun este planteamiento lo mejor parece que sería sacar una lista de alumnos a un array y una lista de asistencias a otro array, luego simplemente comparas los arrays para ver quien no está. Si lo haces en php: al momento de convertir la lista obtenida a array puedes generar un array asociativo con los nº de control como clave y los demas datos como valor en forma de array:

Código PHP:
Ver original
  1. $alumnos = array();
  2. $query = "SELECT * FROM alumnos";
  3. if(($result = $mysqli->query($query))) {
  4.     while($alumno = $result->fetch_assoc()) {
  5.         $alumnos[$alumno['ncontrol']] = array('nombre' => $alumno['nombre'], 'grupo' => $alumno['grupo']);
  6.     }
  7.     $result->free();
  8. }

Esto te genera un array del tipo:

Código PHP:
Ver original
  1. (
  2.     [9090909090] => Array
  3.         (
  4.             [nombre] => jazmin jp
  5.             [grupo] => sistemas 30123
  6.         )
  7.  
  8.     [0101010101] => Array
  9.         (
  10.             [nombre] => alberto r
  11.             [grupo] => sistemas 30123
  12.         )
  13.  
  14.     [9393939393] => Array
  15.         (
  16.             [nombre] => juan carl
  17.             [grupo] => sistemas 34567
  18.         )
  19.  
  20. )

Con esto tienes la lista de alumnos, luego haces lo mismo para las asistencias pero filtrando las fechas o tal como quieras hacerlo; si quieres saber las asistencias/ausencias de una semana solo tienes que hacer la query sobre la tabla de asistencias indicando que la fecha este entre el lunes y el viernes de esa semana que quieres comprovar. Obtienes el resultado y lo conviertes de la misma forma a array asociativo con los nº de control como clave. Con esto puedes usar las funciones de php de arrays para saber que elementos no estan en la lista de asistencias comparando las claves de los array (traducido significa que esos alumnos no estuvieron presentes ningun dia de ese rango de tiempo, y si quieres dar los resultados mas exactos solo has de filtrar por dias).

Esta idea te da mucho juego porque a la hora de armar el array de alumnos puedes añadir un campo extra no existente en la base de datos que sería una lista de asistencias (por dias, por semanas, por meses, tal como quieras) para que facilmente pudieras generar los reportes de asistencia por alumnos. Ten en cuenta que segun este modelo el campo 'asistencia' de la tabla 'asistencias' no tiene sentido porque todos los registros de esa tabla habran asistido.

Saludos
vosk
  #8 (permalink)  
Antiguo 23/09/2013, 16:07
 
Fecha de Ingreso: julio-2011
Ubicación: donde me encuentre la noche
Mensajes: 140
Antigüedad: 12 años, 8 meses
Puntos: 3
Pregunta Respuesta: problema con planeacion de sistema

Cita:
Iniciado por vosk Ver Mensaje
Segun este planteamiento lo mejor parece que sería sacar una lista de alumnos a un array y una lista de asistencias a otro array, luego simplemente comparas los arrays para ver quien no está. Si lo haces en php: al momento de convertir la lista obtenida a array puedes generar un array asociativo con los nº de control como clave y los demas datos como valor en forma de array:


vosk
Mas o menos asi era mi idea generar un array asociativo solo que no me quedaba lo probare y te dire como me fue muchas gracias por tus consejos saludos!

Etiquetas: php, sistema, sql, visual
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 06:37.