Sistema de registro de estudiantes (solicitud SRS)
Información general:
Arquitectura de alto nivel:
- Seguimos la arquitectura del controlador de vista de modelo (MVC) para implementar la aplicación SRS.
- Vista
- Uso de JSP (páginas de servidor Java) para crear GUI frontend para interactuar con los usuarios.
- Controlador
- Uso de Servlets Java para llamar a las clases de operadores de DB y redirigir el resultado a las páginas JSP apropiadas.
- Modelo
- Uso de conexiones JDBC y llamando a los procedimientos de DB respectivos para realizar la solicitud del usuario.
- Los JSP son páginas web dinámicas donde podemos escribir HTML y códigos Java.
- Uso del método HTTP "POST" para transferir elementos de formulario de Frontend a Backend.
- Cada funcionalidad se implementa en archivos separados (JSP, Servlet, clase de operación DB) para la modularidad.
- Mensajes manejados que se muestran a través de dbms_output desde el backend en el código Java DBMS_OUTPUT get_line Procedimiento Llamada.
- Las validaciones básicas como las entradas de campos vacíos se realizan en el lado frontend.
- La mayoría de las funcionalidades para manipular los datos de DB y las validaciones relacionadas se implementan en el lado del backend.
Plan de fase de desarrollo y actividades:
- Seguimos a continuación los pasos durante la fase de planificación del proyecto de la aplicación SRS:
- Discutido y decidió usar JSP como frontend, conectividad JDBC y backend Oracle PL/SQL.
- Discutió y decidió usar la herramienta de control de versiones "BitBucket" para mantener el código fuente del proyecto tanto para los componentes de backend como para frontend.
- Discutió y decidió usar PL/SQL Developer IDE para desarrollar objetos de base de datos como paquetes, procedimientos, funciones, secuencias, desencadenantes y casos de prueba (scripts SQL).
- Discutió y decidió usar Eclipse IDE para desarrollar el proyecto de aplicación web, incluidos JSPS, Java Servlets y Java JDBC Connectivity Model Classes.
| Fecha de reunión | Ubicación de reunión | Actividades |
|---|
| 6 de noviembre de 2018 | Sala de reuniones de biblioteca | Creó repositorios de bitbucket y paquete base para SRS [NM]. Procedimientos incluidos para mostrar la tabla TUPLES [VM]. Implementación del procedimiento para obtener detalles de TA usando ClassID [DP]. |
| 10 de noviembre de 2018 | Sala de reuniones de biblioteca | Caso de prueba para "class_ta" y formato de código [VM]. Incluyó el cursor de referencia en show_tables + it'd de prueba de prueba [DP]. Población de datos para el caso de prueba y la configuración del proyecto web Java [NM]. |
| 11 de noviembre de 2018 | Sala de reuniones de biblioteca | Incluyó la implementación del procedimiento de "curso de requisito previo" [NM]. Incluyó implementación parcial: procedimiento de "Inscribir alumno" [VM]. Campos de tabla de visualización implementados en Java y Conectividad DB [DP]. |
| 12 de noviembre de 2018 | Sala de reuniones de biblioteca | Implementación parcial de "inscripciones de caída" sin disparador [DP]. Prueba de funcionalidad "show_students" en el lado frontal [VM]. FIJO DE DEFECTOS DB "SHOW_STUDENTS" y los casos de prueba [NM]. |
| 13 de noviembre de 2018 | Sala de reuniones de biblioteca | Implementación y prueba de "Drop de inscripción de estudiantes" desde el backend y el lado frontend [DP] [VM] [NM]. |
| 14 de noviembre de 2018 | Sala de reuniones de biblioteca | Implementación de la validación 8 para el procedimiento inscrito_studente [DP]. Caso de prueba + script SQL relacionado para verificar las inscripciones de los estudiantes [NM]. Implementación de la funcionalidad de detalles de TA en Frontend [VM]. |
| 15 de noviembre de 2018 | Sala de reuniones de biblioteca | Prueba de desencadenantes mientras se inscribe al estudiante en Backend [VM]. Implementación del requisito previo de la clase de visualización en Frontend [DP]. Código parcial y pruebas de Selete Student en Frontend [NM]. |
| 19 de noviembre de 2018 | Sala de reuniones de biblioteca | Implementación combinada de Inscrib y eliminar la inscripción de los estudiantes con pruebas completas de Frontend y Backend [DP] [VM] [NM]. |
| 26 de noviembre de 2018 | Sala de reuniones de biblioteca | Implementación combinada de Selete Student con pruebas completas de Frontend y Backend [DP] [VM] [NM]. |
| 28 de noviembre de 2018 | Sala de reuniones de biblioteca | Pruebas exhaustivas de todos los procedimientos, desencadenantes y defectos fijos juntos desde el lado frontend y de backend [NM] [VM] [DP]. |
| 29 de noviembre de 2018 | Sala de reuniones de biblioteca | Informe del proyecto y configuración final de DB para la demostración [VM] [NM] [DP]. |
- Roles y responsabilidades de los miembros del equipo:
- Todos los miembros del equipo trabajaron juntos en la misma sala de reuniones para desarrollar y probar la aplicación SRS desde el lado frontend y de backend.
- Las actividades realizadas por los miembros del equipo se mencionan en la tabla anterior con iniciales respectivas.
- Nitesh Mishra [NM]
- Dipika Suresh Patil [DP]
- Vidhi Mewada [VM]
Esquema del código PL-SQL de backend
Nombre del paquete DB - student_registration_system
Procedimientos para mostrar las tuplas de cada una de las siete tablas. Estos procedimientos devuelven el cursor de referencia como parámetro de salida que se utiliza en el lado frontal para mostrar tuplas de siete tablas DB.
- Procedimiento show_students (ref_cursor_students out ref_cursor);
- Procedimiento show_tas (ref_cursor_tas out ref_cursor);
- Procedimiento show_courses (ref_cursor_courses out ref_cursor);
- Procedimiento show_classes (ref_cursor_classes out ref_cursor);
- Procedimiento show_enrollments (ref_cursor_enrollments out ref_cursor);
- Procedimiento show_perRequisites (ref_cursor_perRequisites out ref_cursor);
- Procedimiento show_logs (ref_cursor_logs out ref_cursor);
Tipos globales -
- Tipo ref_cursor es ref cursor;
- Este cursor de referencia se devuelve del procedimiento individual como consulta selecta.
Procedimiento para mostrar B#, primer nombre y apellido del TA para la entrada classid.
- Procedimiento class_ta (classid_in en classes.classid%type, ta_b#_Out out classes.ta_b#%type, first_name_out out students.first_name%type, last_name_out out studings.last_name%type);
- Validaciones:
- Si la clase no tiene un TA, informe "La clase no tiene TA".
- Si el ClassId proporcionado no es válido (es decir, no en la tabla de clases), informe "El ClassId no es válido".
El procedimiento devuelve todos los cursos de requisitos previos directos e indirectos.
- Procedimiento class_prereq (Dept_code_in en requisitos previos.dept_code%type, curso#_in en requisitos previos.
- Validación:
- Si el proporcionado (Dept_code, curso#) no es válido, informe "Dept_code || El curso# no existe".
El procedimiento maneja la inscripción de un estudiante en una clase.
- Procedimiento inscrit_student (b#_in en estudiantes.b#%type, classid_in en classes.classid%type);
- Validaciones:
- Si el estudiante no está en la tabla de estudiantes, informe "El B# no es válido".
- Si el ClassID no está en la tabla de clases, informe "El ClassID no es válido".
- Si la clase no se ofrece en el semestre actual (es decir, otoño de 2018), rechace la inscripción y el informe "no puede inscribirse en una clase de un semestre anterior".
- Si la clase ya está llena antes de la solicitud de inscripción, rechace la solicitud de inscripción e informe "La clase ya está llena".
- Si el estudiante ya está en la clase, informe "El estudiante ya está en la clase".
- Si el estudiante ya está inscrito en otras cuatro clases en el mismo semestre y el mismo año, informa "el estudiante se sobrecargará con la nueva inscripción". Pero aún así permita que el estudiante esté inscrito.
- Si el estudiante ya está inscrito en otras cinco clases en el mismo semestre y el mismo año, el informe "Los estudiantes no pueden inscribirse en más de cinco clases en el mismo semestre". y rechazar la inscripción.
- Si el estudiante no ha completado los cursos de requisitos previos requeridos con al menos un Grado C, rechace la inscripción e informe "requisito previo no satisfecho".
El procedimiento maneja la eliminación de un estudiante de la tabla de inscripción.
- Procedimiento delete_student_enrollment (b#_in en estudiantes.b#%type, classid_in en classes.classid%type);
- Validaciones:
- Si el estudiante no está en la tabla de estudiantes, informe "El B# no es válido".
- Si el ClassID no está en la tabla de clases, informe "El ClassID no es válido".
- Si el estudiante no está inscrito en la clase, informe "El estudiante no está inscrito en la clase".
- Si la clase no se ofrece en el otoño de 2018, rechace el intento de caída e informe "solo se puede eliminar la inscripción en el semestre actual".
- Si dejar caer al estudiante de la clase causaría una violación del requisito de requisito previo para otra clase, rechace el intento de caída e informe "La caída no está permitida porque otra clase que el estudiante registró la usa como un requisito previo". En todos los demás casos, el estudiante será retirado de la clase.
- Si la clase es la última clase para el estudiante, informe "Este estudiante no está inscrito en ninguna clase".
- Si el estudiante es el último estudiante de la clase, informe "La clase ahora no tiene estudiantes".
El procedimiento maneja la eliminación de un estudiante de la tabla de estudiantes basada en una B#determinada.
- Procedimiento delete_student (b#_in en estudiantes.b#%type);
- Validación:
- Si el estudiante no está en la tabla de estudiantes, informe "El B# no es válido".
Objetos DB relacionados: estos objetos no son parte del paquete y se usan en la aplicación.
- Secuencia para generar el registro# automáticamente cuando se insertan nuevos registros de registro en la tabla de registro.
- Actualizar para hacer la entrada en la tabla de registro en la eliminación de la entrada de la tabla de inscripción.
- Trig_on_del_enroll_ins_logs
- Activar para disminuir el tamaño de la clase en la tabla de clases en la eliminación de la entrada de la tabla de inscripción.
- Trig_on_del_enroll_upd_classes
- Activar para eliminar la entrada de la tabla TA en la eliminación de la entrada de la tabla de estudiantes.
- Trig_on_del_students_del_ta
- Activar para hacer la entrada en la tabla de registro en la eliminación de la entrada de la tabla TA.
- Activar para hacer que la entrada de columna TA nula en la tabla de clases en la eliminación de la entrada de la tabla TA.
- Trig_on_del_tas_upd_classes
- Actualice para realizar la entrada en la tabla de registro en la inserción de la entrada de la tabla de inscripción.
- Trig_on_ins_enroll_ins_logs
- Activar para aumentar el tamaño de la clase en la tabla de clases en la inserción de la tabla de inscripciones.
- Trig_on_ins_enroll_upd_classes
- Activar para hacer la entrada en la tabla de registro en la entrada de la tabla actualización de las clases.
- Trig_on_upd_classes_ins_logs
- Activar para eliminar la inscripción para eliminar la entrada del estudiante.
- Trig_on_del_stud_del_enroll
Esquema de Frontend y Java Code
- A continuación se muestra el fragmento de estructura del directorio para el proyecto web dinámico de Java utilizando el modelo de arquitectura del controlador de vista de modelo:
