Académique Documents
Professionnel Documents
Culture Documents
Unan – León
Tema:
Sistema de Gestión Académica para el colegio Madre María
Luisa, en la ciudad de León.
Integrantes:
Los sistemas de información han sido desde su creación de gran utilidad para las personas,
facilitándoles cada una de las actividades que realizan y que pueden ser automatizadas, para
este fin fueron creados.
Son muchas las áreas en las que se pueden implementar los sistemas de información, tales
como instituciones gubernamentales, empresas privadas, instituciones educativas como
colegios y universidades, instituciones de salud, etc. Y son muchas los tipos de aplicaciones
que pueden ser creadas, como aplicaciones contables, de transacciones bancarias, comercial,
académicas como registro de notas, registro de matriculas, aplicaciones web, etc.
Dadas las utilidades que proporcionan estos sistemas, en el presente trabajo se ha propuesto
creación de un Sistema de Gestión Académica para el Colegio Católico Madre María Luisa a
través de un entorno web, el cual pondrá a disposición de los diferentes usuarios las
funcionalidades requeridas en el centro para llevar a cabo los procesos de gestión académica.
Entre algunas de las funciones más relevantes del sistema se encontrarán: el registro de
matriculas, calificaciones, expedientes de los docentes y nuevas asignaturas, acceso y
manipulación a los datos de alumnos, docentes y pensum del centro. También la obtención de
información tales como certificados, boletines, algunas estadísticas y otras propias del sitio
web.
Antecedentes
En el centro para el registro de matricula existe un formato en papel, éste es llenado con los
datos personales del alumno, que luego junto con otros documentos, entregados como
requisitos para matricularse, pasan a ser parte del expediente del mismo.
La gestión de notas es llevada a cabo por la docencia, la secretaría y dirección, cada docente
lleva control de las calificaciones de sus alumnos, bimensualmente debe entregar las
calificaciones en un formato especifico a la Dirección, la cual registra las notas en un libro de
actas.
El pensum se elabora anualmente, la dirección entrega a cada docente una lista de las
asignaturas a impartir y en que grados impartirá las mismas. También se les asigna a cada
docente un grado el cual guiará, esto significa que será el encargado de llevar el control de
todas las calificaciones de los alumnos para luego entregar los boletines.
Los certificados de notas solicitados por los alumnos egresados, son elaborados revisando los
registros de los libros de actas académicos correspondientes al año en el cual el alumno curso
determinado grado.
La apertura de una sección mas para un grado se hace en base a la cantidad de alumnos que la
dirección considera tener en su momento. Y la ubicación de un alumno en otra sección se hace
por medio del apellido del mismo o a consideración personal de la dirección.
Justificación
El presente trabajo tiene como fin la elaboración de un software que facilite el registro y
obtención de datos pertenecientes a cada uno de los procesos académicos del Colegio Católico
Madre María Luisa, el cual no cuenta aun con una automatización de ninguna de las
actividades académicas.
Con este sistema se almacenarán los datos de manera digital, para luego ser impresa y
archivada cierto tipo de información, también permitirá la generación de certificados y
boletines, estadísticas, noticias académicas, datos del centro, entre otros.
Objetivos
Objetivo General
Elaborar un sistema con interfaz web para para la Gestión Académica del colegio
Madre María Luisa.
Objetivos Específicos
Cliente-servidor
Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa (el
servidor) que le da respuesta. En esta arquitectura la capacidad de proceso está repartida
entre los clientes y los servidores, aunque son más importantes las ventajas de tipo
organizativo debidas a la centralización de la gestión de la información y la separación de
responsabilidades, lo que facilita y clarifica el diseño del sistema.
La separación entre cliente y servidor es una separación de tipo lógico, donde el servidor no se
ejecuta necesariamente sobre una sola máquina ni es necesariamente un sólo programa. Los
tipos específicos de servidores incluyen los servidores web, los servidores de archivo, los
servidores del correo, etc. Mientras que sus propósitos varían de unos servicios a otros, la
arquitectura básica seguirá siendo la misma.
Una disposición muy común son los sistemas multicapa en los que el servidor se descompone
en diferentes programas que pueden ser ejecutados por diferentes computadoras
aumentando así el grado de distribución del sistema.
La red Cliente/Servidor es aquella red de comunicaciones en la que todos los clientes están
conectados a un servidor, en el que se centralizan los diversos recursos y aplicaciones con que
se cuenta; y que los pone a disposición de los clientes cada vez que estos son solicitados. Esto
significa que todas las gestiones que se realizan se concentran en el servidor, de manera que
en él se disponen los requerimientos provenientes de los clientes que tienen prioridad, los
archivos que son de uso público y los que son de uso restringido, los archivos que son de sólo
lectura y los que, por el contrario, pueden ser modificados, etc. Este tipo de red puede
utilizarse conjuntamente en caso de que se esté utilizando en una red mixta.
PHP
PHP es un acrónimo recursivo que significa PHP Hypertext Pre-processor (inicialmente PHP
Tools, o, Personal Home Page Tools). Fue creado originalmente por Rasmus Lerdorf en 1994.
Publicado bajo la PHP License, la Free Software Foundation considera esta licencia como
software libre.
Historia
Fue originalmente diseñado en Perl, con base en la escritura de un grupo de CGI binarios
escritos en el lenguaje C por el programador danés-canadiense Rasmus Lerdorf en el año 1994
para mostrar su currículum vítae y guardar ciertos datos, como la cantidad de tráfico que su
página web recibía. El 8 de junio de 1995 fue publicado "Personal Home Page Tools" después
de que Lerdorf lo combinara con su propio Form Interpreter para crear PHP/FI.
PHP 3
Dos programadores israelíes del Technion, Zeev Suraski y Andi Gutmans, reescribieron el
analizador sintáctico (parser en inglés) en el año 1997 y crearon la base del PHP3, cambiando
el nombre del lenguaje a la forma actual. Inmediatamente comenzaron experimentaciones
públicas de PHP3 y fue publicado oficialmente en junio del 1998.
Para 1999, Suraski y Gutmans reescribieron el código de PHP, produciendo lo que hoy se
conoce como motor Zend. También fundaron Zend Technologies en Ramat Gan, Israel.
PHP 4
En mayo de 2000 PHP 4 fue lanzado bajo el poder del motor Zend Engine 1.0. El día 13 de julio
de 2007 se anunció la suspensión del soporte y desarrollo de la versión 4 de PHP.
PHP 5
El 13 de julio de 2004, fue lanzado PHP 5, utilizando el motor Zend Engine 2.0 (o Zend Engine
2). La versión más reciente de PHP es la 5.3.3 (22 de julio de 2010), que incluye todas las
ventajas que provee el nuevo Zend Engine 2 como:
Mejoras de rendimiento.
Iteradores de datos.
Manejo de excepciones.
Es un lenguaje multiplataforma.
Capacidad de conexión con la mayoría de los motores de base de datos que se utilizan
en la actualidad, destaca su conectividad con MySQL y PostgreSQL.
Posee una amplia documentación en su página oficial, entre la cual se destaca que
todas las funciones del sistema están explicadas y ejemplificadas en un único archivo
de ayuda.
Es libre, por lo que se presenta como una alternativa de fácil acceso para todos.
Si bien PHP no obliga a quien lo usa a seguir una determinada metodología a la hora de
programar (muchos otros lenguajes tampoco lo hacen), aun estando dirigido a alguna
en particular, el programador puede aplicar en su trabajo cualquier técnica de
programación y/o desarrollo que le permita escribir código ordenado, estructurado y
manejable. Un ejemplo de esto son los desarrollos que en PHP se han hecho del
patrón de diseño Modelo Vista Controlador (o MVC), que permiten separar el
tratamiento y acceso a los datos, la lógica de control y la interfaz de usuario en tres
componentes independientes (ver más abajo Frameworks en PHP).
Estándar Zend:
Los estándares nos permiten disminuir muchos costos que surgen a la hora de desarrollar
sistemas que van desde la incorporación de nuevos recursos hasta el entendimiento de los
sistemas "legacy" ("sistemas heredados") que existen en cualquier organización, ayudan a
asegurar que el código tenga una alta calidad, menos errores, y pueda ser mantenido
fácilmente. Si todos los desarrolladores programan como quieren, o cualquiera inventa su
"propio estándar" o toma el de "cualquier estándar que use otro proyecto", indudablemente
esto significará caos.
El motor Zend es un motor de procesamiento para la interpretación y cifrado del código php,
desde la versión 4. Desarrollado por Zend Technologies para brindar un equipo de soporte y
acelerar la carga de aplicaciones realizadas con php.
Entre las funciones más importantes que realiza este motor de procesamiento está la
posibilidad de cifrar el código fuente de las páginas desarrolladas en php para así luego hacer
posible la comercialización de este.
General
Para archivos que contengan únicamente código PHP, la etiqueta de cierre ("?>") no está
permitida. No es requerida por PHP.
Identación
La identación suele estar compuesta por 4 espacios. Las tabulaciones no están permitidas.
La longitud recomendable para una línea de código es de 80 caracteres. Líneas más largas
pueden ser aceptables en algunas situaciones. El tamaño máximo de cualquier línea de código
PHP es de 120 caracteres.
Final de línea
El Final de Línea sigue la convención de archivos de texto Unix. Las líneas deben acabar con un
carácter linefeed (LF).
Nombres de Archivo
Para cualquier otro archivo, sólo caracteres alfanuméricos, barras bajas (_) y guiones (-) están
permitidos. Los espacios en blanco están estrictamente prohibidos.
Cualquier archivo que contenga código PHP debe terminar con la extensión " .php ", con la
excepción de los scripts de la vista.
Funciones y Métodos
Los nombres de funciones pueden contener únicamente caracteres alfanuméricos. Los guiones
bajos (_) no están permitidos.
Los nombres de funciones deben empezar siempre con una letra minúscula. Cuando un
nombre de función consiste en más de una palabra, la primera letra de cada nueva palabra
debe estar en mayúsculas. Esto es llamado comúnmente como formato "camelCase".
Variables
Los nombres de variables pueden contener caracteres alfanuméricos. Las barras bajas (_) no
están permitidas.
Para las variables de instancia que son declaradas con el modificador "private" o "protected",
el primer carácter de la variable debe ser una única barra baja (_). Este es el único caso
admisible de una barra baja en el nombre de una variable. Las variables declaradas como
"public" no pueden empezar nunca por barra baja.
El código PHP debe estar delimitado siempre por la forma completa de las etiquetas PHP
estándar:
<?php ?>
Declaración de clases
Las Clases deben ser nombradas de acuerdo a la convención de nombres de Zend Framework.
La llave "{" deberá escribirse siempre en la línea debajo del nombre de la clase ("one true
brace").
Todo el código contenido en una clase debe ser separado con cuatro espacios.
Las Funciones deben ser nombradas de acuerdo a las convenciones de nombrado de Zend
Framework.
Los métodos dentro de clases deben declarar siempre su visibilidad usando un modificador
private , protected , o public .
Como en las clases, la llave "{" debe ser escrita en la línea siguiente al nombre de la función
("one true brace" form). No está permitido un espacio entre el nombre de la función y el
paróntesis de apertura para los argumentos.
Sentencias de Control
Las sentencias de control basadas en las construcciones if y elseif deben tener un solo espacio
en blanco antes del paréntesis de apertura del condicional y un solo espacio en blanco después
del paréntesis de cierre.
Dentro de las sentencias condicionales entre paréntesis, los operadores deben separarse con
espacios, por legibilidad. Se aconseja el uso de paréntesis internos para mejorar la agrupación
lógica en expresiones condicionales más largas.
La llave de apertura "{" se escribe en la misma línea que la sentencia condicional. La llave de
cierre "}" se escribe siempre en su propia línea. Cualquier contenido dentro de las llaves debe
separarse con cuatro espacios en blanco.
XAMPP
El programa está liberado bajo la licencia GNU y actúa como un servidor web libre, fácil de usar
y capaz de interpretar páginas dinámicas. Actualmente XAMPP está disponible para Microsoft
Windows, GNU/Linux, Solaris y MacOS.
Características y Requisitos.
XAMPP solamente requiere descargar y ejecutar un archivo zip, tar o exe, con unas pequeñas
configuraciones en alguno de sus componentes que el servidor Web necesitará. XAMPP se
actualiza regularmente para incorporar las últimas versiones de Apache/MySQL/PHP y Perl.
También incluye otros módulos como OpenSSL y phpMyAdmin.
Aplicaciones
El nombre hojas de estilo en cascada viene del ingles Cascading Style Sheets, del que toma sus
siglas. CSS es un lenguaje usado para definir la presentación de un documento estructurado
escrito en HTML o XML (y por extensión en XHTML). El W3C (World Wide Web Consortium) es
el encargado de formular la especificación de las hojas de estilos que servirán de estándar para
los agentes de usuarios o navegadores.
La idea por lo cual CSS fue desarrollado, es para separar la estructura de un documento de
su presentación.
El código propio de los estilo puede ser agregado como un independiente separado o incluirse
en el documento HTML. Para el último caso se pueden definir estilos generales en la cabecera
del documento o en cada etiqueta particular por medio del atributo "<style>".
CSS 2.1
La primera revisión de CSS2, normalmente conocida como "CSS 2.1", permitió corregir algunos
errores que se hallaron en CSS2, eliminando funcionalidades poco soportadas o inoperables en
los navegadores y añadiendo nuevas especificaciones.
En abril de 2011, CSS 2.1 volvió a ser propuesta como candidata, y después de ser revisada por
el W3C Advisory Committee, fue finalmente publicada como recomendación oficial el 7 de
junio de 2011.
JavaScript
Es usado principalmente del lado del cliente (client-side), implementado como parte de
un navegador web permitiendo así mejorar la interfaz de usuario y las páginas web dinámicas,
aunque también existe una forma de JavaScript del lado del servidor (Server-side JavaScript o
SSJS).
JavaScript se diseñó con una sintaxis similar al lenguaje C, aunque adopta nombres y
convenciones del lenguaje de programación Java. Sin embargo Java y JavaScript no están
relacionados, sus semánticas y propósitos son diferentes.
Todos los navegadores modernos interpretan el código JavaScript integrado en las páginas
web. Para interactuar con una página web el lenguaje JavaScript es provisto de una
implementación del Document Object Model (DOM).
XHTML
Siglas del inglés eXtensible HyperText Markup Language. XHTML es realmente HTML
expresado como XML válido. Se dice que es más estricto a nivel técnico, permitiendo así ser
más fácil al hacer cambios o buscar errores entre otros.
En la versión 1.0, XHTML es realmente una versión XML de HTML, por lo que tiene,
básicamente, las mismas funcionalidades, pero cumple las especificaciones, más estrictas, de
XML. Tiene como objetivo avanzar en el proyecto del World Wide Web Consortium de lograr
una web semántica, donde la información, y la forma de presentarla estén claramente
separadas.
SQL
El lenguaje de consulta estructurado o SQL (por sus siglas en inglés structured query language)
es un lenguaje declarativo de acceso a bases de datos relacionales que permite especificar
diversos tipos de operaciones en éstas. Una de sus características es el manejo del álgebra y el
cálculo relacional lo que permite realizar consultas con el fin de recuperar -de manera sencilla-
información de interés de una base de datos, así como también hacer cambios sobre ella. Es
un lenguaje de cuarta generación (4GL).
Orígenes y evolución
Los orígenes del SQL están ligados a los de las bases de datos relacionales. En 1970 E. F. Codd
propone el modelo relacional y asociado a éste un sublenguaje de acceso a los datos basado
en el cálculo de predicados. Los laboratorios de IBM se basaron en estas ideas para definir el
lenguaje SEQUEL (Structured English QUEry Language) que después pasaría ser ampliamente
implementado por el sistema de gestión de bases de datos experimental System R,
desarrollado en 1977 también por IBM. Pero realmente fue Oracle quien lo introdujo por
primera vez en 1979 en un programa comercial.
El SEQUEL fue el predecesor de SQL, siendo éste una versión evolucionada del primero. El SQL
pasó a ser el lenguaje por excelencia de los diversos sistemas de gestión de bases de datos
relacionales surgidos en los años siguientes y es por fin estandarizado en 1986 por el ANSI,
dando lo que dio lugar a la primera versión estándar de este lenguaje, el "SQL-86" o "SQL1".
Un año después el estándar fue también adoptado por la ISO.
Pero este primer estándar no cubrió todas las necesidades de los desarrolladores. Así que en
1992 se lanzó un nuevo estándar ampliado y revisado del SQL llamado "SQL-92" o "SQL2".
Características generales
El SQL es un lenguaje de acceso a bases de datos que explota la flexibilidad y potencia de los
sistemas relacionales permitiendo gran variedad de operaciones en éstos últimos.
Optimización
Como ya se ha mencionado, y suele ser común en los lenguajes de acceso a bases de datos de
alto nivel, el SQL es un lenguaje declarativo. O sea, que especifica qué es lo que se quiere y no
cómo conseguirlo, por lo que una sentencia no establece explícitamente un orden de
ejecución.
El orden de ejecución interno de una sentencia puede afectar gravemente a la eficiencia del
SGBD, por lo que se hace necesario que éste lleve a cabo una optimización antes de su
ejecución. Muchas veces, el uso de índices acelera una instrucción de consulta, pero ralentiza
la actualización de los datos. Dependiendo del uso de la aplicación, se priorizará el acceso
indexado o una rápida actualización de la información. La optimización difiere sensiblemente
en cada motor de base de datos y depende de muchos factores.
Apache
Secure Sockets Layer (SSL; en español «capa de conexión segura») y su sucesor Transport
Layer Security (TLS; en español «seguridad de la capa de transporte») son protocolos
criptográficos que proporcionan comunicaciones seguras por una red, comúnmente Internet.
Descripción
SSL proporciona autenticación y privacidad de la información entre extremos
sobre Internet mediante el uso de criptografía. Habitualmente, sólo el servidor es autenticado
(es decir, se garantiza su identidad) mientras que el cliente se mantiene sin autenticar.
SSL implica una serie de fases básicas:
Para criptografía de clave pública: RSA, Diffie-Hellman, DSA (Digital Signature Algorithm)
o Fortezza;
Para cifrado simétrico: RC2, RC4, IDEA (International Data Encryption
Algorithm), DES (Data Encryption Standard), Triple DES y AES (Advanced Encryption
Standard);
Con funciones hash: MD5 o de la familia SHA.
Cómo funciona:
El protocolo SSL intercambia registros; opcionalmente, cada registro puede ser comprimido,
cifrado y empaquetado con un código de autenticación del mensaje (MAC). Cada registro tiene
un campo de content_type que especifica el protocolo de nivel superior que se está usando.
Cuando se inicia la conexión, el nivel de registro encapsula otro protocolo, el
protocolo handshake, que tiene el content_type 22.
El cliente envía y recibe varias estructuras handshake:
MVC
Muchos de los sistemas informáticos utilizan un Sistema de Gestión de Base de Datos para
gestionar los datos: en líneas generales del MVC corresponde al modelo. La unión entre capa
de presentación y capa de negocio conocido en el paradigma de la Programación por
capas representaría la integración entre Vista y su correspondiente Controlador de eventos y
acceso a datos, MVC no pretende discriminar entre capa de negocio y capa de presentación
pero si pretende separar la capa visual gráfica de su correspondiente programación y acceso a
datos, algo que mejora el desarrollo y mantenimiento de la Vista y el Controlador en paralelo,
ya que ambos cumplen ciclos de vida muy distintos entre sí.
Metodología de Trabajo
Métodos:
Indica las técnicas utilizadas para construir el software, siguiendo diferentes tipos de modelos
(Cascada, Estructurada, Espiral, etc.), estos nos dictan los diferentes pasos a seguir en todo el
proceso de desarrollo.
Modelo en Cascada:
Ordena rigurosamente las etapas del ciclo de vida del software, de tal forma que el inicio de
cada etapa debe esperar a la finalización de la inmediatamente anterior.
Análisis de requisitos
Diseño del Sistema
Diseño del Programa
Codificación
Pruebas
Implantación
Mantenimiento
Análisis de requerimientos
En esta fase se analizan las necesidades de los usuarios finales del software para determinar
qué objetivos debe cubrir. De esta fase surge una memoria llamada SRD (documento de
especificación de requisitos), que contiene la especificación completa de lo que debe hacer el
sistema sin entrar en detalles internos.
Es importante señalar que en esta etapa se debe consensuar todo lo que se requiere del
sistema y será aquello lo que seguirá en las siguientes etapas, no pudiéndose requerir nuevos
resultados a mitad del proceso de elaboración del software.
Diseño del Sistema
Codificación o Programación
Pruebas
Implantación
El software obtenido se pone en producción. Se implantan los niveles software y hardware que
componen el proyecto. La implantación es la fase con más duración y con más cambios en el
ciclo de elaboración de un proyecto. Es una de las fases finales del proyecto.
Durante la explotación del sistema de software pueden surgir cambios, bien para corregir
errores o bien para introducir mejoras. Todo ello se recoge en los Documentos de Cambios.
Análisis y diseño
1. INTRODUCCION
1.1 Propósito
Con el propósito de presentar todas las funcionalidades y capacidades que tendrá el Sistema
de Gestión Académica, se ha redactado el presente documento.
Se llevará un registro de las notas de los estudiantes permitiendo el fácil acceso a estas y otras
informaciones de relevancia académica a los mismos estudiantes como también a los
docentes.
El personal que podrá interactuar con el sistema está compuesto por la Directora, Secretaria,
Administrador del sistema, Docente y Alumno, todos y cada uno con diferentes privilegios y
funciones.
CMML: Colegio Madre María Luis, centro educativo al cual está dirigido el sistema de gestión
académica.
IEEE Std 610.12-1990. Software Engineering Standards Committee of the IEEE Computer
Society
IEEE Std 830-1998. Software Engineering Standards Committee of the IEEE Computer Society
1.6 Resumen
En las siguientes secciones del documento se describe de forma general lo que se espera del
producto, sus funciones, las características que deben poseer los usuarios del producto, las
limitaciones bajo las que el producto no podría funcionar correctamente y/o eficientemente,
algunos requisitos a futuro. También de manera más específica se describe la interfaz que
tendrá el producto, atributos que deberá tener el sistema sobre el cual funcionará, requisitos
para el rendimiento y otros requisitos.
2. DESCRIPCIÓN GENERAL
SAGAT es el primer proyecto software en su clase en ser utilizado para la gestión académica en
el CMML.
2.4 Restricciones
Políticas de la Empresa
Limitaciones de Hardware
El computador que tendrá la función de servidor web deberá cumplir con las siguientes
características mínimas:
3 Gb de RAM
Tarjeta de Red
521 Mb de RAM
40 Gb de Disco Duro
Tarjeta de Red
Lenguajes de Programación
PHP 5.0
Javascript
MySql
Protocolos de Comunicación
HTTP 1.1
Consideraciones de Seguridad
SAGAT mantendrá la integridad de los datos además de asegurar la protección de los mismos
ante posibles modificaciones por parte de usuarios no autorizados.
2.5 Suposiciones y Dependencias
Se da por sentado que el servidor web trabajará bajo el Sistema Operativo Linux.
Se podría desarrollar por separado un sistema contable completo que trabajará en conjunto
con SAGAT para manejar la solvencia de los alumnos.
Con el fin de ayudar a los padres de familia muy ocupados se podría llegar a implementar los
pagos en línea con el propósito de no hacer perder tiempo preciado en grandes colas.
3. REQUISITOS ESPECIFICOS
Como cualquier aplicación típica WEB el sistema constará con una interfaces de usuario
compuesta por formularios, menús, botones, cajas de texto, etc.
Se presentarán gráficos en caso de ser necesario con el objetivo de explicar mejor resultados
de consultas relacionadas con rendimiento. La introducción de datos se hará mayormente por
medio de cajas de texto o por selección de opciones.
La interfaz será amigable e intuitiva, para mejorar la experiencia del usuario con el sistema.
El Computador donde estará instalado el sistema deberá constar con una tarjeta de red un
mínimo de 3 Gb de RAM, 120Gb de Disco duro y un procesador Intel Dual core a 2.0
Se deberá constar con todos los protocolos de red necesarios para la comunicación entre el
servidor y las terminales, además un navegador web compatible.
3.2 Requisitos Funcionales
RF 1 Matricular Alumno
Introducción:
Este proceso deberá capturar todos los datos del futuro alumno para que su registro sea
incorporado al resto del cuerpo estudiantil.
Entradas:
Por Pantalla:
Nombre del Alumno
Apellido del Alumno
Fecha de Nacimiento (aa-mm-dd)
Cedula del Alumno
Selección del sexo del alumno
Año Académico
Selección de la religión que profesa
Nombre del padre
Apellido del padre
Cedula del padre
Trabaja (Selección de opción: Si o No.)
Oficio del padre
Lugar de Trabajo
Teléfono del padre
Nombre de la madre
Apellido de la madre
Cedula de la madre
Trabaja (Selección de opción: Si o No.)
Oficio de la madre
Lugar de Trabajo
Teléfono de la madre
Procesos:
Se ingresaran todos los datos en el formulario, se validarán los datos para comprobar
que cumplan con el formato y se guardaran los datos del alumno.
Salida:
Una vez almacenados los datos mostrará mensaje Matriculado con Éxito.
RF 2 Re matricular Alumno
Introducción:
Este proceso actualizará el grado del alumno y cualquier dato que necesite ser cambiado si la
información actual no coincide con la del año anterior.
Entradas:
Por Pantalla:
Numero de Carnet del Alumno
Por Sistema:
Cundo el sistema consulte los datos del alumno con el Numero de Carnet brindara
estos datos al proceso.
Procesos:
Salida:
Una vez que se valide que los campos cumplen con el formato, si el estudiante
fue matriculado en el mismo año no se guardaran los cambios y el sistema solicitara
ingresar nuevamente el número del carnet, los datos editados en este proceso solo se
guardarán si el sistema comprueba que no se había matriculado el alumno en el
mismo año.
Introducción:
En esta función se podrán editar los datos de los alumnos previamente matriculado para
corregir cualquier error cometido en el proceso de matrícula o para actualizar algún dato.
Entradas:
Por Pantalla:
Por Sistema:
Cuando el sistema consulte los datos del alumno con el Número de Carnet brindara
estos datos al proceso.
Procesos:
Salida:
Una vez que se valide que los campos cumplen con el formato, se actualizaran
los datos registrados en la BD. Mostrará mensaje Actualizado con Éxito.
RF 4 Retirar Alumno
Introducción:
Esta función permitirá cambiar el estado de un estudiante de activo a inactivo en el caso que
abandone el centro CMML.
Entradas:
Por Pantalla:
Selección del Grupo
Selección de la opción Retirar correspondiente al alumno elegido.
Por Sistema:
El sistema consultará los datos del alumno seleccionado y los brindará al proceso.
Procesos:
Salida:
Se mostrara la lista actualizada de los alumnos en el grupo.
Introducción:
Entradas:
Por Pantalla:
Nombres
Apellidos
Fecha de nacimiento (aa-mm-dd)
Cedula
Selección del sexo del docente
Selección de la religión
Teléfono
Celular
Dirección
Profesión
Otros estudios
Documentos Entregados
Procesos:
Salida:
Una vez que se valide el formato de los campos, si el sistema detecta que se está
realizando un duplicado de un registro existente no almacenara ningún dato en caso
contrario ingresará el nuevo registro de docente en la BD, para ambas situaciones
mostrará un formulario vacío para ingresar nuevos registros.
Introducción:
Este proceso permitirá la edición de los datos del maestro en caso de que se necesite cambiar
los datos actuales.
Entradas:
Por Pantalla:
Selección del docente a modificar.
Por Sistema:
La identificación del docente será brindada al proceso para consultar los datos en la
BD.
Procesos:
Salida:
Se mostrará el expediente del docente con los datos actualizados.
RF 7 Retirar Docente
Introducción:
Entradas:
Por Pantalla:
Lista de Docentes
Selección de la opción Retirar.
Por Sistema:
Se brindara el id del docente al proceso para la búsqueda de los datos
correspondientes.
Procesos:
Se ingresará al listado de los docentes, selección de la opción Retirar para el docente
correspondiente.
Salida:
Se mostrará la lista actualizada de los docentes activos en el colegio.
RF 8 Añadir Asignatura
Introducción:
Este proceso permite que se guarde el nombre y descripción de una materia que iniciará a
impartirse en el CMML.
Entradas:
Por Pantalla:
Nombre de la Asignatura
Categoría
Por Sistema:
Id de la Asignatura será brindado al proceso.
Procesos:
Se ingresará el nombre de la asignatura y la categoría en la que estaría incluida esa
materia, se creará un id para la asignatura que será utilizado internamente por el
sistema como referencia.
Salida:
Listado Actualizado de las asignaturas en el pensum.
RF 9 Retirar Asignatura
Introducción:
Se podrá cambiar el estado de una asignatura a estado inactivo cuando no se valla a seguir
impartiendo.
Entradas:
Por Pantalla:
Listado de la asignaturas.
Selección de la opción Retirar.
Por Sistema:
Id de la Asignatura será brindado al proceso.
Procesos:
Se ingresará a las asignaturas para visualizar el listado de asignaturas inscritas, se
elegirá la opción Retirar correspondiente a la asignatura que no estará siendo
impartida.
Salida:
Listado actualizado de las asignaturas activas en el centro.
RF 10 Restablecer Asignatura
Introducción:
Será posible la activación de una asignatura que fue retirada por error o que decidió incluirse
una vez más en el pensum.
Entradas:
Por Pantalla:
Listado de la asignaturas.
Selección de la opción Activar.
Por Sistema:
Id de la Asignatura será brindado al proceso.
Procesos:
Se ingresará a las asignaturas para visualizar el listado de asignaturas inscritas, se
elegirá la opción Activar correspondiente a la asignatura que será impartida una vez
más en el CMML.
Salida:
Listado actualizado de las asignaturas activas en el centro.
RF 11 Dividir Grupo
Introducción:
Se podrá separar un grupo completo de alumnos en secciones para poder distribuir la cantidad
de estudiantes en grupos más pequeños.
Entradas:
Por Pantalla:
Grado del Grupo
Numero de Secciones.
Por Sistema:
Ninguna
Procesos:
Se elegirá el grupo que se va a separar en secciones, selección del número de
secciones en que será dividido el grupo, se registran las secciones para el grupo y el
total de estudiantes matriculados en el mismo será repartido proporcionalmente en
cada uno.
Salida:
Mostrará listado de grupos con el número de secciones actualizado.
RF 12 Restablecer Grupo
Introducción:
Esta función permitirá corregir cualquier error cometido en la división del grupo ya que se
unirán las secciones en un solo grupo o se distribuirán los alumnos en un número de secciones
menor.
Entradas:
Por Pantalla:
Listado de grupos con sus respectivas secciones.
Por Sistema:
Ninguna
Procesos:
Se visualizará el listado de grupos con sus secciones, se elegirá la opción Retirar en la
sección que se va a eliminar y el sistema unirá todos los alumnos en un solo grupo para
luego dividir o no el grupo en las secciones deseadas.
Salida:
Listado Actualizado de los grupos con sus secciones.
RF 13 Designar Asignatura
Introducción:
Esta función permitirá delegar una asignatura a un maestro específico el cual será el encargado
de impartirla.
Entradas:
Por Pantalla
Grupo y Sección
Selección del Nombre del Docente
Selección del Nombre de la Asignatura
Por Sistema:
Se brindara el id del docente y el id de la asignatura al proceso para establecer la
relación.
Procesos:
Se seleccionará el grupo para el que estamos designando las asignaturas, se elegirá el
maestro y luego la asignatura que le será encargada, si se designa un maestro con una
materia de categoría Conducta será convertido automáticamente en el profesor guía
de ese grupo.
Salida:
Se mostrará el listado de las asignaturas con el docente elegido para impartirla.
RF 14 Desasignar Materia
Introducción:
Esta función se utilizará para retirar la asignación de una materia al docente elegido,
con el propósito de utilizar un docente diferente.
Entradas:
Por Pantalla:
Grupo
Por Sistema:
La relación entre el id del docente y el id de la asignatura es brindada al proceso.
Procesos:
Se elige el grupo, se podrán ver las asignaturas con el profesor que la imparte en ese
grupo, se elegirá la opción Borrar, se eliminará la relación entre el docente y esa
asignatura.
Salida:
Listado actualizado de las Materias Asignadas.
RF 15 Publicar Noticia
Introducción:
Se podrá ingresar noticias e información para mantener a los estudiantes atentos a las
actividades académicas.
Entradas:
Por Pantalla:
Título
Descripción de la noticia
Fecha y Hora de Publicación
Fecha y Hora de Caducidad
Por Sistema:
Ninguna
Procesos:
Se registrará un titulo para la noticia, se ingresará el texto que será publicado, además
de brindar la fecha en que fue publicado y la fecha de validez.
Salida:
Se muestra el formulario vacío para el ingreso de otra noticia.
Introducción:
En esta función podremos guardar los datos del Acta en que están registradas las notas de
reparación.
Entradas:
Por Pantalla:
Índice de acta (Libro-Acta-Folio)
Por Sistema:
Ninguna
Procesos:
Se ingresara el Número de Libro, de Acta y de Folio correspondiente y se almacenará el
dato.
Salida:
Se mostrará la lista actualizada de los grupos con su respectivo índice de acta.
Introducción:
En esta función podremos guardar los datos del Acta en que están registradas las notas de los
parciales.
Entradas:
Por Pantalla:
Índice de acta (Libro-Acta-Folio)
Por Sistema:
Ninguna
Procesos:
Se ingresara el Número de Libro, de Acta y de Folio correspondiente y se almacenará el
dato.
Salida:
Se mostrará la lista actualizada de los grupos con su respectivo índice de acta.
RF 18 Subir Fotos
Introducción:
Entradas:
Por Pantalla:
Titulo
Comentario de la Foto
Ruta de ubicación del archivo
Por Sistema:
Se envía la ruta de la ubicación del archivo al sistema
Procesos:
El sistema buscará la ruta que se proporcione y añadirá el archivo especificado,
además se ingresara algún comentario con la fotografía a manera de descripción de la
actividad que se estaba realizando.
Salida:
Se mostrara mensaje Se añadió foto con éxito.
RF 19 Eliminar Fotos
Introducción:
Esta función podrá utilizarse para eliminar o borrar la foto que se había añadido con el
propósito de tener una galería actualizada o corregir si se había añadido por error.
Entradas:
Por Pantalla:
Lista de las fotos actuales.
Selección de la opción Eliminar.
Por Sistema:
Se envía la ruta de ubicación del archivo al sistema.
Procesos:
El usuario seleccionará la foto que no desea permanezca en la galería y al seleccionar
la opción Eliminar se borrara de la galería.
Salida:
Se mostrará la galería actualizada.
Introducción:
Con esta función se podrá editar la información de las páginas estáticas que contienen la
información básica del CMML.
Entradas:
Por Pantalla:
Se introducirá el texto.
Por Sistema:
Ninguna
Procesos:
Se podrá actualizar la información contenida en la reseña histórica o en los
reglamentos por ejemplo, se introducirá todo el texto actualizado y se guardará
para ser presentado.
Salida:
Se mostrará mensaje de Realizado con Éxito.
Introducción:
Con esta función el docente será capaz de ingresar una nota parcial para la asignatura que este
impartiendo.
Entradas:
Por Pantalla:
Contraseña del Docente
Nota Parcial
Procesos:
El docente tendrá que ingresar su usuario y contraseña, se muestra la lista de
materias impartidas por el docente en cual al seleccionar para ingresar las notas
correspondientes se muestra la lista de los alumnos que llevan dicha materia, luego de
ingresar las notas se mostrarán las notas de los parciales anteriores
Salida:
Notas de los alumnos y su nota final actualizadas del alumno.
Introducción:
Con esta función el docente será capaz de ingresar una nota de reparación para la asignatura
que imparte.
Entradas:
Por Pantalla:
Contraseña del Docente
Nota de Reparación
Procesos:
El docente tendrá que ingresar su usuario y contraseña, se muestra la lista de
materias impartidas por el docente la cual se seleccionara para ingresar las notas
correspondientes, se muestra la lista de los alumnos que reparan dicha materia y que
alcanzaron el derecho, luego de ingresar la nota de reparación.
Salida:
Se mostraran las notas de reparación de cada alumno.
RF 23 Modificar Nota
Introducción:
Con esta función la dirección será capaz de modificar una nota parcial para una asignatura
cuando sea necesario corregirla.
Entradas:
Por Pantalla:
Carnet del Alumno
Nota Parcial
Procesos:
El proceso pedirá el número de carnet del alumno, se obtendrá como resultados las
asignaturas con las notas correspondientes, y en ese momento se hará una sustitución
de la nota actual por la nueva y se guardarán los datos.
Salida:
Se mostraran las asignaturas con sus correspondientes notas.
Introducción:
Con esta función la dirección será capaz de modificar una nota de reparación para una
asignatura cuando sea necesario corregirla.
Entradas:
Por Pantalla:
Carnet del Alumno
Nota Reparación
Procesos:
El proceso pedirá el número de carnet del alumno, se obtendrá como resultados las
asignaturas con las notas correspondientes, en ese momento añadirá la nota de
reparación y se guardarán los datos.
Salida:
Se mostraran las asignaturas con sus correspondientes notas reparación de la materia.
RF 25 Mostrar Estadísticas
Introducción:
Este proceso permite conocer el rendimiento académico obtenido por año lectivo, en
determinada asignatura, por el grupo de Docentes, a nivel de Primaria, Secundaria y de todo el
colegio centro.
Entradas:
Por Pantalla:
Selección de la Opción Estadísticas.
Por sistema:
Año Académico
Asignatura
Grupo de Docentes
Primaria
Secundaria
Colegio
Procesos:
Se muestran cada una de las opciones mencionadas, para el caso de rendimiento de
docentes, se genera el rendimiento académico obtenido por los estudiantes de cada
docente de primaria, secundaria o todo el colegio.
Salida:
Se muestra los resultados según la opción proporcionada en la entrada.
RF 26 Cambiar Contraseña de Usuario
Introducción:
Entradas:
Por Pantalla:
Nombre del Usuario
Contraseña Actual
Nueva Contraseña
Por Sistema:
Una vez validado el Nombre de Usuario y Contraseña, brindara los datos al proceso.
Procesos:
Se buscara los datos del usuario por medio del nombre del mismo, se validara que el
campo Contraseña Actual coincida de hecho con la contraseña del usuario, luego se
actualizara el registro de la contraseña en la BD.
Salida:
Se mostrara mensaje de Cambio realizado con éxito.
RF 27 Respaldar BD
Introducción:
Esta operación es exclusiva del Administrador del sistema y permite realizar una copia de
seguridad de los datos de toda la base de datos.
Entradas:
Por Pantalla:
Selección de la opción Copia de Seguridad.
Por Sistema:
El sistema enviara el nombre de la BD y de las tablas que la componen al proceso.
Procesos:
Se selecciona la opción Copia de Seguridad para indicar que se necesita realizar
respaldo de los datos almacenados actualmente en la BD.
Salida:
Se generará un archivo que puede ser guardado en cualquier dispositivo de
almacenamiento.
RF 28 Restaurar BD
Introducción:
Esta función permite a partir de una copia de seguridad, restaurar los datos de los respaldos
Entradas:
Por Pantalla:
Selección de la Opción Restaurar Copia de Seguridad.
Por Sistema:
Ruta de ubicación del archivo
Procesos:
Seleccionar la Opción Restablecer Copia de Seguridad, se no permitirá elegir la ruta
de ubicación del archivo de respaldo que va a ser cargado por el sistema y contiene los
datos previamente respaldados.
Salida:
Se mostrara mensaje Copia de Seguridad Restaurada.
RF 29 Visualizar Notas
Introducción:
Los estudiantes serán capaces de consultar en línea sus notas parciales, notas de reparación y
el promedio de estas notas.
Entradas:
Por Pantalla:
Numero de Carnet del Alumno
Procesos:
El alumno ingresara su número de carnet y el sistema consultara en la BD por los
datos y las notas que se han registrado para este estudiante en cada asignatura.
Salida:
Tabla de notas parciales, nota fina y/o de reparación por cada asignatura.
RF 31 Eliminar Noticia
Introducción:
Esta función permitirá al administrador del sistema la eliminación de una noticia, ya sea por un
error en la publicación o por su caducidad en fecha de valides.
Entradas:
Por Pantalla:
Lista de las noticias publicadas.
Por Sistema:
Envía el id de noticia la cual será eliminada
Procesos:
Se podrá eliminar una noticia dando en la opción del eliminar que proporciona
el sistema.
Salida:
Se muestra la lista de las noticias actualmente publicadas.
RF 32 Restablecer Docente
Introducción:
Por Pantalla:
Lista de los docentes inactivos con la opción restablecer.
Por Sistema:
Envía el id del docente que será reactivado.
Procesos:
Se podrá reactivar en sus labores un docente seleccionado la opción
restablecer que proporciona el sistema.
Salida:
Se muestra la lista de los docentes inactivos.
RF 33 Restablecer Alumno
Introducción:
Esta función permitirá al administrador del sistema pasar al estado activo a un alumno que
halla sido retirado del centro por error.
Entradas:
Por Pantalla:
Introducir el número de carnet del alumno a reactivar.
Por Sistema:
Envía el id del alumno a reactivar.
Procesos:
Se podrá reactivar a un alumno dando en la opción restablecer que
proporciona el sistema.
Salida:
Se muestran el nombre, apellido, fecha nacimiento, grado y estado puesto a activo del
alumno.
2.3 Requisitos no funcionales
Se espera que el sistema soporte un mínimo de 10 usuarios conectados desde la red local y un
mínimo de 15 usuarios conectados desde internet. Además se estima que el sistema sea
accedido por al menos 3 usuarios diariamente y que se agreguen nuevos registros todos los
días.
Se tiene planificado que con los 120 Gb de almacenamiento mínimo se puedan guardar un
mínimo de X registros.
El software se verá limitado por las limitaciones que tenga la plataforma en la cual se ejecute,
siempre y cuando se cumplan unos requisitos mínimos.
Requisitos software
Requisitos software
Requisitos hardware
El acceso a la información está restringido a ciertos usuarios del sistema, cada usuario del
sistema tiene permisos específicos para realizar operaciones sobre el mismo.
2.3.4 Fiabilidad
2.3.5 Disponibilidad
2.3.6 Mantenibilidad
El administrador del sistema debe realizar copias de seguridad, y hacer el respaldo de las
mismas. Se recomienda realizar las copias mensualmente
2.3.7 Portabilidad
El uso del lenguaje PHP proporciona al sistema la característica de ser accesible desde
cualquier plataforma de sistema operativo y con cualquier explorador web.
Matricular alumno
Re matricular alumno
Retirar alumno
Retirar docente
Registrar docente
Registrar Asignatura
Retirar Asignatura
Designar Asignatura a docente
Deshacer secciones
Asignar actas a calificaciones
Generar Certificado
Abrir sección
Subir noticia
Registrar nota de parcial
Eliminar imagen
Modificar notas reparación
Subir imagen
Diagrama de Clases (Proceso)
GaleriaImagen MensajeDeError
-tema: String -mensajeError: String
-imagen: String -ruta: String
-descripcion: String
+construct(mensajeError: String, ruta: string)
+construct(tema: String, image: Array, descrip: String) +determinarTipoDeMensaje(): String
+guardarGaleria(): void +obtenerOrigenDelError(): String
+obtenerURLImagen(imagen: Array): String
+obtenerGaleria(): Array
+eliminarImagen(idImagen: String): void
MiExcepcion
-titulo: String
-contenido: Text Noticia
-imagen: String
-autor: String -titulo: string
+noticia: text
+construct(titulo: String, imagen: Array, contenido: String, autor: String) -fechaPublicacion: date
+guardarPagina(): void +fechaValides: date
+obtenerPaginaPorTitulo(titulo: String): Array
+obtenerPaginaPorId(idpagina: String): Array +Construct(titulo, noticia, fechpub, fechval)
+obtenerPaginas(): Array +guardarNoticia(): void
+editarPagina(idpagina: String, imagen: Array, contenido: String): String +obtenerNoticias(): Array
+listarNoticias(): Array
+eliminarNoticias(idnoticia): Array
Progenitor IdAlumno IdAsignatura IdMatricula Asignatura
-nombre: String -id: string -id: string -id: string -asignatura: String
-apellido: String -curso: integer -añoRegistro: integer -curso: integer -area: String
-cedula: String -sexo: char -estado: Boolean
-trabaja: String +obtenerId(): String +construct(curso: Integer)
-oficio: String +construct(curso: integer, sexo: char) -idDisponible(): Integer +obtenerId(): String +construct(asignatura: Sring, area: String)
-lugar: String +obtenerId(): String -idDisponible(): Integer +guardarAsignatura(): void
-telefono: Integer -idDisponible(): Integer +listarAsignaturas(): Array
+idrhijo: String +obtenerAsignaturas(): Array
+retirarAsignatura(idAsignatura: String): String
+construct(nom: String, ape: String, ced: String, trab: String, of: Stringi, lug: String, tel: Integer, ide: String) +restablecerAsignatura(idAsignatura: String): String
+guardarProgenitor(): void ID
+obtenerProgenitores(idAlumno: String): Array
+generarId(Id: Object)
Matricula
-alumno: Alumno
-papa: Progenitor Por razón de espacio en la representación de este diagrama Imparte
-mama: Progenitor se omiten los tipos de datos en el constructor de esta clase
-año: Iinteger -idasignatura
-nivel: Integer -iddocente
-seccion: Char -nivel: String
-edad: Integer -seccion: Char
+Construct(noAl, apAl, feNa, ced, sx, niv, rel, noP, apP, cdP, trbP, ofP, lugP, telP, noM, apM, cedM, trbM, ofM, lugM, telM, vve, tut, telT, paren, dirA, bau, com, bauza, ent, obs) +construct(idasignatura: String, iddocente: String, nivel: Integer, seccion: Char)
+GuardarMatricula(void) +guardarImparte(): void
+ObtenerAlumnosPorNivel(nivel, seccion, curso): Array +asignaturasDeGrado(nivel: Integer, seccion: Char): Array
+Rematricular(nivel, relig, viv, tut, pare, direc, bau, comu, bauti, obser, entre) +impartidaPorDocente(idAsignatura): Array
+ObtenerAlumnosPorNivelyAsignatura(nivel, seccion, asignatura): Array +borrarAsignaturaImpartida(idAsignatura: String, nivel: Integer, seccion: Char): String
+ObtenerHermanosDeAlumno(idAlumno): Array +borrarAsignaturaEnImparte(idAsignatura: String): String
+ObtenerHistorialAcademico(idAlumno): Array
+actualizaDatosAlumnos(nivel, seccion, curso, religion, vive, tutor, parentesco, telefono, direccion): Array
Grupo
-nivel: Integer
-seccion: Char
-iddocente: String
+as: Char
Alumno
+construc(grado: Integer, seccion: Char, idDocent: String)
-nombre: String
+guardarGuia(): void
-apellido: String
+docenteGuia(nivel: Integer, seccion: Char)
-fechaNacimiento: Date
+yaEsGuia(iddocente: String)
-cedula: String
+eliminarGuia(nivel: Integer, seccion: Char): String
-sexo: Char
+listarGrupos(curso): Array
-religion: String
+alumnosMatriculados(nivel: Integer): Integer
-vive: String
+agregarGrupo(nivel: Integer, cantidad: Integer): String
-tutor: String
+grupoYaDividido(nivel): String
-telefono: Integer
+docenteGuia(grado: Integer, seccion: Char): String
-parentesco: String
+gradoYaDividido(nivel: Integer): Boolean
-direccion: String Por razón de espacio en la representación de este diagrama
+deshacerDivicionDeGrado(grado: Integer): String
-bautizado: Char se omiten los tipos de datos en el constructor de esta clase
-comunion: Char
-bautizarlo: Char
-entregados: Text
-observaciones: Text
-estado: Boolean
+Construct(nom, ape, fechNa, ced, sx, rel, viv, tut, tel, pare, dir, bau, com, baz, ent, obs, sta)
+guardarAlumno(): void
+obtenerExpedienteDeAlumno(idAlumno: String): Array
+obtenerDatosDeAlumno(idAlumno: String): Array
+validarAlumno(idAlumno: String, fechaNacimiento: Date): Boolean
+retirarAlumno(idAlumno: String): String
+restaurarAlumno(idAlumno: String): String
+obtenerAlumno(idAlumno: String): String
Docente
-nombre: String
Estadistica
-apellido: String
-fechaNacimiento: Date
+construct() -clave: String
+matriculaColegio(): Integer -sexo: Char
+matriculaGrado(grado: integer): Integer -religion: String
+rendimientoColegio(): Float -telefono: Integer Por razón de espacio en la representación de este diagrama
+rendimientoGrado(grado: Integer): Float -celular: Integer se omiten los tipos de datos en el constructor de esta clase
+rendimientoAsignatura(idAsignatura: String): Float -direccion: String
+rendimientoAsignaturaGrado(grado: Integer, idAsignatura: String): Float -profesion: String
+rendimientoPrimaria(): Float -estudios: Text
+rendimientoSecundaria(): Float -entregados: Text
-consultaRendimiento(parcial: Char, tipo: String): String -estado: Boolean
-consultaRendimientoGrado(parcial: Char, grado: Integer): String
-consultaRendimientoAsignatura(parcial: Char, idAsignatura: String, grado: Integer): String +construct(nombDo, apellDo, fechnac, ced, sex, relig, tele, cel, direc, prof, estud, entr)
+mejorAlumnoColegio(): Array +guardarDocente(): void
+mejorAlumnoPrimaria(): Array +obtenerExpedienteDocente(idDocente: String): Array
+mejorAlumnoSecundaria(): Array +listarDocentes(): Array
+mejorAlumnoGrado(): Array +verificarDocente(idDocente: String, fechnaci: Date, clave: String): Boolean
-consultaMejorAlumno(parcial: Char, tipo: String): String +actualizarDatoDocente(idDoce: String, tel: Integer, cel: Integer, dir: String, estu: Text, entr: Text): String
-consultaMejorAlumnoGrado(parcial: Char, grado: Integer): String +retirarDocente(idDocente: String): String
+cambiarClaveDocente(idDocente: String, clavAnti: String, nuevClav: String): Boolean
+restableceDocente(iddocente: String): String
+obtenerDocentes(): Array
Reparacion
Calificacion
-idalumno: String
-idasignatura: String
-anyo: Date
-nota: Integer
-parcial: Char
+construct(idalumno: String, anyo: Intger, nota: Integer, idasignatura: String, parcial: Char)
+parcialActual(idalumno: String, anyo: Integer, idAsignatura: String): Char
+guardarCalificacion(): void Usuario
+mostrarCalificaciones(nivel: Intege, seccion: Char, asignatura: String): Array
+obtenerAlumnosQueRepararan(nivel: Integer, seccion: Char, idAsignatura: String): Array
+constuct()
+verificarDerechoparaReparar(idalumno: String): Boolean
+verificarUsuario(usuario: String, clave: String): Boolean
+obtenerCalificaciones(id: String): Array
+cambiarClaveUsuario(usuario: String, clavAnt: String, nueClav: String): Boolean
+obtenerCalificacionesPorDocenteGuia(idDocente: String): Array
+asignarLibroActaFolio(laf: String, grado: Integer, seccion: Char): String
+actualizarCalificaciones(I: Integer, II: Integer, III: Integer, IV: Integer, idalum: String, idasig: String): String
+obtenerCalificacionNivel(idalumno: String, anyo: Integer): Array
Diagrama de Clases (Persistencia)
Diagrama Entidad –Relación
telefono
direccion
Matriculas
Padres tiene Alumnos registra
parentesco
comunion
idralumno
entregados bautizado
estado bautizarlo seccion edad
trabaja telefono
oficio anyo
lugar III
calificaciones
I IV fechanaci
sexo apellido
II NF clave s nombre
nivel seccion
laf iddocente
religion
Docentes
Asignaturas imparte
estado
telefono
seccion
nivel celular
laf estado idasignatura
area asignatura estudios direccion
idreparacion
profesion
Reparaciones repara
BBDD MMLRECURSOS
idgaleria tema
idusuario usuario
GaleriaImagenes
Usuarios
descripción imagen
clave
titulo
titulo idnoticia noticia
idpagina contenido
Noticias
PaginasEstaticas
fechapublicacion imagen
descripcion imagen
Diseño de Datos
TABLA PROGENITOR
TABLA ALUMNOS
TABLA DOCENTE
TABLA ASIGNATURA
Almacena las notas parciales y nota final que obtiene un alumno por cada asignatura.
NOMBRE DESCRIPCION TIPO
Idralumno Llave foránea que relaciona con tabla VARCHAR(14)
Alumnos
Idrasignatura Llave foránea que relaciona con tabla VARCHAR(14)
Asignatura.
Anyo Año académico que cursa el alumno. YEAR
I Nota del primer parcial. INT(3)
II Nota del segundo parcial. INT(3)
III Nota del tercer parcial. INT(3)
IV Nota del cuarto parcial. INT(3)
NF Nota final del año. Promedio de los cuatro INT(3)
parciales.
LAF Numero de Libro, Acta y Folio en que está VARCHAR(14)
inscrita la nota final del año lectivo.
TABLA REPARACIONES
TABLA USUARIOS
TABLA GALERIAIMAGEN
Almacena los datos de las imágenes presentadas en el sistema.
NOMBRE DESCRIPCION TIPO
Idgaleria Llave Primaria, identifica la imagen. INT
Tema Titulo que se le asigna a la imagen. VARCHAR(25)
Imagen Ruta de ubicación de la imagen. VARCHAR(100)
Descripción Breve descripción de lo que representa la TEXT
imagen.
TABLA NOTICIAS
Ingresar
Reglament Nota
Reingres
Requisitos Curso
de Matricula Siguiente
Colegio Católico Madre María Luisa
Mejores
Asignaturas Lista Asignar
Alumnos Docente Acta
Reparación
Modificar
Nota
Reparación
Colegio Católico Madre María Luisa
Cambiar
Password Formulario
Docente de Contacto
Cambiar
Password
Usuario
Respaldar BD
Restaurar BD
Borrar Noticia
Subir Foto
Eliminar Foto
Editar Pagina
Diseño de Interfaz
Página de inicio
Lista de docentes
Lista de estudiantes
Conclusiones
Con la elaboración de este sistema, se ha logrado facilitar los procesos de gestión académica
del centro, así como también el acceso a la información del mismo.
Ahora a través del sistema al personal del centro le tomará menos trabajo y tiempo ingresar la
información de los alumnos, los docentes y otros datos académicos.
Se logró cumplir con cada una de las funciones requeridas para el sistema, así como diseñar
una interfaz amigable y de fácil manejo para los usuarios comunes.
Y por último consideramos que el sistema fomentará el uso de más sistemas automatizados,
por las bondades de estos proveen, o incluso incentivará a la mejora del mismo dado que la
manera a como fue desarrollado permite una fácil actualización.
Recomendaciones
Instruir a los usuarios del sistema sobre la importancia de no compartir o permitir que su clave
de acceso al sistema sea del conocimiento de ajenos.
Que el administrador haga cambios periódicos de las claves de los usuarios, para evitar
posibles violaciones al sistema.
Eliminar información referente a noticias antiguas e imágenes que no se usen más, para evitar
datos innecesarios.
Bibliografía
Internet:
http://es.wikipedia.org
Libros:
Creación De Un Portal Con Php Y Mysql. 3ª Edición.
Editorial Ra-Ma
PAVON PUERTAS, JACOBO
Editorial Ra-Ma
Bajo licencia: Copyright © 1997, 1998, 1999, 2000, 2001, 2002 por el Grupo de
documentación de PHP
por Stig Sæther Bakken, Alexander Aulbach, Egon Schmid, Jim Winstead, Lars Torben
Wilson, Rasmus Lerdorf, Andrei Zmievski, y Jouni Ahto
IEEE Std 830-1998. Software Engineering Standards Committee of the IEEE Computer
Society
ANEXOS
Código de la clase Pagina.
<?php
session_start();
require_once('Formulario.php');
class Pagina
{
// atributos de clase pagina
public $activePage;
public $acceso='';
public $formulario;
public $content='';
public $contentSecundario='';
public $title = 'Colegio Catolico Madre Maria Luisa';
public $keywords = 'Madre Maria Luisa';
public $buttons = array('Inicio', 'Estudiantes' ,'Matricular','Pensum',
'Docentes','Miscelanias','Informes','Colegio', 'Noticias', 'Estadisticas',
'Consultar', 'Cambios', 'Galeria','Contactanos');
array('Expediente'=>'ListarEstudiantes.php?grado=1&seccion=A','Ingresar Nota'=>'OpcionesDocente.php','Curso
Siguiente'=>'ExpedienteSigCiclo.php'),
array('Nuevo Ingreso'=>'NuevoIngreso.php','Reingreso'=>'Reingreso.php'),
array('Grados'=>'Grados.php?grado=1&seccion=A','Asignaturas'=>'Asignaturas.php','Abrir Seccion'=>'AbrirGrado.php'),
array('Nuevo Docente'=>'NuevoDocente.php','Lista
Docentes'=>'ListarDocentes.php','Restaurar Docente'=>'RestaurarDocente.php','Restaurar Alumno'=>'RestaurarAlumno.php'),
array('Ingresar Noticia'=>'IngresarNoticia.php','Asignar Acta
Reparacion'=>'AsignarActaReparacion.php','Asignar Acta'=>'AsignarActa.php','Modificar Nota'=>'ModificarNota.php','Modificar
Nota Reparacion'=>'ModificarNotaReparacion.php'),
array('Certificados'=>'certificados.php'),
array('Historia'=>'MostrarPagina.php?pagina=Historia','Reglamentos'=>'MostrarPagina.php?pagina=Requisitos','Requisitos de
Matricula'=>'MostrarPagina.php?pagina=Requisitos'),
array(),
array('Matricula'=>'EstadisticasMatricula.php','Mejores
Alumnos'=>'MejoresAlumnos.php','Rendimiento'=>'Rendimiento.php'),
array(),
array('Cambiar Password Docente'=>'CambiarDocente.php','Cambiar Password
Usuario'=>'CambiarPassword.php','Respaldar BD'=>'Respaldar.php','Restaurar BD'=>'Restaurar.php','Borrar
Noticia'=>'BorrarNoticia.php','Subir Fotos'=>'SubirFotos.php','Eliminar Fotos'=>'EliminarFotos.php','Editar
Pagina'=>'EditarPagina.php'),
array(),
array('Formulario de Contacto'=>'Contacto.php')
);
array('Inicio','Estudiantes','Matricular','Informes','Noticias','Estadisticas','Contactanos','Colegio','Pagos'),
array('Inicio','Matricular','Noticias','Estadisticas','Contactos','Colegio'),
array('Inicio','Estudiantes','Noticias','Estadisticas','Contactanos','Colegio'),
array('Inicio','Noticias','Estadisticas','Contactanos','Colegio','Cambios','Galeria','Consultar'),
array('Inicio','Noticias','Estadisticas','Contactanos','Colegio','Galeria','Consultar') );
public $indicePermisos=0;
public $menu_activo='';
// Operaciones de clase
$usuarioSesion = $_SESSION['usuario'];
$docenteSesion = $_SESSION['docente'];
/* echo $usuarioSesion.'--'.$docenteSesion; */
$this->DisplayContentSecundario();
$this->DisplayContent();
echo '</div><!-- cerrando contenido-->'; //cerrando div contenido
$this ->DisplayMenuLateral($this->menu);
echo "</body>\n</html>\n";
}
public function DisplayFormulario()
{
echo $this->formulario->Display();
$this->formulario->CrearFormulario($opcion);
<!-- Estilos-->
<link rel="stylesheet" type="text/css" href="css/ddsmoothmenu.css" />
<link href="css/estilo.css" rel="stylesheet" type="text/css" />
<link type="text/css" href="cs/jquery.validity.css" rel="Stylesheet" />
<!-- Scripts-->
<script type="text/javascript" src="scripts/jquery.min.js"></script> <!-- Agrega la libreia jquery-->
<script type="text/javascript" src="scripts/ddsmoothmenu.js"></script> <!-- script que controla el menu-->
<script type="text/javascript" src="scripts/script.js"></script> <!-- Script el resto de funcionalidades -->
<script type="text/javascript" src="scripts/jquery.validity.js"></script>
<script type="text/javascript" src="scripts/jquery.cycle.all.js"></script>
<script type="text/javascript" src="scripts/easySlider1.7.js"></script>
<script type="text/javascript">
// Selecciona todas los formularios en la pagina
// y llama validity en el resultado
$(function() {
$("form").validity(function() {
$("input")
.require('Campo Obligatorio');
$("select")
.require('Campo Obligatorio');
$(".num")
.match("number",'Numero requerido');
$(".fecha")
.match("date",'Fecha requerida')
.lessThanOrEqualTo(new Date());
$(".rango")
.range(0, 100,'Entre 0 y 100');
$(".mintext14")
.minLength(14,'14 caracteres minimo');
$("input.unico")
.distinct("Este valor debe ser unico");
});
});
</script>
<?php
}
<?php
}
if(!isset($_SESSION['usuario']))
{
?>
<div id="caja_autenticar">
<div class=autenticar>
<strong>Visitante</strong>
<a href="Autenticar.php" class="sesion"><img id='corazon' src='css/images/iniciar.png' /></a>
</div>
<div class="cleaner"></div>
</div>
<?php
}
else
{
$docente = $_SESSION['docente'];
$usuario = $_SESSION['usuario'];
$usuario = $_SESSION['usuario'];
/*foreach($partes as $current)
echo "La pagina acutal es: $current";*/
$this->indicePermisos = $key;
}
}
else
$this->indicePermisos = 5;
//if(isset($_SESSION['usuario']))
//{
$continuar = false;
//Este foreach verifica que el usuario tenga permiso para ver el boton actual.
foreach($this->permisos[$this->indicePermisos] as $permiso)
if($permiso == $name)
{
//echo "<br/> encontrado: $name";
//si el permiso se encontro dar paso para e imprimir el boton
$continuar = true;
}
//si el permiso no se encuentra saltar a siguiente iteracion de foreach buttons
if($continuar == false)
continue;
//}
//echo "$key=>$name";
$encontrado=0;;
foreach($this->menu[$key] as $llave => $valor)
{
if($valor == $paginaActual)
{
$encontrado=1;
echo "\n<li><a id='menuselected' class='menuselected'
href='#'>$name</a></li>";
$this->menu_activo=$key;
}
}
if($encontrado==0)
{
$link = $name.'.php';
if(count($this->menu[$_indice])>0)
echo "\n\t<ul>";
foreach($this->menu[$_indice] as $submenu => $enlace)
{
echo "\n\t</ul>";
echo "\n</li>";
}
}
<div id='menuLateral'>
<h3 class='cabecera_menu'>opciones</h3>
<ul>";
$mes_actual = date('n');
if(!empty($this->menu_activo))
foreach($this->menu[$this->menu_activo] as $submenu => $enlace)
{
$usuario = $_SESSION['usuario'];
if($usuario=='secretaria' && $submenu == 'Ingresar Nota')
continue;
}
/*
for($i=0;$i<count($menu);$i++)
{
echo "\n<div class='subMenu' id='$i'>";
echo "\n</div>";
}*/
echo "</ul>
<div class='cleaner'></div>
</div>
</div>";
/* echo "<img src='css/images/imagen1.jpg' id='banner' width='245px' height='245px' alt='Colegio Catolico Madre Maria
Luisa'/>";*/
$usuarioSesion = $_SESSION['usuario'];
$docenteSesion = $_SESSION['docente'];
$actual = $_SERVER['PHP_SELF'];
$partes = explode('/',$actual);
/* echo $usuarioSesion.'--'.$docenteSesion; */
/*location.reload(); */
</script>';
}
//control para que no puedan ver esta pagina quien no tenga permiso
if($this->acceso!='')
{
if(isset($_SESSION['usuario']))
{
$autorizacion = false;
foreach($this->acceso as $usuarioConPermiso)
if($usuarioConPermiso == $_SESSION['usuario'])
{
$autorizacion = true;
}
if($autorizacion==true)
{
//Bloque de seguridad de profesor
echo $this->content;
$this -> DisplayFormulario();
}
echo $this->contentSecundario;
<?php
}
}
?>
Clase Alumno
<?php
require_once '../Persistencia/BaseDeDatos.php';
require_once '../Persistencia/MySQL.php';
require_once '../Persistencia/SqlInsert.php';
require_once '../Persistencia/SqlSelect.php';
class Alumno
{
private $_idalumno;
private $_nombAl;
private $_apellAl;
private $_fechanac;
private $_cedula;
private $_sexo;
private $_religion;
private $_vive;
private $_tutor;
private $_telefono;
private $_parentesco;
private $_direccion;
private $_bautizado;
private $_comunion;
private $_bautizarlo;
private $_entregados;
private $_observaciones;
private $_estado;
$this->_idalumno=$ide;
$this->_nombAl=$nombAl;
$this->_apellAl=$apellAl;
$this->_fechanac=$fechaNacimiento;
$this->_cedula=$cedula;
$this->_sexo=$sexo;
$this->_religion=$religion;
$this->_vive=$vive;
$this->_tutor=$tutor;
$this->_telefono=$telefonoTutor;
$this->_parentesco=$parentesco;
$this->_direccion=$direccionAlumno;
$this->_bautizado=$bautizado;
$this->_comunion=$comunion;
$this->_bautizarlo=$bautizarlo;
$this->_entregados=$entregados;
$this->_observaciones=$observaciones;
$this->_estado=1;
}
}
$sql->intoTable('alumnos');
$sql->addValues("$this->_idalumno");
$sql->addValues("$this->_nombAl");
$sql->addValues("$this->_apellAl");
$sql->addValues("$this->_fechanac");
$sql->addValues("$this->_cedula");
$sql->addValues("$this->_sexo");
$sql->addValues("$this->_religion");
$sql->addValues("$this->_vive");
$sql->addValues("$this->_tutor");
$sql->addValues("$this->_telefono");
$sql->addValues("$this->_parentesco");
$sql->addValues("$this->_direccion");
$sql->addValues("$this->_bautizado");
$sql->addValues("$this->_comunion");
$sql->addValues("$this->_bautizarlo");
$sql->addValues("$this->_entregados");
$sql->addValues("$this->_observaciones");
$sql->addValues("$this->_estado");
$alumno = $conexBD5->insertar($sql);
return $alumno;
}
$sqlI->addSelect("idalumno");
$sqlI->addSelect("nombre");
$sqlI->addSelect("apellido");
$sqlI->addSelect("fechanaci");
$sqlI->addSelect("cedula");
$sqlI->addSelect("sexo");
$sqlI->addSelect("religion");
$sqlI->addSelect("vive");
$sqlI->addSelect("tutor");
$sqlI->addSelect("telefono");
$sqlI->addSelect("parentesco");
$sqlI->addSelect("direccion");
$sqlI->addSelect("bautizado");
$sqlI->addSelect("comunion");
$sqlI->addSelect("bautizarlo");
$sqlI->addSelect("entregados");
$sqlI->addSelect("observaciones");
$sqlI->addSelect("nivel");
$sqlI->addSelect("seccion");
$sqlI->addTable('alumnos');
$sqlI->addTable('matriculas');
$sqlI->addWhere("idalumno='$id'");/*como lo que se compara
es una cadena se debe encerrar entre comillas simples*/
$actual=date (Y);
$sqlI->addWhere("anyo=$actual");
$sqlI->addWhere("estado=1");
$sqlI->addWhere("idralumno=idalumno");
$sqlI->addSelect("idalumno");
$sqlI->addSelect("nombre");
$sqlI->addSelect("apellido");
$sqlI->addSelect("fechanaci");
$sqlI->addSelect("cedula");
$sqlI->addSelect("sexo");
$sqlI->addSelect("religion");
$sqlI->addSelect("vive");
$sqlI->addSelect("tutor");
$sqlI->addSelect("telefono");
$sqlI->addSelect("parentesco");
$sqlI->addSelect("direccion");
$sqlI->addSelect("bautizado");
$sqlI->addSelect("comunion");
$sqlI->addSelect("bautizarlo");
$sqlI->addSelect("entregados");
$sqlI->addSelect("observaciones");
$sqlI->addSelect("nivel");
$sqlI->addTable('alumnos');
$sqlI->addTable('matriculas');
$sqlI->addWhere("idalumno='$id'");/*como lo que se compara
es una cadena se debe encerrar entre comillas simples*/
$sqlI->addWhere("idralumno=idalumno");
$sqlPP->addSelect("idalumno");
$sqlPP->addSelect("fechanaci");
$sqlPP->addTable("alumnos");
$sqlPP->addWhere("idalumno='$id'");
$alumno2 = $bd2->seleccionar($sqlPP);
if(!empty($alumno2)) {
if($alumno2[0]->fechanaci != $fecha)
return $mensaje = 'clave incorrecta';
else return true; //retorna true si el alumno esta registrado
} else {
return false;//retorna false si el alumno no esta registrado
}
}
public function retirarAlumno($id)
{
$bd3 = new BaseDeDatos(new MySQL());
$sql1 = new SqlUpdate();
$sql1->addUpdate('alumnos');
$sql1->addSet("estado=0");
$sql1->addWhere("idalumno='$id'");
// el alumno no se elimina de la BBDD solo se cambia su estado para mantener sus registros
$alumno = $bd3->actualizar($sql1);
}
$sql1->addUpdate('alumnos');
$sql1->addSet("estado=1");
$sql1->addWhere("idalumno='$id'");
// el alumno no se elimina de la BBDD solo se cambia su estado para mantener sus registros
$alumno = $bd3->actualizar($sql1);
}
public function obtenerAlumno($id)
{
$bdI = new BaseDeDatos(new MySQL());
$sqlI = new SqlSelect();
$sqlI->addSelect("idalumno");
$sqlI->addSelect("nombre");
$sqlI->addSelect("apellido");
$sqlI->addSelect("fechanaci");
$sqlI->addSelect("nivel");
$sqlI->addSelect("estado");
$sqlI->addTable('alumnos');
$sqlI->addTable('matriculas');
$sqlI->addWhere("idalumno='$id'");/*como lo que se compara
es una cadena se debe encerrar entre comillas simples*/
$sqlI->addWhere("idralumno=idalumno");
<?php
require_once 'ManejadorBaseDeDatosInterface.php';
require_once '../Proceso/MiExcepcion.php';
private $_conexion;
/*
//procedural con mysql
$this->_conexion = mysql_connect(SERVIDOR,USUARIO,CLAVE );
mysql_select_db(BASE, $this->_conexion ); */
try {
$this->_conexion = new mysqli(SERVIDOR,USUARIO,CLAVE);
if($this->_conexion->connect_error)
throw new MiExcepcion($this->_conexion->connect_error);
} catch (MiExcepcion $e) {
echo $e->mensajePersonalizado();
exit;/* se sale de la clase para que en los metodos posteriores que hacen uso del
objeto conexion que se debio haber creado, no produzcan error al no existir este
por la ocurrencia del error. */
}
try {
//orientada a objeto
$this->_conexion->close();
}
/*
//procedural
$resultado = mysql_query($sql, $this->_conexion);
while ($fila = mysql_fetch_array($resultado, MYSQL_ASSOC)){
$todo[] = $fila;
}
return $todo;
/* en las lineas de los metodos siguientes si el atributo _error del objeto conexion contiene
un valor es que se ha producido un error por tanto se lanza la excepcion y se le pasa el
mensaje del error producido para determinar que mensaje de error personalizado producir.
if ($bool == 0){
$this->_conexion->rollback();
}
}