Sistema de Registro de Estudantes (Aplicativo SRS)
Informações gerais:
Arquitetura de alto nível:
- Seguimos a arquitetura do Model View Controller (MVC) para implementar o aplicativo SRS.
- Visualizar
- Usando JSP (Java Server Pages) para criar a GUI do front -end para interagir com os usuários.
- Controlador
- Usando o Java Servlets para ligar para as classes do operador DB e redirecionar o resultado para as páginas JSP apropriadas.
- Modelo
- Usando conexões JDBC e chamando os respectivos procedimentos de banco de dados para executar a solicitação do usuário.
- Os JSPs são páginas dinâmicas da Web, onde podemos escrever HTML, bem como códigos Java.
- Usando o método HTTP "POST" para transferir elementos de formulário do front -end para o back -end.
- Todas as funcionalidades são implementadas em arquivos separados (JSP, Servlet, Classe de operação DB) para modularidade.
- Mensagens manipuladas exibidas via dbms_output do back -end no código Java DBMS_OUTPUT GET_LINE PROCEDIMENTO.
- Valitações básicas como entradas vazias de campos são feitas no lado do front -end.
- A maioria das funcionalidades para manipular os dados do banco de dados e as validações relacionadas é implementada no lado do back -end.
Plano de fase de desenvolvimento e atividades:
- Seguimos as etapas abaixo durante a fase de planejamento do projeto do aplicativo SRS:
- Discutido e decidiu usar o JSP como frontend, conectividade JDBC e back -end do Oracle PL/SQL.
- Discutido e decidiu usar a ferramenta de controle de versão "Bitbucket" para manter o código -fonte do projeto para componentes de back -end e front -end.
- Discutido e decidiu usar o desenvolvedor PL/SQL IDE para desenvolver objetos de banco de dados, como pacote, procedimentos, funções, sequência, gatilhos e casos de teste (scripts SQL).
- Discutido e decidiu usar o Eclipse IDE para desenvolver um projeto de aplicativos da Web, incluindo JSPs, Java Servlets e Java JDBC Connectivity Related Model Classes.
| Data da reunião | Localização da reunião | Atividades |
|---|
| 6 de novembro de 2018 | Sala de reuniões da biblioteca | Criou repositórios Bitbucket e pacote base para SRS [NM]. Procedimentos incluídos para exibir tuplas de tabela [VM]. Implementação do procedimento para obter detalhes de TA usando o ClassID [DP]. |
| 10 de novembro de 2018 | Sala de reuniões da biblioteca | Caso de teste para “Class_ta” e formatação de código [VM]. Cursor de referência incluído em show_tables + caso de teste [dp]. População de dados para casos de teste e configuração do projeto da web java [NM]. |
| 11 de novembro de 2018 | Sala de reuniões da biblioteca | Incluído a implementação do procedimento de “curso de pré -requisito” [NM]. Incluída Implementação Parcial - Procedimento “Inscrever aluno” [VM]. Campos de tabela de exibição implementados na conectividade Java e DB [DP]. |
| 12 de novembro de 2018 | Sala de reuniões da biblioteca | Implementação parcial de "inscrições de queda" sem gatilho [DP]. "Show_students" Teste de funcionalidade no lado frontal [VM]. Corrigindo os defeitos de banco de dados “show_students” e casos de teste [nm]. |
| 13 de novembro de 2018 | Sala de reuniões da biblioteca | Implementação e teste de “Drop Stratolling” do lado do back -end e do front -end [DP] [VM] [NM]. |
| 14 de novembro de 2018 | Sala de reuniões da biblioteca | Implementação da Validação 8 para Procedimento Enroll_student [DP]. Caso de teste + script SQL relacionado para verificar as matrículas dos alunos [NM]. Implementação da funcionalidade de detalhes de TA no frontend [VM]. |
| 15 de novembro de 2018 | Sala de reuniões da biblioteca | Testes para gatilhos enquanto matriculou o aluno no back -end [VM]. Implementação do pré -requisito da classe de exibição no frontend [DP]. Código parcial e teste de excluir aluno no frontend [NM]. |
| 19 de novembro de 2018 | Sala de reuniões da biblioteca | Implementação combinada de matrículas de inscrição e exclusão com testes completos do front -end e back -end [DP] [VM] [NM]. |
| 26 de novembro de 2018 | Sala de reuniões da biblioteca | Implementação combinada do aluno excluído com testes completos do front -end e back -end [DP] [VM] [NM]. |
| 28 de novembro de 2018 | Sala de reuniões da biblioteca | Teste completo de todos os procedimentos, gatilhos e defeitos fixos juntos do lado do front -end e do back -end [NM] [VM] [DP]. |
| 29 de novembro de 2018 | Sala de reuniões da biblioteca | Relatório do projeto e configuração final do banco de dados para Demo [VM] [NM] [DP]. |
- Funções e responsabilidades dos membros da equipe:
- Todos os membros da equipe trabalharam juntos na mesma sala de reuniões para desenvolver e testar a aplicação SRS do lado do front -end e do back -end.
- As atividades realizadas pelos membros da equipe são mencionadas na tabela acima com as respectivas iniciais.
- NITESH MISHRA [NM]
- Dipika Suresh Patil [DP]
- Vidhi Mewada [VM]
Esboço do código PL-SQL de back-end
Nome do pacote DB - Student_registration_system
Procedimentos para exibir as tuplas de cada uma das sete tabelas. Esses procedimentos retornam o cursor ref como parâmetro que é usado no lado front-end para exibir tuplas de sete tabelas de dB.
- Procedimento show_students (ref_cursor_students out ref_cursor);
- Procedimento show_tas (ref_cursor_tas out ref_cursor);
- Procedimento show_courses (ref_cursor_courses out ref_cursor);
- Procedimento show_classes (ref_cursor_classes out ref_cursor);
- Procedimento show_enrollments (ref_cursor_enrollments out ref_cursor);
- Procedimento SHOW_PREREQUISITES (REF_CURSOR_PREREQUISITES OUT REF_CURSOR);
- Procedimento show_logs (ref_cursor_logs out ref_cursor);
Tipos globais -
- Tipo ref_cursor é ref cursor;
- Este cursor de ref é retornado do procedimento individual como consulta selecionada.
Procedimento para exibir B#, primeiro nome e sobrenome do TA para entrada ClassID.
- Procedimento Class_ta (Classid_in em Class.Classid%Type, TA_B#_OUT OUT CLASSES.TA_B#%Tipo, First_Name_Out Out Students.First_Name%Tipo, Last_Name_Out Out Student.Last_Name%Tipo);
- Valitações:
- Se a classe não tiver um TA, relate "A classe não tem TA".
- Se o ClassID fornecido for inválido (ou seja, não na tabela de classes), relate "O Classid é inválido".
O procedimento retorna todos os cursos de pré -requisito diretos e indiretos.
- Procedimento Class_prereq (dept_code_in em pré -requisitos.dept_code%Tipo, curso#_in em pré -requisitos.course#%tipo, pre_req_out out varchar2);
- Validação:
- Se o fornecido (dept_code, curso#) for inválido, relate "Dept_code || Curso# não existe".
O procedimento lida com a inscrição de um aluno em uma aula.
- Procedimento enroll_student (b#_in em estudantes.b#%tipo, classid_in em classes.classid%tipo);
- Valitações:
- Se o aluno não estiver na tabela dos alunos, relate "O B# é inválido".
- Se o ClassID não estiver na tabela de classes, relate "O Classid é inválido".
- Se a aula não for oferecida no semestre atual (ou seja, outono de 2018), rejeite a inscrição e o relatório "não poderá se inscrever em uma aula de um semestre anterior".
- Se a classe já estiver cheia antes da solicitação de inscrição, rejeite a solicitação de inscrição e relate "a classe já está cheia".
- Se o aluno já estiver na aula, relate "o aluno já está na aula".
- Se o aluno já estiver matriculado em quatro outras aulas no mesmo semestre e no mesmo ano, relate "o aluno estará sobrecarregado com a nova inscrição". mas ainda permita que o aluno seja matriculado.
- Se o aluno já estiver matriculado em cinco outras aulas no mesmo semestre e no mesmo ano, relate "os alunos não podem estar matriculados em mais de cinco classes no mesmo semestre". e rejeitar a inscrição.
- Se o aluno não tiver concluído os cursos de pré -requisito necessários com pelo menos um grau C, rejeite a inscrição e relate "o pré -requisito não satisfeito".
O procedimento lida com a exclusão de um aluno da tabela de matrículas.
- Procedimento DELETE_STUDENT_ENROLLIGN (B#_in em estudantes.B#%Tipo, Classid_in in Class.Classid%Type);
- Valitações:
- Se o aluno não estiver na tabela dos alunos, relate "O B# é inválido".
- Se o ClassID não estiver na tabela de classes, relate "O Classid é inválido".
- Se o aluno não estiver matriculado na aula, relate "o aluno não está matriculado na classe".
- Se a aula não for oferecida no outono de 2018, rejeite a tentativa de queda e relate "apenas a inscrição no semestre atual poderá ser descartada".
- Se a retirada do aluno da turma causaria uma violação do requisito de pré -requisito para outra aula, rejeitaria a tentativa de queda e relatar "a queda não é permitida porque outra classe que o aluno registrou a usa como um pré -requisito". Em todos os outros casos, o aluno será retirado da turma.
- Se a aula for a última aula para o aluno, relate "Este aluno não está matriculado em nenhuma aula".
- Se o aluno é o último aluno da turma, relate "a aula agora não tem estudantes".
O procedimento lida com a exclusão de um aluno da tabela de alunos com base em um determinado B#.
- Procedimento DELETE_STUDENT (b#_in em estudantes.b#%tipo);
- Validação:
- Se o aluno não estiver na tabela dos alunos, relate "O B# é inválido".
Objetos de DB relacionados - Esses objetos não fazem parte do pacote e usados no aplicativo.
- Sequência para gerar log# automaticamente quando novos registros de log são inseridos na tabela de log.
- Trigger para fazer a entrada na tabela de log na exclusão da entrada da tabela de inscrição.
- Trig_on_del_enroll_ins_logs
- Gatilho para diminuir o tamanho da classe na tabela de classes sobre a exclusão da entrada da tabela de inscrição.
- Trig_on_del_enroll_upd_classes
- Trigger para excluir a entrada da tabela TA sobre a exclusão da entrada da tabela do aluno.
- Trig_on_del_students_del_ta
- Trigger para fazer a entrada na tabela de log na exclusão da entrada da tabela TA.
- Trigger para tornar a entrada de entrada da coluna TA na tabela de aulas sobre a exclusão da entrada da tabela TA.
- Trig_on_del_tas_upd_classes
- Acionador para fazer a entrada na tabela de log na inserção da entrada da tabela de inscrição.
- Trig_on_ins_enroll_ins_logs
- Trigger para aumentar o tamanho da classe na tabela de classes sobre a inserção da tabela de inscrições.
- Trig_on_ins_enroll_upd_classes
- Trigger para fazer a entrada na tabela de log na atualização da entrada da tabela de classes.
- TRIG_ON_UPD_CLASSES_INS_LOGS
- Disparo para excluir a inscrição na exclusão de entrada do aluno.
- Trig_on_del_stud_del_enroll
Esboço do código de front -end e Java
- Abaixo está o snippet da estrutura do diretório para o projeto da web dinâmico Java usando o modelo de arquitetura do Model View Controller:
