UNIVERSIDAD DE GUAYAQUIL
FACULTAD DE CIENCIAS MATEMATICAS Y FISICAS
CARRERA DE INGENIERIA EN SISTEMAS
COMPUTACIONALES
Exámenes vía Web aplicado a la Carrera de Ingeniería de
Sistemas Computacionales.
PROYECTO DE GRADO
Previa a la obtención del Título de:
INGENIERO EN SISTEMAS COMPUTACIONALES
AUTOR: JOSÉ LUIS GARZÓN ALVARADO
TUTOR: ING. XAVIER LOAIZA
GUAYAQUIL – ECUADOR
2010
Guayaquil, ……………… 2010
APROBACIÓN DEL TUTOR
En mi calidad de Tutor del trabajo de investigación, “Exámenes vía Web aplicado a la
Carrera de Ingeniería de Sistemas Computacionales.“ elaborado por el Sr.
JOSÉ LUIS GARZÓN ALVARADO, egresado de la Carrera de Ingeniería en Sistemas
Computacionales, Facultad de Ciencias Matemáticas y Físicas de la Universidad de
Guayaquil, previo a la obtención del Título de Ingeniero en Sistemas, me permito declarar
que luego de haber orientado, estudiado y revisado, la Apruebo en todas sus partes.
Atentamente
………………………………….
Ing. Xavier Loaiza
TUTOR
DEDICATORIA
Este trabajo quiero dedicarlo a mi familia,
en especial a mi amada Esposa, mi querida
Madre, y a mi muy amada hija Juliana,
quienes forman parte de un estimulo muy
especial para poder llegar a dedicar mis
esfuerzos en este trabajo, que concluirá con
la obtención de mi título profesional.
AGRADECIMIENTO
Agradezco ante todo a Dios, ya que sin su
iluminación nada de esto sería posible,
además a mi Esposa y a mi Madre por su
apoyo muy importante para poder seguir
adelante y no desmayar en el camino a
pesar de los obstáculos.
TRIBUNAL DE GRADO
Ing. Frenando Abad Montero Ing. Juan Chanabá Alcócer
DECANO DE LA FACULTAD DIRECTOR
CIENCIAS MATEMATICAS Y FISICAS
MIEMBRO DEL TRIBUNAL MIEMBRO DEL TRIBUNAL
MIEMBRO DEL TRIBUNAL (TUTOR) SECRETARIO
UNIVERSIDAD DE GUAYAQUIL
FACULTAD DE CIENCIAS MATEMATICAS Y FISICAS
CARRERA DE INGENIERIA EN SISTEMAS
COMPUTACIONALES
Exámenes vía Web aplicado a la Carrera de Ingeniería de
Sistemas Computacionales.
RESUMEN
Se ha definido la evaluación como la acción integrada en el proceso formativo,
sistemático y continuo, de obtener información sobre el estudiante y la naturaleza y
calidad de su aprendizaje, que permite juzgar alternativas previas a la toma de
decisiones. Se distinguen dos tipos de evaluación: sumativa y formativa. Mientras que
la sumativa persigue averiguar el dominio conseguido por el alumno con el objetivo
de asignar una calificación referente a determinados conocimientos, destrezas y
capacidades, la formativa o procesual pretende que el alumno corrija defectos y
confusiones, supere dificultades y adquiera habilidades que se han detectado como
ausentes en la prueba de evaluación propuesta.
Autor: José Garzón Alvarado
Tutor: Ing. Xavier Loaiza
Para ello, se plantea la utilización un sistema de evaluación virtual, utilizando la
plataforma Open Source, a la cual se le ha dado prioridad en las Instituciones
Públicas, focalizando su aplicación en la Carrera de Ingeniería de Sistemas
Computacionales.
La Herramienta planteada permite preparar exámenes aleatorios, en los que cada
pregunta se elige al azar entre un grupo de preguntas ingresadas. Además, las
preguntas de tipo “problema” permiten la carga de archivo con lo desarrollado por el
estudiante, los cuales pueden hacer exámenes y contar con su calificación
inmediatamente o su calificación parcial si se trata de preguntas de carga de archivo,
reduciendo en gran medida el tiempo de espera de calificaciones.
UNIVERSIDAD DE GUAYAQUIL
FACULTAD DE CIENCIAS MATEMATICAS Y FISICAS
CARRERA DE INGENIERIA EN SISTEMAS
COMPUTACIONALES
______________________________________________________________
EXÁMENES VÍA WEB APLICADO A LA CARRERA DE
INGENIERÍA DE SISTEMAS COMPUTACIONALES.
ABSTRACT
El texto del Resumen en Inglés
Assessment has been defined as the integrated action in the learning process,
systematic and continuous, to obtain information about the student and the nature and
quality of their learning, for judging alternatives prior to decision making. There are
two types of evaluation: summative and formative. While summative seeks out the
domain managed by the student in order to assign a rating concerning certain
knowledge, skills and abilities, training or procedural intended for students to correct
defects and confusion, overcome difficulties and acquire skills that have been
detected as absent in the proposed assessment test.
To this end, we propose the use of an online evaluation system, using the Open
Source platform, which has been given priority in public institutions, focusing on its
application in the Career of Computer Systems Engineering.
Raised Tool allows you to prepare random testing, in which each question is chosen
at random from a pool of questions entered. Furthermore, questions such as
"problem"allow file upload with that developed by the student, which may be
screened and have their score immediately or partial qualification in the case of file
upload questions, greatly reducing waiting time card.
UNIVERSIDAD DE GUAYAQUIL
FACULTAD DE CIENCIAS MATEMATICAS Y FISICAS
CARRERA DE INGENIERIA EN SISTEMAS
COMPUTACIONALES
___________________________________________________
Exámenes vía Web aplicado a la Carrera de Ingeniería de
Sistemas Computacionales.
Proyecto de trabajo de grado que se presenta como requisito para optar por el
título de INGENIERO EN SISTEMAS COMPUTACIONALES
Autor: José Garzón Alvarado
C.I. 0917016065
Tutor: Ing. Xavier Loaiza
Guayaquil, ______de_____
Mes
CERTIFICADO DE ACEPTACIÓN DEL TUTOR
En mi calidad de Tutor del Primer Curso de Fin de Carrera, nombrado por el
Departamento de Graduación y la Dirección de la Carrera de Ingeniería en Sistemas
Computacionales de la Universidad de Guayaquil,
CERTIFICO:
Que he analizado el Proyecto de Grado presentado por el egresado José Luis
Garzón Alvarado, como requisito previo para optar por el título de Ingeniero cuyo
problema es:
EXÁMENES VÍA WEB APLICADO A LA CARRERA DE
INGENIERÍA DE SISTEMAS COMPUTACIONALES.
Considero aprobado el trabajo en su totalidad.
Presentado por:
_________________________
José Luis Garzón A.
0917016065
Tutor: Ing. Xavier Loaiza
Guayaquil, ______de_____
Mes
ÍNDICE GENERAL
CARÁTULA
CARTA DE ACEPTACIÓN DEL TUTOR
ÍNDICE GENERAL
ÍNDICE DE CUADROS
INDICE DE GRAFICOS
RESUMEN
INTRODUCCIÓN
CAPÍTULO 1.- EL PROBLEMA
PLANTEAMIENTO DEL PROBLEMA
Ubicación del Problema en un contexto 1
Situación Conflicto 2
Causas del problema, Consecuencias 3
Delimitación del Problema 4
Planteamiento 4
Evaluación del Problema 5
OBJETIVOS DE LA INVESTIGACIÓN 8
JUSTIFICACIÓN E IMPORTANCIA DE LA INVESTIGACIÓN 9
Utilidad práctica de la Investigación 9
Cuáles serán los beneficiarios 9
CAPÍTULO II.- MARCO TEÓRICO
ANTECEDENTES DEL ESTUDIO 10
FUNDAMENTACIÓN TEÓRICA 11
Exposición fundamentada en la consulta bibliográfica 11
Documental actualizada 18
Fundamentación Legal 20
Orientación Filosófica y Educativa de la Investigación 24
CAPÍTULO III.- METODOLOGÍA
DISEÑO DE LA INVESTIGACIÓN
Modalidad de la Investigación 30
Tipo de Investigación 34
Población y Muestra 37
Operacionalización de las Variables 45
Instrumento de Recolección de Datos 46
Procesamiento de la Investigación 52
Recolección de la Información 54
PROCESAMIENTO Y ANÁLISIS
Criterio para la elaboración de la propuesta 55
Criterio para la realización de la propuesta 56
CAPÍTULO IV.- MARCO ADMINISTRATIVO
CRONOGRAMA 58
PRESUPUESTO 60
CAPÍTULO V.- CONCLUCIONES Y RECOMENDACIONES
CONCLUCIONES Y RECOMENDACIONES 61
REFERENCIAS BIBLIOGRÁFICAS 64
ANEXOS 67
ÍNDICE DE GRÁFICOS
Gráfico 1 : Resultado de encuesta, preguntas 1,2,4,5 40
Gráfico 2 : Detalle del resultado de encuesta, preguntas 4, opción “SI” 42
Gráfico 3 : Resultado de encuesta, pregunta 3 43
Gráfico 4 : Diagrama de nivel 1 68
Gráfico 5 : Diseño de la Base de Datos 69
Gráfico 6 : Pantalla de acceso al Sistema 71
Gráfico 7 : Pantalla principal del sistema de exámenes via web 72
Gráfico 8 : Pantalla de Menú de exámenes via web 74
Gráfico 9 : Pantalla de creación de la cabecera del examen 75
Gráfico 10 : Pantalla de creación de las preguntas del examen 76
Gráfico 11 : Creación de las preguntas objetivas del examen seleccionado 78
Gráfico 12 : Creación de las preguntas objetivas con imagen para el examen
seleccionado 79
Gráfico 13 : Creación de las preguntas de carga de archivo para el examen
seleccionado 78
Gráfico 14 : Pantalla para la modificación de las preguntas del examen
Seleccionado 82
Gráfico 15 : Pantalla para publicación del esxamen seleccionado 84
Gráfico 16 : Pantalla de opciones para la modificación de la cabecera
del exmen 86
Gráfico 17 : Pantalla de opciones para calificación de exámenes pendientes y
generación de actas de calificaciones 88
Gráfico 18 : Pantalla de visualización gráfica de los resultados de los exámenes
por curso. 89
Gráfico 19 : Pantalla de visualización e impresión del acta de calificaciones 90
Gráfico 20 : Pantalla principal del sistema de exámenes via web ambiente
del alumno 92
Gráfico 21 : Pantalla menú de exámenes via web 93
Gráfico 22 : Pantalla para iniciar el examen via web 94
Gráfico 23 : Pantalla para presentar las preguntas del examen via web 95
Gráfico 24 : Pantalla de presentación de las calificaciones y estado del examen
desarrollado via web. 96
Gráfico 25 : Pantalla para seleccionar e iniciar el examen de simulación via web 97
Gráfico 26 : Pantalla de presentación del examen de simulación via web 98
ÍNDICE DE CUADROS
Cuadro 1 : Matríz de operacionalización de variables 45
Cuadro 2: Detalle de egresos del proyecto 60
INTRODUCCIÓN
En la actualidad el proceso de evaluación a los estudiantes no ha cambiado en gran
medida a pesar de existir herramientas que podrían mejorar dicho procedimiento
apegados en normas que indican sobre el tema, en este proceso de evaluación se han
presentado inconvenientes como pérdidas de los exámenes, inconsistencias en las
calificaciones, falta de equidad, retrasos en la entrega de notas, entre otros factores
afectan tanto a profesores como a estudiantes, generando un ambiente de
inconformidad.
Gracias a los avances que se han dado en el Desarrollo de aplicaciones Web,
podemos aplicar estos avances para entregar una herramienta de gran utilidad que
permita mejorar el proceso de evaluación, resolviendo muchos de los inconvenientes
presentados antes, durante y después de este proceso.
1
CAPÍTULO I
EL PROBLEMA
CREACIÓN Y APLICACIÓN DE LOS EXÁMENES.
PLANTEAMIENTO DEL PROBLEMA
Actualmente tanto docentes como estudiantes, somos fieles participantes y testigos
de que el sistema de evaluación continúa, en nuestro país, en gran parte, igual, como
desde hace varias décadas atrás, teniendo en cuenta que existen grandes herramientas
tecnológicas que podrían ayudar a mejorar dicho proceso. Cabe reslatar que no sólo
es importante reforzar o mejorar el proceso de evaluación, debido a que sería un
proceso incomplento, por lo tanto se debe considerar todo el proceso educativo.
A pesar de esto pocas son las Instituciones educativas en nuestro país que han
acogido el implementar herramientas web para intervenir en el proceso de evaluación
de los estudiantes.
UBICACIÓN DEL PROBLEMA EN UN CONTEXTO
En nuestra la Carrera de Ingeniería de Sistemas Computacionales de la Universidad
de Guayaquil, la situación es la misma, el proceso de evaluación se da, basado en
iguales parámetros que el del resto de las instituciones de la misma línea.
SITUACIÓN CONFLICTO NUDOS CRÍTICOS
Observando un poco más la realidad que se vive en base al sistema actual de
evaluación, podemos mencionar desde el punto de vista de los estudiantes, algunos de
2
los conflictos que se han venido presentando aunque la mayoría no sean casos dados
a conocer públicamente, y entre estos se encuentran los siguientes:
La pérdida de los documento de exámenes, que los estudiantes han desarrollado.
Las inconsistencias en las calificaciones.
Falta de equidad.
Retrasos en la entrega de notas.
Desde el punto de vista del profesor nos encontramos, tendríamos que mencionar las
siguientes situaciones que se encuentra todo el personal Docente como son:
Generar diferentes modelos de exámenes para los distintos grupos donde imparte
su cátedra.
Mantenerse al margen de la delgada línea de la imparcialidad durante el proceso
de calificación.
Cometer errores en la obtención de la calificación final.
Ejecutar la maratónica tarea de asignar calificación a un gran volumen de
exámenes que serán la representación de lo aprendido por el estudiante.
Aunque estos no son todos los factores que afectan tanto a profesores como
estudiantes, si logran generar un ambiente de inconformidad, y además alejan el
objetivo final de la evaluación que consiste en certificar y avalar el conocimiento de
3
los estudiantes, lo que deja reflejar la guía del docente sobre los diferentes temas de
clase.
CAUSAS Y CONSECUENCIAS DEL PROBLEMA
Una de las principales causas por las que se generan todos estos inconvenientes con el
tema de los exámenes tanto en escuelas, colegios como en universidades, es que
realmente no se han planteado mejoras por parte del ente principal, como lo es el
Ministerio de Educación del Ecuador, quien es corresponsable junto con el Estado, de
muchos de los problemas que acontecen en el ámbito de la Educación.
Es de nuestro conocimiento que las herramientas tecnológicas en el ámbito de la
educación podrían formar parte de un gran cambio en la educación del Ecuador, pero
la omisión de las autoridades deja como consecuencia el continuo retraso que ha
tenido nuestro país en Educación, reflejándose en la calidad de los profesionales que
las diferentes universidades van generando para el país.
Cabe resaltar que los resultados de los exámenes son un factor indispensable para los
trámites de inscripciones en los niveles superiores basados en la aprobación previa de
las asignaturas del nivel en curso, por lo que siempre se debe asegurar de que el
proceso ha sido justo y transparente para ambas partes, situación que no muchas
veces no se logra.
4
DELIMITACIÓN DEL PROBLEMA
Para este proyecto tomaremos como campo de referencia la Carrera de Ingeniería de
Sistemas Computacionales de la Universidad de Guayaquil, desde la etapa del pre-
universitario, hasta su último semestre, actualmente el octavo, donde el
procedimiento de evaluación se da en dos parciales organizados por un horario
meticulosamente diseñado, pero tradicionalmente la herramienta evaluativa se da
como se ha venido describiendo en esta tesis.
FORMULACIÓN DEL PROBLEMA
¿Cómo influye la aplicación de exámenes vía web en el mejoramiento del proceso de
evaluación en la Carrera de Ingeniería de Sistemas Computacionales de la
Universidad de Guayaquil?
Considerando los diferentes inconvenientes anteriormente descritos generados en la
elaboración y aplicación de los exámenes que a nivel de la Carrera de Ingeniería en
Sistemas Computacional de la Universidad de Guayaquil se presentan, y teniendo
como elementos principales en este proceso al personal docente y a los estudiantes,
pongo en evidencia que la elaboración y aplicación de los exámenes constituye
actualmente un problema, cuyas consecuencias se han presentado desde hace varios
años atrás, perjudicando poco a poco al avance de nuestro país, puesto que esto es un
pilar fundamental en la Educación, la cual se ha visto afectada hasta nuestros días.
5
EVALUACIÓN DEL PROBLEMA
Delimitado:
Dado que el proceso de elaboración y aplicación de exámenes dentro del ámbito
educativo se da en los diferentes niveles de educación, para la implementación de
nuestra solución consideramos como campo de acción la Carrera de Ingeniería en
Sistemas Computacionales de la Universidad de Guayaquil, área que será el punto
inicial de un posible ejemplo a la sociedad de querer contribuir con mejoras en uno de
los pilares fundamentales de un país como lo es la educación.
Claro:
Podemos mencionar que el problema es muy claro, debido a que el resultado o
consecuencias de llevar una tradicional manera de elaborar y aplicar los exámenes
han dejado entre ver sus deficiencias, al punto de permitir llevar a la sociedad algunos
profesionales de muy baja calidad.
Evidente:
Tanto para los estudiantes como para los profesores es más que evidente, los
inconvenientes que se suceden y han sucedido hasta la actualidad, al continuar
llevando la misma modalidad de la elaboración y aplicación de los exámenes.
6
Relevante:
Aportar en gran parte resolver este problema, es de suma importancia, puesto que
estaríamos ayudando a mejorar uno de los pilares fundamentales de nuestro país, la
Educación y vale recordar, que en el momento en que empecemos a evaluar más
eficientemente a los futuros profesionales, lograremos que estos sean en realidad un
verdadero aporte a la sociedad, dentro del campo donde se desenvuelvan.
Original:
La originalidad de este problema se basa en el nuevo enfoque que planteamos para su
resolución, debido a que observando estos inconvenientes desde el punto de vista
tecnológico, es considerado como un proceso de alta prioridad para un sector, que en
este caso hacemos referencia a la Carrera de Ingeniería en Sistemas Computacionales
de la Universidad de Guayaquil, donde mencionado proceso actualmente está siendo
manejado de forma tradicional, pudiendo mejorarlo en gran parte si se aplican
herramientas tecnológicas, permitiendo así producir mejores resultados, y a la vez
resolviendo sus consecuencias que en cierta forma afectan a la sociedad ecuatoriana.
Factible:
La solución que he planteado y que ayudará a resolver el problema de la elaboración
y aplicación de los exámenes en la Carrera de Ingeniería en Sistemas
Computacionales de la Universidad de Guayaquil, es factible basado en que el tiempo
que se empleará para su desarrollo, logrará cubrir los aspectos considerados para esta
solución, resaltando además que su desarrollo será mediante las herramientas
7
tecnológicas que gozan de gran aceptación por parte de las leyes que rigen a esta
institución, partiendo de la idea de que se debe utilizar en lo posible tecnología
abierta, principalmente para todo lo que tenga que ver a nivel del estado.
Identifica los productos esperados:
Básicamente la solución abarca a los elementos principales involucrados en el
proceso de elaboración y aplicación de exámenes, que son el profesor y el alumno,
donde el profesor contará con las opciones necesarias para llevar a cabo la tarea de
elaborar el examen hasta su calificación y en el caso del estudiante, existirán opciones
que le permitirán rendir su examen e inmediatamente obtener su resultado o resultado
parcial del mismo dependiendo del caso.
Variables:
Existen diferentes variables que intervienen en el análisis de este problema de ámbito
educativo, entre los más relevantes tenemos:
Variable Independiente:
1. Aplicación de examen vía web,
Variable Dependiente:
1. Mejoramiento del proceso de evaluación en la Carrera de Ingeniería en
Sistemas Computacionales de la Universidad de Guayaquil.
2. Propuesta de desarrollo de evaluación estudiantil vía web.
8
OBJETIVOS
Objetivo General:
Desarrollar una aplicación de evaluación estudiantil vía web, mediante las
herramientas tecnológicas adecuadas de tipo open source
con la finalidad de mejorar uno de los pilares fundamentales del proceso enseñanza -
aprendizaje de esta Institución.
Objetivos Específicos:
Agilitar el proceso de desarrollo de los exámenes mediante las diferentes opciones de
fácil manejo del sistema web, para lograr una rápida y efectiva evaluación de los
estudiantes.
Otorgar a los estudiantes resultados inmediatos sobre las evaluaciones realizadas
mediante los procesos automáticos de la aplicación web con la finalidad de certificar
los conocimientos adquiridos durante el proceso de enseñanza aprendizaje.
JUSTIFICACION E lMPORTANCIA Pasando por las mismas situaciones al ser estudiante, y después de haberme
desempeñado como profesor por un lapso de siete años aproximadamente previa
preparación universitaria, he podido palpar ambos lados del proceso educativo, y
siendo consciente que la elaboración y aplicación de exámenes, es el filtro en que se
basan las autoridades para ubicar a un estudiante en tal o cual nivel de preparación y a
9
su vez medir el rendimiento de los profesores como tal, he tomado la iniciativa de
desarrollar una solución, mediante herramientas de tecnología de código abierto
(open source), para mejorar el proceso en mención, y pretendiendo a su vez ser el
punto de partida para futuros cambios en la Carrera de Ingeniería en Sistemas
Computacionales de la Universidad de Guayaquil.
Por lo tanto la solución planteada, basada en el análisis y observación realizada a este
problema, constituirá inicialmente para el docente un nuevo frente desde el cual podrá
contar con una gran ayuda para simplificar su ardua tarea de elaboración de exámenes
y luego su aplicación, así a su vez para el estudiante se otorgará las facilidades donde
podrá ver reflejado todo su esfuerzo y preparación de manera transparente,
minimizando las consecuencias de los inconvenientes del antiguo proceso.
Cabe resaltar que con la implementación de esta herramienta se pretende no sólo
ayudar a los elementos principales que intervienen en este proceso, como son los
profesores y estudiantes sino que además, se quiere dejar como pilar sólido para los
futuros avances y mejoras en este punto tan importante de la educación.
Al mejorar y optimizar este proceso podremos lograr contribuir a la sociedad con
profesionales de calidad, debido a que al contar con un mejor proceso de elaboración
y aplicación de exámenes se podrá realizar una evaluación más eficiente y con plena
transparencia.
10
CAPÍTULO II
MARCO TEÓRICO
ANTECEDENTES DEL ESTUDIO
Existen avances tecnológicos que a la fecha podrían aportar de mucha ayuda,
específicamente al proceso de elaboración y calificación de exámenes, entre los que
puedo mencionar una solución implementada mediante impresoras multifuncionales,
a través de las cuales se puede indicar las respuestas correctas y luego de un proceso
de digitalización, automáticamente se califican los exámenes ingresados, permitiendo
además generar reportes de las calificaciones.
Anteriormente, la forma como se ha llevado el proceso de evaluación ha generado
ciertos inconvenientes con los cuales hemos venido lidiando tanto los docentes como
los estudiantes, estos últimos en muchas ocaciones han resultado perjudicados en sus
calificaciones, ya sea por un mal cálculo o por la asignación de calificaciones en
preguntas suceptibles de cuestionamientos.
Cabe resaltar que durante el tiempo en que se ha empleado el proceso de evaluación,
se ha tratado de efectuar mejoras pero sin mayores resultados, por lo que se pone a
consideración el empleo de la tecnología para ayudar a hacer posible un gran cambio
en la educación.
11
FUNDAMENTACIÓN TEÓRICA
Para esta fundamentación teórica, he tomado algunos textos de referencias, los cuales
a mi punto de vista describen en buena forma factores que implican el problema que
he decidido ayudar a resolver con el planteamiento de de la solución indicada al
principio de esta documento.
El primer texto a citar es de la Revista Iberoamericana de Educación (ISNN: 1681-
5653) autor José Ruiz Ortega, donde se indica lo siguiente.
MINUCIAS Y SUTILEZAS DEL EXAMEN EN EDUCACION
Desde épocas remotas, los profesores o autoridades, han manifestado el interés de
evaluar el grado de conocimientos que los estudiantes van adquiriendo en su paso por
los diferentes niveles de educación. En este sentido, se ha buscado la forma de
hacerlo de manera objetiva; sin embargo, como el aprendizaje no puede ser palpado,
olido o visto en su esencia pura, tiene que ser inferido de una forma tal que a la vez
permita medirlo y darle seguimiento en función de su evolución, situación que
conllevó y conlleva aún un nuevo conflicto, idear y desarrollar una modalidad para
evaluar ese proceso, que fuese totalmente neutral y que no sea permeado por las
cuestiones de la subjetividad humana. Así surge el Examen con fines de evaluación
Educativa.
12
Con esa finalidad se diseña el examen oral o escrito como el instrumento principal
para la evaluación educativa que, con el tiempo se emuló por la mayoría de los
sistemas educativos de los países del mundo, tal vez por carecer de elementos
teóricos y metodológicos que les permitiera realizar una verdadera apreciación de la
evolución del proceso de formación, información y capacitación de sus educandos.
Ciertas instituciones educativas, ofrecen en el curriculum formal el examen (oral y
escrito) y las calificaciones como resultado de ello, siendo la forma válida y legítima
para evaluar y objetivar el aprendizaje, convirtiéndose en lo que se denomina
mandato social e institucional, a tal grado, que el docente ha sumado, entendido y
aplicado dentro de su propio capital cultural, que no es menester desarrollar grandes
esfuerzos para ser imparcial y neutro a la hora de aplicar sus exámenes, que
solamente basta con que quede dentro de los parámetros normales que el imaginario
social ha construido y considerado como lo que no se debe de cuestionar o porque
está dentro de la norma.
Parece ser que para evaluar, juzgar o determinar los conocimientos que un sujeto
posee, al finalizar un periodo de clases, las instituciones educativas sólo disponen de
los resultados de los exámenes, ya sea el examen de admisión para el ingreso a un
nivel superior o el examen de oposición para un empleo, postulando con ello, según
crítica de Jeant Piaget ―… que el éxito en los exámenes constituye una prenda de
adquisición duradera‖, haciendo caso omiso de lo que queda en el subconsciente del
13
ser humano y sus consecuencias al hacer uso de estas prácticas de exanimación
académica, incluso, antes, durante y después del fenómeno.
Otro punto a consideración para fundamentar este documento es del libro
EVALUACIÓN DE LOS APRENDIZAJES, por el Dr. Juan Cordero Iñiguez,
MINISTRO DE EDUCACIÓN, CULTURA DEPORTES Y RECREACIÓN.
EVALUACIÓN DE LOS APRENDIZAJES.
La práctica evaluativa amerita un profundo análisis de manera que pueda ser
concebida como tema de ocupación, de estudio y de posicionamiento teórico para
quienes conciben la tarea docente como una profesión.
Es posible mirar el campo de la evaluación desde múltiples perspectivas: política,
pedagógica, didáctica como también atendiendo a sus diferentes ámbitos de
aplicación: la institución, la escuela, el sistema educativo, etcétera. Como es sabido,
el tema de la evaluación ha despertado y despierta encendidas polémicas.
Entender la evaluación de manera determinada, supone en cierto sabido, tomar una
postura respecto de la enseñanza y del aprendizaje. Si se parte de la idea que
enseñanza y aprendizaje constituyen procesos diferenciados, podemos orientar el
análisis hacia uno y otro proceso separadamente.
14
Si pensamos en la enseñanza, será necesario pensar qué valor tiene para ésta la
información que brinda la evaluación. En este sentido nos referimos a algunas de las
finalidades consideradas como principales en el proceso evaluativo. Por ejemplo,
diagnosticar, pronosticar, seleccionar, acreditar.
Preguntarse por la finalidad de la evaluación, constituye uno de los ejes más
importantes del proceso evaluativo. Es de destacar que la información que se obtiene,
también resulta fundamental para los alumnos y sus padres, para las autoridades
escolares, para la institución y el sistema educativo.
Desde el punto de vista del aprendizaje es necesario considerar otro aspecto de la
evaluación vinculado a su objeto – que se evalúa -. Habrá que definir para ello que es
aprender, que significa aprender una disciplina en particular, para luego diseñar un
instrumento que permita encontrar indicios o indicadores para que los alumnos
puedan dar cuenta de sus aprendizajes.
La definición del objeto que se evaluará junto con la reflexión por la finalidad de la
evaluación constituyen unos de los ejes centrales de un proceso evaluativo.
Otra cita a considerar para fundamentar este documento es: LA EVALUACIÓN
DEL PROCESO EDUCATIVO COMO MECANISMO DE PODER Y CONTROL
DISCIPLINARIO, por el Dr. Policarpo Chacón Angel, JEFE DEL ÁREA DE
15
INVESTIGACIÓN EDUCATIVA EN LA ESCUELA NORMAL SUPERIOR
FEDERAL DE OAXACA, MÉXICO.
LA EVALUACIÓN DEL PROCESO EDUCATIVO COMO MECANISMO DE
PODER Y CONTROL DISCIPLINARIO.
Es necesario y urgente entre los profesores, reconceptualizar, a la evaluación desde
una perspectiva crítica, tarea nada fácil, pues esta tarea es un proceso tanto personal
como colectivo. Para recuperar el aspecto formativo de la evaluación, se necesita
fomentar una cultura de diálogo, una cultura de crítica, de autocrítica y de
autorreflexión y no la cultura de control y de competencia que se ha fomentado
tradicionalmente con la evaluación de corte positivista.
La evaluación no es una actividad neutral, es decir, no está libre de valores e
ideologías, pues la sola conceptualización implica una postura política e ideológica de
los valores educacionales. Asimismo, se requiere saber ubicar a la evaluación de
acuerdo con el tipo de racionalidad que la sustenta, de lo contrario, no se identificarán
los fines que se persiguen, tal es el caso de la evaluación sustentada racionalmente
por el positivismo, cuyo interés instrumental deposita la objetividad y la medición
como problema fundamental de ella.
16
Los tradicionales exámenes escritos sólo han servido, en su gran mayoría, para
marcar un sistema selectivo de individuos que sólo van a ser utilizados para la vida
productiva, reduciendo así, al sistema de evaluación, a un sistema selectivo de
obreros calificados.
Al ser la evaluación una actividad sistemática integrada en el proceso educativo, para
mejorarlo, se necesita asumir una actitud investigadora, mostrar disposición para
examinar con sentido crítico, reflexivo y sistemático. No se puede perder de vista que
la evaluación es el mejor momento para que el profesor reflexione y analice su
práctica pedagógica.
Una concepción diferente de evaluación debe orientarse a la libertad y la autonomía
de los estudiantes, es decir, promover una evaluación democrática, donde el profesor
parta de las necesidades de los alumnos. La evaluación debe ser justa, es decir, que
los elementos de este proceso (maestros-alumnos) utilicen un contrato equitativo
respecto a sus propios intereses de tal forma que lleguen a ser personas libres, iguales,
racionales y autónomas. Según House E.R. para que exista un contrato equitativo
debe reunir por lo menos doce condiciones: "La equidad es una idea que aparece en
todas partes en la evaluación, casi siempre en un nivel intuitivo de conciencia. Aquí
nos hemos ocupado de conocer las doce condiciones que ha de cumplir un contrato de
evaluación para que pueda considerarse equitativo. Entre estas condiciones están: la
ausencia de coerción, la racionalidad, la aceptación de los términos, el acuerdo
17
conjunto, el desinterés, la universalidad el interés comunitario, la información igual y
completa, la falta de riesgo, la posibilidad de la voz de todos los participantes y la
participación. El contrato equitativo es vinculante salvo que se oponga a nuestros
deberes naturales o a principios morales más importante como los de la justicia."
(HOUSE; 1997; 161).
La evaluación debe realizarse en un ambiente de confianza y de libertad, donde el
alumno tome nota de la marcha de su aprendizaje, que conozca sus errores y sus
aciertos, donde no se le imponga desde afuera un sistema de calificaciones y
exámenes al que se vea obligado a pasar; se necesita promover un deseo espontáneo
de aprender, pues el aprendizaje impuesto por lo general causa descontento, rebeldía,
problemas de indisciplina, deserción, etcétera.
La evaluación, lejos de reprobar al alumno por no haber demostrado su capacidad sin
más explicación, debe convertirse en un recurso, que le permita apoyarse sobre lo que
ya sabe, para recorrer nuevamente el camino que lo conduzca al aprendizaje esperado.
Es decir, ayudarle para que sea capaz de formarse como sujeto. Lo que se pretende
con el alumno, es que él participe en la toma de decisiones, que empiece a tomar
conciencia de su realidad, que sea consciente de sus alcances y limitaciones.
18
Otra cita a considerar para fundamentar este documento es: EL SENTIDO DEL
EXAMEN EN LA EDUCACIÓN SUPERIOR. ¿REPRODUCCIÓN O
DEMOSTRACIÓN DE LO APRENDIDO?, por Rosa Aurora Padilla Magaña
Universidad Nacional Autónoma de México, México. Profesora investigadora del
Instituto de Investigaciones Sobre la Universidad y la Educación en la UNAM.
EL SENTIDO DEL EXAMEN EN LA EDUCACIÓN SUPERIOR.
¿REPRODUCCIÓN O DEMOSTRACIÓN DE LO APRENDIDO?
Para nadie es desconocido el gran número de exámenes que nuestros estudiantes
tienen que presentar continuamente durante su paso por la escuela, sea para ingresar,
para acreditar o para egresar. Si algo caracteriza a los sistemas educativos en la última
década, es su afán por la examinación. Es a partir de la creación de sistemas
nacionales e internacionales de evaluación, que la aplicación de exámenes a gran
escala, cuyas primeras manifestaciones en México tuvieron lugar en la década de los
sesenta y que a partir de los noventa ha proliferado enormemente, es parte de una
política educativa cimentada en la calidad y control, no sólo de estudiantes, sino
también de docentes.
Ante la proliferación que ha tenido la aplicación de exámenes en las últimas décadas,
tanto nacional como internacionalmente, además de los realizados de manera interna
en las escuelas, surgen algunos cuestionamientos centrales: ¿Cuál es el sentido que se
le ha dado al examen en los sistemas escolares? ¿Cuál es el tipo de examen que
19
permite una demostración y aplicación de lo aprendido? ¿Es posible generar desde la
acción docente, algunas alternativas para darle al examen un empleo más educativo?.
Para dar respuesta a estas interrogantes consideramos conveniente, en primer término,
hacer una remembranza de la finalidad con que los exámenes incursionan al ámbito
educativo y de cómo ésta se ha ido corrompiendo, para posteriormente abordar el
problema de la masificación de los mismos y el tipo de exámenes que se están
aplicando en el país y el mundo; así como las criticas que éstos han generado, y
finalmente ofrecer algunas experiencias en relación con laelaboración de exámenes,
realizadas desde la práctica docente, con el fin de contrarrestar el sentido punitivo y
meramente cuantitativo con que se le ha venido considerando.
20
FUNDAMENTACIÓN LEGAL
Partiendo del siguiente artículo y específicamente del literal ―b‖, del PROYECTO DE
NUEVA LEY ORGANICA DE EDUCACION SUPERIOR donde habla sobre el
ORGANISMO PÚBLICO DE ACREDITACIÓN Y ASEGURAMIENTO DE LA
CALIDAD (CONAAC), podemos indicar que la evaluación empieza desde la misma
Institución y lo que deberá reflejar se aplica a sus estudiantes.
Art. 15.- El Consejo Nacional de Acreditación y Aseguramiento de la Calidad tendrá
las siguientes atribuciones y deberes:
a) Cumplir y hacer cumplir la Constitución Política, las leyes y los reglamentos,
dentro del ámbito de sus competencias;
b) Definir las políticas y lineamientos generales de autoevaluación, evaluación,
acreditación y aseguramiento de la calidad de las instituciones de educación superior,
de sus programas y carreras, y planificar su ejecución, de acuerdo a sus
características;
c) Aprobar las características, criterios, indicadores e instrumentos de calidad para la
autoevaluación y evaluación externa de las instituciones del sistema de educación
superior y de los programas y carreras;
21
d) Aprobar todos los reglamentos necesarios para los procesos de autoevaluación,
evaluación, acreditación y aseguramiento de la calidad;
e) Vigilar que los procesos de evaluación, acreditación y aseguramiento de la calidad
se realicen de conformidad con los reglamentos respectivos, garantizando absoluta
independencia, imparcialidad y objetividad;
f) Conocer y resolver los informes derivados de la realización de los procesos de
evaluación y acreditación;
g) Otorgar certificados de acreditación por institución o por carreras a las
instituciones del sistema de educación superior que hayan cumplido con todos los
requisitos reglamentarios. Este certificado tendrá una duración de cinco años;
h) Coordinar los procesos de evaluación y acreditación con la institución pública de
evaluación integral y con el organismo responsable de la ciencia, tecnología e
innovación;
i) Emitir los informes para la creación de universidades y escuelas politécnicas,
institutos superiores técnicos, tecnológicos y pedagógicos y conservatorios de música
y artes, y enviarlos al CONAES;
22
j) Aprobar su presupuesto;
k) Expedir y reformar todos los reglamentos que sean necesarios para el
cumplimiento de sus funciones y de su gestión interna, de conformidad con la
presente ley;
l) Suspender, de acuerdo con esta ley, a las universidades, escuelas politécnicas,
institutos superiores técnicos, tecnológicos y pedagógicos, y conservatorios de música
y arte, así como solicitar la derogatoria de las leyes o resoluciones de creación, según
el caso;
m) Informar a la sociedad ecuatoriana y a la Asamblea Nacional, anualmente, sobre la
marcha del sistema de evaluación, acreditación y aseguramiento de la calidad;
n) Los demás que determine esta ley y los reglamentos.
Los siguientes artículos del Capitulo XIII del PROYECTO DE NUEVA LEY
ORGANICA DE EDUCACION SUPERIOR, dejan en claro la responsabilidad de la
Institución Educativa sobre la evaluación de sus estudiantes.
Art. 72. Los requisitos de carácter académico y disciplinario necesarios para la
aprobación de los cursos y carreras, constarán en los respectivos estatutos,
23
reglamentos y demás normas de la institución. Solamente en casos establecidos,
expresamente, en el estatuto de la institución, un estudiante podrá matricularse hasta
por tercera ocasión en una misma materia o en el mismo semestre, módulo, año
académico o nivel académico.
En ningún caso habrá una cuarta matrícula en la asignatura o en la carrera que la
incluyan, ni en la propia institución, ni en ninguna otra institución del Sistema de
Educación Superior. Para el efecto, el CONAES mantendrá un registro actualizado
con la información, que obligatoriamente, enviarán las instituciones mencionadas.
Art. 73. El CONAES expedirá las normas que garanticen la transparencia, justicia y
equidad en los sistemas de evaluación estudiantil y para conceder incentivos al mérito
académico.
Art. 74. Las instituciones de educación superior mantendrán una unidad
administrativa de bienestar estudiantil destinada a promover la orientación
profesional, créditos, estímulos, ayudas económicas y becas; y a ofrecer los servicios
asistenciales que se determinen en las normativas de la institución. Esta unidad,
además, se encargará de promover un ambiente de respeto a los valores éticos y a la
integridad física, psicológica y sexual de los estudiantes, en un ambiente libre de
violencia y brindará asistencia a quienes demanden por violaciones de estos derechos.
24
Art. 76. Las instituciones de educación superior dictarán, obligatoriamente, un
reglamento especial en el que se contemplen los deberes y derechos de los
estudiantes: representación y participación en los órganos de gobierno, crédito
estudiantil, becas, servicios de bienestar, prácticas, pasantías, bolsas de trabajo,
inserción laboral y seguimiento a egresados.
HIPÓTESIS PREGUNTAS A CONTESTARSE
PREGUNTAS A CONTESTARSE
¿Podemos aportar con mejoras al proceso de evaluación?
Una de las finalidades imperiosas que debe tener todo profesional, es el de aportar a
la sociedad con sus conocimientos adquiridos en cualquier campo de acción y al
presentarse ésta oportunidad, podemos brindar dicha ayuda en uno de los pilares
fundamentales de la educación universitaria, como lo es la evaluación de los
estudiantes, ya que al fin y al cabo todos pasamos por esta etapa, pero somos muy
pocos los que han orientado sus esfuerzos hacia este ámbito que no ha recibido
muchos cambios.
¿Es posible aportar con cambios al proceso de evaluación, mediante la ayuda de la
tecnología?
25
Como es conocido por la mayoría de las personas, actualmente la tecnología está
interviniendo en la mayoría de los actos del ser humano representando mucha utilidad
y liberándonos de realizar procesos que eran muy complicados para nosotros.
El avance de los sistemas informáticos, que actualmente están orientados al Internet,
nos han provisto de un sin número de herramientas que han sido utilizadas para
aportar con la solución orientada a la elaboración y aplicación de los exámenes, por lo
tanto podemos decir que la solución constituirá una ayuda al sistema de evaluación
que actualmente se lleva en esta Institución.
VARIABLES DE LA INVESTIGACIÓN
Entre las variables que podemos mencionar tenemos las siguientes:
Variable Independiente:
1. Aplicación de examen vía web.
Variable Dependiente:
2. Mejoramiento del proceso de evaluación en la Carrera de Ingeniería en
Sistemas Computacionales de la Universidad de Guayaquil.
3. Propuesta de desarrollo de evaluación estudiantil vía web.
26
Indicadores de las Variables
Tiempo en la entrega de notas. Debido a que el docente tiene encargadas más de
una asignatura o curso, es más que conocido, que siempre se asume la ardua tarea
de la calificación de todos los exámenes teniendo en muchas ocasiones que
tomarse más del tiempo previsto, para entregar las calificaciones a sus
estudiantes, trayendo consigo un situación de inconformidad, pues de esta
calificación depende el poder inscribirse al curso inmediato superior.
Imparcialidad en la calificación. Esto es muy abstracto y no es medible, pero
afecta directamente al proceso de evaluación de los estudiantes, debido a que
pueden presentarse instancias de favoritismos entre el profesor y el estudiante.
Transparencia en las calificaciones. Este punto tiene una estrecha relación con
el anterior, debido a que en muchas ocasiones existen casos en que la calificación
asignada no es correcta, por motivos de mal cálculo de parte del profesor,
obligando al estudiante efectuar el reclamo respectivo para su corrección
inmediata.
Pérdidas de los documento de exámenes, que los estudiantes han
desarrollado. Existen varios ocasiones en que los exámenes se han extraviados
en manos de los profesor, generando inquietud en los alumnos debido al interés
por conocer cómo se procederá con su calificación.
27
Generar diferentes modelos de exámenes para los distintos grupos donde
imparte su cátedra. Algunos profesores, aquellos que les preocupa la
transparencia en el rendimiento académico de sus estudiantes, tienen a bien
elaborar diversos modelos de exámenes con la finalidad de evitar el provocar en
ellos la intención de que su compañero comparta la información.
DEFINICIONES CONCEPTUALES
Profesor: Persona que ejerce, enseña o transmite una ciencia o una arte. Quien
imparte la clase (hace el papel de emisor).
Estudiante: Es aquella persona dedicada a la lectura, puesta en práctica y
aprehensión de conocimientos sobre alguna materia o arte.
Internet: Canal el cual conecta todas las computadoras del mundo para que la
información pueda ser enviada o recibida.
Examen: Indagación y estudio que se hace acerca de las cualidades y circunstancia
de una cosa o hecho.
Educación: Acción y efecto de educar. Conjunto de enseñanzas que se le da a una
persona
28
Enseñanza: Acción o efecto de enseñar. Sistema y método de dar instrucción.
Aprendizaje: Acción de aprender, en particular algún arte u oficio.
Proceso de evaluación: Es una parte integral del aprendizaje, es permanente, indica,
analiza, toma decisiones con respecto a los logros y definiciones en los procesos,
recursos, resultados en función de los objetivos y destrezas alcanzadas por los
alumnos.
Sistemas informático: Conjunto de procesos automatizados por medio de elementos
computarizados, los cuales pueden ser tanto software como hardware.
Herramientas Open Source: Es todo aquel producto informático, que permite contar
con su código fuente, el mismo que podrá ser modificado y adaptado según la
necesidad o el ámbito para lo que sea requerido.
Sistema: Conjunto coherente de nociones sobre una materia determinada. Conjunto
de elementos que forman un todo estructurado.
Aplicación Web: Software desarrollado bajo lenguajes de programación orientados a
Internet.
29
MySql: Es un sistema de gestión de base de datos relacional, multihilo y multiusuario
con más de seis millones de instalaciones.1 MySQL AB —desde enero de 2008 una
subsidiaria de Sun Microsystems y ésta a su vez de Oracle Corporation desde abril de
2009— desarrolla MySQL como software libre en un esquema de licenciamiento
dual.
Ajax: es una tecnología asíncrona, en el sentido de que los datos adicionales se
requieren al servidor y se cargan en segundo plano sin interferir con la visualización
ni el comportamiento de la página. JavaScript es el lenguaje interpretado (scripting
language) en el que normalmente se efectúan las funciones de llamada de Ajax
mientras que el acceso a los datos se realiza mediante XMLHttpRequest, objeto
disponible en los navegadores actuales. En cualquier caso, no es necesario que el
contenido asíncrono esté formateado en XML.
PHP: Es un lenguaje de programación interpretado, diseñado originalmente para la
creación de páginas web dinámicas. Es usado principalmente en interpretación del
lado del servidor (server-side scripting) pero actualmente puede ser utilizado desde
una interfaz de línea de comandos o en la creación de otros tipos de programas
incluyendo aplicaciones con interfaz gráfica usando las bibliotecas Qt o GTK+.
30
CAPÍTULO III
METODOLOGÍA
DISEÑO DE LA INVESTIGACIÓN
MODALIDAD DE LA INVESTIGACIÓN
Proyecto factible y especial
Empecemos por las definiciones de las palabras factibilidad y viabilidad. Las
tomamos del diccionario de la Real Academia Española en línea (www.rai.es).
Factibilidad: ―cualidad o condición de factible‖, Factible: ―que se puede hacer‖;
Viabilidad: ―cualidad de viable‖, Viable: ―Que, por sus circunstancias, tiene
probabilidades de poderse llevar a cabo‖.
Si apreciamos las dos definiciones son muy similares, claro, sin entrar en discusiones
semánticas o dialécticas tal vez ahí sí encontremos una diferencia; pero el propósito
de este escrito es diferenciar los conceptos dentro de los proyectos.
Entonces podemos decir que es el que permite la elaboración de una propuesta de un
modelo operativo viable, o una solución posible, cuyo propósito es satisfacer una
necesidad o solucionar un problema.
Los proyectos factibles se deben elaborar respondiendo a una necesidad específica,
ofreciendo soluciones de manera metodológica.
31
Es así que el proyecto factible consistirá en la investigación, elaboración y desarrollo
de una propuesta de un modelo operativo viable para solucionar problemas,
requerimientos o necesidades de organización o grupos sociales; puede referirse a la
formulación de políticas, programas, tecnologías, métodos o procesos.
El proyecto factible debe tener apoyo en una investigación de tipo documental, de
campo o un diseño que incluya ambas modalidades.
Comprende las siguientes etapas generales:
El diagnóstico;
planeamiento y fundamentación teórica de la propuesta;
procedimiento metodológico;
actividades y recursos necesarios para su ejecución;
análisis y conclusiones sobre la viabilidad y realización del proyecto;
en caso de su desarrollo, la ejecución de la propuesta y la evaluación tanto del
proceso como de sus resultados.
Pueden llegar hasta la etapa de las conclusiones sobre su viabilidad, o pueden
consistir en la ejecución y evaluación de proyectos factibles presentados y aprobados
por otros estudiantes, para dar continuidad a líneas de investigación aplicadas.
Un proyecto factible, es decir que se puede ejecutar, es el que ha aprobado cuatro
evaluaciones básicas:
32
Evaluación Técnica
Evaluación Ambiental
Evaluación Financiera
Evaluación Socio-económica
La aprobación o ―visto bueno‖ de cada evaluación la llamaremos viabilidad; estas
viabilidades se deben dar al mismo tiempo para alcanzar la factibilidad de un
proyecto; por ejemplo un proyecto puede ser viable técnicamente pero puede ser no
viable financieramente, y así las otras posibles combinaciones; entonces con una
evaluación que resulte no viable, el proyecto no será factible.
En la evaluación técnica se analizan los tópicos referentes al comportamiento del
mercado, la tecnología disponible, los aspectos legales y la posible estructura
organizacional.
Se puede tomar por separado de esta evaluación el estudio del mercado y realizar su
análisis independientemente; debido a que sus resultados marcan trascendentalmente
varios aspectos no sólo de la evaluación técnica (tamaño, localización, entre otros)
sino de la financiera (proyecciones de ventas, rentabilidad, entre otros).
La evaluación ambiental hace referencia a los resultados del estudio de impacto
ambiental que se debe realizar para cuantificar y cualificar la injerencia que el
33
proyecto causará al insertarlo en un medio biótico y abiótico; y pude ser que el
impacto sea positivo o negativo.
En el caso que sea negativo también debe plantear el cómo encaminar el proyecto
dentro de los parámetros de la legislación ambiental vigente y cuál es su plan de
sostenibilidad del medio ambiente afectado.
En los proyectos que buscamos la factibilidad, son proyectos que buscan producir un
bien o servicio para satisfacer una necesidad o colmar una expectativa; para lo cual se
necesita definir su rentabilidad o no, que es el objetivo de la evaluación financiera.
Para terminar, tenemos la evaluación socio-económica; y la mencionamos así
haciendo referencia, y énfasis, en el impacto social del proyecto, aunque en un
análisis más profundo sonaría algo redundante teniendo en cuenta que la economía,
por definición, es una ciencia social que busca satisfacer las necesidades humanas
materiales.
Aquí se analizarán la población afectada (cobertura del proyecto), sus impactos
(beneficios o perjuicios) y su relación con las variables económicas de una región
(país) por ejemplo: empleo generado, contribución al PIB, relación con el plan de
desarrollo, entre otras.
34
Es importante evaluar estas variables, ya que el proyecto puede tener restricciones
respecto a políticas económicas por ejemplo: de importación y exportación,
cambiarias, arancelarias, entre otras.
En conclusión, un proyecto factible es el que técnico, ambiental, financiero y socio-
económicamente es viable.
Si el proyecto es factible, se puede pensar en diseñar un plan de proyecto para su
ejecución y poder convertir el proyecto en una unidad productiva de un bien o
servicio planteado (operación).
En este punto se puede usar como herramienta de desarrollo del proyecto la Gerencia
de Proyectos.
Tipo de investigación
Proyecto Factible.
Según el significado de la palabra proyecto, presentada por el pequeño diccionario
Larousse, como la intención de hacer algo o plan que se diseña para poder realizarlo,
se puede definir un proyecto como aquel intento por lograr un objetivo especifico
mediante un grupo único de tareas interrelacionadas y la utilización efectiva de los
recursos disponibles. Todo proyecto tiene un propósito bien definido expresado en
35
términos de satisfacción de un cliente para dar solución a una necesidad presente
dentro de su organización.
Elementos
El presente proyecto consta básicamente de los siguientes elementos:
Operaciones: Los siguientes puntos son las operaciones realizadas para el
desarrollo de este proyecto. Análisis de requisitos de la aplicación., Analisis de
Flujo de Datos, Diseño Diagrama Cero y Nivel 1, Desarrollo de Diagrama de
Flujo de Datos, Análisis y diseño de la Base de Datos para la aplicación, Análisis
y diseño de la relación de Entidades de la aplicación,.Análisis y diseño de la
interfaz de la aplicación, Manejo de PHP y otras herramientas, Diseño de la
interfaz del sistema, Desarrollo de la interfaz de usuario profesor, Desarrollo de la
interfaz de usuario alumno, Pruebas del sistema de forma local, Ajustes en base a
las pruebas, Implantación de la aplicación en un servidor de Dominio, Pruebas de
la aplicación en el servidor de Dominio, Ajustes finales y varios.
Recursos: Para este proyecto se contó con la ayuda de un programador, un
computador, el software adecuado, en este caso PHP principalmente, además
económicamente se desenbolso el dinero necesario para adquirir implementos
como copias, impresiones, consumo de internet, etcétera, esto se detalla más
adelante en la sección de presupuesto, finalmente se utilizó herramientas de
36
recolección de información como la entrevista, la que se efectuó a estudiantes
como a docentes.
Las limitaciones de capital, tiempo, dinero entre otros fueron considerados con la
finalidad de evitar contratiempos en el desarrollo del proyecto.
Atributos
El proyecto contiene una serie de actividades o tareas interdependientes no
repetitivas que deben realizarse en cierto orden para lograr el objetivo del
proyecto.
El proyecto necesitó de varios recursos para realizar las tareas. Estos recursos
incluyeron personal especializado (computistas, diseñadores gráficos,
programadores), equipos, materiales de consumo, instalaciones, y recursos
financieros.
El proyecto se debió ejecutar en un periodo de tiempo específico o limitado. Esto
es, con una fecha para comenzarlo (05/mar/2010) y una fecha en la que se espera
sea logrado el objetivo (16/ago/2010).
El proyecto está direccionada a una entidad educativa. Esta entidad es la que
proporciona la información y tiene una necesidad que requiere ser satisfecha.
37
El proyecto incluye un grado de incertidumbre. Por lo general, antes de que se
inicie un proyecto se preparó un plan sobre la base de ciertos supuestos y
estimaciones. Así por ejemplo, una actividad se espera terminarla en cierto
tiempo, pero debido a imprevistos como factores ambientales o escasez de
materiales, la actividad es retrasa influyendo ello en mayores costos de lo
estimado. Esta combinación de supuestos y estimaciones ocasionan ese grado de
incertidumbre con relación a si el objetivo del proyecto será alcanzado por
completo para la fecha prevista.
POBLACIÓN Y MUESTRA
Población:
La población a considerar para este trabajo son los estudiantes y profesores de la
Carrera de Ingeniería de Sistemas Computacionales de la Universidad de Guayaquil,
considerando una población de 3000 estudiantes y 50 profesores.
Muestra:
Como muestra del personal docente se tomó 5 profesores, con la finalidad de aplicar
una entrevista y obtener información relevante para el proyecto.
El subconjunto de la población de estudiantes a quienes se les aplicará la encuesta
para la obtención de la información fue determinado en base a la fórmula adecuada
que se presenta detallada en esta sección.
38
Los estudiantes y profesores, proporcionarán información muy relevante para afianzar
este proyecto, mediante la aplicación de las herramientas como la entrevista para el
caso de los profesores y la encuesta para el de los alumnos.
A continuación se detalla la fórmula y los resultados obtenidos de la encuesta
realizada a los estudiantes:
Fórmula y cálculo:
PQN
n =
|(N-1) E² + PQ
K²
n= 0.25 * 3000
2999 * (0.10)2 + 0.25
4
n= 750
7.7475
n= 96.80 estudiantes
n: Tamaño de muestra PQ: Varianza =0.25
N: Población
E: Margen de error
K: Constante de corrección del error =2
39
Resultados de la Encuesta Realizada
Se realizó una encuesta de tipo directa a distintos alumnos de la Carrera de Ingeniería
de Sistemas Computacionales de la Universidad de Guayaquil, a continuación detallo
las preguntas establecidas:
1. Durante el tiempo que ha sido estudiante de esta Carrera, ha notado alguna
modificación en el proceso para su evaluación:
a) Si b) No
2. Se le ha presentado inconsistencias en el puntaje otorgado a sus exámenes.
a) Si b) No
En caso de responder si, indique si fue solucionado o no:
3. Para que reciba la calificación de sus exámenes desde que rindió el mismo, usted
debe de esperar:
a) Menos de 1 semana b) Más de 2 semanas d) Más de 4
semanas
4. Ha sufrido la pérdida de sus exámenes desarrollados por parte del profesor.
a) Si b) No
En caso de responder ―Si‖, indique cual fue la solución a este problema:
5. Al proceder a matricularse en algún semestre, usted ha contado con sus
calificaciones oportunamente entregadas a secretaría.
a) Si b) No
En caso de responder ―No‖, indique cual fue el motivo por el cual no tenía su
calificación:
A continuación se representa gráficamente los resultados de la encuesta:
40
PRESENTACIÓN DE DATOS
GRAFICO 1.
RESULTADO DE ENCUESTA, PREGUNTAS 1, 2, 4, 5.
Elaboración: José Garzón A.
Fuente: Encuesta realizada.
Análisis:
En el gráfico anterior se da a conocer que existen diversos casos donde se notan
algunos de los inconvenientes que se generan en la forma tradicional de llevar la
evaluación.
En cuanto a los valores aberrantes de de las preguntas 4 y 5, detallo lo siguiente:
La pregunta 4, se refiere a que si existen casos en que, en manos de los profesores
se hayan extraviados los exámenes rendidos por el estudiante, obteniendose como
resultados a dicha pregunta que 12 estudiantes han tenido ese inconveniente y 84
no han tenido problemas de ese tipo.
Cabe resaltar que este es uno de los inconvenientes que se ha venido dando
esporádicamente y no sólo en esta Carrera sino en las diferentes Instituciones
31 34
12
81
65 62
84
15
0
10
20
30
40
50
60
70
80
90
Pregunta 1 Pregunta 2 Pregunta 4 Pregunta 5
Si No
41
educativas, debido a que el documento examen como tal es suceptible a ser
traspapelado, dependiendo en gran parte de la responsabilidad del docente.
Distribución de frecuencia Pregunta # 4.
Xi Fi Fi ni Ni
Si 12 12 0.125 0.125
No 84 96 0.875 1
96 1
En el gráfico # 2, se detalla la acción realizada por parte del profesor en caso de
haberse extraviado el examen.
La pregunta 5, se refiere a que si el estudiante cuenta con la calificación registrada
en secretaria al momento de inscribirse en el siguiente semestre, obteniendose
como resultados a dicha pregunta que 81 estudiantes han contado con su
calificación oportunamente y 15 si han tenido problemas a la hora de su
inscripción.
Distribución de frecuencia Pregunta # 5.
Xi fi Fi ni Ni
Si 81 81 0.84375 0.84375
No 15 96 0.15625 1
96 1
42
GRAFICO 2.
DETALLE DEL RESULTADO DE LA PREGUNTA 4, OPCIÓN “SI”
Elaboración: José Garzón A.
Fuente: Encuesta realizada.
Análisis:
En el gráfico siguiente podemos conocer las acciones que se han tenido que efectuar
al ocurrir la pérdida de los exámenes resueltos por los estudiantes, a mano de los
profesores.
8
4
0
1
2
3
4
5
6
7
8
9
Acción realizada
Otro Examen
Ninguna
43
GRAFICO 3.
RESULTADO DE ENCUESTA – PREGUNTA 3
Elaboración: José Garzón A.
Fuente: Encuesta realizada.
Análisis: En este gráfico, se detalla el tiempo en que los resultados de los exámenes
son generados y entregados a los respectivos estudiantes.
En cuanto al valor aberrante de esta pregunta, detallo lo siguiente:
La pregunta 3, se refiere a tiempo que tiene que esperar el estudiante para obtener
su calificación final del examen, obteniendose como resultados a dicha pregunta
que 62 estudiantes han tenido que esperar menos de 1 semana, 28 han esperado
mas de 2 semans y 6 han esperado mas de 4 semanas.
Cabe resaltar que esto representa un gran inconveniente al estudiante al momento de
inscribirse en el semestre superior, puesto que es problable que no cuente con sus
calificaciones registradas en secretaria.
62
28
6
0
10
20
30
40
50
60
70
Pregunta 3
Menos de 1 semana
Mayor a 2 semanas
Mayor a 4 semanas
44
Distribución de frecuencia Pregunta # 3.
Xi fi Fi ni Ni
Menos de 1 semana 62 62 0.64583 0.64583
Mayor a 2 semanas 28 90 0.29167 0.9375
Mayor a 4 semanas 6 96 0.06250 1
96 1
45
OPERACIONALIZACIÓN DE VARIABLES
CUADRO No. 1
MATRIZ DE OPERACIONALIZACIÓN DE VARIABLES
Variables Dimensiones Indicadores Técnicas y/o
Instrumentos
Aplicación de
examen vía web.
Evaluación del
proceso de
elaboración de
exámenes y su
aplicación:
Profesores y
Estudiantes
Diseño de
modelos de
exámenes 30%
Entrevistas a
profesores.
Mejoramiento del
proceso de
evaluación en la
Carrera de
Ingeniería en
Sistemas
Computacionales
de la Universidad
de Guayaquil.
Profesores y
Estudiantes de la
Carrera de
Ingeniería de
Sistemas
Computacionales
de la Universidad
de Guayaquil.
Inmediata
obtención de
resultados 20%
Encuesta a
estudiantes de los
diferentes semestres
de la Carrera.
Propuesta de
desarrollo de
evaluación
estudiantil vía
web.
Profesores y
Estudiantes de la
Carrera de
Ingeniería de
Sistemas
Computacionales
de la Universidad
de Guayaquil.
Transparencia en
las
calificaciones.
50%
Encuesta a
estudiantes de los
diferentes semestres
de la Carrera.
Elaboración: José Garzón A.
Fuente: Carrera de Ingeniería de Sistemas Computacionales de la Universidad de Guayaquil.
46
INSTRUMENTOS DE RECOLECCIÓN DE DATOS
Las técnicas de recolección de datos aplicadas en la investigación de este proyecto
fueron:
La observación directa: Es una técnica que consiste en observar atentamente el
fenómeno, hecho o caso, tomar información y registrarla para su posterior análisis.
La observación es un elemento fundamental de todo proceso investigativo; en ella se
apoya el investigador para obtener el mayor numero de datos. Gran parte del acervo
de conocimientos que constituye la ciencia ha sido lograda mediante la observación.
Existen dos clases de observación: la Observación no científica y la observación
científica. La diferencia básica entre una y otra está en la intencionalidad: observar
científicamente significa observar con un objetivo claro, definido y preciso: el
investigador sabe qué es lo que desea observar y para qué quiere hacerlo, lo cual
implica que debe preparar cuidadosamente la observación. Observar no
científicamente significa observar sin intención, sin objetivo definido y por tanto, sin
preparación previa.
Pasos Que Debe Tener La Observación
a. Determinar el objeto, situación, caso, etc (que se va a observar)
b. Determinar los objetivos de la observación (para qué se va a observar)
c. Determinar la forma con que se van a registrar los datos
d. Observar cuidadosa y críticamente
e. Registrar los datos observados
47
f. Analizar e interpretar los datos
g. Elaborar conclusiones
h. Elaborar el informe de observación (este paso puede omitirse si en la
investigación se emplean también otras técnicas, en cuyo caso el informe incluye
los resultados obtenidos en todo el proceso investigativo)
Según: G. Spencer-Brown. Laws of Form
En el contexto de la reflexión de la Epistemología de la Complejidad, es comprendido
como la forma en que un observador (individuo o colectivo: como sistema social)
realiza sus operaciones de conocimiento construyendo una diferencia entre lo
designado o marcado como objeto de ese conocer y lo que está más allá de esa marca
y sobre lo que no se indica o señala nada preciso.
Definición constructivista de "observación"
La primera distinción encontrada al observar al observador que observa es la que se
da entre observador y su operación de observar. Observar es la operación, observador
es el sistema en que se realizan las operaciones de observación (en recursividad a
otras observaciones previas, o anticipando otras etc.) –pero siempre marcando la
diferencia entre esas operaciones y lo otro (el entorno).
Luhmann define observación (entendida en el sentido de operación: en infinitivo:
observar) como un operación que traza una distinción entre algo señalado o indicado
48
y lo que no se señala –lo que Spencer Brown denomina ―unmarked space‖; es decir,
como unión de una operación de diferenciar y de una designación de lo distinguido.
En este sentido, observación es la unidad de la diferencia entre distinción y
designación.
La entrevista: Es una técnica para obtener datos que consisten en un diálogo entre
dos personas: El entrevistador "investigador" y el entrevistado; se realiza con el fin de
obtener información de parte de este, que es, por lo general, una persona entendida en
la materia de la investigación.
La entrevista es una técnica antigua, pues ha sido utilizada desde hace mucho en
psicología y, desde su notable desarrollo, en sociología y en educación. De hecho, en
estas ciencias, la entrevista constituye una técnica indispensable porque permite
obtener datos que de otro modo serían muy difíciles conseguir.
Fuente: diccionario Larousse.
Es una forma especializada de obtener información mediante de naturaleza
profesional que se realiza con el propósito de efectuar una investigación, un
diagnostico, o proponer un tratamiento.
En cualquiera de sus modalidades, la entrevista tiene un hecho en común; una
persona solicita a otra para obtener datos sobre un problema o tema determinado.
49
La recopilación de datos puede ir desde la interrogación estandarizada, hasta la
conversación libre:
En ambos casos se recurre a una ‗‗guía‘‘ que puede ser un formulario de cuestiones
para orientar la ‗‗conversación‘‘, la entrevistada puede ser:
Estructurada: toma la forma de interrogatorio.
No estructurada: deja mayor libertad a la indicativa de la persona y al encuestador. Se
trata de preguntas abiertas que son respondidas dentro de una conversación,
terminando como característica principal de la acción la ausencia de formalidades.
Según Kerlinger (1985, p. 338) la entiende como …..una confrontación
interpersonal, en la cual una persona (el entrevistador) formula a otra (el
respondiente) preguntas cuyo fin es conseguir contestaciones relacionadas con el
problema de investigación.
Ander-Egg nos dice que La entrevista consiste en una conversación entre dos
personas por lo menos, en la cual uno es entrevistador y otro u otros son los
entrevistados; estas personas dialogan con arreglo a ciertos esquemas o pautas
acerca de un problema o cuestión determinada, teniendo un propósito profesional,
que puede ser «…obtener información de individuos o grupos; facilitar
50
información, influir sobre ciertos aspectos de la conducta (…) o ejercer un efecto
terapéutico (1982, p. 226)
Blanchet (en Blanchet y otros, 1989, p. 88), refiriéndose a los speech events o
«acontecimientos de la palabra», conceptualiza la entrevista del modo siguiente:
Una entrevista es un speech event (*) en el que una persona A extrae una
información de una persona B, con información que se hallaba contenida en la
biografía de B (*) En cursivas en el original.
Según Sierra (en Galíndo, 1998, pp. 281- 282), la entrevista es …una
conversación que establecen un interrogador y un interrogado para un propósito
expreso. (…) una forma de comunicación interpersonal orientada a la obtención
de información sobre un objetivo definido Vemos entonces que todas las
definiciones apuntan a los mismos aspectos: una o más personas, una de las
cuales (y sólo una) es el entrevistador, en tanto que la otra u otras es (son) el (los)
entrevistado(s), quienes se encuentran físicamente en un mismo espacio para
conversar en los términos establecidos por el entrevistador: estructura, fines,
duración del encuentro, roles, tema, etc.., y donde el entrevistador procurará
obtener del entrevistado determinadas informaciones.
La encuesta: La encuesta es una técnica destinada a obtener datos de varias personas
cuyas opiniones impersonales interesan al investigador. Para ello, a diferencia de la
entrevista, se utiliza un listado de preguntas escritas que se entregan a los sujetos, a
51
fin de que las contesten igualmente por escrito. Ese listado se denomina cuestionario.
Es impersonal porque el cuestionario no lleve el nombre ni otra identificación de la
persona que lo responde, ya que no interesan esos datos.
Es una técnica que se puede aplicar a sectores más amplios del universo, de manera
mucho más económica que mediante entrevistas.
Varios autores llaman cuestionario a la técnica misma. Los mismos u otros, unen en
un mismo concepto a la entrevista y al cuestionario, denominándolo encuesta, debido
a que en los dos casos se trata de obtener datos de personas que tienen alguna relación
con el problema que es materia de investigación.
Según Stanton, Etzel y Walker, una encuesta consiste en reunir datos
entrevistando a la gente.
Para Richard L. Sandhusen, las encuestas obtienen información sistemáticamente
de los encuestados a través de preguntas, ya sea personales, telefónicas o por
correo.
Según Naresh K. Malhotra, las encuestas son entrevistas con un gran número de
personas utilizando un cuestionario prediseñado. Según el mencionado autor, el
método de encuesta incluye un cuestionario estructurado que se da a los
encuestados y que está diseñado para obtener información específica.
52
Para Trespalacios, Vázquez y Bello, las encuestas son instrumentos de
investigación descriptiva que precisan identificar a priori las preguntas a realizar,
las personas seleccionadas en una muestra representativa de la población,
especificar las respuestas y determinar el método empleado para recoger la
información que se vaya obteniendo
El internet: Esta herramienta será utilizado en esta investigación como una
referencia principal para obtener la información adecuada acerca de la creación y
funcionamiento del Sistema de Exámenes Web como también ciertos conocimientos
en programación PHP y My Sql.
PROCEDIMIENTOS DE LA INVESTIGACIÓN
Para realizar la investigación sobre un Sistema Web para la Creación y Aplicación de
Exámenes basado en Herramientas Open Source ―PHP y My SQL‖ en el área de la
Educación aplicada a la Carrera efectuamos los siguientes pasos:
El problema:
Ubicación del problema en un contexto
Situación conflicto nudos críticos
Causas y consecuencias del problema
Delimitación del problema
Formulación del problema
53
Evaluación del problema
Objetivos de la Investigación
Justificación o importancia de la investigación
Marco teórico:
Antecedentes del estudio.
Fundamentación teórica.
Fundamentación Legal
Exámenes para los Estudiantes en la Educación Superior (Situación pasada,
actual y futura).
Hipótesis.
Variables de la investigación.
Metodología:
Diseño de Investigación (Tipo de Investigación)
Población y Muestra
Instrumentos de recolección de datos
Operacionalización de variables, dimensiones e indicadores
Procedimiento de la Investigación
Criterios para la elaboración de la propuesta
Técnicas de Ingeniería de Software
54
RECOLECCIÓN DE LA INFORMACIÓN
Para la obtención de la información requerida para esta investigación se debió utilizar
tres técnicas las cuales son las siguientes:
La Encuesta: Estas se realizarán a diversos estudiantes de la Carrera de Ingeniería de
Sistemas Computacionales de la Universidad de Guayaquil de los diferentes
semestres, con la fin de obtener información sobre las diversas situaciones que se les
presentan durante el proceso de exámenes; dando a conocer que es lo de mayor
gravedad.
La encuesta está diseñada en base a 5 preguntas objetivas, con la finalidad de
procesarla de manera rápida y eficiente.
La entrevista: Esta técnica se empleará a diversos profesores de la Carrera de
Ingeniería de sistemas Computacionales de la Universidad de Guayaquil, con la
finalidad de conocer desde su punto de vista las situaciones en que ellos se presentan
durante el proceso de elaboración de exámenes y su aplicación, finalizando con el
proceso de entrega de calificaciones de los exámenes.
Además nos brindará información sobre lo que opinan al contar con una herramienta
vía Web para la creación y aplicación de los exámenes.
55
La Observación: Mediante está técnica se nos ayudará a analizar la situación,
circunstancias y actores que estén involucrados en esta investigación, con la finalidad
de dar la orientación adecuada a la solución planteada.
PROCESAMIENTO Y ANÁLISIS
Para el análisis de los resultados obtenidos en base a la encuesta realizada a los
estudiantes de la Carrera de Ingeniería de Sistemas Computacionales de la
Universidad de Guayaquil, se procederá a generar gráficos estadísticos que resumirán
los resultados de las respuestas a las preguntas planteadas, estableciendo los
porcentajes de cada una.
El proceso a seguir para el análisis de los resultados será:
Revisión de los instrumentos aplicados.
Tabulación de datos con relación a cada uno de los Ítems
Diseño y elaboración de cuadros estadístico con los resultados anteriores.
Elaboración de gráficos
CRITERIOS PARA LA ELABORACION DE LA PROPUESTA
La herramienta planteada en este trabajo de investigación tiene la finalidad de
minimizar el tiempo en la mayoría de actividades que intervienen durante el proceso
de creación de exámenes, hasta el punto de la entrega de calificaciones a los
56
estudiantes. Brindándole al profesor y al estudiante una herramienta integrada en un
elearnig, para facilitar desde el lado del profesor el proceso de elaboración y
aplicación de exámenes a sus estudiantes y para el alumno tener un examen 100%
imparcial y una obtención de notas instantánea una vez rendido el examen.
CRITERIOS DE VALIDACION DE LA PROPUESTA
Los criterios que nos servirán para validar nuestro proyecto se tendrá en cuenta lo
siguiente:
La Herramienta PHP conocido como de tipo Open Source, permitirá el
desarrollo del Sistema vía Web para la creación y aplicación de exámenes.
Este tipo de herramientas se están priorizando su uso a nivel de instituciones
estatales, con la finalidad de disminuir costos y abrir campo al producto
nacional a nivel de tecnología.
El Sistema Exámenes vía Web presenta interfaz para usuario Profesores y
estudiantes.
La tecnología de Internet ha avanzado mucho, permitiendo actualmente la
ejecución de aplicaciones de gran utilidad mediante la Red Mundial a
diferentes personas sin importar donde se encuentra, bastando solamente tener
Internet.
57
El desarrollo de este sistema presenta costos muy bajos, además sólo se
requieren especificaciones básicas de hardware, generando asi un rango
amplio de accesibilidad al sistema.
58
CAPÍTULO IV
MARCO ADMINISTRATIVO
CRONOGRAMA
59
60
PRESUPUESTO
Detalle de los diferentes gastos que se llevarán a efecto, para el cumplimiento del
objetivo del proceso de la investigación.
CUADRO No. 2
Detalle de egresos del proyecto
EGRESOS DÓLARES
Licencia de software PHP 0
Browser ―Mozilla Firefox‖ 0
Suministros de oficina y computación 120.00
Fotocopias 15.00
Libros y documentos 25.00
Computadora y servicios de Internet 100.00
Sueldo de 2 Desarrolladores (600 c/u) 1200.00
Transporte 65.00
Refrigerio 15.00
Impresión, empastado, anillado de tesis de grado 168.00
TOTAL……………………………………… $ 1.708.00
Elaboración: José Garzón A.
Fuente: José Garzón A.
Ingresos: Los recursos requeridos para este proyecto fueron mediante financiamiento
propio.
Egresos: En el cuadro No 2 observamos los diferentes egresos los cuales han servido
para la realización de este proyecto.
61
CAPÍTULO V
RECOMENDACIONES Y CONCLUCIONES
CONCLUSIONES GENERALES.
RECOMENDACIONES.
Antes de empezar a utilizar las opciones de la aplicación para la creación de
exámenes via web, se de efectuar una revisión breve del manual de usuario para que
la funcionalidad de las diferentes opciones le sea clara y comprensiible, es decir,
realizar una ambientación del sistema antes de comenzar a trabajar con las diferentes
opciones del aplicativo.
Existen varias opciones que le permiten al usuario, sea este profesor o alumno,
realizar las diversas tareas correspondientes según su rol dentro de la aplicación de
manera sencilla y rápida.
Las opciones e interfaces que posee la aplicación tratan de abarcar todas las
operaciones que manualmente se realizaban antes, durante y después de rendir un
examen, ya sea como alumno o profesor, de tal manera que se cubra toda
funcionalidad para el efecto.
Cabe resaltar que algunas de estas opciones dependen del navegador que se esté
utilizando, por lo que se debe poner atención y considerar los mensajes que se
62
presentan interactivamente en la aplicación para que puedan lograr trabajar con
normalidad.
63
CONCLUSIONES.
Por medio de la automatización de sistemas, podemos llevar a cabo tareas complejas
de manera más rápida, precisa y fácil, sin la necesidad de invertir mucho tiempo. El
sistema en mención brinda las interfaces para que el usuario realice las diferentes
tareas concernientes a su rol.
Esta aplicación Web fue desarrollada con la finalidad de cubrir las expectativas y
necesidades de la Carrera de Ingenieria de Sistemas Computacionales de la
Universidad de Guayaquil, dicho objetivo es mejorar en el proceso de elaboración y
toma de exámenes, quedando la apertura para que sea implementado en cualquier otra
Carrera si asi fuese requerido.
Las herramientas empleadas para el desarrollo de esta aplicación web son conocidas
como herramientas de tecnología abierta, lo que nos facilitó su desarrollo y la
diversidad de información disponible hoy en día en la red, fue de mucha ayuda para
su aprendizaje.
Es menester resaltar que basándonos en los procesos indicados por nuestro tutor y
autoridades vinculadas al mismo, se logró concluir el Proyecto con éxito cumpliendo
con cada uno de los alcances solicitados.
64
REFERENCIAS BIBLIOGRAFÍCAS
LIBROS
José Ruiz Ortega (2009). Revista Iberoamericana de Educación (ISNN:
1681-5653). Secretaría de Educación y Cultura, Zacatecas (México).
Dr. Juan Cordero Iñiguez (2009). EVALUACIÓN DE LOS
APRENDIZAJES: Ministro de Educación, Cultura, Deportes y Recreación.
Evaluación de los aprendizajes.
Editorial Orion (Ecuador).
Dr. Enrique Izquierdo Arellano (2005). Investigación Científica – Guía de
Estudio y Técnicas de Investigación.
Editorial Cosmos (Ecuador).
Dr. Enrique Izquierdo Arellano (2005). Investigación Científica – Métodos
y Diseños de Investigación.
Editorial Cosmos (Ecuador).
Dr. Enrique Izquierdo Arellano (2005). Investigación Científica –
Proyectos, Investigación Participativa y Acción.
Editorial Cosmos (Ecuador).
Dr. Enrique Izquierdo Arellano (2005). Planificación Curricular y
Dirección del Aprendizaje.
Editorial Cosmos (Ecuador).
65
PUBLICACIONES
María Teresa muñoz Quezada (2005). Estrategias de aprendizajes en
estudiantes universitarios.
Dr. Víctor Granda Aguilar (2010). La Nueva Ley de Educación Superior:
Lo Positivo y lo Inaceptable.
DIRECCIONES WEB
Ecuador - Acuerdo regula la evaluación de docentes, estudiantes y autoridades
(2009). Extraído de: http://www.oei.es/noticias/spip.php?article4345.
Exámenes de calidad de la educación superior (2010).
http://www.mineducacion.gov.co/1621/article-87453.html
Concepto open Source extraído en abril del 2010 desde
http://es.wikipedia.org/wiki/C%C3%B3digo_abierto
Definición acerca de la Observación Directa.
http://www.buenastareas.com/ensayos/Observacion-Directa/190440.html
La Observación Directa.
http://sunwc.cepade.es/~jrivera/bases_teor/episteme/epist_complex/observacio
n.htm
66
La entrevista. http://www.taringa.net/posts/ciencia-educacion/7897204/La-
Entrevista-_definicion-MUY-COMPLETA_-diccionario-Larouss.html
Software Libre (2010). Conceptos y definiciones técnicas.
http://es.wikipedia.org/wiki/Software_libre
PHP (2010). Funciones especiales. http://es.wikipedia.org/wiki/PHP
My SQL (2010) Funcionalidad. http://es.wikipedia.org/wiki/MySQL
Internet Explores (2010). Ventajas y Desventajas.
http://es.wikipedia.org/wiki/Internet_Explorer
Firefox Mozilla (2010). Ventajas y Desventajas.
http://es.wikipedia.org/wiki/Mozilla_Firefox
Ajax (2010). Problemas en Internet Explorer.
http://www.formatoweb.com.ar/ajax/cache_y_refresco_de_datos.php
Educación Virtual y sus inicios (2010).
http://unesdoc.unesco.org/images/0014/001404/140469s.pdf
67
ANEXOS
68
Anexo A
GRAFICO 4
DIAGRAMA DE NIVEL 1
69
Anexo B
GRAFICO 5 DISEÑO DE LA BASE DE DATOS
70
Anexo C
MANUAL DE USUARIO DEL SISTEMA DE EXAMENES VIA WEB
71
GRAFICO 6
PANTALLA DE ACCESO AL SISTEMA
El acceso a la herramienta será mediante un Browser (Firefox, Internet Explorer,
etc.).
1. Se ingresará el número de cédula y una clave de usuario, además deberá indicar el
tipo de usuario bajo el cual utilizará la herramienta, este puede ser (Profesor,
Alumno).
2. Al ingresar al sistema inmediatamente se le presentará una pantalla con las
opciones respectivas, de acuerdo al tipo de usuario con el que ingresó.
Cuadro de ingreso de contraseña del usuario
Cuadro de ingreso del número de cedula
72
GRAFICO 7
PANTALLA PRINCIPAL DEL SISTEMA DE EXAMENES VIA WEB
AMBIENTE DEL PROFESOR
Opciones Principales del Sitio Web Elearning
73
Al ingresar al sistema inmediatamente se identificará el usuario y el tipo de usuario
que realizó el acceso al dicho sistema.
Detalle de las opciones principales
Permite al docente ingresar a las opciones del Aula
Virtual.
Permite el acceso a las opciones de los exámenes
virtuales.
Permite el acceso a las opciones de del Syllabus.
Permite el acceso a las opciones del entorno de
Wikifunciones.
Permite ingresar a las opciones de la Biblioteca virtual.
Permite el acceso a las opciones para la carga y
descarga de archivos.
Una vez que se ha seleccionado la opción “Examen”, inmediatamente se mostrarán en
el centro de la pantalla cuatro fichas que le permitirán al docente iniciar con el
proceso de creación o modificación de los exámenes virtuales.
74
GRAFICO 8
PANTALLA MENÚ DE EXAMENES VIA WEB
AMBIENTE DEL PROFESOR
Esta opción permite al docente iniciar con la creación del
examen, esto permitirá básicamente la creación de la cabecera del
examen.
Esta opción permite editar la cabecera de un examen creado,
además de acceso para agregar, modificar o eliminar las preguntas
del examen.
Esta opción permite acceder a las opciones para proceder con la
calificación de los exámenes rendidos por el alumno.
Esta opción permite acceder a las opciones que permiten mostrar
los resultados de los exámenes mediante gráfico estadístico.
Esta opción permitirá al docente generar las actas de
calificaciones de los estudiantes.
75
GRAFICO 9
PANTALLA DE CREACIÓN DE LA CABECERA DEL EXAMEN
AMBIENTE DEL PROFESOR
1. El docente debe ingresar y seleccionar cada una de las opciones correctamente
para poder crear la cabecera del examen.
2. De acuerdo a los cursos que tenga asignado el profesor, se presentaran
disponibles y según este se mostrarán las asignaturas.
3. Al presionar el botón “Generar”, inmediatamente ingresa a la ventana donde
se le permitirá crear las preguntas que tendrá el examen.
76
GRAFICO 10
PANTALLA DE CREACION DE LAS PREGUNTAS PARA DEL EXAMEN
SELECCIONADO
AMBIENTE DEL PROFESOR
1. Luego de generar la cabecera del examen, inmediatamente se pasará a la
pantalla que permite agregar las preguntas al mismo.
2. El puntaje total del número de preguntas indicado en la cabecera, debe ser
igual al puntaje total del examen.
3. Las preguntas que se pueden agregar al examen pueden ser: objetivas,
objetivas con imagen y de carga de archivo.
4. Las preguntas objetivas permiten ser generadas con un máximo de 5
alternativas.
77
5. En el caso de las preguntas objetivas con imágenes se pueden cargar nuevas
imágenes, o eliminarlas según se desee.
6. Para el caso de la pregunta de carga de archivo sólo se debe indicar la tarea
que el estudiante deberá realizar.
7. Si se desea eliminar las preguntas, se debe seleccionar la opción indicada en la
gráfica, e inmediatamente se ingresará a la ventana desde donde podrá
eliminar o modificar las preguntas.
8. Finalmente se podrá ingresar tantas preguntas como se desee.
78
GRAFICO 11
CREACION DE LAS PREGUNTAS OBJETIVAS PARA DEL EXAMEN
SELECCIONADO
AMBIENTE DEL PROFESOR
1. Seleccione el tipo de pregunta, en este caso objetiva solamente
2. Ingrese la pregunta deseada
3. Indique el puntaje considerando que debe completarse en base al total bajo el
cual se calificará el examen y la cantidad de preguntas.
4. Indique las alternativas que deberá tener la pregunta.
5. Ingrese las alternativas.
6. Seleccione la alternativa que designará como correcta.
7. Seleccione el botón de Agregar y acepte según los mensajes que se presenten.
8. El botón salir lo llevará a la ventana inicial.
Al agregar cualquier tipo de pregunta se presentarán como un listado en la parte
inferior de esta ventana.
79
GRAFICO 12
CREACION DE LAS PREGUNTAS OBJETIVAS CON IMAGEN PARA DEL
EXAMEN SELECCIONADO
AMBIENTE DEL PROFESOR
1. Seleccione el tipo de pregunta, en este caso objetiva de imagen
2. Ingrese la pregunta deseada
3. Indique el puntaje considerando que debe completarse en base al total bajo el
cual se calificará el examen y la cantidad de preguntas.
4. Indique las alternativas que deberá tener la pregunta.
5. Seleccione las imágenes que serán las alternativas.
6. Seleccione la alternativa que designará como correcta.
7. Seleccione el botón de Agregar y acepte según los mensajes que se presenten.
8. El botón salir lo llevará a la ventana inicial.
9. Si desea agregar imágenes utilice la opción “examinar” para escogerla y luego
“subir imagen”
10. El botón eliminar reiniciará el proceso de carga de imágenes dejando en
blanco la opción de carga.
80
GRAFICO 13
CREACION DE LAS PREGUNTAS DE CARGA DE ARCHIVO PARA DEL
EXAMEN SELECCIONADO
AMBIENTE DEL PROFESOR
La creación de este tipo de preguntas es muy sencilla, a continuación se detalla el
procedimiento respectivo:
1. Seleccione el tipo de pregunta, en este caso carga de archivo.
2. Ingrese el tema a desarrollar.
3. Indique el puntaje considerando que debe completarse en base al total bajo el
cual se calificará el examen y la cantidad de preguntas.
4. Seleccione el botón de Agregar y acepte si desea guardar dicha pregunta.
81
5. Seleccione aceptar a la ventana de comprobación del proceso de guardado de
la pregunta.
6. Finalmente queda registrada la pregunta e inmediatamente le solicitará
continuar creando otras preguntas.
82
GRAFICO 14
PANTALLA PARA MODIFICACIÓN DE LAS PREGUNTAS DEL EXAMEN
SELECCIONADO
AMBIENTE DEL PROFESOR
La ventana inicial para proceder a modificar las preguntas se carga seleccionando la
opción Editar Examen.
Para acceder a las preguntas del examen, se debe ingresar al examen que se desea
dando clic sobre el ícono de Abrir, o sobre el nombre de la Asignatura.
Inmediatamente se mostrará la ventana en donde se podrá modificar las opciones de
la cabecera del examen o ingresar a modificar las preguntas del mismo.
83
Una vez que ingresemos a las preguntas se deberá desplazarse a la pregunta cuyas
opciones deseamos modificar, para esto debemos seleccionar el numero de la
pregunta que deseamos.
Consideraciones relevantes para la modificación de las preguntas.
1. A las preguntas objetivas normales podrá modificar el puntaje, las preguntas,
y las alternativas.
2. En el caso de objetivas con imagen, sólo podrá modificar la alternativa que
será la correcta y el puntaje.
3. Para las preguntas de carga se permite la modificación de la pregunta y el
puntaje normalmente.
Cabe resaltar que para proceder a modificar un examen este no debe estar publicado,
lo que se puede observar en la siguiente imagen.
84
GRAFICO 15
PANTALLA PARA PUBLICACIÓN DEL EXAMEN SELECCIONADO
AMBIENTE DEL PROFESOR
Existen 2 ventanas desde donde se puede iniciar el proceso de publicación del
examen.
La primera que se presenta, es en la ventana de ingreso de preguntas la cual se
muestra a continuación.
La segunda ventana donde se puede modificar la cabecera del examen.
85
1. Al terminar de ingresar las preguntas con las respectivas valoraciones, se debe
proceder a Publicar el examen para que pueda ser visto por los estudiantes.
Para esto sólo debe dar clic al Botón de Publicar en cualquiera de las ventanas
anteriores, e inmediatamente ingresará a la ventana que le permitirá publicar
el examen.
2. Antes de publicar se puede sugerir a los estudiantes algunos libros de
consulta, debe seleccionar el o los libros que desee y finalmente dar clic en
Publicar.
3. Dar clic en Publicar, publicará el examen y además enviará un email
personalizado a cada alumno respectivamente.
86
GRAFICO 16
PANTALLA DE OPCIONES PARA LA MODIFICACIÓN DE LA
CABECERA DEL EXAMEN
AMBIENTE DEL PROFESOR
1. Esta pantalla muestra el listado de los exámenes creados los cuales pueden ser
modificados siempre que no hayan sido publicados.
2. Si desea modificar un examen debe seleccionar el deseado, dando clic en el
icono de Abrir o en el nombre de la asignatura.
Cabe resaltar que para proceder a modificar un examen este no debe estar publicado,
lo que se puede observar en la siguiente imagen.
87
Al editar el examen se mostrará la siguiente ventana desde la cual puede proceder a
modificar las opciones principales del examen.
1. Debe seleccionar cada una de las opciones correctamente para poder
modificar la cabecera del examen.
2. En esta ventana existen opciones para ingresar a la ventana donde se puede
“Modificar o Agregar Preguntas”.
3. Además le permite eliminar el examen, pero en caso de que no haya sido
publicado, sólo debe seleccionar dar clic en ELIMINAR.
4. Si ya tiene las preguntas puede Publicar el examen inmediatamente.
88
GRAFICO 17
PANTALLA DE OPCIONES PARA CALIFICACIÓN DE EXAMENES
PENDIENTES Y GENERACIÓN DE ACTA DE CALIFICACIONES
AMBIENTE DEL PROFESOR
1. Se debe seleccionar las opciones respectivas para que se muestren los
exámenes de los alumnos que hayan rendido el examen.
2. Esta pantalla muestra el listado de los exámenes rendidos por los estudiantes,
presentando la nota ya sea parcial o completa.
3. Si el estado del examen es Pendiente, este debe ser calificado, para lo cual el
profesor deberá ingresar al examen.
89
GRAFICO 18
PANTALLA DE VISUALIZACIÓN GRAFICA DE LOS RESULTADOS DE
LOS EXAMENES POR CURSO
AMBIENTE DEL PROFESOR
1. En esta pantalla se muestran las opciones que el profesor deberá seleccionar
para visualizar los resultados de los exámenes del curso mediante el gráfico.
90
GRAFICO 19
PANTALLA DE VISUALIZACIÓN E IMPRESIÓN DEL ACTA DE
CALIFICACIONES
AMBIENTE DEL PROFESOR
Esta opción le permite visualizar al Docente el acta de calificaciones que se genera
una vez que los estudiantes hayan rendido su examen.
Una vez seleccionada las opciones se debe dar clic en VISUALIZAR, e
inmediatamente se presentaran los puntajes de los estudiantes.
91
El acta una vez presentada puede ser exportada a un documento de Excel
simplemente dando clic en el Botón EXPORTAR.
Una vez exportado podrá ser impreso para luego ser entregado a Secretaría de así
necesitarlo.
92
GRAFICO 20
PANTALLA PRINCIPAL DEL SISTEMA DE EXAMENES VIA WEB
AMBIENTE DEL ALUMNO
1. Esta es la ventana de portada al accesar al sistema como alumno.
2. En el lado izquierdo está la opción “Toma de Examen Virtual”, lo que le
permitirá manejar la herramienta.
Estas son las opciones que se activan una vez ingresado
al sistema como alumno:
La opción Examen le permitirá ingresar a la ventana para
empezar a rendir con el examen que se desee.
93
GRAFICO 21
PANTALLA MENU DE EXAMENES VIA WEB
AMBIENTE DEL ALUMNO
1. Al seleccionar la opción de “Rendir Examen Virtual”, se presentará inmediatamente
la pantalla de Bienvenida y las opciones en forma de Fichas en la parte central
superior.
94
GRAFICO 22
PANTALLA PARA INICIAR EL EXAMEN VIA WEB
AMBIENTE DEL ALUMNO
1. Para iniciar con el examen debe dar clic sobre el icono Examen.
2. En esta ventana el alumno sólo podrá seleccionar el examen que debe rendir e
inmediatamente verá en una nueva pantalla con el contenido del examen a
rendir.
3. Sólo podrá ver el examen si ha sido publicado y activado.
95
GRAFICO 23
PANTALLA PARA PRESENTAR LAS PREGUNTAS DEL EXAMEN VIA
WEB
AMBIENTE DEL ALUMNO
1. En esta pantalla el alumno deberá responder a las preguntas según lo
aprendido, básica.
2. El Examen está temporizado según el tiempo designado por el profesor.
3. Para finalizar el examen el estudiante deberá dar clic sobre el botón
CONCLUIR EXAMEN, e inmediatamente se presentará el resultado del
examen.
96
GRAFICO 24
PANTALLA DE PRESENTACIÓN DE LAS CALIFICACIONES Y ESTADO
DEL EXAMEN DESARROLLADO VIA WEB
AMBIENTE DEL ALUMNO
1. Está ventana se muestra una vez que se haya terminado el examen, y se le
mostrará la calificación parcial o final del examen.
2. Además seleccionando el examen podrá visualizar el contenido del mismo
pero resuelto.
97
GRAFICO 25
PANTALLA PARA SELECCIONAR E INICIAR EL EXAMEN DE
SIMULACIÓN VIA WEB
AMBIENTE DEL ALUMNO
1. En esta ventana el alumno sólo debe seleccionar el examen que el alumno
desea practicar, dando clic en el ícono EXAMEN.
2. Sólo podrá ver el examen si ha sido publicado y activado.
98
GRAFICO 26
PANTALLA DE PRESENTACIÓN DEL EXAMEN DE SIMULACIÓN VIA
WEB
AMBIENTE DEL ALUMNO
En esta pantalla se presentan todas las preguntas de manera aleatoria, y el estudiante
podrá responder cada una de las preguntas según corresponda.
Para conocer los resultados de este examen de simulación el alumno debe dar clic
sobre el botón PROCESAR EXAMEN, e inmediatamente se mostrará una ventana
con dichos resultados.
99
Anexo D
MANUAL TÉCNICO DEL SISTEMA DE EXAMENES VIA WEB
100
Cuadro No 1.
Código para la pantalla inicial del ambiente del profesor
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<jdoc:include type="head" />
<link rel="stylesheet" href="../css/template.css" type="text/css" />
<script type="text/javascript" src="../Docente/js/funciones.js"> </script>
<script type="text/javascript" src="../../../js/prototype.js"> </script>
</head>
<body style="height:100%; overflow:hidden">
<div align="center" style=" height:100%; padding:0; margin:0;">
<div id="top">
<div id="tabarea">
<table cellpadding="0" cellspacing="0" class="pill"
align="center">
<tr>
<td class="pill_m">
<div id="pillmenu">
<ul id="mainlevel-nav">
<li><a class="mainlevel-nav"
href="../../Examen/Docente/crea_examen.php"><b>Crear Examen</b> </a></li>
<li><a class="mainlevel-nav"
href="../../Examen/Docente/edicion_examen.php"><b>Editar Examen</b></a></li>
<li><a class="mainlevel-nav"
href="../../Examen/Docente/califica_examen.php"><b>Calificar
Examen</b></a></li>
<li><a class="mainlevel-nav"
href="../../Examen/Docente/grafico_notas.php"><b>Estadístico</b></a></li>
</ul>
</div>
</td>
</tr>
</table>
</div>
</div>
<table width="100%" height="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
101
<td valign="middle" align="center" height="100%">
<div style="background:#EBEBEB
url(/elearning_cisc/contenido/wikikey/images/left_shadow.jpg) repeat-y left;
width:90%; height:100% ">
<div
style="background:url(/elearning_cisc/contenido/wikikey/images/right_shadow.jpg)
repeat-y right;height:100%">
<table width="100%" height="100%" border="0" cellspacing="0"
cellpadding="0">
<tr>
<td align="center" valign="middle">
<table width="75%" border="0" align="center" cellpadding="0" cellspacing="0"
style="border:1px solid #000;-moz-border-radius: 4px 4px 4px 4px; background:
#FFF url(../../../images/bg_panel_top_right.gif) repeat-y right" >
<tr>
<td width="360" align="center" valign="middle"><img
src="../image/logo2.JPG" width="302" height="197" /></td>
<td width="532" align="center" valign="middle"><h3 style="text-
align:center; font:24px Verdana, Arial, Helvetica, sans-serif; font-
weight:bold">Bienvenido<br />
Módulo eCISC Examenes</h3></td></tr>
</table>
</td>
</tr>
</table>
</div></div>
</td>
</tr>
</table>
</div>
</body>
</html>
Fuente:Archivo ”inicial_docente.php”
Elaboración: José Luis Garzón A.
102
Cuadro No 2.
Código para la Creación de la Cabecera del Examen
<?php
// iniciamos session
session_start ();
if (!isset($_SESSION["usNick"]))
header('Location: login/login.php');
//SELECCIONAR LOS CORREOS DE LOS ESTUDIANTES DEL CURSO AL
QUE SE LE CREO EL EXAMEN
//RECOMENDANDO LIBROS DE LA BIBLIOTECA VIRTUAL COMO LINKS
DE DESCARGA.
//esto es para decirle al cache de procesos del navegador que se desactive
header("Cache-Control: no-store, no-cache, must-revalidate");
require ("../../../lib/clase_MySql.inc.php");
require ("../funciones_php/funciones.php");
$miconexion = new DB_mysql ;
$miconexion->conectar();
$fecha=date("Y-m-d");
$datoex=-1;
//Obtiene el # de Cedula del profesor para obtener el ID
$ci=$_SESSION["usNick"];
$rowidprof=array();
$query ="SELECT exa_profesor_id,nombres, apellidos FROM exa_profesor
WHERE pro_identificacion='$ci'";
$res= $miconexion->consulta($query);
$rowidprof=mysql_fetch_array($res);
mysql_free_result($res);
$idpro=$rowidprof['exa_profesor_id'];
$falta_data="1";
//Determina si se ha seleccionado el Boton Generar
if (isset($_POST["submit_crear"]))
{
if ( $_POST["exacur_tiempo"]!="0" &&
$_POST["exacur_cantidad_item"]!="0" && $_POST["exacur_tipo"]!="0" &&
$_POST["puntaje"]>0 && $_POST["puntaje"]<=10 &&
$_POST["exa_semestre"]!="0" && $_POST["exa_asignatura_id"]!="0" &&
$_POST["exacur_parcial"]!=0 && $_POST["exacur_ciclo"]!=0)
{
$puntos_exa=$_POST["puntaje"]; //Pintaje Global del examen
$examen_id=$_POST["examen_id"]; //Id del examen a generarse
$exa_semestre_id=$_POST["exa_semestre"]; //Semestre
103
$exa_asignatura_id=$_POST["exa_asignatura_id"]; //Asignatura
$exacur_cantidad_item=$_POST["exacur_cantidad_item"]; //Cantidad
de preguntas
$exacur_tiempo=$_POST["exacur_tiempo"]; //Tiempo de duracion del
examen
$exacur_tipo=$_POST["exacur_tipo"]; //Tipo de examen
$exacur_parcial=$_POST["exacur_parcial"];
$fecha_exa=$_POST["date"]; //Fecha en uqe se tomará el examen
$exacur_ciclo=$_POST["exacur_ciclo"];
$q_sem_asg="SELECT count(*) totreg FROM exa_asig_profesor
WHERE exa_profesor_id='$idpro' AND exa_asignatura_id='$exa_asignatura_id'
AND exa_semestre_id='$exa_semestre_id'";
$res_sa = $miconexion->consulta($q_sem_asg);
$row_c=mysql_fetch_array($res_sa);
$dato=$row_c["totreg"];
if ($exacur_tipo==1)
{
$q_exa="SELECT count(*) totexa FROM
exa_cabecera_examen WHERE exa_profesor_id='$idpro' AND
exa_asignatura_id='$exa_asignatura_id' AND exa_semestre_id='$exa_semestre_id'
AND exa_ciclo='$exacur_ciclo' AND exa_parcial='$exacur_parcial' ";
$res_ex = $miconexion->consulta($q_exa);
$row_ex=mysql_fetch_array($res_ex);
$datoex=$row_ex["totexa"];
}else
{
$datoex=0;
}
if ($dato==1 && $datoex==0)
{
$query="INSERT INTO
exa_cabecera_examen(exa_parcial,exa_ciclo,exa_semestre_id,exa_profesor_id,exa_a
signatura_id,exa_cab_cantidad_item,exa_cab_puntaje_total,exa_cab_estado,exa_cab_
tiempo,exa_cab_tipo,exa_cab_fecha,exa_publicado)
VALUES('$exacur_parcial','$exacur_ciclo','$exa_semestre_id','$idpro','$exa_asignatu
ra_id','$exacur_cantidad_item','$puntos_exa','A','$exacur_tiempo','$exacur_tipo','$fec
ha_exa','N')";
$results = $miconexion->guardar($query);
$query ="SELECT max(exa_cabecera_examen_id) as maximo
FROM exa_cabecera_examen WHERE exa_profesor_id='$idpro'";
104
$maxid=$miconexion->unDato($query);
//Almacena la relacion Examen x Asignatura
$query_tran="INSERT INTO exa_examen_asig
(exa_cabecera_examen_id,exa_asignatura_id)
VALUES('$maxid','$exa_asignatura_id')";
$results2 = $miconexion->guardar($query_tran);
header('Location:
contenido_examen.php?v_examen_id='.$maxid);
}
else
{
if ($datoex == 0)
{
$falta_data="2";
}
}
}else
{
$falta_data="0";
}
}
// fin if de generar examen
//Recupera los datos para mostralos nuevamente si existe un error.
if (isset($_POST["examen_id"])) $maxid = $_POST["examen_id"];
else
{
//Ontiene el ID maximo de examenes creados, para generar el nuevo examen
$query ="SELECT count(exa_cabecera_examen_id) as maximo FROM
exa_cabecera_examen WHERE exa_profesor_id='$idpro'";
$res= $miconexion->consulta($query);
$rowmax=mysql_fetch_array($res);
$maxid=$rowmax["maximo"];
//if ($maxid=='') $maxid='1';
}
if (isset($_POST["puntaje"])) $puntos_exa = $_POST["puntaje"]; else
$puntos_exa="0";
if (isset($_POST["date"])) $fecha_exa = $_POST["date"];
if (isset($_POST["exacur_tiempo"])) $tiempo_exa = $_POST["exacur_tiempo"];
if (isset($_POST["exacur_cantidad_item"]))
$cant_preg=$_POST["exacur_cantidad_item"];
105
if (isset($_POST["exacur_tipo"])) $tipo=$_POST["exacur_tipo"];
if (isset($_POST["exacur_parcial"])) $parcial=$_POST["exacur_parcial"];
if (isset($_POST["exa_semestre"])) $semestre=$_POST["exa_semestre"];
if (isset($_POST["exa_asignatura_id"])) $asignatura=$_POST["exa_asignatura_id"];
//========================================================
//Proceso de Cancelación
//========================================================
if (isset($_POST["Cancelar"])) header("Location: inicial_docente.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<jdoc:include type="head" />
<link rel="stylesheet" href="../css/template.css" type="text/css" />
<script type="text/javascript" src="../../../js/funciones.js"> </script>
<script type="text/javascript" src="../../../js/prototype.js"> </script>
<script type="text/javascript"
src="../../Biblioteca_Virtual/calendario/calendar.js"></script>
<script type="text/javascript" src="../../Biblioteca_Virtual/calendario/lang/calendar-
es.js"></script>
<script type="text/javascript" src="../../Biblioteca_Virtual/calendario/calendar-
setup.js"></script>
<link rel="stylesheet" type="text/css" media="all"
href="../../Biblioteca_Virtual/calendario/skins/aqua/theme.css" title="Tiger" />
<style type="text/css">
<!--
.style1 {
color: #FF0000;
font-weight: bold;
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
}
.style99{
color:#006600;
font-size:12px;
border:1px solid #006600;
padding:2px 5px 2px 25px;
106
background:#CAE9C7 url(/elearning_cisc/images/button_go2.gif) no-repeat
left center;
-moz-border-radius: 4px 0px 0px 4px;
display:none;
}
-->
</style>
<script language="javascript">
function InicioV()
{
Calendar.setup({
firstDay : 0,
daFormat : "%Y-%m-%d",
inputField : "date", // id ofthe input field
ifFormat : "%Y-%m-%d", // format of the input field
showsTime : false, // will display a time selector
button : "f_trigger_b",// trigger for the calendar (button ID)
singleClick : true, // double-click mode
align : "Bl", // alignment (defaults to "Bl")
step : 1 // show all years in drop-down boxes (instead of every
other year as default)
});
}
function comboMaterias(idSemestre){
var url='comboAsignaturas.php';
var param= "idS="+idSemestre;
var ajaxRequest = new Ajax.Request(url,{method: 'post',parameters: param,
asynchronous: true,
onSuccess: function(transport) {
//$("exa_asignatura_id").innerHTML =
transport.responseText ;
$("divAsignatura").innerHTML = transport.responseText ;
//alert($("exa_asignatura_id").innerHTML);
}} );
}
</script>
</head>
107
<body>
<div class="center" align="center">
<div id="top">
<div id="tabarea">
<table cellpadding="0" cellspacing="0" class="pill"
align="center">
<tr>
<td class="pill_m">
<div id="pillmenu">
<ul id="mainlevel-nav">
<li><a class="mainlevel-nav"
href="../../Examen/Docente/crea_examen.php"><b>Crear Examen</b> </a></li>
<li><a class="mainlevel-nav"
href="../../Examen/Docente/edicion_examen.php"><b>Editar Examen</b></a></li>
<li><a class="mainlevel-nav"
href="../../Examen/Docente/califica_examen.php"><b>Calificar
Examen</b></a></li>
<li><a class="mainlevel-nav"
href="../../Examen/Docente/grafico_notas.php"><b>Estadístico</b></a></li>
</ul>
</div>
</td>
</tr>
</table>
</div>
</div>
<div id="wrapper" align="center" style="height:100%; overflow:auto; padding-
top:0px;" >
<div style="background:#EBEBEB
url(/elearning_cisc/contenido/wikikey/images/left_shadow.jpg) repeat-y left;
width:90%; height:600px;">
<div
style="background:url(/elearning_cisc/contenido/wikikey/images/right_shadow.jpg)
repeat-y right; height:600px;">
<br />
<div style="padding-left:20px">
<div style='float:left; margin-right:8px;'><img
src="/elearning_cisc/images/mundo2.ico" alt="nuevo" /></div><div style=' text-
align:left'><h3>Opciones para crear Examenes</h3></div><div class='small'
style='margin-bottom:7px; color:#000'><b>Todos los campos son obligatorios de
llenar.</b></div>
</div>
<br />
108
<div align="center" style="border:1px solid #666; background:#FFF
url(/elearning_cisc/images/bg_panel_top_right.gif) repeat-y right; -moz-border-
radius: 4px 4px 4px 4px; font-weight: bold; width:95%;">
<form id="form1" name="cabecera_exa" method="post"
action="crea_examen.php">
<table width="93%" border="0" cellpadding="2" cellspacing="2" >
<tr><td colspan="3" align="center" valign="top"> </td></tr>
<tr>
<td width="258"><h2>Código del Examen</h2></td>
<td><b><u><?php if($maxid == null) {echo "1";}else{echo $maxid; }
?></u></b></td>
<td ></td>
</tr>
<tr>
<td><h2>Selecione el Ciclo</h2></td>
<td width="263" align="right"> <div align="left" style="width:auto"> <?php if
(isset($ciclo)) muestra_ciclo($ciclo); else muestra_ciclo($ciclo=0); ?> </div></td>
<td align="left"> <div id="c_ciclo" class="style99">Seleccione el Ciclo
respectivo.</div></td>
</tr>
<tr>
</tr>
<tr>
<td><h2>Selecione el parcial</h2></td>
<td width="263" align="right"> <div align="left" style="width:auto"> <?php if
(isset($parcial)) muestra_parcial($parcial); else muestra_parcial($parcial=0); ?>
</div></td>
<td align="left"> <div id="c_parcial" class="style99">Seleccione el parcial
respectivo.</div></td>
</tr>
<tr>
<td><h2>Seleccione tiempo de duración</h2></td>
<td><div align="left"><?php if (isset($tiempo_exa))
muestra_tiempo($tiempo_exa); else muestra_tiempo($tiempo_exa='0'); ?>
</div></td>
<td align="left"> <div id="c_tiempo" class="style99">Seleccione el tiempo
adecuado.</div></td>
</tr>
<tr>
<td><h2>N° de Preguntas </h2></td>
<td><div align="left"><?php if (isset($cant_preg)) muestra_pre($cant_preg); else
muestra_pre($cant_preg='0'); ?></div> </td>
109
<td align="left"> <div id="c_cant" class="style99">Indique número de
preguntas.</div></td>
</tr>
<tr>
<td><h2>Tipo de Examen</h2></td>
<td><div align="left"><?php if (isset($tipo)) muestra_tipoexa($tipo); else
muestra_tipoexa($tipo='0'); ?> </div></td>
<td align="left"><div id="ver2" align="left" style="display:inline"></div>
<div id="c_tipo" class="style99">Seleccione el tipo de examen.</div></td>
</tr>
<tr>
<td><h2>Fecha del Examen</h2></td>
<td valign="middle"><div style="float:left; width:80%">
<input name="date" id="date" type="text" value="<?php echo date("Y-m-d");?>"
maxlength="10" style="width:100%; text-align:right"
onmouseover="$('c_fecha').style.display='inline'"
onmouseout="$('c_fecha').style.display='none'"/></div>
<img src="../../../images/img.gif" alt="Ver Calendario.." id='f_trigger_b'
style="cursor: pointer; border: 1px solid red; float:right; margin-right:10px;"
title="Click para Activar el Calendario" onclick="InicioV()"
onmouseover="this.style.background='red';" onmouseout="this.style.background=''"
/>
</td>
<td align="left"> <div id="c_fecha" align="left" class="style99">Fecha en
que se ejecutará el examen.</div></td>
</tr>
<tr>
<td><h2>Ingrese el puntaje total </h2></td>
<td><div align="left">
<input name="puntaje" type="text" id="puntaje" value="<?php echo
$puntos_exa; ?>" size="5" maxlength="2"
onmouseover="$('c_puntaje').style.display='block'"
onmouseout="$('c_puntaje').style.display='none'" onkeypress=" return
validar_numero(event)" onclick="if(this.value==0)this.value='';"
onblur="if(this.value=='') this.value=0;"/>
</div></td>
<td align="left"><div id="c_puntaje" align="left" class="style99">Rango: mayor a
0 y menor o igual a 10</div></td>
</tr>
<tr>
<td><h2>Seleccione Paralelo</h2></td>
<td><div align="left">
<?php
110
//CARGA EL CURSO O EL CURSO ANTERIORMENTE GUARDADO SEGUN
EL EXAMEN
$data = "SELECT DISTINCT s.exa_semestre_id as idsemestre,
s.sem_semestre as semestre FROM exa_semestre s, exa_profesor p,
exa_asig_profesor x WHERE p.exa_profesor_id = x.exa_profesor_id and
x.exa_semestre_id = s.exa_semestre_id and p.exa_profesor_id ='$idpro' ORDER BY
1";
$result = $miconexion->consulta($data);
echo '<select name="exa_semestre" style="width:100%"
onmouseover="$("c_curso").style.display="inline""
onmouseout="$("c_curso").style.display="none""
onchange="comboMaterias(this.value)" >';
echo '<option value="0" selected="selected">Seleccione</option>';
muestra_semestre($semestre,$result);
?>
</div></td>
<td align="left"> <div id="c_curso" align="left" class="style99">El curso
esta en relación a la asignatura.</div></td>
</tr>
<tr>
<td><h2 id="ver1">Seleccione Asignatura </h2></td>
<td><div id="divAsignatura" align="left">
<?php
//$data="SELECT DISTINCT a.exa_asignatura_id idasig,
a.asg_nombre nasig FROM exa_asignatura a, exa_asig_profesor s, exa_semestre t
WHERE s.exa_profesor_id='$idpro' AND s.exa_semestre_id=t.exa_semestre_id
AND s.exa_asignatura_id=a.exa_asignatura_id";
//$result= $miconexion->consulta($data);
//muestra_asignatura($idpro,$asignatura,$result);
?>
<select name="exa_asignatura_id" id="exa_asignatura_id" style="width:100%"
onmouseover="$("c_asig").style.display="block""
onmouseout="$("c_asig").style.display="none"" >
<option value='0'>Primero Seleccione el Paralelo..</option>
</select>
</div>
</td>
<td align="left"><div id="c_asig" align="left" class="style99">Asignatura debe
estar en relacion con el curso.</div></td>
</tr>
<tr>
111
<td colspan="3" valign="middle">
<?php if (isset($_POST["submit_crear"])) if ($falta_data=="0"){ ?>
<div style="background-color: #fdfdfd;border: 2px solid
rgb(240, 201, 31); width:70%;padding:5px; background:rgb(255, 238, 153); font-
weight:normal; float:left; overflow:auto" align="center" >
<div style="background:url(/elearning_cisc/images/35px-
Nuvola_apps_important_yellow.svg.png) no-repeat left center; padding-left:35px;
height:30px; line-height:30px; font-size:13px; width:440px; color:#000"
> Debe ingresar todos los datos correctamente, <b>intente
nuevamente..!!</b></div></div>
<?php }
if ($falta_data=="2"){ ?>
<div style="background-color: #fdfdfd;border: 2px solid rgb(240, 201, 31);
width:70%;padding:5px; background:rgb(255, 238, 153); font-weight:normal;
float:left; overflow:auto" align="center" >
<div style="background:url(/elearning_cisc/images/35px-
Nuvola_apps_important_yellow.svg.png) no-repeat left center; padding-left:35px;
height:30px; line-height:30px; font-size:13px; width:470px; color:#000" > El
curso o la asignatura no corresponden, <b>corrija e intente
nuevamente...!!</b></div></div>
<?php }
if ($datoex > 0)
{?>
<div style="background-color: #fdfdfd;border: 2px solid rgb(240, 201, 31);
width:70%;padding:5px; background:rgb(255, 238, 153); font-weight:normal;
float:left; overflow:auto" align="center" >
<div style="background:url(/elearning_cisc/images/35px-
Nuvola_apps_important_yellow.svg.png) no-repeat left center; padding-left:35px;
height:30px; line-height:30px; font-size:13px; width:490px; color:#000" > Ya
existe un examen para ese Curso de esa Asignatura y de ese
Parcial...!!</b></div></div>
<?php }
date_default_timezone_set('America/Guayaquil');?>
<div style="float:right; margin-top:7px;">
<input type="submit" name="submit_crear" id="crea_exa" value="Generar"/>
<input name="Cancelar" type="submit" id="Cancelar" value="Salir"/>
</div>
<input type="hidden" name="examen_id" value="<?php if($maxid == null)
{echo "1";}else{echo $maxid; } ?>" />
</td>
</tr>
</table>
112
</form> </div>
</div></div></div>
</div>
</body>
</html>
<?php
function muestra_tiempo($tiempo_exa)
{
echo '<select name="exacur_tiempo" style="width:99%"
onmouseover="$("c_tiempo").style.display="inline""
onmouseout="$("c_tiempo").style.display="none"">';
$sel1='';
$sel2='';
$sel3='';
$sel4='';
$sel5='';
$sel6='';
$sel7='';
if ($tiempo_exa!='0')
{
if ($tiempo_exa=='600000') $sel1='selected="selected"';
if ($tiempo_exa=='900000') $sel2='selected="selected"';
if ($tiempo_exa=='1200000') $sel3='selected="selected"';
if ($tiempo_exa=='1800000') $sel4='selected="selected"';
if ($tiempo_exa=='2700000') $sel5='selected="selected"';
if ($tiempo_exa=='3600000') $sel6='selected="selected"';
if ($tiempo_exa=='7200000') $sel7='selected="selected"';
echo '<option value="0">Seleccione</option>';
echo '<option value="600000" '.$sel1.'>10 min</option>';
echo '<option value="900000" '.$sel2.'>15 min</option>';
echo '<option value="1200000" '.$sel3.'>20 min</option>';
echo '<option value="1800000" '.$sel4.'>30 min</option>';
echo '<option value="2700000" '.$sel5.'>45 min</option>';
echo '<option value="3600000" '.$sel6.'>1 hora</option>';
echo '<option value="7200000" '.$sel7.'>2 hora</option>';
}
else
{
echo '<option value="0" selected="selected">Seleccione</option>';
echo '<option value="600000">10 min</option>';
echo '<option value="900000">15 min</option>';
echo '<option value="1200000">20 min</option>';
echo '<option value="1800000">30 min</option>';
113
echo '<option value="2700000">45 min</option>';
echo '<option value="3600000">1 hora</option>';
echo '<option value="7200000">2 hora</option>';
}
echo '</select>';
}
function muestra_pre($cant_preg)
{
echo '<select name="exacur_cantidad_item" id="select" style="width:99%"
onmouseover="$("c_cant").style.display="inline""
onmouseout="$("c_cant").style.display="none"">';
$sel1='';
$sel2='';
$sel3='';
$sel4='';
$sel5='';
$sel6='';
$sel7='';
$sel8='';
$sel9='';
$sel0='';
if ($cant_preg!='0')
{
if ($cant_preg=='1') $sel1='selected="selected"';
if ($cant_preg=='2') $sel2='selected="selected"';
if ($cant_preg=='3') $sel3='selected="selected"';
if ($cant_preg=='4') $sel4='selected="selected"';
if ($cant_preg=='5') $sel5='selected="selected"';
if ($cant_preg=='6') $sel6='selected="selected"';
if ($cant_preg=='7') $sel7='selected="selected"';
if ($cant_preg=='8') $sel8='selected="selected"';
if ($cant_preg=='9') $sel9='selected="selected"';
if ($cant_preg=='10') $sel0='selected="selected"';
echo '<option value="0">Seleccione</option>';
echo '<option value="1" '.$sel1.'>1</option>';
echo '<option value="2" '.$sel2.'>2</option>';
echo '<option value="3" '.$sel3.'>3</option>';
echo '<option value="4" '.$sel4.'>4</option>';
echo '<option value="5" '.$sel5.'>5</option>';
echo '<option value="6" '.$sel6.'>6</option>';
echo '<option value="7" '.$sel7.'>7</option>';
echo '<option value="8" '.$sel8.'>8</option>';
echo '<option value="9" '.$sel9.'>9</option>';
114
echo '<option value="10" '.$sel10.'>10</option>';
}
else
{
echo '<option value="0" selected="selected">Seleccione</option>';
echo '<option value="1">1</option>';
echo '<option value="2">2</option>';
echo '<option value="3">3</option>';
echo '<option value="4">4</option>';
echo '<option value="5">5</option>';
echo '<option value="6">6</option>';
echo '<option value="7">7</option>';
echo '<option value="8">8</option>';
echo '<option value="9">9</option>';
echo '<option value="10">10</option>';
}
echo '</select>';
}
function muestra_tipoexa($tipo)
{
echo '<select name="exacur_tipo" style="width:99%"
onmouseover="$("c_tipo").style.display="inline""
onmouseout="$("c_tipo").style.display="none"">';
if ($tipo=='0')
{
echo '<option value="0" selected="selected">Seleccione</option>';
echo '<option value="C">Calificado</option>';
echo '<option value="S">Simulacion</option>';
}
if ($tipo=='C')
{
echo '<option value="0">Seleccione</option>';
echo '<option value="C" selected="selected">Calificado</option>';
echo '<option value="S">Simulacion</option>';
}
if ($tipo=='S')
{
echo '<option value="0">Seleccione</option>';
echo '<option value="C">Calificado</option>';
echo '<option value="S" selected="selected">Simulacion</option>';
}
echo '</select>';
115
}
function muestra_parcial($parcial=0)
{
echo '<select name="exacur_parcial" style="width:99%"
onmouseover="$("c_parcial").style.display="inline""
onmouseout="$("c_parcial").style.display="none"" >';
if ($parcial==0)
{
echo '<option value="0" selected="selected">Seleccione</option>';
echo '<option value="1">Primer Parcial</option>';
echo '<option value="2">Segundo Parcial</option>';
echo '<option value="3">Mejoramiento</option>';
}
if ($parcial==1)
{
echo '<option value="0">Seleccione</option>';
echo '<option value="1" selected="selected">Primer Parcial</option>';
echo '<option value="2">Segundo Parcial</option>';
echo '<option value="3">Mejoramiento</option>';
}
if ($parcial==2)
{
echo '<option value="0">Seleccione</option>';
echo '<option value="1">Primer Parcial</option>';
echo '<option value="2" selected="selected">Segundo Parcial</option>';
echo '<option value="3">Mejoramiento</option>';
}
if ($parcial==3)
{
echo '<option value="0">Seleccione</option>';
echo '<option value="1" selected="selected">Primer Parcial</option>';
echo '<option value="2">Segundo Parcial</option>';
echo '<option value="3" selected="selected">Mejoramiento</option>';
}
echo '</select>';
}
function muestra_ciclo($ciclo=0)
{
echo '<select name="exacur_ciclo" style="width:99%"
onmouseover="$("c_ciclo").style.display="inline""
onmouseout="$("c_ciclo").style.display="none"" >';
116
if ($ciclo==0)
{
echo '<option value="0" selected="selected">Seleccione</option>';
echo '<option value="1">Ciclo 1</option>';
echo '<option value="2">Ciclo 2</option>';
}
if ($ciclo==1)
{
echo '<option value="0">Seleccione</option>';
echo '<option value="1" selected="selected">Ciclo 1</option>';
echo '<option value="2">Ciclo 2</option>';
}
if ($ciclo==2)
{
echo '<option value="0">Seleccione</option>';
echo '<option value="1">Ciclo 1</option>';
echo '<option value="2" selected="selected">Ciclo 2</option>';
}
echo '</select>';
}
function muestra_semestre($semestre,$result)
{
while($rowsem = mysql_fetch_array($result))
{
if ($rowsem["idsemestre"]==$semestre)
{
echo '<option value="'.$rowsem["idsemestre"].'"
selected="selected">'.$rowsem["semestre"].' </option>';
}else
{
echo '<option
value="'.$rowsem["idsemestre"].'">'.$rowsem["semestre"].' </option>';
}
}
echo '</select>';
mysql_free_result($result);
}
?>
Fuente:Archivo ”crea_examen.php”
Elaboración: José Luis Garzón A.
117
Cuadro No 3.
Código para presentar la asignatura según el curso seleccionado durante la
creación de la cabecera del examen
<?php
session_start (); // iniciamos session
if (!isset($_SESSION["usNick"]))
header('Location: login/login.php');
//esto es para decirle al cache de procesos del navegador que se desactive
header("Cache-Control: no-store, no-cache, must-revalidate");
//llama a la libreria que contiene los objetos de cmanejo de BD
require ("../../../lib/clase_MySql.inc.php");
$miconexion = new DB_mysql ; //Ejecuta la conexion
$miconexion->conectar();
//$id = $_POST['idcmb'] ;
$profe = $miconexion->unDato("select exa_profesor_id from exa_profesor where
pro_identificacion = ".$_SESSION["usNick"]);
$result = $miconexion->consulta("SELECT DISTINCT a.exa_asignatura_id idasig,
a.asg_nombre nasig
FROM exa_asignatura a, exa_asig_profesor s, exa_semestre t
WHERE
s.exa_semestre_id=t.exa_semestre_id
AND s.exa_asignatura_id=a.exa_asignatura_id
and s.exa_profesor_id = $profe
and s.exa_semestre_id = ".$_POST['idS']);
$linea='<select name="exa_asignatura_id" id="exa_asignatura_id"
style="width:100%"
onmouseover="$("c_asig").style.display="block""
onmouseout="$("c_asig").style.display="none"" >';
while ($row = mysql_fetch_row($result)) {
$linea .= "<option value='".$row[0]."'>".$row[1]."</option>";
}
$linea .= "</select>";
echo $linea;
?>
Fuente:Archivo ”comboAsignaturas.php”
Elaboración: José Luis Garzón A.
118
Cuadro No 4.
Código para agregar preguntas al examen existente
<?php
session_start (); // iniciamos session
if (!isset($_SESSION["usNick"]))
header('Location: login/login.php');
//esto es para decirle al cache de procesos del navegador que se desactive
header("Cache-Control: no-store, no-cache, must-revalidate");
//llama a la libreria que contiene los objetos de cmanejo de BD
require ("../../../lib/clase_MySql.inc.php");
$miconexion = new DB_mysql ; //Ejecuta la conexion
$miconexion->conectar();
if (isset($_GET["v_examen_id"]))
$exa_cabecera_examen_id=$_GET["v_examen_id"];
if (isset($_POST["examen_id"])) $exa_cabecera_examen_id=$_POST["examen_id"];
if (isset($_GET["exaid"])) $exa_cabecera_examen_id=$_GET["exaid"];
//Proceso del Boton Salir
if (isset($_POST["Salir"])) header('Location: inicial_docente.php');
//Procesar Examen
$query_cant_pre="SELECT e.exa_cab_cantidad_item, e.exa_cab_puntaje_total,
s.sem_semestre, a.asg_nombre FROM exa_cabecera_examen e, exa_semestre s,
exa_asignatura a WHERE exa_cabecera_examen_id=".$exa_cabecera_examen_id."
AND e.exa_semestre_id=s.exa_semestre_id AND
e.exa_asignatura_id=a.exa_asignatura_id";
$cant_pre=$miconexion->consulta($query_cant_pre);
$cant_tmp_pre=mysql_fetch_array($cant_pre);
$c_pre=$cant_tmp_pre["exa_cab_cantidad_item"];
$curso=$cant_tmp_pre["sem_semestre"];
$asigna=$cant_tmp_pre["asg_nombre"];
$puntaje_exa=$cant_tmp_pre["exa_cab_puntaje_total"];
$query_cant_pre="SELECT count(*) as cantpre FROM exa_pregunta WHERE
exa_cabecera_examen_id=".$exa_cabecera_examen_id;
$maxpre=$miconexion->consulta($query_cant_pre);
$max_tmp_pre=mysql_fetch_array($maxpre);
$max_pre=$max_tmp_pre["cantpre"];
$pre_grp=array();
$tmp1_pre_grp=array();
119
$suma_pto_grp=0;
$suma_pto=0;
$caso=1;
if ($max_pre>$c_pre)
{
$q_preg_grupo="SELECT exa_pregunta_id, preg_puntos FROM
exa_pregunta WHERE exa_cabecera_examen_id='$exa_cabecera_examen_id'
ORDER BY 1 ASC LIMIT ".'0'.",".$c_pre;
$tmp1_pre_grp=$miconexion->consulta($q_preg_grupo);
while ($row_preg_grp=mysql_fetch_array($tmp1_pre_grp))
{
$suma_pto=$suma_pto+$row_preg_grp["preg_puntos"];
}
if ($suma_pto==$puntaje_exa){$caso=1;}
if ($suma_pto<$puntaje_exa) {$caso=2;}
if ($suma_pto>$puntaje_exa) {$caso=2;}
}
if ($c_pre==$max_pre)
{
$query_pto="SELECT exa_pregunta_id, preg_puntos FROM exa_pregunta
WHERE exa_cabecera_examen_id='$exa_cabecera_examen_id' ORDER BY 1";
$pre_pto_tmp=$miconexion->consulta($query_pto);
while ($row_preg_pto=mysql_fetch_array($pre_pto_tmp))
{
$suma_pto=$suma_pto+$row_preg_pto["preg_puntos"];
}
// caso=1 --> el puntaje de las preguntas y su cantidad es correcto
// caso=2 --> el puntaje de las preguntas y su cantidad es incorrecto
if ($suma_pto==$puntaje_exa){$caso=1;}
if ($suma_pto<$puntaje_exa) {$caso=2;}
if ($suma_pto>$puntaje_exa) {$caso=2;}
}
if (isset($_POST["Publicar"]))
if ($max_pre>=$c_pre) header("Location:
pub_examen.php?p_exa_id=".$exa_cabecera_examen_id);
120
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<link rel="stylesheet" href="../css/template.css" type="text/css" />
<script type="application/javascript" src="funciones.js"> </script>
<script type="text/javascript" src="../../../js/prototype.js"> </script>
<style type="text/css">
<!--
.style1 {
color: #FF0000;
font-weight: bold;
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
}
.Estilo1 {
color: #FFFFFF;
font-weight: bold;
}
-->
</style>
<script language="javascript" type="text/javascript">
document.getElementsByClassName = function(className, parentElement)
{
if (Prototype.BrowserFeatures.XPath) {
var q = ".//*[contains(concat(' ', @class, ' '), ' " + className + " ')]";
return document._getElementsByXPath(q, parentElement);
}
else
{
var children = ($(parentElement) || document.body).getElementsByTagName('*');
var elements = [], child;
for (var i = 0, length = children.length; i < length; i++) {
child = children[i];
if (Element.hasClassName(child, className))
elements.push(Element.extend(child));
}
return elements;
}
}
function crearCombo(dir,idcmb){
var url='comboImagenes.php';
var param= "idcmb="+idcmb;
121
var ajaxRequest = new Ajax.Request(url,{method: 'post',parameters: param,
asynchronous: true,
onSuccess: function(transport) {
$(dir).innerHTML = transport.responseText
+' <img id="img'+idcmb+'" src="../image/ico6.png" width="37"
height="27" alt="img" /> ';
}} );
}
function cmbRecarga(){
var arr = document.getElementsByClassName('imagenes');
var obj;
var valor;
var marcas = new Array();
for (j=0 ; j < arr.length ; j++){
obj = arr[j];
valor = obj.options[obj.selectedIndex].value;
marcas[j]=valor;
}
var url='recargaCombos.php';
var ajaxRequest = new Ajax.Request(url,{method: 'post', asynchronous: true,
onSuccess: function(transport) {
for (j=0 ; j < arr.length ; j++){
var ajax =
transport.responseText;
arr[j].innerHTML = ajax ;
for (v=0 ; v <
arr[j].options.length ; v++){
if(arr[j].options[v].value == marcas[j]) arr[j].options[v].selected ="selected";
}
}
}} );
if (!detectBrowser()){ setTimeout('cmbRecarga()', 4000); }
}
function detectBrowser(){
var browser=navigator.appName;
if (browser=="Microsoft Internet Explorer")
{ return true; } else return false;
}
function muestraImg(text,id){
122
var array = text.split("@");
//alert("../FileExamen/"+array[0]);
$('img'+id).setAttribute("src","../FileExamen/"+array[0]);
//alert($('img'+id).scr);
}
function crearTabla(valor)
{
var opimg = $('tipo_pregunta').value;
$('resp').innerHTML="<h3 style='text-
align:right'>Respuestas</h3>";
$('divTabla').innerHTML="<table id='listap' width='100%' border='0'
cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
var tabla= $('listap');
for(i=0;i<valor;i++)
{
var tbody = document.createElement('TBODY');
var div = document.createElement('div');
var tr = document.createElement('TR');
var td = document.createElement('TD');
div.innerHTML = "<b>Respuesta # [</b>"+(i+1)+"<b>]</b>,
<span style='color:#163254'> Si la respuesta es la correcta marque aquí:
</span>";
div.align='left';
if(opimg=="O")
{
var ob_op =
document.createElement('textarea');ob_op.style.width = '99%';
ob_op.id ="text"+(i+1); ob_op.setAttribute("class",
"txtExa");
}
if(opimg=="I")
{
//var ob_op = document.createElement('input');
ob_op.type="file";
var ob_op = document.createElement('DIV');
ob_op.id="ob_op"+(i+1);
crearCombo(ob_op.id,i);
}
123
var sel = document.createElement('input');
sel.type="radio";
sel.name="examen"; sel.id="sel"+(i+1);
sel.setAttribute("class", "txtExa");
td.appendChild(div);
td.appendChild(sel);
td.appendChild(ob_op);
//if(opimg=="I")
//{
// td.appendChild(img_op);
//}
tr.appendChild(td);
tbody.appendChild(tr);
tabla.appendChild(tbody);
}
cmbRecarga();
}
function guardarDatos()
{
var arr = document.getElementsByClassName('imagenes');
var obj;
var valor;
var marcas = new Array();
for (j=0 ; j < arr.length ; j++){
obj = arr[j];
valor = obj.options[obj.selectedIndex].value;
marcas[j]=valor;
}
if(confirm('Desea guardar la pregunta ?'))
{
if($("tipo_pregunta").value!="0" && $("pregunta").value != "" &&
$("cantidad_op").value >= "0" && $("pre_puntaje").value != "0" ){
var url="guardar.php";
var param =
"nExamen="+$("nExamen").value+"&tipo_pregunta="+$("tipo_pregunta").value+"&
pregunta="+$("pregunta").value+"&pre_puntaje="+$("pre_puntaje").value+"&cantid
ad_op="+$("cantidad_op").value;
if ( $("cantidad_op").value > "0")
{
var l=$("listap");
124
var tope = l.childNodes.length;
//alert (tope);
}
else
{
var tope=0;
}
if (tope!=0)
{
var band=0;
for(f=1;f<tope;f++ )
{
//Verifica si esta vacia el cuadro de texto
if
(l.childNodes[f].childNodes[0].childNodes[0].childNodes[2].value=="")
{
band=1;
}
param +=
"&"+l.childNodes[f].childNodes[0].childNodes[0].childNodes[1].id+"=";
//Verifica si esta seleccionada la opcion
if(l.childNodes[f].childNodes[0].childNodes[0].childNodes[1].checked
== true) param += "Y" ; else param += "N" ;
param +=
"&"+l.childNodes[f].childNodes[0].childNodes[0].childNodes[2].id+"=";
if($("tipo_pregunta").value=='I'){
var imagen = marcas[f-
1].split("@");//l.childNodes[f].childNodes[0].childNodes[0].childNodes[2].childNode
s[1].value.split("@");
param += imagen[0];
//alert(param);
} else {
param
+=l.childNodes[f].childNodes[0].childNodes[0].childNodes[2].value;
}
}
125
//alert(param);
//return;
}
//alert(param);
if (band==1)
{
alert ("Las alternativas no pueden estar vacias..."); return;
}
//alert(param);
//return;
var ajaxRequest = new Ajax.Request(url ,{method: 'post', parameters: param,
asynchronous: true,
onSuccess:
function(transport) {
alert(transport.responseText);
window.location="contenido_examen.php?v_examen_id="+<?php echo
$exa_cabecera_examen_id; ?>
}} );
} else alert('Ingrese todos los datos requeridos para generar la pregunta..');
}
}
</script>
</head>
<body style="overflow:scroll">
<div class="center" align="center">
<div id="top">
<div id="tabarea">
<table cellpadding="0" cellspacing="0" class="pill"
align="center">
<tr>
<td class="pill_m">
<div id="pillmenu">
<ul id="mainlevel-nav">
<li><a class="mainlevel-nav"
href="../../Examen/Docente/crea_examen.php"><b>Crear Examen</b> </a></li>
<li><a class="mainlevel-nav"
href="../../Examen/Docente/edicion_examen.php"><b>Editar Examen</b></a></li>
126
<li><a class="mainlevel-nav"
href="../../Examen/Docente/califica_examen.php"><b>Calificar
Examen</b></a></li>
<li><a class="mainlevel-nav"
href="../../Examen/Docente/grafico_notas.php"><b>Estadístico</b></a></li>
</ul>
</div>
</td>
</tr>
</table>
</div>
</div>
<div id="wrapper" align="center" style="height:100%; overflow:auto; padding-
top:0px;" >
<div style="background:#EBEBEB
url(/elearning_cisc/contenido/wikikey/images/left_shadow.jpg) repeat-y left;
width:90%;">
<div
style="background:url(/elearning_cisc/contenido/wikikey/images/right_shadow.jpg)
repeat-y right;">
<br />
<div style="padding-left:20px">
<div style='float:left; margin-right:8px;'><img
src="/elearning_cisc/images/mundo2.ico" alt="nuevo" /></div><div style=' text-
align:left'><h3>Agregar Preguntas al Examen</h3></div><div class='small'
style='margin-bottom:7px; color:#000'><b>Listado Actual.</b>
</div>
</div>
<br />
<table width="97%" border="0" cellpadding="0" cellspacing="0" >
<tr>
<td><?php if ($caso==2) {echo '<div style="width:98%;padding:5px"
><h2><span class="style1"><font size="2"> El primer grupo de preguntas debe
sumar '.$puntaje_exa.' ptos, actualmente es de '.$suma_pto.' ptos, debe corregir los
puntajes. <a
href="edita_preguntas.php?exaid='.$exa_cabecera_examen_id.'"><font size="2">
Click aqui para corregir los puntajes</font></a></font></span> </div>'; }
127
if ($max_pre==0) { echo '<div
style="width:98%;padding:5px" ><h2><span class="style1"><font size="2">No
tiene preguntas, El puntaje del examen es de '.$puntaje_exa.', debe ingresar minimo
'.$c_pre.' preguntas que sumen ese puntaje, para ser
Publicado...</font></a></font></span></div>'; }
if ($max_pre<$c_pre && $max_pre>0) { echo '<div
style="width:98%;padding:5px" ><h2><span class="style1"><font size="2"> El
puntaje del examen es de '.$puntaje_exa.', debe ingresar minimo '.$c_pre.' preguntas
para ser Publicado...</font></a></font></span></div>';}
if ($suma_pto==$puntaje_exa && $max_pre==$c_pre ) {echo '<div
style="width:98%;padding:5px" ><h2><span class="style1"><font size="2">El
examen puede ser publicado, o puede ingresar mas
preguntas.</font></a></font></span></div>';}
?></td>
</tr>
<tr>
<td align="center">
<form id="form1" name="form1" method="post"
action="contenido_examen.php" style="border:1px solid #114A84; background:#fff
url(/elearning_cisc/images/bg_panel_top_right.gif) repeat-y right; -moz-border-
radius: 4px 4px 4px 4px; width:100%">
<table width="93%" border="0" cellpadding="4" >
<tr>
<td colspan="5"> </td>
<td width="110" rowspan="3">
<input type="hidden" name="examen_id" value="<?php echo
$exa_cabecera_examen_id; ?>" />
<?php if ($caso==2) $orden="none"; if ($caso==1) $orden="inline"; ?>
<input type="button" name="submit_crear" id="crea_exa"
value="Agregar" style="width:100px; display: <?php echo $orden; ?>"
onclick="guardarDatos()" /><br />
<input type="submit" name="Publicar" id="Publicar" value="Publicar"
style="width:100px; display: <?php echo $orden; ?>" /><br />
<input type="submit" name="Salir" id="Salir" value="Salir"
style="width:100px"/>
</td>
</tr>
<tr>
<td width="218" style="text-align: left"><div align="right"><h2>N°
de Examen </h2></div></td>
128
<td width="215" align="center"><input name="nExamen" id="nExamen"
class="txtExa" type="text" disabled="disabled" style="text-align:center;
width:100%" value="<?php echo $exa_cabecera_examen_id ?>"/></td>
<td width="158"> </td>
<td width="134"> </td>
<td width="119"> </td>
</tr>
<td style="text-align: left"><div align="right"><h2>Seleccione tipo
pregunta </h2></div></td>
<td><select name="tipo_pregunta" id="tipo_pregunta" style="width:100%"
class="txtExa"
onchange="if(this.value=='C'){$('ver1').style.display='none';$('ver2').style.display='n
one';$('divTabla').innerHTML='';$('resp').innerHTML=''}else
{$('ver1').style.display='inline';$('ver2').style.display='inline'};
if(this.value=='I'){$('cargaImag').style.display='inline'; if (detectBrowser()){
$('iexplorer').style.display='inline'; } }else{$('cargaImag').style.display='none';}">
<!--muestra_res(this.value);-->
<option value="0" selected="selected">Seleccione</option>
<option value="O">Objetiva</option>
<option value="I">Objetiva con Imagen</option>
<option value="C">Carga de archivo</option>
</select></td>
<td> </td>
<td> </td>
<td> </td>
<tr>
<td style="text-align: left"><div align="right"><h2>Ingrese
Pregunta</h2></div></td>
<td colspan="2">
<textarea class="txtExa" name="pregunta" cols="60" rows="5"
id="pregunta" style="width:100%"></textarea>
</td>
<td colspan="3" rowspan="4" align="center" valign="top" >
<iframe id="cargaImag" style="border:1px solid #4DC8DD; display:none;
background:#FFF" src="subirImagen.php" scrolling="auto" frameborder="0"
width="100%" height="200px"></iframe>
</td>
</tr>
<td style="text-align: left"><div align="right"><h2>Puntaje de pregunta
</h2></div></td>
<td colspan="2" align="left"><input class="txtExa" name="pre_puntaje"
type="text" id="pre_puntaje" value="0" maxlength="2" onkeypress=" return
validar_numero(event)" onclick="if(this.value==0)this.value='';"
onblur="if(this.value=='') this.value=0;" style="float:left; width:100px"/>
129
<div id="iExplorer" style="font-size:11px ; text-align:left; float:right;
display:none; background:rgb(255, 238, 153);border: 2px solid rgb(240, 201, 31);
padding:3px">
<img src="../../../images/35px-Nuvola_apps_important_yellow.svg.png"
width="20" height="14" alt="alerta" style="float:left; margin-right:3px" />
<span style="font-size:15px"><b>Si utiliza Internet Explorer
!!</b></span><br />
<b>1°.</b> Carge la imagen si es
necesario. <img
src="../../../images/arrow_show.gif" width="9" height="9" alt="right" /><br />
<img src="../../../images/down.gif" width="14" height="8" alt="bottom"
/> <b>2°.</b> Seleccione el numero de repuestas.
</div></td>
<tr>
<td align="right"><div id="ver1" align="right"
style="display:none"><h2>No. de Respuestas </h2></div></td>
<td><div id="ver2" align="left" style="display:none">
<select name="cantidad_op" id="cantidad_op" style="width:100%"
onchange="return crearTabla(this.value)" class="txtExa">
<option value="0" selected="selected">Select item</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
</div></td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td><div align="right" id="resp"></div></td>
<td colspan="6"><div id="divTabla" align="justify"></div></td>
</tr>
</table>
</form> </td>
</tr>
<tr>
<td colspan="7">
130
<br />
<div style="float:left; margin-right:10px;"><img
src="/elearning_cisc/images/notas.ico" alt="bib" /></div>
<div style=" text-align:left">
<h3><?php echo 'Preguntas del Examen de '.$asigna.'
Semestre : '.$curso; ?></h3>
</div>
<div class="small" style="margin-bottom:7px; color:#000"><b>Listado
de Preguntas Ingresadas actualmente.</b></div>
<div style="border:1px solid #114A84; background:#fff
url(/elearning_cisc/images/bg_panel_top_right.gif) repeat-y right; -moz-border-
radius: 4px 4px 4px 4px; margin:0px 0px 0px 0px; padding:10px 10px 4px 10px;
text-align:justify; font:10px sans-serif; width:98%">
<div style="padding:8px 0px 8px 0px; font-size:12px">
<?php $cnt=0;
if ($max_pre>0)
{
$query_pre="SELECT exa_pregunta_id,
preg_tema, preg_tipo, preg_puntos FROM exa_pregunta WHERE
exa_cabecera_examen_id='$exa_cabecera_examen_id' ORDER BY 1";
$pre_tmp=$miconexion-
>consulta($query_pre);
while
($row_preg=mysql_fetch_array($pre_tmp))
{ $cnt++;
echo "<b>Pregunta ".$cnt.":</b>
".$row_preg['preg_tema']."<br><b style='color:#006600;'>Tipo: </b>";
if ($row_preg['preg_tipo']=="C")
{
echo "<span
style='color:#006600;'>Carga de Archivo</span><br>";
}
else
{
echo "<span
style='color:#006600;'>Objetiva</span><br>";
}
echo "Puntaje
:".$row_preg['preg_puntos'],"<br><hr>";
}
}
131
?>
</div>
</div>
</td></tr>
</table>
</div></div></div></div></body>
</html>
Fuente:Archivo ”contenido_examen.php”
Elaboración: José Luis Garzón A.
132
Cuadro No 5.
Código para cargar el combo de selección de imágenes para las preguntas
objetivas con imágenes
<?php
//session_start (); // iniciamos session
//esto es para decirle al cache de procesos del navegador que se desactive
header("Cache-Control: no-store, no-cache, must-revalidate");
//llama a la libreria que contiene los objetos de cmanejo de BD
require ("../../../lib/clase_MySql.inc.php");
$miconexion = new DB_mysql ; //Ejecuta la conexion
$miconexion->conectar();
$id = $_POST['idcmb'] ;
$miconexion->comboImgs("select * from exa_imagenes",$id);
?>
Fuente:Archivo ”comboImagenes.php”
Elaboración: José Luis Garzón A.
133
Cuadro No 6.
Código para recargar el combo de selección de imágenes para las preguntas
objetivas con imágenes
<?php
//session_start (); // iniciamos session
//esto es para decirle al cache de procesos del navegador que se desactive
header("Cache-Control: no-store, no-cache, must-revalidate");
//llama a la libreria que contiene los objetos de cmanejo de BD
require ("../../../lib/clase_MySql.inc.php");
$miconexion = new DB_mysql ; //Ejecuta la conexion
$miconexion->conectar();
//$id = $_POST['idcmb'] ;
$result = $miconexion->consulta("select * from exa_imagenes");
$linea="";
while ($row = mysql_fetch_row($result)) {
$linea .= "<option value='".$row[1]."@".$row[0]."'>".$row[1]."</option>";
}
echo $linea;
?>
Fuente:Archivo ” recargaCombos.php”
Elaboración: José Luis Garzón A.
134
Cuadro No 7.
Código para guardar las preguntas del Examen
<?php
// iniciamos session
session_start ();
if (!isset($_SESSION["usNick"]))
header('Location: login/login.php');
//esto es para decirle al cache de procesos del navegador que se desactive
//echo "Se ejecuto el archivo php que graba la pregunta";
header("Cache-Control: no-store, no-cache, must-revalidate");
//llama a la libreria que contiene los objetos de cmanejo de BD
require ("../../../lib/clase_MySql.inc.php");
//Ejecuta la conexion
$miconexion = new DB_mysql ;
$miconexion->conectar();
//Obtiene el ID de la ultima pregunta registrada por el usuario en sesion actuva
$exa_cabecera_examen_id=$_POST["nExamen"];
//Graba la pregunta
$preg_tipo=$_POST["tipo_pregunta"];
$preg_tema=$_POST["pregunta"];
$preg_puntos=$_POST["pre_puntaje"];
$query="INSERT INTO
exa_pregunta(exa_cabecera_examen_id,preg_tipo,preg_tema,preg_estado,preg_punto
s)
VALUES('$exa_cabecera_examen_id','$preg_tipo','$preg_tema','A','$preg_puntos')";
$result1 = $miconexion->guardar($query);
//Obtengo el id de la pregunta recientemente grabada
//$id_preg=$miconexion->unDato("SELECT max(exa_pregunta_id) FROM
exa_pregunta WHERE exa_cabecera_examen_id='$exa_cabecera_examen_id'");
$query_pre="SELECT max(exa_pregunta_id) as idpreg FROM exa_pregunta
WHERE exa_cabecera_examen_id='$exa_cabecera_examen_id'";
$resu_pregid=$miconexion->consulta($query_pre);
$row_pregid=mysql_fetch_array($resu_pregid);
$tmp_preid=$row_pregid["idpreg"];
135
//Validacion de las alternativas de la pregunta
$nop = $_POST["cantidad_op"];
if ($nop!=0)
{
for($i=1;$i<=$nop;$i++)
{
if (isset($_POST["text".$i]))
{
$alter=$_POST["text".$i];
}
else
{
$alter=$_POST["ob_op".$i];
}
$selec=$_POST["sel".$i];
//Graba las alternativas de la pregunta
$query="INSERT INTO exa_alternativa (exa_pregunta_id,
alt_alternativa, alt_flag, alt_estado) VALUES ('$tmp_preid','$alter','$selec','A')";
$result2 = $miconexion->guardar($query);
}
if($result1 && $result2) echo " Se almaceno con Exito.."; else echo "Fallo.. !";
}
else
{
if($result1) echo " Se almaceno con Exito.."; else echo "Fallo.. !";
}
?>
Fuente:Archivo ”guardar.php”
Elaboración: José Luis Garzón A.
Cuadro No 8.
136
Código para borrar las imágenes cargadas para las preguntas objetivas con
imagenes
<?php
session_start ();
if (!isset($_SESSION["usNick"]))
header('Location: login/login.php');
header("Cache-Control: no-store, no-cache, must-revalidate");
//llama a la libreria que contiene los objetos de cmanejo de BD
require ("../../../lib/clase_MySql.inc.php");
$miconexion = new DB_mysql ; //Ejecuta la conexion
$miconexion->conectar();
$arch = substr($_GET['archivo'],14,strlen($_GET['archivo']));
if (!unlink($_GET['archivo'])){
echo 'no se pudo borrar el archivo :'.$_GET['archivo'];
}
$result = $miconexion->guardar("delete from exa_imagenes where
nombre='".$arch."'");
header( 'Location: subirImagen.php' );
?>
Fuente:Archivo ”borrarImagen.php”
Elaboración: José Luis Garzón A.
Cuadro No 9.
137
Código para cargar las imágenes para las preguntas objetivas con imagenes
<?php
session_start (); // iniciamos session
if (!isset($_SESSION["usNick"]))
header('Location: login/login.php');
header("Cache-Control: no-store, no-cache, must-revalidate");
//llama a la libreria que contiene los objetos de cmanejo de BD
require ("../../../lib/clase_MySql.inc.php");
$miconexion = new DB_mysql ; //Ejecuta la conexion
$miconexion->conectar();
?>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="34%" height="100px" align="center" valign="middle">
<?php
if(!empty($_FILES['exafile']['name']))
{ //inicio if 3
//$a = uniqid(rand(), true);
$arch1 = $miconexion->unDato("select count(nombre) from
exa_imagenes where nombre='".basename($_FILES['exafile']['name'])."'");
if( $arch1 < 1 ){
$uploaddir =
'/wamp/www/elearning_cisc/contenido/Examen/FileExamen/';
$uploadfile =
$uploaddir.basename($_FILES['exafile']['name']) ;
$uploaddirexa ='FileExamen/';
$uploadfile_exa =
$uploaddirexa.basename($_FILES['exafile']['name']) ;
if (move_uploaded_file($_FILES['exafile']['tmp_name'],
$uploadfile))
{
$ruta = $uploadfile_exa;
$estado_pre='P';
}
echo '<img src="../'.$uploadfile_exa.'" width="60px"
height="70px" alt="imgs" /><br><span style="font-size:11px"><b>Cargada..
Eliminela o Suba Otra.</b></span>' ;
$result = $miconexion->guardar("insert into
exa_imagenes (nombre) values('".basename($_FILES['exafile']['name'])."')");
138
} else echo "Archivo Existente, cambie el nombre
e intente de nuevo...";
}//fin de if 3
?>
</td>
</tr>
<tr>
<td width="66%" align="center" valign="top"><form method="POST"
enctype="multipart/form-data" action="subirImagen.php" style="padding:0px;
margin:0px;">
<input type="hidden" name="MAX_FILE_SIZE" value="300000000" />
<input name="exafile" type="file" /><br />
<input name="Subir" type="submit" value="Subir Imagen" style="width:150px" />
</form>
<form method="GET" enctype="multipart/form-data" action="borrarImagen.php"
style="padding:0px; margin:0px;">
<input type="submit" name="button" id="button" value="Eliminar Imagen"
style="width:150px"/>
<input name="archivo" type="hidden" value="<?php echo "../".$uploadfile_exa;?>"
/>
</form>
</td>
</tr>
</table>
Fuente:Archivo ”subirImagen.php”
Elaboración: José Luis Garzón A.
139
Cuadro No 10.
Código para publicar los exámenes creados correctamente
<?php
session_start (); // iniciamos session
if (!isset($_SESSION["usNick"]))
header('Location: login/login.php');
//esto es para decirle al cache de procesos del navegador que se desactive
header("Cache-Control: no-store, no-cache, must-revalidate");
//llama a la libreria que contiene los objetos de cmanejo de BD
require ("../../../lib/clase_MySql.inc.php");
require ("../funciones_php/funciones.php");
$miconexion = new DB_mysql ; //Ejecuta la conexion
$miconexion->conectar();
//Obtiene el # de Cedula del profesor para obtener el ID
$ci=$_SESSION["usNick"];
$rowidprof=array();
$query ="SELECT exa_profesor_id,nombres, apellidos FROM exa_profesor
WHERE pro_identificacion='$ci'";
$res= $miconexion->consulta($query);
$rowidprof=mysql_fetch_array($res);
mysql_free_result($res);
$idpro=$rowidprof['exa_profesor_id'];
//Obtengo cantidad de preguntas
if (isset($_GET["p_exa_id"])) $pub_id_exa=$_GET["p_exa_id"];
if (isset($_POST["pub_examen_id"])) $pub_id_exa=$_POST["pub_examen_id"];
$query_cant_pre="SELECT count(*) as cantpre FROM exa_pregunta WHERE
exa_cabecera_examen_id='$pub_id_exa'";
$maxpre=$miconexion->consulta($query_cant_pre);
$max_tmp_pre=mysql_fetch_array($maxpre);
$max_pre=$max_tmp_pre["cantpre"];
//Obtengo la asignatura
$query_mat="SELECT a.exa_asignatura_id, a.asg_nombre FROM exa_asignatura a,
exa_cabecera_examen c WHERE c.exa_cabecera_examen_id='$pub_id_exa' and
a.exa_asignatura_id=c.exa_asignatura_id and a.asg_estado='A'";
$mat_tmp=$miconexion->consulta($query_mat);
$row_mat=mysql_fetch_array($mat_tmp);
$data_asignatura=$row_mat["asg_nombre"];
$id_asig_libro=$row_mat["exa_asignatura_id"];
140
if (isset($_POST["Salir"])) header('Location: inicial_docente.php');
//PUBLICACION DEL EXAMEN
if (isset($_POST["Publicar"]))
{
//OBTENGO DATOS DEL EXAMEN PARA EL ENVIO DE EMAIL O VALIDAR
LA PUBLICACION
$row_array= array();
$query_exa="SELECT exa_cabecera_examen_id, exa_semestre_id,
exa_cab_cantidad_item, exa_asignatura_id, exa_cab_fecha, exa_cab_tipo FROM
exa_cabecera_examen WHERE exa_cabecera_examen_id='$pub_id_exa' and
exa_cab_estado='A' and exa_cab_tipo='C'";
$dt_email= $miconexion->consulta($query_exa);
$row_email=mysql_fetch_array($dt_email);
$exa_semestre_id=$row_email['exa_semestre_id'];
$exa_asignatura_id=$row_email['exa_asignatura_id'];
$exa_tot_preguntas=$row_email['exa_cab_cantidad_item'];
$fecha=$row_email['exa_cab_fecha'];
//VERIFICO SI TIENE PREGUNTAS EL EXAMEN
//Verifica si tiene preguntas antes de publicar el Examen
if ($max_pre>=$exa_tot_preguntas)
{
//OBTENGO INFORMACION DEL PROFESOR
$rowidprof=array();
$query ="SELECT exa_profesor_id,nombres, apellidos FROM
exa_profesor WHERE pro_identificacion='$ci'";
$res= $miconexion->consulta($query);
$rowidprof=mysql_fetch_array($res);
$idpro=$rowidprof['exa_profesor_id'];
//OBTENGO EL SEMESTRE
$query_email_sem="SELECT sem_semestre FROM exa_semestre
WHERE exa_semestre_id='$exa_semestre_id' and sem_estado='A'";
$res_to_sem = $miconexion->consulta($query_email_sem);
$row_tmp_sem=mysql_fetch_array($res_to_sem);
//PUBLICA ELEXAMEN ACTUALIZANDO EL CAMPO
EXA_PUBLICADO
141
$query_publica="UPDATE exa_cabecera_examen SET
exa_publicado='P' WHERE exa_cabecera_examen_id=".$pub_id_exa;
$miconexion->guardar($query_publica);
//SUGERENCIA DE LIBROS
$libros="";
if(isset($_POST["bib_libro_id"]))
{
$libro=array();
$libro=$_POST["bib_libro_id"];
$longitud=count($libro);
for($i=0;$i<$longitud;$i++)
{
$querylib="SELECT docu_titulo,docu_autor FROM
bib_documentos WHERE bib_documentos_id='$libro[$i]'";
$result = $miconexion->consulta($querylib);
$row_tmp_lib=mysql_fetch_array($result);
$data_libro_email=$row_tmp_lib['docu_titulo'];//nombre de libro
$data_autor_email=$row_tmp_lib['docu_autor'];//autor
del libro
$libros.='<font size="2px" color="#0000CC"> Libro:
</font>'.$data_libro_email.'<font size="2px" color="#0000CC"> Autor:
</font>'.$data_autor_email.'<br/>';
}
}
//Obtiene Datos necesarios de los Alumnos para el envio de email
PERSONALIZADO
$query_email_alum="SELECT EXA_ALUMNO.nombres as nom,
EXA_ALUMNO.apellidos ape, EXA_ALUMNO.alu_email,
EXA_ASIG_ALUMNO.exa_asignatura_id,
EXA_ASIG_ALUMNO.exa_semestre_id
FROM EXA_SEMESTRE INNER JOIN ((EXA_ASIGNATURA INNER JOIN
(EXA_ALUMNO INNER JOIN EXA_ASIG_ALUMNO ON
(EXA_ALUMNO.exa_alumno_id=EXA_ASIG_ALUMNO.exa_alumno_id) AND
(EXA_ALUMNO.exa_alumno_id=EXA_ASIG_ALUMNO.exa_alumno_id)) ON
(EXA_ASIGNATURA.exa_asignatura_id=EXA_ASIG_ALUMNO.exa_asignatura_i
d) AND
(EXA_ASIGNATURA.exa_asignatura_id=EXA_ASIG_ALUMNO.exa_asignatura_i
d)) INNER JOIN EXA_ASIG_SEMESTRE ON
EXA_ASIGNATURA.exa_asignatura_id=EXA_ASIG_SEMESTRE.exa_asignatura_
id) ON
142
(EXA_SEMESTRE.exa_semestre_id=EXA_ASIG_SEMESTRE.exa_semestre_id)
AND
(EXA_SEMESTRE.exa_semestre_id=EXA_ASIG_ALUMNO.exa_semestre_id)
AND
(EXA_SEMESTRE.exa_semestre_id=EXA_ASIG_ALUMNO.exa_semestre_id)
WHERE (((EXA_ASIG_ALUMNO.exa_asignatura_id)='$exa_asignatura_id') AND
((EXA_ASIG_ALUMNO.exa_semestre_id)='$exa_semestre_id'))";
$res_to_alum = $miconexion->consulta($query_email_alum);
//$data_asignatura=$row_tmp_asig['asg_nombre'];
$data_semestre=$row_tmp_sem['sem_semestre'];
$data_profesor=$rowidprof['nombres'].' '.$rowidprof['apellidos'];
//Proceso de envio de email personalizado
while($row_tmp_alum=mysql_fetch_array($res_to_alum))
{
$data_alumno_nom=$row_tmp_alum['nom']."
".$row_tmp_alum['ape'];
$data_alumno_email=$row_tmp_alum['alu_email'];
envia_email($data_asignatura,$data_semestre,$data_profesor,$fecha,$data_al
umno_nom,$data_alumno_email,$libros);
}//Fin de while email
header('Location: edicion_examen.php');
}
}//fin del else*/
}//Fin de Proceso de Publicacion de Examen
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<jdoc:include type="head" />
<link rel="stylesheet" href="../css/template.css" type="text/css" />
<script type="text/javascript" src="js/funciones.js"> </script>
<script type="text/javascript" src="../../../js/prototype.js"> </script>
<script type="text/javascript"
src="../../Biblioteca_Virtual/calendario/calendar.js"></script>
<script type="text/javascript" src="../../Biblioteca_Virtual/calendario/lang/calendar-
es.js"></script>
<script type="text/javascript" src="../../Biblioteca_Virtual/calendario/calendar-
setup.js"></script>
143
<link rel="stylesheet" type="text/css" media="all"
href="../../Biblioteca_Virtual/calendario/skins/aqua/theme.css" title="Tiger" />
<style type="text/css">
<!--
.style1 {
color: #FF0000;
font-weight: bold;
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
}
.style2 {font-weight: bold; font-family: Arial, Helvetica, sans-serif; color: #FF0000;}
.Estilo1 {
font-family: Tahoma, Helvetica, Arial, sans-serif;
font-weight: bold;
font-size: 11px;
}
-->
</style>
<script language="javascript">
function InicioV()
{
Calendar.setup({
firstDay : 0,
daFormat : "%Y-%m-%d",
inputField : "date", // id ofthe input field
ifFormat : "%d/%m/%Y", // format of the input field
showsTime : false, // will display a time selector
button : "f_trigger_b",// trigger for the calendar (button ID)
singleClick : true, // double-click mode
align : "Bl", // alignment (defaults to "Bl")
step : 1 // show all years in drop-down boxes (instead of every
other year as default)
});
}
</script>
</head>
<body>
<div class="center" align="center">
<div id="top">
<div id="tabarea">
<table cellpadding="0" cellspacing="0" class="pill"
align="center">
<tr>
144
<td class="pill_m">
<div id="pillmenu">
<ul id="mainlevel-nav">
<li><a class="mainlevel-nav"
href="../../Examen/Docente/crea_examen.php"><b>Crear Examen</b> </a></li>
<li><a class="mainlevel-nav"
href="../../Examen/Docente/edicion_examen.php"><b>Editar Examen</b></a></li>
<li><a class="mainlevel-nav"
href="../../Examen/Docente/califica_examen.php"><b>Calificar
Examen</b></a></li>
<li><a class="mainlevel-nav"
href="../../Examen/Docente/grafico_notas.php"><b>Estadístico</b></a></li>
</ul>
</div>
</td>
</tr>
</table>
</div>
</div>
<div id="wrapper">
<div style="width:80%; height:85%">
<form id="form1" name="publica_exa" method="post" action="pub_examen.php"
>
<table width="100%" border="0" cellpadding="4" style="border:1px dashed
#33427D;-moz-border-radius: 4px 4px 4px 4px;">
<tr>
<td colspan="5"><div align="center"><h3> Publicación de
Examenes </h3></div>
</p> </td>
</tr>
<tr>
<td width="169"> </td>
<td colspan="2" align="center" style="border:1px solid #000000"><div
align="center" class="Estilo1">Examen con Id <?php echo $_GET["p_exa_id"]; ?>
sera publicado </div></td>
<td width="113"> </td>
<td width="37"> </td>
</tr>
<tr>
<td colspan="5"><div style="background-color: #fdfdfd;border:1px solid
#ff8800;width:99%;padding:2px" align="center">
<h2>
145
<div align="center"><span class="style1" a><font size="2"> Antes
de publicar el Examen, recuerde que puede sugerir documentos de
consulta...</font></span></div>
</div></td>
</tr>
<tr>
<td> </td>
<td colspan="2"><div align="center"><span class="Estilo1"><strong>Seleccione
uno o más Libros </strong></span></div></td>
<td><label>
</label></td>
<td> </td>
</tr>
<tr>
<td> </td>
<td colspan="2" rowspan="2"><div align="ceneter">
<label>
<?php
//Creamos la sentencia SQL y la ejecutamos para obtener los
libros en base a la asignatura.
$sSQL="SELECT d.bib_documentos_id, d.docu_tema,
d.docu_autor FROM bib_documentos d, bib_libro_asignatura l WHERE
l.exa_asignatura_id='$id_asig_libro' AND
l.bib_documentos_id=d.bib_documentos_id";
$result=$miconexion->consulta($sSQL);
echo '<label for="tipo"><font size="2" >Listado de libros a
seleccionar :</font></label><br>';
echo '<select name="bib_libro_id[]" multiple="multiple"
style="width:70%" size="8%" id="bib_documentos_id"
onmouseover="ehandler(event,menuitem1);" onmouseout="closesubnav(event);">';
//Mostramos los registros en forma de menú
desplegable
while ($row=mysql_fetch_array($result))
{
echo '<option
value='.$row["bib_documentos_id"].' >'.$row["docu_tema"].'</option>';
}
mysql_free_result($result);
?>
</label>
</div></td>
146
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td width="211"> </td>
<td width="227"> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td colspan="5" align="right" style="border:1px solid #003;
background:#D7BC28 url(../image/examenfoto.jpg) no-repeat left;-moz-border-
radius: 4px 4px 4px 4px;" ><span style="border:1px inset #2E5BA7">
<input type="submit" name="Publicar" id="Publicar" value="Publicar"
style="width:100px" />
<input name="Salir" type="submit" id="Salir" value="Salir"
style="width:100px"/>
<input type="hidden" name="pub_examen_id" value="<?php echo
$_GET["p_exa_id"]; ?>" />
</span></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
</table>
</form>
</div>
</div>
<div id="footer" >
<div id="footer_l">
<div id="footer_r">
<p style="float:left; padding:2px 18px;">
[Examenes Virtuales]
</p>
147
</div>
</div>
</div>
</div>
</body>
</html>
Fuente:Archivo ”pub_examen.php”
Elaboración: José Luis Garzón A.
148
Cuadro No 11.
Código para enviar email personalizado a los alumnos, informando del examen
publicado
<?php // ============= FUNCION PARA EL ENVIO DE CORREO
============= //
function
envia_email($asignatura,$semestre,$profesor,$fecha,$alumno,$email_alumno,$libro)
{
list( $year,$month,$day) = explode( '-', $fecha );
$fechas=$day.'-'.$month.'-'.$year;
# Indicamos la direccin (nombre) del servidor
$server_name = "elearning_cisc.ug.edu.ec";
# Indicamos el nombre de la persona que va a recibir el mensaje
$person_name = "Carrera Ingenieria de Sistemas Computacionales.";
# Indicamos la direccin de correo de esa persona
//$person_email
="[email protected],[email protected],[email protected],josega
[email protected],[email protected],[email protected]";
# Las tres lneas que vienen a continuacin son necesarias
# para que la cabecera del mensaje est en formato HTML
$header = "MIME-Version: 1.0\n";
$header .= "Content-Type: text/html; charset=iso-8859-1\n";
$header .= "From: elearning_cisc@$server_name\nReply-To:
elearning_cisc@$server_name\nX-Mailer: PHP/";
# Esto que viene es el mensaje. (Fjate en los tags HTML)
$mensaje1 = "<font face='verdana' size='2'>Estimado(a) $alumno <br><br>
Estudiante del Curso $semestre<br>
$person_name<br><br>
Se le ha asignado el examen de <font size='2px'
color='#0000CC'>$asignatura</font> el cual estará disponible para que lo puedan
realizar el dia <font size='2px' color='#0000CC'>$fechas</font> (dd-mm-
aaaa).<br/><br/>";
$mensaje2 = "Los libros que puede consultar en la <font size='2px'
color='#0000CC'> Biblioteca Virtual del Sistema e-learning </font> son:<br/> $libro
<br/><br/>";
$mensaje3 = "La direccion la tiene en la parte inferior de este
mensaje.<br><br>
Por favor no responder a este correo. <br><br>
Atentamente.<br><br>
$profesor.<br>
149
PROFESOR DE LA CARRERA<br>
==============================<br><br>
<font size='2px' color='#0000CC'>Generado por Sistema e-learning</font><br>
<a
href='http://www.elearnign_cisc.ug.edu.ec'>http://www.elearnign_cisc.ug.edu.ec</a>
<br>
<a
href='mailto:[email protected]'>[email protected]</a></font>
<br><br>";
if ($libro!='')
{
$mensaje =$mensaje1.$mensaje2.$mensaje3;
}else
{
$mensaje = $mensaje1.$mensaje3;
}
# Funcin de envo del mensaje
mail("$email_alumno","EXAMEN VIRTUAL","$mensaje","$header");
# Ten en cuenta que:
# $person_email es la direccin de correo de la persona que recibe el mensaje
# "Recomendacin" es el Asunto del mensaje
# $mensaje es todo el texto del mensaje
# $header es la cabecera. En ella va incluida la direccin de remite.
# Para comprobar que el script ha funcionado, podemos poner lo siguiente:
//echo "Mensaje enviado.";
//dominio: graduacion.cisc.ug.edu.ec
} //Fin de la funcion
function email_alerta($asignatura,$semestre,$profesor,$fecha,$alerta,$mail_destino)
{
list( $year,$month,$day) = explode( '-', $fecha );
$fechas=$day.'-'.$month.'-'.$year;
# Indicamos la direccin (nombre) del servidor
$server_name = "elearning_cisc.ug.edu.ec";
# Indicamos el nombre de la persona que va a recibir el mensaje
$person_name = "Carrera Ingenieria de Sistemas Computacionales.";
# Indicamos la direccin de correo de esa persona
//$person_email
="[email protected],[email protected],[email protected],josega
150
# Las tres lneas que vienen a continuacin son necesarias
# para que la cabecera del mensaje est en formato HTML
$header = "MIME-Version: 1.0\n";
$header .= "Content-Type: text/html; charset=iso-8859-1\n";
$header .= "From: elearning_cisc@$server_name\nReply-To:
elearning_cisc@$server_name\nX-Mailer: PHP/";
# Esto que viene es el mensaje. (Fjate en los tags HTML)
$mensaje = "<font face='verdana' size='2'>Sistema de Control Académico
<br><br>
$person_name<br><br>
Alerta Académica: $alerta<br>
Profesor: <font size='2px' color='#0000CC'>$profesor</font>Asignatura
:<font size='2px' color='#0000CC'>$asignatura.</font><br/><br/>
Por favor no responder a este correo. <br><br>
Atentamente.<br><br>
Sistema e-learning<br>
PROFESOR DE LA CARRERA<br>
==============================<br><br>
<font size='2px' color='#0000CC'>Generado por Sistema e-learning</font><br>
<a
href='http://www.elearning_cisc.ug.edu.ec'>http://www.elearnign_cisc.ug.edu.ec</a>
<br>
<a
href='mailto:[email protected]'>[email protected]</a></font>
<br><br>";
# Funcion de envo del mensaje
mail("$mail_destino","ALERTA DE SYLABUS","$mensaje","$header");
}
?>
Fuente:Archivo ”funciones.php”
Elaboración: José Luis Garzón A.
151
Cuadro No 12.
Código para mostrar listado de examenes creados
<?php
session_start ();
if (!isset($_SESSION["usNick"]))
header('Location: login/login.php');
header("Cache-Control: no-store, no-cache, must-revalidate");
require ("../../../lib/clase_MySql.inc.php");
$miconexion = new DB_mysql ;
$miconexion->conectar();
$ci=$_SESSION["usNick"];
//echo $ci;
if (isset($_GET["exa"]))
{
$exa=$_GET["exa"];
$est=$_GET["est"];
$query="SELECT exa_cab_estado FROM exa_cabecera_examen WHERE
exa_cabecera_examen_id=".$exa;
$data=$miconexion->consulta($query);
$rowmax1=mysql_fetch_array($data);
if ($est=='A')
{
$query="UPDATE exa_cabecera_examen SET exa_cab_estado ='D'
WHERE exa_cabecera_examen_id = ".$exa;
$data=$miconexion->consulta($query);
}
if ($est=='D')
{
$query="UPDATE exa_cabecera_examen SET exa_cab_estado = 'A'
WHERE exa_cabecera_examen_id = ".$exa;
$data=$miconexion->consulta($query);
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<jdoc:include type="head" />
152
<link rel="stylesheet" href="../css/template.css" type="text/css" />
<script type="text/javascript" src="../Docente/js/funciones.js"> </script>
<script type="text/javascript" src="../../../js/prototype.js"> </script>
<style type="text/css">
<!--
.style47 {font-family: Arial, Helvetica, sans-serif;
font-weight: bold;
font-size: 10px;
}
.style52 {font-family: Arial, Helvetica, sans-serif; font-weight: bold; font-size: 12px;
}
.style53 {color: #FFFFFF}
.style60 {font-size: 12px; color: #1b78b7; font-family: Arial, Helvetica, sans-serif;}
.style64 {
font-size: 12px;
font-weight: bold;
}
-->
</style>
</head>
<body>
<div class="center" align="center">
<div id="top">
<div id="tabarea">
<table cellpadding="0" cellspacing="0" class="pill"
align="center">
<tr>
<td class="pill_m">
<div id="pillmenu">
<ul id="mainlevel-nav">
<li><a class="mainlevel-nav"
href="../../Examen/Docente/crea_examen.php"><b>Crear Examen</b> </a></li>
<li><a class="mainlevel-nav"
href="../../Examen/Docente/edicion_examen.php"><b>Editar Examen</b></a></li>
<li><a class="mainlevel-nav"
href="../../Examen/Docente/califica_examen.php"><b>Calificar
Examen</b></a></li>
<li><a class="mainlevel-nav"
href="../../Examen/Docente/grafico_notas.php"><b>Estadístico</b></a></li>
</ul>
</div>
</td>
153
</tr>
</table>
</div>
</div>
<div id="wrapper" align="center" style="height:100%; overflow:auto;padding-
top:0px;" >
<div style="background:#EBEBEB
url(/elearning_cisc/contenido/wikikey/images/left_shadow.jpg) repeat-y left;
width:90%; height:600px">
<div
style="background:url(/elearning_cisc/contenido/wikikey/images/right_shadow.jpg)
repeat-y right; height:600px">
<br />
<div style="padding-left:13px">
<div style='float:left; margin-right:8px;'><img
src="/elearning_cisc/images/Default Document-41.ico" alt="examen" /></div><div
style=' text-align:left'><h3>Listado de Examenes Creados</h3></div><div
class='small' style='margin-bottom:7px; color:#000'><b>Seleccione el Examen para
Editar</b></div>
</div>
<br />
<table width="97%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<table width="100%" height="27" border="0" cellpadding="0"
cellspacing="0">
<tr bgcolor="#6D95C5">
<td width="50" bgcolor="#6D95C5"><div align="center"
class="style52">
<div align="center" class="style53">
<div align="center">Abrir</div>
</div>
</div></td>
<td width="45" bgcolor="#6D95C5"><div align="center"
class="style52">
<div align="center" class="style53">
<div align="center">Parcial</div>
</div>
</div></td>
<td width="210" bgcolor="#6D95C5"><div align="center"
class="style52">
154
<div align="center" class="style53">
<div align="center">Asignatura</div>
</div>
</div></td>
<td width="140" bgcolor="#6D95C5"><div align="center"
class="style52">
<div align="center" class="style53">
<div align="center">Curso</div>
</div>
</div></td>
<td width="150" bgcolor="#6D95C5"><div align="center"
class="style52">
<div align="center" class="style53">
<div align="center">Fecha</div>
</div>
</div></td>
<td width="120" bgcolor="#6D95C5"><div align="center"
class="style52">
<div align="center" class="style53">
<div align="center">Tipo</div>
</div>
</div></td>
<td width="50" bgcolor="#6D95C5"><div align="center"
class="style52">
<div align="center" class="style53">
<div align="center">Publicado</div>
</div>
</div></td>
<td width="50"
bgcolor="#6D95C5"><div align="center" class="style52">
<div align="center" class="style53">
<div align="center">Activar</div>
</div>
</div></td>
<td width="50"
bgcolor="#6D95C5"><div align="center" class="style52">
<div align="center" class="style53">
<div align="center">Borrar</div>
</div>
</div></td>
</tr> </table>
<?php
155
//$query = "SELECT DISTINCT e.exa_cabecera_examen_id, e.exa_semestre_id,
x.asg_nombre, e.exa_cab_fecha, e.exa_cab_tipo, e.exa_cab_estado FROM
exa_cabecera_examen e, exa_profesor p, exa_asignatura x, exa_asig_profesor s
WHERE p.pro_identificacion='$ci' and e.exa_profesor_id=p.exa_profesor_id and
s.exa_asignatura_id=x.exa_asignatura_id and s.exa_profesor_id=p.exa_profesor_id
ORDER BY 1";
$query = "SELECT DISTINCT e.exa_cabecera_examen_id, e.exa_parcial,
t.sem_semestre, x.asg_nombre, e.exa_cab_fecha, e.exa_cab_tipo, e.exa_cab_estado,
e.exa_publicado FROM exa_cabecera_examen e, exa_semestre t, exa_profesor p,
exa_asignatura x, exa_asig_profesor s WHERE p.pro_identificacion='$ci' and
e.exa_profesor_id=p.exa_profesor_id and s.exa_profesor_id=p.exa_profesor_id and
e.exa_asignatura_id=x.exa_asignatura_id and e.exa_semestre_id=t.exa_semestre_id
ORDER BY 1";
//$query = "SELECT
exa_cabecera_examen_id, exa_semestre_id, exa_cab_cantidad_item, exa_cab_estado,
exa_cab_tiempo, exa_cab_tipo FROM exa_cabecera_examen";
$res= $miconexion->consulta($query);
while($rowmax=mysql_fetch_array($res))
{
echo '<table>';
echo '<tr>';
echo '<td width="54"
bgcolor="#DDEEFF"><div align="center" class="style61"><a
href="editarExamen.php?examen_id='.$rowmax["exa_cabecera_examen_id"].'"><im
g src="/elearning_cisc/images/Open Folder-108.ico" name="imgElimina" alt="Del"
width="16" height="16" style="cursor:pointer" title="Ingresa al examen" >
</a></div></td>';
echo '<td width="47"
bgcolor="#DDEEFF"><div align="center"
class="style61">'.$rowmax["exa_parcial"].'</div></td>';
echo '<td width="220"
bgcolor="#DDEEFF"><div align="center" class="style61"><a
href="editarExamen.php?examen_id='.$rowmax["exa_cabecera_examen_id"].'"><b>'
.$rowmax["asg_nombre"].'</b></div></td>';
echo '<td width="148" bgcolor="#DDEEFF"><div
align="center" class="style61">'.$rowmax["sem_semestre"].'</div></td>';
echo '<td width="159" bgcolor="#DDEEFF"><div
align="center" class="style61">'.$rowmax["exa_cab_fecha"].'</div></td>';
if ($rowmax["exa_cab_tipo"]=='C')
156
{$est='Calificable';
}else{$est='Simulación';}
echo '<td width="127" bgcolor="#DDEEFF"><div
align="center" class="style61">'.$est.'</div></td>';
$pub='';
if
($rowmax["exa_publicado"]=='P')
{
$pub='Si';
}
else
{
$pub='No';
}
echo '<td width="52"
bgcolor="#DDEEFF"><div align="center" class="style61">'.$pub.'</div></td>';
if
(($rowmax["exa_cab_estado"])=='A')
{ echo " <td width='52'
bgcolor='#DDEEFF'><div align='center' class='style61'><a
href='edicion_examen.php?est=".$rowmax["exa_cab_estado"]."&exa=".$rowmax["e
xa_cabecera_examen_id"]."'><img src='../image/llaves.gif' name='imgActiva'
alt='Examen' width='16' height='16' style='cursor:pointer' title='Examen Activado'
></div></td>";
}
if
(($rowmax["exa_cab_estado"])=='D')
{
echo " <td width='52'
bgcolor='#DDEEFF'><div align='center' class='style61'><a
href='edicion_examen.php?est=".$rowmax["exa_cab_estado"]."&exa=".$rowmax["e
xa_cabecera_examen_id"]."'><img src='../image/SECUR02B.ico' name='imgActiva'
alt='Examen' width='16' height='16' style='cursor:pointer' title='Examen Bloqueado'
></div></td>";
}
if
($rowmax["exa_publicado"]=='P')
{
echo '<td width="52"
bgcolor="#DDEEFF"><div align="center" class="style61"><img
src="../image/SECUR02B.ico" name="noElimina" alt="noDel" width="16"
height="16" style="cursor:pointer" title="No puede eliminar" ></a></div></td>';
}
157
else
{
echo '<td width="52"
bgcolor="#DDEEFF"><div align="center" class="style61"><a
href="elimina_examen.php?exaid='.$rowmax["exa_cabecera_examen_id"].'"><img
src="../image/ico3.png" name="imgElimina" alt="Del" width="16" height="16"
style="cursor:pointer" title="Elimina el examen" ></a></div></td>';
}
}
echo '</tr>';
echo '</table>';
?>
<p> </p>
<table width="61%" height="53" border="0"
align="center">
<tr>
<td>
<div align="center">
<table width="434" height="25" border="0" align="center">
<tr>
<td width="304"><div align="center" class="style55"><a
href="crea_examen.php"><strong><img src="../../../images/button_ok.gif"
alt="Examen de Simulación" width="12" height="12" /> Crear
Examen</strong></a></div></td>
<td width="322" height="43"><div
align="center" class="style55"><a href="inicial_docente.php"><strong> <img
src="../../../images/cancel_12x12.png" alt="Salir" width="12" height="12"
/> Salir</strong></a> </div></td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<p> </p></td>
</tr>
</table>
158
</div></div></div></div></body>
</html>
<script type="text/javascript">
function preguntar()
{
(confirm('Desea eliminar el examen ?'))
}
//}
</script>
Fuente:Archivo ”edicion_examenes.php”
Elaboración: José Luis Garzón A.
159
Cuadro No 13.
Código para modificar la cabecera del examen antes de ser publicado
<?php
//require ("../funciones_php/funciones.php");
// iniciamos session
session_start ();
if (!isset($_SESSION["usNick"]))
header('Location: login/login.php');
//========================================================
//esto es para decirle al cache de procesos del navegador que se desactive
header("Cache-Control: no-store, no-cache, must-revalidate");
//========================================================
require ("../../../lib/clase_MySql.inc.php");
$miconexion = new DB_mysql ;
$miconexion->conectar();
if (isset($_POST["modifica_cabecera"])) $exa_ID=$_POST["examen_id"];
if (isset($_POST["Publicar"])) $exa_ID=$_POST["examen_id"];
if (isset($_GET["examen_id"])) $exa_ID=$_GET["examen_id"];
if (isset($_GET["vexaid"])) $exa_ID=$_GET["vexaid"];
if (isset($_POST["exacur_parcial"])) $parcial=$_POST["exacur_parcial"];
//Obtener los datos cargados
$query_c="SELECT
exa_cabecera_examen_id,exa_parcial,exa_ciclo,exa_semestre_id,exa_profesor_id,
exa_asignatura_id,exa_cab_cantidad_item,exa_cab_puntaje_total,exa_cab_estado,exa
_cab_tiempo,exa_cab_tipo,exa_cab_fecha FROM exa_cabecera_examen WHERE
exa_cabecera_examen_id='$exa_ID'";
$res_c= $miconexion->consulta($query_c);
$row_c=mysql_fetch_array($res_c);
$parcial=$row_c["exa_parcial"];
$tipo=$row_c["exa_cab_tipo"];
$cant_preg=$row_c["exa_cab_cantidad_item"];
$tiempo_exa=$row_c["exa_cab_tiempo"];
$puntaje_exa=$row_c["exa_cab_puntaje_total"];
$ciclo=$row_c["exa_ciclo"];
//=======================================================
//Carga de Todas las preguntas del examen para ser modificadas si lo desea.
$row=array();
160
$query="SELECT exa_cabecera_examen_id,exa_semestre_id,exa_profesor_id,
exa_asignatura_id,exa_cab_cantidad_item,exa_cab_puntaje_total,exa_cab_estado,exa
_cab_tiempo,exa_cab_tipo,exa_cab_fecha, exa_publicado FROM
exa_cabecera_examen WHERE exa_cabecera_examen_id='$exa_ID'";
$res= $miconexion->consulta($query);
$row=mysql_fetch_array($res);
$pub=$row["exa_publicado"];
list( $year,$month,$day ) = explode( '-', $row["exa_cab_fecha"] );
$fecha_up=$year.'-'.$month.'-'.$day;
//========================================================
//Obtiene el # de Cedula del profesor para obtener el ID
//========================================================
$ci=$_SESSION["usNick"];
$rowidprof=array();
$query_p ="SELECT exa_profesor_id FROM exa_profesor WHERE
pro_identificacion='$ci'";
$res_p= $miconexion->consulta($query_p);
$rowidprof=mysql_fetch_array($res_p);
mysql_free_result($res_p);
$idpro=$rowidprof['exa_profesor_id'];
//========================================================
$dato=0;
$mody=0;
//========================================================
//Detectando que proceso se debe efectuar
//========================================================
//========================================================
//Proceso de Modificacion de Cabecera de Examen
if (isset($_POST["modifica_cabecera"]))
{
if ($pub=='N')
{
$tiempo_exa=$_POST["exacur_tiempo_up"];
$curso=$_POST["exa_semestre_id_up"];
$asignatura=$_POST["exa_asignatura_id_up"];
$puntaje=$_POST["puntaje_up"];
$cant_preg=$_POST["exacur_cantidad_item_up"];
$tipo=$_POST["exacur_tipo_up"];
$exa_ID=$_POST["examen_id"];
$fecha_up2=$_POST["date_up"];
$exacur_parcial=$_POST["exacur_parcial"];
161
$exacur_ciclo=$_POST["exacur_ciclo"];
if ( $_POST["exacur_tiempo_up"]!="0" &&
$_POST["exacur_cantidad_item_up"]!="0" && $_POST["exacur_tipo_up"]!="0"
&& $_POST["puntaje_up"]>"0" && $_POST["exa_semestre_id_up"]!="0" &&
$_POST["exa_asignatura_id_up"]!="0" && $_POST["exacur_parcial"]!=0 &&
$_POST["exacur_ciclo"]!=0)
{
$q_sem_asg="SELECT count(*) totreg FROM
exa_asig_profesor WHERE exa_profesor_id='$idpro' AND
exa_asignatura_id='$asignatura' AND exa_semestre_id='$curso'";
$res_sa = $miconexion->consulta($q_sem_asg);
$row_c=mysql_fetch_array($res_sa);
$dato=$row_c["totreg"];
if ($dato==1)
{
$query_up="UPDATE exa_cabecera_examen SET
exa_parcial='$exacur_parcial', exa_ciclo='$exacur_ciclo', exa_semestre_id='$curso',
exa_asignatura_id='$asignatura', exa_cab_puntaje_total='$puntaje',
exa_cab_cantidad_item='$cant_preg', exa_cab_tipo='$tipo',
exa_cab_fecha='$fecha_up2', exa_cab_tiempo=$tiempo_exa, exa_cab_estado='A'
WHERE exa_cabecera_examen_id='$exa_ID'";
//Actualizo el registro
$miconexion->guardar($query_up);
$mody=1;
//header("Location: edicion_examen.php");
}
else
{
$dato=3;
}
}
}
else
{
$exa_ID=$_POST["examen_id"];
$mody=3;
}
$row=array();
162
$query="SELECT
exa_cabecera_examen_id,exa_parcial,exa_semestre_id,exa_profesor_id,
exa_asignatura_id,exa_cab_cantidad_item,exa_cab_puntaje_total,exa_cab_estado,exa
_cab_tiempo,exa_cab_tipo,exa_cab_fecha FROM exa_cabecera_examen WHERE
exa_cabecera_examen_id='$exa_ID'";
$res= $miconexion->consulta($query);
$row=mysql_fetch_array($res);
$fecha_up=$row["exa_cab_fecha"];
$parcial=$row["exa_parcial"];
}//Fin proceso de modificacion
//========================================================
//Proceso de Eliminación
if (isset($_POST["elimina_exa"]))
{
$conn = mysql_connect("localhost","root","root");
mysql_select_db("elearning",$conn);
$exa_ID=$_POST["examen_id"];
if ($exa_ID!='0')
{
//Elimino las alternativas de las preguntas de este examen
$q_alt="SELECT a.exa_alternativa_id as alterID FROM exa_alternativa a,
exa_pregunta p WHERE p.exa_pregunta_id=a.exa_pregunta_id and
p.exa_cabecera_examen_id='$exa_ID'";
$tmp1_row = array();
$op= mysql_query($q_alt, $conn);;
while($tmp1_row=mysql_fetch_array($op))
{
$query_del_alt="DELETE FROM exa_alternativa WHERE
exa_alternativa_id=".$tmp1_row["alterID"];
mysql_query($query_del_alt, $conn);
}
//Elimina las preguntas de este examen
$query_del_pre="DELETE FROM exa_pregunta WHERE
exa_cabecera_examen_id='$exa_ID'";
mysql_query($query_del_pre, $conn);
//Elimna la relacion de Examen y Asignatura
$query_del_rela="DELETE FROM exa_examen_asig WHERE
exa_cabecera_examen_id='$exa_ID'";
mysql_query($query_del_rela, $conn);
//Elimino el examen
$query_del_exa="DELETE FROM exa_cabecera_examen WHERE
exa_cabecera_examen_id='$exa_ID'";
163
mysql_query($query_del_exa, $conn);
header("Location: edicion_examen.php");
echo "Examen Eliminado";
}
}
//========================================================
//PUBLICACION DEL EXAMEN
if (isset($_POST["Publicar"]))
{
//Verifica si existen preguntas en el examen antes de publicarlo
$query_cant_pre="SELECT exa_cab_cantidad_item FROM
exa_cabecera_examen WHERE
exa_cabecera_examen_id=".$row["exa_cabecera_examen_id"];
$cant_pre=$miconexion->consulta($query_cant_pre);
$cant_tmp_pre=mysql_fetch_array($cant_pre);
$c_pre=$cant_tmp_pre["exa_cab_cantidad_item"];
$query_tot_pre="SELECT count(*) as cantpre FROM exa_pregunta WHERE
exa_cabecera_examen_id=".$row["exa_cabecera_examen_id"];
$maxpre=$miconexion->consulta($query_tot_pre);
$num_tmp_pre=mysql_fetch_array($maxpre);
$max_pre=$num_tmp_pre["cantpre"];
if (($max_pre>=$c_pre) && ($pub=='N'))
{
$cuenta=0;
$suma_pto_grp=0;
$q_preg_grupo="SELECT exa_pregunta_id, preg_puntos FROM
exa_pregunta WHERE exa_cabecera_examen_id=".$exa_ID." ORDER BY 1 ASC
LIMIT ".'0'.",".$c_pre;
$tmp1_pre_grp=$miconexion->consulta($q_preg_grupo);
while ($row_preg_grp=mysql_fetch_array($tmp1_pre_grp))
{
$suma_pto_grp=$suma_pto_grp+$row_preg_grp["preg_puntos"];
}
if ($suma_pto_grp==$puntaje_exa){$caso=1;}
if ($suma_pto_grp<$puntaje_exa) {$caso=2;}
if ($suma_pto_grp>$puntaje_exa) {$caso=2;}
164
if ($caso==1) { header('Location:
pub_examen.php?p_exa_id='.$row["exa_cabecera_examen_id"].'&maxpre='.$max_p
re); }
if ($caso==2) { header('Location:
contenido_examen.php?v_examen_id='.$row["exa_cabecera_examen_id"]); }
}
}//Fin de Proceso de Publicacion de Examen
//========================================================
//Proceso de Cancelación
//========================================================
if (isset($_POST["Cancelar"])) header("Location: edicion_examen.php");
//========================================================
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<jdoc:include type="head" />
<link rel="stylesheet" href="../css/template.css" type="text/css" />
<script type="text/javascript" src="js/funciones.js"> </script>
<script type="text/javascript" src="../../../js/prototype.js"> </script>
<script type="text/javascript"
src="../../Biblioteca_Virtual/calendario/calendar.js"></script>
<script type="text/javascript" src="../../Biblioteca_Virtual/calendario/lang/calendar-
es.js"></script>
<script type="text/javascript" src="../../Biblioteca_Virtual/calendario/calendar-
setup.js"></script>
<link rel="stylesheet" type="text/css" media="all"
href="../../Biblioteca_Virtual/calendario/skins/aqua/theme.css" title="Tiger" />
<style type="text/css">
<!--
.style1 {
color: #FF0000;
font-weight: bold;
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
}
165
.style99{
color:#006600;
font-size:12px;
border:1px solid #006600;
padding:2px 5px 2px 25px;
background:#CAE9C7 url(/elearning_cisc/images/button_go2.gif) no-repeat
left center;
-moz-border-radius: 4px 0px 0px 4px;
display:none;
}
-->
</style>
<script language="javascript">
function InicioV()
{
Calendar.setup({
inputField : "date_up", // id of the input field
ifFormat : "%Y-%m-%d", // format of the input field
showsTime : false, // will display a time selector
button : "f_trigger_b", // trigger for the calendar (button ID)
singleClick : true, // double-click mode
align : "Bl", // alignment (defaults to "Bl")
step : 1 // show all years in drop-down boxes (instead of every
other year as default)
});
}
</script>
<style type="text/css">
<!--
.style2 {font-weight: bold; font-size: 12px;}
-->
</style>
</head>
<body>
<div class="center" align="center">
<div id="top">
<div id="tabarea">
<table cellpadding="0" cellspacing="0" class="pill"
align="center">
<tr>
<td class="pill_m">
<div id="pillmenu">
166
<ul id="mainlevel-nav">
<li><a class="mainlevel-nav"
href="../../Examen/Docente/crea_examen.php"><b>Crear Examen</b> </a></li>
<li><a class="mainlevel-nav"
href="../../Examen/Docente/edicion_examen.php"><b>Editar Examen</b></a></li>
<li><a class="mainlevel-nav"
href="../../Examen/Docente/califica_examen.php"><b>Calificar
Examen</b></a></li>
<li><a class="mainlevel-nav"
href="../../Examen/Docente/grafico_notas.php"><b>Estadístico</b></a></li>
</ul>
</div>
</td>
</tr>
</table>
</div>
</div>
<div id="wrapper" align="center" style="height:100%; overflow:auto; padding-
top:0px;" >
<div style="background:#EBEBEB
url(/elearning_cisc/contenido/wikikey/images/left_shadow.jpg) repeat-y left;
width:90%; height:600px;">
<div
style="background:url(/elearning_cisc/contenido/wikikey/images/right_shadow.jpg)
repeat-y right; height:600px;">
<br />
<div style="padding-left:20px">
<div style='float:left; margin-right:8px;'><img
src="/elearning_cisc/images/mundo2.ico" alt="nuevo" /></div><div style=' text-
align:left'><h3>Modificar Cabecera del Examen.</h3></div><div class='small'
style='margin-bottom:7px; color:#000'><b>Revise si es necesario cambiar datos de la
cabecera.</b></div>
</div>
<br />
<div align="center" style="border:1px solid #666; background:#FFF
url(/elearning_cisc/images/bg_panel_top_right.gif) repeat-y right; -moz-border-
radius: 4px 4px 4px 4px; font-weight: bold; width:95%;">
<form id="form1" name="cabecera_exa" method="post"
action="editarExamen.php">
<table width="93%" border="0" cellpadding="2" cellspacing="2" >
<tr><td colspan="3" ><?php
167
if (isset($_POST["modifica_cabecera"])) { if ($mody==3){ echo '<div
style="background-color: #fdfdfd;border:1px solid #ff8800;width:98%;padding:5px"
><h2><span class="style1"><font size="2">No puede ser modificado, el Examen ya
esta Publicado... </font></span></h2></div>'; } if ($mody==1) { echo '<div
style="background-color: #fdfdfd;border:1px solid
#ff8800;width:98%;padding:5px"><h2><span class="style1"><font size="2">  
  Los datos fueron modificados correctamente... </font></span></h2></div>';}
} if (isset($_POST["Publicar"])) { if ($max_pre<$c_pre) echo '<div
style="background-color: #fdfdfd;border:1px solid #ff8800;width:98%;padding:5px"
><h2><span class="style1"><font size="2"> Para publicar el Examen, debe ingresar
mas de '.$c_pre.' preguntas... <a
href="contenido_examen.php?v_examen_id='.$_POST["examen_id"].'"><font
size="2">Click para agregar</font></a></font></span> </div>'; else if ($pub=='P')
echo '<div style="background-color: #fdfdfd;border:1px solid
#ff8800;width:98%;padding:5px" ><h2><span class="style1"><font size="2"> El
Examen ya estaba Publicado...</font></a></font></span> </div>';} if ($dato==3){
echo '<div style="background-color: #fdfdfd;border:1px solid
#ff8800;width:98%;padding:5px" ><h2><span class="style1"><font size="2">El
curso o la asignatura no corresponden, corrija e intente
nuevamente...</font></span></h2></div>';}?></td></tr>
<tr>
<td width="258"><h2>Código del Examen</h2></td>
<td><b><?php echo $exa_ID; ?></b></td>
<td ><div style="style1" align="left">
<?php
$query1="SELECT count(*) as cant FROM exa_pregunta
WHERE exa_cabecera_examen_id='$exa_ID'";
$nregistros= $miconexion->unDato($query1);
echo '<div align="center">';
if ($nregistros>0)
{
$pagina='edita_preguntas.php';
}
else
{
$pagina='contenido_examen.php';
}
if ($pub=='N')
{ ?>
<div align="center" style="background:#CAE9C7
url(/elearning_cisc/images/button_go.gif) no-repeat right center; border:1px solid
#006600;-moz-border-radius: 0px 4px 4px 0px; padding:1px ">
168
Ir a: <a href="<?php echo $pagina.'?exaid='.$exa_ID; ?>"><span
style="color:#006600; font-weight:bold">Modificar o Eliminar
Preguntas</span></a>
</div>
<?php } ?>
</div></td>
</tr>
<tr>
</tr>
<tr>
<td><h2>Selecione el parcial</h2></td>
<td width="263" align="right"> <div align="left" style="width:auto">
<?php if (isset($parcial)) muestra_parcial($parcial); else
muestra_parcial($parcial=0); ?>
</div></td>
<td align="left"> <div id="c_parcial" class="style99">Seleccione el parcial
respectivo.</div></td>
</tr>
<tr>
<td><h2>Selecione el Ciclo</h2></td>
<td width="263" align="right"> <div align="left" style="width:auto">
<?php if (isset($ciclo)) muestra_ciclo($ciclo); else muestra_ciclo($ciclo=0); ?>
</div></td>
<td align="left"> <div id="c_parcial" class="style99">Seleccione el Ciclo
respectivo.</div></td>
</tr>
<tr>
<td><h2>Seleccione tiempo de duración</h2></td>
<td><div align="left">
<?php if (isset($tiempo_exa)) muestra_tiempo($tiempo_exa); else
muestra_tiempo($tiempo_exa='0');
/*echo '<select name="exacur_tiempo_up" id="exacur_tiempo_up"
style="width:100%">';
$dato_tiempo=$row["exa_cab_tiempo"];
listat($dato_tiempo);
echo '</select>';*/ ?>
</div></td>
<td align="left"> <div id="c_tiempo" class="style99">Seleccione el tiempo
adecuado.</div></td>
</tr>
<tr>
<td><h2>N° de Preguntas </h2></td>
<td><div align="left">
169
<?php if (isset($cant_preg)) muestra_pre($cant_preg); else
muestra_pre($cant_preg='0');
/*echo '<select name="exacur_cantidad_item_up"
id="exacur_cantidad_item_up" style="width:100%">';
$dato_npre=$row["exa_cab_cantidad_item"];
listapre($dato_npre);</select>*/
?>
</div> </td>
<td align="left"> <div id="c_cant" class="style99">Indique número
de preguntas.</div></td>
</tr>
<tr>
<td><h2>Tipo de Examen</h2></td>
<td><div align="left">
<?php if (isset($tipo)) muestra_tipoexa($tipo); else muestra_tipoexa($tipo='0');
?>
</div></td>
<td align="left"><div id="ver2" align="left" style="display:inline"></div>
<div id="c_tipo" class="style99">Seleccione el tipo de examen.</div></td>
</tr>
<tr>
<td><h2>Fecha del Examen</h2></td>
<td valign="middle"><div style="float:left; width:80%"><?php echo '<input
name="date_up" id="date_up" type="text" value="'.$fecha_up.'" maxlength="10"
style="width:100%"
onmouseover="$("c_fecha").style.display="inline""
onmouseout="$("c_fecha").style.display="none""/>';
?></div>
<img src="../../../images/img.gif" alt="Ver Calendario.." id='f_trigger_b'
style="cursor: pointer; border: 1px solid red; float:right; margin-right:10px;"
title="Click para Activar el Calendario" onclick="InicioV()"
onmouseover="this.style.background='red';" onmouseout="this.style.background=''"
/>
</td>
<td align="left"> <div id="c_fecha" align="left" class="style99">Fecha en
que se ejecutará el examen.</div></td>
</tr>
<tr>
<td><h2>Ingrese el puntaje total </h2></td>
<td><div align="left">
170
<input name="puntaje_up" type="text" id="puntaje_up" value=" <?php echo
$row['exa_cab_puntaje_total']; ?>" size="5" maxlength="2"
onmouseover="$('c_puntaje').style.display='inline'"
onmouseout="$('c_puntaje').style.display='none'" onkeypress=" return
validar_numero(event)" onclick="if(this.value==0)this.value='';"
onblur="if(this.value=='') this.value=0;"/>
</div></td>
<td align="left"><div id="c_puntaje" align="left" class="style99">Rango: mayor a
0 y menor o igual a 10</div></td>
</tr>
<tr>
<td><h2>Seleccione Curso</h2></td>
<td><div align="left">
<?php
//CARGA EL CURSO ANTERIORMENTE GUARDADO SEGUN
EL EXAMEN
$querysem='SELECT exa_semestre_id, sem_semestre FROM
exa_semestre WHERE exa_semestre_id='.$row["exa_semestre_id"];
$sem= $miconexion->consulta($querysem);
$tmp_rowsem = array();
$tmp_rowsem = mysql_fetch_array($sem);
$data= "SELECT DISTINCT s.exa_semestre_id as idsemestre,
s.sem_semestre as semestre FROM exa_semestre s, exa_profesor p,
exa_asig_profesor x WHERE p.exa_profesor_id = x.exa_profesor_id and
x.exa_semestre_id = s.exa_semestre_id and p.exa_profesor_id ='$idpro' ORDER BY
1";
$result= $miconexion->consulta($data);
$id_curso_cargado= $tmp_rowsem["exa_semestre_id"];
echo '<select name="exa_semestre_id_up" style="width:60%"
onmouseover="$("c_curso").style.display="inline""
onmouseout="$("c_curso").style.display="none"">';
while($rowsem=mysql_fetch_array($result))
{
if ($rowsem["idsemestre"]==$id_curso_cargado)
{
echo '<option value="'.$rowsem["idsemestre"].'"
selected="selected">'.$rowsem["semestre"].' </option>';
}else
{
echo '<option
value="'.$rowsem["idsemestre"].'">'.$rowsem["semestre"].' </option>';
}
}
171
echo '</select>';
mysql_free_result($result); ?>
</div></td>
<td align="left"> <div id="c_curso" align="left" class="style99">El curso
esta en relación a la asignatura.</div></td>
</tr>
<tr>
<td><h2 id="ver1">Seleccione Asignatura </h2></td>
<td><div align="left">
<?php
$querysem='SELECT exa_asignatura_id, asg_nombre FROM exa_asignatura
WHERE exa_asignatura_id='.$row["exa_asignatura_id"];
$asg= $miconexion->consulta($querysem);
$tmp_rowasg = array();
$tmp_rowasg = mysql_fetch_array($asg);
$id_asig_cargado = $tmp_rowasg["exa_asignatura_id"];
$data="SELECT DISTINCT a.exa_asignatura_id idasig, a.asg_nombre nasig FROM
exa_asignatura a, exa_asig_profesor s, exa_semestre t
WHERE s.exa_profesor_id='$idpro' AND s.exa_semestre_id=t.exa_semestre_id
AND s.exa_asignatura_id=a.exa_asignatura_id";
$result= $miconexion->consulta($data);
echo '<select name="exa_asignatura_id_up" style="width:100%"
onmouseover="$("c_asig").style.display="block""
onmouseout="$("c_asig").style.display="none"" >';
while($rowasg=mysql_fetch_array($result))
{
if ($rowasg["idasig"]==$id_asig_cargado)
{
echo '<option value="'.$rowasg["idasig"].'"
selected="selected">'.$rowasg["nasig"].' </option>';
}else
{
echo '<option value="'.$rowasg["idasig"].'">'.$rowasg["nasig"].'
</option>';
}
}
echo '</select>';
mysql_free_result($result); ?>
</div></td>
172
<td align="left"><div id="c_asig" align="left" class="style99">Asignatura debe
estar en relación con el curso.</div></td>
</tr>
<tr>
<td colspan="3" valign="middle" align="right">
<div style="float:left">
<input type="submit" name="modifica_cabecera" id="modifica_cabecera"
value="Guardar Cambios" style="width:150px"/>
<input type="submit" name="Publicar" id="Publicar" value="Publicar" />
</div>
<div style="float:right">
<input name="elimina_exa" type="submit" id="elimina_exa" value="Eliminar"
/>
<input name="Cancelar" type="submit" id="Cancelar" value="Salir" />
</div>
<input type="hidden" name="examen_id" value="<?php echo $exa_ID; ?>" />
</td>
</tr>
</table>
</form>
</div>
</div></div></div></div></body>
</html>
<?php
function muestra_tiempo($tiempo_exa)
{
echo '<select name="exacur_tiempo_up" style="width:100%"
onmouseover="$("c_tiempo").style.display="inline""
onmouseout="$("c_tiempo").style.display="none"">';
$sel1='';
$sel2='';
$sel3='';
$sel4='';
$sel5='';
$sel6='';
$sel7='';
if ($tiempo_exa!='0')
{
if ($tiempo_exa=='600000') $sel1='selected="selected"';
if ($tiempo_exa=='900000') $sel2='selected="selected"';
if ($tiempo_exa=='1200000') $sel3='selected="selected"';
173
if ($tiempo_exa=='1800000') $sel4='selected="selected"';
if ($tiempo_exa=='2700000') $sel5='selected="selected"';
if ($tiempo_exa=='3600000') $sel6='selected="selected"';
if ($tiempo_exa=='7200000') $sel7='selected="selected"';
echo '<option value="0">Seleccione</option>';
echo '<option value="600000" '.$sel1.'>10 min</option>';
echo '<option value="900000" '.$sel2.'>15 min</option>';
echo '<option value="1200000" '.$sel3.'>20 min</option>';
echo '<option value="1800000" '.$sel4.'>30 min</option>';
echo '<option value="2700000" '.$sel5.'>45 min</option>';
echo '<option value="3600000" '.$sel6.'>1 hora</option>';
echo '<option value="7200000" '.$sel7.'>2 hora</option>';
}
else
{
echo '<option value="0" selected="selected">Seleccione</option>';
echo '<option value="600000">10 min</option>';
echo '<option value="900000">15 min</option>';
echo '<option value="1200000">20 min</option>';
echo '<option value="1800000">30 min</option>';
echo '<option value="2700000">45 min</option>';
echo '<option value="3600000">1 hora</option>';
echo '<option value="7200000">2 hora</option>';
}
echo '</select>';
}
function muestra_pre($cant_preg)
{
echo '<select name="exacur_cantidad_item_up" id="select" style="width:100%"
onmouseover="$("c_cant").style.display="inline""
onmouseout="$("c_cant").style.display="none"">';
$sel1='';
$sel2='';
$sel3='';
$sel4='';
$sel5='';
$sel6='';
$sel7='';
$sel8='';
$sel9='';
$sel0='';
if ($cant_preg!='0')
174
{
if ($cant_preg=='1') $sel1='selected="selected"';
if ($cant_preg=='2') $sel2='selected="selected"';
if ($cant_preg=='3') $sel3='selected="selected"';
if ($cant_preg=='4') $sel4='selected="selected"';
if ($cant_preg=='5') $sel5='selected="selected"';
if ($cant_preg=='6') $sel6='selected="selected"';
if ($cant_preg=='7') $sel7='selected="selected"';
if ($cant_preg=='8') $sel8='selected="selected"';
if ($cant_preg=='9') $sel9='selected="selected"';
if ($cant_preg=='10') $sel0='selected="selected"';
echo '<option value="0">Seleccione</option>';
echo '<option value="1" '.$sel1.'>1</option>';
echo '<option value="2" '.$sel2.'>2</option>';
echo '<option value="3" '.$sel3.'>3</option>';
echo '<option value="4" '.$sel4.'>4</option>';
echo '<option value="5" '.$sel5.'>5</option>';
echo '<option value="6" '.$sel6.'>6</option>';
echo '<option value="7" '.$sel7.'>7</option>';
echo '<option value="8" '.$sel8.'>8</option>';
echo '<option value="9" '.$sel9.'>9</option>';
echo '<option value="10" '.$sel10.'>10</option>';
}
else
{
echo '<option value="0" selected="selected">Seleccione</option>';
echo '<option value="1">1</option>';
echo '<option value="2">2</option>';
echo '<option value="3">3</option>';
echo '<option value="4">4</option>';
echo '<option value="5">5</option>';
echo '<option value="6">6</option>';
echo '<option value="7">7</option>';
echo '<option value="8">8</option>';
echo '<option value="9">9</option>';
echo '<option value="10">10</option>';
}
echo '</select>';
}
function muestra_parcial($parcial=0)
{
175
echo '<select name="exacur_parcial" style="width:99%"
onmouseover="$("c_parcial").style.display="inline""
onmouseout="$("c_parcial").style.display="none"" >';
if ($parcial==0)
{
echo '<option value="0" selected="selected">Seleccione</option>';
echo '<option value="1">Primer Parcial</option>';
echo '<option value="2">Segundo Parcial</option>';
echo '<option value="3">Mejoramiento</option>';
}
if ($parcial==1)
{
echo '<option value="0">Seleccione</option>';
echo '<option value="1" selected="selected">Primer Parcial</option>';
echo '<option value="2">Segundo Parcial</option>';
echo '<option value="3">Mejoramiento</option>';
}
if ($parcial==2)
{
echo '<option value="0">Seleccione</option>';
echo '<option value="1">Primer Parcial</option>';
echo '<option value="2" selected="selected">Segundo Parcial</option>';
echo '<option value="3">Mejoramiento</option>';
}
if ($parcial==3)
{
echo '<option value="0">Seleccione</option>';
echo '<option value="1" selected="selected">Primer Parcial</option>';
echo '<option value="2">Segundo Parcial</option>';
echo '<option value="3" selected="selected">Mejoramiento</option>';
}
echo '</select>';
}
function muestra_tipoexa($tipo)
{
echo '<select name="exacur_tipo_up" style="width:100%"
onmouseover="$("c_tipo").style.display="inline""
onmouseout="$("c_tipo").style.display="none"">';
if ($tipo=='0')
{
echo '<option value="0" selected="selected">Seleccione</option>';
echo '<option value="C">Calificado</option>';
echo '<option value="S">Simulacion</option>';
}
176
if ($tipo=='C')
{ echo '<option value="0">Seleccione</option>';
echo '<option value="C" selected="selected">Calificado</option>';
echo '<option value="S">Simulacion</option>';
}
if ($tipo=='S')
{ echo '<option value="0">Seleccione</option>';
echo '<option value="C">Calificado</option>';
echo '<option value="S" selected="selected">Simulacion</option>';
}
echo '</select>';
}
function muestra_ciclo($ciclo)
{ echo '<select name="exacur_ciclo" style="width:99%"
onmouseover="$("c_ciclo").style.display="inline""
onmouseout="$("c_ciclo").style.display="none"" >';
if ($ciclo==0)
{ echo '<option value="0" selected="selected">Seleccione</option>';
echo '<option value="1">Ciclo 1</option>';
echo '<option value="2">Ciclo 2</option>';
}
if ($ciclo==1)
{
echo '<option value="0">Seleccione</option>';
echo '<option value="1" selected="selected">Ciclo 1</option>';
echo '<option value="2">Ciclo 2</option>';
}
if ($ciclo==2)
{
echo '<option value="0">Seleccione</option>';
echo '<option value="1">Ciclo 1</option>';
echo '<option value="2" selected="selected">Ciclo 2</option>';
}
echo '</select>';
}
?>
Fuente:Archivo ”editarExamen.php”
Elaboración: José Luis Garzón A.
177
Cuadro No 14.
Código para guardar cambios a las preguntas del examen antes de ser publicado
<?php
// iniciamos session
session_start ();
if (!isset($_SESSION["usNick"]))
header('Location: login/login.php');
//esto es para decirle al cache de procesos del navegador que se desactive
header("Cache-Control: no-store, no-cache, must-revalidate");
require ("../../../lib/clase_MySql.inc.php");
$miconexion = new DB_mysql ;
$miconexion->conectar();
//========================================================
//Obtiene el # de Cedula del profesor para obtener el ID
//========================================================
$ci=$_SESSION["usNick"];
$rowidprof=array();
$query_p ="SELECT exa_profesor_id FROM exa_profesor WHERE
pro_identificacion='$ci'";
$res_p= $miconexion->consulta($query_p);
$rowidprof=mysql_fetch_array($res_p);
mysql_free_result($res_p);
$idpro=$rowidprof['exa_profesor_id'];
//========================================================
if (isset($_GET['exaid'])) $exa_ID=$_GET['exaid'];
if (isset($_GET['pagineo_IDE'])) $exa_ID=$_GET['pagineo_IDE'];
if (isset($_POST['examen_id'])) $exa_ID=$_POST['examen_id'];
$bd=1;
$query_asg ="SELECT c.exa_asignatura_id, a.asg_nombre FROM
exa_cabecera_examen c, exa_asignatura a WHERE
c.exa_cabecera_examen_id='$exa_ID' AND
c.exa_asignatura_id=a.exa_asignatura_id";
$res_asg= $miconexion->consulta($query_asg);
$rowasg=mysql_fetch_array($res_asg);
$asg=$rowasg["asg_nombre"];
//Proceso de Salir
//============================================================
=====
if (isset($_POST["Salir"])) header("Location: edicion_examen.php");
178
//============================================================
=====
//Proceso para agregar mas preguntas
//============================================================
=====
if (isset($_POST["Agregar"])) header("Location:
contenido_examen.php?v_examen_id=".$exa_ID);
//Proceso de Eliminación
//========================================================
if (isset($_POST["Eliminar"]))
{
$exa_ID=$_POST["examen_id"];
$pre_ID=$_POST["id_pre_up"];
$tipo_pre=$_POST["tipopre"];
if ($tipo_pre!='C')
{
$query_del_alt="DELETE FROM exa_alternativa WHERE
exa_alternativa_id='$pre_ID'";
$miconexion->consulta($query_del_alt);
}
$query_del_pre="DELETE FROM exa_pregunta WHERE
exa_pregunta_id='$pre_ID'";
$miconexion->consulta($query_del_pre);
$query1="SELECT count(*) as cant FROM exa_pregunta WHERE
exa_cabecera_examen_id='$exa_ID'";
$res1= $miconexion->consulta($query1);
$rowcant=mysql_fetch_array($res1);
if ($rowcant["cant"]==0)
{
header('Location: contenido_examen.php?v_examen_id='.$exa_ID);
}
else
{
header('Location: edita_preguntas.php?exaid='.$exa_ID);
}
}
if (isset($_POST["Guardar"]))
179
{
$pre_ID=$_POST['id_pre_up'];
$tmp_pto=$_POST["puntaje"];
$preg=$_POST["pregunta"];
$bd=0;
if (isset($_POST["cantop"])){ $nop=$_POST['cantop']; }
if (isset($_POST["op1"])) { $op_sel=$_POST['op1']; } else { $op_sel=null; }
//Verifico si el texto de alguna alternativa está vacia.
if ($tipo_pre=$_POST["tipopre"]=='O')
{
if (isset($_POST["cantop"]))
{
for ($v=1;$v<=$nop;$v++)
{
$op_tmpv=$_POST['op_alt'.$v];
if ($op_tmpv=="")
{
$bd=1;
}
}
}
}
else
{
if ($tipo_pre=$_POST["tipopre"]!='I')
{
$op_sel='ok';
}
}
//Verifico si no hay inconvenietes antes de actualizar las opciones y pregunta.
if ($tmp_pto>0 && $preg!="" && $op_sel!=null && $bd!=1)
{
$q_pre_up="UPDATE exa_pregunta SET preg_tema='$preg',
preg_puntos='$tmp_pto' WHERE exa_pregunta_id='$pre_ID'";
$miconexion->guardar($q_pre_up);
if ($tipo_pre=$_POST["tipopre"]!='C')
{
$q_preg="SELECT exa_alternativa_id FROM exa_alternativa
WHERE exa_pregunta_id='$pre_ID' ORDER BY 1";
$opcion= $miconexion->consulta($q_preg);
for ($i=1;$i<=$nop;$i++)
{
$tmp1_row=mysql_fetch_array($opcion);
180
$id_alt=$tmp1_row['exa_alternativa_id'];
if (isset($_POST['op_alt'.$i]))
{
$tmp_op=$_POST['op_alt'.$i];
}
if ($id_alt==$op_sel)
{
if ($tipo_pre=$_POST["tipopre"]=='I')
{
$q_alt_up="UPDATE exa_alternativa
SET alt_flag='Y' WHERE exa_alternativa_id='$id_alt'";
}
else
{
$q_alt_up="UPDATE exa_alternativa
SET alt_alternativa='$tmp_op', alt_flag='Y' WHERE exa_alternativa_id='$id_alt'";
}
}
else
{
if ($tipo_pre=$_POST["tipopre"]=='I')
{
$q_alt_up="UPDATE exa_alternativa
SET alt_flag='N' WHERE exa_alternativa_id='$id_alt'";
}
else
{
$q_alt_up="UPDATE exa_alternativa
SET alt_alternativa='$tmp_op', alt_flag='N' WHERE exa_alternativa_id='$id_alt'";
}
}
$miconexion->guardar($q_alt_up);
}//for
}//if
}//if
else
{
$bd=3;
}
} //fin de guardar
?>
181
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<jdoc:include type="head" />
<link rel="stylesheet" href="../css/template.css" type="text/css" />
<script type="text/javascript" src="js/funciones.js"> </script>
<script type="text/javascript" src="../../../js/prototype.js"> </script>
<script type="text/javascript"
src="../../Biblioteca_Virtual/calendario/calendar.js"></script>
<script type="text/javascript" src="../../Biblioteca_Virtual/calendario/lang/calendar-
es.js"></script>
<script type="text/javascript" src="../../Biblioteca_Virtual/calendario/calendar-
setup.js"></script>
<link rel="stylesheet" type="text/css" media="all"
href="../../Biblioteca_Virtual/calendario/skins/aqua/theme.css" title="Tiger" />
<script language="javascript">
function InicioV()
{
Calendar.setup({
inputField : "date", // id ofthe input field
ifFormat : "%d/%m/%Y", // format of the input field
showsTime : false, // will display a time selector
button : "f_trigger_b", // trigger for the calendar (button ID)
singleClick : true, // double-click mode
align : "Bl", // alignment (defaults to "Bl")
step : 1 // show all years in drop-down boxes (instead of every
other year as default)
});
}
</script>
<style type="text/css">
<!--
.style1 {
color: #1b78b7;
font-weight: bold;
font-size: 14px;
}
.style2 {
color: #FF0000;
font-weight: bold;
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
}
182
.style3 {
color: #FF0000;
font-weight: bold;
font-family: Arial, Helvetica, sans-serif;
font-size: 16px;
}
.verde{
color:#060;
font-size:16px;
font-weight:bold;
}
.negro{
color:#000;
font-size:16px;
font-weight:bold;
}
-->
-->
</style>
</head>
<body>
<div class="center" align="center">
<div id="top">
<div id="tabarea">
<table cellpadding="0" cellspacing="0" class="pill"
align="center">
<tr>
<td class="pill_m">
<div id="pillmenu">
<ul id="mainlevel-nav">
<li><a class="mainlevel-nav"
href="../../Examen/Docente/crea_examen.php"><b>Crear Examen</b> </a></li>
<li><a class="mainlevel-nav"
href="../../Examen/Docente/edicion_examen.php"><b>Editar Examen</b></a></li>
<li><a class="mainlevel-nav"
href="../../Examen/Docente/califica_examen.php"><b>Calificar
Examen</b></a></li>
<li><a class="mainlevel-nav"
href="../../Examen/Docente/grafico_notas.php"><b>Estadístico</b></a></li>
</ul>
</div>
</td>
183
</tr>
</table>
</div>
</div>
<div id="wrapper" align="center" style="height:100%; overflow:auto; padding-
top:0px;" >
<div style="background:#EBEBEB
url(/elearning_cisc/contenido/wikikey/images/left_shadow.jpg) repeat-y left;
width:90%;">
<div
style="background:url(/elearning_cisc/contenido/wikikey/images/right_shadow.jpg)
repeat-y right;">
<br />
<div style="padding-left:20px">
<div style='float:left; margin-right:8px;'><img
src="/elearning_cisc/images/mundo2.ico" alt="nuevo" /></div><div style=' text-
align:left'><h3>Modificación o eliminación de
preguntas</h3></div><div class='small' style='margin-bottom:7px;
color:#000'><b>Preguntas del Examen<?php echo ' Código:
'.$exa_ID.' // Asignatura: '.$asg; ?>
</b></div>
</div>
<br />
<div style="width:96%">
<form id="form1" name="cabecera_exa" method="post"
action="edita_preguntas.php">
<table width="100%" border="0" cellpadding="0" cellspacing="0" >
<tr>
<td colspan="6" align="center">
<input type="hidden" name="examen_id" value="<?php echo $exa_ID; ?>"/>
<?php if ($bd==3){ ?>
<div style="background-color: #fdfdfd;border: 2px solid rgb(240, 201, 31);
width:100%;background:rgb(255, 238, 153); font-weight:normal;" align="center" >
<div style="background:url(/elearning_cisc/images/35px-
Nuvola_apps_important_yellow.svg.png) no-repeat left center; padding-left:35px;
height:40px; line-height:40px; font-size:13px; width:655px; color:#000" >Debe
ingresar y seleccionar los datos correctamente para poder modificar la pregunta,
<b>intente nuevamente..!!</b>
</div>
184
</div><br />
<?php } ?>
</td>
</tr>
<?php
$query1="SELECT count(*) as cant FROM exa_pregunta WHERE
exa_cabecera_examen_id='$exa_ID'";
$nregistros= $miconexion->unDato($query1);
//Calculo del pagineo
if($nregistros<=0)
{
echo "<div align='center'>";
echo "<font face='verdana' size='-2'>No se encontraron resultados</font>";
echo "</div>";
}
else
{
//////////calculo de elementos necesarios para paginacion
//tamaño de la pagina
$tamPag=1;
if(isset($_GET["tampag"]))
{
$tamPag=$_GET["tampag"];
}
//pagina actual si no esta definida y limites
if(!isset($_GET["pagina"]))
{
$pagina=1;
$inicio=1;
$final=$tamPag;
}
else
{
$pagina = $_GET["pagina"];
}
//calculo del limite inferior
$limitInf=($pagina-1)*$tamPag;
//calculo del numero de paginas
$numPags=ceil($nregistros/$tamPag);
if(!isset($pagina))
185
{
$pagina=1;
$inicio=1;
$final=$tamPag;
}
else
{
$seccionActual=intval(($pagina-1)/$tamPag);
$inicio=($seccionActual*$tamPag)+1;
if($pagina<$numPags)
{
$final=$inicio+$tamPag-1;
}
else
{
$final=$numPags;
}
if ($final>$numPags)
{
$final=$numPags;
}
}
}
$numPags=ceil($nregistros/$tamPag);
$q_preg="SELECT exa_pregunta_id, preg_tipo, preg_tema, preg_puntos,
preg_estado FROM exa_pregunta WHERE exa_cabecera_examen_id='$exa_ID'
ORDER BY 1 ASC LIMIT ".$limitInf.",".'1';
$pre= $miconexion->consulta($q_preg);
$tmp1_pre=mysql_fetch_array($pre);
$num_op=1;
echo '<tr>';
echo '<td colspan="6" class="negro" >';
echo '<span class="verde">Pregunta N°
</span><u>'.$pagina.'</u> <span class="verde">-
Puntaje </span> <input name="puntaje" type="text"
id="puntaje" value="'.$tmp1_pre["preg_puntos"].'" size="5" maxlength="4"
style="text-align:center;"/> pts.';
echo '<div align="left" style="padding-top:5px">';
186
echo '<textarea class="txtpreg" name="pregunta" cols="60" rows="3" id="pregunta"
style="width:100%">'.$tmp1_pre["preg_tema"].'</textarea>';
echo '<input type="hidden" name="id_pre_up"
value="'.$tmp1_pre["exa_pregunta_id"].'" />';
echo '<input type="hidden" name="tipopre" value="'.$tmp1_pre["preg_tipo"].'" />';
if ($tmp1_pre["preg_tipo"]=='O')
{
//Muestra alternativas
$q_preg='SELECT exa_alternativa_id, exa_pregunta_id, alt_alternativa,
alt_flag, alt_estado FROM exa_alternativa WHERE
exa_pregunta_id='.$tmp1_pre["exa_pregunta_id"].' ORDER BY 1';
echo '<div class="verde" style="padding-top:10px">Marque la alternativa
correcta..</div>';
$tmp1_row = array();
$op= $miconexion->consulta($q_preg);
$txtcont=0;
while($tmp1_row=mysql_fetch_array($op))
{
$txtcont=$txtcont+1;
echo '<div style="padding-top:10px"><h3 style="font-size:16px"> Respuesta
'.$txtcont.'<input name="op'.$num_op.'" type="radio" align="left"
value="'.$tmp1_row["exa_alternativa_id"].'"/></h3></div>';
echo '<textarea class="txtpreg" name="op_alt'.$txtcont.'" cols="60" rows="2"
id="pregunta" style="width:100%">'.$tmp1_row["alt_alternativa"].'</textarea>';
}
echo '<input type="hidden" name="cantop" value="'.$txtcont.'" />';
}
if ($tmp1_pre["preg_tipo"]=='I')
{
//Muestra alternativas
$q_preg='SELECT exa_alternativa_id, exa_pregunta_id, alt_alternativa,
alt_flag, alt_estado FROM exa_alternativa WHERE
exa_pregunta_id='.$tmp1_pre["exa_pregunta_id"].' ORDER BY 1';
echo '<br>';
echo '<h2><span class="style2"><font size="2"> Modifique la alternativa
deseada y seleccione la que designará como correcta...</font></span></h2><b/>';
echo '<br>';
$tmp1_row = array();
$op= $miconexion->consulta($q_preg);
$Imgcont=0;
while($tmp1_row=mysql_fetch_array($op))
{
187
$Imgcont=$Imgcont+1;
echo '<label><input name="op'.$num_op.'" type="radio" align="left"
value="'.$tmp1_row["exa_alternativa_id"].'"/> Opción'.$Imgcont.'</label><br>';
$ruta='../FileExamen/'.$tmp1_row["alt_alternativa"];
echo '<img src="'.$ruta.'" name="img"'.$Imgcont.' alt="opcion"
width="40" height="40" style="cursor:pointer" title="Opcion" >';
echo '<br> ';
echo '<br> ';
}
echo '<input type="hidden" name="cantop" value="'.$Imgcont.'" />';
}
echo '<tr>';
echo '<td colspan="6" align="center">';
echo '<div style="padding:20px" >';
echo '<font face="verdana" size="2"><b>Total de
Preguntas:</b></font>'.$nregistros;
echo '<br>';
if(!isset($pagina))
{
$pagina=0;
}
if($pagina!=0)
{
if($pagina>1)
{
echo "<a class='p' href='".$_SERVER["PHP_SELF"]."?pagina=".($pagina-
1)."&tampag=".$tamPag."&pagineo_IDE=".$exa_ID."'>";
echo "<font face='verdana' size='2'><b>Anterior</b></font>";
echo "</a> ";
}
if(isset($inicio))
{
for($i=1;$i<=$final;$i++)
//for($i=$inicio;$i<=$final;$i++)
{
if($i==$pagina)
{
echo "<font face='verdana' size='2'><b>".$i."</b> </font>";
}
else
{
188
echo "<a class='p'
href='".$_SERVER["PHP_SELF"]."?pagina=".$i."&tampag=".$tamPag."&pagineo_I
DE=".$exa_ID."'>";
echo "<font face='verdana' size='2'>".$i."</font></a> ";
}
}
}
if(isset($numPags))
{
if($pagina<$numPags)
{
// for($i=$inicio;$i<$nregistros;$i++)
for($i=$inicio;$i<$nregistros;$i++)
{
echo "<a class='p' href='".$_SERVER["PHP_SELF"]."?pagina=".($i +
1)."&tampag=".$tamPag."&pagineo_IDE=".$exa_ID."'>"; echo "<font
face='verdana' size='2'>".($i + 1)." </font></a>";
}
echo "<a class='p'
href='".$_SERVER["PHP_SELF"]."?pagina=".($pagina+1)."&tampag=".$tamPag."&
pagineo_IDE=".$exa_ID."'>";
echo "<font face='verdana' size='2'><b>Siguiente</b></font></a>";
}
}
}
echo '</div>';
echo '</td>';
echo '</tr>';
?>
<tr>
<td height="29" colspan="1"><div align="center">
<label>
<input type="submit" name="Guardar" value="Guardar Cambios"
style="width:130px"/>
</label>
</div> </td>
<td height="29" colspan="1"><div align="center">
<label>
<input type="submit" name="Agregar" value="Agregar Preguntas"
style="width:150px"/>
</label>
</div> </td>
<td height="29" colspan="1">
189
<div align="center">
<label>
<input type="submit" name="Eliminar" value="Eliminar" />
</label>
</div> </td>
<td height="29" colspan="1"><div align="center">
<label>
<input type="submit" name="Salir" value="Salir" />
</label>
</div> </td>
</tr>
</table>
</form>
<br /> <br />
</div>
</div></div>
</div></div></body>
</html>
Fuente:Archivo ”edita_preguntas.php”
Elaboración: José Luis Garzón A.
190
Cuadro No 15.
Código para eliminar el examen y sus preguntas si no ha sido publicado
<?php
session_start();
if (!isset($_SESSION["usNick"]))
header('Location: login/login.php');
header("Cache-Control: no-store, no-cache, must-revalidate");
require ("../../../lib/clase_MySql.inc.php");
$miconexion = new DB_mysql ;
$miconexion->conectar();
$ci=$_SESSION["usNick"];
$exa_del=$_GET['exaid'];
if (($_GET['exaid'])!=null)
{ $query_elimina="DELETE FROM exa_cabecera_examen WHERE
exa_cabecera_examen_id='$exa_del'";
$query_del_rela="DELETE FROM exa_examen_asig WHERE
exa_cabecera_examen_id='$exa_del'";
//Elimino el registro
$miconexion->consulta($query_elimina);
$miconexion->consulta($query_del_rela);
//Eliminar las preguntas y las alternativas
$q_preg="SELECT exa_pregunta_id,preg_tipo FROM exa_pregunta WHERE
exa_cabecera_examen_id='$exa_del'";
$del_pre=$miconexion->consulta($query_elimina);
while($tmp1_row=mysql_fetch_array($del_pre))
{
if ($tmp1_row['preg_tipo']=='O')
{
$query_del_alt="DELETE FROM exa_alternativa WHERE
exa_pregunta_id=".$tmp1_row['exa_pregunta_id'];
$miconexion->consulta($query_del_alt);
}
$query_del="DELETE FROM exa_pregunta WHERE
exa_pregunta_id=".$tmp1_row['exa_pregunta_id'];
$miconexion->consulta($query_del);
}
header("Location: edicion_examen.php");
}
?>
Fuente:Archivo ”elimina_preguntas.php”
Elaboración: José Luis Garzón A.
191
Cuadro No 16.
Código para mostrar el listado de los examenes calificados y por calificar de los
estudiantes que rindieron el examen
<?php
session_start ();
if (!isset($_SESSION["usNick"]))
header('Location: login/login.php');
header("Cache-Control: no-store, no-cache, must-revalidate");
require ("../../../lib/clase_MySql.inc.php");
$miconexion = new DB_mysql ;
$miconexion->conectar();
$ci=$_SESSION["usNick"];
$rowidprof=array();
$query ="SELECT exa_profesor_id,nombres, apellidos FROM exa_profesor
WHERE pro_identificacion='$ci'";
$res= $miconexion->consulta($query);
$rowidprof=mysql_fetch_array($res);
mysql_free_result($res);
$idpro=$rowidprof['exa_profesor_id'];
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<jdoc:include type="head" />
<link rel="stylesheet" href="../css/template.css" type="text/css" />
<script type="text/javascript" src="../Docente/js/funciones.js"> </script>
<script type="text/javascript" src="../../../js/prototype.js"> </script>
<style type="text/css">
<!--
.style47 {font-family: Arial, Helvetica, sans-serif;font-weight: bold;font-size: 10px;}
.style52 {font-family: Arial, Helvetica, sans-serif; font-weight: bold;font-size: 12px; }
.style55 {font-size: 14px; color: #1b78b7; font-weight: bold;}
.style53 {color: #FFFFFF}
.style60 {font-size: 12px; color: #1b78b7; font-family: Arial, Helvetica, sans-serif;}
.style64 {font-size: 12px;font-weight: bold;}
.Estilo1 {color: #1b78b7}
-->
192
</style>
</head>
<body>
<div class="center" align="center">
<div id="top">
<div id="tabarea">
<table cellpadding="0" cellspacing="0" class="pill"
align="center">
<tr>
<td class="pill_m">
<div id="pillmenu">
<ul id="mainlevel-nav">
<li><a class="mainlevel-nav"
href="../../Examen/Docente/crea_examen.php"><b>Crear Examen</b> </a></li>
<li><a class="mainlevel-nav"
href="../../Examen/Docente/edicion_examen.php"><b>Editar Examen</b></a></li>
<li><a class="mainlevel-nav"
href="../../Examen/Docente/califica_examen.php"><b>Calificar
Examen</b></a></li>
<li><a class="mainlevel-nav"
href="../../Examen/Docente/grafico_notas.php"><b>Estadístico</b></a></li>
</ul>
</div>
</td>
</tr>
</table>
</div>
</div>
<div id="wrapper" align="center" style="height:100%; overflow:auto;padding-
top:0px;" >
<div style="background:#EBEBEB
url(/elearning_cisc/contenido/wikikey/images/left_shadow.jpg) repeat-y left;
width:90%; height:600px">
<div
style="background:url(/elearning_cisc/contenido/wikikey/images/right_shadow.jpg)
repeat-y right; height:600px">
<br />
<div style="padding-left:13px">
<div style='float:left;
margin-right:8px;'><img src="/elearning_cisc/images/Default Document-41.ico"
alt="examen" /></div><div style=' text-align:left'><h3>Listado y
193
Calificación de Examenes</h3></div><div class='small' style='margin-
bottom:7px; color:#000'><b>Seleccione sus opciones para la busqueda.</b></div>
</div>
<br />
<table width="97%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="663" valign="top">
<form id="form1" name="califica" method="post" action="califica_examen.php" >
<table width="906" height="215" border="0">
<tr>
<td width="60" height="23"><div align="right" class="style64
Estilo1">Curso : </div></td>
<td width="77"><div align="left"><?php
//CARGA EL CURSO O EL CURSO ANTERIORMENTE GUARDADO SEGUN
EL EXAMEN
$data = "SELECT DISTINCT s.exa_semestre_id as idsemestre,
s.sem_semestre as semestre FROM exa_semestre s, exa_profesor p,
exa_asig_profesor x WHERE p.exa_profesor_id = x.exa_profesor_id and
x.exa_semestre_id = s.exa_semestre_id and p.exa_profesor_id ='$idpro' ORDER BY
1";
$result = $miconexion->consulta($data);
echo '<select name="exa_semestre" style="width:100%">';
echo '<option value="0" selected="selected">Seleccione</option>';
if (isset($_POST["Mostrar"])) $semestre=$_POST["exa_semestre"];
else $semestre="";
muestra_semestre($semestre,$result);
?></div></td>
<td width="74"><div align="right" class="style64 Estilo1"> Asignatura :
</div></td>
<td width="120"><div align="left"><?php
//CARGA asignatura SEGUN EL EXAMEN
$data="SELECT DISTINCT a.exa_asignatura_id idasig, a.asg_nombre nasig FROM
exa_asignatura a, exa_asig_profesor s, exa_semestre t WHERE
s.exa_profesor_id='$idpro' AND s.exa_semestre_id=t.exa_semestre_id AND
s.exa_asignatura_id=a.exa_asignatura_id";
$result= $miconexion->consulta($data);
echo '<select name="exa_asignatura_id" style="width:100%" >';
echo "<option value='0'>Seleccione</option>";
muestra_asignatura($idpro,$asignatura,$result);
?></div></td>
194
<td width="51"><div align="right" class="style64 Estilo1"> Parcial :
</div></td>
<td width="102"><div align="left">
<label>
<select name="parcial" id="parcial">
<option value="0">Seleccione</option>
<option value="1">Primer Parcial</option>
<option value="2">Segundo Parcial</option>
<option value="3">Mejoramiento</option>
</select>
</label>
</div></td>
<td width="44"><div align="right" class="style64
Estilo1"> Ciclo : </div></td>
<td width="103"><div align="left">
<label>
<select name="ciclo" id="parcial2">
<option value="0">Seleccione</option>
<option value="1">Ciclo 1</option>
<option value="2">Ciclo 2</option>
</select>
</label>
</div></td>
<td width="40"><div align="right" class="style64
Estilo1"> Año : </div></td>
<td width="57"><div align="left"><?php
$anio='2009'; //Creamos la sentencia SQL y la
ejecutamos
$today='Seleccione';
$sSQL="Select exa_cab_fecha From exa_cabecera_examen Order By
exa_cab_fecha";
//$result=mysql_query($sSQL);
$result=$miconexion->consulta($sSQL);
echo '<select name="anio" id="fecha">';
//if(!isset($bib_tipo_id)){
echo '<option value='.$today.' selected="selected" >'. $today.'</option>';
//}
//Mostramos los registros en forma de menú desplegable
while ($row=mysql_fetch_array($result))
{
$exa_cab_fecha=$row["exa_cab_fecha"];
list($year,$month,$day) = explode( '-', $exa_cab_fecha );
$fecha=$year;
195
if($fecha!=$anio){
if($fecha!=$today){
echo '<option value='.$fecha.' >'.$fecha.'</option>';
}
$anio=$fecha;
}
}
mysql_free_result($result);
echo '</select>';
?></div></td>
<td width="132"><div align="left"><span
style="border-bottom-color:#0099FF">
<input type="submit" name="Mostrar" value="Mostrar" />
</span></div></td>
</tr>
<tr>
<td height="171" colspan="11">
<table width="100%" height="31" border="0" cellpadding="0"
cellspacing="0">
<tr bgcolor="#6D95C5">
<td width="22" bgcolor="#6D95C5"><div align="center"
class="style52">
<div align="center" class="style53">
<div align="center">Id</div>
</div>
</div></td>
<td width="350" bgcolor="#6D95C5"><div align="center"
class="style52">
<div align="center" class="style53">
<div align="center">Alumno</div>
</div>
</div></td>
<td width="189" bgcolor="#6D95C5"><div align="center"
class="style52">
<div align="center" class="style53">
<div align="center">Asignatura</div>
</div>
</div></td>
196
<td width="80" bgcolor="#6D95C5"><div align="center"
class="style52">
<div align="center" class="style53">
<div align="center">Fecha</div>
</div>
</div></td>
<td width="80" bgcolor="#6D95C5"><div align="center"
class="style52">
<div align="center" class="style53">
<div align="center">Parcial</div>
</div>
</div></td>
<td width="80" bgcolor="#6D95C5"><div align="center"
class="style52">
<div align="center" class="style53">
<div align="center">Nota Parcial</div>
</div>
</div></td>
<td width="80" bgcolor="#6D95C5"><div align="center"
class="style52">
<div align="center" class="style53">
<div align="center">Notal Final</div>
</div>
</div></td>
<td width="100" bgcolor="#6D95C5"><div align="center"
class="style52">
<div align="center" class="style53">
<div align="center">Estado</div>
</div>
</div></td>
</tr> </table>
<?php
if (isset($_POST["Mostrar"]))
{
$semestre=$_POST["exa_semestre"];
$parcial=$_POST["parcial"];
$ciclo=$_POST["ciclo"];
$exa_asignatura_id
=$_POST["exa_asignatura_id"];
$q_exa_alu="SELECT
a.exa_alumno_id, a.apellidos, a.nombres, m.asg_nombre, c.exa_cabecera_examen_id,
e.exa_cab_fecha, e.exa_parcial, SUM( c.cal_puntos ) tparcial FROM exa_calificacion
c, exa_alumno a, exa_asignatura m, exa_cabecera_examen e WHERE
197
c.exa_profesor_id ='$idpro' AND c.exa_semestre_id ='$semestre' AND
c.exa_alumno_id = a.exa_alumno_id AND c.exa_asignatura_id =
m.exa_asignatura_id AND c.exa_cabecera_examen_id = e.exa_cabecera_examen_id
AND e.exa_parcial='$parcial' and e.exa_ciclo='$ciclo' and
m.exa_asignatura_id='$exa_asignatura_id' GROUP BY 5";
$res= $miconexion-
>consulta($q_exa_alu);
while($rowmax=mysql_fetch_array($res))
{
$q_ver_exa='SELECT
count(*) tpcarga FROM exa_calificacion WHERE
exa_alumno_id='.$rowmax["exa_alumno_id"].' AND
exa_cabecera_examen_id='.$rowmax["exa_cabecera_examen_id"].' AND
cal_tipo_pre="C" AND cal_estado="P"';
$restot= $miconexion-
>consulta($q_ver_exa);
$rowcarga=mysql_fetch_array($restot);
$totcarga=$rowcarga["tpcarga"];
$alumno=$rowmax["apellidos"].' '.$rowmax["nombres"];
echo '<table border="0">';
echo '<tr>';
if ($totcarga>0)
{
$estado='Pendiente';
$notaparcial=$rowmax["tparcial"];
$notatotal='-';
}
else
{
$estado='Calificado';
$notaparcial='-';
$notatotal=$rowmax["tparcial"];
}
198
echo '<td width="25" bgcolor="#DDEEFF"><div align="center" class="style61"><a
href="vista_examen_pro.php?examen_id='.$rowmax["exa_cabecera_examen_id"].'&
alum_id='.$rowmax["exa_alumno_id"].'"><img src="/elearning_cisc/images/Open
Folder-108.ico" name="imgElimina" alt="Del" width="16" height="16"
style="cursor:pointer" title="Ingresa al examen" ></a></div></td>';
echo '<td width="370"
bgcolor="#DDEEFF"><div align="center" class="style61"><a
href="vista_examen_pro.php?examen_id='.$rowmax["exa_cabecera_examen_id"].'&
alum_id='.$rowmax["exa_alumno_id"].'"><b>'.$alumno.'</b></div></td>';
echo '<td width="205" bgcolor="#DDEEFF"><div
align="center" class="style61">'.$rowmax["asg_nombre"].'</div></td>';
echo '<td width="80" bgcolor="#DDEEFF"><div
align="center" class="style61">'.$rowmax["exa_cab_fecha"].'</div></td>';
echo '<td width="95"
bgcolor="#DDEEFF"><div align="center"
class="style61">'.$rowmax["exa_parcial"].'</div></td>';
echo '<td width="95"
bgcolor="#DDEEFF"><div align="center"
class="style61">'.$notaparcial.'</div></td>';
echo '<td width="95" bgcolor="#DDEEFF"><div
align="center" class="style61">'.$notatotal.'</div></td>';
echo '<td width="115" bgcolor="#DDEEFF"><div
align="center" class="style61">'.$estado.'</div></td>';
} //Fin del While
//mysql_free_result($res);
echo '</tr>';
echo '</table>';
}//Fin del if
?>
<p> </p>
<table width="61%" height="53" border="0"
align="center">
<tr>
<td>
<div align="center">
<table width="434" height="25" border="0" align="center">
<tr>
<td width="304"><div align="center"
class="style55"><a href="crea_examen.php"><strong><img
src="../../../images/button_ok.gif" alt="Examen de Simulación" width="12"
height="12" /> Crear Examen</strong></a></div></td>
199
<td width="322" height="43"><div
align="center" class="style55"><a href="inicial_docente.php"><strong> <img
src="../../../images/cancel_12x12.png" alt="Salir" width="12" height="12"
/> Salir</strong></a> </div></td>
</tr>
</table>
</div> </td>
</tr>
</table>
<p> </p></td>
</tr>
</table>
</form>
</td>
</tr>
</table>
</div> </div></div></div></body>
</html>
<?php
function muestra_semestre($semestre,$result)
{
while($rowsem = mysql_fetch_array($result))
{
if ($rowsem["idsemestre"]==$semestre)
{
echo '<option value="'.$rowsem["idsemestre"].'"
selected="selected">'.$rowsem["semestre"].' </option>';
}else
{
echo '<option
value="'.$rowsem["idsemestre"].'">'.$rowsem["semestre"].' </option>';
}
}
echo '</select>';
// mysql_free_result($result);
}
function muestra_asignatura($idpro,$asignatura,$result)
{
while($row=mysql_fetch_array($result))
200
{
if ($row["idasig"]==$asignatura)
{
echo '<option value="'.$row["idasig"].'"
selected="selected">'.$row["nasig"].' </option>';
}else
{
echo '<option value="'.$row["idasig"].'">'.$row["nasig"].' </option>';
}
}
echo '</select>';
mysql_free_result($result);
}
?>
Fuente:Archivo ”califica_examen.php”
Elaboración: José Luis Garzón A.
201
Cuadro No 17.
Código para mostrar y calificar el contenido del examen pendiente
<?php
// iniciamos session
session_start (); // iniciamos session
if (!isset($_SESSION["usNick"]))
header('Location: login/login.php');
header("Cache-Control: no-store, no-cache, must-revalidate");
require ("../../../lib/clase_MySql.inc.php");
$miconexion = new DB_mysql ;
$miconexion->conectar();
//Obtiene datos por Post o Get
if (isset($_GET["examen_id"])) $exaID = $_GET["examen_id"];
if (isset($_GET["alum_id"])) $alumnoID = $_GET["alum_id"];
if (isset($_POST["id_exa"])) $exaID = $_POST["id_exa"];
if (isset($_POST["id_alumno"])) $alumnoID = $_POST["id_alumno"];
$Q_sel_asg="SELECT a.asg_nombre FROM exa_asignatura a,
exa_cabecera_examen e WHERE exa_cabecera_examen_id='$exaID' AND
a.exa_asignatura_id=e.exa_asignatura_id";
$rasg= $miconexion->consulta($Q_sel_asg);
$asg=mysql_fetch_array($rasg);
$asignatura=$asg['asg_nombre'];
$Q_sel_alu="SELECT nombres, apellidos FROM exa_alumno WHERE
exa_alumno_id='$alumnoID'";
$ra= $miconexion->consulta($Q_sel_alu);
$alum=mysql_fetch_array($ra);
$alumno=$alum['apellidos'].' '.$alum['nombres'];
//Bandera par la calificacion
$bd=1;
//Guarda la calificacion
if (isset($_POST["calificar"]))
{
if (isset($_POST["arreglo_pre"])) $up_arreglo = $_POST["arreglo_pre"];
if (isset($_POST["ncarga"])) $up_num_pc = $_POST["ncarga"];
if (isset($_POST["id_alumno"])) $up_aluID = $_POST["id_alumno"];
//if (isset($_POST["id_exa"])) $up_exaID = $_POST["id_exa"];
202
for ($i=0;$i<=$up_num_pc;$i++)
{
$tmp_preid=$up_arreglo[$i];
$tmp_ptos=$_POST["puntaje".$i];
$query_up="SELECT exa_pregunta_id, preg_puntos FROM
exa_pregunta WHERE exa_pregunta_id='$tmp_preid'";
$resx= $miconexion->consulta($query_up);
$pto_x=mysql_fetch_array($resx);
if ($tmp_ptos<=$pto_x["preg_puntos"] && $tmp_ptos>=0 &&
$_POST["puntaje".$i]!="" )
{
$q_up_pregunta="UPDATE exa_calificacion SET
cal_estado='A', cal_puntos='$tmp_ptos' WHERE exa_pregunta_id='$tmp_preid'
AND exa_cabecera_examen_id='$exaID' AND exa_alumno_id=$up_aluID";
$miconexion->guardar($q_up_pregunta);
}
else
{
$bd=0;
}
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<link rel="stylesheet" href="../css/template.css" type="text/css" />
<script type="text/javascript" src="../Docente/js/funciones.js"> </script>
<script type="text/javascript" src="../../../js/prototype.js"> </script>
<style type="text/css">
<!--
.style53 {color: #006600; font-weight: bold;border:1px solid #CCC; border-top:none;
background:#D8F1FE; padding:5px; }
.style55 {font-size: 14px; color: #1b78b7; font-weight: bold;}
.style57 {font-size: 14px; color: #1b78b7; font-weight: bold; }
.style59 {font-size: 12px; color: #006600; font-weight: bold; }
.style60 {font-size: 12px; color: #000000; font-weight: bold; }
.style61 {font-size: 12px; color: #000000; border:1px solid #CCC; background:#FFF;
-moz-border-radius: 4px 4px 0px 0px; padding:5px;}
-->
</style>
203
</head>
<body >
<div class="center" align="center">
<div id="top">
<div id="tabarea" >
<table cellpadding="0" cellspacing="0" class="pill"
align="center">
<tr>
<td class="pill_m">
<div id="pillmenu">
<ul id="mainlevel-nav">
<li><a class="mainlevel-nav"
href="../../Examen/Docente/crea_examen.php"><b>Crear Examen</b> </a></li>
<li><a class="mainlevel-nav"
href="../../Examen/Docente/edicion_examen.php"><b>Editar Examen</b></a></li>
<li><a class="mainlevel-nav"
href="../../Examen/Docente/califica_examen.php"><b>Calificar
Examen</b></a></li> <li><a class="mainlevel-nav"
href="../../Examen/Docente/grafico_notas.php"><b>Estadístico</b></a></li>
</ul>
</div>
</td>
</tr>
</table>
</div>
</div>
<!-- Inicio de DIV donde se muestra las preguntas -->
<div id="wrapper" align="center" style="height:100%; overflow:auto;padding-
top:0px;" >
<div style="background:#EBEBEB
url(/elearning_cisc/contenido/wikikey/images/left_shadow.jpg) repeat-y left;
width:90%;">
<div
style="background:url(/elearning_cisc/contenido/wikikey/images/right_shadow.jpg)
repeat-y right;">
<?php echo '<form enctype="multipart/form-data" action="vista_examen_pro.php"
method="POST">'; ?>
<br />
<div style="padding-left:13px">
204
<div style='float:left; margin-right:8px;'><img
src="/elearning_cisc/images/Default Document-41.ico" alt="examen" /></div><div
style=' text-align:left'><h3>Vista del Examen de <?php echo
' '.$asignatura.' ' ?> Desarrollado</h3></div><div class='small'
style='margin-bottom:7px; color:#000'><b><?php echo 'Alumno :
'.$alumno?></b></div>
</div>
<br />
<?php if (isset($_POST["calificar"]))
{
if ($bd==0)
{
echo '<div align="center" style=" background-
color:#F00;border:1px solid #801B09;width:80%;padding:5px;color:#FFF; font-
size:13px; margin-top:10px" ><b>Debe ingresar todos los puntajes pendientes según
lo indicado...!</b></div>';
}
}
?>
<?php
//============================================================
======================
//============================================================
======================
//PRESENTACION DE EXAMEN SELECCIONADO
//============================================================
======================
//============================================================
======================
if ($exaID!='')
{//if main
$row=array();
$arr_preg=array();
$query="SELECT exa_calificacion_id, exa_pregunta_id, cal_pregunta,
cal_seleccion_alumno, cal_seleccion_correcta, cal_rutaarchivo, cal_puntos,
cal_tipo_pre, cal_estado FROM exa_calificacion WHERE
exa_cabecera_examen_id='$exaID' AND exa_alumno_id='$alumnoID'";
$res= $miconexion->consulta($query);
$op=0;
205
// if ($res)
// { //if submain
echo '<table width="97%" border="0" cellpadding="4"
id="TablePreg">';
$c=1;
while($row_ec=mysql_fetch_array($res))
{
//Inicio de fila # 1
echo '<tr>';
//Inicio de Columna #1 de la Fila #1
echo '<td colspan="6" >';
//Inicio DIV dentro de Columna #1 de la Fila #1
echo '<div align="left">';
if ($row_ec["cal_estado"]=='P')
{
echo '<span class="style59"> '.$c.'°
pregunta. // Puntaje Pendiente: </span>';
}
else
{
echo '<span class="style59"> '.$c.'°
pregunta. // Puntaje
Obtenido:</span><span class="style60"> '.$row_ec["cal_puntos"].'</span>';
}
echo '<br>';
//Muestra Preguntas...
echo '<div class="style61">'.$row_ec["cal_pregunta"].'</div>';
//Muestra opción de carga de archivo.
if ($row_ec["cal_tipo_pre"]=='C')
{
if ($row_ec["cal_rutaarchivo"]!='N')
{
$q_puntos='SELECT preg_puntos FROM
exa_pregunta WHERE exa_pregunta_id='.$row_ec["exa_pregunta_id"];
$pto= $miconexion->unDato($q_puntos);
echo '<div align="left" class="style53"> Archivo
Cargado : >>> <a href="../'.$row_ec["cal_rutaarchivo"].'"><img
src="../image/DISK.ico" width="30" height="30" " title="Decargar
archivo">'.'</a></div>';
206
if ($row_ec["cal_estado"]=='P')
{
echo '<div align="left" class="style53">
Ingrese calificación menor o igual a :'.$pto.' ';
echo '<input name="puntaje'.$op.'"
type="text" size="5" maxlength="2"/>';
echo '</div>';
$arr_preg[$op]=$row_ec["exa_pregunta_id"];
$op=$op+1;
}
}
else
{
echo '<div align="left" class="style60"> !... No
cargó ningún archivo ..! </div>';
}
}
else
{
if ($row_ec["cal_seleccion_alumno"]=='')
{
echo '<div align="left" class="style53">
Respuesta Seleccionada : <span class="style60">!... No seleccionó ninguna opción
..!</span> </div>';
}
else
{
if ($row_ec["cal_tipo_pre"]=='O')
{
echo '<div align="left" class="style53">
Respuesta Seleccionada: <span
class="style60">'.$row_ec["cal_seleccion_alumno"].'</span></div>';
}
if ($row_ec["cal_tipo_pre"]=='I')
{
echo '<div align="left" class="style53">
Opción Seleccionada : ';
$ruta='../FileExamen/'.$row_ec["cal_seleccion_alumno"];
207
echo '<img src="'.$ruta.'" name="img"
alt="opcion" width="40" height="40" style="cursor:pointer" title="Opcion"
><br></div>';
}
}
if ($row_ec["cal_tipo_pre"]=='I')
{
echo '<div align="left" class="style53"> Opción
Correcta : ';
$ruta2='../FileExamen/'.$row_ec["cal_seleccion_correcta"];
echo '<img src="'.$ruta2.'" name="img"
alt="opcion" width="40" height="40" style="cursor:pointer" title="Opcion"
><br></div>';
}
else
{
echo '<div align="left" class="style53">
Respuesta Correcta: <span
class="style60">'.$row_ec["cal_seleccion_correcta"].'</span></div>';
}
}
echo '</div>'; //Fin DIV dentro de Columna #1 de la Fila #1
echo '</td>'; //Fin de Columna #1 de la Fila #1
echo '</tr>'; //Fin de fila # 1
$c = $c+1;
} // FIN WHILE INTERNO
}// Fin del if submain
//}// Fin del if main
echo '</table>';
?>
<table width="60%" height="50" border="0" align="center">
<tr>
<td>
<div align="center" >
<table width="84%" height="39" border="0" align="center">
<tr>
<td width="30%"><div align="center" class="style55">
<input type="submit" name="calificar" value="Calificar" /></div></td>
208
<td width="45%"><div align="center" class="style55"><a
href="califica_examen.php"><strong><img src="../image/Find88.ico" width="20"
height="20" /> <span class="style55">Revisar otro examen</span>
</strong></a></div></td>
<td width="30%"><div align="center" class="style55"><a
href="inicial_docente.php"><strong><img src="../../../images/cancel_12x12.png"
width="14" height="14" /> <span
class="style55">Salir</span></strong></a></div></td>
</tr>
</table>
</div>
</td>
</tr>
</table>
</div></div>
</div>
<input type="hidden" name="ncarga" value="<?php echo ($op-1); ?>" />
<input type="hidden" name="id_alumno" value="<?php
echo $alumnoID; ?>" />
<input type="hidden" name="id_exa" value="<?php
echo $exaID; ?>" />
<?php
for ($c=0;$c<=($op-1);$c++)
{
echo '<input type="hidden"
name="arreglo_pre['.$c.']" value="'.$arr_preg[$c].'" />';
}
echo '</form>'; ?>
</div>
</body>
</html>
Fuente:Archivo ”vista_examen_pro.php”
Elaboración: José Luis Garzón A.
209
Cuadro No 18.
Código para presentación del Gráfico Estadístico de las Calificaciones de los
Examenes
<?php
session_start ();
if (!isset($_SESSION["usNick"]))
header('Location: login/login.php');
header("Cache-Control: no-store, no-cache, must-revalidate");
require ("../../../lib/clase_MySql.inc.php");
$miconexion = new DB_mysql ;
$miconexion->conectar();
$ci=$_SESSION["usNick"];
$rowidprof=array();
$query ="SELECT exa_profesor_id,nombres, apellidos FROM exa_profesor
WHERE pro_identificacion='$ci'";
$res= $miconexion->consulta($query);
$rowidprof=mysql_fetch_array($res);
mysql_free_result($res);
$idpro=$rowidprof['exa_profesor_id'];
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<jdoc:include type="head" />
<link rel="stylesheet" href="../css/template.css" type="text/css" />
<script type="text/javascript" src="../Docente/js/funciones.js"> </script>
<script type="text/javascript" src="../../../js/prototype.js"> </script>
<style type="text/css">
<!--
.style47 {font-family: Arial, Helvetica, sans-serif;font-weight: bold;font-size: 10px;}
.style52 {font-family: Arial, Helvetica, sans-serif; font-weight: bold;font-size: 12px; }
.style55 {font-size: 14px; color: #1b78b7; font-weight: bold;}
.style53 {color: #FFFFFF}
.style60 {font-size: 12px; color: #1b78b7; font-family: Arial, Helvetica, sans-serif;}
.style64 {font-size: 12px;font-weight: bold;}
.Estilo1 {color: #1b78b7}
-->
</style>
</head>
210
<body>
<div class="center" align="center">
<div id="top">
<div id="tabarea">
<table cellpadding="0" cellspacing="0" class="pill"
align="center">
<tr>
<td class="pill_m">
<div id="pillmenu">
<ul id="mainlevel-nav">
<li><a class="mainlevel-nav"
href="../../Examen/Docente/crea_examen.php"><b>Crear Examen</b> </a></li>
<li><a class="mainlevel-nav"
href="../../Examen/Docente/edicion_examen.php"><b>Editar Examen</b></a></li>
<li><a class="mainlevel-nav"
href="../../Examen/Docente/califica_examen.php"><b>Calificar
Examen</b></a></li>
<li><a class="mainlevel-nav"
href="../../Examen/Docente/grafico_notas.php"><b>Estadistico</b></a></li>
</ul>
</div>
</td>
</tr>
</table>
</div>
</div>
<div id="wrapper" align="center" style="height:100%; overflow:auto;padding-
top:0px;" >
<div style="background:#EBEBEB
url(/elearning_cisc/contenido/wikikey/images/left_shadow.jpg) repeat-y left;
width:90%; height:600px">
<div
style="background:url(/elearning_cisc/contenido/wikikey/images/right_shadow.jpg)
repeat-y right; height:600px">
<br />
<div style="padding-left:13px">
<div style='float:left; margin-right:8px;'><img
src="/elearning_cisc/images/Default Document-41.ico" alt="examen" /></div><div
style=' text-align:left'>
<h3>Representación Gráfica de las calificaciones de los
Alumnos por Curso.</h3>
</div><div class='small' style='margin-bottom:7px;
color:#000'><b>Seleccione sus opciones.</b></div>
211
</div>
<br />
<table width="97%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="663" valign="top">
<form action="../graph/estadistico_notas.php" method="post"
name="Fefha_estadistico" target="iframenotas">
<table width="906" height="215" border="0">
<tr>
<td width="55" height="23"><div align="right" class="style64
Estilo1">Curso : </div></td>
<td width="79"><div align="left"><?php
//CARGA EL CURSO O EL CURSO ANTERIORMENTE GUARDADO SEGUN
EL EXAMEN
$data = "SELECT DISTINCT s.exa_semestre_id as idsemestre,
s.sem_semestre as semestre FROM exa_semestre s, exa_profesor p,
exa_asig_profesor x WHERE p.exa_profesor_id = x.exa_profesor_id and
x.exa_semestre_id = s.exa_semestre_id and p.exa_profesor_id ='$idpro' ORDER BY
1";
$result = $miconexion->consulta($data);
echo '<select name="exa_semestre" style="width:100%">';
echo '<option value="0" selected="selected">Seleccione</option>';
if (isset($_POST["Mostrar"])) $semestre=$_POST["exa_semestre"];
else $semestre="";
muestra_semestre($semestre,$result);
?></div></td>
<td width="77"><div align="right" class="style64 Estilo1">Asignatura :
</div></td>
<td width="163"><div align="left"><?php
//CARGA LA ASIGNATURA ANTERIORMENTE GUARDADO SEGUN EL
EXAMEN
$data="SELECT DISTINCT a.exa_asignatura_id idasig, a.asg_nombre nasig FROM
exa_asignatura a, exa_asig_profesor s, exa_semestre t WHERE
s.exa_profesor_id='$idpro' AND s.exa_semestre_id=t.exa_semestre_id AND
s.exa_asignatura_id=a.exa_asignatura_id";
$result= $miconexion->consulta($data);
echo '<select name="exa_asignatura_id" style="width:100%" >';
echo "<option value='0'>Seleccione</option>";
muestra_asignatura($idpro,$asignatura,$result);
?></div></td>
212
<td width="55"><div align="right" class="style64 Estilo1"> Parcial :
</div></td>
<td width="103"><div align="left">
<label>
<select name="parcial" id="parcial">
<option value="0">Seleccione</option>
<option value="1">Primer Parcial</option>
<option value="2">Segundo Parcial</option>
</select>
</label>
</div></td>
<td width="49"><div align="right" class="style64 Estilo1"> Ciclo :
</div></td>
<td width="106"><div align="left">
<label>
<select name="ciclo" id="parcial2">
<option value="0">Seleccione</option>
<option value="1">Ciclo 1</option>
<option value="2">Ciclo 2</option>
</select>
</label>
</div></td>
<td width="38"><div align="right" class="style64 Estilo1"> Año :
</div></td>
<td width="33"> <?php
$anio='2009'; //Creamos la sentencia SQL y la
ejecutamos
$today='Seleccione';
$sSQL="Select exa_cab_fecha From exa_cabecera_examen Order By
exa_cab_fecha";
$result=$miconexion->consulta($sSQL);
echo '<select name="anio" id="fecha">';
echo '<option value='.$today.' selected="selected" >'. $today.'</option>';
//}
//Mostramos los registros en forma de menu desplegable
while ($row=mysql_fetch_array($result))
{
$exa_cab_fecha=$row["exa_cab_fecha"];
list($year,$month,$day) = explode( '-', $exa_cab_fecha );
$fecha=$year;
if($fecha!=$anio){
if($fecha!=$today){
213
echo '<option value='.$fecha.' >'.$fecha.'</option>';
}
$anio=$fecha;
}
}
mysql_free_result($result);
echo '</select>';
?></td>
<td width="102"><div align="left"><span style="border-bottom-
color:#0099FF">
<input type="submit" name="Mostrar" value="Mostrar"
style="width=10% " />
</span></div></td>
</tr>
<tr>
<td height="171" colspan="11">
<input type="hidden" name="proid" value="<?php echo $idpro; ?>" />
<p><div class="feature" align="left">
<iframe onload="" frameborder="0" style="background:#FFF;
border:1px solid #006; display:<?php echo $estadograf.';'; ?> -moz-border-radius:
4px 4px 4px 4px; id="blockrandom" name="iframenotas"
src="../../graph/estadistico_notas.php" class="wrapper" width="650px" align="top"
height="450px" scrolling="auto" > Esta opciín no trabajará
correctamente. Su navegador no soporta IFRAMES. </iframe>
</div>
</p>
<p> </p>
<p> </p>
<p> </p>
<table width="61%" height="53" border="0" align="center">
<tr>
<td>
<div align="center">
<table width="434" height="25" border="0" align="center">
<tr>
214
<td width="304"><div align="center"
class="style55"><a href="crea_examen.php"><strong><img
src="../../../images/button_ok.gif" alt="Examen de Simulación" width="12"
height="12" /> Crear Examen</strong></a></div></td>
<td width="322" height="43"><div
align="center" class="style55"><a href="inicial_docente.php"><strong> <img
src="../../../images/cancel_12x12.png" alt="Salir" width="12" height="12"
/> Salir</strong></a> </div></td>
</tr>
</table>
</div> </td>
</tr>
</table>
<p> </p></td>
</tr>
</table>
</form>
</td>
</tr>
</table>
</div> </div></div></div></body>
</html>
<?php
function muestra_semestre($semestre,$result)
{
while($rowsem = mysql_fetch_array($result))
{
if ($rowsem["idsemestre"]==$semestre)
{
echo '<option value="'.$rowsem["idsemestre"].'"
selected="selected">'.$rowsem["semestre"].' </option>';
}else
{
echo '<option
value="'.$rowsem["idsemestre"].'">'.$rowsem["semestre"].' </option>';
}
}
echo '</select>';
}
215
function muestra_asignatura($idpro,$asignatura,$result)
{
while($row=mysql_fetch_array($result))
{
if ($row["idasig"]==$asignatura)
{
echo '<option value="'.$row["idasig"].'"
selected="selected">'.$row["nasig"].' </option>';
}else
{
echo '<option value="'.$row["idasig"].'">'.$row["nasig"].' </option>';
}
}
echo '</select>';
mysql_free_result($result);
}
?>
Fuente:Archivo ”grafico_notas.php”
Elaboración: José Luis Garzón A.
216
Cuadro No 19.
Código para generar los datos para el Gráfico Estadístico de las Calificaciones
de los Examenes
<?php
session_start (); // iniciamos session
if (!isset($_SESSION["usNick"]))
header('Location: login/login.php');
require_once ('jpgraph.php');
require_once ('jpgraph_bar.php');
require_once ("jpgraph_pie.php");
require_once ("jpgraph_pie3d.php");
date_default_timezone_set('America/Guayaquil');
$Conexion_ID = mysql_connect('localhost', 'root', 'root');
$result = mysql_select_db('elearning', $Conexion_ID);
if (isset($_POST["Mostrar"]))
{
$estadograf='inline;';
}
//Datos para el grafico
$anio=$_POST["anio"];
$exa_semestre=$_POST["exa_semestre"];
$exa_asignatura_id=$_POST["exa_asignatura_id"];
$parcial=$_POST["parcial"];
$ciclo=$_POST["ciclo"];
$proid=$_POST["proid"];
$q_curso="select sem_semestre from exa_semestre where
exa_semestre_id='$exa_semestre'";
$res1= mysql_query($q_curso);
while($row1 = mysql_fetch_array($res1))
{
$dato_s=$row1["sem_semestre"];
}
$q_asigna="select asg_nombre from exa_asignatura where
exa_asignatura_id='$exa_asignatura_id'";
$res2= mysql_query($q_asigna);
while ($row2 = mysql_fetch_array($res2))
{
$dato_a=$row2["asg_nombre"];
217
}
// Mostrar el estadístico de Notas################################
$q_exa_alu="SELECT a.exa_alumno_id, a.apellidos, a.nombres, SUM(c.cal_puntos)
AS tparcial, c.exa_cabecera_examen_id FROM exa_calificacion c, exa_alumno a,
exa_asignatura m, exa_cabecera_examen e WHERE c.exa_profesor_id = $proid
AND c.exa_semestre_id =$exa_semestre AND c.exa_alumno_id = a.exa_alumno_id
AND c.exa_asignatura_id = m.exa_asignatura_id AND c.exa_cabecera_examen_id =
e.exa_cabecera_examen_id AND e.exa_parcial=$parcial GROUP BY 5";
$res= mysql_query($q_exa_alu);
$maximo=0;
$contador=0;
$tmpc=0;
$tmpn="";
$datay = array();
$datax= array();
$ordencont=array();
$ordennomb=array();
while ($row = mysql_fetch_array($res)) {
$bandera=1;
$datay[] = $row["tparcial"];
$datax[]= $row["exa_alumno_id"]."-".$row["apellidos"];
$contador++;
}
$width=600;
$height=290;
// Set the basic parameters of the graph
$graph = new Graph($width,$height,'auto');
$graph->SetScale('textlin');
// Rotate graph 90 degrees and set margin
$graph->Set90AndMargin(250,50,50,30);
$graph->SetMarginColor('azure2');
// Nice shadow
$graph->SetShadow();
// Setup title
218
$graph->title->Set('Estudiantes del Curso: '.$dato_s.' Asignatura: '.$dato_a);
$graph->title->SetFont(FF_VERDANA,FS_BOLD,10);
$graph->title->SetColor('black');
// Setup X-axis
$graph->xaxis->SetTickLabels($datax);
$graph->xaxis->SetFont(FF_VERDANA,FS_NORMAL,7);
$graph->xaxis->SetColor('black');
// Some extra margin looks nicer
$graph->xaxis->SetLabelMargin(5);
// Label align for X-axis
$graph->xaxis->SetLabelAlign('right','center');
// Add some grace to y-axis so the bars doesn't go
// all the way to the end of the plot area
$graph->yaxis->scale->SetGrace(50);
$graph->yaxis->SetColor('black');
$graph-
>SetBackgroundGradient('white','lightblue',BGRAD_PLOT);
// We don't want to display Y-axis
//$graph->yaxis->Hide();
// Now create a bar pot
$bplot = new BarPlot($datay);
//$bplot-
>SetFillGradient("navy","lightsteelblue",GRAD_MIDVER);
//$bplot->SetFillColor('green');
//$bplot->SetShadow();
$bplot->SetFillGradient('white','orange',GRAD_VERT);
$bplot->SetColor('darkorange');
//You can change the width of the bars if you like
//$bplot->SetWidth(0.5);
// We want to display the value of each bar at the top
$bplot->value->Show();
$bplot->value->SetFont(FF_ARIAL,FS_BOLD,8);
$bplot->value->SetAlign('left','center');
$bplot->value->SetColor('black','darkred');
$bplot->value->SetFormat('%.1f pts');
// Add the bar to the graph
$graph->Add($bplot);
219
// .. and stroke the graph
$graph->Stroke();
?>
Fuente:Archivo ”estadistico_notas.php”
Elaboración: José Luis Garzón A.
Cuadro No 20.
220
Código para validar el ingreso de datos
// JavaScript Document
//*******************************************************************
// retorna parametros y variables que sera pasado por POST
function retornaPostparametros(claseTxt){
var l=document.getElementsByClassName(claseTxt);
var f=0; var param='';
for(f=0;f<l.length;f++ ){
if(l[f].type == "radio")
{ if(l[f].checked == true) param += ""+l[f].id+"=Y&" ; else
param += ""+l[f].id+"=N&" ;
} else param += ""+l[f].id+"="+l[f].value+"&" ;
}
var porcion = param.substring(0,param.length-1);
return porcion;
}
function validar_numero(e)
{ var key;
if(window.event) // IE
{
key = e.keyCode;
}
else if(e.which) // Netscape/Firefox/Opera
{
key = e.which;
}
if (key != 8 && key != 44 && key != 45 && key != 46 && (key < 48 || key >
57))
{
return false;
}
return true;
};
Fuente:Archivo ”funciones.js”
Elaboración: José Luis Garzón A.
Cuadro No 21.
221
Código para la pantalla inicial del ambiente del alumno
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<jdoc:include type="head" />
<link rel="stylesheet" href="../css/template.css" type="text/css" />
<script type="text/javascript" src="../Docente/js/funciones.js"> </script>
<script type="text/javascript" src="../../../js/prototype.js"> </script>
</head>
<body style="height:100%; overflow:hidden">
<div align="center" style=" height:100%; padding:0; margin:0;">
<div id="top">
<div id="tabarea">
<table cellpadding="0" cellspacing="0" class="pill"
align="center">
<tr>
<td class="pill_m">
<div id="pillmenu">
<ul id="mainlevel-nav">
<li><a class="mainlevel-nav"
href="../Alumno/rendir_examen.php"><b>Rendir Examen</b> </a></li>
<li><a class="mainlevel-nav"
href="../Alumno/simular_examen.php"><b>Simulación Examen</b></a></li>
<li><a class="mainlevel-nav"
href="../Alumno/consulta_examen.php"><b>Consultar Examen</b></a></li>
</ul>
</div>
</td>
</tr>
</table>
</div>
</div>
<table width="100%" height="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="middle" align="center" height="100%">
222
<div style="background:#EBEBEB
url(/elearning_cisc/contenido/wikikey/images/left_shadow.jpg) repeat-y left;
width:90%; height:100% ">
<div
style="background:url(/elearning_cisc/contenido/wikikey/images/right_shadow.jpg)
repeat-y right;height:100%">
<table width="100%" height="100%" border="0" cellspacing="0"
cellpadding="0">
<tr>
<td align="center" valign="middle">
<table width="75%" height="180" border="0" align="center" cellpadding="0"
cellspacing="0" style="border:1px solid #000;-moz-border-radius: 4px 4px 4px 4px;
background: #FFF url(../../../images/bg_panel_top_right.gif) repeat-y right" >
<tr>
<td height="141" align="center" valign="middle">
<img src="/elearning_cisc/images/logoe2.jpg" width="422" height="119"
alt="examen" /></td></tr>
<tr>
<td align="center" valign="top"><h3 style="text-align:center; font:26px
Verdana, Arial, Helvetica, sans-serif; font-weight:bold">eCISC
Examenes</h3></td></tr>
</table>
</td>
</tr>
</table>
</div></div>
</td>
</tr>
</table>
</div>
</body>
</html>
Fuente:Archivo ”inicial_alumno.php”
Elaboración: José Luis Garzón A.
223
Cuadro No 22.
Código para presentar el listado de los examenes publicados asignados al
alumno
<?php
session_start ();
if (!isset($_SESSION["usNick"]))
header('Location: login/login.php');
//SELECCIONAR LOS CORREOS DE LOS ESTUDIANTES DEL CURSO AL
QUE SE LE CREO EL EXAMEN
//RECOMENDANDO LIBROS DE LA BIBLIOTECA VIRTUAL COMO LINKS
DE DESCARGA.
//esto es para decirle al cache de procesos del navegador que se desactive
header("Cache-Control: no-store, no-cache, must-revalidate");
require ("../../../lib/clase_MySql.inc.php");
$miconexion = new DB_mysql ;
$miconexion->conectar();
$fecha=date("Y-m-d");
//echo $fecha;
//Obtiene el # de Cedula del profesor para obtener el ID
$ci=$_SESSION["usNick"];
$query_alu ="SELECT exa_alumno_id, nombres, apellidos FROM exa_alumno
WHERE alu_identificacion='$ci'";
$row_alu_ID = $miconexion->consulta($query_alu);
$alu_ID=mysql_fetch_array($row_alu_ID);
$tmp_alu_ID=$alu_ID["exa_alumno_id"];
//$rowexa=array();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<jdoc:include type="head" />
<link rel="stylesheet" href="../css/template.css" type="text/css" />
<script type="text/javascript" src="../Docente/js/funciones.js"> </script>
<script type="text/javascript" src="../../../js/prototype.js"> </script>
<style type="text/css">
<!--
.style55 {font-size: 14px; color: #1b78b7; font-weight: bold;}
.style47 {font-family: Arial, Helvetica, sans-serif;
224
font-weight: bold;
font-size: 10px;
}
.style52 {font-family: Arial, Helvetica, sans-serif; font-weight: bold; font-size: 12px;
}
.style53 {color: #FFFFFF}
.style56 {color: #DDEEFF}
.style57 {color: #000066}
.style60 {font-size: 12px; color: #1b78b7; font-family: Arial, Helvetica, sans-serif;}
-->
</style>
</head>
<body>
<div class="center" align="center">
<div id="top">
<div id="tabarea">
<table cellpadding="0" cellspacing="0" class="pill" align="center">
<tr>
<td class="pill_m"><div id="pillmenu">
<ul id="mainlevel-nav">
<li><a class="mainlevel-nav"
href="../Alumno/rendir_examen.php"><b>Rendir Examen</b> </a></li>
<li><a class="mainlevel-nav"
href="../Alumno/simular_examen.php"><b>Simulación
Examen</b></a></li>
<li><a class="mainlevel-nav"
href="../Alumno/consulta_examen.php"><b>Consultar Examen</b></a></li>
</ul>
</div></td>
</tr>
</table>
</div>
</div>
<div id="wrapper" align="center" style="height:100%; overflow:auto;padding-
top:0px;" >
<div style="background:#EBEBEB
url(/elearning_cisc/contenido/wikikey/images/left_shadow.jpg) repeat-y left;
width:90%; height:600px">
<div
style="background:url(/elearning_cisc/contenido/wikikey/images/right_shadow.jpg)
repeat-y right; height:600px">
<br />
<div style="padding-left:13px">
225
<div style='float:left; margin-right:8px;'><img
src="/elearning_cisc/images/Default Document-41.ico" alt="examen" /></div><div
style=' text-align:left'><h3>Listado de Examenes publicados</h3></div><div
class='small' style='margin-bottom:7px; color:#000'><b>Seleccione el Examen para
empezar</b></div>
</div>
<br />
<form id="form1" name="form1" method="post" action="">
<table width="97%" border="0">
<tr>
<td>
<table width="100%" height="22" border="0" cellpadding="0"
cellspacing="0">
<tr bgcolor="#6D95C5">
<td width="133" height="18" bgcolor="#6D95C5"
class="style47"><div align="center" class="style52">
<div align="center" class="style53">
<div align="center">Examen</div>
</div>
</div></td>
<td width="50" height="18" bgcolor="#6D95C5"
class="style47"><div align="center" class="style52">
<div align="center" class="style53">
<div align="center">Parcial</div>
</div>
</div></td>
<td width="212" class="style47"><div align="center"
class="style52">
<div align="center" class="style53">
<div align="center">Asignatura</div>
</div>
</div></td>
<td width="188" class="style47"><div align="center"
class="style52">
<div align="center" class="style53">
<div align="center">Curso</div>
</div>
</div></td>
<td width="152" class="style47"><div align="center"
class="style52">
<div align="center" class="style53">
<div align="center">Fecha</div>
</div>
</div></td>
226
<td width="167" class="style47"><div align="center"
class="style52">
<div align="center" class="style53">
<div align="center">Estado</div>
</div>
</div></td>
</tr> </table>
<?php
$query ="SELECT e.exa_cabecera_examen_id,e.exa_parcial,t.sem_semestre,
x.asg_nombre, e.exa_cab_fecha, e.exa_cab_tipo, e.exa_cab_estado FROM
exa_cabecera_examen e, exa_semestre t, exa_alumno a, exa_asignatura x,
exa_asig_alumno s WHERE e.exa_cab_tipo='C' and e.exa_cab_estado='A' and
e.exa_publicado='P' and a.alu_identificacion='$ci' and
s.exa_alumno_id=a.exa_alumno_id and e.exa_asignatura_id=s.exa_asignatura_id and
e.exa_asignatura_id=x.exa_asignatura_id and e.exa_semestre_id=t.exa_semestre_id
and e.exa_semestre_id=s.exa_semestre_id ORDER BY 1";
$res= $miconexion->consulta($query);
while($rowmax=mysql_fetch_array($res))
{
$examendado=array();
$exa_ID=$rowmax["exa_cabecera_examen_id"];
$q_verifica="SELECT count(*) total FROM exa_calificacion WHERE
exa_cabecera_examen_id='$exa_ID' AND exa_alumno_id='$tmp_alu_ID'";
$examendado = $miconexion->consulta($q_verifica);
$row_max_exa=mysql_fetch_array($examendado);
$q_verifica1="SELECT count(*) tot FROM exa_asistencia WHERE
exa_cabecera_examen_id='$exa_ID' AND exa_alumno_id='$tmp_alu_ID'";
$examendado1 = $miconexion->consulta($q_verifica1);
$row_max_exa1=mysql_fetch_array($examendado1);
//Verifica si
ya fue dado el examen
227
if
($row_max_exa["total"]==0 && $row_max_exa1["tot"]==0)
{
echo
'<table width="100%" >';
echo '<tr>';
echo
'<td width="136" bgcolor="#DDEEFF"><div align="center" class="style61"><a
href="respuesta_examen.php?exaid='.$rowmax["exa_cabecera_examen_id"].'
"><img src="../image/examen.ico" name="imgExa" width="20" height="20"
style="cursor:pointer" title="Si Selecciona el Examen recuerde que no debe retirarse,
de lo contrario no podrá volver a rendirlo." ></a></div></td>';
echo
'<td width="53" bgcolor="#DDEEFF"><div align="center"
class="style61">'.$rowmax["exa_parcial"].'</div></td>';
echo
'<td width="212" bgcolor="#DDEEFF"><div align="center"
class="style61"><b>'.$rowmax["asg_nombre"].'</b></div></td>';
echo '<td width="188"
bgcolor="#DDEEFF"><div align="center"
class="style61">'.$rowmax["sem_semestre"].'</div></td>';
echo '<td width="152"
bgcolor="#DDEEFF"><div align="center"
class="style61">'.$rowmax["exa_cab_fecha"].'</div></td>';
if
($rowmax["exa_cab_estado"]=='A')
{
$est="Activo";
}
else
{
$est="Bloqueado";
}
echo
'<td width="168" bgcolor="#DDEEFF"><div align="center"
class="style61">'.$est.'</div></td>';
}
}
mysql_free_result($res);
228
echo '</tr>';
echo '</table>';
?>
<p> </p>
<table width="61%" height="53"
border="0" align="center">
<tr>
<td>
<div align="center">
<table width="436" height="44" border="0" align="center">
<tr>
<td width="304"><div align="center" class="style55"><a
href="simular_examen.php"><strong><img src="../../../images/button_ok.gif"
alt="Examen de Simulación" width="12" height="12" />
Examen de Simulación </strong></a></div></td>
<td width="322" height="43"><div align="center"
class="style55"><a href="inicial_alumno.php"><strong> <img
src="../../../images/cancel_12x12.png" alt="Salir" width="12" height="12"
/> Salir</strong></a> </div></td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<p> </p></td>
</tr>
</table>
</form>
</div></div>
</div>
</div>
</body>
</html>
Fuente:Archivo ”rendir_examen.php”
Elaboración: José Luis Garzón A.
229
Cuadro No 23.
Código para presentar el examen que deberá rendir el alumno
<?php
// iniciamos session
session_start ();
if (!isset($_SESSION["usNick"]))
header('Location: login/login.php');
header("Cache-Control: no-store, no-cache, must-revalidate");
require ("../../../lib/clase_MySql.inc.php");
$miconexion = new DB_mysql ;
$miconexion->conectar();
date_default_timezone_set('America/Guayaquil');
//Id del Alumno
$cia=$_SESSION["usNick"];
$rowidalu=array();
$query ="SELECT exa_alumno_id, nombres, apellidos FROM exa_alumno WHERE
alu_identificacion='$cia'";
$res= $miconexion->consulta($query);
$rowidalu=mysql_fetch_array($res);
mysql_free_result($res);
$nomalu=$rowidalu['nombres'];
$apealu=$rowidalu['apellidos'];
$idalu=$rowidalu['exa_alumno_id'];
$ct=0;
if (isset($_GET["exaid"])) $exa_ID = $_GET["exaid"];
if (isset($_POST["examen_id"])) $exa_ID = $_POST["examen_id"];
if (isset($_POST["Guardar"])) $tmp_cont = $_POST["ncarga"];
if (isset($_POST["Guardar"])) $pre = $_POST["ncarga"];
//Estos son validos
if (isset($_POST["Guardar"])) $cont_preguntas = $_POST["arreglo_pre"];//obtiene el
arreglo de ID de preguntas
if (isset($_POST["Guardar"])) $numpre=$_POST["cant_pregunta"];//total de
preguntas presentadas en el arreglo
if (isset($_POST["Guardar"])) $pre_carga = $_POST["ncarga"];//cantidad de
preguntas de carga
//if (isset($_POST["Guardar"])) $numpre=$_POST["$preg_exa"];
if ($exa_ID!=null)
{
230
$row=array();
$query="SELECT exa_cabecera_examen_id,exa_semestre_id,exa_profesor_id,
exa_asignatura_id,exa_cab_cantidad_item,exa_cab_puntaje_total,exa_cab_estado,exa
_cab_tiempo,exa_cab_tipo,exa_cab_fecha FROM exa_cabecera_examen WHERE
exa_cabecera_examen_id='$exa_ID'";
$res= $miconexion->consulta($query);
$row=mysql_fetch_array($res);
$tmp_tot_exa=$row['exa_cab_puntaje_total'];
//Obtengo el nombre del a asignautra
$id_asg=$row['exa_asignatura_id'];
$q_asign="SELECT asg_nombre FROM exa_asignatura WHERE
exa_asignatura_id='$id_asg'";
$nom_asig= $miconexion->consulta($q_asign);
$row_asg=mysql_fetch_array($nom_asig);
//Registra asistencia al examen ///////////////////////////////////////////
if (! (isset($_POST["Guardar"]))){
$fecha=date("Y-m-d H:i:s");
$tmp_pro=$row['exa_profesor_id'];
$tmp_sem=$row['exa_semestre_id'];
$tmp_asig=$row['exa_asignatura_id'];
$q_lista="INSERT INTO exa_asistencia
(exa_cabecera_examen_id,exa_alumno_id,exa_profesor_id,exa_semestre_id,exa_asig
natura_id,asis_fecha_hora_ingreso,asis_fecha_hora_salida,asis_tipo) VALUES
($exa_ID,$idalu,$tmp_pro,$tmp_sem,$tmp_asig,'$fecha','null','E')";
$miconexion->guardar($q_lista);
}
//////////////////////////////////////////////////////////////////////////
$tiempoexa=$row["exa_cab_tiempo"];
$tiempoMinuto=($tiempoexa/60000);
}
if (isset($_POST["Guardar"]))
{//inicio de if .1
//Uptualiza la asistencia registrando la salida del examen
$semestreid=$row["exa_semestre_id"];
$asignaturaid=$row["exa_asignatura_id"];
$examenid=$row["exa_cabecera_examen_id"];
$idprof=$row["exa_profesor_id"];
$fechas=date("Y-m-d H:i:s");
$q_salida="UPDATE exa_asistencia SET asis_fecha_hora_salida='$fechas'
WHERE exa_cabecera_examen_id='$examenid' AND exa_alumno_id='$idalu'";
231
$miconexion->guardar($q_salida);
for ($m=1;$m<=$numpre;$m++)
{// inicio de for .1
$tmp_ptos=0;
$op_correcta='';
$txt_alternativa='';
$tmp_opcion='';
//Para obtener la pregunta que se presento
$tmp_id_pre=$cont_preguntas[$m];
$q_pre_alu="SELECT exa_pregunta_id, preg_tipo, preg_tema,
preg_puntos, preg_estado FROM exa_pregunta WHERE exa_pregunta_id
='$tmp_id_pre'";
$tmp_result= $miconexion->consulta($q_pre_alu);
$tmp_row=mysql_fetch_array($tmp_result);
$tmp_pre=$tmp_row["preg_tema"];
$tmp_tipo_pre=$tmp_row["preg_tipo"];
$pregunta_id=$tmp_row["exa_pregunta_id"];
$ruta = "";
$estado_pre='A';
//Verifica que tipo de pregunta es
if ($tmp_tipo_pre=="C")
{//inicio de if 2
$tmp_ptos=0;
$ruta = "N";
if(!empty($_FILES['exafile'.$m]['name']))
{ //inicio if 3
$a = uniqid(rand(), true);
$uploaddir =
'/wamp/www/elearning_cisc/contenido/Examen/FileExamen/';
$uploadfile =
$uploaddir.$apealu.'_'.$nomalu.'_'.$a.basename($_FILES['exafile'.$m]['name']);
$uploaddirexa ='FileExamen/';
$uploadfile_exa =
$uploaddirexa.$apealu.'_'.$nomalu.'_'.$a.basename($_FILES['exafile'.$m]['name']);
echo '<pre>';
if
(move_uploaded_file($_FILES['exafile'.$m]['tmp_name'], $uploadfile))
{
$ruta = $uploadfile_exa;
$estado_pre='P';
}
}//fin de if 3
}
232
else
{
//Verifica si el alumno selecciono la opcion
if (isset($_POST["op".$m]))
{
$tmp_opcion=$_POST["op".$m];
$q_alternativa="SELECT exa_alternativa_id,
exa_pregunta_id, alt_alternativa, alt_flag, alt_estado FROM exa_alternativa WHERE
exa_alternativa_id='$tmp_opcion'";
$op= $miconexion->consulta($q_alternativa);
$tmp1_row=mysql_fetch_array($op);
$txt_alternativa=$tmp1_row["alt_alternativa"];
$txt_alt_flag=$tmp1_row["alt_flag"];
if ($txt_alt_flag=="Y")
{
$tmp_ptos=$tmp_row["preg_puntos"];
}
else
{
$tmp_ptos=0;
}
}
else
{
$tmp_opcion='';
$tmp_ptos=0;
}
$q_alt_corecta="SELECT exa_alternativa_id, exa_pregunta_id,
alt_alternativa, alt_flag, alt_estado FROM exa_alternativa WHERE
exa_pregunta_id='$tmp_id_pre' AND alt_flag='Y'";
$alt_ok= $miconexion->consulta($q_alt_corecta);
$opcion_ok=mysql_fetch_array($alt_ok);
$op_correcta=$opcion_ok["alt_alternativa"];
}//fin de if 2
echo "Alumno :".$idalu."<br />";
echo "Profesor :".$idprof."<br />";
echo "Semestre :".$semestreid."<br />";
echo "Asignatura :".$asignaturaid."<br />";
echo "Examen :".$examenid."<br />";
echo "Pregunta :".$tmp_pre."<br />";
echo "ID Opcion :".$tmp_opcion."<br />";
echo "Ruta :".$ruta."<br />";
echo "Puntos :".$tmp_ptos."<br />";
233
echo "Opcion OK :".$op_correcta."<br />";
echo "Tipo de Pregunta :".$tmp_tipo_pre."<br />";
echo "<br />";
$q_guardapre="INSERT INTO exa_calificacion
(exa_alumno_id,exa_profesor_id,exa_semestre_id,exa_asignatura_id,exa_cabecera_e
xamen_id,cal_tipo_pre, exa_pregunta_id, cal_pregunta, cal_seleccion_alumno,
cal_seleccion_correcta, cal_rutaarchivo, cal_puntos, cal_estado) VALUES
('$idalu',$idprof,'$semestreid','$asignaturaid','$examenid','$tmp_tipo_pre','$pregunta_i
d','$tmp_pre','$txt_alternativa','$op_correcta','$ruta','$tmp_ptos','$estado_pre')";
$results = $miconexion->guardar($q_guardapre);
header("Location: consulta_examen.php");
}//fin de for .1
}//fin de if .1
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<link rel="stylesheet" href="../css/template.css" type="text/css" />
<script type="text/javascript" src="../Docente/js/funciones.js"> </script>
<script type="text/javascript" src="../../../js/prototype.js"> </script>
<style type="text/css">
<!--
.style1 {
color: #FF0000;
font-weight: bold;
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
}
-->
</style>
<style type="text/css">
<!--
.style52 {font-family: Arial, Helvetica, sans-serif; font-weight: bold; font-size: 12px;
}
.style53 {
color: #1b78b7;
font-weight: bold;
234
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
}
-->
</style>
</head>
<script type="text/javascript">
function examen(tiempoexa){
reloj(tiempoexa);
}
function terminoTiempo(){
$("tiempo").innerHTML="El Examen ha terminado, por favor guarde sus
respuestas..";
setTimeout ("fin()", 10);
}
function fin(){
//window.location="consulta_examen.php";
//window.location="respuesta_examen.php?exaid=<?php echo $exa_ID; ?>";
$("TablePreg").style.display="none";
}
function reloj(tiempoexa){
if(tiempoexa == 0) { terminoTiempo(); return;}
varTime = (tiempoexa/60000);
$("tiempo").innerHTML="Usted tiene <b>[ "+varTime+" ]</b> minutos para
resolver el examen. <br><span style='font-size:11px'><b>Antes de guardar verifique
todas sus respuestas !</b></span>";
tiempoexa = tiempoexa - 60000 ;
setTimeout("reloj('"+tiempoexa+"')",60000);
}
</script>
<body onload="examen(<?php echo $row["exa_cab_tiempo"];?>);">
<div class="center" align="center">
<!-- Inicio de DIV donde se muestra las preguntas -->
<div id="wrapper" align="center" style="height:100%; overflow:auto;padding-
top:0px;" >
<div style="background:#EBEBEB
url(/elearning_cisc/contenido/wikikey/images/left_shadow.jpg) repeat-y left;
width:90%; height:600px">
235
<div
style="background:url(/elearning_cisc/contenido/wikikey/images/right_shadow.jpg)
repeat-y right; height:600px" align="center">
<form enctype="multipart/form-data" action="respuesta_examen.php"
method="POST" >
<div align="center" style="padding-top:10px">
<h3>Examen de [ <span style="color:#000; font-weight:bold"><?php echo
$row_asg["asg_nombre"]; ?></span> ] - Puntaje [ <span
style="color:#000; font-weight:bold"><?php echo $tmp_tot_exa; ?></span> ]
pts</h3>
</div>
<div id="tiempo" align="center" style="font:14px Verdana, Geneva, sans-serif;
margin-top:7px" >
Usted tiene <b>[ <?php echo $tiempoMinuto; ?> ]</b> minutos para resolver el
examen. <br><span style="font-size:11px"><b>Antes de guardar verifique todas sus
respuestas !</b></span>
</div>
<input type="hidden" name="examen_id" value="<?php echo $exa_ID; ?>" />
<?php
//============================================================
======================
//============================================================
======================
//PRESENTACION DE EXAMEN SEGUN SEA SELECCIONADO
//============================================================
======================
//============================================================
======================
//Obtener cantidad de preguntas creadas
$q_cantpre="SELECT count(*) as cant FROM exa_pregunta WHERE
exa_cabecera_examen_id='$exa_ID'";
$result1= $miconexion->consulta($q_cantpre);
$r_cantpre=mysql_fetch_array($result1);
$tot_preguntas=$r_cantpre['cant'];
//Obtengo cantidad de preguntas para el examen
$q_can_pre_exa="SELECT exa_cab_cantidad_item,exa_cab_puntaje_total FROM
exa_cabecera_examen WHERE exa_cabecera_examen_id='$exa_ID'";
$result2= $miconexion->consulta($q_can_pre_exa);
$r_preexa=mysql_fetch_array($result2);
$preg_exa=$r_preexa['exa_cab_cantidad_item'];
236
//Obtengo el id final de las preguntas del examen seleccionado
$q_inicial= "SELECT MIN(exa_pregunta_id) AS minidpre FROM exa_pregunta
WHERE exa_cabecera_examen_id='$exa_ID'";
$result3= $miconexion->consulta($q_inicial);
$r_inicial=mysql_fetch_array($result3);
$vinicial=$r_inicial["minidpre"];
//Obtengo el id inicial de las preguntas del examen seleccionado
$lim_final= "SELECT MAX(exa_pregunta_id) AS maxidpre FROM exa_pregunta
WHERE exa_cabecera_examen_id='$exa_ID'";
$result4= $miconexion->consulta($lim_final);
$r_final=mysql_fetch_array($result4);
$vfinal=$r_final["maxidpre"];
$int_preg_exa = (int)$preg_exa;
$i=1;
?>
<br />
<input name="Guardar" type="submit" value="Concluir Examen"
style="width:150px"/>
<?php
echo '<table width="880px" border="0" cellpadding="4" id="TablePreg">';
//Obtengo las preguntas.
$arr_preg=array();
$muestra=1;
$cont=0;
$sum_pto_pre=0;
$tot_punto_exa=0;
$flag=0;
//ciclo repetitivo para mostrar el total de preg
do
{
//Obtiene el id de La pregunta de forma aleatoria
$num=rand($vinicial,$vfinal);
//Selecciono la pregunta de forma aleatoria.
$q_preg="SELECT exa_pregunta_id, preg_tipo, preg_tema, preg_puntos,
preg_estado FROM exa_pregunta WHERE exa_pregunta_id ='$num' AND
exa_cabecera_examen_id='$exa_ID'";
$result5= $miconexion->consulta($q_preg);
$r_pregunta=mysql_fetch_array($result5);
$preg_exa=$r_pregunta["preg_tema"];
$preg_ptos=$r_pregunta["preg_puntos"];
if ($preg_exa!="")
{
237
//Verifica si es la primera pregunta
if ($i==1)
{
$muestra=1;
}
else
{
//Verifico si la pregunta ya fue mostrada
for ($r=1;$r<=$i-1;$r++)
{
if($arr_preg[$r]==$num)
{ //Determina que ya existe.
$muestra=0;
break 1;
}//fin IF interno
else
{
//Determina que no existe.
$muestra=1;
}
} //fin For
}// Fin del if externo
if ($muestra==1 )
{
//Registro el Id de la pregunta que se mostrará
$arr_preg[$i]=$num;
$sum_pto_pre=$sum_pto_pre + $preg_ptos;
$i=$i+1;
}// Fin del if 2
}// Fin del if principal
if (count($arr_preg)==$int_preg_exa)
{
if ($sum_pto_pre!=$tmp_tot_exa)
{
$i=1;
$muestra=1;
$cont=0;
$sum_pto_pre=0;
$tot_punto_exa=0;
$arr_preg=array();
238
}
else
{
$flag=1;
}
}
}
while ($flag!=1);
$i=1;
for ($c=1;$c<=count($arr_preg);$c++)
{
$id_pre=$arr_preg[$c];
$q_preg="SELECT exa_pregunta_id, preg_tipo, preg_tema, preg_puntos,
preg_estado FROM exa_pregunta WHERE exa_pregunta_id ='$id_pre' AND
exa_cabecera_examen_id='$exa_ID'";
$result5= $miconexion->consulta($q_preg);
$r_pregunta=mysql_fetch_array($result5);
$preg_exa=$r_pregunta["preg_tema"];
$preg_ptos=$r_pregunta["preg_puntos"];
?>
<div align="left" style="color:#006600; font-size:12px; font-weight:bold;
width:94%">
<?php echo $i.'° Pregunta // Puntaje [ <span
style="color:#000;"><b>'.$preg_ptos."</b></span> ] pts"; ?><br />
<textarea class="txtpreg" name="pregunta<?php echo $i; ?>" id="pregunta"
readonly="readonly" style=" width:100%;"><?php echo $preg_exa; ?></textarea>
</div>
<?php
//Muestra opción de carga de archivo.
if ($r_pregunta["preg_tipo"]=='C')
{
$cont=$cont + 1;
echo '<input type="hidden" name="MAX_FILE_SIZE"
value="300000000" />';
echo '<label>Cargar el archivo :<br /><input
name="exafile'.$i.'" type="file" size="20"/></label>';
}
else
{
239
$q_preg='SELECT exa_alternativa_id,
exa_pregunta_id, alt_alternativa, alt_flag, alt_estado FROM exa_alternativa WHERE
exa_pregunta_id='.$id_pre.' ORDER BY 1';
$tmp1_row = array();
$op= $miconexion->consulta($q_preg);
//INICIO DE WHILE INTERNO PARA
ALTERNATIVAS
while($tmp1_row=mysql_fetch_array($op))
{ //Muestra alternativas ?>
<div align="left" style="width:94%; background-
color:#B9FFBC; border:1px solid #999">
<?php
$ct=$ct+1;
if ($r_pregunta["preg_tipo"]=='O')
{
?>
<input name="op<?php echo $i; ?>" type="radio"
value="<?php echo $tmp1_row["exa_alternativa_id"]; ?>"/> <?php echo
$tmp1_row["alt_alternativa"];}?>
<?php
if ($r_pregunta["preg_tipo"]=='I')
{
?>
<input name="op<?php echo $i; ?>"
type="radio" value="<?php echo $tmp1_row["exa_alternativa_id"]; ?>"/>
<?php $ruta='../FileExamen/'.$tmp1_row["alt_alternativa"]; ?>
<img src="<?php echo $ruta; ?> "
name="img."<?php echo $i; ?> alt="opcion" width="25" height="25"
style="cursor:pointer" title="Opcion" ><br>
<?php } ?>
</div>
<?php } // FIN WHILE INTERNO
echo '<br />';
}
$i=$i+1;
}
?>
<input type="hidden" name="ncarga" value="<?php echo $cont; ?>" />
<input type="hidden" name="cant_pregunta" value="<?php echo ($i-1);
?>" />
240
<?php
for ($c=1;$c<=($i-1);$c++)
{
echo '<input type="hidden"
name="arreglo_pre['.$c.']" value="'.$arr_preg[$c].'" />';
} ?>
</form>
</div></div></div>
</div>
</body>
<script>
alert("No salga del Examen, caso contrario no podrá volver a rendirlo..");
</script>
</html>
Fuente:Archivo ”respuesta_examen.php”
Elaboración: José Luis Garzón A.
241
Cuadro No 24.
Código para presentar el listado de examen de simulación al que pueden acceder
los alumnos
<?php
session_start ();
if (!isset($_SESSION["usNick"]))
header('Location: login/login.php');
//SELECCIONAR LOS CORREOS DE LOS ESTUDIANTES DEL CURSO AL
QUE SE LE CREO EL EXAMEN
//RECOMENDANDO LIBROS DE LA BIBLIOTECA VIRTUAL COMO LINKS
DE DESCARGA.
//esto es para decirle al cache de procesos del navegador que se desactive
header("Cache-Control: no-store, no-cache, must-revalidate");
require ("../../../lib/clase_MySql.inc.php");
$miconexion = new DB_mysql ;
$miconexion->conectar();
$fecha=date("Y-m-d");
//echo $fecha;
//Obtiene el # de Cedula del profesor para obtener el ID
$ci=$_SESSION["usNick"];
//$rowexa=array();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<jdoc:include type="head" />
<link rel="stylesheet" href="../css/template.css" type="text/css" />
<script type="text/javascript" src="../Docente/js/funciones.js"> </script>
<script type="text/javascript" src="../../../js/prototype.js"> </script>
<style type="text/css">
<!--
.style55 {font-size: 14px; color: #1b78b7; font-weight: bold;}
.style47 {font-family: Arial, Helvetica, sans-serif;
font-weight: bold;
font-size: 10px;
}
.style52 {font-family: Arial, Helvetica, sans-serif; font-weight: bold; font-size: 12px;
}
242
.style53 {color: #FFFFFF}
.style56 {color: #DDEEFF}
.style57 {color: #000066}
.style60 {font-size: 12px; color: #1b78b7; font-family: Arial, Helvetica, sans-serif;}
-->
</style>
</head>
<body>
<div class="center" align="center">
<div id="top">
<div id="tabarea">
<table cellpadding="0" cellspacing="0" class="pill"
align="center">
<tr>
<td class="pill_m"><div id="pillmenu">
<ul id="mainlevel-nav">
<li><a class="mainlevel-nav"
href="../Alumno/rendir_examen.php"><b>Rendir Examen</b> </a></li>
<li><a class="mainlevel-nav"
href="../Alumno/simular_examen.php"><b>Simulación
Examen</b></a></li>
<li><a class="mainlevel-nav"
href="../Alumno/consulta_examen.php"><b>Consultar Examen</b></a></li>
</ul>
</div></td>
</tr>
</table>
</div>
</div>
<div id="wrapper" align="center" style="height:100%; overflow:auto;padding-
top:0px;" >
<div style="background:#EBEBEB
url(/elearning_cisc/contenido/wikikey/images/left_shadow.jpg) repeat-y left;
width:90%; height:600px">
<div
style="background:url(/elearning_cisc/contenido/wikikey/images/right_shadow.jpg)
repeat-y right; height:600px">
<br />
<div style="padding-left:13px">
<div style='float:left; margin-right:8px;'><img
src="/elearning_cisc/images/Default Document-41.ico" alt="examen" /></div><div
style=' text-align:left'><h3>Listado de Examenes de Simulación</h3></div>
243
<div class='small' style='margin-bottom:7px; color:#000'><b>Seleccione el
Examen para empezar</b></div>
</div>
<br />
<form id="form1" name="form1" method="post" action="">
<table width="97%" border="0" >
<tr>
<td>
<table width="100%" height="22" border="0" cellpadding="0"
cellspacing="0">
<tr bgcolor="#6D95C5">
<td width="133" height="18" bgcolor="#6D95C5"
class="style47"><div align="center" class="style52">
<div align="center" class="style53">
<div align="center">Examen</div>
</div>
</div></td>
<td width="212" class="style47"><div align="center"
class="style52">
<div align="center" class="style53">
<div align="center">Asignatura</div>
</div>
</div></td>
<td width="188" class="style47"><div align="center"
class="style52">
<div align="center" class="style53">
<div align="center">Curso</div>
</div>
</div></td>
<td width="152" class="style47"><div align="center"
class="style52">
<div align="center" class="style53">
<div align="center">Fecha</div>
</div>
</div></td>
<td width="167" class="style47"><div align="center"
class="style52">
<div align="center" class="style53">
<div align="center">Estado</div>
</div>
</div></td>
</tr> </table>
<?php
244
$query ="SELECT DISTINCT e.exa_cabecera_examen_id, t.sem_semestre,
x.asg_nombre, e.exa_cab_fecha, e.exa_cab_tipo, e.exa_cab_estado FROM
exa_cabecera_examen e, exa_semestre t, exa_alumno a, exa_asignatura x,
exa_asig_alumno s WHERE e.exa_cab_tipo='S' and e.exa_cab_estado='A' and
e.exa_publicado='P' and a.alu_identificacion='$ci' and
s.exa_alumno_id=a.exa_alumno_id and e.exa_asignatura_id=s.exa_asignatura_id and
e.exa_asignatura_id=x.exa_asignatura_id and e.exa_semestre_id=t.exa_semestre_id
and e.exa_semestre_id=s.exa_semestre_id ORDER BY 1";
$res= $miconexion->consulta($query);
while($rowmax=mysql_fetch_array($res))
{
echo '<table
width="100%">';
echo '<tr>';
//132
//echo '<td
width="133" bgcolor="#DDEEFF"><div align="center" class="style61"><a
href="simulacion_examen.php?exaid='.$rowmax["exa_cabecera_examen_id"].'">'.$r
owmax["exa_cabecera_examen_id"].' <img src="../image/examen.ico"
name="imgExa" width="16" height="16" style="cursor:pointer" title="Ingresa al
examen"></a></div></td>';
echo '<td
width="133" bgcolor="#DDEEFF"><div align="center" class="style61"><a
href="simulacion_examen.php?exaid='.$rowmax["exa_cabecera_examen_id"].'"><im
g src="../image/examen.ico" name="imgExa" width="16" height="16"
style="cursor:pointer" title="Ingresa al examen"></a></div></td>';
//225
echo '<td
width="212" bgcolor="#DDEEFF"><div align="center"
class="style61"><b>'.$rowmax["asg_nombre"].'</b></div></td>';
echo '<td width="188"
bgcolor="#DDEEFF"><div align="center"
class="style61">'.$rowmax["sem_semestre"].'</div></td>';
echo '<td width="152"
bgcolor="#DDEEFF"><div align="center"
class="style61">'.$rowmax["exa_cab_fecha"].'</div></td>';
if
($rowmax["exa_cab_estado"]=='A')
{
$est="Activo";
}
245
else
{
$est="Bloqueado";
}
echo '<td
width="167" bgcolor="#DDEEFF"><div align="center"
class="style61">'.$est.'</div></td>';
//echo '<td
width="50" bgcolor="#DDEEFF"><div align="center" class="style61"><a
href="elimina_examen.php?exaid='.$rowmax["exa_cabecera_examen_id"].'"><img
src="../../../images/ico3.png" name="imgElimina" alt="Del" width="22" height="22"
style="cursor:pointer" title="Elimina el examen" ></a></div></td>';
}
mysql_free_result($res);
echo '</tr>';
echo '</table>';
?>
<p> </p>
<table width="61%"
height="53" border="0" align="center">
<tr>
<td>
<div align="center">
<table width="436" height="44" border="0" align="center">
<tr>
<td width="304"><div align="center" class="style55"><a
href="rendir_examen.php"><strong><img src="../../../images/button_ok.gif" alt="Dar
Examen" width="12" height="12" /> Ir a Examen
Real</strong></a></div></td>
<td width="322" height="43"><div align="center"
class="style55"><a href="inicial_alumno.php"><strong> <img
src="../../../images/cancel_12x12.png" alt="Salir" width="12" height="12"
/> Salir</strong></a> </div></td>
</tr>
</table>
</div>
</td>
246
</tr>
</table>
<p> </p></td>
</tr>
</table>
</form>
</div>
</div>
</div>
</div>
</body>
</html>
Fuente:Archivo ”simular_examen.php”
Elaboración: José Luis Garzón A.
247
Cuadro No 25.
Código para presentar el examen de simulación seleccionado por el alumno
<?php
// iniciamos session
session_start ();
if (!isset($_SESSION["usNick"]))
header('Location: login/login.php');
header("Cache-Control: no-store, no-cache, must-revalidate");
require ("../../../lib/clase_MySql.inc.php");
$miconexion = new DB_mysql ;
$miconexion->conectar();
//Id del Alumno
$cia=$_SESSION["usNick"];
$rowidalu=array();
$query ="SELECT exa_alumno_id, nombres, apellidos FROM exa_alumno WHERE
alu_identificacion='$cia'";
$res= $miconexion->consulta($query);
$rowidalu=mysql_fetch_array($res);
mysql_free_result($res);
$nomalu=$rowidalu['nombres'];
$apealu=$rowidalu['apellidos'];
$idalu=$rowidalu['exa_alumno_id'];
if (isset($_GET["exaid"])) $exa_ID = $_GET["exaid"];
if (isset($_POST["examen_id"])) $exa_ID = $_POST["examen_id"];
if (isset($_POST["procesar"])) $tmp_cont = $_POST["ncarga"];
if (isset($_POST["procesar"])) $pre = $_POST["ncarga"];
//Estos son validos
if (isset($_POST["procesar"])) $cont_preguntas = $_POST["arreglo_pre"];//obtiene
el arreglo de ID de preguntas
if (isset($_POST["procesar"])) $numpre=$_POST["cant_pregunta"];//total de
preguntas presentadas en el arreglo
if (isset($_POST["procesar"])) $pre_carga = $_POST["ncarga"];//cantidad de
preguntas de carga
$ct=0;
//if (isset($_POST["Guardar"])) $numpre=$_POST["$preg_exa"];
if ($exa_ID!=null)
{
248
$row=array();
$query="SELECT exa_cabecera_examen_id,exa_semestre_id,exa_profesor_id,
exa_asignatura_id,exa_cab_cantidad_item,exa_cab_puntaje_total,exa_cab_estado,exa
_cab_tiempo,exa_cab_tipo,exa_cab_fecha FROM exa_cabecera_examen WHERE
exa_cabecera_examen_id='$exa_ID'";
$res= $miconexion->consulta($query);
$row=mysql_fetch_array($res);
$tmp_tot_exa=$row['exa_cab_puntaje_total'];
$id_asg=$row['exa_asignatura_id'];
$q_asign="SELECT asg_nombre FROM exa_asignatura WHERE
exa_asignatura_id='$id_asg'";
$nom_asig= $miconexion->consulta($q_asign);
$row_asg=mysql_fetch_array($nom_asig);
}
if (isset($_POST["procesar"]))
{//inicio de if .1
$semestreid=$row["exa_semestre_id"];
$asignaturaid=$row["exa_asignatura_id"];
$examenid=$row["exa_cabecera_examen_id"];
$idprof=$row["exa_profesor_id"];
$tmp_ptos=0;
$tmp_ptosC=0;
for ($m=1;$m<=$numpre;$m++)
{// inicio de for .1
$op_correcta='';
$txt_alternativa='';
$tmp_opcion='';
//Para obtener la pregunta que se presento
$tmp_id_pre=$cont_preguntas[$m];
$q_pre_alu="SELECT exa_pregunta_id, preg_tipo, preg_tema,
preg_puntos, preg_estado FROM exa_pregunta WHERE exa_pregunta_id
='$tmp_id_pre'";
$tmp_result= $miconexion->consulta($q_pre_alu);
$tmp_row=mysql_fetch_array($tmp_result);
$tmp_pre=$tmp_row["preg_tema"];
$tmp_tipo_pre=$tmp_row["preg_tipo"];
$pregunta_id=$tmp_row["exa_pregunta_id"];
$ruta = "";
$estado_pre='A';
249
//Verifica que tipo de pregunta es
if ($tmp_tipo_pre=="C")
{//inicio de if 2
$tmp_ptosC=$tmp_ptosC + $tmp_row["preg_puntos"];
}
else
{
//Verifica si el alumno selecciono la opcion
if (isset($_POST["op".$m]))
{
$tmp_opcion=$_POST["op".$m];
$q_alternativa="SELECT exa_alternativa_id,
exa_pregunta_id, alt_alternativa, alt_flag, alt_estado FROM exa_alternativa WHERE
exa_alternativa_id='$tmp_opcion'";
$op= $miconexion->consulta($q_alternativa);
$tmp1_row=mysql_fetch_array($op);
$txt_alternativa=$tmp1_row["alt_alternativa"];
$txt_alt_flag=$tmp1_row["alt_flag"];
if ($txt_alt_flag=="Y")
{
$tmp_ptos=$tmp_ptos +
$tmp_row["preg_puntos"];
}
else
{
$tmp_ptos=$tmp_ptos + 0;
}
}
$q_alt_corecta="SELECT exa_alternativa_id, exa_pregunta_id,
alt_alternativa, alt_flag, alt_estado FROM exa_alternativa WHERE
exa_pregunta_id='$tmp_id_pre' AND alt_flag='Y'";
$alt_ok= $miconexion->consulta($q_alt_corecta);
$opcion_ok=mysql_fetch_array($alt_ok);
$op_correcta=$opcion_ok["alt_alternativa"];
}//fin de if 2
}//fin de for .1
}//fin de if .1
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<link rel="stylesheet" href="../css/template.css" type="text/css" />
<script type="text/javascript" src="../Docente/js/funciones.js"> </script>
250
<script type="text/javascript" src="../../../js/prototype.js"> </script>
<style type="text/css">
<!--
.style1 {
color: #FF0000;
font-weight: bold;
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
}
-->
</style>
<style type="text/css">
<!--
.style52 {font-family: Arial, Helvetica, sans-serif; font-weight: bold; font-size: 12px;
}
.style53 {
color: #1b78b7;
font-weight: bold;
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
}
-->
</style>
</head>
<body onload="">
<div class="center" align="center">
<div id="top">
<div id="tabarea" >
<table cellpadding="0" cellspacing="0" class="pill"
align="center">
<tr>
<td class="pill_m"><div id="pillmenu">
<ul id="mainlevel-nav">
<li><a class="mainlevel-nav"
href="../Alumno/rendir_examen.php"><b>Rendir Examen</b> </a></li>
<li><a class="mainlevel-nav"
href="../Alumno/simular_examen.php"><b>Simulación
Examen</b></a></li>
251
<li><a class="mainlevel-nav"
href="../Alumno/consulta_examen.php"><b>Consultar Examen</b></a></li>
</ul>
</div></td>
</tr>
</table>
</div>
</div>
<!-- Inicio de DIV donde se muestra las preguntas -->
<div id="wrapper" ><?php echo '<form enctype="multipart/form-data"
action="simulacion_examen.php" method="POST">';
echo '<p class="style53"><h3>Examen de Simulación de
'.$row_asg["asg_nombre"].'</h3></p>';
echo '<div id="ms" align="center" style="background-color: #fdfdfd;border:1px
solid #ff8800;width:70%;padding:5px" ><h3><span class="style1"><font
size="2">Este examen no es calificado, y no representa puntaje
alguno...!!</font></span></h3></div>';?>
<input type="hidden" name="examen_id" value="<?php echo $exa_ID; ?>"/>
<br />
<?php
if (isset($_POST["procesar"]))
{//inicio de if .1
echo "Puntos por Preguntas Objetivas : ".$tmp_ptos."<br />";
echo "Puntaje restante por los programas : ".$tmp_ptosC."<br />";
echo "<br />";
echo '<table width="61%" height="53" border="2" align="center">
<tr>
<td>
<div align="center" style="border-bottom-
color:#0099FF">
<table width="436" height="44" border="0" align="center">
<tr>
<td width="304"><div align="center" class="style55"><a
href="simular_examen.php"><strong><img src="../../../images/button_ok.gif"
alt="Dar Examen" width="12" height="12" /> Seleccionar otro
Examen</strong></a></div></td>
<td width="322" height="43"><div align="center" class="style55"><a
href="inicial_alumno.php"><strong> <img src="../../../images/cancel_12x12.png"
alt="Salir" width="12" height="12" /> Salir</strong></a>
</div></td>
</tr>
</table>
</div>
</td>
252
</tr>
</table>';
echo "<br />";
}
else
{
//======================================================
============================
//======================================================
============================
//PRESENTACION DE EXAMEN SEGUN SEA SELECCIONADO
//======================================================
============================
//======================================================
============================
//Obtener cantidad de preguntas creadas
$q_cantpre="SELECT count(*) as cant FROM exa_pregunta WHERE
exa_cabecera_examen_id='$exa_ID'";
$result1= $miconexion->consulta($q_cantpre);
$r_cantpre=mysql_fetch_array($result1);
$tot_preguntas=$r_cantpre['cant'];
//Obtengo cantidad de preguntas para el examen
$q_can_pre_exa="SELECT exa_cab_cantidad_item FROM
exa_cabecera_examen WHERE exa_cabecera_examen_id='$exa_ID'";
$result2= $miconexion->consulta($q_can_pre_exa);
$r_preexa=mysql_fetch_array($result2);
$preg_exa=$r_preexa['exa_cab_cantidad_item'];
//Obtengo el id final de las preguntas del examen seleccionado
$q_inicial= "SELECT MIN(exa_pregunta_id) AS minidpre FROM
exa_pregunta WHERE exa_cabecera_examen_id='$exa_ID'";
$result3= $miconexion->consulta($q_inicial);
$r_inicial=mysql_fetch_array($result3);
$vinicial=$r_inicial["minidpre"];
//Obtengo el id inicial de las preguntas del examen seleccionado
$lim_final= "SELECT MAX(exa_pregunta_id) AS maxidpre FROM
exa_pregunta WHERE exa_cabecera_examen_id='$exa_ID'";
$result4= $miconexion->consulta($lim_final);
$r_final=mysql_fetch_array($result4);
$vfinal=$r_final["maxidpre"];
$int_preg_exa = (int)$preg_exa;
$i=1;
253
//echo '<form enctype="multipart/form-data" action="respuesta_examen.php"
method="POST">';
echo '<div align="center" style="border-bottom-color:#0099FF"> <br/><input
name="procesar" type="submit" value="Procesar Examen"
style="width:150px"/><br/> </div>';
echo '<table width="880px" border="0" cellpadding="4" id="TablePreg">';
//Obtengo las preguntas.
$arr_preg=array();
$muestra=1;
$cont=0;
$sum_pto_pre=0;
$tot_punto_exa=0;
$flag=0;
//ciclo repetitivo para mostrar el total de preg
do
{
//Obtiene el id de La pregunta de forma aleatoria
$num=rand($vinicial,$vfinal);
//Selecciono la pregunta de forma aleatoria.
$q_preg="SELECT exa_pregunta_id, preg_tipo, preg_tema, preg_puntos,
preg_estado FROM exa_pregunta WHERE exa_pregunta_id ='$num' AND
exa_cabecera_examen_id='$exa_ID'";
$result5= $miconexion->consulta($q_preg);
$r_pregunta=mysql_fetch_array($result5);
$preg_exa=$r_pregunta["preg_tema"];
$preg_ptos=$r_pregunta["preg_puntos"];
if ($preg_exa!="")
{
//Verifica si es la primera pregunta
if ($i==1)
{
$muestra=1;
}
else
{
//Verifico si la pregunta ya fue mostrada
for ($r=1;$r<=$i-1;$r++)
{
if($arr_preg[$r]==$num)
{ //Determina que ya existe.
$muestra=0;
break 1;
}//fin IF interno
254
else
{
//Determina que no existe.
$muestra=1;
}
} //fin For
}// Fin del if externo
if ($muestra==1 )
{
//Registro el Id de la pregunta que se mostrará
$arr_preg[$i]=$num;
$sum_pto_pre=$sum_pto_pre + $preg_ptos;
$i=$i+1;
}// Fin del if 2
}// Fin del if principal
if (count($arr_preg)==$int_preg_exa)
{
if ($sum_pto_pre!=$tmp_tot_exa)
{
$i=1;
$muestra=1;
$cont=0;
$sum_pto_pre=0;
$tot_punto_exa=0;
$arr_preg=array();
}
else
{
$flag=1;
}
}
}
while ($flag!=1);
$i=1;
for ($c=1;$c<=count($arr_preg);$c++)
{
$id_pre=$arr_preg[$c];
255
$q_preg="SELECT exa_pregunta_id, preg_tipo, preg_tema, preg_puntos,
preg_estado FROM exa_pregunta WHERE exa_pregunta_id ='$id_pre' AND
exa_cabecera_examen_id='$exa_ID'";
$result5= $miconexion->consulta($q_preg);
$r_pregunta=mysql_fetch_array($result5);
$preg_exa=$r_pregunta["preg_tema"];
$preg_ptos=$r_pregunta["preg_puntos"];
echo '<br>';
//Inicio de fila # 1
echo '<tr>';
//Inicio de Columna #1 de la Fila #1
echo '<td colspan="6" style="border:1px solid #000000">';
//Inicio DIV dentro de Columna #1 de la Fila #1
echo '<div align="left" class="style53">';
echo 'Pregunta #: '.$i.' Puntaje: '.$preg_ptos;
echo '<br>';
echo '<br>';
//Muestra Preguntas...
echo '<textarea class="txtpreg" name="pregunta'.$i.'" cols="60" rows="4"
id="pregunta" style="width:100%" disabled="disabled">'.$preg_exa.'</textarea>';
echo '<p> </p>';
//Muestra opción de carga de archivo.
if ($r_pregunta["preg_tipo"]=='C')
{
$cont=$cont + 1;
echo '<input type="hidden" name="MAX_FILE_SIZE"
value="300000000" />';
echo '<label>Cargar el archivo :<br /><input
name="exafile'.$i.'" type="file" size="20"/></label>';
}
else
{
$q_preg='SELECT exa_alternativa_id,
exa_pregunta_id, alt_alternativa, alt_flag, alt_estado FROM exa_alternativa WHERE
exa_pregunta_id='.$id_pre.' ORDER BY 1';
$tmp1_row = array();
$op= $miconexion->consulta($q_preg);
//INICIO DE WHILE INTERNO PARA
ALTERNATIVAS
while($tmp1_row=mysql_fetch_array($op))
{
//Muestra alternativas
$ct=$ct+1;
256
if ($r_pregunta["preg_tipo"]=='O')
{
echo '<label><input name="op'.$i.'"
type="radio" align="left" value="'.$tmp1_row["exa_alternativa_id"].'"/>
'.$tmp1_row["alt_alternativa"].' </label><br>';
}
if ($r_pregunta["preg_tipo"]=='I')
{
echo '<label><input name="op'.$i.'"
type="radio" align="left" value="'.$tmp1_row["exa_alternativa_id"].'"/> </label>';
$ruta='../FileExamen/'.$tmp1_row["alt_alternativa"];
echo '<img src="'.$ruta.'" name="img"'.$i.'
alt="opcion" width="40" height="40" style="cursor:pointer" title="Opcion" ><br>';
}
} // FIN WHILE INTERNO
echo '</div>'; //Fin DIV dentro de Columna #1 de la
Fila #1
echo '<br>';
echo '</td>'; //Fin de Columna #1 de la Fila #1
echo '</tr>'; //Fin de fila # 1
}
$i=$i+1;
}
echo '<tr>';
echo '<td> ';
echo '<br>';
echo '</td>';
echo '</tr>';
echo '</table>';
}
?>
</div>
<input type="hidden" name="ncarga" value="<?php echo $cont; ?>" />
<input type="hidden" name="cant_pregunta" value="<?php echo ($i-1);
?>" />
<?php
if (!(isset($_POST["procesar"])))
{
for ($c=1;$c<=($i-1);$c++)
{
257
echo '<input type="hidden"
name="arreglo_pre['.$c.']" value="'.$arr_preg[$c].'" />';
}
echo '</form>';
}
?>
</div>
</body>
</html>
Fuente:Archivo ”simulacion_examen.php”
Elaboración: José Luis Garzón A.
Cuadro No 26.
Código para presentar el listado de los examenes rendidos por el alumno
conjuntamente con sus calificaciones
258
<?php
session_start ();
if (!isset($_SESSION["usNick"]))
header('Location: login/login.php');
header("Cache-Control: no-store, no-cache, must-revalidate");
require ("../../../lib/clase_MySql.inc.php");
$miconexion = new DB_mysql ;
$miconexion->conectar();
$ci=$_SESSION["usNick"];
$rowidprof=array();
$query ="SELECT exa_alumno_id, nombres, apellidos FROM exa_alumno WHERE
alu_identificacion='$ci'";
$res= $miconexion->consulta($query);
$rowidalu=mysql_fetch_array($res);
mysql_free_result($res);
$idalu=$rowidalu['exa_alumno_id'];
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<jdoc:include type="head" />
<link rel="stylesheet" href="../css/template.css" type="text/css" />
<script type="text/javascript" src="../Docente/js/funciones.js"> </script>
<script type="text/javascript" src="../../../js/prototype.js"> </script>
<style type="text/css">
<!--
.style47 {font-family: Arial, Helvetica, sans-serif;
font-weight: bold;
font-size: 10px;
}
.style55 {font-size: 14px; color: #1b78b7; font-weight: bold;}
.style52 {font-family: Arial, Helvetica, sans-serif; font-weight: bold; font-size: 12px;
}
.style53 {color: #FFFFFF}
.style60 {font-size: 12px; color: #1b78b7; font-family: Arial, Helvetica, sans-serif;}
.style64 {
font-size: 12px;
font-weight: bold;
259
}
.Estilo1 {color: #1b78b7}
-->
</style>
</head>
<body>
<div class="center" align="center">
<div id="top">
<div id="tabarea">
<table cellpadding="0" cellspacing="0" class="pill" align="center">
<tr>
<td class="pill_m"><div id="pillmenu">
<ul id="mainlevel-nav">
<li><a class="mainlevel-nav"
href="../Alumno/rendir_examen.php"><b>Rendir Examen </b></a></li>
<li><a class="mainlevel-nav"
href="../Alumno/simular_examen.php"><b>Simulación
Examen</b></a></li>
<li><a class="mainlevel-nav"
href="../Alumno/consulta_examen.php"><b>Consultar Examen</b></a></li>
</ul>
</div></td>
</tr>
</table>
</div>
</div>
<div id="wrapper" align="center" style="height:100%; overflow:auto;padding-
top:0px;" >
<div style="background:#EBEBEB
url(/elearning_cisc/contenido/wikikey/images/left_shadow.jpg) repeat-y left;
width:90%; height:600px">
<div
style="background:url(/elearning_cisc/contenido/wikikey/images/right_shadow.jpg)
repeat-y right; height:600px">
<br />
<div style="padding-left:13px">
<div style='float:left; margin-right:8px;'><img
src="/elearning_cisc/images/Default Document-41.ico" alt="examen" /></div><div
style=' text-align:left'><h3>Listado de Examenes Realizados</h3></div><div
class='small' style='margin-bottom:7px; color:#000'><b>Seleccione el Examen a
Consultar</b></div>
</div>
260
<br />
<form id="form1" name="califica" method="post" action="" >
<table width="97%" border="0">
<tr>
<td colspan="4">
<table width="100%" height="22" border="0" cellpadding="0"
cellspacing="0">
<tr bgcolor="#6D95C5">
<td width="80" bgcolor="#6D95C5"><div align="center"
class="style52">
<div align="center" class="style53">
<div align="center">Id</div>
</div>
</div></td>
<td width="300" bgcolor="#6D95C5"><div align="center"
class="style52">
<div align="center" class="style53">
<div align="center">Asignatura</div>
</div>
</div></td>
<td width="189" bgcolor="#6D95C5"><div align="center"
class="style52">
<div align="center" class="style53">
<div align="center">Semestre</div>
</div>
</div></td>
<td width="80" bgcolor="#6D95C5"><div align="center"
class="style52">
<div align="center" class="style53">
<div align="center">Fecha</div>
</div>
</div></td>
<td width="80" bgcolor="#6D95C5"><div align="center"
class="style52">
<div align="center" class="style53">
<div align="center">Parcial</div>
</div>
</div></td>
<td width="80" bgcolor="#6D95C5"><div align="center"
class="style52">
<div align="center" class="style53">
<div align="center">Nota Parcial</div>
</div>
261
</div></td>
<td width="80" bgcolor="#6D95C5"><div align="center"
class="style52">
<div align="center" class="style53">
<div align="center">Notal Final</div>
</div>
</div></td>
<td width="100" bgcolor="#6D95C5"><div align="center"
class="style52">
<div align="center" class="style53">
<div align="center">Estado</div>
</div>
</div></td>
</tr></table>
<?php
$q_exa_alu="SELECT
a.exa_alumno_id, a.apellidos, a.nombres, m.asg_nombre, c.exa_cabecera_examen_id,
e.exa_parcial, s.sem_semestre, e.exa_cab_fecha, SUM( c.cal_puntos ) tparcial FROM
exa_calificacion c, exa_alumno a, exa_asignatura m, exa_cabecera_examen e,
exa_semestre s WHERE c.exa_alumno_id = '$idalu' AND c.exa_alumno_id =
a.exa_alumno_id AND c.exa_asignatura_id = m.exa_asignatura_id AND
c.exa_cabecera_examen_id = e.exa_cabecera_examen_id AND
c.exa_semestre_id=s.exa_semestre_id GROUP BY 5";
$res= $miconexion-
>consulta($q_exa_alu);
while($rowmax=mysql_fetch_array($res))
{
$q_ver_exa='SELECT
count(*) tpcarga FROM exa_calificacion WHERE
exa_alumno_id='.$rowmax["exa_alumno_id"].' AND
exa_cabecera_examen_id='.$rowmax["exa_cabecera_examen_id"].' AND
cal_tipo_pre="C" AND cal_estado="P"';
$restot= $miconexion-
>consulta($q_ver_exa);
$rowcarga=mysql_fetch_array($restot);
$totcarga=$rowcarga["tpcarga"];
$alumno=$rowmax["apellidos"].' '.$rowmax["nombres"];
echo ' <table
width="100%">';
echo '<tr>';
262
if ($totcarga>0)
{
$estado='P';
$notaparcial=$rowmax["tparcial"];
$notatotal='-';
}
else
{
$estado='C';
$notaparcial='-';
$notatotal=$rowmax["tparcial"];
}
echo '<td width="80"
bgcolor="#DDEEFF"><div align="center" class="style61"><a
href="vista_examen_alu.php?examen_id='.$rowmax["exa_cabecera_examen_id"].'&
alum_id='.$rowmax["exa_alumno_id"].'"><img src="../image/examen.ico"
name="imgExa" width="16" height="16" style="cursor:pointer" title="Ver
examen"></a></div></td>';
echo '<td width="310"
bgcolor="#DDEEFF"><div align="center"
class="style61"><b>'.$rowmax["asg_nombre"].'</b></div></td>';
echo '<td width="205" bgcolor="#DDEEFF"><div
align="center" class="style61">'.$rowmax["sem_semestre"].'</div></td>';
echo '<td width="83" bgcolor="#DDEEFF"><div
align="center" class="style61">'.$rowmax["exa_cab_fecha"].'</div></td>';
echo '<td width="95"
bgcolor="#DDEEFF"><div align="center"
class="style61">'.$rowmax["exa_parcial"].'</div></td>';
echo '<td width="92"
bgcolor="#DDEEFF"><div align="center"
class="style61">'.$notaparcial.'</div></td>';
echo '<td width="92" bgcolor="#DDEEFF"><div
align="center" class="style61">'.$notatotal.'</div></td>';
$est='';
if ($estado=='C')
{
$est='Calificado';
}
else
263
{
$est='Pendiente';
}
echo '<td width="115"
bgcolor="#DDEEFF"><div align="center" class="style61">'.$est.'</div></td>';
} //Fin del While
echo '</tr>';
echo '</table>';
?>
<p> </p>
<table width="61%" height="53" border="0"
align="center">
<tr>
<td>
<div align="center">
<table width="436" height="44" border="0" align="center">
<tr>
<td width="304"><div align="center" class="style55"><a
href="rendir_examen.php"><strong><img src="../../../images/button_ok.gif"
width="12" height="12" /> Ir a Examen
Real</strong></a></div></td>
<td width="322" height="43"><div align="center"
class="style55"><a href="inicial_alumno.php"><strong> <img
src="../../../images/cancel_12x12.png" width="12" height="12"
/> Salir</strong></a> </div></td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<p> </p></td>
</tr>
</table></form>
</div></div></div></div></body>
</html>
<?php
function muestra_semestre($semestre,$result)
{
while($rowsem = mysql_fetch_array($result))
264
{
if ($rowsem["idsemestre"]==$semestre)
{
echo '<option value="'.$rowsem["idsemestre"].'"
selected="selected">'.$rowsem["semestre"].' </option>';
}else
{
echo '<option
value="'.$rowsem["idsemestre"].'">'.$rowsem["semestre"].' </option>';
}
}
echo '</select>';
}
?>
Fuente:Archivo ”consulta_examen.php”
Elaboración: José Luis Garzón A.
Cuadro No 27.
Código para visualizar el contenido del examen rendido por el alumno
conjuntamente con sus calificaciones
<?php
// iniciamos session
265
session_start ();
if (!isset($_SESSION["usNick"]))
header('Location: login/login.php');
header("Cache-Control: no-store, no-cache, must-revalidate");
require ("../../../lib/clase_MySql.inc.php");
$miconexion = new DB_mysql ;
$miconexion->conectar();
if (isset($_GET["examen_id"])) $exaID = $_GET["examen_id"];
if (isset($_GET["alum_id"])) $alumnoID = $_GET["alum_id"];
$Q_sel_asg="SELECT a.asg_nombre FROM exa_asignatura a,
exa_cabecera_examen e WHERE exa_cabecera_examen_id='$exaID' AND
a.exa_asignatura_id=e.exa_asignatura_id";
$rasg= $miconexion->consulta($Q_sel_asg);
$asg=mysql_fetch_array($rasg);
$asignatura=$asg['asg_nombre'];
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<link rel="stylesheet" href="../css/template.css" type="text/css" />
<script type="text/javascript" src="../Docente/js/funciones.js"> </script>
<script type="text/javascript" src="../../../js/prototype.js"> </script>
<style type="text/css">
<!--
.style53 {color: #006600; font-weight: bold;border:1px solid #CCC; border-top:none;
background:#D8F1FE; padding:5px; }
.style55 {font-size: 14px; color: #1b78b7; font-weight: bold;}
.style57 {font-size: 14px; color: #1b78b7; font-weight: bold; }
.style59 {font-size: 12px; color: #006600; font-weight: bold; }
.style60 {font-size: 12px; color: #000000; font-weight: bold; }
.style61 {font-size: 12px; color: #000000; border:1px solid #CCC; background:#FFF;
-moz-border-radius: 4px 4px 0px 0px; padding:5px;}
-->
</style>
</head>
<body >
<div class="center" align="center">
<div id="top">
<div id="tabarea" >
266
<table cellpadding="0" cellspacing="0" class="pill" align="center">
<tr>
<td class="pill_m"><div id="pillmenu">
<ul id="mainlevel-nav">
<li><a class="mainlevel-nav"
href="../Alumno/rendir_examen.php"><b>Rendir Examen </b></a></li>
<li><a class="mainlevel-nav"
href="../Alumno/simular_examen.php"><b>Simulación
Examen</b></a></li>
<li><a class="mainlevel-nav"
href="../Alumno/consulta_examen.php"><b>Consultar Examen</b></a></li>
</ul>
</div></td>
</tr>
</table>
</div>
</div>
<!-- Inicio de DIV donde se muestra las preguntas -->
<div id="wrapper" align="center" style="height:100%; overflow:auto;padding-
top:0px;" >
<div style="background:#EBEBEB
url(/elearning_cisc/contenido/wikikey/images/left_shadow.jpg) repeat-y left;
width:90%; height:600px">
<div
style="background:url(/elearning_cisc/contenido/wikikey/images/right_shadow.jpg)
repeat-y right; height:600px">
<?php echo '<form enctype="multipart/form-data" action="respuesta_examen.php"
method="POST">';
$calif= $miconexion->unDato("SELECT SUM(cal_puntos) FROM
exa_calificacion WHERE exa_cabecera_examen_id='$exaID' AND
exa_alumno_id='$alumnoID'") ;
$totalCalif= $miconexion->unDato("SELECT exa_cab_puntaje_total
FROM exa_cabecera_examen WHERE exa_cabecera_examen_id='$exaID'") ;
?>
<br />
<div style="padding-left:13px">
<div style='float:right; margin-right:8px;'><a
href="aWord.php?examen_id=<?php echo
$_GET["examen_id"];?>&alum_id=<?php echo $_GET["alum_id"];?>"><img
src="../image/word.ico" alt="word" /> <b>Exportar
Examen</b></a> </div>
<div style='float:left; margin-right:8px;'><img
src="/elearning_cisc/images/Default Document-41.ico" alt="examen" /></div><div
style=' text-align:left'><h3>Examen de [<span style="color:#000"><?php echo
267
' '.$asignatura.' ' ?></span>] - Calificación [<span
style="color:#000"><?php echo ' '.$calif.' / '.$totalCalif.' '
?></span>]</h3></div><div class='small' style='margin-bottom:7px;
color:#000'><b>Recuerde que una vez terminado el examen se carga la
calificación automaticamente</b></div>
</div>
<br />
<?php
//============================================================
======================
//============================================================
======================
//PRESENTACION DE EXAMEN SELECCIONADO
//============================================================
======================
//============================================================
======================
if ($exaID!='')
{//if main
$row=array();
$query="SELECT exa_calificacion_id, cal_pregunta, cal_seleccion_alumno,
cal_seleccion_correcta, cal_rutaarchivo, cal_puntos, cal_tipo_pre, cal_estado FROM
exa_calificacion WHERE exa_cabecera_examen_id='$exaID' AND
exa_alumno_id='$alumnoID'";
$res= $miconexion->consulta($query);
// if ($res)
// { //if submain
echo '<table width="97%" border="0" cellpadding="4"
id="TablePreg">';
$c=1;
while($row_ec=mysql_fetch_array($res))
{
//Inicio de fila # 1
echo '<tr>';
//Inicio de Columna #1 de la Fila #1
echo '<td colspan="6">';
//Inicio DIV dentro de Columna #1 de la Fila #1
echo '<div align="left">';
if ($row_ec["cal_estado"]=='P')
{
268
echo '<span class="style59"> '.$c.'°
pregunta. // Puntaje Pendiente: </span>';
}
else
{
echo '<span class="style59"> '.$c.'°
pregunta. // Puntaje
Obtenido:</span><span class="style60"> '.$row_ec["cal_puntos"].'</span>';
}
echo '<br>';
//Muestra Preguntas...
echo '<div class="style61">'.$row_ec["cal_pregunta"].'</div>';
//Muestra opción de carga de archivo.
if ($row_ec["cal_tipo_pre"]=='C')
{
if ($row_ec["cal_rutaarchivo"]!='N')
{
echo '<div align="left" class="style53"> Archivo
cargado : >>> <a href="../'.$row_ec["cal_rutaarchivo"].'"><img
src="../image/DISK.ico" width="30" height="30" " title="Decargar
archivo">'.'</a></div>';
}
else
{
echo '<div align="left" class="style60"> !... No
cargó ningún archivo ..! </div>';
}
}
else
{
if ($row_ec["cal_seleccion_alumno"]=='')
{
echo '<div align="left" class="style53">
Respuesta Seleccionada : <span class="style60">!... No seleccionó ninguna opción
..!</span> </div>';
}
else
{
if ($row_ec["cal_tipo_pre"]=='O')
{
269
echo '<div align="left" class="style53">
Respuesta Seleccionada: <span
class="style60">'.$row_ec["cal_seleccion_alumno"].'</span></div>';
}
if ($row_ec["cal_tipo_pre"]=='I')
{
echo '<div align="left" class="style53">
Opción Seleccionada: ';
$ruta='../FileExamen/'.$row_ec["cal_seleccion_alumno"];
echo '<img src="'.$ruta.'" name="img"
alt="opcion" width="25" height="25" style="cursor:pointer" title="Opcion"
><br></div>';
}
}
if ($row_ec["cal_tipo_pre"]=='I')
{
echo '<div align="left" class="style53">
Respuesta Correcta : ';
$ruta2='../FileExamen/'.$row_ec["cal_seleccion_correcta"];
echo '<img src="'.$ruta2.'" name="img"
alt="opcion" width="25" height="25" style="cursor:pointer" title="Opcion"
><br></div>';
}
else
{
echo '<div align="left" class="style53">
Respuesta Correcta: <span
class="style60">'.$row_ec["cal_seleccion_correcta"].'</span></div>';
}
}
echo '</div>'; //Fin DIV dentro de Columna #1 de la Fila #1
echo '</td>'; //Fin de Columna #1 de la Fila #1
echo '</tr>'; //Fin de fila # 1
$c = $c+1;
} // FIN WHILE INTERNO
}// Fin del if submain
//}// Fin del if main
echo '</table>';
270
?>
<table width="61%" height="53" border="0" align="center">
<tr>
<td>
<div align="center">
<table width="84%" height="39" border="0" align="center">
<tr>
<td width="50%"><div align="center" class="style55"><a
href="consulta_examen.php"><strong><img src="../../../images/button_ok.gif"
width="16" height="16" /> </strong><span class="style57">Revisar otro
examen</span> </a></div></td>
<td width="50%"><div align="center" class="style55"><a
href="inicial_alumno.php"><strong><img src="../../../images/cancel_12x12.png"
width="14" height="14" /> <span
class="style57">Salir</span></strong></a></div></td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<?php echo '</form>'; ?>
</div></div></div></div></body>
</html>
Fuente:Archivo ”vista_examen_alu.php”
Elaboración: José Luis Garzón A.
Cuadro No 28.
Código para generar archivo de Word el contenido del examen rendido por el
alumno conjuntamente con sus calificaciones
271
<?php
// iniciamos session
session_start ();
header("Cache-Control: no-store, no-cache, must-revalidate");
header('Content-type: application/vnd.ms-word');
header("Content-Disposition: attachment; filename=ExamenOnline.doc");
header("Pragma: no-cache");
header("Expires: 0");
require ("../../../lib/clase_MySql.inc.php");
$miconexion = new DB_mysql ;
$miconexion->conectar();
if (isset($_GET["examen_id"])) $exaID = $_GET["examen_id"];
if (isset($_GET["alum_id"])) $alumnoID = $_GET["alum_id"];
$Q_sel_asg="SELECT a.asg_nombre FROM exa_asignatura a,
exa_cabecera_examen e WHERE exa_cabecera_examen_id='$exaID' AND
a.exa_asignatura_id=e.exa_asignatura_id";
$rasg= $miconexion->consulta($Q_sel_asg);
$asg=mysql_fetch_array($rasg);
$asignatura=$asg['asg_nombre'];
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<style type="text/css">
<!--
.style53 {color: #006600; font-weight: bold;border:1px solid #CCC; border-top:none;
padding:5px; }
.style55 {font-size: 12px; color: #1b78b7; font-weight: bold;}
.style57 {font-size: 12px; color: #1b78b7; font-weight: bold; }
.style59 {font-size: 12px; color: #000000; font-weight: bold; background:#BEDDAC;
}
.style60 {font-size: 12px; color: #000000; font-weight: bold; }
.style61 {font-size: 12px; color: #000000; font-weight: bold; border:1px solid #CCC;
background:#C7E1FE; -moz-border-radius: 4px 4px 0px 0px; padding:5px;}
-->
</style>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
</head>
<body >
272
<?php echo '<form enctype="multipart/form-data" action="respuesta_examen.php"
method="POST">';
$calif= $miconexion->unDato("SELECT SUM(cal_puntos) FROM
exa_calificacion WHERE exa_cabecera_examen_id='$exaID' AND
exa_alumno_id='$alumnoID'") ;
$totalCalif= $miconexion->unDato("SELECT exa_cab_puntaje_total
FROM exa_cabecera_examen WHERE exa_cabecera_examen_id='$exaID'") ;
$semestre = $miconexion->unDato("SELECT s.sem_semestre
FROM exa_cabecera_examen ce , exa_semestre s WHERE ce.exa_semestre_id =
s.exa_semestre_id
and exa_cabecera_examen_id='$exaID'");
?>
<div>
<h3>Examen de [<span style="color:#000"><?php echo
' '.$asignatura.' ' ?> - <?php echo
' '.$semestre.' ' ?></span>]
<br />Calificación [<span style="color:#000"><?php echo
' '.$calif.' / '.$totalCalif.' ' ?></span>]</h3>
</div>
<?php
//============================================================
======================
//============================================================
======================
//PRESENTACION DE EXAMEN SELECCIONADO
//============================================================
======================
//============================================================
======================
if ($exaID!='')
{//if main
$row=array();
$query="SELECT exa_calificacion_id, cal_pregunta, cal_seleccion_alumno,
cal_seleccion_correcta, cal_rutaarchivo, cal_puntos, cal_tipo_pre, cal_estado FROM
exa_calificacion WHERE exa_cabecera_examen_id='$exaID' AND
exa_alumno_id='$alumnoID'";
$res= $miconexion->consulta($query);
// if ($res)
// { //if submain
echo '<table width="100%" border="0" cellspacing="0"
cellpadding="0">';
273
$c=1;
while($row_ec=mysql_fetch_array($res))
{
//Inicio de fila # 1
echo '<tr>';
//Inicio de Columna #1 de la Fila #1
echo '<td colspan="6">';
//Inicio DIV dentro de Columna #1 de la Fila #1
echo '<div align="left" class="style59">';
if ($row_ec["cal_estado"]=='P')
{
echo '<span class="style59"> '.$c.'°
pregunta. // Puntaje Pendiente: </span>';
}
else
{
echo '<span class="style59"> '.$c.'°
pregunta. // Puntaje
Obtenido:</span><span class="style60"> '.$row_ec["cal_puntos"].'</span>';
}
echo '</div>';
//Muestra Preguntas...
echo '<div class="style61">'.$row_ec["cal_pregunta"].'</div>';
//Muestra opción de carga de archivo.
if ($row_ec["cal_tipo_pre"]=='C')
{
if ($row_ec["cal_rutaarchivo"]!='N')
{
echo '<div align="left" class="style53"> Archivo
cargado : '.$row_ec["cal_rutaarchivo"].'</div>';
}
else
{
echo '<div align="left" class="style60"> !... No
cargó ningún archivo ..! </div>';
}
}
else
{
if ($row_ec["cal_seleccion_alumno"]=='')
{
274
echo '<div align="left" class="style53">
Respuesta Seleccionada : <span class="style60">!... No seleccionó ninguna opción
..!</span> </div>';
}
else
{
if ($row_ec["cal_tipo_pre"]=='O')
{
echo '<div align="left" class="style53">
Respuesta Seleccionada: <span
class="style60">'.$row_ec["cal_seleccion_alumno"].'</span></div>';
}
if ($row_ec["cal_tipo_pre"]=='I')
{
echo '<div align="left" class="style53">
Respuesta Seleccionada: ';
$ruta='../FileExamen/'.$row_ec["cal_seleccion_alumno"];
if (!copy($ruta,
"C:\\TEMP\\".$row_ec["cal_seleccion_alumno"])) { print("No se pudo bajar la
imagen");}
echo '<img
src="C:\\TEMP\\'.$row_ec["cal_seleccion_alumno"].'" name="img" alt="opcion"
width="20" height="20" style="cursor:pointer" title="Opcion" ><br></div>';
}
}
if ($row_ec["cal_tipo_pre"]=='I')
{
echo '<div align="left" class="style53">
Respuesta Correcta : ';
$ruta2='../FileExamen/'.$row_ec["cal_seleccion_correcta"];
if (!copy($ruta2,
"C:\\TEMP\\".$row_ec["cal_seleccion_correcta"])) { print("No se pudo bajar la
imagen");}
echo '<img
src="C:\\TEMP\\'.$row_ec["cal_seleccion_correcta"].'" name="img" alt="opcion"
width="20" height="20" style="cursor:pointer" title="Opcion" ><br></div>';
}
else
{
275
echo '<div align="left" class="style53">
Respuesta Correcta: <span
class="style60">'.$row_ec["cal_seleccion_correcta"].'</span></div>';
}
}
echo '<br>';
//echo '</div>'; //Fin DIV dentro de Columna #1 de la
Fila #1
echo '</td>'; //Fin de Columna #1 de la Fila #1
echo '</tr>'; //Fin de fila # 1
$c = $c+1;
} // FIN WHILE INTERNO
}// Fin del if submain
//}// Fin del if main
echo '</table>';
echo 'Descargado desde el modulo Examenes de <b>eCISC</b> ';
?>
<?php echo '</form>'; ?>
</body>
</html>
Fuente:Archivo ”aWord.php”
Elaboración: José Luis Garzón A.
Top Related