Upload
others
View
9
Download
0
Embed Size (px)
Citation preview
UNIVERSIDAD DE GUAYAQUIL
Facultad de Ciencias Matemáticas y Físicas
Carrera de Ingeniería en Sistemas Computacionales
Desarrollo de aplicaciones con plataforma Oracle
“Modulo de Evaluaciones del Aula Virtual”
PROYECTO DE TESIS DE GRADO
SEXTO CURSO DE GRADUACIÓN
Previo a la Obtención del Título de:
INGENIERO EN SISTEMAS COMPUTACIONALES
Autores:
Alexandra del Rocío Cabrera Cueva
Irlhona Fernanda Ladines Bermeo
Alberto Geovanny Mena Santana
GUAYAQUIL-ECUADOR
Año: 2009
AGRADECIMIENTO
Agradezco a Dios por permitirme
culminar esta anhelada meta, a mis
padres por haber sido incondicionales
con su ayuda en todo momento, a mi
esposo por su apoyo incondicional, a
mis compañeros de tesis por haber
compartido conmigo esta dura pero a la
vez satisfactoria tarea, a todas las
personas que de una u otra forma
estuvieron involucrados y colaboraron
con el desarrollo de este proyecto.
Alexandra Cabrera C.
Quiero expresar un profundo
agradecimiento y dedicar este trabajo a
todos aquellos que con su amor y
apoyo incondicional, contribuyeron a la
culminación de mi carrera profesional; a
Dios, quien me bendijo dándome la
oportunidad de trabajar y estudiar en
pro de mi país y mis seres queridos, a
mis padres quienes lo han dado todo
por mi y a quienes les debo lo que soy,
a mi esposo e hijas por comprender que
no les pude dedicar mucho tiempo en
estos momentos y a mis colegas de
trabajo que con sus conocimientos me
supieron dar una mano.
Fernanda Ladines B.
Gracias a mis padres por permitir que
llegara este momento, cuando estamos
tan cerca de terminar nuestra
preparación académica y nos
encontramos en el punto culminante; la
presentación del conocimiento adquirido
plasmado en la elaboración de este
documento.
Alberto Mena S.
DEDICATORIA
A Dios por estar conmigo en todo
momento apoyándome en las buenas y
las malas, permitiéndome estar aquí en
uno de los mejores momentos de mi
vida.
A mis padres Wilfer y Teresa por
siempre estar a mi lado apoyándome en
todo momento.
Alexandra Cabrera C.
A mis padres de quien he aprendido a
luchar hasta en las condiciones más
difíciles. Él con su amor, ejemplo y
carácter me ha mostrado que la vida es
un collar de pequeños logros y
pequeñas perlas de felicidad.
Fernanda Ladines B.
Todo el tiempo, empeño y esfuerzo
invertidos en esta tesis; van dedicados
exclusivamente a aquellos seres tan
queridos que me han brindado su
apoyo. Quienes comparten a nuestro
lado, la satisfacción del deber cumplido;
a ellos, con todo el corazón ofrecemos
los frutos de nuestro trabajo.
Alberto Mena S.
TRIBUNAL DE GRADUACION
DECLARACION EXPRESA
“La autoría de la tesis de grado corresponde exclusivamente a los suscritos,
perteneciendo a la Universidad de Guayaquil los derechos que generen la
aplicación de la misma”.
(Reglamento de Graduación de la Carrera de Ingeniería en Sistemas
Computacionales, Art. 26).
_______________________ _________________________
Alexandra Cabrera C. Fernanda Ladines B.
0920623949 0919802595
Alberto Mena A.
0920623949
RESUMEN EJECUTIVO
Un punto importante para la Carrera de Ingeniería en Sistemas
Computacionales es precisamente con miras a cumplir estos principios que
se debe poner en marcha una estrategia de calidad, que tiene como centro
de implementación un sistema de Aula de Formación Virtual que, haciendo
uso las Nuevas Tecnologías, permita la gestión de acciones formativas
encaminadas a la mejora de la ocupabilidad de las personas usuarias de sus
servicios. Teniendo en cuenta el ámbito de la problemática en el proceso de
evaluaciones manuales, hemos optado por crear un Modulo de Evaluaciones
para el Sistema Aula Virtual, orientado a docentes y estudiantes; ofreciendo
un mejor servicio de calidad, fácil uso con interfaces claras y amigables, con
un manejo de datos de forma real y seguro. El modulo de evaluaciones del
proyecto del aula virtual tiene el propósito de administrar la información que
es ingresada para llevar a cabo todas las evaluaciones que son desarrolladas
por los alumnos.
1
CAPÍTULO 1
1. INTRODUCCION
1.1. Antecedentes
Un proyecto nace a partir de las necesidades que existen en la
sociedad, ya sea para satisfacerlas, incursionar en algo novedoso que
revolucione el mercado, sustituir una tecnología obsoleta, lanzar un
nuevo producto o servicio, o para darle solución a un problema, etc.
Cada una de las variantes mencionadas anteriormente tienen que ser
investigadas minuciosamente con la finalidad de analizar las
posibilidades, ventajas y desventajas que tiene dicho proyecto. Todo
esto antes de poner en marcha el mismo.
2
La Misión de las Instituciones Académicas en general, es formar a
profesionales en varias ramas de las ciencias, altamente calificados en
el ámbito académico, científico, tecnológico, humanista y cultural con
sólidos valores éticos y morales. Su objetivo básico es contribuir a
lograr que se formen profesionales de calidad y favorecer un mercado
de trabajo que coadyuve a la cohesión social y territorial.
Entre los principios generales que rigen el funcionamiento de las
Instituciones Académicas se encuentra la orientación a personas que
deseen obtener un grado de madures en el ámbito académico a
través de una enseñanza de primer nivel y proyectos innovadores
usando las Nuevas Tecnologías de la Información y Comunicación,
permitiendo la creación y puesta en marcha de nuevos servicios con
unos costes de funcionamiento menores.
Es precisamente con miras a cumplir estos principios que se debe
poner en marcha una estrategia de calidad, que tiene como centro de
implementación un sistema de Aula de Formación Virtual que,
haciendo uso las Nuevas Tecnologías, permita la gestión de acciones
formativas encaminadas a la mejora de la ocupabilidad de las
personas usuarias de sus servicios.
3
Hoy en día los controles y manejos de notas y asistencias de los
estudiantes de una Institución Académica se la realiza manualmente,
desperdiciando recursos tecnológicos, humanos y materiales.
Mediante nuestro proyecto buscamos mejorar la ejecución del
proceso, haciéndolo rápido y eficiente, estando en cualquier lugar
donde se encuentre; mientras tenga acceso a la red Internet.
1.2. Ámbito y Problemática
El proceso de las evaluaciones en las diferentes Instituciones
Académicas tienen que seguir un proceso manual desarrollando
la misma para proceder a sacar fotocopias de cada una de las
evaluaciones; el mismo que tiene que ser resuelto por el
evaluado donde el evaluador corre el riesgo de pérdida del
documento, mal interpretación del mismo y ocupa un espacio
físico.
Algunas instituciones cuentan con un módulo básico, en donde
no siempre el Docente puede acceder directamente, y si lo hace
de igual manera está obligado a llenar las Actas de manera
manual, lo que le genera más carga operativa y mayor tiempo
de espera a la entrega de notas al evaluado.
4
1.3. Solución de la Problemática
Teniendo en cuenta el ámbito de la problemática en el proceso
de evaluaciones manuales, hemos optado por crear un Modulo
de Evaluaciones para el Sistema Aula Virtual, orientado a
docentes y estudiantes; ofreciendo un mejor servicio de calidad,
fácil uso con interfaces claras y amigables, con un manejo de
datos de forma real y seguro.
1.4. Visión y Misión del Proyecto
1.4.1. Visión
Proporcionar una herramienta confiable, segura, utilitaria,
basada en los nuevos estándares de desarrollo tecnológicos
con el objetivo de optimizar recursos y agilizar los procesos de
elaboración y ejecución de evaluaciones académicas y
docentes y que además sirva de base para la creación de
nuevas formas de apoyo a la educación. Que el sistema sea
flexible para futuras versiones y actualizaciones.
1.4.2. Misión
Nuestra misión es ofrecer a la carrera una herramienta eficaz,
óptima y capaz de evaluar a un estudiante o profesor, midiendo
sus conocimientos académicos, profesionales y pedagógicos.
5
Esta herramienta es un gestor permanente de calidad y
excelencia, con implementaciones que se adapten y satisfagan
las necesidades de los usuarios en general.
1.5. Definición del Proyecto
El modulo de evaluaciones del proyecto del aula virtual tiene el
propósito de administrar la información que es ingresada para
llevar a cabo todas las evaluaciones que son desarrolladas por
los alumnos.
También se encarga de administrar las diferentes acciones que
este modulo realiza como el ingreso de los exámenes según su
categoría, registros de exámenes, proporcionando información
consistente para el usuario según lo requiera.
1.6. Objetivos del Proyecto
1.6.1. Objetivos Generales del Proyecto
Proveer una herramienta fácil de usar que permita
a diferentes entes administrar de forma correcta
las diferentes tareas que intervienen en el proceso
de evaluaciones
6
Disminuir el tiempo que se requiere para la
preparación de material, así mismo el factor
dinero, ya sea sacando fotocopias o imprimiendo.
Garantizar la seguridad de los datos ante cualquier
pérdida o alteración de la información.
En nuestro caso nos concentraremos en la
elaboración y ejecución de evaluaciones a
docentes y alumnos, tomando en consideración
todos los puntos y actividades relevantes que
permitan una gestión viable de la solución.
1.6.2. Objetivos Específicos del Proyecto
Evaluar constantemente al personal docente en el
menor tiempo posible.
Aprovechar los avances tecnológicos que existen en la
actualidad por periodo de tiempo indefinido.
Evitar a nivel administrativo tener archiveros llenos de
documentos, dependiendo de las políticas internas de la
entidad educativa.
7
Realizar la búsqueda de evaluaciones específicas y por
grupos en el menor tiempo posible.
1.7. Alcance del Proyecto
Considerando los requerimientos de los futuros usuarios de la
aplicación, tenemos como resultado la implementación de
diferentes opciones que facilitan y a su vez agilizan la
elaboración de evaluaciones y el control de notas de
catedráticos; entre ellas podemos mencionar las siguientes.
Información de entrada
Información Descripción
MATERIAS INSCRITAS Se requiere obtener las materiasque fueron inscritas por cadaestudiante.
DATOS DEL USUARIO Se requiere obtener lascredenciales del usuario
INFORMACIÓN DEL EXAMEN Se requiere obtener los datosgenerales de la Evaluación
PREGUNTAS Y RESPUESTAS Se requiere obtener laspreguntas y respuestas porEvaluación
CATEGORÍA DE EVALUACIÓN Se requiere obtener lasCategorías
TIPO DE EVALUACIÓN Se requiere obtener los Tipos deEvaluación
ACTIVACIÓN DE EVALUACIÓN Se requiere obtener el listado deestudiantes inscritos a laEvaluación
DESARROLLO DE LAEVALUACIÓN
Se requiere obtener la plantilla dela Evaluación
8
CULMINACIÓN DE LAEVALUACIÓN
Se requiere obtener el evento deCulminación
CALIFICACIÓN DE LAEVALUACIÓN
Se requiere obtener el evento deCalificación
REPORTE DE EVALUACIÓN Se requiere obtener el evento deReportes
Trabajos a realizar
Trabajo DescripciónCONSULTA DE MATERIASPOR USUARIO
Con la información de lasmaterias inscritas, se crearía unanueva estructura que registre lasmaterias para el usuario según elTipo de Examen
VERIFICACION ROLES DEUSUARIO
Permite consultar informaciónnecesaria para acceder a losdiversos procesos según el niveldel grupo de rol asignado
MANTENIMIENTO DEPLANTILLAS DE EXAMEN
Registrar y actualizar los datosdel examen, tales como duraciónde la prueba, usuario autorizado,tipo, categoría, fecha de ingreso.
DETALLE DE LA CABECERA DELA PLANTILLA
Registrar y actualizar cada unade las preguntas y respuestas dela evaluacion
MANTENIMIENTO DECATEGORIAS
Registrar y actualizar laestructura de Categorías
MANTENIMIENTO DE TIPOS Registrar y actualizar laestructura de Tipos
CONTROL DE ACTIVACION Permite al Administrador/Docenteactivar el respectivo examen oevaluación correspondiente a losestudiantes inscritos según losparámetros establecidos
CONTROL DE DESARROLLODE EXAMEN
El estudiante efectuara elexamen según los términos ycondiciones dados por elAdministrador/Docente, almomento de activar el examen.Las respuestas serán registradasen tiempo real, en el momentoque son efectuadas.
CONTROL DE CULMINACION Se realizaran 3 procesos de
9
DEL EXAMEN forma concurrente que permitanvalidar la terminación delexamen:
Terminación voluntariaantes de la duración de laevaluación.
Terminación abrupta porparte delAdministrador/Docente
Terminación por elvencimiento de la duracióndel examen
CONTROL DE CALIFICACION Este proceso de formaautomática evaluará cada una delas respuestas del Estudiante ycalificara el examen según losresultados registradospreviamente en la plantilla de laEvaluación. Se creara un registrode la información contenida endicho examen.
Resultados esperados
Entregable DescripciónPRESENTACIÓN DE LASMATERIAS ASIGNADAS
Presentar el listado de materiasinscritas en la matriculación delestudiante según el Tipo deEvaluación.
PRESENTACIÓN DE LOSEXÁMENES ACTIVADOS
Este reporte mostrará losexámenes que están listos paraser evaluados.
PRESENTACIÓN DE LOSPARÁMETROS, CONDICIONESY TÉRMINOS DE LAEVALUACIÓN DEL EXAMEN
Información previa al inicio de laevaluación.
PRESENTACIÓN DELDESARROLLO DEL EXAMEN
Permitirá mostrar cada una de laspreguntas de la evaluación consus respectivas respuestasmúltiples. Además mostrara unreloj de secuencia según la
10
duración de la prueba.
PRESENTACIÓN DE LOSRESULTADOS DE LACALIFICACIÓN
Una vez terminado la evaluacion,mostrara el resultado de formaporcentual.
EXÁMENES O EVALUACIONESPOR TIPO O CATEGORÍA
Presentará las evaluacionessegún la especificación dada
PRESENTACIÓN DE TIPOS YCATEGORÍAS
Listado de categorías y subcategorías registradas
PRESENTACIÓN DEESTUDIANTES ACTIVOS
Listado de estudiantes habilitadosen el sistema agrupados por losdiferentes exámenes a los quetienen accesos.
PRESENTACIÓN DEPREGUNTAS Y RESPUESTAS
Reporte con las respuestascorrectas e incorrectas de unaevaluación de docente o alumno,por estudiante, por profesor y porfecha.
PRESENTACIÓNCRONOLÓGICA DE EXÁMENES
Reporte de todas lasevaluaciones realizadas porrangos de fecha.
PRESENTACIÓN EN TIEMPO
REAL DE EVALUACIÓN
Reporte de records en tiempo de
ejecución de la evaluación, por
tipo y categoría.
1.8. Contribución tecnológica
El desarrollo de esta aplicación es con la intención de brindar
una ayuda a las personas encargadas de la elaboración de las
evaluaciones, así como una utilidad para el fácil control del las
evaluaciones a los docentes mediante la información generada
por la solución a través de los diversos reportes que
proporciona la misma.
11
Así también entregar un producto de fácil manejo, amigable y
que refleje la información de forma rápida y en un formato de
fácil entendimiento para la rápida toma de acciones en un caso
determinado.
1.9. Arquitectura del Proyecto
La arquitectura de una aplicación es la vista conceptual de la
estructura de los componentes del software, sus propiedades e
interacciones. Toda aplicación contiene código de presentación,
código de procesamiento de datos y código de almacenamiento
de datos. Y Dado que existen algunos tipos de arquitecturas,
para nuestro proyecto optamos conveniente el uso de una
Arquitectura de 3-capas.
Capa de presentación: Es la que ve el usuario, presenta el
sistema al usuario, le comunica la información y captura la
información del usuario en un mínimo de proceso. Esta capa se
comunica únicamente con la capa de negocio. También es
conocida como interfaz grafica y debe tener la característica de
ser "amigable" para el usuario.
12
Capa de negocio: Es donde residen los programas que se
ejecutan, se reciben las peticiones del usuario y se envían las
respuestas tras el proceso. Se denomina capa de negocio (e
incluso de lógica del negocio) porque es aquí donde se
establecen todas las reglas que deben cumplirse. Esta capa se
comunica con la capa de presentación, para recibir las
solicitudes y presentar los resultados, y con la capa de datos,
para solicitar al gestor de base de datos para almacenar o
recuperar datos de él.
Capa de datos: Es donde residen los datos y es la encargada
de acceder a los mismos. Está formada por uno o más gestores
de bases de datos que realizan todo el almacenamiento de
datos, reciben solicitudes de almacenamiento o recuperación de
información desde la capa de negocio.
13
Figura 1.1. Arquitectura del Proyecto
1.10. Arquitectura de Datos
Un administrador de Bases de Datos tiene que saber a la
perfección como es la arquitectura de su servidor. En el caso de
Oracle es necesario saber que procesos, archivos, estructuras,
etc. están involucrados en su entorno. Nos vamos a enfocar en
conocer la arquitectura de Oracle de una manera muy sencilla.
Un servidor Oracle consiste de dos entidades: La instancia y la
base de datos (independientes pero conectados). Durante el
proceso de creación de una base de datos, se crea primero la
instancia, y de ahí se crea la base de datos.
Una instancia de Oracle consta tiene estructuras de memoria y
procesos; su existencia es pasajera ya que se halla en la RAM y
el CPU, es decir, su tiempo de vida de la instancia durará
14
mientras exista en memoria. Por otro lado, la base de datos
consta de archivos físicos localizados en el disco duro, y una
vez creada existirá indefinidamente (hasta que deliberadamente
los archivos sean eliminados).
Oracle define esta arquitectura para garantizar una abstracción e
independencia entre las estructuras lógicas (que ven los
programadores) de las estructuras físicas (que ven los
administradores de sistemas); únicamente el DBA conoce las dos
partes de la historia.
Instancia:
La instancia de Oracle consta de un área de memoria compartida
conocida como SGA (System Global Area). Esta área de memoria
consta de menos tres estructuras básicas:
Shared Pool: Incluye la Library Cache (área de memoria
que almacena código recientemente ejecutado) y el Data
Dictionary Cache (área que almacena las definiciones de
objetos usados recientemente)
Database Buffer Cache: Área de trabajo para la ejecución
de SQL
15
Log Buffer: Área que almacena todos los cambios que son
realizados en el Database Buffer Cache
A parte de estas tres estructuras principales, también existen otras
3 que son opcionales:
Large Pool: Área utilizada para mejorar el rendimiento en
servidores compartidos (multithreaded) o para procesos I/O
de disco y cinta
Java Pool: Área utilizada si se tiene una aplicación que va a
ejecutar procedimientos Java (ya que Oracle maneja sus
APIs con Java muchos administradores consideran a esta
área de memoria como obligatoria)
Streams Pool: Utilizado para manejo de Streams
A parte del SGA, la instancia de Oracle tiene 5 procesos conocidos
como Background process:
SMON: Habilita la conexión entre la instancia y la base de
datos. Permite la recuperación de la base de datos después
de una falla
16
PMON: Se encarga de gestionar las sesiones de usuario.
Cuando un proceso de usuario falla, se encarga de limpiar
los procesos restantes
CKPT: Se asegura que la instancia esté sincronizada con la
base de datos.
LGWR: Escribe todos los cambios a los datos que se
realizaron en el Database Buffer Cache en los Redo Log
Files del disco
DBWn: Escribe los bloques modificados desde el Database
Buffer Cache a los archivos de disco
Base de datos:
La base de datos abarca las estructuras físicas que se encuentran
en disco. Estos archivos se dividen en dos: Requeridos y Externos.
Entre los archivos requeridos están:
Control File: Almacena el status de las estructuras físicas
de la base de datos.
Online Redo Log Files: Almacenan un registro de los
cambios realizados a la base de datos mientras estos de van
dando
17
Datafiles: Son el repositorio de la información
En cambio, los archivos externos son:
Parameter File: Define la instancia y los parámetros de
inicialización. Hay de dos tipos Dinámico (binario, que no se
puede ejecutar y se actualiza constantemente) y estático
(que se lo puede editar mediante un editor ASCII y que
solamente es leído una sola vez cuando la instancia se
inicia.)
Password File: Archivo de sistema que almacena los
nombres de usuario y contraseña (encriptadas) para poder
autenticar a un usuario sin la necesidad del diccionario de
datos.
Archive Log Files: Copias de los Online Redo Log Files
llenos
Desarrollar e implantar aplicaciones empresariales más
escalables, fiables y seguras.
Optimizar la productividad de los departamentos de
Tecnología de Información reduciendo la complejidad en la
creación, implantación y administración de las aplicaciones
de bases de datos.
18
Compartir datos a través de múltiples plataformas,
aplicaciones y dispositivos para facilitar la interconexión
entre sistemas internos y externos.
Ofrecer soluciones de inteligencia empresarial que ayuden a
tomar decisiones con fundamento y aumentar la
productividad por toda la empresa; y
Controlar los costes sin sacrificar el rendimiento, la disponibilidad ni la
fiabilidad.
1.11. Infraestructura Tecnológica.
En hardware de estaciones de trabajo, todos los requerimientos
mínimos para la implantación de sistemas basados en Windows
XP o superiores.
En hardware de servidores, servidores con la capacidad de
trabajar y soportar la base de datos y servicios WEB y además,
La infraestructura necesaria para lograr el rendimiento y la
disponibilidad de la información entre los diferentes
componentes o elementos que la utilizan.
1.12. Metodología del Proyecto
19
De acuerdo a las expectativas creadas por parte del equipo de
trabajo para la realización del proyecto de seminario “Aula
Virtual”, optamos por seguir el “MODELO EN ESPIRAL”.
Este es un modelo de proceso de software evolutivo para la
ingeniería de software donde el software se desarrolla en una
serie de versiones incrementales, permitiendo al desarrollador y
al cliente entender y reaccionar a los riesgos en cada nivel
evolutivo.
Utilizando la creación de prototipos como un mecanismo de
reducción de riesgo, pero, lo que es más importante permite a
quien lo desarrolla aplicar el enfoque de creación de prototipos
en cualquier etapa de la evolución de prototipos.
Con cada iteración alrededor de la espiral, se construyen
sucesivas versiones del software, cada vez más completa y, al
final, al propio sistema operacional que es el objetivo deseado.
Este modelo Consta de cuatro etapas o fases:
20
Planificación: Se determinan los objetivos principales
del proyecto, las alternativas y los inconvenientes que
pueda presentar el proyecto.
Análisis de Riesgo: Se determinan los riesgos que se
pueden presentar en la elaboración del proyecto, y se
analizan las posibles alternativas de solución de los
mismos, es de anotar que una vez elaborado el prototipo
y si los riesgos son altos y no existen posibles
alternativas de solución el proyecto se puede dar por
terminado.
Ingeniería: Se realiza el desarrollo del siguiente nivel.
Evaluación del Cliente: Una vez se ha realizado el
modelo es revisado por el usuario final para determinar
las fallas y se continua con el ciclo hasta tener el
producto final.
1.13. Recursos necesarios del proyecto
1.13.1. Recurso Humano
El recurso humano necesario para el desarrollo e
implementación de la solución, está constituido por tres
21
personas, las mismas que tendrán a su cargo tareas y
actividades detalladas en el cronograma de trabajo del
proyecto, y que en general se denotan específicamente por:
Creación de estructuras y objetos de base de datos.
Desarrollo de interfaces y pantallas del sistema.
Codificación y programación de la lógica del negocio.
Desarrollo de consultas y reportería.
Documentación, pruebas y certificaciones de la
aplicación
Integración e implementación de la solución.
1.13.2. Recurso Tecnológico
En hardware de servidores, equipos de computo con la
capacidad de trabajar y soportar la base de datos Oracle 10g
sobre Sistema Operativo Linux.
En hardware de estaciones de trabajo, todos los requerimientos
mínimos para la implantación de sistemas basados en
arquitectura Web usando herramientas de desarrollo como
JDeveloper y Oracle Developer 6i.
22
En general, la infraestructura necesaria para lograr el
rendimiento y la disponibilidad de la información entre los
diferentes componentes o elementos que la utilizan.
Nota. Los requerimientos de Hardware de los equipos
dependerá de la plataforma Oracle y Java usada con el
objetivo de que la aplicación trabaje de manera adecuada
y se definirán de acuerdo a las especificaciones técnicas
dadas por cada uno de los proveedores de los programas
señalados.
1.14. Para la implementación del proyecto.
Por estación a ser instalada
250 MB de RAM o superior
40 GB de disco duro o superior
Procesador P IV de 2.8 Ghz
Monitor de 15’
Sistema Operativo Windows XP o superior
Para el servidor de Base de Datos
23
512 MB de RAM
80 GB de disco duro (con preferencia disco SCSI)
Procesador PIV de 3 Ghz o superior
Monitor 15’
Sistema Operativo Linux
1.15. Cronograma de Tiempo del Proyecto
La duración y el cronograma de trabajo se detallan en el Anexo
A.
DURACION: 10 meses.
Ver Anexo A
24
CAPÍTULO 2
2. ANÁLISIS
2.1. Levantamiento de Información
En base a un análisis detallado de los mecanismos normales
correspondientes a las evaluaciones de los usuarios
(estudiantes, docentes, personal de administración), dentro de
la carrera de Ingeniería en Sistemas Computacionales de la
Universidad de Guayaquil, encontramos un sin número de
complicaciones al momento que mencionaremos a
continuación:
25
DOCENTE:
Elaboración de evaluaciones, las mismas que siempre son
escritas independientemente que sean pruebas objetivas o
teóricas.
En algunos casos las evaluaciones son fotocopiadas y esto es
un gasto para el docente.
Mal interpretación de caligrafía del estudiante en la mayoría de
los casos, lo que lleva a no calificar de una manera eficiente.
En evaluaciones teóricas se corre el riesgo de que el estudiante
altere el examen al momento de la revisión.
Debido al manejo físico de las evaluaciones existe la posibilidad
de extravió de las mismas.
ESTUDIANTE:
El desarrollo de evaluaciones son escritas las mismas que
pueden ser objetivas o teóricas, donde involucra tiempo en el
caso de que el docente dicte las preguntas de las evaluaciones
donde se requiere de tiempo y materiales, como es el caso de
plumas, lápices y hojas.
26
PERSONAL ADMINISTRATIVO:
Al momento de evaluar a los profesores por parte de los
alumnos es tedioso calificar un sin número de evaluaciones
escritas, debido a la gran cantidad de estudiantes que existen
en la carrera.
El personal administrativo es el encargado de programar las recalificaciones
en los casos de inconformidad de notas de parte de los estudiantes.
2.2. Analisis de Requerimientos
Debido a las complicaciones anteriormente detalladas, hemos
propuesto una solución orientada al internet que permita
automatizar el proceso de evaluación que actualmente los
usuarios (estudiantes, docentes, personal de administración) en
general llevan a cabo, de tal forma que la herramienta permitirá
optimizar tiempo y recursos en todas las actividades y tareas
incluyentes en este proceso.
Registro de Exámenes
El sistema debe permitir la creación de un tipo de evaluación
y deberá asignarle una categoría o subcategoría al mismo.
También debe registrar información referencial como el
administrador o el personal administrativo que generó la
27
evaluación del docente, tiempo disponible para cada prueba
(sólo para exámenes), número máximo de opciones
múltiples por cada pregunta, etc.
La herramienta debe permitir generar y registrar las
preguntas para cada examen. Cada pregunta debe tener un
detalle de posibles respuestas, de las cuales el usuario debe
indicar en el sistema cuál es la respuesta válida. El
instructor o personal administrativo debe registrar el número
máximo de respuestas que tiene la pregunta.
La herramienta debe tener la opción de habilitar los
exámenes o deshabilitarlo para un usuario en particular.
El módulo debe registrar con datos encriptados (que no se
pueda descifrar) la respuesta válida por cada pregunta.
Ejecución de los Exámenes
En este módulo se debe permitir que un estudiante válido (con
los permisos necesarios) pueda ingresar a ejecutar los
exámenes o evaluación de docentes que estén autorizados a
resolver. Esta ejecución cumple con los siguientes
requerimientos:
Validación del estudiante antes de ejecutar la prueba.
28
Visualización de los exámenes autorizados y habilitados
para el estudiante.
Antes de comenzar a resolver el examen, el sistema debe
mostrar la siguiente información:
1. Categoría y subcategoría del examen
2. Número de preguntas que tiene el examen
3. El tiempo que dispone el estudiante para contestar el
examen
4. Un ejemplo de la modalidad que tiene el examen con
las opciones múltiples. Este ejemplo debe presentar
un ejercicio muy sencillo.
Durante la ejecución del examen, el usuario va a ir
contestando las preguntas seleccionando las diferentes
opciones múltiples. La pregunta debe especificar el número
de respuestas válidas que tiene esa pregunta y el usuario
sólo puede escoger un número menor o igual al total de
respuestas que tiene la pregunta.
En el momento que el examen comienza se debe
contabilizar el tiempo que va ocupando el examen, puesto
que la prueba termina o bien cuando el usuario contesta
29
correctamente todas las preguntas o bien cuando transcurre
el tiempo máximo de la prueba.
Al final de la prueba, el sistema debe indicar el porcentaje
(sobre 100) de respuestas contestadas correctamente y no
debe permitir el cambio o modificación de ninguna pregunta.
Adicionalmente cada prueba va a generar un número único
que será el código del examen. Este número no puede
repetirse puesto que una persona puede hacer un examen
varias veces y una misma persona puede realizar varios
exámenes (si está definido en los permisos del instructor o
personal administrativo).
Reportes
Este módulo debe permitir la generación de reportes sobre
la siguiente información:
Listado de exámenes creados en el sistema con su
información básica (profesor o personal
administrativo)
Listado de estudiantes habilitados en el sistema
agrupados por los diferentes exámenes a los que
tienen accesos.
30
Reporte con las respuestas correctas e incorrectas de
un examen o evaluación de docente por un estudiante
o por profesor. Para este caso se debe ingresar el
código del estudiante y el sistema debe mostrar todos
los exámenes (nombres y fechas) que realizó el
estudiante. (profesor)
Reporte de todos los exámenes realizados en un
determinado periodo. El sistema debe solicitar un
rango de fechas y buscar en el sistema todas las
pruebas realizadas en ese rango y mostrar todas las
pruebas.
Los últimos reportes tienen la misma estructura y diseño, sólo
cambia la modalidad de búsqueda.
2.3. Análisis de Riesgos
En casos de incidentes tales como, cuando se cae la base de
datos cuando falla el equipo remoto donde se esta elaborando la
evaluación en el momento de la evaluación, tomar en
consideración que debe registrar el tiempo transcurrido de la
evaluación y automáticamente se debe guardar hasta el ultimo
cambio realizado.
31
Vulnerabilidad contra ataques de piratas informáticos, la
herramienta debe manejar todos los estandares de seguridad
para evitar incursiones no deseadas.
Portabilidad, se deben realizar todas lãs pruebas para verificar
que el sistema funcione em cualquier navegador.
2.4. Diagrama de Flujo de Procesos
2.4.1. Flujo de Procesos
El Diagrama de Flujo de Procesos es una representación
gráfica de la secuencia de todas las operaciones, secuencias,
esperas y los almacenamientos que ocurren durante el proceso
de ingreso, registro, inscripción, consultas e impresión de datos
al visitar nuestro Portal. Incluye, además, la información que se
considera deseable para el análisis, por ello se ha considerado
importante los siguientes Flujos de Procesos:
2.4.2. Procesos del Portal Web
Registro de Evaluación Administrador / Docente
Ingreso al Portal Web
Visualización del Sitio
Autenticación del Usuario
Presentación del Menú Principal
32
Consulta de materias asignadas
Registro de Examen-Plantilla
Ingreso de datos (ingreso al formulario de
registro)
Verificación de la Plantilla-Borrador
Confirmación de Registro
Activación de la Evaluación
Activacion de Evaluación Administrador / Docente
Ingreso al Portal Web
Visualización del Sitio
Autenticación del Usuario
Presentación del Menú Principal
Consulta de evaluaciones registradas
Consulta de usuarios inscritos al curso
Selección de usuarios
Activación de Evaluación
Proceso de Evaluación
Proceso Evaluación Estudiante
Ingreso al Portal Web
Visualización del Sitio
Autenticación del Usuario
Presentación del Menú Principal
Consulta de Evaluaciones Activadas
33
Selección de Evaluación
Confirmación de Inicio
Proceso Evaluativo
Validación de Preguntas
Terminación de Evaluación
Revisión de Evaluación
Registro de Resultados
Ver Anexo B
2.5. Modelo de la aplicacion
La aplicación está basada en la metodología UML. UML
(Lenguaje de Modelado Unificado) es una especificación de
notación orientada a objetos, el cual se compone de diferentes
diagramas, que representan las diferentes etapas del desarrollo
del proyecto, detallamos los más importantes y los usados en
nuestra etapa de análisis.
2.6. Diagrama de Casos de Uso
El Diagrama de Casos de Uso va a representar gráficamente el
comportamiento de nuestro Portal Web presentando como el
mismo es visto y utilizado por los usuarios.
2.6.1. Casos de Uso
34
Ver Anexo C
2.6.2. Descripción de Casos de Uso
Nombre: Crear registro de evaluaciónAutor: G5 EvaluacionesFecha 26/11/2008Descripción:Permite crear el registro de una evaluación.Actores:Usuario de Internet logeado.
Precondiciones:El usuario debe haberse logeado en el sistema
Flujo Normal:1. El actor pulsa sobre el botón para crear un nuevo registro de
evaluación.2. El sistema muestra varias cajas de texto, para introducir
datos como: tipo, categoría, tiempo de duración, valor de lanota.
3. El actor introduce el tipo, categoría, tiempo de duración,valor de la nota.
4. El sistema comprueba la validez de los datos y losalmacena.
Flujo Alternativo:4. El sistema comprueba la validez de los datos, si los datos no
son correctos, se avisa al actor de ello permitiéndole que loscorrija.
Pos condiciones:El registro ha sido almacenado en el sistema.
Nombre: Crear detalle de preguntas de la evaluaciónAutor: G5 EvaluacionesFecha 26/11/2008Descripción:Permite crear el registro de las preguntas de una evaluación.
35
Actores:Usuario de Internet logeado.
Precondiciones:1. El usuario debe haberse logeado en el sistema2. Debe existir un registro previo de la evaluación
Flujo Normal:1. El actor pulsa sobre el botón para crear un nuevo registro de
preguntas.2. El sistema muestra varias cajas de texto, para introducir
datos como: descripción, cantidad de respuestas correctas,valoración.
3. El actor introduce el descripción, cantidad de respuestascorrectas, valoración.
4. El sistema comprueba la validez de los datos y los almacena.Flujo Alternativo:
4. El sistema comprueba la validez de los datos, si los datos noson correctos, se avisa al actor de ello permitiéndole que loscorrija
Pos condiciones:El registro ha sido almacenado en el sistema.
Nombre: Crear detalle de respuestas evaluaciónAutor: G5 EvaluacionesFecha 26/11/2008Descripción:Permite crear el registro de las respuestas de las preguntas deuna evaluación.Actores:Usuario de Internet logeado.
Precondiciones:1. El usuario debe haberse logeado en el sistema2. Debe existir un registro previo de la evaluación3. Debe existir por lo menos una pregunta
36
Flujo Normal:1. El actor pulsa sobre el botón para crear un nuevo registro
de respuestas.2. El sistema muestra una caja de texto, para introducir la
descripción de la respuesta, además un casilla deverificación para indicar si la respuesta es verdadera ofalsa.
3. El actor introduce la descripción y selecciona la casilla deverificación.
4. El sistema comprueba la validez de los datos y losalmacena.
Flujo Alternativo:1. El sistema comprueba la validez de los datos, si los datos
no son correctos, se avisa al actor de ello permitiéndole quelos corrija.
Pos condiciones:El registro ha sido almacenado en el sistema.
Nombre: Activación de Evaluaciones
Autor: G5 Evaluaciones
Fecha 26/11/2008
Descripción:Permite registrar la activación de la evaluación a los estudiantes.
Actores:Usuario de Internet logeado.
Precondiciones:1. El usuario debe haberse logeado en el sistema2. Debe existir un registro previo de la evaluación
Flujo Normal:1. El actor pulsa sobre el botón para consultar los estudiantes
inscritos al curso.2. El sistema muestra una caja de texto, para introducir la
37
fecha/ hora del inicio de la evaluación, además se presentauna casilla de verificación por cada estudiante registrado enla asignatura.
3. El actor introduce la fecha/hora del inicio y selecciona lacasilla de verificación por cada estudiante que se va aactivar la evaluación.
4. El sistema comprueba la validez de los datos y losalmacena.
Flujo Alternativo:4. El sistema comprueba la validez de los datos, si los datos
no son correctos, se avisa al actor de ello permitiéndole quelos corrija.
Pos condiciones:El registro ha sido almacenado en el sistema.
Nombre: Registro del Inicio de la Evaluación
Autor: G5 Evaluaciones
Fecha 26/11/2008
Descripción:Permite registrar el inicio de la evaluación del estudiante.
Actores:Usuario de Internet logeado.
Precondiciones:1. El usuario debe haberse logeado en el sistema2. Visualización de los exámenes autorizados y habilitados
para el estudiante.
38
Flujo Normal:1. El actor pulsa sobre el link para consultar la información
detallada de la evaluación.2. El sistema muestra un encabezado con los datos
informativos de la evaluación: categoría y subcategoría delexamen, Número de preguntas que tiene el examen, Eltiempo que dispone el estudiante para contestar el examen.
3. El actor pulsa sobre el botón para iniciar la evaluación.4. El sistema comprueba la validez de los datos y los
almacena.Pos condiciones:El registro ha sido almacenado en el sistema.
Nombre: Desarrollo de EvaluacionesAutor: G5 EvaluacionesFecha 26/11/2008Descripción:Permite registrar las respuestas de las preguntas de la evaluaciónde los estudiantes.Actores:Usuario de Internet logeado.
Precondiciones:1. El usuario debe haberse logeado en el sistema.2. Debe existir un registro previo del inicio de la evaluación.
Flujo Normal:1. El actor pulsa sobre el link de la evaluación iniciada2. El sistema muestra un listado de preguntas con sus
respectivas respuestas en casillas de verificación.3. El actor selecciona la casilla de verificación por cada
respuesta múltiple, según crea conveniente.4. El sistema comprueba la validez de los datos y los almacena.5. El actor selecciona el botón de terminar examen.6. El sistema muestra la calificación porcentual de la revisión del
examen
39
Flujo Alternativo:4. El sistema comprueba la validez de los datos, si los datos no
son correctos, se avisa al actor de ello permitiéndole que loscorrija.
Pos condiciones:El registro ha sido almacenado en el sistema.
2.7. Diagrama Entidad Relación
El Diagrama Entidad Relación representa las relaciones entre
los Objetos de Datos, es la notación que se usa para realizar la
actividad de Modelado de Datos, los atributos de cada objeto de
datos señalados en el DER se pueden describir mediante una
descripción de Objetos de Datos.
Para nuestro Diagrama Entidad Relación se ha considerado las
siguientes Entidades con sus respectivos campos:
Ver Anexo D
2.8. Diagrama de Contexto de Arquitectura yFuncionalidad.
40
Figura 2.1. Arquitectura del Proyecto
41
CAPÍTULO 3
3. DISEÑO
3.1. Diseño de Datos
La actividad principal del diseño de datos es seleccionar
representaciones lógicas de objetos de datos (estructuras de datos)
identificada durante la fase de definición y especificación de requisitos.
El proceso de selección puede incluir el análisis de estructuras
alternativas para determinar el diseño más eficaz o puede incluir
simplemente el empleo de un conjunto de módulos que proporcione
las operaciones deseadas sobre alguna representación de un objeto.
Unos datos bien diseñados pueden conducir a una mejor estructura y
modularidad del programa, y a una menor complejidad procedimental.
42
Al diseñar nuestras estructuras de datos eficazmente debemos considerar
todas las operaciones que se van ha realizar sobre dichas estructuras,
como consultas, reportes y actualizaciones. Es esencial una clara
definición de la información para el éxito del desarrollo del proyecto.
A continuación se nombran y detallan las estructuras de datos definidas
para el proyecto:
3.1.1 Descripción de las Tablas
Tabla: TIPO_EXAMEN
Nombre Descripción TipoDato Long. Permite
Nulo?
id_tipo_examen Código del tipo de examen. Number 5 N
Descripción Descripción del tipo de examen. varchar2 50 N
usuario_ingresa Código del usuario del sistema que ingresael registro. Number 5 N
fecha_ingreso Fecha en la que el usuario ingresa elregistro Date N
usuario_modifica Código del usuario del sistema quemodifica el registro.
Number 5 S
fecha_ultima_modificacion Fecha en la que el usuario modifica elregistro Date S
Descripción: tabla de catálogo que contiene información de los tipos
de exámenes con los que cuenta el Sistema para realizar la
evaluación.
43
Tabla: CATEGORIA_PREGUNTA
Nombre Descripción TipoDato Long. Permite
Nulo?
id_categoria_preguntaCódigo de la categoría de la preguntausada en el examen Number 5 N
id_padre Código de la sub-categoría de lapregunta. Number 5 N
Nombre Nombre de la categoría de la pregunta. varchar2 50 N
Descripción Detalle de la categoría. varchar2 100 S
usuario_ingresaCódigo del usuario del sistema queingresa el registro. Number 5 N
fecha_ingreso Fecha en la que el usuario ingresa elregistro Date N
usuario_modificaCódigo del usuario del sistema quemodifica el registro. Number 5 S
fecha_ultima_modficacion Fecha en la que el usuario modifica elregistro Date S
Descripción: tabla de catálogo que almacena la información de
las categorías y subcategorías de las preguntas que son
utilizadas en el desarrollo de la evaluación.
Tabla: EXAMEN
Nombre Descripción TipoDato Long. Permite
Nulo?
id_examen Código del examen realizado. number 5 N
44
id_tipo_examen Código del tipo de examen. number 5 N
Introducción Breve descripción en donde se indica elobjetivo del examen. Varchar2 1500 N
is_permite_abrir Indica si un examen está disponiblepara el alumno. varchar2 1 N
is_permite_cerrar Indica si un examen puede sercancelado por el alumno. varchar2 1 N
fecha_inicio Almacena la fecha en la que se activael examen. date N
fecha_fin Almacena la fecha en la que sedesactiva el examen. date N
is_limite_tiempo Indica si el examen posee límite detiempo para su desarrollo. varchar2 1 N
is_habilita_tiempoRegistra si se ha activado o no lacorrida del tiempo para la elaboraciónde la evaluación
varchar2 1 N
tiempo_primero_segundo varchar2 5 N
Num_max_preguntas Número máximo de preguntas que tieneun examen. number 5 N
is_pregunta_aleatoria Indica si el examen contiene preguntasgeneradas aleatoriamente. varchar2 1 N
is_respuesta_aleatoriaIndica si el examen contiene opcionesde respuestas generadasaleatoriamente.
varchar2 1 N
is_aplica_penalizacion varchar2 1 N
is_ventana_segura Indica si el examen se abre en unaventana con acceso seguro. varchar2 1 N
is_requiere_contraseñaDetalla si para acceder un examen esnecesaria una contraseña. varchar2 1 N
calificación_maxima Calificación máxima que se obtiene enla evaluación. number 5 N
id_estado Código del estado del registro. number 5
usuario_ingresa Código del usuario del sistema queingresa el registro. number 5 N
45
usuario_modificaCódigo del usuario del sistema quemodifica el registro. number 5 S
fecha_ingresa Fecha en la que el usuario ingresa elregistro date N
fecha_ultima_modificacion Fecha en la que el usuario modifica elregistro date S
id_parcial Código del parcial number 5 N
id_periodo_lectivo Código del periodo lectivo number 5 N
id_materia Código de la materia number 5 N
Id_contraseña Detalle de la contraseña para abrir elexamen Varchar2 32 N
Descripción: en esta tabla se almacenará la información
general (parámetros de visualización, calificación, entre otros)
del examen que es elaborado para realizar la evaluación de una
materia en un paralelo específico.
46
Tabla: PREGUNTA
Nombre Descripción TipoDato Long. Permite
Nulo?
id_pregunta Código de la pregunta number 5 N
id_categoria_preguntaCódigo de la categoría a la quepertenece la pregunta. number 5 S
id_tipo_pregunta Código del tipo de pregunta. number 5 N
Descripción Enunciado de la pregunta. varchar2 500 N
Calificación Valor de la pregunta cuando es correcta. number 5 N
Msg_general Mensaje general que es mostrado aldesarrollar la pregunta. varchar2 500 S
factor_penalizacion Valor del factor de penalización aplicadaa la pregunta. number 5 N
usuario_ingresa Código del usuario del sistema queingresa el registro.
number 5 N
usuario_modifica Código del usuario del sistema quemodifica el registro. number 5 S
fecha_ingreso Fecha en la que el usuario ingresa elregistro date N
fecha_ultima_modificacion Fecha en la que el usuario modifica elregistro date S
Bin Campo que guarda imagen de lapregunta blob S
Nombre_archivo La ruta y nombre del archivo de laimagen Varchar2 255
Descripción: tabla de catálogo que registra la información delas preguntas y sus características.
Tabla: RESPUESTA
47
Nombre Descripción TipoDato Long. Permite
Nulo?
id_respuesta Código de la respuesta de la pregunta. number 5 N
id_pregunta Código de la pregunta. number 5 S
Respuesta Texto de la respuesta. varchar2 500 N
Calificación Valor numérico de la respuesta. number 5 N
margen_error Valor del margen de error de larespuesta. number 10 N
respuesta_correcta Indica si la respuesta es la valida. varchar2 1 N
usuario_ingresa Código del usuario del sistema queingresa el registro. number 5 N
usuario_modifica Código del usuario del sistema quemodifica el registro. number 5 S
fecha_ingresa Fecha en la que el usuario ingresa elregistro date N
fecha_ultima_modificacion Fecha en la que el usuario modifica elregistro date S
Descripción: tabla de catálogo en la que se ingresan las
respuestas por cada pregunta con características propias para
cada tipo de pregunta.
Tabla: PREGUNTA_EXAMEN
Nombre Descripción TipoDato Long. Permite
Nulo?
id_examen Código del examen. number 5 N
id_pregunta Código de la pregunta. number 5 N
usuario_ingresa Código del usuario del sistema que number 5 N
48
ingresa el registro.
usuario_modifica Código del usuario del sistema quemodifica el registro. number 5 S
fecha_ingreso Fecha en la que el usuario ingresa elregistro date N
fecha_ultima_modificacionFecha en la que el usuario modifica elregistro date S
Calificación Valor de la pregunta Number 5 S
Descripción: en esta tabla se registran todas las preguntas que
son asignadas por el profesor para ser visualizadas en un
examen en particular.
Tabla: EXAMEN_ALUMNO
Nombre Descripción TipoDato Long. Permite
Nulo?
id_secuencia Secuencia del examen tomado a un alumno. number 5 N
id_examen Código del examen. number 5 N
id_usuario Código del alumno que realiza laevaluación. number 5 N
Nota_total Suma total de los valores de las respuestasde las preguntas hechas en el examen. number 5 N
fecha_inicio Fecha en la que el alumno inicia el examen. date S
fecha_termina Fecha en la que el alumno finaliza elexamen. date S
fecha_public Fecha en la que se publica la nota delexamen obtenida por el alumno. date S
49
fecha_venceFecha en la que un examen se establececomo vencido. date N
id_estado Código del estado del registro. number 5 S
usuario_ingresa Código del usuario del sistema que ingresael registro. number 5 N
usuario_modifica Código del usuario del sistema que modificael registro. number 5 S
fecha_ingreso Fecha en la que el usuario ingresa elregistro date N
fecha_ modifica Fecha en la que el usuario modifica elregistro date S
cont_penaliza Contador de las penalizaciones number 5 S
suma_penaliza Suma de las penalizaciones number 5 S
Nota_parcial Nota del examen obtenido Number 5 S
observación Instrucciones de las reglas del examen varchar2 50 S
Descripción: tabla en la cual se registra la información de la
asignación de exámenes por alumno, así como registrar la nota
demás parámetros con los resultados obtenidos por la
resolución del examen.
Tabla: RESPUESTA_EXAMEN
Nombre Descripción TipoDato Long. Permite
Nulo?
id_examen Código del examen. number 5 N
50
id_pregunta Código de la pregunta. number 5 N
id_secuencia Secuencia del registro del examen asignadopor alumno.
number 5 N
id_respuesta Código de la respuesta seleccionada por elalumno.
number 10 N
descripcion Texto de descripción de la respuesta. varchar2 500 N
respuesta Texto de la respuesta seleccionada por elalumno. varchar2 1 S
Nota_parcial Valor parcial de la pregunta de acuerdo a larespuesta seleccionada. number 5 N
valoración Número que indica la valoración de larespuesta. number 5 N
usuario_ingresa Código del usuario del sistema que ingresael registro. number 5 N
usuario_modifica Código del usuario del sistema que modificael registro. number 5 S
fecha_ingresaFecha en la que el usuario ingresa elregistro date S
fecha_modifica Fecha en la que el usuario modifica elregistro
Descripción: tabla en la cual se registran todas las respuestas
a las preguntas que fueron asignadas en el examen que es
realizado por el alumno.
3.2. Diseño de la Interfaz
51
El diseño de la interfaz Describe como se comunica el Software
consigo mismo, con los sistemas que operan junto con el y con
los operadores y usuarios que lo emplean.
La interfaz grafica de un software es el límite y espacio común
en el que interactúan el usuario y el software. Esta misma
versatilidad obliga a ser muy cuidadosos, y tener en cuenta que
buena estética no significa buena usabilidad, es por esto que
nos esforzamos por brindar lo mejor en diseño web para así
hacer mas usable y fácil nuestro sistema.
Es muy frecuente encontrar interfaces para el WEB en las que
no se considero que el usuario no es en la mayoría de los casos
un experto en computación, sino que la aplicación puede ser
usada por un público diverso, que puede incluir personas con
características especiales, al parecer es fácil olvidar que es el
usuario quien determina el éxito o fracaso de una aplicación de
software. Incluir solamente características estéticas en una
interfaz sin considerar seriamente la usabilidad de la misma
provoca un fuerte desaliento en el usuario.
52
Lo deseable es que las interfaces de aplicaciones para el WEB
sean fáciles de usar, fáciles de navegar, agradables al usuario,
que contengan elementos bien distribuidos, de tal forma que no
se haga una saturación de la página y que la Interfaz realmente
contenga la información que el usuario espera de ella además
de que por supuesto, debe ser agradable visualmente.
3.2.1 Pagina Inicial
Antes de ingresar a la pantalla principal, tenemos que acceder
al Sistema del Aula Virtual con un código de usuario y según
este código se mostraran las diferentes opciones en el árbol.
Figura 3.1. Inicio sesión Administrador
53
Esta pantalla le muestra al usuario en primera instancia todas
las opciones que tiene con respecto a la Página, opciones
como: Página Principal, y las diferentes opciones que se
despliegan en este menú para el desarrollo de las evaluaciones,
las mismas que mostramos a continuación:
Figura 3.2. Pantalla Principal Administrador
3.2.2 Pantalla Categoría de Preguntas
La siguiente pantalla me permite darle mantenimiento a la
categoría de preguntas, el mismo que me permite guardar,
consultar individual y grupal los registros, eliminar, recorrer los
registros uno a uno, salir etc.
54
Figura 3.3. Categoría Preguntas
3.2.3 Pantalla de Mantenimiento de Preguntas
Las siguientes pantallas son de mantenimiento de preguntas, en
esta pantalla manejamos dos pestañas donde tenemos que
registrar los datos para la pregunta en la primer pestaña y en la
segunda las respuestas que se asignará a la pregunta que se
esta creando.
Esta pantalla me permite guardar, consultar, recorrer los
registros, borrar pantalla, etc.
Cuando registramos datos en la pregunta tenemos la ventaja de
poder cargar imágenes .gif las mismas que tienen que estar
guardadas en una dirección especifica, en nuestro caso en :
c:\AulaVirtual\Imagen001.gif.
55
Figura 3.3. Pestaña Pregunta
Figura 3.4. . Pestaña Respuestas.
En la pestaña de las respuestas tenemos que registrar las
respuestas probables incluida la verdadera o verdaderas, según
56
sea el caso, es decir dependiendo de la pregunta que se ha
creado.
3.2.4 Pantalla de Mantenimiento de Evaluaciones
Las evaluaciones que se le designan a los alumnos que tienen
asignada la tarea, deben resolver una Evaluación, el mismo que
vamos a describir como se lo crea.
Figura 3.5 Pestaña Evaluación
57
Como observamos la pantalla anterior para la creación de
evaluaciones es necesario seguir un orden de pasos para lograr
con éxito la creación de un examen en este módulo.
Luego tenemos la pestaña donde manejamos las preguntas
que vamos a escoger para agregar a la evaluación.
Figura 3.6 Pestaña Banco de Preguntas
Y la siguiente pantalla Mostrará todas las preguntas que se
escogieron previamente en la pantalla de Banco de Preguntas.
58
Figura 3.7 Pestaña Preguntas Seleccionadas
La siguiente pantalla Mostrará todos los alumnos que están
inscritos, para dar la evaluación en esta materia.
59
Figura 3.8 Pestaña Alumnos Autorizados
3.2.5 Pantalla de Reporte de Evaluaciones por Alumno
Figura 3.9 Reporte de Evaluaciones por Alumno
60
3.2.6 Pantalla de Reportes de Evaluaciones por Materia
Figura 3.10 Reporte de Evaluaciones por Alumno
3.2.7 Pantalla de Reporte de Lista de Categorías
Figura 3.11 Reporte de Evaluaciones por Alumno
3.2.8 Pantalla de Reporte de Alumnos activos por Evaluación
61
Figura 3.12 Reporte de Evaluaciones por Alumno
3.2.9 Pantalla Evaluación al Docente
Figura 3.13 Reporte de Evaluaciones por Alumno
62
CAPÍTULO 4
4. DESARROLLO Y PRUEBA DEL SISTEMA
Desarrollo del Sistema
Creación de la base de datos
La primera tarea que tendrá que realizar un Administrador de Base
de Datos es la creación correcta de la Base de Datos. Físicamente
hablando, una base de datos no es más que un conjunto de
archivos que son almacenados en un dispositivo de
almacenamiento y a la que se definen un conjunto de propiedades.
Esta definición constituye la primera perspectiva utilizada para
definir una base de datos. Oracle 10g provee de la primera
infraestructura completa e integrada para potenciar el grid
computing.
63
Oracle 10g recoge los atributos fundamentales de esta tecnología
de computación:
Implementar uno a partir de muchos (Implement One from Many)
: Se trata de conseguir que un número indeterminado de máquinas
funcionen como una sola. Para ello, se tiene que aplicar un proceso
de virtualización en todas las capas del sistema y una zona común
donde se almacenen los recursos (resource pooling).
Administrar Muchos como si fueran Uno (Manage Many as One):
Para conseguirlo debemos contar con un software a medida y de un
sistema de administración centralizado.
Los dos puntos anteriores deben aplicarse a cada elemento del grid:
sistemas de almacenamiento, bases de datos, servidores de
aplicación y aplicaciones.
Figura 4.1 Estructura de Oracle
64
Como se puede comprobar, la apuesta de Oracle por la tecnología
Grid Computing se basa en sus tres productos fundamentales:
Oracle 10g Database.
Oracle 10g Application Server.
Oracle Enterprise Manager 10g Grid Control.
Oracle Database 10g
Esta construida sobre el éxito de la versión anterior, Oracle 9i, y
añade muchas nuevas características enfocadas al Grid
Computing. Mientras otros fabricantes implementan ciertas
secciones de una tecnología grid, como por ejemplo una zona de
almacenamiento común, Oracle es la primera compañía en ofrecer
una base de datos para grid real. Oracle 10g se basa en Real
Application Clusters, una opción incluida ya en Oracle 9i, y muchos
clientes en producción sirven para asegurar la utilidad y fiabilidad
de esta herramienta.
Real Application Clusters (RAC)
Oracle Real Application Clusters permite que una única base de
datos se expanda por múltiples nodos en un grid o red, uniendo los
65
recursos de varias máquinas. Esto que requería un proceso en
versiones anteriores del servidor se puede hacer inmediatamente
en Oracle 10g, y se puede empezar a balancear el flujo de trabajo
hacia la nueva máquina que se incorpora al grid, a la vez que
"abandonarla" cuando ya no es necesaria. Otros Sistemas de
Bases de Datos no pueden hacer esto dinámicamente cuando la
BD se encuentra ejecutándose.
El nuevo software de cluster en Oracle 10g simplifica el proceso
eliminando la necesidad de adquirir, instalar y configurar estas
herramientas de terceros. Se pueden añadir servidores a la vez
que eliminarlos en un cluster Oracle sin tiempo de inactividad, es
decir, sin detener la BD, sin importar tampoco la plataforma donde
se encuentra instalado el servidor.
Administración Automática del Espacio de
Almacenamiento (Automatic Storage Management, ASM)
Esta nueva herramienta trata de simplificar la administración del
espacio para las BDs Oracle. En vez de manejar numeroso
archivos para una base de datos, el Administrador de la BD sólo
gestiona un pequeño número de grupos de disco .
Un grupo de disco es un conjunto de dispositivos físicos de disco
que Oracle maneja como una única unidad lógica. Un DBA puede
definir un disk group como el predefinido para una base de datos, y
Oracle automáticamente gestiona ese espacio para crear y eliminar
66
los ficheros relacionados con los objetos de la Base de Datos.
También permite la integración con sistemas de almacenamiento
tipo RAID o Logical Volume Managers (LVMs). Otra ventaja de
ASM es que está concebido por Oracle, con lo cual su integración
con el resto de productos es mucho mayor.
Ubicación de los datos
Dependiendo del volumen de información y la frecuencia de acceso,
puede resultar necesario mover los datos desde donde se encuentran
ubicados y compartirlos entre varias Bases de Datos. Oracle 10g
añade nuevas características en este sentido como las herramientas
Import/Export Data Pump o los Tablespaces Transportables.
También tenemos la opción de Oracle Streams , que permite la
migración de datos entre dos BDs mientras ambas están online y sin
importar el SO donde se encuentren.
Base de Datos Auto-Administrada
El primer paso a dar para pasar a una estructura de grid es intentar
que cada sistema individual requiera de menos atención humana.
Oracle 10g incluye estructuras inteligentes que toman instantáneas de
las estadísticas del sistema y las almacenan para que sean analizadas
por los "consejeros" (advisors) y se tomen medidas correctivas
automáticamente sin intervención del administrador.
67
Problemas que se pueden identificar automáticamente son por
ejemplo, sentencias SQL mal construidas, problemas de red, o
retardos demasiado grandes debido a los bloqueos. Otros problemas u
alertas pueden ser enviados al DBA vía e-mail.
Oracle Application Server 10g
Oracle Application Server 10g proporciona una plataforma para
desarrollar y ejecutar aplicaciones empresariales, integrando muchas
funciones por ejemplo un entorno de ejecución para Web Services y
J2EE, complementos de Business Intelligence o una web caché entre
otras, aparte de características especialmente enfocadas al grid.
Application Server Clusters
Los servicios que proporciona Oracle Application Server 10g (HTTP,
J2EE, Web Cache, Web Services, LDAP, portales) se pueden abstraer
o virtualizar a través de los clusters de Application Servers. Estos
servicios pueden ser distribuidos en varias máquinas del grid. Como
nueva característica interesante indicar que se pueden fijar umbrales
de rendimiento para decidir si automáticamente se añaden o se
eliminan nuevas instancias de Application Server al grid ("Capacity on
demand").
68
Con Oracle 10g, un DBA puede definir un conjunto de políticas o
reglas de negocio que afectan a como se distribuye el trabajo entre los
diferentes nodos del grid. Por ejemplo, la carga de trabajo puede variar
en función de los usos de cpu o memoria, o también puede variar en
función de las horas del día, teniendo en cuenta los picos de trabajo.
Hay que tener en cuenta que con la estructura de grid conseguimos
otro importante objetivo: la reducción del tiempo de caída de los
sistemas. Es más, si tenemos en cuenta que si uno de los servidores
de aplicación falla, simplemente las peticiones serán redireccionadas
hacia otro nodo, se tendrían que caer todos los nodos para que el
sistema dejase de funcionar.
También hay que indicar que Oracle Application Server 10g
proporciona un sitio centra de administración, para dar acceso o
revocarlo a los usuarios de las aplicaciones. Esto es muy importante si
tenemos en cuenta que podemos tener un alto número de servidores
en nuestro grid. Los usuarios y demás identidades también pueden
gestionarse a través de Oracle Internet Directory , un sistema
basado en directorio LDAP.
Entorno para el desarrollo de Aplicaciones
Firmemente integradas con el servidor de aplicaciones Oracle 10g
están las herramientas de desarrollo que permiten generar
69
aplicaciones a medida por Internet para luego fácilmente desplegarlas
en el servidor de aplicaciones. No es necesario ningún proceso extra:
las aplicaciones que se coloquen en un servidor de aplicaciones que
esté en un grid se beneficiaran inmediatamente de la distribución
transparente de la carga de trabajo, balanceo de carga y la eficiente
coordinación del trabajo en los servidores.
Para conseguir las capacidades de grid computing es interesante que
las aplicaciones sean capaces de compartir información entre ellas y a
la vez con las herramientas de gestión. Por ello se recomienda la
adopción de estándares para reducir el tiempo de desarrollo y los
costes de uintegración.
Oracle Enterprise Manager 10g Gris Control
Oracle Enterprise manager 10g Grid Control es la consola central de
administración y el entorno que automatiza las tareas administrativas
para el conjunto de sistemas implicados en un entorno grid. Esta
consola ayuda a reducir los costes de administración; con ella, los
DBAs pueden agrupar múltiples nodos hardware como bases de
datos, servidores de aplicación, servidores web etc. como si fueran
unidades lógicas. Ejecutando trabajos, diseñando políticas,
monitorizando el rendimiento y automatizando muchas otras tareas
70
sobre un conjunto de destinos en vez de sobre muchos sistemas
individuales, la OEM Grid Control permite escalar un grid fácilmente.
Debido a esta característica, la existencia de muchas pequeñas
máquinas no incrementa la complejidad de la administración.
Debido al gran número potencial de nodos físicos en un grid, es
especialmente importante que la instalación y configuración del
software de esas máquinas sea rápida y no requiera intervención
humana. Pensemos que instalar manualmente cientos de nodos
requeriría un gran consumo de tiempo o que puede llegar a ser
imposible si las máquinas están dispersas geográficamente. Con OEM
Grid Control, Oracle 10g automatiza la instalación, configuración y
clonación de servidores de aplicación y de bases de datos sobre
múltiples nodos. Este entorno puede utilizarse tanto para la adición de
nuevos sistemas como para aplicar parches o añadir utilidades a
sistemas ya existentes. También mantiene la sincronía entre los
nodos.
Estándares de Gris
Con Oracle 10g, las compañías pueden empezar a implementar sus
estructuras de Grid Computing, pero el estándar abierto fue
71
concebido primeramente por el GGF (Global Grid Forum). Este
organismo ha definido un estándar (Open Grid Services Architecture,
OGSA ) para asentar los servicios generales y estándares de
programación que mejor se adaptan al grid computing.
Creación de los objetos de la base de datos
La segunda perspectiva que tenemos para definir una base de
datos es la manera lógica. Lógicamente, una base de datos es un
conjunto de datos que se encuentran estructurados en tablas y
otros objetos que ayudan a definir los mecanismos que mantienen
la integridad entre los datos. En la tabla siguiente se describen los
objetos de una base de datos SQL.:
Objeto Descripción
Tablas Define un conjunto de filas que tienecolumnas asociadas.
Tipos de datos definidos por elusuario
Los tipos de datos definidos por el usuario sebasan en los tipos de datos del sistema deOracle Database 10g. Se pueden utilizarcuando varias tablas deben almacenar elmismo tipo de datos en una columna y deseaasegurarse de que dichas columnas tienenexactamente el mismo tipo de datos, longitudy condición que la aceptación de valoresNULL.
RestriccionesDefine reglas relativas a los valorespermitidos en las columnas y es elmecanismo estándar para exigir la integridad
72
de los datos. Es preferible utilizarlos endesencadenadores, reglas y valorespredeterminados.
Índices
Un índice de una base de datos es una listade los valores de una tabla con las posicionesde almacenamiento de las filas de la tabladonde se encuentra cada valor. Se puedencrear índices en una sola columna o en unacombinación de columnas de una tabla.
Claves
Una clave principal es un conjunto decolumnas de una tabla que tienen la garantíade poseer valores únicos para cada fila dedicha tabla.
Procedimientos almacenados
Los procedimientos almacenados son unacolección precompilada de instrucciones SQLe instrucciones de control de flujo opcionalesalmacenadas bajo un solo nombre yprocesadas como una unidad. Losprocedimientos almacenados se guardan enuna base de datos; se pueden ejecutar desdeuna aplicación y permiten variablesdeclaradas por el usuario, ejecucióncondicional y otras funciones eficaces deprogramación.
Desencadenadores
Un desencadenador es un tipo especial deprocedimiento almacenado que entra en vigorcuando se modifican datos en una tablaespecificada utilizando una o másoperaciones de modificación de datos:UPDATE (actualización), INSERT (inserción)o DELETE (eliminación)
73
Funciones definidas por elusuario
Las funciones, en los lenguajes deprogramación, son subrutinas que se utilizanpara encapsular lógica que se ejecutafrecuentemente. Un código que deba ejecutarla lógica incorporada en una función puedellamarla en vez de tener que repetir toda lalógica de la función.
Vistas
Una vista es tan sólo una consulta deselección (SELECT) guardada en la base dedatos. Por tanto, la mayoría de lasoperaciones que se pueden realizar enconsultas también se pueden realizar envistas. No obstante, hay algunas operacionesque sólo se pueden aplicar a consultas o avistas pero no a ambas.
Valor predeterminadoLos valores predeterminados especifican quévalores se utilizan en una columna si no seespecifica un valor al insertar las filas.
Creación de los componentes
Para la creación de cada uno de los componentes la carga de trabajo
fue distribuida en los siguientes 6 módulos:
Administración de Evaluaciones
Generación de Evaluaciones
Administración de Preguntas y Respuestas
Procesos de Evaluaciones Docente y Alumnos
Reportes
Estos módulos fueron distribuidos entre los 3 miembros del grupo de
desarrollo de la siguiente manera:
74
Módulos Desarrolladores
Administración de EvaluacionesAlberto Mena
Alexandra Cabrera
Generación de EvaluacionesAlberto Mena
Alexandra Cabrera
Adm. de Preguntas y RespuestasFernanda Ladinez
Alexandra Cabrera
Evaluaciones Docente y AlumnosAlberto Mena
Fernanda Ladinez
ReportesAlexandra Cabrera
Fernanda Ladinez
Seguridad
Dado que la seguridad de la información es un factor de alta prioridad
para toda institución, nuestro software proporciona alto nivel de
seguridad en la información almacenada por los usuarios, haciendo
muy difícil la alteración y/o modificación inapropiada de la misma.
Las características de seguridad descritas a continuación se
encuentran implementadas en la nuestra solución, y estas son:
Registros de auditoría (Log de transacciones)
75
Lo cual permitirá auditar y hacer seguimiento de los últimos
accesos y modificaciones realizados por los usuarios a la
información del sistema.
Contraseñas de usuarios enmascaradas (Encriptación)
Todas las contraseñas de usuarios se encuentran
enmascaradas haciendo uso de un algoritmo HASH
(conocido por su efectividad en transformación de claves), lo
cual impedirá que los intrusos puedan copiar o alterar las
contraseñas de los usuarios del sistema.
Encriptación de datos
El sistema mantiene claves privadas para efectos de
encriptación de información críticos en la base de datos.
Pruebas del Sistema
Modelo de Prueba
Los ingenieros, analistas y desarrolladores de sistemas a menudo
tratan las pruebas del sistema como un factor sin mucha importancia,
desarrollando casos reprueba con poca garantía de ser completos y
efectivos. La solución entregada se la puede comprobar de las
siguientes 2 maneras:
Conociendo la función específica para la que fue diseñado el
proyecto, llevando a cabo pruebas que demuestre que cada
76
función es completamente operativa, y al mismo tiempo
buscando errores en cada función.
Conociendo el funcionamiento del producto, se pueden
desarrollar pruebas que aseguren que la función interna se
ajusten a las especificaciones y que todos los componentes
internos se han comprobado de forma adecuada.
Los métodos utilizados para el desarrollo de las pruebas por los
miembros de esta tesis son:
Prueba de caja negra
Prueba de caja blanca
Prueba de la Caja Negra
Se centran en los requisitos funcionales del sistema, permitiéndonos
obtener conjuntos de condiciones de entrada que ejerciten
completamente todos los requisitos funcionales de un programa. Con
este método de prueba se busca encontrar errores en las siguientes
categorías:
Funciones incorrectas o ausentes.
Errores de interfaz.
Errores en estructuras de datos o accesos a base de datos
externas.
Errores de rendimiento
Errores de inicialización de terminación.
77
Prueba de la Caja Blanca
Se basa en el minucioso examen de los detalles procedimentales. Se
comprueban los caminos lógicos del sistema proponiendo casos de
prueba que ejerciten conjuntos específicos de condiciones y/o bucles.
Se puede examinar el estado del programa en varios puntos para
determinar si el estado real coincide con el esperado. Con este
método se busca encontrar casos de prueba que:
Garanticen que se ejercita por lo menos una vez todos los
caminos independientes de cada módulo.
Ejerciten todas las decisiones lógicas en sus vertientes
verdadera y falsa
Ejecuten todos los bucles en sus límites y con sus límites
operacionales, y
Ejerciten las estructuras internas de datos para asegurar su
validez.
Calidad del Sistema
En nuestro sistema la calidad esta en función de los alcances definidos en
la etapa de análisis, y como los estos fueron cumplidos en su totalidad
podemos concluir que el proyecto cumple con la calidad esperada por
todos nosotros, haber cumplido los propósitos planteados al inicio.
78
Además debemos tomar en consideración que utilizar un modelo de
programación orienta a objetos permite la reutilización de métodos, clases
y componentes; sean estos existentes o desarrollados por nosotros, un
punto muy importante, ya que el modelo permitirá una actualización de
toda la información que se manipula debido a la independencia de los
procesos.
79
CAPÍTULO 5
5. IMPLEMENTACIÓN DEL SISTEMA
5.1. Elementos Físicos
Entre los elementos físicos que se necesitan para la correcta
implementación del sistema podemos mencionar los siguientes que no
podrían ser los definitivos pero si los mínimos necesarios para el buen
funcionamiento de la misma.
Por estación a ser instalada
250 MB de RAM o superior
40 GB de disco duro o superior
Procesador P IV de 2.8 Ghz
Monitor de 15’
Sistema Operativo Windows 2000 o superior
Para el servidor de Base de Datos
512 MB de RAM
80
80 GB de disco duro (con preferencia disco SCSI)
Procesador PIV de 3 Ghz o superior
Monitor 15’
Sistema Operativo Linux
5.2. Elementos Lógicos
Sistema operativo instalado en las maquinas destinadas para la
utilización del sistema (Windows XP ó Superior).
Como Base de Datos Oracle 10g Express Edition
5.3. Elementos Humanos
Administrador de la aplicación, encargado de dar soporte al
sistema y a los usuarios cuando estos lo ameriten.
Administrador encargado de la tarea de la “Generación de
Evaluaciones” otra de las funcionalidades que brinda el
sistema.
5.4. Infraestructura
Los equipos en los cuales se va a utilizar el sistema deben
estar en un lugar seguro, con todas las seguridades
respectivas para la prevención en el caso de que ocurre algún
problema.
81
El administrador central del sistema deberá aplicar las políticas
de seguridad que el crea necesarias para el buen manejo de la
información, a través de al generación reportes, sacar
respaldos de las Bases de Datos los mismo que de4berian ser
guardados en un lugar ajeno a la empresa, etc.
5.5. Capacitación de los usuarios.
La capacitación de los usuarios estará dirigida por personal de
la carrera pero con la colaboración nuestra, valiéndose del
conocimiento nuestro como desarrolladores y con la ayuda de
los manuales previamente elaborados por nosotros (Manual
Técnico, Manual de Usuario, etc).
Esperamos contar con el apoyo del personal administrativo para
que designe al personal más adecuado para la capacitación del
sistema.
82
CAPÍTULO 6
6. RECOMENDACIONES Y CONCLUSIONES DE LA
TESIS
Recomendaciones
A continuación detallaremos ciertas recomendaciones básicas que
tienen que ser tomadas en cuenta para lograr tener un
funcionamiento eficaz de la solución aplicada para esta tesis.
Tenga en cuenta las siguientes recomendaciones al diseñar una
aplicación o servicio.
6.1.1. Hardware
Tomando en consideración que la solución brindada se basa
en su gran parte en la ejecución de algoritmos y procesos
complejos con una continua conexión a la base de datos, razón
por la cual los equipos sobre los que funcione la aplicación
deberán poseer una gran capacidad de procesamiento y
memoria.
Bajo este contexto recomendamos que los requerimientos
básicos mínimos que deben tener estos equipos son:
83
Procesador Pentium IV de 2.4 GB o superior.
512 MB de memoria RAM en adelante.
Considerar el uso de equipos de respaldo nos daría la
seguridad de la información ante cualquier falla del equipo
donde este instalada la base de datos.
6.1.2. Software
El software del equipo debe estar previamente instalado y debe
contar con sus propios esquemas de seguridades, basados en el
nivel de sus componentes, y que en la mayoría de los casos está
dada por la herramienta que se use para el desarrollo de las
aplicaciones, bajo estas condiciones denotamos a continuación:
Sistema Operativo Windows XP o superior para los
equipos donde esté instalada la solución.
Servidor de Base de Oracle 10g Express Edition;
tomando en cuenta que la aplicación maneja las
Interfaces con la Base de Datos a través de
procedimientos almacenados, lo que ofrece la
oportunidad de migrar a otro motor de datos sin
necesidad de tener que realizar cambios en las
aplicaciones.
84
6.1.3. Seguridades
Las interfaces de los programas que forman parte de la solución
son aplicación mediante el navegador web, e Intranet razón por la
cual no están abiertas ante los piratas informáticos a través de
Internet, las seguridades a nivel del equipo se manejan
directamente por el Sistema Operativo, mientras que las
seguridades dentro de la aplicación se definen dentro de los
programas de seguridad del mismo. Se recomienda crear varios
perfiles para tener varios niveles de usuarios lo que permitirá tener
un mejor control sobre las opciones y procesos vitales de la
solución.
Ofrece la aplicación además un módulo de auditoría y un módulo
de encriptación de claves que me ayudan a llevar un control sobre
el uso debido de cambios en datos y transacciones como la
confidencialidad de la información almacenada en la Base de
Datos.
Conclusiones
La tecnología avanza cada vez con más frecuencia en nuestro país
y hoy en día es muy común ver que la mayoría de las empresas
85
implementen sistemas de información con el propósito de
sistematizar los procesos de sus negocios.
Siguiendo esa tendencia las instituciones educativas no se han
quedado atrás y la automatización de sus operaciones es un logro
que ha ido evolucionando a pasos agigantados.
Bajo este esquema la solución presentada en esta tesis confluye
con los aspectos mencionados y cumple con el objetivo primordial
de reemplazar procesos manuales y tediosos con una herramienta
útil capaz de realizarlos de forma automática en forma rápida y
eficaz ahorrando de esta forma tiempo y recursos.
86
GLOSARIO
Acción:
Indica las diferentes acciones que se pueden realizar en una
determinada pantalla, estas pueden ser Nuevo, Modificar, Consultar,
entre otras.
Administrador:
Usuario con un conjunto definido de privilegios administrativos.
Alumno:
Tipo de usuario final de la aplicación, el mismo que tendrá entre otrasopciones, la ejecución de las evaluaciones autorizadas.
Archivo de Configuración:
Archivo que contiene los parámetros de configuración de un
componente específico del sistema de mensajería.
Arquitectura:
Diseño que muestra los bloques de construcción física y lógica de una
aplicación distribuida (u otro sistema de software) y las relaciones que
se establecen entre sí.
Base de Datos:
87
Termino genérico que se utiliza para designar el sistema de
administración de base de datos relacionales (RDBMS). Paquete de
software que permite crear y manipular grandes cantidades de datos
relacionados y organizados.
Componente:
Es un pequeño programa u objeto binario que realiza una función
específica y está diseñado de modo que pueda operar fácilmente con
otros componentes y aplicaciones.
Consulta:
Sinónimo de búsqueda que utiliza los parámetros especificados para
ordenar los datos.
Clientes:
Máquinas en las que el usuario realiza su trabajo y que utilizan para
ello y en parte, los servicios proporcionados por los servidores.
Desencriptar:
Proceso inverso a la encriptación, usar algoritmos para retornar texto
cifrado a su formato normal.
Edificio:
Hace referencia al o los edificios físicos que posee la Carrera de
Ingeniería de Sistemas.
Encriptar:
88
Proteger archivos expresando su contenido en un lenguaje cifrado.
Los lenguajes cifrados simples consisten, por ejemplo, en la
sustitución de letras por números mediante complejos algoritmos.
Evaluacion:
Hace referencia a las plantillas creadas en base a un banco de
preguntas, las mismas que deben ser resueltas eligiendo la(s)
opcion(es) correcta(s), por parte del usuario
Forma:
Indica una referencia a la pantalla de la aplicación de evaluaciones.
Mensaje de Error:
Mensaje que informa de un error o alguna otra situación. La finalidad
de los mensajes denominados “errores de notificación” es meramente
informativo.
Nivel:
Indica los diferentes semestres que se abren en un determinado
periodo lectivo, tales como: primer semestre, segundo semestre, entre
otros.
Paralelo:
Entidad formada por un aula física, un nivel las materias por ese nivel
y los estudiantes asignados al mismo. (Ej.: S1A : Primer Nivel
Paralelo A)
89
Parámetro:
Dato o factor que se toma como necesario para hacer referencia a un
tipo de información tal como días de la semana, tipos de tarjeta, entre
otros.
Periodo:
Hace referencia a los ciclos que se cursan durante un año lectivo, por
ejemplo Periodo 2009-2010 CICLO I.
Permisos:
Conjunto de privilegios concedidos o denegados a un usuario o un
grupo de estos.
Perfil:
Hace referencia a un tipo específico de usuario limitado por lasacciones definidas a él.
Profesor:
Hace referencia a los tipos de usuario final de la aplicación, el mismoque tienen entre otras opciones la creación y autorización deevaluaciones.
Registro de Evento:
Indica el registro de todas las acciones realizadas por el usuario encada uno de los entes de la aplicación tal como: actualizaciones,
90
eliminaciones de estudiantes, profesores, aulas, niveles, paralelos,jornadas, entre otros.
Solución:
Conjunto de programas y procedimientos implementados para laresolución de un problema.
Usuario:
Persona o servicio que utiliza una aplicación. Un usuario está definidode forma programática por un nombre de usuario, una contraseña y unconjunto de atributos que permiten a una aplicación reconocerlos.
91
Bibliografía
1. Oracle Database 10g Manual Del Administradort
T McGRAW-HILL/INTERAMERICANA DE ESPAÑA, S.A.U.)
1ª edición (26/11/2005)
2. Oracle 10g. Administración Y Análisis De Bases De Datos. 2ª Edición
PEREZ, C. (Editorial Ra-ma)
(12/2007).
3. Oracle Application Server 10g Essentials
Stackowiak, Robert; Bales, Donald; Greenwald, Rick (O'Reilly Vlg. GmbH
& Co.)
4. Oracle Database 10g Linux-administration
Wahlen, Edward (Hanser Fachbuchverlag)
5. Oracle Pl/sql Programming: A Developer's Workbook
Steven Feuerstein, Andrew Odewahn (O'REILLY & ASSOCIATES)
(05/2000).
92
6. Oracle Pl/sql Best Practices
Steven Feuerstein (O'REILLY & ASSOCIATES)
(05/2001).
7. Oracle Application Server 10g Essentials
Greenwald, Rick y Stackowiak, Robert y Bales, Donald
8. Using Moodle
Cole, Jason y Foster, Helen
93
CONTENIDO
CAPÍTULO 1 ............................................................................................................................... 1
1. INTRODUCCION............................................................................................................ 1
1.1. Antecedentes ...................................................................................................... 1
1.2. Ámbito y Problemática........................................................................................ 3
1.3. Solución de la Problemática ............................................................................... 4
1.4. Visión y Misión del Proyecto ............................................................................... 4
1.4.1. Visión............................................................................................................... 4
1.4.2. Misión ............................................................................................................. 4
1.5. Definición del Proyecto ....................................................................................... 5
1.6. Objetivos del Proyecto ....................................................................................... 5
1.6.1. Objetivos Generales del Proyecto .................................................................. 5
1.6.2. Objetivos Específicos del Proyecto ................................................................. 6
1.7. Alcance del Proyecto........................................................................................... 7
1.8. Contribución tecnológica .................................................................................. 10
1.9. Arquitectura del Proyecto................................................................................. 11
1.10. Arquitectura de Datos....................................................................................... 13
1.11. Infraestructura Tecnológica. ............................................................................. 18
1.12. Metodología del Proyecto................................................................................. 18
1.13. Recursos necesarios del proyecto..................................................................... 20
1.13.1. Recurso Humano........................................................................................... 20
1.13.2. Recurso Tecnológico ..................................................................................... 21
1.14. Para la implementación del proyecto. .............................................................. 22
94
1.15. Cronograma de Tiempo del Proyecto ............................................................... 23
CAPÍTULO 2 ............................................................................................................................. 24
2. ANÁLISIS..................................................................................................................... 24
2.1. Levantamiento de Información .................................................................... 24
2.2. Analisis de Requerimientos........................................................................... 26
2.3. Análisis de Riesgos ........................................................................................ 30
2.4. Diagrama de Flujo de Procesos..................................................................... 31
2.4.1. Flujo de Procesos...................................................................................... 31
2.4.2. Procesos del Portal Web........................................................................... 31
Registro de Evaluación Administrador / Docente ............................................. 31
Activacion de Evaluación Administrador / Docente.......................................... 32
Proceso Evaluación Estudiante ......................................................................... 32
2.5. Modelo de la aplicacion................................................................................ 33
2.6. Diagrama de Casos de Uso............................................................................ 33
2.6.1. Casos de Uso............................................................................................. 33
Ver Anexo C................................................................................................................. 34
2.6.2. Descripción de Casos de Uso.................................................................... 34
2.7. Diagrama Entidad Relación........................................................................... 39
2.8. Diagrama de Contexto de Arquitectura y Funcionalidad. ............................ 39
CAPÍTULO 3 ............................................................................................................................. 41
3. DISEÑO ........................................................................................................................ 41
3.1. Diseño de Datos ............................................................................................ 41
3.1.1 Descripción de las Tablas.......................................................................... 42
3.2. Diseño de la Interfaz ..................................................................................... 50
95
3.2.1 Pagina Inicial ............................................................................................. 52
3.2.2 Pantalla Categoría de Preguntas .............................................................. 53
3.2.3 Pantalla de Mantenimiento de Preguntas................................................ 54
3.2.4 Pantalla de Mantenimiento de Evaluaciones........................................... 56
3.2.5 Pantalla de Reporte de Evaluaciones por Alumno ................................... 59
3.2.6 Pantalla de Reportes de Evaluaciones por Materia ................................. 60
3.2.7 Pantalla de Reporte de Lista de Categorías.............................................. 60
3.2.8 Pantalla de Reporte de Alumnos activos por Evaluación......................... 60
3.2.9 Pantalla Evaluación al Docente................................................................ 61
CAPÍTULO 4 ............................................................................................................................. 62
4. DESARROLLO Y PRUEBA DEL SISTEMA........................................................................ 62
4.1. Desarrollo del Sistema ...................................................................................... 62
4.1.1. Creación de la base de datos.................................................................... 62
4.2. Oracle Database 10g ......................................................................................... 64
4.3. Real Application Clusters (RAC)......................................................................... 64
4.4. Administración Automática del Espacio de Almacenamiento (AutomaticStorage Management, ASM)........................................................................................... 65
4.5. Ubicación de los datos ...................................................................................... 66
4.6. Base de Datos Auto-Administrada .................................................................... 66
4.7. Oracle Application Server 10g........................................................................... 67
4.8. Application Server Clusters ............................................................................... 67
4.9. Entorno para el desarrollo de Aplicaciones ...................................................... 68
4.10. Oracle Enterprise Manager 10g Gris Control .................................................... 69
4.11. Estándares de Gris............................................................................................. 70
4.12. Creación de los objetos de la base de datos ..................................................... 71
96
4.12.1. Creación de los componentes .................................................................. 73
4.12.2. Seguridad.................................................................................................. 74
4.13. Pruebas del Sistema .......................................................................................... 75
4.13.1. Modelo de Prueba .................................................................................... 75
4.13.2. Prueba de la Caja Negra ........................................................................... 76
4.13.3. Prueba de la Caja Blanca .......................................................................... 77
4.14. Calidad del Sistema ........................................................................................... 77
CAPÍTULO 5 ............................................................................................................................. 79
5. IMPLEMENTACIÓN DEL SISTEMA................................................................................ 79
5.1. Elementos Físicos .............................................................................................. 79
5.2. Elementos Lógicos............................................................................................. 80
5.3. Elementos Humanos ......................................................................................... 80
5.4. Infraestructura .................................................................................................. 80
5.5. Capacitación de los usuarios. ............................................................................ 81
CAPÍTULO 6 ............................................................................................................................. 82
6. RECOMENDACIONES Y CONCLUSIONES DE LA TESIS.................................................. 82
6.1. Recomendaciones ............................................................................................. 82
6.1.1. Hardware .................................................................................................. 82
6.1.2. Software ................................................................................................... 83
6.1.3. Seguridades .............................................................................................. 84
6.2. Conclusiones ..................................................................................................... 84
GLOSARIO................................................................................................................................ 86
Bibliografía .............................................................................................................................. 91
INDICE DE FIGURAS
97
Figura 1.1. Arquitectura del Proyecto..................................................................................... 13
Figura 2.1. Arquitectura del Proyecto..................................................................................... 40
Figura 3.1. Inicio sesión Administrador................................................................................... 52
Figura 3.2. Pantalla Principal Administrador .......................................................................... 53
Figura 3.3. Categoría Preguntas.............................................................................................. 54
Figura 3.3. Pestaña Pregunta .................................................................................................. 55
Figura 3.4. . Pestaña Respuestas............................................................................................. 55
Figura 3.5 Pestaña Evaluación ................................................................................................ 56
Figura 3.6 Pestaña Banco de Preguntas.................................................................................. 57
Figura 3.7 Pestaña Preguntas Seleccionadas.......................................................................... 58
Figura 3.8 Pestaña Alumnos Autorizados ............................................................................... 59
Figura 3.9 Reporte de Evaluaciones por Alumno.................................................................... 59
Figura 3.10 Reporte de Evaluaciones por Alumno.................................................................. 60
Figura 3.11 Reporte de Evaluaciones por Alumno.................................................................. 60
Figura 3.12 Reporte de Evaluaciones por Alumno.................................................................. 61
Figura 3.13 Reporte de Evaluaciones por Alumno.................................................................. 61
Figura 4.1 Estructura de Oracle .............................................................................................. 63
ANEXOS
ANEXO A
CRONOGRAMA DETRABAJO
ANEXO B
FLUJO DE DATOS
ANEXO C
DIAGRAMA DE CASOSDE USO
ANEXO D
DIAGRAMA DEENTIDAD RELACION
ADMINISTRADOR
REGISTRAREVALUACION
ACTIVAREVALUACION
DETALLE DEPREGUNTAS
DETALLE DERESPUESTAS
REGISTRARINICIO DE
EVALUACION
DESARROLLODE
EVALUACIONDOCENTE
ESTUDIANTE
A
A
SI
SI
SI
SI
NO
NO
NO
NO
INICIO
FIN
INGRESO ALSITIO WEB
VISUALIZACIONDE LA PAGINA
PRINCIPAL
AUTENTICACIONY VALIDACION DE
USUARIO
USUARIOCORRECTO
PRESENTACIONDEL MENUPRINCIPAL
SELECCIÓNCORRECTA
SELECCIONARCONSULTA DE
MATERIAS
CONSULTA DEMATERIAS
ASIGNADAS
SELECCIÓN DEMATERIA AREGISTRAR
EXISTENMATERIAS
EXISTEREGISTRO
PRESENTACIONDE PLANTILLAS
VERIFICACION DEESTADO
VERIFICAESTADO DE LAEVALUACION
CREAR REGISTRODE EVALUACION
INGRESARPREGUNTAS YRESPUESTAS
GUARDARREGISTRO DEEVALUACION
ACTUALIZACIONDE REGISTRO DE
EVALUACION
A
Figura 1.1 Proceso de Registro de Evaluación (Administrador/Docente)
INICIO
FIN
INGRESO ALSITIO WEB
VISUALIZACIONDE LA PAGINA
PRINCIPAL
AUTENTICACIONY VALIDACION DE
USUARIO
USUARIOCORRECTO
PRESENTACIONDEL MENUPRINCIPAL
SELECCIÓNCORRECTA
SELECCIONARACTIVACION DE
EVALUACION
CONSULTA DEUSUARIOS
REGISTRADOS
SELECCIÓN DEUSUARIOS
EXISTENUSUARIOS
S
PROCESOCORRECTO
ACTIVACION DEEVALUACION
CONFIRMARREGISTRO DE
USUARIOS
CREARREGISTROS DEEVALUACION
GUARDARREGISTRO DEEVALUACION
A A
A
A
SI
SISI
NO
NO
NO
SINO
Figura 1.2 Proceso de Activación de Evaluación (Administrador/Docente)
INICIO
FIN
INGRESO ALSITIO WEB
VISUALIZACIONDE LA PAGINA
PRINCIPAL
AUTENTICACIONY VALIDACION DE
USUARIO
USUARIOCORRECTO
PRESENTACIONDEL MENUPRINCIPAL
SELECCIÓNCORRECTA
SELECCIONAREVALUACIONES
ACTIVADAS
CONSULTA DEMATERIASACTIVADAS
SELECCIÓN DEMATERIA
EXISTENMATERIAS
CONFIRMACION
PRESENTACIONINFORMACION
PREVIA
CONFIRMACIONDE INICIO DEEVALUACION
ACTIVACION DELINICIO DE
EVALUACION
REGISTRO DERESPUESTAS
PRESENTACIONDE PREGUNTAS
A
Figura 1.3 Proceso de Evaluación (Estudiante)
A
NO
A
A
SI
SI SI
NO
NO
NO
TERMINAEVALUACION
REVISION DEEVALUACION
REGISTRO DERESULTADOS
PRESENTACIONDE RESULTADOS
SI
NO
1
CAPÍTULO 1
1. MANUAL TECNICO
IntroducciónEste documento esta diseñado y orientado al personal técnico y los
analistas, que van a ser los encargados de darle mantenimiento al
sistema, en él encontrará todo lo relacionado con el diseño de
datos y componentes más importantes utilizados por el aplicativo.
Sin embargo por tratarse de algo muy extenso aquí solo encontrará
los aspectos más relevantes; pero para darle una mejor ayuda, se
dará referencia de documentos digitales que son parte de ésta
tesis donde podrán profundizar más el contexto técnico que no se
abarque en este documento.
Diagramas
2
Detallamos a continuación cada uno de las representaciones
gráficas utilizadas en el diseño de esta solución.
Diagramas de Flujo de DatosEl diagrama de flujo de datos (DFD), es una herramienta que
permite visualizar un sistema como una red de procesos
funcionales, conectados entre sí por "conductos" y "tanques de
almacenamiento" de datos. Siendo éste, una de las herramientas
más comúnmente usadas, sobre todo por sistemas operacionales
en los cuales las funciones del sistema son de gran importancia y
son más complejos que los datos que éste maneja.
Para poder ver los diagramas de flujo de datos, ir al ANEXO A
Diagrama Entidad RelaciónDenominado por sus siglas como: E-R; Este modelo representa a
la realidad a través de un esquema gráfico empleando los
terminología de entidades, que son objetos que existen y son los
elementos principales que se identifican en el problema a resolver
con el diagramado y se distinguen de otros por sus características
particulares denominadas atributos, el enlace que rige la unión de
las entidades esta representada por la relación del modelo.
Para poder ver los diagramas entidad relación, ir al ANEXO B
3
Creación de Objetos de la Base de DatosLa base de datos cuenta con un sinnúmero de objetos entre los
que podemos nombrar:
Tablas
Paquetes
Triggers
Secuencias, entre otos.
Detallaremos a continuación los “scripts” o códigos SQL que
permiten la creación de dichos objetos.
Script de creación de Tablascreate table CATEGORIA_PREGUNTA(
ID_CATEGORIA_PREGUNTA NUMBER(5) not null,ID_PADRE NUMBER(5),NOMBRE VARCHAR2(500),DESCRIPCION VARCHAR2(100),USUARIO_INGRESA NUMBER(5),FECHA_INGRESO DATE,USUARIO_MODIFICA NUMBER(5),FECHA_ULTIMA_MODIFICACION DATE
);alter table CATEGORIA_PREGUNTA add constraintCATEGORIA_PREGUNTA_P primary key (ID_CATEGORIA_PREGUNTA);alter table CATEGORIA_PREGUNTAadd constraint CATEGORIA_PREGUNTA_N3check ("NOMBRE" IS NOT NULL);alter table CATEGORIA_PREGUNTAadd constraint CATEGORIA_PREGUNTA_N5check ("USUARIO_INGRESA" IS NOT NULL);alter table CATEGORIA_PREGUNTAadd constraint CATEGORIA_PREGUNTA_N6check ("FECHA_INGRESO" IS NOT NULL);
create table EXAMEN(
ID_EXAMEN NUMBER(5) not null,ID_TIPO_EXAMEN NUMBER(5),
4
INTRODUCCION VARCHAR2(1500),IS_PERMITE_ABRIR VARCHAR2(1) default '0',IS_PERMITE_CERRAR VARCHAR2(1) default '0',FECHA_INICIO DATE,FECHA_FIN DATE,IS_LIMITE_TIEMPO VARCHAR2(1) default '0',IS_HABILITA_TIEMPO VARCHAR2(1) default '0',TIEMPO_PRIMERO_SEGUNDO NUMBER(5),NUM_MAX_PREGUNTAS NUMBER(5),IS_PREGUNTA_ALEATORIA VARCHAR2(1) default '0',IS_RESPUESTA_ALEATORIA VARCHAR2(1) default '0',IS_APLICA_PENALIZACION VARCHAR2(1) default '0',IS_VENTANA_SEGURA VARCHAR2(1) default '0',IS_REQUIERE_CONTRASENIA VARCHAR2(1) default '0',CALIFICACION_MAXIMA NUMBER(5,2),ID_ESTADO NUMBER(5),USUARIO_INGRESA NUMBER(5),USUARIO_MODIFICA NUMBER(5),FECHA_ULTIMA_MODIFICACION DATE,FECHA_INGRESO DATE,ID_PARCIAL NUMBER(5),ID_PERIODO_LECTIVO NUMBER(5),ID_PARALELO NUMBER(5),ID_MATERIA NUMBER(5),CONTRASENIA VARCHAR2(32)
);alter table EXAMEN
add constraint EXAMEN_P primary key (ID_EXAMEN);alter table EXAMEN
add constraint EXAMEN_N22 foreign key (ID_ESTADO)references ESTADO (ID_ESTADO);
alter table EXAMENadd constraint EXAMEN_R2 foreign key (ID_TIPO_EXAMEN)references TIPO_EXAMEN (ID_TIPO_EXAMEN);
alter table EXAMENadd constraint EXAMEN_R22 foreign key (ID_PARALELO)references PARALELO (ID_PARALELO);
alter table EXAMENadd constraint EXAMEN_R25 foreign key (ID_MATERIA)references MATERIA (ID_MATERIA);
alter table EXAMENadd constraint EXAMEN_N10check ("IS_LIMITE_TIEMPO" IS NOT NULL);
alter table EXAMENadd constraint EXAMEN_N11check ("IS_HABILITA_TIEMPO" IS NOT NULL);
alter table EXAMENadd constraint EXAMEN_N12check ("TIEMPO_PRIMERO_SEGUNDO" IS NOT NULL);
alter table EXAMENadd constraint EXAMEN_N14check ("NUM_MAX_PREGUNTAS" IS NOT NULL);
5
alter table EXAMENadd constraint EXAMEN_N15check ("IS_PREGUNTA_ALEATORIA" IS NOT NULL);
alter table EXAMENadd constraint EXAMEN_N16check ("IS_RESPUESTA_ALEATORIA" IS NOT NULL);
alter table EXAMENadd constraint EXAMEN_N17check ("IS_APLICA_PENALIZACION" IS NOT NULL);
alter table EXAMENadd constraint EXAMEN_N19check ("IS_VENTANA_SEGURA" IS NOT NULL);
alter table EXAMENadd constraint EXAMEN_N20check ("IS_REQUIERE_CONTRASENIA" IS NOT NULL);
alter table EXAMENadd constraint EXAMEN_N21check ("CALIFICACION_MAXIMA" IS NOT NULL);
alter table EXAMENadd constraint EXAMEN_N23check ("USUARIO_INGRESA" IS NOT NULL);
alter table EXAMENadd constraint EXAMEN_N24check ("FECHA_INGRESO" IS NOT NULL);
alter table EXAMENadd constraint EXAMEN_N28check ("ID_PERIODO_LECTIVO" IS NOT NULL);
alter table EXAMENadd constraint EXAMEN_N5check ("INTRODUCCION" IS NOT NULL);
alter table EXAMENadd constraint EXAMEN_N6check ("IS_PERMITE_ABRIR" IS NOT NULL);
alter table EXAMENadd constraint EXAMEN_N7check ("IS_PERMITE_CERRAR" IS NOT NULL);
alter table EXAMENadd constraint EXAMEN_N8check ("FECHA_INICIO" IS NOT NULL);
alter table EXAMENadd constraint EXAMEN_N9check ("FECHA_FIN" IS NOT NULL);
create table EXAMEN_ALUMNO(
ID_SECUENCIA NUMBER(5) not null,ID_EXAMEN NUMBER(5) not null,ID_USUARIO NUMBER(5) not null,NOTA_TOTAL NUMBER(5,2),FECHA_INICIO DATE,FECHA_TERMINA DATE,FECHA_PUBLICA DATE,
6
FECHA_VENCE DATE,ID_ESTADO NUMBER(5),USUARIO_INGRESA NUMBER(5),USUARIO_MODIFICA NUMBER(5),FECHA_MODIFICA DATE,FECHA_INGRESO DATE,CONT_PENALIZA NUMBER(5) default 0,SUMA_PENALIZA NUMBER(5,2) default 0,NOTA_PARCIAL NUMBER(5,2),OBSERVACION VARCHAR2(50),PORCENTAJE_ACEPTADAS NUMBER(5,2),ID_SOLICITUD NUMBER(5),TIEMPO_TRANSC NUMBER(5)
);alter table EXAMEN_ALUMNO
add constraint EXAMEN_ALUMNO_P primary key (ID_SECUENCIA,ID_EXAMEN, ID_USUARIO);alter table EXAMEN_ALUMNO
add constraint EXAMEN_ALUMNO_R10 foreign key (ID_ESTADO)references ESTADO (ID_ESTADO);
alter table EXAMEN_ALUMNOadd constraint EXAMEN_ALUMNO_R2 foreign key (ID_EXAMEN)references EXAMEN (ID_EXAMEN);
alter table EXAMEN_ALUMNOadd constraint EXAMEN_ALUMNO_R3 foreign key (ID_USUARIO)references USUARIO (ID_USUARIO);
alter table EXAMEN_ALUMNOadd constraint EXAMEN_ALUMNO_N11check ("USUARIO_INGRESA" IS NOT NULL);
alter table EXAMEN_ALUMNOadd constraint EXAMEN_ALUMNO_N12check ("FECHA_INGRESO" IS NOT NULL);
alter table EXAMEN_ALUMNOadd constraint EXAMEN_ALUMNO_N5check ("NOTA_TOTAL" IS NOT NULL);
alter table EXAMEN_ALUMNOadd constraint EXAMEN_ALUMNO_N9check ("FECHA_VENCE" IS NOT NULL);
create table PREGUNTA_EXAMEN(
ID_EXAMEN NUMBER(5) not null,ID_PREGUNTA NUMBER(5) not null,USUARIO_INGRESA NUMBER(5),FECHA_INGRESO DATE,USUARIO_MODIFICA NUMBER(5),FECHA_ULTIMA_MODIFICACION DATE,CALIFICACION NUMBER(5,2)
);alter table PREGUNTA_EXAMEN
7
add constraint PREGUNTA_EXAMEN_P primary key (ID_EXAMEN,ID_PREGUNTA);alter table PREGUNTA_EXAMEN
add constraint PREGUNTA_EXAMEN_R1 foreign key (ID_EXAMEN)references EXAMEN (ID_EXAMEN);
alter table PREGUNTA_EXAMENadd constraint PREGUNTA_EXAMEN_N4check ("USUARIO_INGRESA" IS NOT NULL);
alter table PREGUNTA_EXAMENadd constraint PREGUNTA_EXAMEN_N5check ("FECHA_INGRESO" IS NOT NULL);
create table RESPUESTA(
ID_RESPUESTA NUMBER(5) not null,ID_PREGUNTA NUMBER(5),RESPUESTA VARCHAR2(500),CALIFICACION NUMBER(5,2),MARGEN_ERROR NUMBER(10),RESPUESTA_CORRECTA VARCHAR2(1) default '0',USUARIO_INGRESA NUMBER(5),USUARIO_MODIFICA NUMBER(5),FECHA_ULTIMA_MODIFICACION DATE,FECHA_INGRESO DATE
);alter table RESPUESTA
add constraint RESPUESTA_P primary key (ID_RESPUESTA);alter table RESPUESTA
add constraint RESPUESTA_N10check ("RESPUESTA_CORRECTA" IS NOT NULL);
alter table RESPUESTAadd constraint RESPUESTA_N11check ("USUARIO_INGRESA" IS NOT NULL);
alter table RESPUESTAadd constraint RESPUESTA_N12check ("FECHA_INGRESO" IS NOT NULL);
alter table RESPUESTAadd constraint RESPUESTA_N4check ("RESPUESTA" IS NOT NULL);
alter table RESPUESTAadd constraint RESPUESTA_N5check ("CALIFICACION" IS NOT NULL);
alter table RESPUESTAadd constraint RESPUESTA_N7check ("MARGEN_ERROR" IS NOT NULL);
create table RESPUESTA_EXAMEN(
ID_EXAMEN NUMBER(10) not null,ID_PREGUNTA NUMBER(10) not null,ID_SECUENCIA NUMBER(5) not null,
8
ID_RESPUESTA NUMBER(10) not null,DESCRIPCION VARCHAR2(500),RESPUESTA VARCHAR2(1) default '0',NOTA_PARCIAL NUMBER(5,2),VALORACION NUMBER(5,2),USUARIO_INGRESA NUMBER(5),USUARIO_MODIFICA NUMBER(5),FECHA_MODIFICA DATE,FECHA_INGRESO DATE,ID_USUARIO NUMBER(5) not null
);alter table RESPUESTA_EXAMEN
add constraint RESPUESTAS_USUARIO_P primary key (ID_EXAMEN,ID_PREGUNTA, ID_SECUENCIA, ID_RESPUESTA, ID_USUARIO);alter table RESPUESTA_EXAMEN
add constraint RESPUESTA_EXAMEN_R1 foreign key (ID_EXAMEN)references EXAMEN (ID_EXAMEN);
alter table RESPUESTA_EXAMENadd constraint RESPUESTA_EXAMEN_R4 foreign key (ID_RESPUESTA)references RESPUESTA (ID_RESPUESTA);
alter table RESPUESTA_EXAMENadd constraint RESPUESTA_EXAMEN_N10check ("FECHA_INGRESO" IS NOT NULL);
alter table RESPUESTA_EXAMENadd constraint RESPUESTA_EXAMEN_N7check ("NOTA_PARCIAL" IS NOT NULL);
alter table RESPUESTA_EXAMENadd constraint RESPUESTA_EXAMEN_N8check ("VALORACION" IS NOT NULL);
alter table RESPUESTA_EXAMENadd constraint RESPUESTA_EXAMEN_N9check ("USUARIO_INGRESA" IS NOT NULL);
alter table RESPUESTA_EXAMENadd constraint RESPUESTA_EXAMEN_R5check ("DESCRIPCION" IS NOT NULL);
prompt Creating TIPO_PREGUNTA...create table TIPO_PREGUNTA(
ID_TIPO_PREGUNTA NUMBER(5) not null,DESCRIPCION VARCHAR2(50)
);alter table TIPO_PREGUNTA
add constraint TIPO_PREGUNTA_P primary key (ID_TIPO_PREGUNTA);alter table TIPO_PREGUNTA
add constraint TIPO_PREGUNTA_N2check ("DESCRIPCION" IS NOT NULL);
create table PREGUNTA
9
(ID_PREGUNTA NUMBER(5),ID_CATEGORIA_PREGUNTA NUMBER(5),ID_TIPO_PREGUNTA NUMBER(5),DESCRIPCION VARCHAR2(500),CALIFICACION NUMBER(5,2),MSG_GENERAL VARCHAR2(500),FACTOR_PENALIZACION NUMBER(5,2),USUARIO_INGRESA NUMBER(5),USUARIO_MODIFICA NUMBER(5),FECHA_ULTIMA_MODIFICACION DATE,FECHA_INGRESO DATE,NOMBRE_ARCHIVO VARCHAR2(255),CANTIDAD_VALIDAS NUMBER(5)
);alter table PREGUNTA
add constraint PREGUNTA_R2 foreign key (ID_CATEGORIA_PREGUNTA)references CATEGORIA_PREGUNTA (ID_CATEGORIA_PREGUNTA);
alter table PREGUNTAadd constraint PREGUNTA_N11check ("USUARIO_INGRESA" IS NOT NULL);
alter table PREGUNTAadd constraint PREGUNTA_N12check ("FECHA_INGRESO" IS NOT NULL);
alter table PREGUNTAadd constraint PREGUNTA_N3check ("ID_TIPO_PREGUNTA" IS NOT NULL);
alter table PREGUNTAadd constraint PREGUNTA_N4check ("DESCRIPCION" IS NOT NULL);
10
Paquete PCK_EVALUACION
ACTUALIZA_CATEGORIA_PREGUNTA
POS. NOMBRE_PARAMETRO TIPO_DATOENT /SAL DESCRIPCION
1LN_ID_CATEGORIA_PREGUNTA NUMBER IN
código de la tablacategoríapregunta
2 LN_ID_PADRE NUMBER INcódigo delid_padre
3 LV_NOMBRE VARCHAR2 IN
nombre de lacategoría de lapregunta
4 LV_DESCRIPCION VARCHAR2 INdetalle de lacategoría
5 LV_USUARIO NUMBER IN código de usuario
6 COD_RET NUMBER IN/OUTcódigo de retornode error
7 MSG_RET VARCHAR2 IN/OUTmensaje deretorno de error
ACTUALIZA_ESTADO_EXAMEN_ALUMNO
POS NOMBRE_PARAMETRO TIPO_DATO ENT/SAL DESCRIPCION
1 PN_ID_EXAMEN NUMBER IN código del examen
2 PN_ID_USUARIO NUMBER IN código del usuario
3 PN_ID_SECUENCIA NUMBER INcódigo de lasecuencia
4 PV_ESTADO VARCHAR2 IN estado del examen
5 COD_RET NUMBER IN/OUTcódigo de retorno deerror
6 MSG_RET VARCHAR2 IN/OUTmensaje de retorno deerror
11
ENVIAR_INFORME_CORREO
POS NOMBRE_PARAMETRO TIPO_DATOENT /SAL DESCRIPCION
1 PN_ID_EXAMEN NUMBER IN código del examen
2 PN_ID_SECUENCIA NUMBER INcódigo de lasecuencia
3 PN_ID_USUARIO NUMBER IN código del usuario
4 PV_PROFESOR VARCHAR2 IN nombre del profesor
5 PV_ALUMNO VARCHAR2 IN nombre del alumno
6 PV_PARCIAL VARCHAR2 INdescripción del parcialdel examen
7 PV_PARALELO VARCHAR2 INdescripción delparalelo del alumno
8 PV_MATERIA VARCHAR2 IN nombre de la materia
9 PV_CORREO VARCHAR2 INdescripción del correodel alumno
10 COD_RET NUMBERIN/OUT
código de retorno deerror
11 MSG_RET VARCHAR2IN/OUT
mensaje de retorno deerror
ACTUALIZA_RESPUESTA_EXAMEN
POS NOMBRE_PARAMETRO TIPO_DATO ENT/SAL DESCRIPCION
1 PN_ID_EXAMEN NUMBER IN código del examen
2 PN_ID_PREGUNTA NUMBER IN código de la pregunta
3 PN_ID_SECUENCIA NUMBER IN código de la secuencia
4 PN_ID_RESPUESTA NUMBER IN código de la respuesta
5 PV_DESCRIPCION VARCHAR2 INdescripción de lapregunta
6 PV_RESPUESTA VARCHAR2 INdescripción de larespuesta
7 PN_NOTA_PARCIAL NUMBER INValor de la nota delparcial
8 PN_VALORACION NUMBER INValoración de larespuesta.
9 PN_USUARIO NUMBER IN Código del usuario.
10 COD_RET NUMBER IN/OUTcódigo de retorno deerror
11 MSG_RET VARCHAR2 IN/OUTmensaje de retorno deerror
12
FINALIZAR_EVALUACION
POS NOMBRE_PARAMETRO TIPO_DATOENT /SAL DESCRIPCION
1 PN_ID_EXAMEN NUMBER IN código del examen
2 PN_ID_SECUENCIA NUMBER IN código del examen
3 PN_ID_USUARIO NUMBER IN código del usuario
4PV_TIPO_FINALIZACION VARCHAR2 IN
descripción del tipo definalización
5 COD_RET NUMBER IN/OUTcódigo de retorno deerror
6 MSG_RET VARCHAR2 IN/OUTmensaje de retorno deerror
ACTUALIZA_TIEMPO_EXAMEN_ALUMNO
POS NOMBRE_PARAMETRO TIPO_DATO ENT/SAL DESCRIPCION1 PN_ID_EXAMEN NUMBER IN código del examen2 PN_ID_USUARIO NUMBER IN código del usuario3 PN_ID_SECUENCIA NUMBER IN código de la secuencia
4 PN_TIEMPO NUMBER INvalor del tiempo delexamen
5 COD_RET NUMBER IN/OUTcódigo de retorno deerror
6 MSG_RET VARCHAR2 IN/OUTmensaje de retorno deerror
ELIMINA_CATEGORIA_PREGUNTA
POS NOMBRE_PARAMETRO TIPO_DATO
ENT/SAL DESCRIPCION
1LN_ID_CATEGORIA_PREGUNTA NUMBER IN
código de la categoríade la pregunta
2 COD_RET NUMBER
IN/OUT
código de retorno deerror
3 MSG_RET VARCHAR2
IN/OUT
mensaje de retorno deerror
13
ACTUALIZA_TIPO_EXAMEN
POS NOMBRE_PARAMETRO TIPO_DATO ENT/SAL DESCRIPCION
1 LN_ID_TIPO_EXAMEN NUMBER INcódigo del tipo delexamen
2 LV_DESCRIPCION VARCHAR2 INdescripción del tipo deexamen
3 LV_USUARIO NUMBER IN código del usuario.
4 COD_RET NUMBER IN/OUTcódigo de retorno deerror
5 MSG_RET VARCHAR2 IN/OUTmensaje de retorno deerror
CONSULTA_CATEGORIA_PREGUNTAS
POS NOMBRE_PARAMETRO TIPO_DATOENT /SAL DESCRIPCION
1PN_ID_CATEGORIA_PREGUNTA NUMBER IN
código de lacategoría de lapregunta
2 PV_NOMBRE VARCHAR2 IN
nombre de lacategoría de lapregunta
3 INDICE NUMBER IN
4 O_CURSORREFCURSOR IN/OUT valor del cursor
5 COD_RET NUMBER IN/OUTcódigo de retorno deerror
6 MSG_RET NUMBER IN/OUTmensaje de retornode error
CONSULTA_TIPO_EXAMEN
POS NOMBRE_PARAMETRO TIPO_DATOENT /SAL DESCRIPCION
1 PN_ID_TIPO_EXAMEN NUMBER INcódigo del tipo delexamen
2 PV_NOMBRE VARCHAR2 INnombre del tipo deexamen
3 INDICE NUMBER IN
14
4 O_CURSOR REF CURSOR IN/OUT valor del cursor
5 COD_RET NUMBER IN/OUTcódigo de retorno deerror
6 MSG_RET NUMBER IN/OUTmensaje de retornode error
CUENTA_CATEGORIA_PREGUNTA
POS NOMBRE_PARAMETRO TIPO_DATO
ENT/SAL DESCRIPCION
1PN_ID_CATEGORIA_PREGUNTA NUMBER IN
código de la categoríade la pregunta
2 PV_NOMBRE VARCHAR2 INnombre de la categoríade la pregunta
3 PN_REGISTROS NUMBERIN/OUT
Número de registrosingresados.
4 COD_RET NUMBERIN/OUT
código de retorno deerror
5 MSG_RET NUMBERIN/OUT
mensaje de retorno deerror
CUENTA_TIPO_EXAMEN
POS NOMBRE_PARAMETRO TIPO_DATO
ENT/SAL DESCRIPCION
1 PN_ID_TIPO_EXAMEN NUMBER INcódigo del tipo delexamen
2 PV_NOMBRE VARCHAR2 INnombre del tipo deexamen
3 PN_REGISTROS NUMBER
IN/OUT
Número de registrosingresados.
4 COD_RET NUMBER
IN/OUT
código de retorno deerror
5 MSG_RET NUMBER
IN/OUT
mensaje de retorno deerror
ELIMINA_RESPUESTA_EXAMEN
15
POS NOMBRE_PARAMETRO TIPO_DATOENT /SAL DESCRIPCION
1 PN_ID_EXAMEN NUMBER IN código del examen
2 PN_ID_PREGUNTA NUMBER INcódigo de lapregunta
3 PN_ID_SECUENCIA NUMBER INcódigo de lasecuencia
4 PN_ID_RESPUESTA NUMBER INcódigo de larespuesta
5 COD_RET NUMBERIN/OUT
código de retornode error
6 MSG_RET VARCHAR2IN/OUT
mensaje de retornode error
ELIMINA_TIPO_EXAMEN
POS NOMBRE_PARAMETRO TIPO_DATOENT /SAL DESCRIPCION
1 LN_ID_TIPO_EXAMEN NUMBER INcódigo del tipo delexamen
2 COD_RET NUMBER IN/OUTcódigo de retornode error
3 MSG_RET VARCHAR2 IN/OUTmensaje de retornode error
GET_CALIFICACION_RESPUESTA
POS NOMBRE_PARAMETRO TIPO_DATOENT /SAL DESCRIPCION
0 NUMBER OUT
1 PN_ID_RESPUESTA NUMBER INcódigo de larespuesta
2 PN_ID_PREGUNTA NUMBER INcódigo de lapregunta
3 PN_VALORACION NUMBER INvalor obtenido de larespuesta
4PV_RESPUESTA_USUARIO VARCHAR2 IN
5 COD_RET NUMBER IN/OUTcódigo de retorno deerror
6 MSG_RET VARCHAR2 IN/OUTmensaje de retornode error
16
GET_DATOS_EXAMEN
POS NOMBRE_PARAMETRO TIPO_DATO ENT / SAL DESCRIPCION
1 PN_ID_EXAMEN NUMBER IN código del examen
2 O_CURSOR REF CURSOR IN/OUT valor del cursor
3 COD_RET NUMBER IN/OUTcódigo de retornode error
4 MSG_RET NUMBER IN/OUTmensaje de retornode error
GET_DATOS_EXAMEN_ALUMNO
POS NOMBRE_PARAMETRO TIPO_DATO ENT / SAL DESCRIPCION
1 PN_ID_EXAMEN NUMBER IN código del examen
2 PN_ID_SECUENCIA NUMBER INcódigo de lasecuencia
3 PN_ID_USUARIO NUMBER IN código del usuario
4 O_CURSOR REF CURSOR IN/OUT valor del cursor
5 COD_RET NUMBER IN/OUTcódigo de retornode error
6 MSG_RET NUMBER IN/OUTmensaje de retornode error
GET_EXAMEN_ALUMNO
POSNOMBRE_PARAMETRO TIPO_DATO
ENT /SAL DESCRIPCION
1 PN_ID_PERIODO NUMBER INcódigo del periodolectivo
2 PN_ID_USUARIO NUMBER IN código del usuario
3 PN_REGISTROS NUMBER IN/OUTvalor de los registrosingresados
4 O_CURSORREFCURSOR IN/OUT valor del cursor
5 COD_RET NUMBER IN/OUTcódigo de retorno deerror
6 MSG_RET VARCHAR2 IN/OUTmensaje de retorno deerror
17
GET_EXAMEN_PROFESOR
POS NOMBRE_PARAMETRO TIPO_DATOENT /SAL DESCRIPCION
1 PN_ID_PERIODO NUMBER INcódigo del periodolectivo
2 PN_ID_USUARIO NUMBER IN código del usuario
3 PN_REGISTROS NUMBERIN/OUT
valor de los registrosingresados
4 O_CURSORREFCURSOR
IN/OUT valor del cursor
5 COD_RET NUMBERIN/OUT
código de retorno deerror
6 MSG_RET VARCHAR2IN/OUT
mensaje de retornode error
GET_PREGUNTAS_EXAMEN
POS NOMBRE_PARAMETRO TIPO_DATOENT /SAL DESCRIPCION
1 PN_ID_EXAMEN NUMBER IN código del examen
2 PB_ALEATORIAPL/SQLBOOLEAN IN
3 PN_REGISTROS NUMBER IN/OUTvalor del registroingresados
4 O_CURSORREFCURSOR IN/OUT valor del cursor
5 COD_RET NUMBER IN/OUTcódigo de retornode error
6 MSG_RET NUMBER IN/OUTmensaje de retornode error
GET_RESPUESTA_EXAMEN
POS NOMBRE_PARAMETRO TIPO_DATOENT /SAL DESCRIPCION
0 VARCHAR2 OUT1 PN_ID_EXAMEN NUMBER IN código del examen
2 PN_ID_SECUENCIA NUMBER INcódigo de lasecuencia
3 PN_ID_USUARIO NUMBER IN código del usuario
4 PN_ID_RESPUESTA NUMBER INcódigo de larespuesta
5 PN_ID_PREGUNTA NUMBER IN código de la pregunta
6 COD_RET NUMBER IN/OUTcódigo de retorno deerror
18
7 MSG_RET VARCHAR2 IN/OUTmensaje de retornode error
GET_RESPUESTAS_DOCENTES
POSNOMBRE_PARAMETRO TIPO_DATO
ENT /SAL DESCRIPCION
1 PN_ID_EXAMEN NUMBER IN código del examen
2 PN_ID_SECUENCIA NUMBER INcódigo de lasecuencia
3 PN_ID_USUARIO NUMBER IN código del usuario
4 PN_CONTADOR NUMBERIN/OUT
5 O_CURSORREFCURSOR
IN/OUT valor del cursor
6 COD_RET NUMBERIN/OUT
código de retorno deerror
7 MSG_RET VARCHAR2IN/OUT
mensaje de retornode error
GET_RESPUESTA_PREGUNTAS
POS NOMBRE_PARAMETRO TIPO_DATOENT /SAL DESCRIPCION
1 PN_ID_PREGUNTA NUMBER IN código de la pregunta
2 O_CURSOR REF CURSOR IN/OUT valor del cursor
3 COD_RET NUMBER IN/OUTcódigo de retorno deerror
4 MSG_RET NUMBER IN/OUTmensaje de retornode error
GET_VALORACION_RESPUESTA
POS NOMBRE_PARAMETRO TIPO_DATO ENT / SAL DESCRIPCION
0 NUMBER OUT
1 PN_ID_EXAMEN NUMBER IN código del examen
2 PN_ID_PREGUNTA NUMBER IN código de la pregunta
3 COD_RET NUMBER IN/OUTcódigo de retorno deerror
4 MSG_RET VARCHAR2 IN/OUTmensaje de retornode error
19
INGRESA_RESPUESTA_EXAMEN
POS NOMBRE_PARAMETRO TIPO_DATO ENT/SAL DESCRIPCION1 PN_ID_EXAMEN NUMBER IN código del examen2 PN_ID_PREGUNTA NUMBER IN código de la pregunta3 PN_ID_SECUENCIA NUMBER IN código del examen
4 PN_ID_RESPUESTA NUMBER INcódigo de larespuesta
5 PV_DESCRIPCION VARCHAR2 INdescripción de larespuesta
6 PV_RESPUESTA VARCHAR2 IN7 PN_USUARIO NUMBER IN código del usuario
8 COD_RET NUMBER IN/OUTcódigo de retorno deerror
9 MSG_RET VARCHAR2 IN/OUTmensaje de retornode error
INGRESA_CATEGORIA_PREGUNTA
POS NOMBRE_PARAMETRO TIPO_DATOENT /SAL DESCRIPCION
1 LN_ID_PADRE NUMBER IN
2 LV_NOMBRE VARCHAR2 IN
nombre de lacategoría de lapregunta
3 LV_DESCRIPCION VARCHAR2 INdescripción de lapregunta
4 LV_USUARIO NUMBER IN código del usuario
5 COD_RET NUMBER IN/OUTcódigo de retornode error
6 MSG_RET VARCHAR2 IN/OUTmensaje de retornode error
7 LN_CODIGO NUMBER OUT
código de lacategoría de lapregunta
INSERTA_TIPO_EXAMEN
POS NOMBRE_PARAMETRO TIPO_DATOENT /SAL DESCRIPCION
1 LV_DESCRIPCION VARCHAR2 INdescripción del tipo deexamen
2 LV_USUARIO NUMBER IN código del usuario
3 COD_RET NUMBER IN/OUTcódigo de retorno deerror
20
4 MSG_RET VARCHAR2 IN/OUTmensaje de retorno deerror
5 LN_CODIGO NUMBER OUTcódigo del tipo delexamen
IS_EXAMEN_ALUMNO_BLOQUEADO
POS NOMBRE_PARAMETRO TIPO_DATOENT /SAL DESCRIPCION
0 PL/SQL BOOLEAN OUT
1 PN_ID_EXAMEN NUMBER INcódigo delexamen
2 PN_ID_USUARIO NUMBER IN código del usuario
3 PN_ID_SECUENCIA NUMBER INcódigo de lasecuencia
4 COD_RET NUMBER IN/OUTcódigo de retornode error
5 MSG_RET VARCHAR2 IN/OUTmensaje deretorno de error
IS_EXAMEN_A_TIEMPO
POS NOMBRE_PARAMETRO TIPO_DATOENT /SAL DESCRIPCION
0 PL/SQL BOOLEAN OUT1 PN_ID_EXAMEN NUMBER IN código del examen
2 COD_RET NUMBER IN/OUTcódigo de retornode error
3 MSG_RET VARCHAR2 IN/OUTmensaje deretorno de error
IS_PREGUNTA_CONTESTADA
POS NOMBRE_PARAMETRO TIPO_DATOENT /SAL DESCRIPCION
0 PL/SQL BOOLEAN OUT1 PN_ID_EXAMEN NUMBER IN código del examen
2 PN_ID_PREGUNTA NUMBER INcódigo de lapregunta
3 PN_ID_SECUENCIA NUMBER INcódigo de lasecuencia
4 PN_ID_USUARIO NUMBER IN código del usuario
5 COD_RET NUMBER IN/OUTcódigo de retornode error
6 MSG_RET VARCHAR2 IN/OUTmensaje deretorno de error
21
Paquete PCK_EVALUACION_1
ACTUALIZA_ESTADO_EXAMEN_ALUMNO
POS NOMBRE_PARAMETRO TIPO_DATO
ENT/SAL DESCRIPCION
1 PV_EXAMEN_ALUMNOPL/SQLRECORD IN código del examen
1 ID_SECUENCIA NUMBER INcódigo de lasecuencia
2 PV_ERROR VARCHAR2OUT
descripción del errorencontrado
2 ID_EXAMEN NUMBER IN código del examen3 ID_USUARIO NUMBER IN código del usuario
3 PN_ERROR NUMBEROUT
descripción del errorencontrado
4 NOTA_TOTAL NUMBER IN valor del examen
5 FECHA_INICIO DATE INfecha de iniciacióndel examen
6 FECHA_TERMINA DATE INfecha en la quetermina el examen
7 FECHA_PUBLICA DATE IN
8 FECHA_VENCE DATE INfecha en la quevence el examen
9 ID_ESTADO NUMBER IN código del estado
10 USUARIO_INGRESA NUMBER INcódigo del usuarioque ingresa
11 USUARIO_MODIFICA NUMBER INcódigo del usuarioque modifica
12 FECHA_MODIFICA DATE INfecha en la que serealizo modificación
13 FECHA_INGRESO DATE INfecha en la que seingreso
14 CONT_PENALIZA NUMBER IN
contador de las vecesque realiza uncambio
15 SUMA_PENALIZA NUMBER IN
suma de los valoresde penalización decada pregunta
16 NOTA_PARCIAL NUMBER INvalor de la notaobtenida
17 OBSERVACION VARCHAR2 IN
18PORCENTAJE_ACEPTADAS NUMBER IN
porcentaje de laspreguntas acertadas
19 ID_SOLICITUD NUMBER INcódigo de la solicituddel examen
20 TIEMPO_TRANSC NUMBER IN
valor del tiempotranscurrido en elexamen
22
ACTUALIZA_EXAMEN
POS NOMBRE_PARAMETRO TIPO_DATOENT/SAL DESCRIPCION
1 ID_EXAMEN NUMBER IN código del examen
1 PV_EXAMENPL/SQLRECORD IN
2 ID_TIPO_EXAMEN NUMBER INcódigo del tipo deexamen
2 PV_ERROR VARCHAR2 OUTmensaje de retorno deerror
3 PN_ERROR NUMBER OUTcódigo de retorno deerror
3 INTRODUCCION VARCHAR2 IN
breve especificaciónde las políticas delexamen
4 IS_PERMITE_ABRIR VARCHAR2 IN
una vez autorizado,permite realizarcambios al examen
5 IS_PERMITE_CERRAR VARCHAR2 IN
bloquea el examenpara que no serealicen cambios
6 FECHA_INICIO DATE INfecha de iniciación delexamen
7 FECHA_FIN DATE INfecha de terminacióndel examen
8 IS_LIMITE_TIEMPO VARCHAR2 IN
indica si el examentiene un limite detiempo
9 IS_HABILITA_TIEMPO VARCHAR2 INindica si el examen eshabilitado
10TIEMPO_PRIMERO_SEGUNDO NUMBER IN
cantidad de minutosque dura el examen
11NUM_MAX_PREGUNTAS NUMBER IN
cantidad máxima depreguntas del examen
12IS_PREGUNTA_ALEATORIA VARCHAR2 IN
indica si cuando sepresentan laspreguntas es en formaaleatoria
13IS_RESPUESTA_ALEATORIA VARCHAR2 IN
indica si cuando sepresentan lasrespuestas es enforma aleatoria
14IS_APLICA_PENALIZACION VARCHAR2 IN
indica que en elexamen se va aplicarseñalización
15 IS_VENTANA_SEGURA VARCHAR2 INcampo no usado en elsistema
23
16IS_REQUIERE_CONTRASENIA VARCHAR2 IN
si esta activo indicaque el examen va atener una contraseña
17CALIFICACION_MAXIMA NUMBER IN
indica la calificaciónmáxima del examen
18 ID_ESTADO NUMBER INcódigo del estado delexamen
19 USUARIO_INGRESA NUMBER INcódigo del usuario queingresa
20 USUARIO_MODIFICA NUMBER INcódigo del usuario quemodifica
21FECHA_ULTIMA_MODIFICACION DATE IN
fecha de la ultimamodificación
22 FECHA_INGRESO DATE INfecha del ingreso delexamen
23 ID_PARCIAL NUMBER IN código del parcial
24 ID_PERIODO_LECTIVO NUMBER INcódigo del periodolectivo
25 ID_PARALELO NUMBER IN código del paralelo
26 ID_MATERIA NUMBER IN código de la materia
27 CONTRASENIA VARCHAR2 INvalor de la contraseñadel examen
ACTUALIZA_CATEGORIA_PREGUNTAS
POS NOMBRE_PARAMETRO TIPO_DATOENT /SAL DESCRIPCION
1 PN_ID_PREGUNTA NUMBER INcódigo de lapregunta
2PN_ID_CATEGORIA_PREGUNTA NUMBER IN
código de lacategoría de lapregunta
3 PV_ERROR VARCHAR2 OUTmensaje de retornode error
4 PN_ERROR NUMBER OUTcódigo del errorencontrado
24
ACTUALIZA_FECHA_EXAMEN_ALUMNO
POS NOMBRE_PARAMETRO TIPO_DATOENT /SAL DESCRIPCION
1 PV_EXAMEN_ALUMNOPL/SQLRECORD IN
1 ID_SECUENCIA NUMBER INcódigo de lasecuencia
2 PV_ERROR VARCHAR2 OUTmensaje deretorno de error
2 ID_EXAMEN NUMBER INcódigo delexamen
3 PN_ERROR NUMBER OUTcódigo del errorencontrado
3 ID_USUARIO NUMBER IN código del usuario
4 NOTA_TOTAL NUMBER IN
valor obtenido enel examen menoslas penalizaciones
5 FECHA_INICIO DATE IN
fecha deiniciación delexamen
6 FECHA_TERMINA DATE IN
fecha de laterminación delexamen
7 FECHA_PUBLICA DATE IN
fecha en la que elexamen espublicado
8 FECHA_VENCE DATE INfecha en la quevence el examen
9 ID_ESTADO NUMBER INcódigo del estadodel examen
10 USUARIO_INGRESA NUMBER INcódigo del usuarioque ingresa
11 USUARIO_MODIFICA NUMBER INcódigo del usuarioque modifica
12 FECHA_MODIFICA DATE IN
fecha quemodifica elexamen
13 FECHA_INGRESO DATE INfecha de ingresoal examen
14 CONT_PENALIZA NUMBER IN
contador de lasveces que realizaun cambio
15 SUMA_PENALIZA NUMBER IN
suma de losvalores deseñalización decada pregunta
16 NOTA_PARCIAL NUMBER INvalor de la notaobtenida
17 OBSERVACION VARCHAR2 IN
descripción dealgunaobservación del
25
examen
18PORCENTAJE_ACEPTADAS NUMBER IN
valor de laspreguntasacertadas
19 ID_SOLICITUD NUMBER IN
código de lasolicitud delexamen
20 TIEMPO_TRANSC NUMBER IN
valor del tiempotranscurrido en elexamen
ACTUALIZA_PREGUNTA
POS NOMBRE_PARAMETRO TIPO_DATOENT /SAL DESCRIPCION
1 PV_PREGUNTAPL/SQLRECORD IN
1 ID_PREGUNTA NUMBER INcódigo de lapregunta
2 PV_ERROR VARCHAR2 OUTmensaje de retornode error
2 ID_CATEGORIA_PREGUNTA NUMBER IN
código de lacategoría de lapregunta
3 PN_ERROR NUMBER OUTcódigo del errorencontrado
3 ID_TIPO_PREGUNTA NUMBER INcódigo del tipo depregunta
4 DESCRIPCION VARCHAR2 INbreve descripciónde la pregunta
5 CALIFICACION NUMBER INvalor de lapregunta
6 MSG_GENERAL VARCHAR2 INbreve mensaje dela pregunta
7 FACTOR_PENALIZACION NUMBER INvalor de lapenalización
8 USUARIO_INGRESA NUMBER INcódigo del usuarioque ingresa
9 USUARIO_MODIFICA NUMBER INcódigo del usuarioque modifica
10FECHA_ULTIMA_MODIFICACION DATE IN
fecha de la ultimamodificación
11 FECHA_INGRESO DATE IN fecha de ingreso
12 NOMBRE_ARCHIVO VARCHAR2 IN
en caso de que lapregunta tengaalguna imagen
13 CANTIDAD_VALIDAS NUMBER IN14 BIN BLOB IN
26
ACTUALIZA_PREGUNTA_EXAMEN
POS NOMBRE_PARAMETRO TIPO_DATOENT /SAL DESCRIPCION
1 PV_PREGUNTA_EXAMENPL/SQLRECORD IN
1 ID_EXAMEN NUMBER IN código del examen
2 ID_PREGUNTA NUMBER INcódigo de lapregunta
2 PV_ERROR VARCHAR2 OUTmensaje deretorno de error
3 PN_ERROR NUMBER OUTcódigo de errorencontrado
3 USUARIO_INGRESA NUMBER INcódigo del usuarioque ingresa
4 FECHA_INGRESO DATE IN fecha de ingreso
5 USUARIO_MODIFICA NUMBER INcódigo del usuarioque modifica
6FECHA_ULTIMA_MODIFICACION DATE IN
fecha de la ultimamodificación
7 CALIFICACION NUMBER IN
calificación de lapregunta delexamen
ACTUALIZA_RESPUESTA
POS NOMBRE_PARAMETRO TIPO_DATOENT /SAL DESCRIPCION
1 PV_RESPUESTAPL/SQLRECORD IN
1 ID_RESPUESTA NUMBER IN
código de larespuesta de lapregunta
2 ID_PREGUNTA NUMBER INcódigo de lapregunta
2 PV_ERROR VARCHAR2 OUTmensaje deretorno de error
3 RESPUESTA VARCHAR2 INdescripción de larespuesta
3 PN_ERROR NUMBER OUTcódigo del errorencontrado
4 CALIFICACION NUMBER INvalor de lapregunta
5 MARGEN_ERROR NUMBER IN
6RESPUESTA_CORRECTA VARCHAR2 IN
7 USUARIO_INGRESA NUMBER INcódigo de usuarioque ingresa
8 USUARIO_MODIFICA NUMBER INcódigo del usuarioque modifica
9FECHA_ULTIMA_MODIFICACION DATE IN
fecha de la ultimamodificación
27
10 FECHA_INGRESO DATE INfecha de ingresoal examen
CONSULTA_PREGUNTA
POS NOMBRE_PARAMETRO TIPO_DATO ENT / SAL DESCRIPCION
1 PN_ID_PREGUNTA NUMBER INcódigo de lapregunta
2 INDICE NUMBER IN
3 O_CURSOR REF CURSOR IN/OUT valor del cursor
4 COD_RET NUMBER IN/OUTcódigo de retornode error
5 MSG_RET NUMBER IN/OUTmensaje de retornode error
CUENTA_RESPUESTA
POS NOMBRE_PARAMETROTIPO_DATO
ENT /SAL DESCRIPCION
1 PN_ID_PREGUNTA NUMBER IN código de la pregunta2 PN_REGISTROS NUMBER IN/OUT código de cada registro
3 COD_RET NUMBER IN/OUTcódigo de retorno deerror
4 MSG_RET NUMBER IN/OUTmensaje de retorno deerror
1 PN_CODIGO NUMBER IN
2 PN_CATEGORIA NUMBER INcódigo de la categoría dela pregunta
3 PN_CONTADOR NUMBER OUTvalor que retorna elcontador
4 PV_ERRORVARCHAR2 OUT
mensaje de retorno deerror
5 PN_ERROR NUMBER OUT valor que retorna el error
ELIMINA_EXAMEN
POS NOMBRE_PARAMETRO TIPO_DATO ENT / SAL DESCRIPCION
1 LN_ID_EXAMEN NUMBER IN código del examen
2 COD_RET NUMBER IN/OUTvalor que retorna elcontador
3 MSG_RET VARCHAR2 IN/OUTmensaje de retornode error
28
ELIMINA_RESPUESTA
POS NOMBRE_PARAMETRO TIPO_DATO ENT/SAL DESCRIPCION
1 LN_ID_PREGUNTA NUMBER IN código de la pregunta
2 COD_RET NUMBER IN/OUTvalor que retorna elcontador
3 MSG_RET VARCHAR2 IN/OUTmensaje de retorno deerror
ELIMINA_PREGUNTA_EXAMEN
POS NOMBRE_PARAMETRO TIPO_DATO ENT/SAL DESCRIPCION1 PN_CRITERIO NUMBER IN1 PN_EXAMEN NUMBER IN código del examen2 PN_PREGUNTA NUMBER IN código de la pregunta
3 PV_ERROR VARCHAR2 OUTmensaje de retorno deerror
4 PN_ERROR NUMBER OUTvalor de retorno delerror
EXISTE_PREGUNTA_EXAMEN
POS NOMBRE_PARAMETRO TIPO_DATO ENT/SAL DESCRIPCION0 NUMBER OUT1 PN_ID_EXAMEN NUMBER IN código del examen2 PN_ID_PREGUNTA NUMBER IN código de la pregunta
3 PV_ERROR VARCHAR2 OUTmensaje de retorno deerror
4 PN_ERROR NUMBER OUTvalor de retorno delerror
FU_GET_ID_ESTADO
POS NOMBRE_PARAMETRO TIPO_DATO ENT/SAL DESCRIPCION
0 NUMBER OUT
1 PV_DESCRIPCION VARCHAR2 INdescripción deestado
2 PV_ERROR VARCHAR2 OUTmensaje de retornode error
3 PN_ERROR NUMBER OUTvalor de retorno delerror
29
FU_GET_ID_ESTADO_DESCRIPCION
POS NOMBRE_PARAMETRO TIPO_DATO ENT / SAL DESCRIPCION0 VARCHAR2 OUT1 PN_ESTADO NUMBER IN código de estado
2 PV_ERROR VARCHAR2 OUTmensaje de retornode error
3 PN_ERROR NUMBER OUTvalor de retorno delerror
FU_GET_PARAMETRO
POSNOMBRE_PARAMETRO TIPO_DATO
ENT /SAL DESCRIPCION
0 NUMBER OUT
1 PV_DESCRIPCION VARCHAR2 IN
2 PV_ERROR VARCHAR2 OUT mensaje de retorno de error
3 PN_ERROR NUMBER OUT valor de retorno del error
INSERTAR_EXAMEN
POS NOMBRE_PARAMETRO TIPO_DATO
ENT/SAL DESCRIPCION
1 ID_EXAMEN NUMBER IN código de examen
1 PV_EXAMENPL/SQLRECORD IN
2 PN_SECUENCIA NUMBEROUT
valor que retorna de lasecuencia
2 ID_TIPO_EXAMEN NUMBER INcódigo del tipo deexamen
3 INTRODUCCION VARCHAR2 INmensaje deintroducción al examen
3 PV_ERROR VARCHAR2OUT
mensaje de retorno deerror
4 PN_ERROR NUMBEROUT
valor de retorno delerror
4 IS_PERMITE_ABRIR VARCHAR2 IN
una vez autorizado,permite realizarcambios al examen
5 IS_PERMITE_CERRAR VARCHAR2 IN
bloquea el examen paraque no se realicencambios
6 FECHA_INICIO DATE INfecha de inicio delexamen
30
7 FECHA_FIN DATE INfecha de finalización delexamen
8 IS_LIMITE_TIEMPO VARCHAR2 INvalor del tiempoasignado al examen
9 IS_HABILITA_TIEMPO VARCHAR2 INindica si el examen eshabilitado
10TIEMPO_PRIMERO_SEGUNDO NUMBER IN
cantidad de minutosque dura el examen
11NUM_MAX_PREGUNTAS NUMBER IN
numero máximo de laspreguntas que vanhacer ingresadas
12IS_PREGUNTA_ALEATORIA VARCHAR2 IN
13IS_RESPUESTA_ALEATORIA VARCHAR2 IN
14IS_APLICA_PENALIZACION VARCHAR2 IN
mensaje que indica quese aplicara penalizaciónsi cambia de respuesta
15 IS_VENTANA_SEGURA VARCHAR2 IN
16IS_REQUIERE_CONTRASENIA VARCHAR2 IN
mensaje que indica sise requiere contraseña
17 CALIFICACION_MAXIMA NUMBER IN
valor de la calificaciónmáxima que se puedeobtener en el examen
18 ID_ESTADO NUMBER IN
código de los diferentesestados que tiene unexamen
19 USUARIO_INGRESA NUMBER INcódigo del usuario queingresa
20 USUARIO_MODIFICA NUMBER INcódigo del usuario quemodifica
21FECHA_ULTIMA_MODIFICACION DATE IN
fecha de la ultimamodificación
22 FECHA_INGRESO DATE INfecha de ingreso alexamen
23 ID_PARCIAL NUMBER IN código del parcial
24 ID_PERIODO_LECTIVO NUMBER INcódigo del periodolectivo
25 ID_PARALELO NUMBER IN código del paralelo26 ID_MATERIA NUMBER IN código de la materia
27 CONTRASENIA VARCHAR2 INingreso de lacontraseña del examen
INSERTAR_EXAMEN_ALUMNO
POS NOMBRE_PARAMETROTIPO_DATO
ENT /SAL DESCRIPCION
1 ID_SECUENCIANUMBER IN código de la secuencia
1 PV_EXAMEN_ALUMNO PL/SQL IN
31
RECORD
2 PV_ERRORVARCHAR2 OUT valor que retorna el error
2 ID_EXAMENNUMBER IN código del examen
3 ID_USUARIONUMBER IN código del usuario
3 PN_ERRORNUMBER OUT valor que retorna el examen
4 NOTA_TOTALNUMBER IN
valor de la nota total deexamen
5 FECHA_INICIO DATE IN fecha de inicio del examen
6 FECHA_TERMINA DATE INfecha de finalización delexamen
7 FECHA_PUBLICA DATE INfecha de publicación delexamen
8 FECHA_VENCE DATE INfecha de vencimiento delexamen
9 ID_ESTADONUMBER IN
código del estado delexamen
10 USUARIO_INGRESANUMBER IN
código del usuario queingresa al examen
11 USUARIO_MODIFICANUMBER IN
código del usuario quemodifica
12 FECHA_MODIFICA DATE INfecha de modificación delexamen
13 FECHA_INGRESO DATE IN fecha de ingreso al examen
14 CONT_PENALIZANUMBER IN
contador de las veces querealiza un cambio
15 SUMA_PENALIZANUMBER IN
suma de los valores depenalización de cadapregunta
16 NOTA_PARCIALNUMBER IN valor de la nota del parcial
17 OBSERVACIONVARCHAR2 IN
18PORCENTAJE_ACEPTADAS
NUMBER IN
indicador del porcentaje depreguntas acertadas
19 ID_SOLICITUDNUMBER IN
código de la solicitud delexamen
20 TIEMPO_TRANSCNUMBER IN
indicador de tiempo deltranscurrido
INSERTAR_PREGUNTA
POS NOMBRE_PARAMETRO TIPO_DATOENT /SAL DESCRIPCION
1 ID_PREGUNTA NUMBER INcodigo de la preguntadel examen
1 PV_PREGUNTA PL/SQL IN
32
RECORD
2 PN_SECUENCIA NUMBER OUTvalor que retorna de lasecuencia
2ID_CATEGORIA_PREGUNTA NUMBER IN
código de la categoríade la pregunta
3 ID_TIPO_PREGUNTA NUMBER INcódigo del tipo depregunta
3 PV_ERROR VARCHAR2 OUTmensaje que retornael error
4 PN_ERROR NUMBER OUTcódigo que retorna elerror
4 DESCRIPCION VARCHAR2 IN
5 CALIFICACION NUMBER INvalor de la calificaciónde la pregunta
6 MSG_GENERAL VARCHAR2 IN
7FACTOR_PENALIZACION NUMBER IN
valor de lapenalización de cadapregunta
8 USUARIO_INGRESA NUMBER INcódigo del usuario queingresa al modulo
9 USUARIO_MODIFICA NUMBER INcódigo del usuario quemodifica el modulo
10FECHA_ULTIMA_MODIFICACION DATE IN
fecha de la ultimamodificación
11 FECHA_INGRESO DATE INfecha de ingreso almodulo
12 NOMBRE_ARCHIVO VARCHAR2 INnombre del archivo deimagen
13 CANTIDAD_VALIDAS NUMBER IN14 BIN BLOB IN
INSERTAR_PREGUNTA_EXAMEN
POS NOMBRE_PARAMETRO TIPO_DATO
ENT/SAL DESCRIPCION
1 ID_EXAMEN NUMBER IN código del examen
1PV_PREGUNTA_EXAMEN
PL/SQLRECORD IN
2 ID_PREGUNTA NUMBER IN código de la pregunta
2 PV_ERROR VARCHAR2 OUTmensaje del error queretorna
3 USUARIO_INGRESA NUMBER INcódigo del usuario queingresa
3 PN_ERROR NUMBER OUTcódigo del errorencontrado
4 FECHA_INGRESO DATE INfecha de ingreso almodulo
5 USUARIO_MODIFICA NUMBER INcódigo del usuario querealiza alguna
33
modificación al modulo
6FECHA_ULTIMA_MODIFICACION DATE IN
fecha de la ultimamodificación
7 CALIFICACION NUMBER INcalificación de lapregunta
INSERTAR_RESPUESTA
POS NOMBRE_PARAMETRO TIPO_DATOENT /SAL DESCRIPCION
1 ID_RESPUESTA NUMBER INcódigo de la respuestade la pregunta
1 PV_RESPUESTAPL/SQLRECORD IN
2 ID_PREGUNTA NUMBER INcódigo de la respuestade la pregunta
2 PN_SECUENCIA NUMBER OUTvalor de retorno de lasecuencia obtenida
3 RESPUESTA VARCHAR2 IN
3 PV_ERROR VARCHAR2 OUTmensaje de retorno deerror
4 CALIFICACION NUMBER INvalor de la calificaciónde la respuesta
4 PN_ERROR NUMBER OUTcódigo de retorno deerror
5 MARGEN_ERROR NUMBER INvalor del margen deerror
6RESPUESTA_CORRECTA VARCHAR2 IN
7 USUARIO_INGRESA NUMBER IN8 USUARIO_MODIFICA NUMBER IN
9FECHA_ULTIMA_MODIFICACION DATE IN
10 FECHA_INGRESO DATE IN
34
Paquete PCK_EVALUACION_INTERFACE
ACT_SOLICITUD_EXAMEN_GRACIA
POS NOMBRE_PARAMETRO TIPO_DATO ENT/SAL DESCRIPCION
1 PN_CODIGO NUMBER IN código del examen
2 COD_RET NUMBER IN/OUTcódigo de retorno deerror
3 MSG_RET VARCHAR2 IN/OUTmensaje de retorno deerror
ENVIAR_CORREO
POSNOMBRE_PARAMETRO
TIPO_DATO
ENT /SAL DESCRIPCION
1 NOMBRE_ENVIAVARCHAR2 IN
dirección del correo queenvía(servidor)
2 ENVIAVARCHAR2 IN
dirección del correo queenvía(servidor)
3 RECIBEVARCHAR2 IN
dirección del correo querecibe
4 ASUNTOVARCHAR2 IN
descripción del tema delcorreo
5 MENSAJEVARCHAR2 IN
descripción del mensajedel correo
6 COD_RET NUMBERIN/OUT código de retorno de error
7 MSG_RETVARCHAR2
IN/OUT
mensaje de retorno deerror
EXISTE_ESTADO
POS NOMBRE_PARAMETRO TIPO_DATO ENT/SAL DESCRIPCION0 PL/SQL BOOLEAN OUT
1 PV_ESTADO VARCHAR2 INdescripción delestado
2 COD_RET NUMBER IN/OUTcódigo de retornode error
3 MSG_RET VARCHAR2 IN/OUTmensaje deretorno de error
GET_ALUMNO_EXAMEN
POS NOMBRE_PARAMETRO TIPO_DATO ENT/SAL DESCRIPCION0 VARCHAR2 OUT
35
1 PN_EXAMEN NUMBER IN código del examen2 PN_SECUENCIA NUMBER IN código de la secuencia3 PN_USUARIO NUMBER IN código del usuario
4 COD_RET NUMBER IN/OUTcódigo de retorno deerror
5 MSG_RET VARCHAR2 IN/OUTmensaje de retorno deerror
GET_CORREO_USUARIO
POS NOMBRE_PARAMETRO TIPO_DATO ENT / SAL DESCRIPCION0 VARCHAR2 OUT1 PN_USUARIO NUMBER IN código del usuario
2 COD_RET NUMBER IN/OUTcódigo de retorno deerror
3 MSG_RET VARCHAR2 IN/OUTmensaje de retornode error
GET_NOMBRE_PARCIAL
POS NOMBRE_PARAMETRO TIPO_DATO ENT/SAL DESCRIPCION
0 VARCHAR2 OUT
1 PN_PARCIAL NUMBER IN código del parcial
2 PN_PERIODO NUMBER INcódigo del periodolectivo
3 COD_RET NUMBER IN/OUTcódigo de retorno deerror
4 MSG_RET VARCHAR2 IN/OUTmensaje de retorno deerror
GET_PROFESOR_EXAMEN
POS NOMBRE_PARAMETRO TIPO_DATO ENT/SAL DESCRIPCION
0 VARCHAR2 OUT
1 PN_PARCIAL NUMBER IN código del parcial
2 PN_PERIODO NUMBER INcódigo del periodolectivo
3 COD_RET NUMBER IN/OUTcódigo de retorno deerror
4 MSG_RET VARCHAR2 IN/OUTmensaje de retorno deerror
36
GET_USER
POS NOMBRE_PARAMETRO TIPO_DATO ENT/SAL DESCRIPCION0 VARCHAR2 OUT1 PN_USER NUMBER IN código del usuario
2 COD_RET NUMBER IN/OUTcódigo de retorno deerror
3 MSG_RET VARCHAR2 IN/OUTmensaje de retorno deerror
Codificación
PAQUETE PCK_EVALUACION
CREATE OR REPLACE PACKAGE BODY PCK_EVALUACION ASPROCEDURE INGRESA_RESPUESTA_EXAMEN(PN_ID_EXAMEN IN NUMBER,
PN_ID_PREGUNTA IN NUMBER,
PN_ID_SECUENCIA IN NUMBER,
PN_ID_RESPUESTA IN NUMBER,PV_DESCRIPCION
IN VARCHAR2,PV_RESPUESTA
IN VARCHAR2,PN_USUARIO IN
NUMBER,COD_RET IN OUT
NUMBER, --CODIGO DE ERRORMSG_RET IN OUT
VARCHAR2 -- MENSAJE DE ERROR) IS
ERROR EXCEPTION;CONTADOR NUMBER;PN_NOTA_PARCIAL NUMBER(5,2);PN_VALORACION NUMBER(5,2);
BEGIN--COD_RET := 0;MSG_RET := NULL;CONTADOR := 0;PN_NOTA_PARCIAL := 0;PN_VALORACION := 0;--IF PN_ID_EXAMEN IS NULL THEN
COD_RET := 1;
37
MSG_RET := 'ERROR, CODIGO DE EXAMEN NO PUEDE SER NULO';RAISE ERROR;
ELSIF PN_ID_PREGUNTA IS NULL THENCOD_RET := 1;MSG_RET := 'ERROR, CODIGO DE PREGUNTA NO PUEDE SER NULO';RAISE ERROR;
ELSIF PN_ID_SECUENCIA IS NULL THENCOD_RET := 1;MSG_RET := 'ERROR, CODIGO DE SECUENCIA NO PUEDE SER NULO';RAISE ERROR;
ELSIF PN_ID_RESPUESTA IS NULL THENCOD_RET := 1;MSG_RET := 'ERROR, CODIGO DE RESPUESTA NO PUEDE SER NULO';RAISE ERROR;
END IF;--BEGIN
SELECT COUNT(*)INTO CONTADORFROM RESPUESTA_EXAMENWHERE ID_EXAMEN = PN_ID_EXAMENAND ID_SECUENCIA = PN_ID_SECUENCIAAND ID_PREGUNTA = PN_ID_PREGUNTAAND ID_RESPUESTA = PN_ID_RESPUESTAAND ID_USUARIO = PN_USUARIO;
EXCEPTIONWHEN OTHERS THEN
COD_RET := 14;MSG_RET := SUBSTR('ERROR AL ACCESAR A LA TABLA
<RESPUESTA_EXAMEN> '||SQLERRM,1,300);RAISE ERROR;
END;------ OBTENGO LA VALORACION DE LA RESPUESTA--PN_VALORACION :=
PCK_EVALUACION.GET_VALORACION_RESPUESTA(PN_ID_EXAMEN,PN_ID_PREGUNTA,COD_RET, MSG_RET);
--IF COD_RET <> 0 THEN
RAISE ERROR;END IF;---- OBTENGO LA NOTA DE LA RESPUESTA--PN_NOTA_PARCIAL :=
PCK_EVALUACION.GET_CALIFICACION_RESPUESTA(PN_ID_RESPUESTA,PN_ID_PREGUNTA,
PN_VALORACION,PV_RESPUESTA,COD_RET,MSG_RET);
--IF COD_RET <> 0 THEN
38
RAISE ERROR;END IF;--IF CONTADOR = 0 THEN -- SE TRATA DE UNA INSERCION NUEVA NO APLICA
PENALIZACION--BEGIN
INSERT INTORESPUESTA_EXAMEN(ID_EXAMEN,ID_PREGUNTA,ID_SECUENCIA, ID_RESPUESTA,
DESCRIPCION, RESPUESTA, NOTA_PARCIAL,VALORACION,USUARIO_INGRESA, FECHA_INGRESO, ID_USUARIO)
VALUES(PN_ID_EXAMEN, PN_ID_PREGUNTA,PN_ID_SECUENCIA, PN_ID_RESPUESTA,PV_DESCRIPCION,
PV_RESPUESTA,NVL(PN_NOTA_PARCIAL,0),NVL(PN_VALORACION,0),PN_USUARIO, SYSDATE, PN_USUARIO);
EXCEPTIONWHEN OTHERS THEN
COD_RET := 2;MSG_RET := SUBSTR('ERROR AL INSERTAR REGISTRO
DE <RESPUESTA_EXAMEN>: '||SQLERRM,1,300);RAISE ERROR;
END;--COMMIT; -- GUARDA
ELSE-- SE TRATA DE UNA ACTUALIZACIÓN, SE DEBE CONTROLAR EL FACTORDE PENALIZACION
----PCK_EVALUACION.ACTUALIZA_RESPUESTA_EXAMEN(PN_ID_EXAMEN,
PN_ID_PREGUNTA,
PN_ID_SECUENCIA,
PN_ID_RESPUESTA,
PV_DESCRIPCION,PV_RESPUESTA,
PN_NOTA_PARCIAL,PN_VALORACION,PN_USUARIO,COD_RET,MSG_RET);
IF COD_RET <> 0 THENRAISE ERROR;
END IF;END IF;--EXCEPTION
WHEN ERROR THENMSG_RET := substr(MSG_RET||' Código de Error:
'||cod_ret,1,300);ROLLBACK;
WHEN OTHERS THEN
39
COD_RET := 3;MSG_RET := SUBSTR('ERROR NO CONTROLADO EN PROCEDIMIENTO
<PCK_EVALUACION.INGRESA_RESPUESTA_EXAMEN>, '||SQLERRM,1,300);RAISE ERROR;
END INGRESA_RESPUESTA_EXAMEN;--PROCEDURE ACTUALIZA_RESPUESTA_EXAMEN(PN_ID_EXAMEN IN NUMBER,
PN_ID_PREGUNTA IN NUMBER,
PN_ID_SECUENCIA IN NUMBER,
PN_ID_RESPUESTA IN NUMBER,PV_DESCRIPCION
IN VARCHAR2,PV_RESPUESTA
IN VARCHAR2,
PN_NOTA_PARCIAL IN NUMBER,PN_VALORACION
IN NUMBER,PN_USUARIO IN
NUMBER,COD_RET IN OUT
NUMBER, --CODIGO DE ERRORMSG_RET IN OUT
VARCHAR2 -- MENSAJE DE ERROR)IS
---- DECLARACION DE VARIABLES--ERROR EXCEPTION;
BEGINCOD_RET := 0;MSG_RET := NULL;--IF PN_ID_EXAMEN IS NULL THEN
COD_RET := 1;MSG_RET := 'ERROR, CODIGO DE EXAMEN NO PUEDE SER NULO';RAISE ERROR;
ELSIF PN_ID_PREGUNTA IS NULL THENCOD_RET := 1;MSG_RET := 'ERROR, CODIGO DE PREGUNTA NO PUEDE SER NULO';RAISE ERROR;
ELSIF PN_ID_SECUENCIA IS NULL THENCOD_RET := 1;MSG_RET := 'ERROR, CODIGO DE SECUENCIA NO PUEDE SER NULO';RAISE ERROR;
ELSIF PN_ID_RESPUESTA IS NULL THENCOD_RET := 1;MSG_RET := 'ERROR, CODIGO DE RESPUESTA NO PUEDE SER NULO';RAISE ERROR;
END IF;--BEGIN
40
UPDATE RESPUESTA_EXAMENSET RESPUESTA = PV_RESPUESTA,NOTA_PARCIAL = PN_NOTA_PARCIAL,VALORACION = PN_VALORACION,USUARIO_MODIFICA = PN_USUARIO,FECHA_MODIFICA = SYSDATEWHERE ID_EXAMEN = PN_ID_EXAMENAND ID_PREGUNTA = PN_ID_PREGUNTAAND ID_SECUENCIA = PN_ID_SECUENCIAAND ID_RESPUESTA = PN_ID_RESPUESTAAND ID_USUARIO = PN_USUARIO;
EXCEPTIONWHEN OTHERS THEN
COD_RET := 2;MSG_RET := SUBSTR('ERROR AL ACTUALIZAR REGISTRO DE
<RESPUESTA_EXAMEN>: '||SQLERRM,1,300);RAISE ERROR;
END;--COMMIT; -- GUARDA--
EXCEPTIONWHEN ERROR THEN
MSG_RET := substr(MSG_RET||' Código de Error:'||cod_ret,1,300);
ROLLBACK;WHEN OTHERS THEN
COD_RET := 3;MSG_RET := SUBSTR('ERROR NO CONTROLADO EN PROCEDIMIENTO
<PCK_EVALUACION.ACTUALIZA_RESPUESTA_EXAMEN>, '||SQLERRM,1,300);RAISE ERROR;
END ACTUALIZA_RESPUESTA_EXAMEN;--
PROCEDURE ELIMINA_RESPUESTA_EXAMEN(PN_ID_EXAMEN IN NUMBER,PN_ID_PREGUNTA IN NUMBER,
PN_ID_SECUENCIA IN NUMBER,
PN_ID_RESPUESTA IN NUMBER,PN_USUARIO IN
NUMBER,COD_RET IN OUT
NUMBER, --CODIGO DE ERRORMSG_RET IN OUT
VARCHAR2 -- MENSAJE DE ERROR)IS
---- DECLARACION DE VARIABLES--ERROR EXCEPTION;
BEGINCOD_RET := 0;MSG_RET := NULL;--
41
IF PN_ID_EXAMEN IS NULL THENCOD_RET := 1;MSG_RET := 'ERROR, CODIGO DE EXAMEN NO PUEDE SER NULO';RAISE ERROR;
ELSIF PN_ID_PREGUNTA IS NULL THENCOD_RET := 1;MSG_RET := 'ERROR, CODIGO DE PREGUNTA NO PUEDE SER NULO';RAISE ERROR;
ELSIF PN_ID_SECUENCIA IS NULL THENCOD_RET := 1;MSG_RET := 'ERROR, CODIGO DE SECUENCIA NO PUEDE SER NULO';RAISE ERROR;
ELSIF PN_ID_RESPUESTA IS NULL THENCOD_RET := 1;MSG_RET := 'ERROR, CODIGO DE RESPUESTA NO PUEDE SER NULO';RAISE ERROR;
END IF;--BEGIN
DELETE RESPUESTA_EXAMENWHERE ID_EXAMEN = PN_ID_EXAMENAND ID_PREGUNTA = PN_ID_PREGUNTAAND ID_SECUENCIA = PN_ID_SECUENCIAAND ID_RESPUESTA = PN_ID_RESPUESTAAND ID_USUARIO = PN_USUARIO;
EXCEPTIONWHEN OTHERS THEN
COD_RET := 2;MSG_RET := SUBSTR('ERROR AL ELIMINAR REGISTRO DE
<RESPUESTA_EXAMEN>: '||SQLERRM,1,300);RAISE ERROR;
END;--COMMIT; -- GUARDA--
EXCEPTIONWHEN ERROR THEN
MSG_RET := substr(MSG_RET||' Código de Error:'||cod_ret,1,300);
ROLLBACK;WHEN OTHERS THEN
COD_RET := 3;MSG_RET := SUBSTR('ERROR NO CONTROLADO EN PROCEDIMIENTO
<PCK_EVALUACION.ELIMINA_RESPUESTA_EXAMEN>, '||SQLERRM,1,300);RAISE ERROR;
END ELIMINA_RESPUESTA_EXAMEN;--PROCEDURE INSERTA_TIPO_EXAMEN (LV_DESCRIPCION IN VARCHAR2,
LV_USUARIO IN NUMBER,COD_RET IN OUT
NUMBER,MSG_RET IN OUT
VARCHAR2,
42
LN_CODIGO OUTNUMBER) IS
LV_CONT NUMBER(3);ERROR EXCEPTION;
BEGIN--BEGIN
SELECT NVL(MAX(ID_TIPO_EXAMEN),0) + 1INTO LV_CONTFROM TIPO_EXAMEN;
EXCEPTIONWHEN OTHERS THEN
COD_RET := 1;MSG_RET := SUBSTR('ERROR AL BUSCAR CODIGO PARA TIPO DE
EXAMEN '||SQLERRM,1,300);RAISE ERROR;
END;--
LN_CODIGO:= LV_CONT;-- INSERTO EN LA TABLA DE TIPO DE EXAMENBEGIN
INSERT INTO TIPO_EXAMEN (ID_TIPO_EXAMEN,DESCRIPCION,USUARIO_INGRESA, FECHA_INGRESO)
VALUES(LV_CONT,LV_DESCRIPCION,LV_USUARIO,SYSDATE);EXCEPTION
WHEN OTHERS THENCOD_RET := 2;MSG_RET := SUBSTR('ERROR AL INSERTAR EN LA TABLA
<TIPO_EXAMEN> '||SQLERRM,1,300);RAISE ERROR;
END;--
COMMIT;--
EXCEPTIONWHEN ERROR THEN
MSG_RET := SUBSTR(MSG_RET||' Cod: '||cod_ret,1,300);WHEN OTHERS THENCOD_RET := 3;MSG_RET := SUBSTR('ERROR NO CONTROLADO EN PROCEDIMIENTO
<PCK_EVALUACION.INSERTA_TIPO_EXAMEN>: '||SQLERRM,1,300);ROLLBACK;
END INSERTA_TIPO_EXAMEN;--PROCEDURE ACTUALIZA_TIPO_EXAMEN (LN_ID_TIPO_EXAMEN IN NUMBER,
LV_DESCRIPCION INVARCHAR2,
LV_USUARIO IN NUMBER,COD_RET IN OUT
NUMBER,MSG_RET IN OUT
VARCHAR2) ISERROR EXCEPTION;--
43
BEGINBEGIN
UPDATE TIPO_EXAMENSET DESCRIPCION = LV_DESCRIPCION,USUARIO_MODIFICA = LV_USUARIO,FECHA_ULTIMA_MODIFICACION = SYSDATE
WHERE ID_TIPO_EXAMEN = LN_ID_TIPO_EXAMEN;EXCEPTION
WHEN OTHERS THENCOD_RET := 1;MSG_RET := SUBSTR('ERROR AL ACTUALIZAR TIPO DE EXAMENB
CODIGO: '||LN_ID_TIPO_EXAMEN||' '||SQLERRM,1,300);RAISE ERROR;
END;--COMMIT;--
EXCEPTIONWHEN ERROR THEN
MSG_RET := SUBSTR(MSG_RET||' Cod: '||cod_ret,1,300);WHEN OTHERS THENCOD_RET := 2;MSG_RET := SUBSTR('ERROR NO CONTROLADO EN PROCEDIMIENTO
<PCK_EVALUACION.ACTUALIZA_TIPO_EXAMEN>: '||SQLERRM,1,300);ROLLBACK;
END ACTUALIZA_TIPO_EXAMEN;--
PROCEDURE ELIMINA_TIPO_EXAMEN (LN_ID_TIPO_EXAMEN IN NUMBER,COD_RET IN OUT
NUMBER,MSG_RET IN OUT
VARCHAR2) ISERROR EXCEPTION;LN_CONTADOR NUMBER := 0;--BEGIN--BEGIN
SELECT COUNT(*)INTO LN_CONTADORFROM EXAMENWHERE ID_TIPO_EXAMEN = LN_ID_TIPO_EXAMEN;
EXCEPTIONWHEN OTHERS THEN
COD_RET := 4;MSG_RET := SUBSTR('ERROR AL BUSCAR TIPO DE EXAMEN EN TABLA
<EXAMEN> '||SQLERRM,1,300);RAISE ERROR;
END;--IF LN_CONTADOR = 0 THEN -- ELIMINAMOS DE LA TABLA
BEGINDELETE TIPO_EXAMENWHERE ID_TIPO_EXAMEN = LN_ID_TIPO_EXAMEN;
44
EXCEPTIONWHEN OTHERS THEN
COD_RET := 1;MSG_RET := SUBSTR('ERROR AL ELIMINAR TIPO DE EXAMEN
CODIGO: '||LN_ID_TIPO_EXAMEN||' '||SQLERRM,1,300);RAISE ERROR;
END;ELSECOD_RET := 5;MSG_RET := 'NO SE PUEDE ELIMINAR TIPO DE EXAMEN PORQUE EXISTEN
REGISTROS ASOCIADOS A EXAMENES ';END IF;--COMMIT;--
EXCEPTIONWHEN ERROR THEN
MSG_RET := SUBSTR(MSG_RET||' Cod: '||cod_ret,1,300);WHEN OTHERS THENCOD_RET := 2;MSG_RET := SUBSTR('ERROR NO CONTROLADO EN PROCEDIMIENTO
<PCK_EVALUACION.ELIMINA_TIPO_EXAMEN>: '||SQLERRM,1,300);ROLLBACK;
END ELIMINA_TIPO_EXAMEN;--
PROCEDURE INSERTA_CATEGORIA_PREGUNTA(LN_ID_PADRE IN NUMBER,LV_NOMBRE IN
VARCHAR2,
LV_DESCRIPCION IN VARCHAR2,LV_USUARIO
IN NUMBER,COD_RET IN
OUT NUMBER,MSG_RET IN
OUT VARCHAR2,LN_CODIGO
OUT NUMBER)ISLV_CONT NUMBER(3);ERROR EXCEPTION;
BEGIN--BEGIN
SELECT NVL(MAX(ID_CATEGORIA_PREGUNTA),0) + 1INTO LV_CONTFROM CATEGORIA_PREGUNTA;
EXCEPTIONWHEN OTHERS THEN
COD_RET := 1;MSG_RET := SUBSTR('ERROR AL BUSCAR CODIGO PARA
CATEGORIA_PREGUNTA '||SQLERRM,1,300);RAISE ERROR;
END;--
45
LN_CODIGO:= LV_CONT;-- INSERTO EN LA TABLA DE TIPO DE EXAMENBEGIN
INSERT INTO CATEGORIA_PREGUNTA (ID_CATEGORIA_PREGUNTA,ID_PADRE,
NOMBRE, DESCRIPCION,USUARIO_INGRESA, FECHA_INGRESO)VALUES(LV_CONT,LN_ID_PADRE,LV_NOMBRE,
LV_DESCRIPCION,LV_USUARIO,SYSDATE);EXCEPTION
WHEN OTHERS THENCOD_RET := 2;MSG_RET := SUBSTR('ERROR AL INSERTAR EN LA TABLA
<CATEGORIA_PREGUNTA> '||SQLERRM,1,300);RAISE ERROR;
END;--
COMMIT;--
EXCEPTIONWHEN ERROR THEN
MSG_RET := SUBSTR(MSG_RET||' Cod: '||cod_ret,1,300);WHEN OTHERS THENCOD_RET := 2;MSG_RET := SUBSTR('ERROR NO CONTROLADO EN PROCEDIMIENTO
<PCK_EVALUACION.INSERTA_CATEGORIA_PREGUNTA>: '||SQLERRM,1,300);ROLLBACK;
END INSERTA_CATEGORIA_PREGUNTA;--PROCEDURE ACTUALIZA_CATEGORIA_PREGUNTA(LN_ID_CATEGORIA_PREGUNTA IN
NUMBER,LN_ID_PADRE
IN NUMBER,LV_NOMBRE IN
VARCHAR2,
LV_DESCRIPCION IN VARCHAR2,LV_USUARIO
IN NUMBER,COD_RET IN
OUT NUMBER,MSG_RET IN
OUT VARCHAR2) IS--ERROR EXCEPTION;--BEGINBEGIN
UPDATE CATEGORIA_PREGUNTASET ID_PADRE = LN_ID_PADRE,NOMBRE = LV_NOMBRE,DESCRIPCION = LV_DESCRIPCION,USUARIO_MODIFICA = LV_USUARIO,FECHA_ULTIMA_MODIFICACION = SYSDATE
WHERE ID_CATEGORIA_PREGUNTA = LN_ID_CATEGORIA_PREGUNTA;
46
EXCEPTIONWHEN OTHERS THEN
COD_RET := 1;MSG_RET := SUBSTR('ERROR AL ACTUALIZAR CATEGORIA DE PREGUNTA,
CODIGO: '||LN_ID_CATEGORIA_PREGUNTA||' '||SQLERRM,1,300);RAISE ERROR;
END;--COMMIT;--EXCEPTION
WHEN ERROR THENMSG_RET := SUBSTR(MSG_RET||' Cod: '||cod_ret,1,300);
WHEN OTHERS THENCOD_RET := 2;MSG_RET := SUBSTR('ERROR NO CONTROLADO EN PROCEDIMIENTO
<PCK_EVALUACION.ACTUALIZA_CATEGORIA_PREGUNTA>: '||SQLERRM,1,300);ROLLBACK;
END ACTUALIZA_CATEGORIA_PREGUNTA;--PROCEDURE ELIMINA_CATEGORIA_PREGUNTA(LN_ID_CATEGORIA_PREGUNTA IN
NUMBER,COD_RET IN
OUT NUMBER,MSG_RET IN
OUT VARCHAR2) ISERROR EXCEPTION;LN_CONTADOR NUMBER := 0;BEGIN--BEGIN
SELECT COUNT(*)INTO LN_CONTADORFROM PREGUNTAWHERE ID_CATEGORIA_PREGUNTA = LN_ID_CATEGORIA_PREGUNTA;
EXCEPTIONWHEN OTHERS THEN
COD_RET := 4;MSG_RET := SUBSTR('ERROR AL BUSCAR CATEGORIA DE PREGUNTA EN
TABLA <PREGUNTA> '||SQLERRM,1,300);RAISE ERROR;
END;--IF LN_CONTADOR = 0 THEN -- ELIMINAMOS DE LA TABLA
BEGINDELETE CATEGORIA_PREGUNTAWHERE ID_CATEGORIA_PREGUNTA = LN_ID_CATEGORIA_PREGUNTA;
EXCEPTIONWHEN OTHERS THEN
COD_RET := 1;MSG_RET := SUBSTR('ERROR AL ELIMINAR CATEGORIA_PREGUNTA
CODIGO: '||LN_ID_CATEGORIA_PREGUNTA||' '||SQLERRM,1,300);RAISE ERROR;
END;
47
ELSECOD_RET := 5;MSG_RET := 'NO SE PUEDE ELIMINAR CATEGORIA DE PREGUNTA PORQUE
EXISTEN REGISTROS ASOCIADOS A PREGUNTAS ';END IF;--COMMIT;--EXCEPTION
WHEN ERROR THENMSG_RET := SUBSTR(MSG_RET||' Cod: '||cod_ret,1,300);
WHEN OTHERS THENCOD_RET := 2;MSG_RET := SUBSTR('ERROR NO CONTROLADO EN PROCEDIMIENTO
<PCK_EVALUACION.ELIMINA_CATEGORIA_PREGUNTA>: '||SQLERRM,1,300);ROLLBACK;
END ELIMINA_CATEGORIA_PREGUNTA;--
PROCEDURE CONSULTA_CATEGORIA_PREGUNTA(PN_ID_CATEGORIA_PREGUNTA INNUMBER,
PV_NOMBRE IN VARCHAR2,INDICE IN
NUMBER,O_CURSOR
IN OUT T_CURSOR,COD_RET
IN OUT NUMBER,MSG_RET
IN OUT NUMBER) ISERROR EXCEPTION;--CURSOR DATOS IS
SELECT ROWNUM,ROWID, ID_CATEGORIA_PREGUNTA,ID_PADRE, NOMBRE, DESCRIPCION, USUARIO_INGRESA,
FECHA_INGRESO,USUARIO_MODIFICA, FECHA_ULTIMA_MODIFICACIONFROM CATEGORIA_PREGUNTAWHERE ID_CATEGORIA_PREGUNTA = NVL(PN_ID_CATEGORIA_PREGUNTA,
ID_CATEGORIA_PREGUNTA)AND NOMBRE LIKE NVL('%'||PV_NOMBRE||'%',NOMBRE);
BEGINBEGINFOR REG IN DATOS LOOP
IF REG.ROWNUM = INDICE THENOPEN O_CURSOR FORSELECT ID_CATEGORIA_PREGUNTA,ID_PADRE, NOMBRE, DESCRIPCION, USUARIO_INGRESA,
FECHA_INGRESO,USUARIO_MODIFICA, FECHA_ULTIMA_MODIFICACIONFROM CATEGORIA_PREGUNTAWHERE ID_CATEGORIA_PREGUNTA =
NVL(PN_ID_CATEGORIA_PREGUNTA, ID_CATEGORIA_PREGUNTA)AND NOMBRE LIKE NVL('%'||PV_NOMBRE||'%',NOMBRE)
48
AND ROWID = REG.ROWID;--EXIT;
END IF;END LOOP;--
--AND ROWNUM = INDICE;EXCEPTION
WHEN OTHERS THENCOD_RET := 1;MSG_RET := SUBSTR('ERROR AL CONSULTAR CATEGORIA_PREGUNTA
'||SQLERRM,1,300);RAISE ERROR;
END;--
EXCEPTIONWHEN ERROR THEN
MSG_RET := SUBSTR(MSG_RET||' Cod: '||cod_ret,1,300);WHEN OTHERS THENCOD_RET := 2;MSG_RET := SUBSTR('ERROR NO CONTROLADO EN PROCEDIMIENTO
<PCK_EVALUACION.CONSULTA_CATEGORIA_PREGUNTA>: '||SQLERRM,1,300);ROLLBACK;
END CONSULTA_CATEGORIA_PREGUNTA;--PROCEDURE CUENTA_CATEGORIA_PREGUNTA(PN_ID_CATEGORIA_PREGUNTA IN
NUMBER,PV_NOMBRE IN VARCHAR2,
PN_REGISTROSIN OUT NUMBER,
COD_RET IN OUTNUMBER,
MSG_RET IN OUTNUMBER) IS
ERROR EXCEPTION;SALIR EXCEPTION;BEGINBEGINSELECT COUNT(*)INTO PN_REGISTROSFROM CATEGORIA_PREGUNTAWHERE ID_CATEGORIA_PREGUNTA = NVL(PN_ID_CATEGORIA_PREGUNTA,
ID_CATEGORIA_PREGUNTA)AND NOMBRE LIKE NVL('%'||PV_NOMBRE||'%',NOMBRE);
EXCEPTIONWHEN NO_DATA_FOUND THEN
PN_REGISTROS := 0;WHEN OTHERS THEN
COD_RET := 1;MSG_RET := SUBSTR('ERROR AL CONTAR CATEGORIA_PREGUNTA
'||SQLERRM,1,300);RAISE ERROR;
END;
49
--EXCEPTION
WHEN ERROR THENMSG_RET := SUBSTR(MSG_RET||' Cod: '||cod_ret,1,300);
WHEN OTHERS THENCOD_RET := 2;MSG_RET := SUBSTR('ERROR NO CONTROLADO EN PROCEDIMIENTO
<PCK_EVALUACION.CUENTA_CATEGORIA_PREGUNTA>: '||SQLERRM,1,300);ROLLBACK;
END CUENTA_CATEGORIA_PREGUNTA;--
PROCEDURE CONSULTA_TIPO_EXAMEN(PN_ID_TIPO_EXAMEN IN NUMBER,PV_NOMBRE IN VARCHAR2,
INDICE INNUMBER,
O_CURSORIN OUT T_CURSOR,
COD_RETIN OUT NUMBER,
MSG_RETIN OUT NUMBER) IS
CURSOR DATOS ISSELECT ID_TIPO_EXAMEN,ROWNUM,ROWID,DESCRIPCION, USUARIO_INGRESA, FECHA_INGRESO,USUARIO_MODIFICA, FECHA_ULTIMA_MODIFICACIONFROM TIPO_EXAMENWHERE ID_TIPO_EXAMEN = NVL(PN_ID_TIPO_EXAMEN, ID_TIPO_EXAMEN)
AND DESCRIPCION LIKE NVL('%'||PV_NOMBRE||'%',DESCRIPCION);--
ERROR EXCEPTION;BEGIN
BEGINFOR REG IN DATOS LOOPIF REG.ROWNUM = INDICE THEN
OPEN O_CURSOR FORSELECT ID_TIPO_EXAMEN,DESCRIPCION, USUARIO_INGRESA, FECHA_INGRESO,USUARIO_MODIFICA, FECHA_ULTIMA_MODIFICACIONFROM TIPO_EXAMENWHERE ID_TIPO_EXAMEN = NVL(PN_ID_TIPO_EXAMEN,
ID_TIPO_EXAMEN)AND DESCRIPCION LIKE
NVL('%'||PV_NOMBRE||'%',DESCRIPCION)AND ROWID = REG.ROWID;
END IF;END LOOP;--
EXCEPTIONWHEN OTHERS THEN
COD_RET := 1;MSG_RET := SUBSTR('ERROR AL CONSULTAR TIPO_EXAMEN
'||SQLERRM,1,300);RAISE ERROR;
50
END;--
EXCEPTIONWHEN ERROR THEN
MSG_RET := SUBSTR(MSG_RET||' Cod: '||cod_ret,1,300);WHEN OTHERS THENCOD_RET := 2;MSG_RET := SUBSTR('ERROR NO CONTROLADO EN PROCEDIMIENTO
<PCK_EVALUACION.CONSULTA_TIPO_EXAMEN>: '||SQLERRM,1,300);ROLLBACK;
END CONSULTA_TIPO_EXAMEN;--PROCEDURE CUENTA_TIPO_EXAMEN(PN_ID_TIPO_EXAMEN IN NUMBER,
PV_NOMBRE IN VARCHAR2,PN_REGISTROS
IN OUT NUMBER,COD_RET IN OUT
NUMBER,MSG_RET IN OUT
NUMBER) ISERROR EXCEPTION;SALIR EXCEPTION;BEGINBEGINSELECT COUNT(*)INTO PN_REGISTROSFROM TIPO_EXAMENWHERE ID_TIPO_EXAMEN = NVL(PN_ID_TIPO_EXAMEN, ID_TIPO_EXAMEN)
AND DESCRIPCION LIKE NVL('%'||PV_NOMBRE||'%',DESCRIPCION);EXCEPTION
WHEN NO_DATA_FOUND THENPN_REGISTROS := 0;
WHEN OTHERS THENCOD_RET := 1;MSG_RET := SUBSTR('ERROR AL CONTAR TIPO_EXAMEN
'||SQLERRM,1,300);RAISE ERROR;
END;--
EXCEPTIONWHEN ERROR THEN
MSG_RET := SUBSTR(MSG_RET||' Cod: '||cod_ret,1,300);WHEN OTHERS THENCOD_RET := 2;MSG_RET := SUBSTR('ERROR NO CONTROLADO EN PROCEDIMIENTO
<PCK_EVALUACION.CUENTA_TIPO_EXAMEN>: '||SQLERRM,1,300);ROLLBACK;
END CUENTA_TIPO_EXAMEN;--PROCEDURE GET_EXAMEN_ALUMNO (PN_ID_PERIODO IN NUMBER,
PN_ID_USUARIO IN NUMBER,PN_REGISTROS IN OUT
NUMBER,
51
O_CURSOR IN OUTT_CURSOR,
COD_RET IN OUT NUMBER,MSG_RET IN OUT VARCHAR2)
ISERROR EXCEPTION;BEGIN--BEGIN
SELECT COUNT(*)INTO PN_REGISTROSFROM EXAMEN A, EXAMEN_ALUMNO B, USUARIO C,MATERIA D, PARALELO
E, ESTADO GWHERE A.ID_EXAMEN = B.ID_EXAMENAND B.ID_USUARIO = C.ID_USUARIOAND A.ID_MATERIA = D.ID_MATERIAAND A.ID_PARALELO = E.ID_PARALELOAND A.ID_PERIODO_LECTIVO = PN_ID_PERIODOAND B.ID_ESTADO = G.ID_ESTADOAND G.MODULO = 'EVALUACION'AND B.ID_USUARIO = PN_ID_USUARIOAND A.ID_TIPO_EXAMEN <> 5; -- OJO HAY QUE PARAMETRIZAR
EXCEPTIONWHEN OTHERS THEN
COD_RET := 3;MSG_RET := SUBSTR('ERROR AL BUSCAR EXAMENES ACTIVOS PARA
ALUMNO '||SQLERRM,1,300);RAISE ERROR;
END;
IF PN_REGISTROS >0 THENBEGIN
OPEN O_CURSOR FORSELECT A.ID_EXAMEN,D.DESCRIPCION
NOMBRE_MATERIA,E.DESCRIPCION NOMBRE_PARALELO,G.DESCRIPCION
ESTADO_EXAMEN,TO_CHAR(A.FECHA_INICIO,'DD/MM/YYYY HH24:MI:SS')FECHA_INICIO,
TO_CHAR(A.FECHA_FIN,'DD/MM/YYYY HH24:MI:SS')FECHA_FIN, H.DESCRIPCION TIPO, B.ID_SECUENCIA,B.TIEMPO_TRANSC
FROM EXAMEN A, EXAMEN_ALUMNO B, USUARIO C,MATERIAD, PARALELO E, ESTADO G, TIPO_EXAMEN H
WHERE A.ID_EXAMEN = B.ID_EXAMENAND B.ID_USUARIO = C.ID_USUARIOAND A.ID_MATERIA = D.ID_MATERIAAND A.ID_PARALELO = E.ID_PARALELOAND A.ID_PERIODO_LECTIVO = PN_ID_PERIODOAND B.ID_ESTADO = G.ID_ESTADOAND A.ID_TIPO_EXAMEN = H.ID_TIPO_EXAMENAND G.MODULO = 'EVALUACION'AND B.ID_USUARIO = PN_ID_USUARIOAND A.ID_TIPO_EXAMEN <> 5 -- OJO HAY QUE
PARANETRIZARORDER BY A.FECHA_FIN DESC;
52
EXCEPTIONWHEN OTHERS THEN
COD_RET := 1;MSG_RET := SUBSTR('ERROR AL BUSCAR EXAMENES ACTIVOS
PARA ALUMNO '||SQLERRM,1,300);RAISE ERROR;
END;--
END IF;EXCEPTION
WHEN ERROR THENMSG_RET := SUBSTR(MSG_RET||' Cod: '||cod_ret,1,300);
WHEN OTHERS THENCOD_RET := 2;MSG_RET := SUBSTR('ERROR NO CONTROLADO EN PROCEDIMIENTO
<PCK_EVALUACION.CUENTA_TIPO_EXAMEN>: '||SQLERRM,1,300);ROLLBACK;
END GET_EXAMEN_ALUMNO;--PROCEDURE GET_PREGUNTAS_EXAMEN (PN_ID_EXAMEN IN NUMBER,
PB_ALEATORIA IN BOOLEAN,PN_REGISTROS IN OUT
NUMBER,O_CURSOR IN OUT
T_CURSOR,COD_RET IN OUT
NUMBER,MSG_RET IN OUT
NUMBER) IS
ERROR EXCEPTION;BEGIN--IF PB_ALEATORIA = FALSE THEN
BEGINSELECT COUNT(*)INTO PN_REGISTROSFROM PREGUNTA_EXAMEN A, PREGUNTA B, TIPO_PREGUNTA C,
CATEGORIA_PREGUNTA DWHERE A.ID_PREGUNTA = B.ID_PREGUNTAAND B.ID_TIPO_PREGUNTA = C.ID_TIPO_PREGUNTAAND B.ID_CATEGORIA_PREGUNTA = D.ID_CATEGORIA_PREGUNTAAND A.ID_EXAMEN = PN_ID_EXAMEN;
EXCEPTIONWHEN OTHERS THEN
COD_RET := 2;MSG_RET := SUBSTR('ERROR AL OBTENER PREGUNTAS DE EXAMEN
'||PN_ID_EXAMEN||' '||SQLERRM,1,300);RAISE ERROR;
END;--IF PN_REGISTROS > 0 THEN
BEGINOPEN O_CURSOR FOR
53
SELECT A.ID_EXAMEN, B.ID_PREGUNTA, C.DESCRIPCIONTIPO, D.NOMBRE CATEGORIA, A.CALIFICACION, B.DESCRIPCION BREVE,NOMBRE_ARCHIVO, B.CANTIDAD_VALIDAS
FROM PREGUNTA_EXAMEN A, PREGUNTA B, TIPO_PREGUNTAC, CATEGORIA_PREGUNTA D
WHERE A.ID_PREGUNTA = B.ID_PREGUNTAAND B.ID_TIPO_PREGUNTA = C.ID_TIPO_PREGUNTAAND B.ID_CATEGORIA_PREGUNTA =
D.ID_CATEGORIA_PREGUNTAAND A.ID_EXAMEN = PN_ID_EXAMENORDER BY B.ID_PREGUNTA;
EXCEPTIONWHEN OTHERS THEN
COD_RET := 3;MSG_RET := SUBSTR('ERROR AL LLENAR CURSOR DE
PREGUNTAS DE EXAMEN '||PN_ID_EXAMEN||' '||SQLERRM,1,300);RAISE ERROR;
END;END IF;
ELSE--BEGIN
SELECT COUNT(*)INTO PN_REGISTROSFROM PREGUNTA_EXAMEN A, PREGUNTA B, TIPO_PREGUNTA C,
CATEGORIA_PREGUNTA DWHERE A.ID_PREGUNTA = B.ID_PREGUNTAAND B.ID_TIPO_PREGUNTA = C.ID_TIPO_PREGUNTAAND B.ID_CATEGORIA_PREGUNTA = D.ID_CATEGORIA_PREGUNTAAND A.ID_EXAMEN = PN_ID_EXAMEN;
EXCEPTIONWHEN OTHERS THEN
COD_RET := 2;MSG_RET := SUBSTR('ERROR AL OBTENER PREGUNTAS DE EXAMEN
'||PN_ID_EXAMEN||' '||SQLERRM,1,300);RAISE ERROR;
END;--IF PN_REGISTROS > 0 THEN
BEGINOPEN O_CURSOR FORSELECT A.ID_EXAMEN, B.ID_PREGUNTA, C.DESCRIPCION
TIPO, D.NOMBRE CATEGORIA, A.CALIFICACION, B.DESCRIPCION BREVE,NOMBRE_ARCHIVO, B.CANTIDAD_VALIDAS
FROM PREGUNTA_EXAMEN A, PREGUNTA B, TIPO_PREGUNTAC, CATEGORIA_PREGUNTA D
WHERE A.ID_PREGUNTA = B.ID_PREGUNTAAND B.ID_TIPO_PREGUNTA = C.ID_TIPO_PREGUNTAAND B.ID_CATEGORIA_PREGUNTA =
D.ID_CATEGORIA_PREGUNTAAND A.ID_EXAMEN = PN_ID_EXAMENORDER BY B.DESCRIPCION;
EXCEPTIONWHEN OTHERS THEN
54
COD_RET := 3;MSG_RET := SUBSTR('ERROR AL LLENAR CURSOR DE
PREGUNTAS DE EXAMEN '||PN_ID_EXAMEN||' '||SQLERRM,1,300);RAISE ERROR;
END;END IF;
END IF;EXCEPTION
WHEN ERROR THENMSG_RET := SUBSTR(MSG_RET||' Cod: '||cod_ret,1,300);
WHEN OTHERS THENCOD_RET := 10;MSG_RET := SUBSTR('ERROR NO CONTROLADO EN PROCEDIMIENTO
<PCK_EVALUACION.GET_PREGUNTAS_EXAMEN>: '||SQLERRM,1,300);ROLLBACK;
END;
PROCEDURE GET_DATOS_EXAMEN (PN_ID_EXAMEN IN NUMBER,O_CURSOR IN OUT T_CURSOR,
COD_RET IN OUT NUMBER,MSG_RET IN OUT NUMBER) IS
ERROR EXCEPTION;BEGIN
BEGINOPEN O_CURSOR FORSELECT *FROM EXAMENWHERE ID_EXAMEN = PN_ID_EXAMEN;
EXCEPTIONWHEN NO_DATA_FOUND THEN
COD_RET := 4;MSG_RET := SUBSTR('ERROR AL BUSCAR DATOS DE EXAMEN
'||PN_ID_EXAMEN||' '||SQLERRM,1,300);RAISE ERROR;
WHEN OTHERS THENCOD_RET := 3;MSG_RET := SUBSTR('ERROR AL LLENAR CURSOR DE
PREGUNTAS DE EXAMEN '||PN_ID_EXAMEN||' '||SQLERRM,1,300);RAISE ERROR;
END;EXCEPTION
WHEN ERROR THENMSG_RET := SUBSTR(MSG_RET||' Cod: '||cod_ret,1,300);
WHEN OTHERS THENCOD_RET := 10;MSG_RET := SUBSTR('ERROR NO CONTROLADO EN PROCEDIMIENTO
<PCK_EVALUACION.GET_DATOS_EXAMEN>: '||SQLERRM,1,300);ROLLBACK;
END GET_DATOS_EXAMEN;--
PROCEDURE ACTUALIZA_ESTADO_EXAMEN_ALUMNO(PN_ID_EXAMEN IN NUMBER,
PN_ID_USUARIO IN NUMBER,
55
PN_ID_SECUENCIA IN NUMBER,
PV_ESTADO IN VARCHAR2,
COD_RET IN OUT NUMBER,
MSG_RET IN OUT VARCHAR2) ISERROR EXCEPTION;VAR_ESTADO NUMBER(5):= NULL;VAR_OBSERVACION VARCHAR2(100);--BEGIN
--BEGINSELECT ID_ESTADOINTO VAR_ESTADOFROM ESTADOWHERE MODULO = 'EVALUACION'AND DESCRIPCION = PV_ESTADO;
EXCEPTIONWHEN NO_DATA_FOUND THEN
COD_RET := 1;MSG_RET := SUBSTR('ERROR, NO EXISTE CODIGO DE ESTADO
PARA '||PV_ESTADO||' CONSULTE CON SU DBA',1,300);RAISE ERROR;
WHEN OTHERS THENCOD_RET := 3;MSG_RET := SUBSTR('ERROR AL BUSCAR CODIGO DE ESTADO
PARA: '||PV_ESTADO||' '||SQLERRM,1,300);RAISE ERROR;
END;--IF PV_ESTADO = 'CR' THEN
VAR_OBSERVACION := 'EXAMEN_CREADO, '||TO_CHAR(SYSDATE);ELSIF PV_ESTADO = 'AU' THEN
VAR_OBSERVACION := 'EXAMEN_CREADO, '||TO_CHAR(SYSDATE);ELSIF PV_ESTADO = 'IN' THEN
VAR_OBSERVACION := 'EXAMEN_INICIADO, '||TO_CHAR(SYSDATE);ELSIF PV_ESTADO = 'BL' THEN
VAR_OBSERVACION := 'EXAMEN_BLOQUEADO, '||TO_CHAR(SYSDATE);ELSIF PV_ESTADO = 'FT' THEN
VAR_OBSERVACION := 'EXAMEN_FINALIZAO_POR_TIEMPO,'||TO_CHAR(SYSDATE);
ELSIF PV_ESTADO = 'FE' THENVAR_OBSERVACION := 'EXAMEN_FINALIZADO_VOLUNTARIO,
'||TO_CHAR(SYSDATE);ELSIF PV_ESTADO = 'FA' THEN
VAR_OBSERVACION := 'EXAMEN_FINALIZADO_ABRUPTO,'||TO_CHAR(SYSDATE);
END IF;--IF PV_ESTADO = 'IN' THEN -- INICIADO
BEGIN
56
UPDATE EXAMEN_ALUMNOSET ID_ESTADO = VAR_ESTADO,FECHA_INICIO = SYSDATE,OBSERVACION = VAR_OBSERVACIONWHERE ID_EXAMEN = PN_ID_EXAMENAND ID_USUARIO = PN_ID_USUARIOAND ID_SECUENCIA = PN_ID_SECUENCIA;
EXCEPTIONWHEN OTHERS THEN
COD_RET := 2;MSG_RET := SUBSTR('ERROR AL ACTUALIZAR <EXAMEN_ALUMNO>
'||SQLERRM,1,300);RAISE ERROR;
END;ELSIF PV_ESTADO IN('FT','FE','FA') THEN
BEGINUPDATE EXAMEN_ALUMNOSET ID_ESTADO = VAR_ESTADO,FECHA_TERMINA = SYSDATE,OBSERVACION = VAR_OBSERVACIONWHERE ID_EXAMEN = PN_ID_EXAMENAND ID_USUARIO = PN_ID_USUARIOAND ID_SECUENCIA = PN_ID_SECUENCIA;
EXCEPTIONWHEN OTHERS THEN
COD_RET := 2;MSG_RET := SUBSTR('ERROR AL ACTUALIZAR <EXAMEN_ALUMNO>
'||SQLERRM,1,300);RAISE ERROR;
END;ELSE
BEGINUPDATE EXAMEN_ALUMNOSET ID_ESTADO = VAR_ESTADO,OBSERVACION = VAR_OBSERVACIONWHERE ID_EXAMEN = PN_ID_EXAMENAND ID_USUARIO = PN_ID_USUARIOAND ID_SECUENCIA = PN_ID_SECUENCIA;
EXCEPTIONWHEN OTHERS THEN
COD_RET := 2;MSG_RET := SUBSTR('ERROR AL ACTUALIZAR <EXAMEN_ALUMNO>
'||SQLERRM,1,300);RAISE ERROR;
END;END IF;
--COMMIT;--
EXCEPTIONWHEN ERROR THEN
MSG_RET := SUBSTR(MSG_RET||' Cod: '||cod_ret,1,300);WHEN OTHERS THENCOD_RET := 10;
57
MSG_RET := SUBSTR('ERROR NO CONTROLADO EN PROCEDIMIENTO<PCK_EVALUACION.ACTUALIZA_ESTADO_EXAMEN_ALUMNO>: '||SQLERRM,1,300);
ROLLBACK;END;--
FUNCTION IS_EXAMEN_A_TIEMPO (PN_ID_EXAMEN IN NUMBER,COD_RET IN OUT NUMBER,MSG_RET IN OUT VARCHAR2)
RETURN BOOLEAN ISERROR EXCEPTION;VAR_FECHA_COMPARA DATE;
BEGINVAR_FECHA_COMPARA := NULL;
BEGINSELECT FECHA_FININTO VAR_FECHA_COMPARAFROM EXAMENWHERE ID_EXAMEN = PN_ID_EXAMEN;
EXCEPTIONWHEN OTHERS THEN
COD_RET := 1;MSG_RET := SUBSTR('ERROR EN
<PCK_EVALUACION.IS_EXAMEN_A_TIEMPO> AL BUSCRA FECHA FINAL DEEVALUACION '||SQLERRM,1,300);
RAISE ERROR;END;--
IF VAR_FECHA_COMPARA >= SYSDATE THENRETURN TRUE;
ELSERETURN FALSE;
END IF;EXCEPTION
WHEN ERROR THENMSG_RET := SUBSTR(MSG_RET||' Cod: '||cod_ret,1,300);RETURN FALSE;
WHEN OTHERS THENCOD_RET := 10;MSG_RET := SUBSTR('ERROR NO CONTROLADO EN PROCEDIMIENTO
<PCK_EVALUACION.ACTUALIZA_ESTADO_EXAMEN_ALUMNO>: '||SQLERRM,1,300);RETURN FALSE;END IS_EXAMEN_A_TIEMPO;----PROCEDURE GET_DATOS_EXAMEN_ALUMNO(PN_ID_EXAMEN IN NUMBER,
PN_ID_SECUENCIAIN NUMBER,
PN_ID_USUARIOIN NUMBER,
O_CURSOR IN OUT T_CURSOR,COD_RET IN OUT
NUMBER,MSG_RET IN OUT
NUMBER) IS
58
ERROR EXCEPTION;BEGIN
BEGINOPEN O_CURSOR FORSELECT ID_SECUENCIA, ID_EXAMEN,
ID_USUARIO,NOTA_TOTAL, FECHA_INICIO, FECHA_TERMINA,FECHA_PUBLICA,FECHA_VENCE,ID_ESTADO,
CONT_PENALIZA, SUMA_PENALIZA, NOTA_PARCIAL,OBSERVACION, NVL(TIEMPO_TRANSC,0) TIEMPO_TRANSC,PORCENTAJE_ACEPTADAS, ID_SOLICITUD
FROM EXAMEN_ALUMNOWHERE ID_EXAMEN = PN_ID_EXAMENAND ID_SECUENCIA = PN_ID_SECUENCIAAND ID_USUARIO = PN_ID_USUARIO;
EXCEPTIONWHEN NO_DATA_FOUND THEN
COD_RET := 4;MSG_RET := SUBSTR('ERROR AL BUSCAR DATOS DE EXAMEN
ALUMNO: EXAMEN: '||PN_ID_EXAMEN||' USUARIO: '||PN_ID_USUARIO||''||SQLERRM,1,300);
RAISE ERROR;WHEN OTHERS THEN
COD_RET := 3;MSG_RET := SUBSTR('ERROR AL LLENAR CURSOR DE
PREGUNTAS DE EXAMEN ALUMNO: EXAMEN: '||PN_ID_EXAMEN||' USUARIO:'||PN_ID_USUARIO||' '||SQLERRM,1,300);
RAISE ERROR;END;
EXCEPTIONWHEN ERROR THEN
MSG_RET := SUBSTR(MSG_RET||' Cod: '||cod_ret,1,300);WHEN OTHERS THENCOD_RET := 10;MSG_RET := SUBSTR('ERROR NO CONTROLADO EN PROCEDIMIENTO
<PCK_EVALUACION.GET_DATOS_EXAMEN_ALUMNO>: '||SQLERRM,1,300);ROLLBACK;END GET_DATOS_EXAMEN_ALUMNO;--PROCEDURE ACTUALIZA_TIEMPO_EXAMEN_ALUMNO(PN_ID_EXAMEN IN
NUMBER,
PN_ID_USUARIO IN NUMBER,
PN_ID_SECUENCIA IN NUMBER,
PN_TIEMPO IN NUMBER,COD_RET
IN OUT NUMBER,MSG_RET
IN OUT VARCHAR2)ISERROR EXCEPTION;BEGIN
BEGINUPDATE EXAMEN_ALUMNO
59
SET TIEMPO_TRANSC = PN_TIEMPOWHERE ID_EXAMEN = PN_ID_EXAMENAND ID_SECUENCIA = PN_ID_SECUENCIAAND ID_USUARIO = PN_ID_USUARIO;
EXCEPTIONWHEN OTHERS THEN
COD_RET := 1;MSG_RET := SUBSTR('Error al Actualizar tiempo en tabla
<EXAMEN_ALUMNO> '||sqlerrm,1,300);RAISE ERROR;
END;--+COMMIT;--
EXCEPTIONWHEN ERROR THEN
MSG_RET := SUBSTR(MSG_RET||' Cod: '||cod_ret,1,300);WHEN OTHERS THENCOD_RET := 10;MSG_RET := SUBSTR('ERROR NO CONTROLADO EN PROCEDIMIENTO
<PCK_EVALUACION.ACTUALIZA_TIEMPO_EXAMEN_ALUMNO>: '||SQLERRM,1,300);ROLLBACK;END ACTUALIZA_TIEMPO_EXAMEN_ALUMNO;
--FUNCTION IS_EXAMEN_ALUMNO_BLOQUEADO(PN_ID_EXAMEN IN NUMBER,
PN_ID_USUARIO IN NUMBER,
PN_ID_SECUENCIA IN NUMBER,COD_RET
IN OUT NUMBER,MSG_RET
IN OUT VARCHAR2) RETURN BOOLEAN ISERROR EXCEPTION;VAR_CUENTA NUMBER(1) := 0;BEGINBEGIN
SELECT COUNT(*)INTO VAR_CUENTAFROM EXAMEN_ALUMNO A, ESTADO BWHERE ID_EXAMEN = PN_ID_EXAMENAND ID_USUARIO = PN_ID_USUARIOAND ID_SECUENCIA = PN_ID_SECUENCIAAND A.ID_ESTADO = B.ID_ESTADOAND B.MODULO = 'EVALUACION'AND B.DESCRIPCION = 'BL';
EXCEPTIONWHEN OTHERS THEN
COD_RET := 1;MSG_RET := SUBSTR('ERROR AL ACCESAR A LA TABLA
<EXAMEN_ALUMNO> PARA VERIFICAR SI ESTA BLOQUEADO '||SQLERRM,1,300);RAISE ERROR;
END;--
60
IF VAR_CUENTA = 0 THENRETURN FALSE;
ELSERETURN TRUE;
END IF;--
EXCEPTIONWHEN ERROR THEN
MSG_RET := SUBSTR(MSG_RET||' Cod: '||cod_ret,1,300);RETURN FALSE;
WHEN OTHERS THENCOD_RET := 10;MSG_RET := SUBSTR('ERROR NO CONTROLADO EN PROCEDIMIENTO
<PCK_EVALUACION.IS_EXAMEN_ALUMNO_BLOQUEADO>: '||SQLERRM,1,300);RETURN FALSE;ROLLBACK;
END IS_EXAMEN_ALUMNO_BLOQUEADO;------FUNCTION IS_PREGUNTA_CONTESTADA (PN_ID_EXAMEN IN NUMBER,
PN_ID_PREGUNTA IN NUMBER,
PN_ID_SECUENCIA IN NUMBER,PN_ID_USUARIO
IN NUMBER,COD_RET IN
OUT NUMBER,MSG_RET IN
OUT VARCHAR2) RETURN BOOLEAN ISERROR EXCEPTION;
VAR_CUENTA NUMBER(1) := 0;BEGINBEGIN
SELECT COUNT(*)INTO VAR_CUENTAFROM RESPUESTA_EXAMENWHERE ID_EXAMEN = PN_ID_EXAMENAND ID_USUARIO = PN_ID_USUARIOAND ID_SECUENCIA = PN_ID_SECUENCIAAND ID_PREGUNTA = PN_ID_PREGUNTA;
EXCEPTIONWHEN OTHERS THEN
COD_RET := 1;MSG_RET := SUBSTR('ERROR AL ACCESAR A LA TABLA
<RESPUESTA_EXAMEN>'||SQLERRM,1,300);RAISE ERROR;
END;--IF VAR_CUENTA = 0 THEN
RETURN FALSE;ELSE
RETURN TRUE;
61
END IF;--
EXCEPTIONWHEN ERROR THEN
MSG_RET := SUBSTR(MSG_RET||' Cod: '||cod_ret,1,300);RETURN FALSE;
WHEN OTHERS THENCOD_RET := 10;MSG_RET := SUBSTR('ERROR NO CONTROLADO EN PROCEDIMIENTO
<PCK_EVALUACION.IS_PREGUNTA_CONTESTADA>: '||SQLERRM,1,300);RETURN FALSE;ROLLBACK;
END IS_PREGUNTA_CONTESTADA;------PROCEDURE GET_RESPUESTAS_PREGUNTA(PN_ID_PREGUNTA IN NUMBER,
O_CURSOR INOUT T_CURSOR,
COD_RET INOUT NUMBER,
MSG_RET INOUT NUMBER) IS
ERROR EXCEPTION;BEGIN
BEGINOPEN O_CURSOR FORSELECT
B.ID_RESPUESTA,B.ID_PREGUNTA,MARGEN_ERROR,B.CALIFICACION,RESPUESTA_CORRECTA,
RESPUESTA,A.DESCRIPCION NOMBRE_PREGUNTAFROM PREGUNTA A, RESPUESTA BWHERE A.ID_PREGUNTA = B.ID_PREGUNTAAND A.ID_PREGUNTA = PN_ID_PREGUNTA;
EXCEPTIONWHEN NO_DATA_FOUND THEN
COD_RET := 4;MSG_RET := SUBSTR('ERROR AL BUSCAR RESPUESTAS PARA
PREGUNTA: '||SQLERRM,1,300);RAISE ERROR;
WHEN OTHERS THENCOD_RET := 3;MSG_RET := SUBSTR('ERROR AL ACCESAR A TABLA
<RESPUESTA> AL LLENAR CURSOR DE RESPUESTAS DE PREGUNTAS'||SQLERRM,1,300);
RAISE ERROR;END;
EXCEPTIONWHEN ERROR THEN
MSG_RET := SUBSTR(MSG_RET||' Cod: '||cod_ret,1,300);WHEN OTHERS THENCOD_RET := 10;MSG_RET := SUBSTR('ERROR NO CONTROLADO EN PROCEDIMIENTO
<PCK_EVALUACION.GET_RESPUESTAS_PREGUNTA>: '||SQLERRM,1,300);
62
ROLLBACK;END GET_RESPUESTAS_PREGUNTA;--
FUNCTION GET_VALORACION_RESPUESTA(PN_ID_EXAMEN IN NUMBER,PN_ID_PREGUNTA IN
NUMBER,COD_RET IN OUT NUMBER,
MSG_RET IN OUTVARCHAR2)RETURN NUMBER IS
ERROR EXCEPTION;VAR_PUNTAJE NUMBER(5,2);VAR_VALORACION NUMBER(5,2);VAR_TIPO_PREGUNTA NUMBER(1) := 0;CUENTA_RESPUESTAS NUMBER;BEGIN
VAR_VALORACION := 0;VAR_PUNTAJE := 0;CUENTA_RESPUESTAS := 0;---- OBTENGO EL TIPO DE PREGUNTA--BEGIN
SELECT ID_TIPO_PREGUNTAINTO VAR_TIPO_PREGUNTAFROM PREGUNTAWHERE ID_PREGUNTA = PN_ID_PREGUNTA;
EXCEPTIONWHEN OTHERS THEN
COD_RET := 1;MSG_RET := SUBSTR('ERROR AL BUSCAR TIPO DE PREGUNTA
PARA PREGUNTA: '||PN_ID_PREGUNTA||SQLERRM,1,300);RAISE ERROR;
END;---- OBTENGO EL PUNTAJE DE LA PREGUNTA--BEGIN
SELECT CALIFICACIONINTO VAR_PUNTAJEFROM PREGUNTA_EXAMENWHERE ID_EXAMEN = PN_ID_EXAMENAND ID_PREGUNTA = PN_ID_PREGUNTA;
EXCEPTIONWHEN OTHERS THEN
COD_RET := 2;MSG_RET := SUBSTR('ERROR AL BUSCAR CALIFICACION PARA
PREGUNTA: '||PN_ID_PREGUNTA||' EN EXAMEN: '||PN_ID_EXAMEN||''||SQLERRM,1,300);
RAISE ERROR;END;--IF VAR_TIPO_PREGUNTA = 1 THEN -- RESPUESTA SINPLES
VAR_VALORACION := VAR_PUNTAJE;ELSE
63
IF VAR_TIPO_PREGUNTA = 3 THEN -- VERDADERO O FALSO TODASCADA PREGUNTA VALE EL PROPROCIONAL
BEGINSELECT COUNT(*)INTO CUENTA_RESPUESTASFROM RESPUESTAWHERE ID_PREGUNTA = PN_ID_PREGUNTA;
EXCEPTIONWHEN OTHERS THEN
COD_RET := 3;MSG_RET := SUBSTR('ERROR AL ACCESAR A LA
TABLA <RESPUESTA> '||SQLERRM,1,300);RAISE ERROR;
END;--
ELSE -- RESPUESTA MULTIPLE, CADA RESPUESTA CORRECTA TIENEUNA VALORACION
BEGINSELECT COUNT(*)INTO CUENTA_RESPUESTASFROM RESPUESTAWHERE ID_PREGUNTA = PN_ID_PREGUNTAAND RESPUESTA_CORRECTA = '1';
EXCEPTIONWHEN OTHERS THEN
COD_RET := 3;MSG_RET := SUBSTR('ERROR AL ACCESAR A LA
TABLA <RESPUESTA> '||SQLERRM,1,300);RAISE ERROR;
END;END IF;--VAR_VALORACION := (VAR_PUNTAJE/CUENTA_RESPUESTAS);--
END IF;--RETURN VAR_VALORACION;--
EXCEPTIONWHEN ERROR THEN
MSG_RET := SUBSTR(MSG_RET||' Cod: '||cod_ret,1,300);RETURN 0;
WHEN OTHERS THENCOD_RET := 10;MSG_RET := SUBSTR('ERROR NO CONTROLADO EN PROCEDIMIENTO
<PCK_EVALUACION.GET_VALORACION_RESPUESTA>: '||SQLERRM,1,300);RETURN 0;END GET_VALORACION_RESPUESTA;
----FUNCTION GET_CALIFICACION_RESPUESTA(PN_ID_RESPUESTA IN NUMBER,
PN_ID_PREGUNTA IN NUMBER,
64
PN_VALORACIONIN NUMBER,
PV_RESPUESTA_USUARIO IN VARCHAR2,COD_RET IN OUT
NUMBER,MSG_RET IN
OUT VARCHAR2)RETURN NUMBER ISERROR EXCEPTION;VAR_CALIFICACION NUMBER(5,2);VAR_RESPUESTA_PREGUNTA VARCHAR2(1);VAR_TIPO_PREGUNTA NUMBER(1) := 0;BEGIN
VAR_CALIFICACION := 0;---- OBTENGO EL TIPO DE PREGUNTA--BEGIN
SELECT ID_TIPO_PREGUNTAINTO VAR_TIPO_PREGUNTAFROM PREGUNTAWHERE ID_PREGUNTA = PN_ID_PREGUNTA;
EXCEPTIONWHEN OTHERS THEN
COD_RET := 1;MSG_RET := SUBSTR('ERROR AL BUSCAR TIPO DE PREGUNTA
PARA PREGUNTA: '||PN_ID_PREGUNTA||SQLERRM,1,300);RAISE ERROR;
END;--BEGIN
SELECT RESPUESTA_CORRECTAINTO VAR_RESPUESTA_PREGUNTAFROM RESPUESTAWHERE ID_RESPUESTA = PN_ID_RESPUESTA;
EXCEPTIONWHEN OTHERS THEN
COD_RET := 2;MSG_RET := SUBSTR('ERROR AL BUSCAR RESPUESTA CORRECTA
CODIGO DE RESPUESTA: '||PN_ID_RESPUESTA||' '||SQLERRM,1,300);RAISE ERROR;
END;
IF VAR_TIPO_PREGUNTA IN (1,2) THEN -- RESPUESTA SIMPLEORESPUESTA MULTIPLE
--VAR_CALIFICACION := TO_NUMBER(VAR_RESPUESTA_PREGUNTA) *
TO_NUMBER(PV_RESPUESTA_USUARIO) * PN_VALORACION;--ELSE -- VERDADERO O FALSO--
IF (VAR_RESPUESTA_PREGUNTA = PV_RESPUESTA_USUARIO) THEN-- ACERTO VERDADERO O CAETO FALSO
VAR_CALIFICACION := PN_VALORACION;
65
ELSEVAR_CALIFICACION := 0;
END IF;--END IF;
--RETURN VAR_CALIFICACION;--
EXCEPTIONWHEN ERROR THEN
MSG_RET := SUBSTR(MSG_RET||' Cod: '||cod_ret,1,300);RETURN 0;
WHEN OTHERS THENCOD_RET := 10;MSG_RET := SUBSTR('ERROR NO CONTROLADO EN PROCEDIMIENTO
<PCK_EVALUACION.GET_CALIFICACION_RESPUESTA>: '||SQLERRM,1,300);RETURN 0;END GET_CALIFICACION_RESPUESTA;----
PROCEDURE APLICA_VALOR_PENALIZACION (PN_ID_EXAMEN IN NUMBER,PN_ID_SECUENCIA IN NUMBER,
PN_ID_USUARIOIN NUMBER,
PN_ID_PREGUNTA IN NUMBER,
PN_CONTADOR_PENALIZACION IN OUT NUMBER,
PN_SUMA_PENALIZACION IN OUT NUMBER,COD_RET IN
OUT NUMBER,MSG_RET IN
OUT VARCHAR2) ISERROR EXCEPTION;PORCENTAJE_PENALIZACION PREGUNTA.FACTOR_PENALIZACION%TYPE;VALOR_PENALIZACION EXAMEN_ALUMNO.SUMA_PENALIZA%TYPE;BEGIN---- OBTENGO LOS VALORES DE PENALIZACIOBN ACTUAL PARA EL ALUMNO--
BEGINSELECT NVL(CONT_PENALIZA,0), NVL(SUMA_PENALIZA,0)INTO PN_CONTADOR_PENALIZACION, PN_SUMA_PENALIZACIONFROM EXAMEN_ALUMNOWHERE ID_EXAMEN = PN_ID_EXAMENAND ID_SECUENCIA = PN_ID_SECUENCIAAND ID_USUARIO = PN_ID_USUARIO;
EXCEPTIONWHEN OTHERS THEN
COD_RET := 1;
66
MSG_RET := SUBSTR('ERROR AL ACCESAR A LA TABLA<EXAMEN_ALUMNO> PARA OBTENER VALORES DE PENALIZACION'||SQLERRM,1,300);
RAISE ERROR;END;--
BEGINSELECT FACTOR_PENALIZACIONINTO PORCENTAJE_PENALIZACIONFROM PREGUNTAWHERE ID_PREGUNTA = PN_ID_PREGUNTA;
EXCEPTIONWHEN OTHERS THEN
COD_RET := 3;MSG_RET := SUBSTR('ERROR AL ACCESAR A LA TABLA
<PREGUNTA> PARA OBTENER FACTOR DE PENALIZACION '||SQLERRM,1,300);RAISE ERROR;
END;--PN_CONTADOR_PENALIZACION := PN_CONTADOR_PENALIZACION + 1; --
INCREMENTO EL CONT_PENALIZA--VALOR_PENALIZACION := PORCENTAJE_PENALIZACION;--PN_SUMA_PENALIZACION := PN_SUMA_PENALIZACION +
VALOR_PENALIZACION;--BEGIN
UPDATE EXAMEN_ALUMNOSET CONT_PENALIZA = PN_CONTADOR_PENALIZACION,SUMA_PENALIZA = PN_SUMA_PENALIZACIONWHERE ID_EXAMEN = PN_ID_EXAMENAND ID_SECUENCIA = PN_ID_SECUENCIAAND ID_USUARIO = PN_ID_USUARIO;
EXCEPTIONWHEN OTHERS THEN
COD_RET := 4;MSG_RET := SUBSTR('ERROR AL ACTUALIZAR FACTORES DE
PENALIZACION EN LA TABLA <EXAMEN_ALUMNO>: '||SQLERRM,1,300);RAISE ERROR;
END;--COMMIT;--
EXCEPTIONWHEN ERROR THEN
MSG_RET := SUBSTR(MSG_RET||' Cod: '||cod_ret,1,300);WHEN OTHERS THENCOD_RET := 10;MSG_RET := SUBSTR('ERROR NO CONTROLADO EN PROCEDIMIENTO
<PCK_EVALUACION.APLICA_VALOR_PENALIZACION>: '||SQLERRM,1,300);END APLICA_VALOR_PENALIZACION;--FUNCTION GET_RESPUESTA_EXAMEN (PN_ID_EXAMEN IN NUMBER,
67
PN_ID_SECUENCIA IN NUMBER,PN_ID_USUARIO
IN NUMBER,
PN_ID_RESPUESTA IN NUMBER,PN_ID_PREGUNTA
IN NUMBER,COD_RET IN OUT
NUMBER,MSG_RET IN OUT
VARCHAR2)RETURN VARCHAR2 ISERROR EXCEPTION;VAR_RESPUESTA RESPUESTA_EXAMEN.RESPUESTA%TYPE;BEGIN
BEGINSELECT RESPUESTAINTO VAR_RESPUESTAFROM RESPUESTA_EXAMENWHERE ID_EXAMEN = PN_ID_EXAMENAND ID_SECUENCIA= PN_ID_SECUENCIAAND ID_USUARIO = PN_ID_USUARIOAND ID_PREGUNTA = PN_ID_PREGUNTAAND ID_RESPUESTA = PN_ID_RESPUESTA;
EXCEPTIONWHEN NO_DATA_FOUND THEN
COD_RET := 1;MSG_RET := SUBSTR('Error, Respuesta para Pregunta
Contestada '||pn_id_pregunta||' Resp: '||pn_id_respuesta||' noexistente en la base... '||sqlerrm,1,300);
RAISE ERROR;WHEN OTHERS THEN
COD_RET := 1;MSG_RET := SUBSTR('Error no controlado al buscra
respuesta de pregunta .... '||pn_id_respuesta||' '||sqlerrm,1,300);RAISE ERROR;
END;--RETURN VAR_RESPUESTA;
EXCEPTIONWHEN ERROR THEN
MSG_RET := SUBSTR(MSG_RET||' Cod: '||cod_ret,1,300);RETURN '0';
WHEN OTHERS THENCOD_RET := 10;MSG_RET := SUBSTR('ERROR NO CONTROLADO EN PROCEDIMIENTO
<PCK_EVALUACION.GET_RESPUESTA_EXAMEN>: '||SQLERRM,1,300);RETURN '0';
END GET_RESPUESTA_EXAMEN;--PROCEDURE FINALIZAR_EVALUACION (PN_ID_EXAMEN IN NUMBER,
PN_ID_SECUENCIA INNUMBER,
68
PN_ID_USUARIO INNUMBER,
PV_TIPO_FINALIZACION IN VARCHAR2, --'TE','TF','TA'COD_RET IN OUT
NUMBER,MSG_RET IN OUT
VARCHAR2) ISERROR EXCEPTION;CALIFICACION_PARCIAL NUMBER(5,2);CALIFICACION_TOTAL NUMBER(5,2);CALIFICACION_PENA NUMBER(5,2);NOTA_EXAMEN NUMBER(5,2);V_PORCENTAJE_ACEPTADAS NUMBER(5,2);VAR_SOLICITUD EXAMEN_ALUMNO.ID_SOLICITUD%TYPE;BEGINCALIFICACION_PARCIAL := 0;CALIFICACION_TOTAL := 0;CALIFICACION_PENA := 0;NOTA_EXAMEN := 0;V_PORCENTAJE_ACEPTADAS := 0;---- OBTENGO CALIFICACION DEL EXAMEN--
BEGINSELECT SUM(NVL(NOTA_PARCIAL,0))INTO CALIFICACION_PARCIALFROM RESPUESTA_EXAMENWHERE ID_EXAMEN = PN_ID_EXAMENAND ID_SECUENCIA = PN_ID_SECUENCIAAND ID_USUARIO = PN_ID_USUARIO;
EXCEPTIONWHEN OTHERS THEN
COD_RET := 1;MSG_RET := SUBSTR('ERROR AL OBTENER CALIFICACION DEL
EXAMEN '||SQLERRM,1,300);RAISE ERROR;
END;---- OBTENGO EL VALOR DE LA PENALIZACION--
BEGINSELECT SUMA_PENALIZAINTO CALIFICACION_PENAFROM EXAMEN_ALUMNOWHERE ID_EXAMEN = PN_ID_EXAMENAND ID_SECUENCIA = PN_ID_SECUENCIAAND ID_USUARIO = PN_ID_USUARIO;
EXCEPTIONWHEN OTHERS THEN
COD_RET := 2;MSG_RET := SUBSTR('ERROR AL OBTENER PENALIZACION EN
<EXAMEN_ALUMNO> '||SQLERRM,1,300);RAISE ERROR;
69
END;---- OBTENGO LA NOTA DEL EXAMEN--
BEGINSELECT CALIFICACION_MAXIMAINTO NOTA_EXAMENFROM EXAMENWHERE ID_EXAMEN = PN_ID_EXAMEN;
EXCEPTIONWHEN OTHERS THEN
COD_RET := 3;MSG_RET := SUBSTR('ERROR AL OBTENER NOTA DE EXAMEN EN
TABLA <EXAMEN> '||SQLERRM,1,300);RAISE ERROR;
END;--CALIFICACION_TOTAL := NVL((CALIFICACION_PARCIAL -
CALIFICACION_PENA),0);V_PORCENTAJE_ACEPTADAS :=
(CALIFICACION_TOTAL/NOTA_EXAMEN)*100;---- ACTUALIZO EN LA TABLA EXAMEN ALUMNO--BEGIN
UPDATE EXAMEN_ALUMNOSET NOTA_PARCIAL = CALIFICACION_PARCIAL,NOTA_TOTAL = CALIFICACION_TOTAL,PORCENTAJE_ACEPTADAS = V_PORCENTAJE_ACEPTADAS,USUARIO_MODIFICA = PN_ID_USUARIO,FECHA_MODIFICA = SYSDATEWHERE ID_EXAMEN = PN_ID_EXAMENAND ID_SECUENCIA = PN_ID_SECUENCIAAND ID_USUARIO = PN_ID_USUARIO;
EXCEPTIONWHEN OTHERS THEN
COD_RET := 4;MSG_RET := SUBSTR('ERROR AL ACTUALIZAR CALIFICACION
<EXAMEN_ALUMNO> '||SQLERRM,1,300);RAISE ERROR;
END;---- ACTUALIZO EL ESTADO DEL EXAMEN--
PCK_EVALUACION.ACTUALIZA_ESTADO_EXAMEN_ALUMNO(PN_ID_EXAMEN,PN_ID_USUARIO,
PN_ID_SECUENCIA,PV_TIPO_FINALIZACION,
COD_RET, MSG_RET);--IF COD_RET <> 0 THEN
RAISE ERROR;
70
END IF;--BEGIN
SELECT ID_SOLICITUDINTO VAR_SOLICITUDFROM EXAMEN_ALUMNOWHERE ID_EXAMEN = PN_ID_EXAMENAND ID_SECUENCIA = PN_ID_SECUENCIAAND ID_USUARIO = PN_ID_USUARIO;
EXCEPTIONWHEN NO_DATA_FOUND THEN
VAR_SOLICITUD := NULL;WHEN OTHERS THEN
COD_RET := 13;MSG_RET := SUBSTR('ERROR AL BUSCAR SOLICITUD DE
GRACIA EN TABLA <EXAMEN_ALUMNO> '||SQLERRM,1,300);RAISE ERROR;
END;--IF VAR_SOLICITUD IS NOT NULL THEN
--
PCK_EVALUACION_INTERFACE.ACT_SOLICITUD_EXAMEN_GRACIA(VAR_SOLICITUD,COD_RET,MSG_RET);
--IF COD_RET <> 0 THEN
RAISE ERROR;END IF;--
END IF;--
COMMIT;--
EXCEPTIONWHEN ERROR THEN
MSG_RET := SUBSTR(MSG_RET||' Cod: '||cod_ret,1,300);WHEN OTHERS THENCOD_RET := 10;MSG_RET := SUBSTR('ERROR NO CONTROLADO EN PROCEDIMIENTO
<PCK_EVALUACION.FINALIZAR_EVALUACION>: '||SQLERRM,1,300);END FINALIZAR_EVALUACION;--PROCEDURE ENVIAR_INFORME_CORREO (PN_ID_EXAMEN IN NUMBER,
PN_ID_SECUENCIA INNUMBER,
PN_ID_USUARIO INNUMBER,
PV_PROFESOR INVARCHAR2,
PV_ALUMNO INVARCHAR2,
PV_PARCIAL INVARCHAR2,
71
PV_PARALELO INVARCHAR2,
PV_MATERIA INVARCHAR2,
PV_CORREO INVARCHAR2,
COD_RET IN OUTNUMBER,
MSG_RET IN OUTVARCHAR2) IS
--cursor datos is
select a.ID_EXAMEN, b.ID_PREGUNTA,substr(c.DESCRIPCION,1,50) QUESTION, b.CALIFICACION
from examen_alumno a, pregunta_examen b, pregunta cwhere a.ID_EXAMEN = b.ID_EXAMENand b.id_pregunta = c.id_preguntaand a.id_examen = PN_ID_EXAMENand a.id_secuencia = PN_ID_SECUENCIAand a.id_usuario = PN_ID_USUARIOorder by b.id_pregunta;
----
vs_msg varchar2(30000);vn_tot number;error_proceso exception;vs_error varchar2(400);vn_cont number;contador number;var_suma_pregunta number(5,2);var_porcentaje number(5,2);
beginvar_suma_pregunta := 0;var_porcentaje := 0;contador := 1;
begin--
--vs_msg := null;vs_msg := vs_msg || 'Estimado ' ||
initcap(PV_ALUMNO) || ', ' ;vs_msg := vs_msg || 'usted ha finalizado la
evaluación del '||pv_parcial||' de la materia:'||pv_materia||' eldía de hoy: ' || to_char( sysdate,'dd/mm/yyyy') || '.' || chr(13);
vs_msg := vs_msg || chr(13);vs_msg := vs_msg || 'Profesor:
'||pv_profesor||chr(13);vs_msg := vs_msg || 'Curso:
'||pv_paralelo||chr(13);vs_msg := vs_msg || 'Código de Examen:
'||to_char(pn_id_examen)||chr(13);
72
vs_msg := vs_msg || chr(13);vs_msg := vs_msg || chr(13);vs_msg := vs_msg || 'Resultado de su
Evaluación:'||chr(13);vs_msg := vs_msg || chr(13);vs_msg := vs_msg || chr(13);--for reg in datos loop
beginselect sum(nvl(nota_parcial,0))into var_suma_preguntafrom respuesta_examenwhere id_examen = pn_id_examenand id_secuencia = pn_id_secuenciaand id_usuario = pn_id_usuarioand id_pregunta = reg.id_pregunta;
exceptionwhen no_data_found then
var_suma_pregunta := 0;when others then
cod_ret := 11;msg_ret := substr('Error al buscar
respuesta de pregunta '||reg.id_pregunta||' para evaluacion:'||reg.id_examen||' '||sqlerrm,1,300);
raise error_proceso;end;--var_porcentaje := (var_suma_pregunta /
reg.calificacion) * 100;--vs_msg := vs_msg ||
'Pregunta:'||to_char(contador)|| reg.question ||' Valoración: '||to_char(reg.calificacion) ||' Porcentaje Acertada:'||var_porcentaje||' %'||chr(13);
contador := contador + 1;--
end loop;--vs_msg := vs_msg || 'Atte. Sistema de Evaluaciones
(Aula Virtual)' || chr(13);--
PCK_EVALUACION_INTERFACE.ENVIAR_CORREO('CarreraIngeniería en Sistemas',
pv_correo,
'Informe de Evaluación',
vs_msg,cod_ret,msg_ret);--
if cod_ret <> 0 then
73
raise error_proceso;end if;
dbms_lock.sleep(2);exception
when error_proceso thenraise error_proceso;
when others thencod_ret := 1;msg_ret := substr('Error al enviar correo a:
'||pv_correo||sqlerrm,1,300);raise error_proceso;
end;exceptionwhen error_proceso then
msg_ret := substr('Error en Proceso<ENVIAR_INFORME_CORREO>'||msg_ret,1,300);
when others thencod_ret := 2;msg_ret := substr('Error en Proceso
<ENVIAR_INFORME_CORREO> '||sqlerrm,1,300);raise error_proceso;
END ENVIAR_INFORME_CORREO;--
PROCEDURE GET_EXAMEN_PROFESOR (PN_ID_PERIODO IN NUMBER,PN_ID_USUARIO IN NUMBER,PN_REGISTROS IN OUT
NUMBER,O_CURSOR IN OUT
T_CURSOR,COD_RET IN OUT NUMBER,MSG_RET IN OUT VARCHAR2)
ISERROR EXCEPTION;BEGIN--BEGIN
SELECT COUNT(*)INTO PN_REGISTROSFROM EXAMEN A, EXAMEN_ALUMNO B, USUARIO C,MATERIA D, PARALELO
E, ESTADO GWHERE A.ID_EXAMEN = B.ID_EXAMENAND B.ID_USUARIO = C.ID_USUARIOAND A.ID_MATERIA = D.ID_MATERIAAND A.ID_PARALELO = E.ID_PARALELOAND A.ID_PERIODO_LECTIVO = PN_ID_PERIODOAND B.ID_ESTADO = G.ID_ESTADOAND G.MODULO = 'EVALUACION'AND B.ID_USUARIO = PN_ID_USUARIOAND A.ID_TIPO_EXAMEN = 5;
EXCEPTIONWHEN OTHERS THEN
COD_RET := 3;MSG_RET := SUBSTR('ERROR AL BUSCAR EVALUACIONES AL DOCENTE
PARA ALUMNOS PARA ALUMNO '||SQLERRM,1,300);
74
RAISE ERROR;END;
IF PN_REGISTROS >0 THENBEGIN
OPEN O_CURSOR FORSELECT A.ID_EXAMEN,D.DESCRIPCION
NOMBRE_MATERIA,E.DESCRIPCION NOMBRE_PARALELO,G.DESCRIPCION ESTADO_EXAMEN, H.DESCRIPCION TIPO,
B.ID_SECUENCIAFROM EXAMEN A, EXAMEN_ALUMNO B, USUARIO C,MATERIA
D, PARALELO E, ESTADO G, TIPO_EXAMEN HWHERE A.ID_EXAMEN = B.ID_EXAMENAND B.ID_USUARIO = C.ID_USUARIOAND A.ID_MATERIA = D.ID_MATERIAAND A.ID_PARALELO = E.ID_PARALELOAND A.ID_PERIODO_LECTIVO = PN_ID_PERIODOAND B.ID_ESTADO = G.ID_ESTADOAND A.ID_TIPO_EXAMEN = H.ID_TIPO_EXAMENAND G.MODULO = 'EVALUACION'AND B.ID_USUARIO = PN_ID_USUARIOAND A.ID_TIPO_EXAMEN = 5ORDER BY A.FECHA_FIN DESC;
EXCEPTIONWHEN OTHERS THEN
COD_RET := 1;MSG_RET := SUBSTR('ERROR AL BUSCAR EVALUACIONES A
DOCENTES PARA ALUMNO '||SQLERRM,1,300);RAISE ERROR;
END;--
END IF;EXCEPTION
WHEN ERROR THENMSG_RET := SUBSTR(MSG_RET||' Cod: '||cod_ret,1,300);
WHEN OTHERS THENCOD_RET := 2;MSG_RET := SUBSTR('ERROR NO CONTROLADO EN PROCEDIMIENTO
<PCK_EVALUACION.GET_EXAMEN_PROFESOR>: '||SQLERRM,1,300);ROLLBACK;
END GET_EXAMEN_PROFESOR;--PROCEDURE GET_RESPUESTAS_DOCENTES(PN_ID_EXAMEN IN NUMBER,
PN_ID_SECUENCIA IN NUMBER,PN_ID_USUARIO IN
NUMBER,PN_CONTADOR IN OUT NUMBER,
O_CURSOR IN OUTT_CURSOR,
COD_RET IN OUTNUMBER,
MSG_RET IN OUTVARCHAR2) IS
ERROR EXCEPTION;
75
VAR_ID_PREGUNTA PREGUNTA.ID_PREGUNTA%tYPE;BEGIN
BEGINSELECT COUNT(*)INTO PN_CONTADORFROM PREGUNTA A, RESPUESTA B, PREGUNTA_EXAMEN CWHERE A.ID_PREGUNTA = B.ID_PREGUNTAAND A.ID_PREGUNTA = C.ID_PREGUNTAAND C.ID_EXAMEN = PN_ID_EXAMENAND A.ID_PREGUNTA NOT IN(SELECT DISTINCT
ID_PREGUNTAFROM
RESPUESTA_EXAMENWHERE ID_EXAMEN =
PN_ID_EXAMENAND ID_SECUENCIA =
PN_ID_SECUENCIAAND ID_USUARIO =
PN_ID_USUARIO);EXCEPTION
WHEN NO_DATA_FOUND THENCOD_RET := 4;MSG_RET := SUBSTR('ERROR AL BUSCAR RESPUESTAS PARA
PREGUNTA: '||SQLERRM,1,300);RAISE ERROR;
WHEN OTHERS THENCOD_RET := 3;MSG_RET := SUBSTR('ERROR AL ACCESAR A TABLA
<RESPUESTA> AL LLENAR CURSOR DE RESPUESTAS DE PREGUNTAS'||SQLERRM,1,300);
RAISE ERROR;END;--IF PN_CONTADOR > 0 THEN--
BEGINSELECT MIN(DISTINCT A.ID_PREGUNTA)INTO VAR_ID_PREGUNTAFROM PREGUNTA A, RESPUESTA B, PREGUNTA_EXAMEN CWHERE A.ID_PREGUNTA = B.ID_PREGUNTAAND A.ID_PREGUNTA = C.ID_PREGUNTAAND C.ID_EXAMEN = PN_ID_EXAMENAND A.ID_PREGUNTA NOT IN(SELECT DISTINCT
ID_PREGUNTAFROM
RESPUESTA_EXAMENWHERE ID_EXAMEN =
PN_ID_EXAMENAND ID_SECUENCIA =
PN_ID_SECUENCIAAND ID_USUARIO =
PN_ID_USUARIO);EXCEPTION
WHEN OTHERS THEN
76
COD_RET := 5;MSG_RET := SUBSTR('ERROR AL BUSCAR PREGUNTAS
EN EVALUACION A DOCENTE :'||SQLERRM,1,300);RAISE ERROR;
END;--
BEGINOPEN O_CURSOR FORSELECT
B.ID_RESPUESTA,B.ID_PREGUNTA,MARGEN_ERROR,B.CALIFICACION,RESPUESTA_CORRECTA,
RESPUESTA,A.DESCRIPCION NOMBRE_PREGUNTAFROM PREGUNTA A, RESPUESTA BWHERE A.ID_PREGUNTA = B.ID_PREGUNTAAND A.ID_PREGUNTA = VAR_ID_PREGUNTA;
EXCEPTIONWHEN NO_DATA_FOUND THEN
COD_RET := 4;MSG_RET := SUBSTR('ERROR AL BUSCAR RESPUESTAS PARA
PREGUNTA: '||SQLERRM,1,300);RAISE ERROR;
WHEN OTHERS THENCOD_RET := 3;MSG_RET := SUBSTR('ERROR AL ACCESAR A TABLA
<RESPUESTA> AL LLENAR CURSOR DE RESPUESTAS DE PREGUNTAS'||SQLERRM,1,300);
RAISE ERROR;END;
END IF;EXCEPTION
WHEN ERROR THENMSG_RET := SUBSTR(MSG_RET||' Cod: '||cod_ret,1,300);
WHEN OTHERS THENCOD_RET := 10;MSG_RET := SUBSTR('ERROR NO CONTROLADO EN PROCEDIMIENTO
<PCK_EVALUACION.GET_RESPUESTAS_DOCENTES>: '||SQLERRM,1,300);ROLLBACK;
END GET_RESPUESTAS_DOCENTES;----PROCEDURE COPIA_EXAMEN (PN_ID_EXAMEN IN NUMBER,
PN_ID_USUARIO IN NUMBER,PN_ID_NEW_EXAMEN IN OUT NUMBER,COD_RET IN OUT NUMBER,MSG_RET IN OUT VARCHAR2) IS
--CURSOR DATOS_EXAMEN IS
SELECT * FROM EXAMEN WHERE ID_EXAMEN = PN_ID_EXAMEN;--CURSOR DATOS_PREGUNTAS IS
SELECT * FROM PREGUNTA_EXAMEN WHERE ID_EXAMEN = PN_ID_EXAMEN;
--ERROR EXCEPTION;
77
CUENTA_EXAMEN NUMBER;VAR_ESTADO ESTADO.ID_ESTADO%TYPE;IS_COPIO_PREGUNTAS BOOLEAN;--BEGIN
--CUENTA_EXAMEN := 0;VAR_ESTADO := NULL;IS_COPIO_PREGUNTAS := FALSE;--BEGIN
SELECT COUNT(*)INTO CUENTA_EXAMENFROM EXAMENWHERE ID_EXAMEN = PN_ID_EXAMEN;
EXCEPTIONWHEN OTHERS THEN
COD_RET := 1;MSG_RET := SUBSTR('ERROR AL OBTENER DATOS DESDE LA
TABLA EXAMEN PARA CODIGO: '||PN_ID_EXAMEN||' '||SQLERRM,1,300);RAISE ERROR;
END;--IF CUENTA_EXAMEN > 0 THEN---- OBTENGO NUEVO SECUENCIAL DE EXAMEN--
BEGINSELECT NVL(MAX(ID_EXAMEN),0) + 1INTO PN_ID_NEW_EXAMENFROM EXAMEN;
EXCEPTIONWHEN OTHERS THEN
COD_RET := 3;MSG_RET := SUBSTR('ERROR AL OBTENER
SECUENCIAL DE LA TABLA EXAMEN '||SQLERRM,1,300);RAISE ERROR;
END;--
---- OBTENGO EL VALOR DEL ESTADO BORRADOR--
BEGINSELECT ID_ESTADOINTO VAR_ESTADOFROM ESTADOWHERE DESCRIPCION = 'BR'AND MODULO = 'EVALUACION';
EXCEPTIONWHEN NO_DATA_FOUND THEN
COD_RET := 4;MSG_RET := SUBSTR('ERROR, NO EXISTE ESTADO
<BR> EN LA TABLA <ESTADO>',1,300);RAISE ERROR;
78
WHEN OTHERS THENCOD_RET := 5;MSG_RET := SUBSTR('ERROR,AL BUSCAR ESTADO <BR>
EN LA TABLA <ESTADO>',1,300);RAISE ERROR;
END;--
FOR REG IN DATOS_EXAMEN LOOP---- INSERTO EN LA TABLA EXAMEN--
BEGININSERT INTO EXAMEN (ID_EXAMEN, ID_TIPO_EXAMEN, INTRODUCCION,IS_PERMITE_ABRIR, IS_PERMITE_CERRAR,
FECHA_INICIO,FECHA_FIN, IS_LIMITE_TIEMPO, IS_HABILITA_TIEMPO,TIEMPO_PRIMERO_SEGUNDO, NUM_MAX_PREGUNTAS,
IS_PREGUNTA_ALEATORIA,IS_RESPUESTA_ALEATORIA, IS_APLICA_PENALIZACION,
IS_VENTANA_SEGURA,IS_REQUIERE_CONTRASENIA, CALIFICACION_MAXIMA,
ID_ESTADO,USUARIO_INGRESA, FECHA_INGRESO, ID_PARCIAL,
ID_PERIODO_LECTIVO,ID_PARALELO, ID_MATERIA, CONTRASENIA)VALUES (PN_ID_NEW_EXAMEN,REG.ID_TIPO_EXAMEN,
REG.INTRODUCCION,REG.IS_PERMITE_ABRIR,REG.IS_PERMITE_CERRAR,--
TO_CHAR(SYSDATE,'YYYY/MM/DD HH24:MI:SS'),REG.FECHA_INICIO, REG.FECHA_FIN,--TO_CHAR(SYSDATE,'YYYY/MM/DD HH24:MI:SS'),
REG.IS_LIMITE_TIEMPO,REG.IS_HABILITA_TIEMPO,REG.TIEMPO_PRIMERO_SEGUNDO,
REG.NUM_MAX_PREGUNTAS,REG.IS_PREGUNTA_ALEATORIA, REG.IS_RESPUESTA_ALEATORIA,
REG.IS_APLICA_PENALIZACION,REG.IS_VENTANA_SEGURA,REG.IS_REQUIERE_CONTRASENIA,
REG.CALIFICACION_MAXIMA,VAR_ESTADO,PN_ID_USUARIO,SYSDATE,NULL,REG.ID_PERIODO_LECTIVO,
NULL,NULL, NULL);EXCEPTION
WHEN OTHERS THENCOD_RET := 7;MSG_RET := SUBSTR('ERROR AL INSERTAR EN LA
TABLA <EXAMEN> '||SQLERRM,1,300);RAISE ERROR;
END;--COMMIT;--
END LOOP;
79
---- INSERTO LAS PREGUNTAS DEL EXAMEN--FOR REG1 IN DATOS_PREGUNTAS LOOP
--IS_COPIO_PREGUNTAS := TRUE;--BEGIN
INSERT INTO PREGUNTA_EXAMEN (ID_EXAMEN,ID_PREGUNTA, CALIFICACION, USUARIO_INGRESA, FECHA_INGRESO)
VALUES (PN_ID_NEW_EXAMEN, REG1.ID_PREGUNTA,REG1.CALIFICACION, PN_ID_USUARIO, SYSDATE);
EXCEPTIONWHEN OTHERS THEN
COD_RET := 8;MSG_RET := SUBSTR('ERROR AL INSERTAR EN LA
TABLA <PREGUNTA_EXAMEN> ID_EXAMEN= '||PN_ID_NEW_EXAMEN||''||SQLERRM,1,300);
RAISE ERROR;
END;
COMMIT;
END LOOP;--IF IS_COPIO_PREGUNTAS = FALSE THEN
COD_RET := 9;MSG_RET := SUBSTR('SE COPIO EXAMEN, SIN EMBARGO NO
SE COPIARON LAS PREGUNTAS PORQUE NO SE ENCONTRARON PREGUNTASASOCIADAS',1,300);
RAISE ERROR;END IF;
--ELSE -- NO EXISTE EXAMEN ORIGEN
COD_RET := 12;MSG_RET := 'ERROR, CODIGO DE EXAMEN NO EXISTE EN LA
TABLA <EXAMEN>';RAISE ERROR;
END IF;EXCEPTION
WHEN ERROR THENMSG_RET := SUBSTR(MSG_RET||' Cod: '||cod_ret,1,300);
WHEN OTHERS THENCOD_RET := 10;MSG_RET := SUBSTR('ERROR NO CONTROLADO EN PROCEDIMIENTO
<PCK_EVALUACION.GET_RESPUESTAS_DOCENTES>: '||SQLERRM,1,300);ROLLBACK;
END;END PCK_EVALUACION;
80
PAQUETE PCK_EVALUACION_01
CREATE OR REPLACE package body PCK_EVALUACION_01 as/********************************************************************************************
NOMBRE: pck_evaluacion_01PROYECTO: AULA VIRTUALMODULO: EVALUACIONES
REVISION: 05/03/2009AUTOR: GRUPO 5DESCRIPCION: CUERPO DEL PAQUETE QUE PERMITE LA
CONFIGURACION EXCLUSIVA DEL MANTENIMIENTODEL EXAMEN, PREGUNTA Y RESPUESTAS
********************************************************************************************/function SECUENCIA_EXAMEN return number is
lv_secuencia number;begin
SELECT NVL(MAX(id_examen),1000)+1INTO lv_secuenciaFROM examen;
return(lv_secuencia);end SECUENCIA_EXAMEN ;
function SECUENCIA_PREGUNTA return number islv_secuencia number;
beginSELECT NVL(MAX(id_pregunta),0)+1 INTO lv_secuencia
FROM pregunta;return(lv_secuencia);
end SECUENCIA_PREGUNTA ;
function SECUENCIA_RESPUESTA return number islv_secuencia number;
beginSELECT NVL(MAX(id_Respuesta),0)+1INTO lv_secuencia
FROM Respuesta;return(lv_secuencia);
end SECUENCIA_RESPUESTA ;
procedure INSERTAR_EXAMEN(pv_examen IN examen%ROWTYPE,Pn_secuenciaout number,Pv_error out varchar2,Pn_error out number)is
beginPv_error:=NULL;
Pn_error:=0;Pn_secuencia:=Secuencia_Examen;
insert into examen(ID_EXAMEN,id_tipo_examen,introduccion,is_permite_abrir,is_permite_cerrar,
81
fecha_inicio,fecha_fin,is_limite_tiempo,is_habilita_tiempo,tiempo_primero_segundo,num_max_preguntas,is_pregunta_aleatoria,is_respuesta_aleatoria,is_aplica_penalizacion,is_ventana_segura,calificacion_maxima,id_estado,usuario_ingresa,usuario_modifica,fecha_ultima_modificacion,is_requiere_contrasenia,fecha_ingreso,id_parcial,id_periodo_lectivo,id_paralelo,id_materia,contrasenia)values(Pn_secuencia,pv_examen.id_tipo_examen,pv_examen.introduccion,pv_examen.is_permite_abrir,pv_examen.is_permite_cerrar,pv_examen.fecha_inicio,pv_examen.fecha_fin,pv_examen.is_limite_tiempo,pv_examen.is_habilita_tiempo,pv_examen.tiempo_primero_segundo,pv_examen.num_max_preguntas,pv_examen.is_pregunta_aleatoria,pv_examen.is_respuesta_aleatoria,pv_examen.is_aplica_penalizacion,pv_examen.is_ventana_segura,pv_examen.calificacion_maxima,pv_examen.ID_ESTADO,pv_examen.usuario_ingresa,pv_examen.usuario_modifica,sysdate(),pv_examen.is_requiere_contrasenia,sysdate(),pv_examen.id_parcial,pv_examen.id_periodo_lectivo,pv_examen.id_paralelo,pv_examen.id_materia,pv_examen.contrasenia);COMMIT;
exceptionwhen dup_val_on_index then ---valores duplicados
82
Pv_error:='codigo ya existe';Pv_error:=sqlcode;
when others thenPv_error:='error en la insercion: '||sqlerrm;
Pv_error:=sqlcode;end INSERTAR_EXAMEN;
procedure ACTUALIZA_EXAMEN(pv_examen IN examen%ROWTYPE,Pv_error outvarchar2,Pn_error out number)is
beginPv_error:=NULL;
Pn_error:=0;
update examen setid_tipo_examen=pv_examen.id_tipo_examen,introduccion=pv_examen.introduccion,is_permite_abrir=pv_examen.is_permite_abrir,is_permite_cerrar=pv_examen.is_permite_cerrar,fecha_inicio=pv_examen.fecha_inicio,fecha_fin=pv_examen.fecha_fin,is_limite_tiempo=pv_examen.is_limite_tiempo,is_habilita_tiempo=pv_examen.is_habilita_tiempo,
tiempo_primero_segundo=pv_examen.tiempo_primero_segundo,num_max_preguntas=pv_examen.num_max_preguntas,
is_pregunta_aleatoria=pv_examen.is_pregunta_aleatoria,
is_respuesta_aleatoria=pv_examen.is_respuesta_aleatoria,
is_aplica_penalizacion=pv_examen.is_aplica_penalizacion,is_ventana_segura=pv_examen.is_ventana_segura,calificacion_maxima=pv_examen.calificacion_maxima,
is_requiere_contrasenia=pv_examen.is_requiere_contrasenia,id_estado=pv_examen.id_estado,CONTRASENIA=pv_examen.CONTRASENIA,ID_PARCIAL=pv_examen.Id_Parcial,ID_PERIODO_LECTIVO=pv_examen.ID_PERIODO_LECTIVO,ID_PARALELO=pv_examen.Id_Paralelo,ID_MATERIA=pv_examen.Id_Materia,usuario_modifica=pv_examen.usuario_modifica,fecha_ultima_modificacion=sysdate()
whereid_examen=pv_examen.id_examen;COMMIT;
exceptionwhen dup_val_on_index then ---valores duplicadosPv_error:='codigo ya existe';
Pv_error:=sqlcode;when others thenPv_error:='error en la insercion: '||sqlerrm;
Pv_error:=sqlcode;
83
end ACTUALIZA_EXAMEN;
procedure INSERTAR_PREGUNTA(pv_pregunta INpregunta%ROWTYPE,Pn_secuencia out number,Pv_error outvarchar2,Pn_error out number)is
beginPv_error:=NULL;Pn_error:=0;Pn_secuencia:=Secuencia_Pregunta;
insert into pregunta(id_pregunta,id_categoria_pregunta,id_tipo_pregunta,descripcion,calificacion,msg_general,factor_penalizacion,usuario_ingresa,usuario_modifica,fecha_ultima_modificacion,fecha_ingreso,nombre_archivo,cantidad_validas,BIN)values(Pn_secuencia,pv_pregunta.id_categoria_pregunta,pv_pregunta.id_tipo_pregunta,pv_pregunta.descripcion,pv_pregunta.calificacion,pv_pregunta.msg_general,pv_pregunta.factor_penalizacion,pv_pregunta.usuario_ingresa,pv_pregunta.usuario_modifica,sysdate(),sysdate(),pv_pregunta.nombre_archivo,pv_pregunta.cantidad_validas,NULL);
COMMIT;
exceptionwhen dup_val_on_index then ---valores duplicadosPv_error:='codigo ya existe';Pn_error:=sqlcode;when others thenPv_error:='error en la insercion: '||sqlerrm;Pn_error:=sqlcode;
end INSERTAR_PREGUNTA;
84
procedure ACTUALIZA_PREGUNTA(pv_pregunta IN pregunta%ROWTYPE,Pv_error out varchar2,Pn_error out number)is
beginPv_error:=NULL;Pn_error:=0;
update pregunta set
id_categoria_pregunta=pv_pregunta.id_categoria_pregunta,id_tipo_pregunta=pv_pregunta.id_tipo_pregunta,descripcion=pv_pregunta.descripcion,calificacion=pv_pregunta.calificacion,msg_general=pv_pregunta.msg_general,factor_penalizacion=pv_pregunta.factor_penalizacion,usuario_modifica=pv_pregunta.usuario_modifica,fecha_ultima_modificacion=sysdate(),cantidad_validas=pv_pregunta.cantidad_validas,NOMBRE_ARCHIVO=pv_pregunta.NOMBRE_ARCHIVOwhereid_pregunta=pv_pregunta.id_pregunta;COMMIT;
exceptionwhen dup_val_on_index then ---valores duplicadosPv_error:='codigo ya existe';Pn_error:=sqlcode;when others thenPv_error:='error en la insercion: '||sqlerrm;Pn_error:=sqlcode;
end ACTUALIZA_PREGUNTA;
procedure INSERTAR_RESPUESTA(pv_respuesta INrespuesta%ROWTYPE,Pn_secuencia out number,Pv_error outvarchar2,Pn_error out number)is
beginPv_error:=NULL;Pn_error:=0;Pn_secuencia:=Secuencia_Respuesta();
insert into Respuesta(id_respuesta,id_pregunta,respuesta,calificacion,margen_error,respuesta_correcta,usuario_ingresa,fecha_ingreso,usuario_modifica,fecha_ultima_modificacion)values(Pn_secuencia,pv_respuesta.id_pregunta,
85
pv_respuesta.respuesta,pv_respuesta.calificacion,pv_respuesta.margen_error,pv_respuesta.respuesta_correcta,pv_respuesta.usuario_ingresa,sysdate(),pv_respuesta.usuario_modifica,sysdate());COMMIT;
exceptionwhen dup_val_on_index then ---valores duplicadosPv_error:='codigo ya existe';Pn_error:=sqlcode;when others thenPv_error:='error en la insercion: '||sqlerrm;Pn_error:=sqlcode;
end INSERTAR_RESPUESTA;
procedure ACTUALIZA_RESPUESTA(pv_respuesta INrespuesta%ROWTYPE,Pv_error out varchar2,Pn_error out number)is
beginPv_error:=NULL;Pn_error:=0;
update respuesta setid_respuesta=pv_respuesta.id_respuesta,id_pregunta=pv_respuesta.id_pregunta,respuesta=pv_respuesta.respuesta,calificacion=pv_respuesta.calificacion,margen_error=pv_respuesta.margen_error,respuesta_correcta=pv_respuesta.respuesta_correcta,usuario_modifica=pv_respuesta.usuario_modifica,fecha_ultima_modificacion=sysdate()whereid_respuesta=pv_respuesta.id_respuesta;COMMIT;
exceptionwhen dup_val_on_index then ---valores duplicadosPv_error:='codigo ya existe';Pn_error:=sqlcode;when others thenPv_error:='error en la insercion: '||sqlerrm;Pn_error:=sqlcode;
end ACTUALIZA_RESPUESTA;
procedure INSERTAR_PREGUNTA_EXAMEN(pv_pregunta_examen INpregunta_examen%ROWTYPE,Pv_error out varchar2,Pn_error out number)is
beginPv_error:=NULL;Pn_error:=0;
insert into pregunta_examen(id_examen,id_pregunta,
86
calificacion,usuario_ingresa,fecha_ingreso,usuario_modifica,fecha_ultima_modificacion)values(pv_pregunta_examen.id_examen,pv_pregunta_examen.id_pregunta,pv_pregunta_examen.calificacion,pv_pregunta_examen.usuario_ingresa,sysdate(),pv_pregunta_examen.usuario_modifica,sysdate());COMMIT;
exceptionwhen dup_val_on_index then ---valores duplicadosPv_error:='codigo ya existe';Pv_error:=sqlcode;when others thenPv_error:='error en la insercion: '||sqlerrm;Pv_error:=sqlcode;
end INSERTAR_PREGUNTA_EXAMEN;
procedure ACTUALIZA_PREGUNTA_EXAMEN(pv_pregunta_examen INpregunta_examen%ROWTYPE,Pv_error out varchar2,Pn_error out number)is
beginPv_error:=NULL;Pn_error:=0;
update pregunta_Examen setid_examen=pv_pregunta_examen.id_examen,id_pregunta=pv_pregunta_examen.id_pregunta,calificacion=pv_pregunta_examen.calificacion,
usuario_modifica=pv_pregunta_examen.usuario_modifica,fecha_ultima_modificacion=sysdate()whereid_examen=pv_pregunta_examen.id_examenand id_pregunta=pv_pregunta_examen.id_pregunta;COMMIT;
exceptionwhen dup_val_on_index then ---valores duplicadosPv_error:='codigo ya existe';Pn_error:=sqlcode;when others thenPv_error:='error en la insercion: '||sqlerrm;Pn_error:=sqlcode;
end ACTUALIZA_PREGUNTA_EXAMEN;
87
procedure ELIMINA_PREGUNTA_EXAMEN(Pn_criterio in number,Pv_errorout varchar2)is
beginPv_error:=NULL;DELETE pregunta_examen WHERE
id_pregunta=Pn_criterio;COMMIT;
exceptionwhen dup_val_on_index then ---valores duplicadosPv_error:='codigo ya existe';when others thenPv_error:='error en la insercion: '||sqlerrm;
end ELIMINA_PREGUNTA_EXAMEN;
FUNCTION SELECCIONA_EXAMEN(Pn_criterio IN NUMBER,Pv_error outvarchar2,Pn_error out number) RETURN examen%ROWTYPE is
v_examen examen%rowtype;begin
Pv_error:=NULL;Pn_error:=0;
selectid_examen,id_tipo_examen,introduccion,is_permite_abrir,is_permite_cerrar,fecha_inicio,fecha_fin,is_limite_tiempo,is_habilita_tiempo,tiempo_primero_segundo,num_max_preguntas,is_pregunta_aleatoria,is_respuesta_aleatoria,is_aplica_penalizacion,is_ventana_segura,is_requiere_contrasenia,calificacion_maxima,id_estado,usuario_ingresa,usuario_modifica,fecha_ultima_modificacion,fecha_ingreso,id_parcial,id_periodo_lectivo,id_paralelo,id_materia,contrasenia
into v_examenfrom examenwhere id_examen=Pn_criterio;return v_examen;
88
exceptionWHEN NO_DATA_FOUND THENPv_error:='NO EXISTEN EVALUACION CON ESE CODIGO';Pn_error:=sqlcode;when others thenPv_error:='ERROR AL BUSCAR LA EVALUACION: '||sqlerrm;Pn_error:=sqlcode;
return v_examen;end SELECCIONA_EXAMEN;
FUNCTION SELECCIONA_PREGUNTA(Pn_codigo number,Pn_categorianumber,Pv_error out varchar2,Pn_error out number)RETURNPREGUNTA%ROWTYPE IS
v_pregunta pregunta%rowtype;begin
Pv_error:=NULL;Pn_error:=0;
if Pn_codigo is not null then --buscar x codigoselect
id_pregunta,id_categoria_pregunta,id_tipo_pregunta,descripcion,calificacion,msg_general,factor_penalizacion,usuario_ingresa,usuario_modifica,fecha_ultima_modificacion,fecha_ingreso,nombre_archivo,cantidad_validas,BIN
into v_preguntafrom preguntawhere id_pregunta=Pn_codigo;
ELSEif Pn_categoria is not null then --buscar por categoriaselect
id_pregunta,id_categoria_pregunta,id_tipo_pregunta,descripcion,calificacion,msg_general,factor_penalizacion,usuario_ingresa,usuario_modifica,fecha_ultima_modificacion,fecha_ingreso,
89
nombre_archivo,cantidad_validas,BIN
into v_preguntafrom preguntawhere id_categoria_pregunta=Pn_categoria;
END IF;END IF;
return v_pregunta;
exceptionWHEN NO_DATA_FOUND THENPv_error:='NO EXISTEN PREGUNTA CON ESE CODIGO';Pn_error:=sqlcode;when others thenPv_error:='ERROR AL BUSCAR PREGUNTA: '||sqlerrm;Pn_error:=sqlcode;
return v_pregunta;end SELECCIONA_PREGUNTA;
FUNCTION SELECCIONA_RESPUESTA(Pn_criterio IN NUMBER,Pv_error outvarchar2,Pn_error out number) RETURN Respuesta%ROWTYPE is
v_respuesta respuesta%rowtype;begin
Pv_error:=NULL;PN_error:=0;
selectid_respuesta,id_pregunta,respuesta,calificacion,margen_error,respuesta_correcta,usuario_ingresa,usuario_modifica,fecha_ultima_modificacion,fecha_ingreso
into v_respuestafrom respuestawhere id_respuesta=Pn_criterio;
return v_respuesta;
exceptionWHEN NO_DATA_FOUND THENPv_error:='NO EXISTEN FACTURA CON ESE CODIGO';Pn_error:=sqlcode;when others thenPv_error:='ERROR AL BUSCAR FACTURA: '||sqlerrm;Pn_error:=sqlcode;
90
return v_respuesta;end SELECCIONA_RESPUESTA;
procedure INSERTAR_EXAMEN_ALUMNO(pv_examen_alumno INexamen_alumno%ROWTYPE,Pv_error out varchar2,Pn_error out number) is
beginPv_error:=NULL;Pn_error:=0;
insert into examen_alumno(id_secuencia,id_examen,id_usuario,porcentaje_aceptadas,nota_total,fecha_inicio,fecha_termina,fecha_publica,fecha_vence,id_estado,usuario_ingresa,usuario_modifica,fecha_modifica,fecha_ingreso,cont_penaliza,suma_penaliza,nota_parcial,observacion,id_solicitud,tiempo_transc)values(pv_examen_alumno.id_secuencia,pv_examen_alumno.id_examen,pv_examen_alumno.id_usuario,pv_examen_alumno.porcentaje_aceptadas,pv_examen_alumno.nota_total,pv_examen_alumno.fecha_inicio,pv_examen_alumno.fecha_termina,pv_examen_alumno.fecha_publica,pv_examen_alumno.fecha_vence,pv_examen_alumno.id_estado,pv_examen_alumno.usuario_ingresa,pv_examen_alumno.usuario_modifica,pv_examen_alumno.fecha_modifica,sysdate(),pv_examen_alumno.cont_penaliza,pv_examen_alumno.suma_penaliza,pv_examen_alumno.nota_parcial,pv_examen_alumno.observacion,pv_examen_alumno.id_solicitud,pv_examen_alumno.tiempo_transc
91
);COMMIT;
exceptionwhen dup_val_on_index then ---valores duplicadosPv_error:='codigo ya existe';Pn_error:=sqlcode;when others thenPv_error:='error en la insercion: '||sqlerrm;Pn_error:=sqlcode;
end INSERTAR_EXAMEN_ALUMNO;
procedure CUENTA_PREGUNTA_(Pn_codigo number,Pn_categorianumber,Pn_contador out number ,Pv_error out varchar2,Pn_error outnumber)is
beginPv_error:=NULL;Pn_error:=0;
if Pn_codigo is not null then --buscar x codigoselect count(id_pregunta) into Pn_contador from preguntawhere id_pregunta=Pn_codigo;
elseif Pn_categoria is not null then --buscar por categoria
select count(id_pregunta) into Pn_contador from preguntawhere id_categoria_pregunta=Pn_categoria;
end if;end if;
exceptionWHEN NO_DATA_FOUND THENPv_error:='NO EXISTEN PREGUNTA CON ESE CODIGO';Pn_error:=sqlcode;when others thenPv_error:='ERROR AL BUSCAR PREGUNTA: '||sqlerrm;Pn_error:=sqlcode;
end CUENTA_PREGUNTA_;
procedure ELIMINA_PREGUNTA_EXAMEN(Pn_EXAMEN number,Pn_PREGUNTAnumber,Pv_error out varchar2,Pn_error out number) ISBEGIN
Pv_error:=NULL;Pn_error:=0;
-- if Pn_EXAMEN is not null AND Pn_PREGUNTA is not null then --ELIMINA x codigo
DELETE pregunta_examen where id_examen=Pn_EXAMENAND id_pregunta=Pn_PREGUNTA;
-- end if;
exception
92
WHEN NO_DATA_FOUND THENPv_error:='NO EXISTEN PREGUNTA CON ESE CODIGO';Pn_error:=sqlcode;when others thenPv_error:='ERROR AL BUSCAR PREGUNTA: '||sqlerrm;Pn_error:=sqlcode;
END ELIMINA_PREGUNTA_EXAMEN;
FUNCTION EXISTE_PREGUNTA_EXAMEN(Pn_id_examen INNUMBER,Pn_id_pregunta IN NUMBER,Pv_error out varchar2,Pn_error outnumber) RETURN NUMBER is
v_PREGUNTA_EXAMEN PREGUNTA_EXAMEN%rowtype;begin
Pv_error:=NULL;PN_error:=0;
selectid_examen,id_pregunta,usuario_ingresa,fecha_ingreso,usuario_modifica,fecha_ultima_modificacion,calificacion
into v_PREGUNTA_EXAMENfrom PREGUNTA_EXAMENwhere id_examen=Pn_id_examenAND id_pregunta=Pn_id_pregunta;
return 1;
exceptionWHEN NO_DATA_FOUND THENPv_error:='NO EXISTE REGISTRO CON ESE CODIGO';Pn_error:=sqlcode;return 0;when others thenPv_error:='ERROR AL BUSCAR EL REGISTRO: '||sqlerrm;Pn_error:=sqlcode;return -1;
END EXISTE_PREGUNTA_EXAMEN;
procedure ACTUALIZA_FECHA_EXAMEN_ALUMNO(pv_examen_alumno INexamen_alumno%ROWTYPE,Pv_error out varchar2,Pn_error out number)isbegin
Pv_error:=NULL;Pn_error:=0;
update examen_alumno setfecha_publica=pv_examen_alumno.fecha_publica,fecha_vence=pv_examen_alumno.fecha_vence,
93
usuario_modifica=pv_examen_alumno.usuario_modifica,fecha_modifica=sysdate()whereid_examen=pv_examen_alumno.id_examenand id_usuario=pv_examen_alumno.id_usuarioand id_secuencia=pv_examen_alumno.id_secuencia;COMMIT;
exceptionwhen dup_val_on_index then ---valores duplicadosPv_error:='codigo ya existe';Pn_error:=sqlcode;when others thenPv_error:='error en la insercion: '||sqlerrm;Pn_error:=sqlcode;
END ACTUALIZA_FECHA_EXAMEN_ALUMNO;
procedure ACTUALIZA_ESTADO_EXAMEN_ALUMNO(pv_examen_alumno INexamen_alumno%ROWTYPE,Pv_error out varchar2,Pn_error out number)isbegin
Pv_error:=NULL;Pn_error:=0;
update examen_alumno setid_estado=pv_examen_alumno.id_estado,usuario_modifica=pv_examen_alumno.usuario_modifica,fecha_modifica=sysdate()whereid_examen=pv_examen_alumno.id_examenand id_usuario=pv_examen_alumno.id_usuarioand id_secuencia=pv_examen_alumno.id_secuencia;COMMIT;
exceptionwhen dup_val_on_index then ---valores duplicadosPv_error:='codigo ya existe';Pn_error:=sqlcode;when others thenPv_error:='error en la insercion: '||sqlerrm;Pn_error:=sqlcode;
END ACTUALIZA_ESTADO_EXAMEN_ALUMNO;
PROCEDURE CONSULTA_PREGUNTA(PN_ID_PREGUNTA IN NUMBER,INDICE IN NUMBER,O_CURSOR IN OUT T_CURSOR,COD_RET IN OUT NUMBER,MSG_RET IN OUT NUMBER) IS
ERROR EXCEPTION;--CURSOR DATOS IS
94
SELECT ROWNUM,ROWID, ID_PREGUNTA,ID_CATEGORIA_PREGUNTA, ID_TIPO_PREGUNTA, DESCRIPCION,
CALIFICACION, MSG_GENERAL,FACTOR_PENALIZACION, NOMBRE_ARCHIVO,CANTIDAD_VALIDASFROM PREGUNTAWHERE ID_PREGUNTA = NVL(PN_ID_PREGUNTA, ID_PREGUNTA);
--AND DESCRIPCION LIKE NVL('%'||PV_NOMBRE||'%',DESCRIPCION);
BEGINBEGINFOR REG IN DATOS LOOP
IF REG.ROWNUM = INDICE THENOPEN O_CURSOR FORSELECT ID_PREGUNTA,
ID_CATEGORIA_PREGUNTA, ID_TIPO_PREGUNTA, DESCRIPCION,CALIFICACION, MSG_GENERAL,
FACTOR_PENALIZACION, NOMBRE_ARCHIVO,CANTIDAD_VALIDASFROM PREGUNTAWHERE ID_PREGUNTA = NVL(PN_ID_PREGUNTA,
ID_PREGUNTA)-- AND DESCRIPCION LIKE
NVL('%'||PV_NOMBRE||'%',DESCRIPCION)AND ROWID = REG.ROWID;--EXIT;
END IF;END LOOP;--
--AND ROWNUM = INDICE;EXCEPTION
WHEN OTHERS THENCOD_RET := 1;MSG_RET := SUBSTR('ERROR AL CONSULTAR PREGUNTA
'||SQLERRM,1,300);RAISE ERROR;
END;--
EXCEPTIONWHEN ERROR THEN
MSG_RET := SUBSTR(MSG_RET||' Cod: '||cod_ret,1,300);WHEN OTHERS THENCOD_RET := 2;MSG_RET := SUBSTR('ERROR NO CONTROLADO EN PROCEDIMIENTO
<PCK_EVALUACION_01.CONSULTA_PREGUNTA>: '||SQLERRM,1,300);ROLLBACK;
END CONSULTA_PREGUNTA;
PROCEDURE ELIMINA_PREGUNTA(LN_ID_PREGUNTA IN NUMBER,COD_RET IN
OUT NUMBER,MSG_RET IN
OUT VARCHAR2) ISERROR EXCEPTION;
95
LN_CONTADOR NUMBER := 0;BEGIN--BEGIN
SELECT COUNT(*)INTO LN_CONTADORFROM PREGUNTAWHERE ID_CATEGORIA_PREGUNTA = LN_ID_PREGUNTA;
EXCEPTIONWHEN OTHERS THEN
COD_RET := 4;MSG_RET := SUBSTR('ERROR AL BUSCAR PREGUNTA EN TABLA
<PREGUNTA> '||SQLERRM,1,300);RAISE ERROR;
END;--
IF LN_CONTADOR = 0 THEN -- ELIMINAMOS DE LA TABLABEGIN
DELETE PREGUNTAWHERE ID_PREGUNTA = LN_ID_PREGUNTA;
EXCEPTIONWHEN OTHERS THEN
COD_RET := 1;MSG_RET := SUBSTR('ERROR AL ELIMINAR PREGUNTA CODIGO:
'||LN_ID_PREGUNTA||' '||SQLERRM,1,300);RAISE ERROR;
END;ELSECOD_RET := 5;MSG_RET := 'NO SE PUEDE ELIMINAR PREGUNTA PORQUE EXISTEN
REGISTROS ASOCIADOS A PREGUNTAS ';END IF;--COMMIT;--EXCEPTION
WHEN ERROR THENMSG_RET := SUBSTR(MSG_RET||' Cod: '||cod_ret,1,300);
WHEN OTHERS THENCOD_RET := 2;MSG_RET := SUBSTR('ERROR NO CONTROLADO EN PROCEDIMIENTO
<PCK_EVALUACION_01.ELIMINA_PREGUNTA>: '||SQLERRM,1,300);ROLLBACK;
END ELIMINA_PREGUNTA;
PROCEDURE CUENTA_PREGUNTA(PN_ID_PREGUNTA IN NUMBER,PN_REGISTROS
IN OUT NUMBER,COD_RET IN OUT
NUMBER,MSG_RET IN OUT
NUMBER) IS
96
ERROR EXCEPTION;SALIR EXCEPTION;BEGINBEGINSELECT COUNT(*)INTO PN_REGISTROSFROM PREGUNTAWHERE ID_PREGUNTA = NVL(PN_ID_PREGUNTA, ID_PREGUNTA);
-- AND DESCRIPCION LIKE NVL('%'||PV_NOMBRE||'%',DESCRIPCION );EXCEPTION
WHEN NO_DATA_FOUND THENPN_REGISTROS := 0;
WHEN OTHERS THENCOD_RET := 1;MSG_RET := SUBSTR('ERROR AL CONTAR PREGUNTA
'||SQLERRM,1,300);RAISE ERROR;
END;--
EXCEPTIONWHEN ERROR THEN
MSG_RET := SUBSTR(MSG_RET||' Cod: '||cod_ret,1,300);WHEN OTHERS THENCOD_RET := 2;MSG_RET := SUBSTR('ERROR NO CONTROLADO EN PROCEDIMIENTO
<PCK_EVALUACION_01.CUENTA_PREGUNTA>: '||SQLERRM,1,300);ROLLBACK;
END CUENTA_PREGUNTA;
PROCEDURE ELIMINA_EXAMEN(LN_ID_EXAMEN IN NUMBER,COD_RET IN
OUT NUMBER,MSG_RET IN
OUT VARCHAR2) ISERROR EXCEPTION;LN_CONTADOR NUMBER := 0;LN_CONTADOR2 NUMBER := 0;BEGIN--BEGIN --BUSCAR REGISTROS ASOCIADOS EN TABLA PREGUNTA_EXAMEN
SELECT COUNT(*)INTO LN_CONTADORFROM PREGUNTA_EXAMENWHERE ID_EXAMEN= LN_ID_EXAMEN;
EXCEPTIONWHEN OTHERS THEN
COD_RET := 4;MSG_RET := SUBSTR('ERROR AL BUSCAR EXAMEN EN TABLA <EXAMEN>
'||SQLERRM,1,300);RAISE ERROR;
END;--BEGIN --BUSCAR REGISTROS ASOCIADOS EN TABLA EXAMEN_ALUMNO
97
SELECT COUNT(*)INTO LN_CONTADOR2FROM EXAMEN_ALUMNOWHERE ID_EXAMEN= LN_ID_EXAMEN;
EXCEPTIONWHEN OTHERS THEN
COD_RET := 4;MSG_RET := SUBSTR('ERROR AL BUSCAR EXAMEN EN TABLA <EXAMEN>
'||SQLERRM,1,300);RAISE ERROR;
END;--
IF LN_CONTADOR = 0 AND LN_CONTADOR2 = 0 THEN -- ELIMINAMOS DE LATABLA
BEGINDELETE EXAMENWHERE ID_EXAMEN= LN_ID_EXAMEN;
EXCEPTIONWHEN OTHERS THEN
COD_RET := 1;MSG_RET := SUBSTR('ERROR AL ELIMINAR EXAMEN CODIGO:
'||LN_ID_EXAMEN||' '||SQLERRM,1,300);RAISE ERROR;
END;ELSECOD_RET := 5;MSG_RET := 'NO SE PUEDE ELIMINAR LA EVALUACION PORQUE EXISTEN
REGISTROS ASOCIADOS A ESTE';END IF;--COMMIT;--EXCEPTION
WHEN ERROR THENMSG_RET := SUBSTR(MSG_RET||' Cod: '||cod_ret,1,300);
WHEN OTHERS THENCOD_RET := 2;MSG_RET := SUBSTR('ERROR NO CONTROLADO EN PROCEDIMIENTO
<PCK_EVALUACION_01.ELIMINA_EXAMEN>: '||SQLERRM,1,300);ROLLBACK;
END ELIMINA_EXAMEN;
FUNCTION PU_VALIDA_EXAMEN_REPETIDO(PN_ID_PARALELO IN NUMBER,
PN_ID_MATERIA IN NUMBER,
PN_ID_PERIODO_LECTIVO IN NUMBER,
PN_ID_TIPO_EXAMEN IN NUMBER,
98
PN_ID_PARCIAL IN NUMBER,Pv_error out varchar2,Pn_error out number
) RETURN NUMBER ISLN_ID_EXAMEN NUMBER(5);error exception;
BEGINLN_ID_EXAMEN:=0;BEGIN
SELECT COUNT(*)INTO LN_ID_EXAMEN FROM EXAMENWHERE ID_PARALELO =PN_ID_PARALELOAND ID_MATERIA =PN_ID_MATERIAAND ID_PERIODO_LECTIVO =PN_ID_PERIODO_LECTIVOAND ID_TIPO_EXAMEN =PN_ID_TIPO_EXAMENAND ID_PARCIAL =PN_ID_PARCIAL ;
EXCEPTIONWHEN OTHERS THEN
PN_ERROR := 1;PV_ERROR := 'Error al accesar a la tabla <EXAMEN> '||sqlerrm;raise error;
END;return ln_id_examen ;
exceptionWHEN ERROR THEN
return -1;when others then
Pv_error:='Error no controlado en procedimiento...:'||sqlerrm;
Pn_error:=sqlcode;return -1;
END;--FUNCTION PU_VALIDA_EXAMEN_REPETIDO1(PN_ID_EXAMEN IN NUMBER,
PN_ID_PARALELO IN NUMBER,
PN_ID_MATERIA IN NUMBER,
PN_ID_PERIODO_LECTIVO IN NUMBER,
PN_ID_TIPO_EXAMEN IN NUMBER,
PN_ID_PARCIAL IN NUMBER,Pv_error out varchar2,Pn_error out number
) RETURN NUMBER ISLN_ID_EXAMEN NUMBER(5);error exception;
BEGINLN_ID_EXAMEN:=0;BEGIN
99
SELECT COUNT(*)INTO LN_ID_EXAMEN FROM EXAMENWHERE ID_PARALELO =PN_ID_PARALELOAND ID_MATERIA =PN_ID_MATERIAAND ID_PERIODO_LECTIVO =PN_ID_PERIODO_LECTIVOAND ID_TIPO_EXAMEN =PN_ID_TIPO_EXAMENAND ID_PARCIAL =PN_ID_PARCIALAND ID_EXAMEN <> PN_ID_EXAMEN;
EXCEPTIONWHEN OTHERS THEN
PN_ERROR := 1;PV_ERROR := 'Error al accesar a la tabla <EXAMEN> '||sqlerrm;raise error;
END;return ln_id_examen ;
exceptionWHEN ERROR THEN
return -1;when others then
Pv_error:='Error no controlado en procedimiento...:'||sqlerrm;
Pn_error:=sqlcode;return -1;
END;--FUNCTION PU_EXISTE_ALUMNO_REGISTRADO (pn_id_usuario int,
pn_id_examen int,PN_DESCRIPCION OUT VARCHAR2,PN_OBSERVACION OUT VARCHAR2,pn_nota out number,PN_SECUENCIA OUT NUMBER,Pv_error out varchar2,Pn_error out number)RETURN INTEGER IS
LN_ESTADO INT;
BEGINLN_ESTADO:=-1;Pv_error :='';
Pn_error:=0;
SELECT NVL(EX.ID_ESTADO,-1),NVL(E.DESCRIPCION,'NN'),E.OBSERVACION,ex.nota_total,EX.ID_SECUENCIA
INTO LN_ESTADO,PN_DESCRIPCION ,PN_OBSERVACION,pn_nota,PN_SECUENCIA
FROM EXAMEN_ALUMNO EX,ESTADO EWHERE EX.ID_USUARIO=pn_id_usuarioAND EX.ID_EXAMEN=pn_id_examenAND EX.ID_ESTADO=E.ID_ESTADO;
RETURN (LN_ESTADO);exception
WHEN NO_DATA_FOUND THENPv_error:='NO EXISTEN ALUMNOS AUTORIZADOS';
100
Pn_error:=sqlcode;RETURN 0;
when others thenPv_error:= SUBSTR('ERROR NO CONTROLADO EN PROCEDIMIENTO
<PCK_EVALUACION_01.PU_EXISTE_ALUMNO_REGISTRADO>: '||SQLERRM,1,300);Pn_error:=sqlcode;RETURN -1;
END PU_EXISTE_ALUMNO_REGISTRADO;
FUNCTION PU_VALIDA_RECUPERACION(PN_ID_PARALELO NUMBER,
PN_ID_MATERIA NUMBER,
PN_ID_PERIODO_LECTIVO NUMBER,
PN_ID_ALUMNO NUMBER,Pv_error out varchar2,Pn_error out number
)RETURN NUMBER IS
LN_RETORNA NUMBER(1);LN_SUMA NUMBER(5,2);LN_NOTA1 NUMBER(5,2);LN_NOTA2 NUMBER(5,2);LN_NOTA_MINIMA NUMBER(5,2);
CURSOR DATOS(PN_ID_PARALELO_C NUMBER,PN_ID_MATERIA_C NUMBER,PN_ID_PERIODO_LECTIVO_C
NUMBER,PN_ID_ALUMNO_C NUMBER
)IS
SELECT EA.NOTA_TOTAL, E.ID_PARCIALFROM EXAMEN E, EXAMEN_ALUMNO EAWHERE E.ID_EXAMEN=EA.ID_EXAMENAND E.ID_PERIODO_LECTIVO=PN_ID_PERIODO_LECTIVO_CAND E.ID_MATERIA=PN_ID_MATERIA_CAND E.ID_PARALELO=PN_ID_PARALELO_CAND EA.ID_USUARIO=PN_ID_ALUMNO_CAND EA.ID_ESTADO IN(22,23,24);
BEGINLN_RETORNA :=0;LN_SUMA :=0;LN_NOTA1 :=0;LN_NOTA2 :=0;LN_NOTA_MINIMA:=0;Pn_error:=0;Pv_error:='';
--BEGIN
101
LN_NOTA_MINIMA:=FU_GET_PARAMETRO('NOTA_MIN_EXAMEN_RECUPERACION',PV_ERROR,PN_ERROR);
--END;
FOR REG IN DATOS(PN_ID_PARALELO,
PN_ID_MATERIA,
PN_ID_PERIODO_LECTIVO,
PN_ID_ALUMNO )LOOP
IF REG.ID_PARCIAL=1 THENLN_NOTA1 :=REG.NOTA_TOTAL;
ELSEIF REG.ID_PARCIAL=2 THEN
LN_NOTA2 :=REG.NOTA_TOTAL;END IF;
END IF;
LN_SUMA :=LN_SUMA +REG.NOTA_TOTAL;
END LOOP;
IF LN_NOTA1<LN_NOTA_MINIMA OR LN_NOTA2<LN_NOTA_MINIMA THEN --NOHACE RECUPERACION
LN_RETORNA:=0;ELSE
LN_RETORNA:=1;END IF;
RETURN LN_RETORNA;
exceptionWHEN NO_DATA_FOUND THEN
Pv_error:='NO EXISTEN REGISTRO CON ESE CODIGO';Pn_error:=sqlcode;RETURN -1;
when others thenPv_error:= SUBSTR('ERROR NO CONTROLADO EN PROCEDIMIENTO
<PCK_EVALUACION_01.PU_VALIDA_RECUPERACION>: '||SQLERRM,1,300);Pn_error:=sqlcode;RETURN -1;
END PU_VALIDA_RECUPERACION;
FUNCTION FU_GET_ID_ESTADO(PV_DESCRIPCION VARCHAR2,Pv_error out varchar2,Pn_error out number)RETURN NUMBER IS
LN_ESTADO NUMBER(5);
102
BEGINLN_ESTADO:=-1;
Pn_error:=0;Pv_error:='';
SELECT NVL(ID_ESTADO,-1)INTO LN_ESTADO FROM ESTADOWHERE DESCRIPCION=PV_DESCRIPCION AND MODULO='EVALUACION';
RETURN (LN_ESTADO);
exceptionWHEN NO_DATA_FOUND THEN
Pv_error:='NO EXISTEN REGISTRO CON ESE CODIGO';Pn_error:=sqlcode;RETURN -1;
when others thenPv_error:= SUBSTR('ERROR NO CONTROLADO EN PROCEDIMIENTO
<PCK_EVALUACION_01.GET_ID_ESTADO>: '||SQLERRM,1,300);Pn_error:=sqlcode;RETURN -1;
END FU_GET_ID_ESTADO;
FUNCTION FU_GET_ID_ESTADO_DESCRIPCION(PN_ESTADO NUMBER,Pv_error out varchar2,Pn_error out number) RETURN VARCHAR IS
LN_ESTADO VARCHAR(5);BEGIN
LN_ESTADO:='NN';Pn_error:=0;Pv_error:='';
SELECT NVL(DESCRIPCION,'NN')INTO LN_ESTADO FROM ESTADOWHERE ID_ESTADO=PN_ESTADO AND MODULO='EVALUACION';
RETURN (LN_ESTADO);
exceptionWHEN NO_DATA_FOUND THEN
Pv_error:='NO EXISTEN REGISTRO CON ESE CODIGO';Pn_error:=sqlcode;RETURN 'NN';
when others thenPv_error:= SUBSTR('ERROR NO CONTROLADO EN PROCEDIMIENTO
<PCK_EVALUACION_01.GET_ID_ESTADO_DESCRIPCION>: '||SQLERRM,1,300);Pn_error:=sqlcode;RETURN 'NN';
END FU_GET_ID_ESTADO_DESCRIPCION;
PROCEDURE ACTUALIZA_CATEGORIA_PREGUNTA(PN_ID_PREGUNTA NUMBER,PN_ID_CATEGORIA_PREGUNTA NUMBER,Pv_error out varchar2,
103
Pn_error out number) IS
BEGINPv_error:=NULL;Pn_error:=0;
update pregunta setid_categoria_pregunta=PN_ID_CATEGORIA_PREGUNTAwhereid_pregunta=PN_ID_PREGUNTA;COMMIT;
exceptionwhen dup_val_on_index then ---valores duplicadosPv_error:='codigo ya existe';Pn_error:=sqlcode;when others thenPv_error:='error en la insercion: '||sqlerrm;Pn_error:=sqlcode;
END ACTUALIZA_CATEGORIA_PREGUNTA;
FUNCTION FU_GET_PARAMETRO(PV_DESCRIPCION varchar2,Pv_error out varchar2,Pn_error out number) RETURN NUMBER IS
LN_RETORNA NUMBER;BEGIN
LN_RETORNA:=0;Pn_error:=0;Pv_error:='';
SELECT NVL(VALOR,0)INTO LN_RETORNA FROM PARAMETROSWHERE DESCRIPCION=PV_DESCRIPCION;
RETURN (LN_RETORNA);
exceptionWHEN NO_DATA_FOUND THEN
Pv_error:='NO EXISTEN REGISTRO CON ESE CODIGO';Pn_error:=sqlcode;RETURN 0;
when others thenPv_error:= SUBSTR('ERROR NO CONTROLADO EN PROCEDIMIENTO
<PCK_EVALUACION_01.FU_GET_PARAMETRO>: '||SQLERRM,1,300);Pn_error:=sqlcode;RETURN 0;
END FU_GET_PARAMETRO;
end PCK_EVALUACION_01 ;
104
PAQUETE PCK_EVALUACION_INTERFACE
CREATE OR REPLACE PACKAGE BODY PCK_EVALUACION_INTERFACE AS/********************************************************************************************
NOMBRE: pck_evaluacion_interfacePROYECTO: AULA VIRTUALMODULO: EVALUACIONES
REVISION: 05/03/2009AUTOR: GRUPO 5
DESCRIPCION:CUERPO DEL PAQUETE QUE PERMITE LARECLACION CON LA INTERFACE DE OTROS MODULOS
********************************************************************************************/
--FUNCTION EXISTE_ESTADO(PV_ESTADO IN VARCHAR2,
COD_RET IN OUT NUMBER,MSG_RET IN OUT VARCHAR2) RETURN
BOOLEAN IS
ERROR EXCEPTION;VAR_ESTADO NUMBER := 0;
BEGINBEGIN
SELECT COUNT(*)INTO VAR_ESTADOFROM ESTADOWHERE ID_ESTADO = PV_ESTADO;
EXCEPTIONWHEN OTHERS THEN
COD_RET := 1;MSG_RET := SUBSTR('ERROR AL BUSCAR ESTADO EN <ESTADO>
'||SQLERRM,1,300);RAISE ERROR;
END;--IF VAR_ESTADO > 0 THEN
RETURN TRUE;ELSE
RETURN FALSE;END IF;--
EXCEPTIONWHEN ERROR THEN
MSG_RET := SUBSTR(MSG_RET||' Cód: '||COD_RET,1,300);RETURN FALSE;
WHEN OTHERS THENCOD_RET := 2;MSG_RET := SUBSTR('ERROR NO CONTROLADO EN FUNCION
<PCK_INTERFACE_EVALUACION.EXISTE_ESTADO> '||SQLERRM,1,300);RAISE ERROR;
105
END;--FUNCTION GET_USER(PN_USER IN NUMBER, COD_RET IN OUT NUMBER, MSG_RET
IN OUT VARCHAR2) RETURN VARCHAR2 IS--VAR_USER USUARIO.LOGIN%TYPE := NULL;ERROR EXCEPTION;--
BEGIN--BEGINSELECT LOGININTO VAR_USERFROM USUARIOWHERE ID_USUARIO = PN_USER;
EXCEPTIONWHEN NO_DATA_FOUND THEN
COD_RET := 1;MSG_RET := SUBSTR('ERROR, CODIGO DE USUARIO:
'||PN_USER||' ,NO DEFINIDO EN TABLA <USUARIO> ',1,300);RAISE ERROR;
WHEN OTHERS THENCOD_RET := 1;MSG_RET := SUBSTR('ERROR AL BUSCAR CODIGO: '||PN_USER||'
, EN TABLA <USUARIO>; '||SQLERRM,1,300);RAISE ERROR;
END;--
RETURN VAR_USER;--
EXCEPTIONWHEN ERROR THEN
MSG_RET := SUBSTR(MSG_RET||' Cód: '||COD_RET,1,300);RETURN NULL;
WHEN OTHERS THENCOD_RET := 3;MSG_RET := SUBSTR('ERROR NO CONTROLADO EN FUNCION
<PCK_INTERFACE_EVALUACION.GET_USER> '||SQLERRM,1,300);RAISE ERROR;
END;--FUNCTION GET_PROFESOR_EXAMEN(PN_EXAMEN IN NUMBER,
PN_PERIODO IN NUMBER,COD_RET IN OUT NUMBER,MSG_RET IN OUT VARCHAR2)
RETURN VARCHAR2 IS--VAR_PROFESOR VARCHAR2(100) := NULL;ERROR EXCEPTION;--
BEGIN--BEGIN
106
select substr(e.APELLIDO_PATERNO||''||e.apellido_materno||' '||e.PRIMER_NOMBRE,1,100) nombre_profesor
into var_profesorfrom examen a, paralelo_materia b, profesor_asignacion c,
empleado d,persona ewhere a.ID_MATERIA = b.ID_MATERIAand a.ID_PARALELO = b.id_paraleloand b.ID_PARALELO_MATERIA = c.ID_PARALELO_MATERIAand c.ID_EMPLEADO = d.ID_EMPLEADOand d.id_persona = e.id_personaand a.id_examen = PN_EXAMENand c.ID_PERIODO_LECTIVO = PN_PERIODO;
EXCEPTIONWHEN NO_DATA_FOUND THEN
COD_RET := 1;MSG_RET := SUBSTR('ERROR, NOMBRE DE PROFESOR PARA EXAMEN:
'||PN_EXAMEN||' ,NO ENCONTRADO ',1,300);RAISE ERROR;
WHEN OTHERS THENCOD_RET := 1;MSG_RET := SUBSTR('ERROR AL BUSCAR PROFESOR PARA EXAMEN
'||PN_EXAMEN||' '||SQLERRM,1,300);RAISE ERROR;
END;--
RETURN VAR_PROFESOR;--
EXCEPTIONWHEN ERROR THEN
MSG_RET := SUBSTR(MSG_RET||' Cód: '||COD_RET,1,300);RETURN NULL;
WHEN OTHERS THENCOD_RET := 3;MSG_RET := SUBSTR('ERROR NO CONTROLADO EN FUNCION
<PCK_INTERFACE_EVALUACION.GET_PROFESOR_EXAMEN> '||SQLERRM,1,300);RAISE ERROR;
END GET_PROFESOR_EXAMEN;--FUNCTION GET_NOMBRE_PARCIAL(PN_PARCIAL IN NUMBER,
PN_PERIODO IN NUMBER,COD_RET IN OUT NUMBER,MSG_RET IN OUT VARCHAR2)
RETURN VARCHAR2 IS--VAR_PARCIAL PARCIAL.DESCRIPCION%TYPE := NULL;ERROR EXCEPTION;--
BEGIN--BEGIN
SELECT DESCRIPCIONinto VAR_PARCIALfrom PARCIAL
107
WHERE ID_PARCIAL = PN_PARCIALAND ID_PERIODO_LECTIVO= PN_PERIODO;
EXCEPTIONWHEN NO_DATA_FOUND THEN
VAR_PARCIAL := 'SIN PARCIAL';WHEN OTHERS THEN
COD_RET := 1;MSG_RET := SUBSTR('ERROR AL BUSCAR PARCIAL
'||PN_PARCIAL||' '||SQLERRM,1,300);RAISE ERROR;
END;--
RETURN VAR_PARCIAL;--
EXCEPTIONWHEN ERROR THEN
MSG_RET := SUBSTR(MSG_RET||' Cód: '||COD_RET,1,300);RETURN NULL;
WHEN OTHERS THENCOD_RET := 3;MSG_RET := SUBSTR('ERROR NO CONTROLADO EN FUNCION
<PCK_INTERFACE_EVALUACION.GET_NOMBRE_PARCIAL> '||SQLERRM,1,300);RAISE ERROR;
END GET_NOMBRE_PARCIAL;--FUNCTION GET_ALUMNO_EXAMEN(PN_EXAMEN IN NUMBER,
PN_SECUENCIA IN NUMBER,PN_USUARIO IN NUMBER,
COD_RET IN OUT NUMBER,MSG_RET IN OUT VARCHAR2)
RETURN VARCHAR2 IS--VAR_ALUMNO VARCHAR2(100) := NULL;ERROR EXCEPTION;--
BEGIN--BEGIN
select substr(C.APELLIDO_PATERNO||''||C.apellido_materno||' '||C.PRIMER_NOMBRE,1,100) nombre_alumno
INTO VAR_ALUMNOfrom examen_alumno a, usuario b, persona c, alumno dwhere a.ID_USUARIO = b.ID_USUARIOand b.ID_PERSONA = c.ID_PERSONAand c.ID_PERSONA = d.ID_PERSONAand a.ID_EXAMEN = PN_EXAMENAND a.ID_SECUENCIA = PN_SECUENCIAAND A.ID_USUARIO = PN_USUARIO;
EXCEPTIONWHEN NO_DATA_FOUND THEN
COD_RET := 1;MSG_RET := SUBSTR('ERROR, NOMBRE DE ALUMNO PARA EXAMEN:
'||PN_EXAMEN||' ,NO ENCONTRADO ',1,300);
108
RAISE ERROR;WHEN OTHERS THEN
COD_RET := 1;MSG_RET := SUBSTR('ERROR AL BUSCAR ALUMNO PARA EXAMEN
'||PN_EXAMEN||' '||SQLERRM,1,300);RAISE ERROR;
END;--
RETURN VAR_ALUMNO;--
EXCEPTIONWHEN ERROR THEN
MSG_RET := SUBSTR(MSG_RET||' Cód: '||COD_RET,1,300);RETURN NULL;
WHEN OTHERS THENCOD_RET := 3;MSG_RET := SUBSTR('ERROR NO CONTROLADO EN FUNCION
<PCK_INTERFACE_EVALUACION.GET_ALUMNO_EXAMEN> '||SQLERRM,1,300);RAISE ERROR;
END GET_ALUMNO_EXAMEN;--
PROCEDURE ENVIAR_CORREO (NOMBRE_ENVIA IN VARCHAR2,ENVIA IN VARCHAR2,RECIBE IN VARCHAR2,ASUNTO IN VARCHAR2,MENSAJE IN VARCHAR2,COD_RET IN OUT NUMBER,MSG_RET IN OUT VARCHAR2)
is-- HOST VARCHAR2(100) := 'mail.edina.com.ec';HOST VARCHAR2(100) := '192.168.1.199';mailhost VARCHAR2(30);mail_conn utl_smtp.connection;--mail_conn varchar2(10);crlf VARCHAR2( 2 ):= CHR( 13 ) || CHR( 10 );mesg VARCHAR2(30000) := null;
BEGIN--mensaje :='Hola';MAILHOST := ltrim(rtrim(HOST));mail_conn := utl_smtp.open_connection(mailhost, 25);mesg:= 'Date: ' || TO_CHAR( SYSDATE, 'dd Mon yy hh24:mi:ss' )
|| crlf ||'From:'|| NOMBRE_ENVIA||'<'||ENVIA||'>' || crlf ||'Subject: '||ASUNTO || crlf ||'To: '||RECIBE || crlf ||'' || crlf || MENSAJE;--utl_smtp.helo(mail_conn, mailhost);utl_smtp.mail(mail_conn, ENVIA);utl_smtp.rcpt(mail_conn, RECIBE);utl_smtp.data(mail_conn, mesg);utl_smtp.quit(mail_conn);--
109
EXCEPTIONWHEN utl_smtp.transient_error OR utl_smtp.permanent_error THEN
BEGINmsg_ret := sqlerrm;
utl_smtp.quit(mail_conn);EXCEPTION
WHEN utl_smtp.transient_error OR utl_smtp.permanent_errorTHEN
COD_RET := -1;MSG_RET := substr('Existe un Error en el Servicio
de SMTP para envío de correo: '||sqlerrm,1,300);END;
WHEN OTHERS THENCOD_RET := 1;MSG_RET := substr('Error al enviar correo a '||recibe||'
'||sqlerrm,1,300);END ENVIAR_CORREO;
--FUNCTION GET_CORREO_USUARIO(PN_USUARIO IN NUMBER,
COD_RET IN OUT NUMBER,MSG_RET IN OUT VARCHAR2)
RETURN VARCHAR2 IS--VAR_CORREO VARCHAR2(100) := NULL;ERROR EXCEPTION;--
BEGIN--BEGIN
SELECT B.EMAILINTO VAR_CORREOFROM USUARIO A, PERSONA BWHERE A.ID_PERSONA = B.ID_PERSONAAND A.ID_USUARIO = PN_USUARIO;--
EXCEPTIONWHEN NO_DATA_FOUND THEN
VAR_CORREO := NULL;WHEN OTHERS THEN
COD_RET := 1;MSG_RET := SUBSTR('ERROR AL BUSCAR DIRECCION DE COOREO
PARA USUARIO '||PN_USUARIO||' '||SQLERRM,1,300);RAISE ERROR;
END;--
RETURN VAR_CORREO;--
EXCEPTIONWHEN ERROR THEN
MSG_RET := SUBSTR(MSG_RET||' Cód: '||COD_RET,1,300);RETURN NULL;
WHEN OTHERS THENCOD_RET := 3;
110
MSG_RET := SUBSTR('ERROR NO CONTROLADO EN FUNCION<PCK_INTERFACE_EVALUACION.GET_CORREO_USUARIO> '||SQLERRM,1,300);
RAISE ERROR;END GET_CORREO_USUARIO;--PROCEDURE ACT_SOLICITUD_EXAMEN_GRACIA(PN_CODIGO IN NUMBER,
COD_RET IN OUT NUMBER,
MSG_RET IN OUT VARCHAR2) ISERROR EXCEPTION;--BEGINBEGIN
UPDATE ADM_EXAMEN_GRACIASET ID_ESTADO = 2 -- HAY QUE BUSCAR CUAL ES EL ESTADO INACTIVOWHERE ID_SOLICITUD = PN_CODIGO;
EXCEPTIONWHEN OTHERS THEN
COD_RET := 1;MSG_RET := SUBSTR('ERROR AL ACTUALIZAR ESTADO DE EXAMEN DE
GRACIA, CODIGO: '||PN_CODIGO||' '||SQLERRM,1,300);RAISE ERROR;
END;--COMMIT;--
EXCEPTIONWHEN ERROR THEN
MSG_RET := SUBSTR(MSG_RET||' Cód: '||COD_RET,1,300);WHEN OTHERS THEN
COD_RET := 3;MSG_RET := SUBSTR('ERROR NO CONTROLADO EN FUNCION
<PCK_INTERFACE_EVALUACION.GET_PROFESOR_EXAMEN> '||SQLERRM,1,300);RAISE ERROR;
END ACT_SOLICITUD_EXAMEN_GRACIA;--
END PCK_EVALUACION_INTERFACE;
111
CAPÍTULO 2
2. MANUAL DE USUARIO
IntroducciónEste manual ha sido diseñado con el objetivo de que los usuarios
destinados a la utilización del sistema conozcan las herramientas
necesarias en el manejo de la aplicación con la intención de que
puedan usarla de la mejor manera y lograr así sacar el mayor
provecho de la misma.
En este manual se encuentra explicado de manera fácil y sencilla
como se realiza el manejo del sistema, para que el usuario pueda
rápidamente satisfacer sus necesidades.
112
En el centro que ahora supervisas han dado un gran paso al
sistematizar sus operaciones y queda en ti una gran
responsabilidad, la cual será fácilmente manejada si logras
aprovechar todas las ventajas que te ofrece este sistema.
Recuerda que el dominio de cualquier trabajo involucra tanto el
conocimiento teórico como el práctico, es por ello que para
alcanzar los máximos resultados de tus objetivos deberás:
Estudiar tu manual de usuario.
Dedicar tiempo en la práctica del sistema.
Comienza desde ahora a conocer el modulo de evaluaciones.
Características del Módulo de Evaluaciones
a) Los accesos de acuerdo al perfil asignado al usuario son los
siguientes: Administrador, Profesor y Alumno.
b) El Administrador en el Modulo de Evaluaciones en las opciones
de Mantenimientos y Reportes, tiene los siguientes permisos:
Mantenimientos
Preguntas y respuestas
Creación de Evaluaciones
113
Categoría de preguntas
Tipo de Evaluaciones
Reportes
Evaluaciones por alumno
Evaluaciones por Materias
Categoría de Preguntas
Alumnos activos por evaluación
Presentación previa de evaluación
Cuestionario de preguntas
Evaluación al docente
c) El Profesor en el Modulo de Evaluaciones en las opciones de
Mantenimientos y Reportes, tiene los siguientes permisos:
Mantenimientos
Preguntas y respuestas
Creación de Evaluaciones
Reportes
Evaluaciones por alumno
Evaluaciones por Materias
Categoría de Preguntas
Alumnos activos por evaluación
114
Presentación previa de evaluación
Cuestionario de preguntas
d) El Alumno en el Modulo de Evaluaciones tiene asignado
permisos para los siguientes procesos y reportes:
Procesos
Evaluación del Estudiante
Evaluación al docente
Reportes
Evaluaciones por alumno
e) Seguridades aplicadas a través de claves de usuarios ocultas
mediante encriptación.
Acceso al Sistema Como AdministradorAl ingresar al sistema la primera pantalla en visualizarse (Figura 2.1) nos
permite logearnos con el usuario que deseamos, en este caso como
administrador.
115
Figura 2.1. Inicio sesión Administrador
Una vez que accedemos al sistema tenemos la página principal, la misma
que visualizara aquellas opciones a las que podemos acceder según el
usuario con el que nos hemos logeado.
Figura 2.2. Pantalla Principal Administrador
116
Acceso al Sistema Como ProfesorAl ingresar al sistema la primera pantalla en visualizarse (Figura
2.1) nos permite logearnos con el usuario que deseamos, en este
caso como administrador.
Figura 2.3. Inicio sesión Profesor
Al logearnos como
administrador
observamos aquellas
opciones a las que
tenemos acceso.
117
Una vez que accedemos al sistema tenemos la página principal, la misma
que visualizara aquellas opciones a las que podemos acceder según el
usuario con el que nos hemos logeado.
Figura 2.4. Pantalla Principal Profesor
Al logearnos como
administrador observamos
aquellas opciones a las que
tenemos acceso.
118
Cerrar Sesión
Igual que la opción anterior, para cerrar la sesión anteriormente
iniciada por el usuario que solicito acceder al sistema; puede hacerlo
dando clic en la opción “Salir”.
Figura 2.5. Cerrar sesión.
Menú del Modulo de EvaluacionesEl modulo de evaluaciones contiene varias opciones, las mismas
que se presentaran de acuerdo al usuario con el que accedió al
sistema, por lo tanto para mejor comprensión de este manual lo
hemos agrupado de la siguiente manera:
119
a) Mantenimientos
b) Reportes
c) Procesos
MantenimientosDetallaremos las diferentes pantallas que necesitan tener un
mantemiento de datos
Categoría PreguntasEl mantenimiento de categoría de preguntas en el modulo de
evaluaciones consiste en la creación de las diferentes categorías a
las que pertenecerán las preguntas; por ejemplo: Base de datos,
Matemáticas financieras, Programación I, etc.
Para crear una categoría pregunta es necesario que el usuario
registre lo siguiente:
Código: Permite un máximo de cinco caracteres, los cuales deben
ser numéricos.
Nivel Superior: Indica la Categoría o división de la pregunta, como
por ejemplo puede ser el nombre de la materia.
Nombre: Define el nombre de la categoría que desea asignar.
Descripción: Breve descripción de la categoría.
Auditoria de ingreso, Usuario: El nombre del usuario que creo la
categoría.
120
Auditoria de ingreso, Fecha: La fecha que fue creada la
categoría.
Auditoria de modificación, Usuario: El nombre del usuario que
realizo la ultima modificación.
Es necesario indicar que los usuarios que tiene acceso a este
mantenimiento es el usuario de: Administración.
Figura 2.6. Categoría Preguntas.
Preguntas y RepuestasEl mantenimiento de Preguntas y Respuestas en el modulo de
evaluaciones consiste en la creación de preguntas con sus
respectivas respuestas de las diferentes categorías de preguntas
que tenemos definidas para las evaluaciones.
121
Para crear una pregunta es necesario que el usuario registre lo
siguiente:
a. Pregunta. Permite un máximo de cinco caracteres, los cuales
deben ser numéricos.
b. Categoría. Indica la Categoría o división de la pregunta, como
por ejemplo puede ser el nombre de la materia.
c. Tipo. Define el tipo de respuesta como por ejemplo; respuesta
simple, verdadera o falsa, o respuesta múltiple.
d. Descripción de la pregunta. Aquí se realiza la pregunta.
e. Cantidad validas. Indica el numero de repuestas validas que
tiene la pregunta.
f. Factor Penalización. Indica el valor de la penalización que se
restara de la nota obtenida en el evaluación cada vez que
realice un cambio de respuesta en una pregunta ya contestada.
g. Nombre Archivo. Si en la pregunta es necesario cargar una
imagen aquí se indicara la ruta y nombre del archivo, el grafico
tiene que tener extensión jpg o gif.
En la pestaña RESPUESTA, tenemos varias opciones para
insertar la o las respuestas validas.
Es necesario indicar que los usuarios que tiene acceso a este
mantenimiento son los usuarios de: Administración y Profesores.
122
Figura 2.7. Configuración de Pregunta.
Figura 2.8. Configuración de Respuesta.
123
Evaluaciones
El mantenimiento de Evaluaciones en el modulo de evaluaciones
consiste en la creación de los exámenes con sus respectivos datos y
reglas que se definen para las evaluaciones en general.
Para crear una evaluación es necesario que el usuario registre lo
siguiente:
a. Tipo de evaluación: Permite elegir entre las diferentes
opciones de evaluaciones que ofrecemos en nuestro sistema de
evaluaciones, como son las siguientes opciones: EXAMEN,
LECCION, RECUPERACION O EXAMEN DE GRACIA.
b. Código: Es el código que será asignado a la evaluación,
permite un máximo de cinco caracteres, los cuales deben ser
numéricos.
c. Paralelo: En este campo se especifica el paralelo para el curso
que se esta creando la evaluación el cual se elige a través de la
lista de valores, una vez escogido el paralelo los campos
materia, periodo, año, ciclo, profesor son traídos
automáticamente de la base de datos.
d. Parcial: En este campo se especifica el parcial del cual se
creara la evaluación.
124
e. Permite Abrir.
f. Permite Cerrar
g. Fecha inicio: Indica la fecha de inicio del examen.
h. Fecha fin: Indica la fecha en la que terminara el evaluación.
i. Limite Tiempo: Indica que evaluación tendrá un límite de
tiempo, el cual se detalla en el campo que viene a continuación.
j. Tiempo de duración: Indica el tiempo (minutos) que durara la
evaluación.
k. Numero máximo de preguntas: Indica la cantidad máxima de
preguntas que tendrá la evaluación.
l. Calificación máxima: Indica la calificación máxima de la
evaluación.
m. Estado: Especifica el estado de la evaluación, la evaluación
siempre estará en estado de borrado, mientras no se cambie el
estado a bloqueado, si se desea borrar la evaluación se la
puede hacer siempre y cuando este en estado de borrado y no
existan datos asociados como es el caso de las preguntas.
Los campos de Pregunta aleatoria, respuesta aleatoria, ventana
segura y aplica penalización, son campo de control y son
opcionales.
125
Figura 2.9. Configuración General de Evaluación.
En la pestaña Banco de Preguntas, se enlista todas las preguntas
por categorías las cuales deben ser seleccionadas de acuerdo a la
cantidad máxima de preguntas, una vez seleccionadas se escoge
la opción añadir al examen, automáticamente pasan a la pestaña
preguntas, donde debe ser ingresada la nota de cada pregunta, la
suma de los valores deben coincidir con el valor ingresado del
campo calificación máxima.
126
Figura 2.10. Selección de Preguntas
Figura 2.11. Configurar Puntuación de Preguntas
127
Una vez elegidas las preguntas nos dirigimos a la pestaña
Registro, en la cual se registran todos los estudiantes asignados a
esa materia y paralelo, donde escogemos los estudiantes y se los
autoriza para que puedan realizar la evaluación.
Figura 2.12. Usuarios Activos
Es necesario indicar que se debe grabar de primera instancia en la
pestaña Evaluación, para que así se genere el código de la
evaluación y los siguientes datos necesarios como las preguntas y
registros puedan ser traídos de la base de datos a nuestra
evaluación, los usuarios que tienen acceso a este mantenimiento
128
solo es el usuario de docente debido a que como profesor es el
único con permisos para crear evaluaciones de estudiantes.
ReportesLos diferentes reportes que brinda el Módulo de Evaluaciones son
accesibles de acuerdo al usuario que se encuentra logeado, en nuestro
caso mostramos siete reportes que son los siguientes:
REPORTES USUARIOS
Evaluaciones por alumno Administrador,Profesor y Alumno
Evaluaciones por Materias Administrador,Profesor
Categoría de Preguntas Administrador,Profesor
Alumnos activos por evaluación Administrador,Profesor
Presentación previa de Evaluación Administrador,Profesor
Cuestionario de preguntas Administrador,Profesor
Evaluación al docente Administrador
129
A continuación detallaremos el funcionamiento de cada uno de los
reportes de este módulo.
2.6.2.1. Evaluaciones por AlumnoEn este reporte se listan todas las evaluaciones que un alumno ha
realizado en las diferentes materias, el reporte puede ser ejecutado
por los usuarios administrador y profesor.
Para ejecutar el reporte tenemos que seguir los siguientes pasos:
Tenemos que elegir el periodo lectivo para hacer la búsqueda del
reporte.
Buscamos por el número de cédula del alumno al que deseamos
presentar el reporte.
Figura 2.13. Pantalla Evaluaciones por Alumno
130
Una vez llenado estos datos procedemos a imprimir haciendo clic en el
icono de imprimir, y automáticamente aparecerá el reporte deseado.
A continuación mostramos el reporte final de esta consulta.
Figura 2.14. Reporte de Evaluaciones por Alumno
2.6.2.2. Evaluaciones por MateriaEn este reporte se listan todas las evaluaciones que se han realizado en
las diferentes materias, el reporte puede ser ejecutado por los usuarios
administrador y profesor.
Para ejecutar el reporte hay que seguir los siguientes pasos:
a) Elegimos el periodo lectivo
b) Seleccionamos el nombre de la materia
c) Y por último imprimir en el icono correspondiente.
131
Figura 2.15. Pantalla de Evaluaciones por Materia
Por último mostramos el reporte final.
Figura 2.16. Reporte de Evaluaciones por Materia
2.6.2.3. Categoría de PreguntasEn este reporte se listan todas las evaluaciones que se han realizado en
las diferentes materias, el reporte puede ser ejecutado por los usuarios
administrador y profesor.
132
Para ejecutar el reporte hay que seguir los siguientes pasos:
Este reporte presenta directamente el listado de todas las categorías de
preguntas.
Figura 2.17. Pantalla Listado de Categoría de Preguntas
Seleccionamos el icono de imprimir y automáticamente se imprimirá
mostrándose de la siguiente forma.
Figura 2.18. Reporte de Categoría de Preguntas
133
2.6.2.4. Alumnos Activos por EvaluaciónEn este reporte se listan todas las evaluaciones que se han realizado en
las diferentes materias, el reporte puede ser ejecutado por los usuarios
administrador y profesor.
Figura 2.19. Pantalla Alumnos Activos por Evaluación
2.6.2.5. Presentación previa de la EvaluaciónA este reporte tienen acceso los usuarios de administración y profesores,
es una presentación del evaluación con las diferentes preguntas
seleccionadas en la evaluación, en el caso de profesores solo pueden ver
sus evaluaciones asignadas, el usuario de administrador tiene acceso a
este reporte de todos las evaluaciones pendientes de todos los docentes.
134
Figura 2.20. Reporte de Presentación previa de la Evaluación
2.6.2.6. Cuestionario de Preguntas
135
Figura 2.21. Pantalla Cuestionario de Preguntas Por Categoría
En este reporte podemos visualizar los cuestionarios de preguntas por
cada categoría de preguntas, es importante indicar que este reporte
puede ser visualizado por los usuarios de administrador y docentes.
Figura 2.22. Reporte Cuestionario de Preguntas
Procesos
Evaluación del EstudianteEn el proceso de desarrollo de una Evaluación el único usuario
autorizado en el sistema de evaluación es el usuario estudiante y en
primera instancia se realiza lo siguiente:
136
Logonearse con usuario de estudiante
Figura 2.23. Pantalla Ingreso Estudiante
Paso elegir opción de evaluaciones, evaluaciones estudiantes.
Si el estudiante que se conecto al modulo de evaluaciones tiene
pendiente uno o varios exámenes por realizar le aparecerá el
siguiente mensaje:
137
Figura 2.24. Pantalla Previa de Evaluaciones Por Alumno
Se selecciona aceptar y nos aparecerá la siguiente pantalla:
Figura 2.25. Pantalla de Evaluaciones Por Alumno
Nos direccionamos en la evaluación que deseamos realizar y
presionamos la opción Ver en ese mismo momento se selecciona
iniciar evaluación. Una vez que se inicio a desarrollar el evaluación,
empezamos a resolver cada una de las preguntas asignadas a esta
evaluación, seleccionamos la primera pregunta que deseamos
contestar, en la cual nos indica la categoría, el tipo de respuesta, la
138
valoración que tendrá cada pregunta y el estado de la pregunta de que
ha sido contestada si o no.
Figura 2.26. Pantalla Ejecución de Evaluación
Seleccionamos responder pregunta y no llevara a la pantalla que
visualizaremos a continuación, esta pantalla nos muestra cada
pregunta por individual y las opciones de repuestas, si la pregunta es
de tipo grafica la visualizaremos en el casillero junto a la pregunta.
139
Figura 2.27. Pantalla Resolver Preguntas
Una vez finalizada la evaluación, es enviado un correo a la dirección
de correo del estudiante confirmando la elaboración de la evaluación.
Enseguida tendremos la visualización del siguiente mensaje que nos
indica si deseamos imprimir en pantalla el reporte de la evaluación
realizada con el porcentaje de la nota obtenida en cada una de las
preguntas contestadas.
140
Figura 2.28. Pantalla Resolver Preguntas
Si seleccionamos la opción Si, de imprimir la evaluación, obtendremos
el reporte de la evaluación realizada por el estudiante un archivo pdf.
Este reporte mostrara como encabezado los datos mas importantes
como son: nombre del alumno, profesor, paralelo, parcial y codigo de
evaluacion.
Luego mostrara las preguntas que resolvio con la visualizacion de las
respuestas, mostrando las respuestas que eligio correctamente.
141
Figura 2.29. Pantalla Resolver Preguntas
Evaluación al DocenteEn el proceso de la Evaluación al Docente que lo realiza el
único usuario autorizado en el sistema de evaluación es el
estudiante y en primera instancia se realiza lo siguiente:
a) Una vez que se logeo el alumno, elige en el arbol la opcion
de Evaluacion al Docente. El mismo que una vez que se eligio
aparecera la siguiente pantalla. En esta nos muestra un
mensaje de que si hay o no una evaluacion pendiente.
142
Figura 2.30. Pantalla Resolver Preguntas
b) Aquí nos muestra la pantalla con la evaluacion al docente q vamos a
realizar.
Figura 2.31. Pantalla Resolver Preguntas
c) Una vez que activamos la evaluación al docente en el boton INICIAR
EVALUACION, nos motrara la siguiente pantalla.
d) En la misma que procedemos a contestar cada una de las siguientes
preguntas.
e) Una vez contestada la pregunta guardamos la respuesta y
automáticamente se cambiara a la siguiente pregunta.
143
Figura 2.32. Pantalla Resolver Preguntas
Figura 2.33. Pantalla Pregunta Contestada
144
Figura 2.34. Pantalla Finalizar Evaluación
Diccionario de datosUn diccionario de datos es una lista de todos los elementos incluido
en el conjunto de los FD de datos que describen un sistema. Los
elementos principales en un sistema, el almacenamiento de datos y
los procesos. El diccionario de datos almacena detalles y
descripciones de estos elementos.Si los analistas desean conocer
cuántos caracteres hay en un dato, con qué otros nombres se le
conocen en el sistema, o en donde se utilizan dentro del sistema
deben ser capaces de encontrar las respuestas en un diccionario
de datos desarrollado apropiadamente. Este manual esta orientado
a todo lo mencionado.
145
ÍNDICE DE CONTENIDO
CAPÍTULO 1................................................................................................... 1
1. MANUAL TECNICO ............................................................................. 1
1.1. Introducción .................................................................................. 1
1.2. Diagramas..................................................................................... 1
1.2.1. Diagramas de Flujo de Datos .................................................... 2
1.2.2. Diagrama Entidad Relación....................................................... 2
1.3. Creación de Objetos de la Base de Datos .................................... 3
1.3.1. Script de creación de Tablas ..................................................... 3
1.3.2. Paquete PCK_EVALUACION.................................................. 10
1.3.3. Paquete PCK_EVALUACION_1.............................................. 21
1.3.4. Paquete PCK_EVALUACION_INTERFACE ........................... 34
1.4. Codificación ................................................................................ 36
CAPÍTULO 2............................................................................................... 111
2. MANUAL DE USUARIO ................................................................... 111
2.1. Introducción .............................................................................. 111
2.2. Características del Módulo de Evaluaciones ............................ 112
2.3. Acceso al Sistema Como Administrador ................................... 114
2.4. Acceso al Sistema Como Profesor............................................ 116
2.5. Cerrar Sesión............................................................................ 118
2.6. Menú del Modulo de Evaluaciones ........................................... 118
146
2.6.1. Mantenimientos ..................................................................... 119
2.6.1.1. Categoría Preguntas ...................................................... 119
2.6.1.2. Preguntas y Repuestas .................................................. 120
2.6.1.3. Evaluaciones.................................................................. 123
2.6.2. Reportes................................................................................ 128
2.6.2.1. Evaluaciones por Alumno............................................... 129
2.6.2.2. Evaluaciones por Materia ............................................... 130
2.6.2.3. Categoría de Preguntas ................................................. 131
2.6.2.4. Alumnos Activos por Evaluación .................................... 133
2.6.2.5. Presentación previa de la Evaluación ............................ 133
2.6.2.6. Cuestionario de Preguntas............................................. 134
2.6.3. Procesos ............................................................................... 135
2.6.3.1. Evaluación del Estudiante .............................................. 135
2.6.3.2. Evaluación al Docente.................................................... 141
2.7. Diccionario de datos.................................................................. 144
147
ÍNDICE DE FIGURAS
Figura 2.1. Inicio sesión Administrador ....................................................... 115
Figura 2.2. Pantalla Principal Administrador ............................................... 115
Figura 2.3. Inicio sesión Profesor................................................................ 116
Figura 2.4. Pantalla Principal Profesor........................................................ 117
Figura 2.5. Cerrar sesión. ........................................................................... 118
Figura 2.6. Categoría Preguntas................................................................. 120
Figura 2.7. Configuración de Pregunta. ...................................................... 122
Figura 2.8. Configuración de Respuesta..................................................... 122
Figura 2.9. Configuración General de Evaluación....................................... 125
Figura 2.10. Selección de Preguntas .......................................................... 126
Figura 2.11. Configurar Puntuación de Preguntas ...................................... 126
Figura 2.12. Usuarios Activos ..................................................................... 127
Figura 2.13. Pantalla Evaluaciones por Alumno ......................................... 129
Figura 2.14. Reporte de Evaluaciones por Alumno..................................... 130
Figura 2.15. Pantalla de Evaluaciones por Materia..................................... 131
Figura 2.16. Reporte de Evaluaciones por Materia..................................... 131
Figura 2.17. Pantalla Listado de Categoría de Preguntas .......................... 132
Figura 2.18. Reporte de Categoría de Preguntas ....................................... 132
Figura 2.19. Pantalla Alumnos Activos por Evaluación............................... 133
Figura 2.20. Reporte de Presentación previa de la Evaluación .................. 134
148
Figura 2.21. Pantalla Cuestionario de Preguntas Por Categoría ................ 135
Figura 2.22. Reporte Cuestionario de Preguntas........................................ 135
Figura 2.23. Pantalla Ingreso Estudiante .................................................... 136
Figura 2.24. Pantalla Previa de Evaluaciones Por Alumno......................... 137
Figura 2.25. Pantalla de Evaluaciones Por Alumno .................................... 137
Figura 2.26. Pantalla Ejecución de Evaluación ........................................... 138
Figura 2.27. Pantalla Resolver Preguntas .................................................. 139
Figura 2.28. Pantalla Resolver Preguntas .................................................. 140
Figura 2.29. Pantalla Resolver Preguntas .................................................. 141
Figura 2.30. Pantalla Resolver Preguntas .................................................. 142
Figura 2.31. Pantalla Resolver Preguntas .................................................. 142
Figura 2.32. Pantalla Resolver Preguntas .................................................. 143
Figura 2.33. Pantalla Pregunta Contestada ................................................ 143
Figura 2.34. Pantalla Finalizar Evaluación .................................................. 144
ANEXOS
ANEXO A
FLUJO DE DATOS
ANEXO B
DIAGRAMA DEENTIDAD RELACION
A
A
SI
SI
SI
SI
NO
NO
NO
NO
INICIO
FIN
INGRESO ALSITIO WEB
VISUALIZACIONDE LA PAGINA
PRINCIPAL
AUTENTICACIONY VALIDACION DE
USUARIO
USUARIOCORRECTO
PRESENTACIONDEL MENUPRINCIPAL
SELECCIÓNCORRECTA
SELECCIONARCONSULTA DE
MATERIAS
CONSULTA DEMATERIAS
ASIGNADAS
SELECCIÓN DEMATERIA AREGISTRAR
EXISTENMATERIAS
EXISTEREGISTRO
PRESENTACIONDE PLANTILLAS
VERIFICACION DEESTADO
VERIFICAESTADO DE LAEVALUACION
CREAR REGISTRODE EVALUACION
INGRESARPREGUNTAS YRESPUESTAS
GUARDARREGISTRO DEEVALUACION
ACTUALIZACIONDE REGISTRO DE
EVALUACION
A
Figura 1.1 Proceso de Registro de Evaluación (Administrador/Docente)
INICIO
FIN
INGRESO ALSITIO WEB
VISUALIZACIONDE LA PAGINA
PRINCIPAL
AUTENTICACIONY VALIDACION DE
USUARIO
USUARIOCORRECTO
PRESENTACIONDEL MENUPRINCIPAL
SELECCIÓNCORRECTA
SELECCIONARACTIVACION DE
EVALUACION
CONSULTA DEUSUARIOS
REGISTRADOS
SELECCIÓN DEUSUARIOS
EXISTENUSUARIOS
S
PROCESOCORRECTO
ACTIVACION DEEVALUACION
CONFIRMARREGISTRO DE
USUARIOS
CREARREGISTROS DEEVALUACION
GUARDARREGISTRO DEEVALUACION
A A
A
A
SI
SISI
NO
NO
NO
SINO
Figura 1.2 Proceso de Activación de Evaluación (Administrador/Docente)
INICIO
FIN
INGRESO ALSITIO WEB
VISUALIZACIONDE LA PAGINA
PRINCIPAL
AUTENTICACIONY VALIDACION DE
USUARIO
USUARIOCORRECTO
PRESENTACIONDEL MENUPRINCIPAL
SELECCIÓNCORRECTA
SELECCIONAREVALUACIONES
ACTIVADAS
CONSULTA DEMATERIASACTIVADAS
SELECCIÓN DEMATERIA
EXISTENMATERIAS
CONFIRMACION
PRESENTACIONINFORMACION
PREVIA
CONFIRMACIONDE INICIO DEEVALUACION
ACTIVACION DELINICIO DE
EVALUACION
REGISTRO DERESPUESTAS
PRESENTACIONDE PREGUNTAS
A
Figura 1.3 Proceso de Evaluación (Estudiante)
A
NO
A
A
SI
SI SI
NO
NO
NO
TERMINAEVALUACION
REVISION DEEVALUACION
REGISTRO DERESULTADOS
PRESENTACIONDE RESULTADOS
SI
NO