Hoy veremos un sistema muy básico para gestionar estudiantes, materias y notas/calificaciones usando el lenguaje de programación PHP con la base de datos MySQL.

Más allá de un sistema es como un ejercicio. Se trata de:

  • Registrar alumnos
  • Registrar materias
  • Agregar calificaciones de estudiantes por cada materia

Es como la versión básica de un control escolar.

Conexión con MySQL

He usado MySQL como motor de base de datos, a través de la extensión MySQLi de PHP. El archivo de conexión se ve así:

Recuerda cambiar tus credenciales según sea tu caso. Y no olvides crear la base de datos. Las tablas quedan como a continuación:

El esquema indica que hay 3 tablas. La primera guarda información de los estudiantes, como lo son el id, nombre y grupo. La segunda tabla es la tabla de materias y se encarga de guardar el nombre de las mismas.

Finalmente la última tabla se encarga de unir las 2 primeras tablas, es decir, la de estudiantes y materias, además de agregar un puntaje que indica la calificación o nota del alumno. La misma también se encarga de relacionar las dos tablas con foreign key.

Plantilla de Bootstrap

He diseñado este sistema con Bootstrap para evitar darle estilos manuales y ahorrar tiempo. También he separado toda la plantilla en un encabezado, pie y contenido. El contenido depende de cada página.

Por lo tanto el encabezado queda así:

Y el pie queda así:

Cuando una página quiere usar esto, simplemente usa include de PHP.

Estudiantes

Tenemos un “controlador” que se encarga de la gestión de los estudiantes. No es como tal un controlador ni un modelo, es una clase que encapsula todos los métodos; pero usamos Programación orientada a objetos con PHP:

Tenemos varias funciones. Por ejemplo, obtenerUno regresa un estudiante de la base de datos a partir de su id (método estático). El método eliminar se encarga de borrar el estudiante a partir del id; el de actualizar se encarga de hacer la operación update y el de guardar se encarga de insertarlo en la base de datos.

También existe el método obtener que devuelve todos los estudiantes como un arreglo usando fetch_all.

Todos los métodos que mencioné anteriormente ya están en el post de CRUD con MySQLi y PHP.

Cada que se requiere hacer una operación, se crea una instancia de la clase y se invoca al método; o si el método es estático simplemente se invoca sin instanciar.

Crear estudiante

Para crearlo se reciben los datos a través de un formulario, se crea una instancia y se guarda en la base de datos de MySQL:

Como ves, es muy simple gestionar estudiantes en este pequeño sistema escolar con PHP pues creamos un objeto, invocamos a guardar y luego hacemos una redirección.

Mostrar estudiantes

Sistema escolar PHP – Mostrar estudiantes

Para mostrarlos vemos el método usado para listarlos. Obtenemos todos los estudiantes y luego creamos una tabla HTML que muestra 3 botones: editar, eliminar y administrar las notas.

En este caso invocamos al método obtener, pero directamente desde la clase, pues es un método estático. Lo que importa es que en la tabla tenemos los 3 botones que en realidad son enlaces, y cada uno lleva respectivamente a notas_estudiante.php, editar_estudiante.php y eliminar_estudiante.php pasándole el id a través de la URL.

Editar estudiante

Para editar mostramos el formulario y lo rellenamos con los datos existentes:

En este caso estamos invocando al método obtenerUno y rellenamos los valores usando el atributo value de los input de HTML. El action del formulario es actualizar_estudiante.php que es donde este sistema escolar actualiza los datos del alumno:

Ahora se está invocando al método actualizar y después de eso se redirecciona al listado.

Eliminar estudiante

Para eliminar simplemente se recupera el id de la URL y se borra el registro de la base de datos:

Gestión de materias

La administración de materias en este sistema es muy similar a la de estudiantes, así que para no hacer más largo el post, dejaré únicamente la clase que se encarga de gestionarlas. Obviamente puedes explorar todo el código que te dejaré al final del post.

Ahora pasemos a algo importante, las notas o calificaciones.

Notas de estudiantes

Notas de estudiante (Calificaciones) con PHP y MySQL

Las notas o calificaciones en este caso no llevan un período relacionado, solo materias. Así que por cada materia que exista en la base de datos hay que mostrar un campo que solicite la calificación, creando un formulario dinámico.

El promedio se calcula llevando una sumatoria de los puntajes y dividiendo entre la longitud del arreglo.

Al final de la tabla se muestra el promedio de todas las calificaciones calculado de manera automática. Las calificaciones se pueden editar en cualquier momento y son por cada estudiante.

Guardar las calificaciones de estudiante

En este caso observamos el método guardar, que primero elimina todas las notas anteriores pertenecientes a ese alumno. Esto se hace así porque:

  1. Si es la primera vez que las notas se guardan, no se va a eliminar nada
  2. Si es la segunda vez que las notas se guardan, se van a eliminar las anteriores e insertar las nuevas, haciendo algo como un “update”.

Se hace de este modo porque así no se tiene que detectar si se debe realizar un insert o un update; siempre se hace un insert y se elimina lo anterior.

Obtener calificaciones

Para mostrar las notas en la tabla, con los datos rellenos, se usa el siguiente código. En el mismo observamos que primero obtenemos los datos del estudiante, y luego todas las materias.

Luego obtenemos las notas y finalmente en la línea 10 obtenemos las materias con calificación.

El método combinar es importante y se encarga de combinar las materias con notas. En este caso si ya existe una nota para esa materia, regresa esa nota. Caso contrario, regresa 0. Así que la primera vez que se visite la página, todos los campos estarán en 0, y si luego se guarda algún dato, estará así para la siguiente ocasión.

También es importante notar el método que modifica la calificación o nota, llamado modificar_nota.php al que le estamos enviando el id de estudiante, id de materia y el nuevo puntaje.

El código del mismo se ve así:

Estamos usando de nuevo a la clase Nota, que no es más que la encarga de gestionar todo lo relacionado a las calificaciones en este sistema de estudiantes, materias y notas con PHP y MySQL.

Código fuente y conclusión

Así es como termina la presentación de este pequeño sistema de escuela en PHP. El código fuente lo encuentras en mi GitHub: https://github.com/parzibyte/escuela_php

Te invito a ver otros proyectos que he creado, a leer más sobre PHP y sobre MySQL.


Estoy disponible para trabajar en tu proyecto o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.
Si el post fue de tu agrado muestra tu apoyo compartiéndolo, suscribiéndote al blog, siguiéndome o realizando una donación.

Suscribir por correo

Ingresa tu correo y recibirás mis últimas entradas sobre programación, open source, bases de datos y todo lo relacionado con informática

Únete a otros 1,020 suscriptores


parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

0 Comments

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

A %d blogueros les gusta esto: