SWAT - Sistema Web para Avaliação de Trabalhos



Documentos relacionados
SWAT - Sistema Web de Avaliação de Trabalhos

WEBDISC - Sistema Web para Gerenciamento de Disciplinas

SWAT - Sistema Web para Avaliação de Trabalhos

Construção de Wiki para a MISTOOL, uma Ferramenta de Aplicação do Método de Inspeção Semiótica

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL.

PHP INTEGRAÇÃO COM MYSQL PARTE 1

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

AULA 8 CRIANDO UMA CLASSE EM PHP INTERAGINDO COM BANCO DE DADOS - COM RELACIONAMENTO ENTRE TABELAS

Projeto de Banco de Dados: Empresa X

Comandos DDL. id_modulo = id_m odulo

SIGLA - Sistema Integrado de Gestão Legislativa e Administrativa

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

SQL Linguagem de Definição de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL

A linguagem SQL

Roteiro 9 - SQL Básico: chave estrangeira, operadores de comparação e operadores booleanos

BANCO DE DADOS: SQL. Edson Anibal de Macedo Reis Batista. 27 de janeiro de 2010

AULA 6 INTEGRIDADOS DOS DADOS - CRIANDO RESTRIÇÕES

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL

(1,n) venda. (1,1) realizacao. cliente. (0,n) (1,1) contem. produto. Laboratório de Banco de Dados Exercicios

BANCO DE DADOS BANCO DE DADOS. Prof. Patrícia Lucas 3º Trimestre

Trabalhando com conexão ao banco de dados MySQL no Lazarus. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

Especialização em web com interfaces ricas

Solução do segundo exercício proposto REDE DE HOTÉIS

SQL. Autor: Renata Viegas

Linguagem SQL. Comandos Básicos

Framework de comunicação para Webservices 2P2

Bases de Dados. Lab 1: Introdução ao ambiente

PostgreSQL. André Luiz Fortunato da Silva Analista de Sistemas CIRP / USP alf@cirp.usp.br

Disciplina: Unidade V: Prof.: Período:

Consistem num conjunto de apontadores para instâncias especificas de cada relação.

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS ARMAZENAMENTO EM BD NO DM. Prof. Angelo Augusto Frozza, M.Sc.

ESTUDO DE CASO: IMPLEMENTAÇÃO DE UM SERVIÇO DE PARA O DEPARTAMENTO DE COMPUTAÇÃO

4.6. SQL - Structured Query Language

Usando PostgreSQL na Regra de Negócio de um ERP. Fabiano Machado Dias Eduardo Wolak

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS ARMAZENAMENTO EM BD NO DM. Prof. Angelo Augusto Frozza, M.Sc.

José Benedito Lopes Junior ¹, Marcello Erick Bonfim 2

Banco de Dados I. Aula 12 - Prof. Bruno Moreno 04/10/2011

Modelo Cliente/Servidor Por HIARLY ALVES

JDBC. Prof. Márcio Bueno

Armazenamento organizado facilitando SCRUD; Agiliza processo de desenvolvimento de sistemas;

DIRETRIZES DE ORIENTAÇÃO DAS ATIVIDADES DO TRABALHO DE CURSO

Bases de Dados. Lab 1: Introdução ao ambiente. Figura 1. Base de dados de exemplo

Estatística Básica via MySQL para Pesquisas On-Line

(P AA) 2 PACOTE DE APOIO A APRENDIZAGEM DE PROJETO E ANÁLISE DE ALGORITMOS: IMPLEMENTAÇÃO EM JAVA

Introdução ao Sistema. Características

Disciplina de Banco de Dados Parte V

SQL DDL. Frederico D. Bortoloti

Editor de Questões E24H

DESENVOLVIMENTO DE FIRMWARE E SOFTWARE APLICATIVO DE CONTROLE PARA UMA MÁQUINA DE ENSAIOS GEOLÓGICOS

EMISSÃO DE CERTIFICADOS ELETRÔNICOS NOS EVENTOS DO INSTITUTO FEDERAL CATARINENSE CÂMPUS VIDEIRA

Treinamento em PHP. Aula 7. Ari Stopassola Junior

SQL - Criação de Tabelas

Linguagem SQL (Parte II)

Prof. Carlos Majer Aplicações Corporativas UNICID

BASES DE DADOS I LTSI/2. Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2010/2011

1. Domínio dos Atributos

Faça um Site PHP 5.2 com MySQL 5.0 Comércio Eletrônico

Sistema de Acompanhamento ao Desempenho do Aluno

Conteúdo O que é?... 4 Histórico... 4 Onde Baixar?... 4 Diferença entre Firebird e o Interbase... 4 Como instalar?... 4 Instalando o Ibexpert...

2 echo "PHP e outros.";

Comandos de Manipulação

Principais Comandos SQL Usados no MySql

Plano de Gerenciamento do Projeto Baseado na 5ª edição do Guia PMBOK

Linguagem SQL Sub-linguagem DDL

JDBC Java Database Connectivity

18/03/2012. Formação.

SQL Server Ferramenta de administração. SQL Server Management Studio. 1º passo conectar ao banco de dados 2ª Query (consulta) usando SQL

(Anexo 1) Proposta de Terceirização do IIPCNet

Curso PHP Aula 08. Bruno Falcão

Prof.: Clayton Maciel Costa

EMISSÃO DE CERTIFICADOS ELETRÔNICOS NOS EVENTOS DO INSTITUTO FEDERAL CATARINENSE CÂMPUS VIDEIRA

Programação SQL. Introdução

Bases de Dados 1º semestre

SQL. Definição do Esquema da Base de Dados. Cristina C. Vieira Departamento de Engenharia Eletrónica e Informática

Linguagem de Consulta - SQL

GUIA DE CURSO. Tecnologia em Sistemas de Informação. Tecnologia em Desenvolvimento Web. Tecnologia em Análise e Desenvolvimento de Sistemas

Banco de Dados Avançados Banco de Dados Ativo

CICLO DE VIDA DE UM BD

(P AA) 2 PACOTE DE APOIO A APRENDIZAGEM DE PROJETO E ANÁLISE DE ALGORITMOS: IMPLEMENTAÇÃO EM JAVA

Bases de Dados. O ficheiro create-bank.sql contém um conjunto de instruções SQL para criar a base de dados de exemplo ilustrada na figura 1.

CURSO DE EXTENSÃO ON-LINE EM Oracle 10g Express Edition XE nível básico. Edital de seleção

8. Outros tipos de Transação (Modo de Transação de Autoconfirmação e Modo Implícito)

Plano de Gerenciamento do Projeto

Aplicação Prática de Lua para Web

ROTEIRO PARA TREINAMENTO DO SAGRES DIÁRIO Guia do Docente

LINGUAGEM SQL. SQL Server 2008 Comandos iniciais

Sistema de Controle de Estoque

Histórico de Revisão Data Versão Descrição Autor

PHP INTEGRAÇÃO COM MYSQL PARTE 2

FACULDADE DE TECNOLOGIA RUBENS LARA Análise e Desenvolvimento de Sistemas

MANUAL INSTALAÇÃO WEB SERVICE

Escrito por Sex, 14 de Outubro de :12 - Última atualização Seg, 26 de Março de :33

Plano de Trabalho Docente Qualificação: Auxiliar de informática para internet Módulo: 1º

SQL: Definição de tabelas, Modificações à Base de Dados

Transcrição:

Universidade Federal de Ouro Preto - UFOP Instituto de Ciências Exatas e Biológicas - ICEB Departamento de Computação - DECOM SWAT - Sistema Web para Avaliação de Trabalhos Aluno: Kayran dos Santos Matricula: 08..4006 Orientador: David Menotti Ouro Preto 5 de setembro de 20

Universidade Federal de Ouro Preto - UFOP Instituto de Ciências Exatas e Biológicas - ICEB Departamento de Computação - DECOM SWAT - Sistema Web para Avaliação de Trabalhos Proposta de monograa apresentada ao curso de Bacharelado em Ciência da Computação, Universidade Federal de Ouro Preto, como requisito parcial para a conclusão da disciplina Monograa II (BCC39). Aluno: Kayran dos Santos Matricula: 08..4006 Orientador: David Menotti Ouro Preto 5 de setembro de 20

Resumo Apresentamos uma proposta de continuação do desenvolvimento do Sistema Web para Avaliação de Trabalhos, a ser aplicado inicialmente na disciplina de Estrutura de Dados I (EDI), com grande possibilidade de expansão para outras disciplinas do ciclo básico da Computação voltadas para a programação. A proposta apresentada auxiliará no desenvolvimento do novo plano pedagógico do DECOM no que diz respeito à otimização dos recursos didáticos. Palavras-chave: Avaliação Automática, Trabalhos Práticos, Sistema Web.

Sumário Introdução 2 Justicativa 2 3 Objetivos 3 3. Objetivo geral................................ 3 3.2 Objetivos especícos............................ 3 4 Metodologia 4 4. Tecnologias Utilizadas........................... 4 4.2 Organização do Sistema.......................... 4 4.3 Período de Testes.............................. 5 5 Cronograma de atividades 6 5. Atividades Concluídas/Avançadas..................... 7

Lista de Figuras Diagrama ER................................ 8 2 Modelo Relacional............................. 9 Lista de Tabelas Cronograma de Atividades......................... 6 Lista de Programas SQL de Criação do Banco......................... 0 2 Conexão com o Banco........................... 2 3 Classe Admin................................ 3 4 Classe Aluno................................ 6 5 Classe Monitor............................... 8 6 Classe Professor............................... 20 7 Classe de Comunicação BD/Interface................... 2

Introdução Uma das bases do aprendizado em Ciência da Computação é a confecção de Trabalhos Práticos (TPs) e resolução de listas de exercícios voltadas para programação. A disciplina de Estrutura de Dados I (EDI) utiliza esta base profundamente, exigindo dos alunos a entrega de no mínimo 3 TPs e inúmeros exercicios, sendo compostos de código fonte que resolva o problema proposto e documentação explicativa, aplicando os conceitos aprendidos na disciplina durante o período. A correção desses trabalhos é de extrema importância para o acompanhamento dos alunos em seu desenvolvimento na disciplina e gera um gasto de tempo enorme por parte do professor. O grande número de alunos aumenta a quantidade de TPs e exercícios a serem corrigidos e diculta ainda mais esta correção, além disso existem prazos a serem cumpridos estabelecidos pela universidade. Automatizar o processo de correção do código fonte com um sistema online auxiliaria os professores a cumprir os prazos estabelecidos e facilitaria o acompanhamento do andamento dos alunos por eles mesmos e pelo professor.

2 Justicativa Grande parte das disciplinas do curso de Ciência da Computação se desenvolve a partir de atividades extra classe, os chamados Trabalhos Práticos. As correções destes TPs são de extrema importância tanto para o aluno saber como anda seu desenvolvimento na disciplina, como para o professor acompanhar o desenvolvimento da turma. Porém estas correções demandam considerável tempo do professor e ainda existe o risco de demorar mais do que é permitido pelas normas da universidade. O sistema Web proposto vem para auxiliar o professor e acelerar o processo de avaliação de TPs, e vem ao encontro do novo projeto pedagógico do curso de Ciência da Computação, no que diz respeito à otimização dos recursos didáticos. 2

3 Objetivos 3. Objetivo geral O objetivo deste trabalho é desenvolver um sistema acessível pela internet para auxiliar a correção de trabalhos práticos e exercícios da disciplina de Estrutura de Dados I com possível expansão para outras disciplinas. O sistema será o responsável pela correção do código fonte do aluno que será submetido em uma página Web, vericando se o mesmo compila e executa corretamente, gerando uma saída correspondente com a saída esperada para as várias instâncias de teste que serão criadas para cada TP. 3.2 Objetivos especícos Os objetivos especícos são: Conguração de um servidor para armazenamento dos dados dos alunos, dos trabalhos submetidos e das páginas desenvolvidas; Elaboração do Sistema Web para Avaliação de Trabalhos (SWAT) seguindo a metologia apresentada na seção seguinte; Execução de testes do sistema e monitoramento de seu funcionamento; Acompanhamento dos alunos durante a submissão de seus TPs. 3

4 Metodologia A metodologia adotada para o desenvolvimento do sistema será:. Em um primeiro momento serão revisados a análise de requisitos do sistema, o modelo Entidade - Relacionamento para o banco de dados seguindo os conceitos apresentados em [0], o esquema desenvolvido para o banco e a esquematização do sistema utilizando MoLIC[2, 5]; 2. Em seguida os esquemas serão seguidos de forma a implementar o sistema utilizando tecnologias Web[4, 3, 6], em um banco de dados PostgreSQL[]; 3. Após haverá um período de testes do sistema em meio à disciplina de EDI com a submissão supervisionada de um TP; 4. Depois do período de testes na disciplina de EDI, o mesmo será aplicado em larga escala na disciplina. 4. Tecnologias Utilizadas O sistema será desenvolvido utilizando as tecnologias PHP (Personal Home Page)[5, 6] como linguagem backend para o Flex SDK[4, 2], CSS (Cascading Style Sheets)[3] para denir os estilos das páginas do sistema, tudo isso interligado com um banco de dados PostgreSQL[7] para armazenamento dos dados dos alunos. Este será hospedado em um servidor do DECOM congurado com Linux e servidor Apache. 4.2 Organização do Sistema O sistema será desenvolvido utilizando algumas ideias do BOCA (BOCA Online Contest Administrator) [9], sistema de submissão e correção automática utilizada pela ACM em sua Maratona de Programação [, 8]. Basicamente o sistema será composto de um sistema Web de submissão de arquivos a ser acessado a partir de um login. O aluno efetuará login no sistema a partir de seu Registro Acadêmico (RA), também conhecido como número de matrícula. Após o login o aluno terá acesso, principalmente, a uma página de perl simples, uma página de submissão dos arquivos e uma página com o histórico de suas submissões. Vale ressaltar que apenas o aluno, o professor e eventualmente um monitor da disciplina terão acesso às notas. O arquivo submetido na página será armazenado no servidor até o m do período para possíveis esclarecimentos. Após a submissão do arquivo compactado, este mesmo será descompactado e compilado usando regras pré-estabelecidas a serem decididas e apresentadas aos alunos. A compilação vai gerar um arquivo executável Linux, que vai executar sobre uma base de testes preparada para cada problema. Esta base de testes será composta por arquivos com possíveis entradas ao programa, que estarão padronizadas, sendo este padrão apresentado aos alunos assim que for apresentado um TP. O programa vai gerar uma saída de acordo com a entrada utilizada. Esta saída vai ser comparada com a saída esperada usando comandos do shell Linux. Caso a saída seja a esperada, será atribuída ao TP do aluno nota total no que tange à execução do programa. Caso o programa apresente algum problema na compilação exista algum 4

problema de execução (Estouro de tempo, Saída mal formatada, Saída com valores errados), este será retornado ao aluno pela página Web após a supervisão do resultado por uma pessoa designada para tal. Para caso do estouro de tempo, ao ser denido o problema a ser resolvido será denido tempo limite para a execução do mesmo. Será possível ao aluno fazer submissões que não terão nota associada, permitindo ao aluno uma certa quantidade a ser denida de submissões para o sistema, onde apenas receberá um feedback de erros em seu código. Todas as submissões denitivas de TPs serão avaliadas por um supervisor delegado pelo professor da disciplina caso o sistema acuse um erro automático. Isto será feito para que mais de um erro seja detectado em paralelo e um feedback mais completo seja repassado ao aluno. Submissões não denitivas de TP e submissões de exercícios (Listas) não serão supervisionadas. O perl do aluno será composto apenas de informações básicas para identicação do mesmo, sendo que estas informações também serão disponíveis apenas para o professor e poderão ser atualizadas apenas pelo aluno. Além disso ele terá a página de histórico, onde os resultados dos TPs anteriores estarão disponíveis para que o mesmo possa controlar seu desempenho nos TPs. O sistema será organizado de forma que possam ser criadas disciplinas, cada disciplina tutorada por um professor previamente cadastrado no sistema. A cada semestre poderá ser criado um perl de disciplina para que novas atividades possam ser criadas. Os alunos cadastrados no sistema serão vinculados a uma ou mais disciplinas cadastradas. Para cada disciplina poderá existir um monitor,sendo que este será responsável por supervisionar as submissões de tarefas de alunos da disciplina à qual estão vinculados. As tarefas serão vinculadas a uma disciplina, portanto apenas alunos que cursam a mesma terão acesso a seus dados, podendo submeter soluções a elas, da mesma forma apenas os professores das disciplinas poderão criar tarefas para a disciplina e apenas os monitores destas disciplinas poderão supervisionar submissões de tarefas da mesma. A inserção de alunos no banco de dados poderá ser feita de modo semiautomático, por meio de um arquivo no formato CSV. O sistema possuirá um usuário com privilégios diferenciados, chamado administrador (Admin). Este usuário será responsável pelo cadastro de novos professores que queiram utilizar o sistema, bem como pela criação de novas disciplinas no sistema. Será possível a este usuário também cadastrar alunos no sistema e efetuar a inscrição destes nas disciplinas já existentes. Ao administrador caberá também a remoção de dados, usuários e disciplinas do sistema quando necessário. 4.3 Período de Testes Os testes do sistema inicialmente serão feitos com problemas simples e ainda no servidor do Laboratório de Processamento Digital de Imagens (LaPDI), durante o período de desenvolvimento. Após passar por estes testes preliminares, o mesmo será instalado no servidor do DECOM e disponibilizado para os alunos da disciplina de EDI exclusivamente pela internet. Ao disponibilizar o sistema, após entrar em acordo com o professor da disciplina, adaptaremos pelo menos um trabalho para testes do sistema. Depois de aprovado nestes testes, o sistema poderá ser incorporado à disciplina de EDI e poderemos estudar a sua implantação em outras disciplinas de programação básica. 5

5 Cronograma de atividades As atividades a serem desenvolvidas são mostradas na lista abaixo:. Revisão da análise de requisitos e dos diagramas do sistema; 2. Desenvolvimento do sistema; 3. Testes preliminares; 4. Testar o sistema em um trabalho; 5. Resolução de problemas observados; 6. Aplicar o sistema em EDI; 7. Elaboração da Monograa; 8. Apresentação oral de monograa para banca; 9. Escrita de um artigo. Na Tabela, apresenta-se o cronograma para desenvolvimento das atividades da lista. Cada coluna representa uma quinzena do mês. Atividades Set/2 Out/ Out/2 Nov/ Nov/2 Dez/ Dez/2 X X 2 X X X 3 X X X 4 X X X 5 X X X X X X X 6 X X X X 7 X X X X X 8 X X X 9 X X X X Tabela : Cronograma de Atividades. 6

5. Atividades Concluídas/Avançadas As atividades do cronograma apresentado anteriormente que já possuem alguns resultados são a Revisão da análise de requisitos e dos diagramas do sistema e o desenvolvimento. Toda a modelagem de banco de dados está pronta, com os scripts para criação do banco em SQL construidos. Com relação à modelagem falta terminar a modelagem das interações, para que seja possível desenvolver as interfaces do sistema. A primeira parte do sistema que está sendo desenvolvida é a persistência em banco. Foram feitos o Diagrama Entidade-Relacionamento (ER) (Figura ) e o Modelo Relacional (Figura 2) para o banco de dados do sistema. A partir deste diagramas foi projeto o script de criação do Banco de Dados usando SQL (Programa ) e alguns dos métodos de acesso ao banco de dados utilizando PHP (Programa 2, 3, 4, 5, 6, 7) Referências [] The ACM-ICPC International Collegiate Programing Contest Web Site sponsored by IBM. http://icpc.baylor.edu/, 20. Visitado em 5 de setembro de 20. [2] Adobe Flex - Wikipédia. http://pt.wikipedia.org/wiki/adobe_flex, 20. Visitado em 5 de setembro de 20. [3] Cascading Style Sheets - Wikipédia. http://pt.wikipedia.org/wiki/ Cascading_Style_Sheets, 20. Visitado em 5 de setembro de 20. [4] open source framework, web application software development Flex - Adobe. http://www.adobe.com/products/flex/, 20. Visitado em 5 de setembro de 20. [5] PHP - Wikipédia. http://pt.wikipedia.org/wiki/php, 20. Visitado em 5 de setembro de 20. [6] PHP: Hypertext Preprocessor. http://www.php.net/, 20. Visitado em 5 de setembro de 20. [7] PostgreSQL: The world's most advanced open source database. http://www. postgresql.org/, 20. Visitado em 5 de setembro de 20. [8] XVI Maratona de Programação. http://maratona.ime.usp.br/, 20. Visitado em 5 de setembro de 20. [9] Cassio P. de Campos and Carlos E. Ferreira. Boca: um sistema de apoio a competicoes de programacao. SBC Workshop de Educação em Computação, aug 2004. [0] Ramez Elmasri and Shamkant B. Navathe. Sistema de Banco de Dados. Addison Wesley, 4th edition, 2005. [] André Milani. PostgreSQL Guia do Programador. Editora Novatec, 2008. [2] RO Prates and SDJ Barbosa. Introdução à teoria e prática da interação humano computador fundamentada na engenharia semiótica. In JAI'2007 Jornada de Atualização em Informática, 2007. Capítulo 8. 7

[3] Daniel Pace Schmitz. Desenvolvendo Sistemas com Flex e PHP. Editora Novatec, 2009. [4] Maurício Samy Silva. Construindo Sites com CSS e (X)HTML: sites controlados por folhas de estilo em cascata. Editora Novatec, 2008. [5] Élton José da Silva. Sistemas Interativos. Élton José da Silva, 2006. Capítulo 7, páginas 92-2. Apêndice A - Diagramas Senha Nome Idade Email RA Usuario Sexo d Media Sala Aluno Monitor Professor Administrador N Monitora Leciona Supervisiona N Cursa M N Nome Codigo Efetuada N N Supervisionado Turma Disciplina Ano CH Semestre Arquivos Nota Submissão TP Lista Definitiva IDSub N d Depende Responde n Tarefa Result Nome Valor Espec Teste Figura : Diagrama ER 8

Usuario RA TRA(varchar(9)) Senha varchar(200) Nome varchar(00) Email varchar(200) Idade int Sexo Char Admin bool Aluno Media Professor Sala varchar(0) Monitor Disciplina Codigo char(6) Semestre int Ano int Nome varchar(30) CargaHoraria int n n Cursa Turma int n n Tarefa Nome varchar(30) Especificacao FILE_Address Valor real Teste FILE_Address Resultado FILE_Address Tipo int Supervisionado bool n Submissao ID PKSerial Definitiva bool Nota Real Arquivos NomeArquivo FILE_Address n n n n Figura 2: Modelo Relacional 9

Apendice B - Códigos CREATE DATABASE SWAT; BEGIN; CREATE DOMAIN TRA as char ( 9 ) ; 5 CREATE DOMAIN TFILE as varchar (200) ; CREATE TABLE USUARIO( RA TRA UNIQUE NOT NULL, SENHA VARCHAR(200) NOT NULL, 0 NOME VARCHAR(00) NOT NULL, EMAIL VARCHAR(200), IDADE INTEGER NOT NULL, SEXO CHAR( ) NOT NULL, ADMIN BOOLEAN NOT NULL DEFAULT FALSE, 5 CONSTRAINT USUPK PRIMARY KEY(RA), CONSTRAINT SEXCHK CHECK( Sexo='M' OR sexo = 'F ' ) ) ; CREATE TABLE PROFESSOR( 20 RA TRA UNIQUE NOT NULL, SALA VARCHAR( 5 ), CONSTRAINT PROFPK PRIMARY KEY(RA), CONSTRAINT PROFUSUFK FOREIGN KEY(RA) REFERENCES USUARIO(RA) ON DELETE CASCADE ON UPDATE CASCADE ) ; 25 CREATE TABLE MONITOR( RA TRA UNIQUE NOT NULL, CONSTRAINT MONPK PRIMARY KEY(RA), CONSTRAINT MONUSUFK FOREIGN KEY(RA) REFERENCES USUARIO(RA) ON DELETE CASCADE ON UPDATE CASCADE 30 ) ; CREATE TABLE ALUNO( RA TRA UNIQUE NOT NULL, MEDIA FLOAT, 35 CONSTRAINT ALUPK PRIMARY KEY(RA), CONSTRAINT ALUUSUFK FOREIGN KEY(RA) REFERENCES USUARIO(RA) ON DELETE CASCADE ON UPDATE CASCADE ) ; CREATE TABLE DISCIPLINA( 40 CODIGO CHAR( 6 ) NOT NULL, SEMESTRE INTEGER NOT NULL, ANO INTEGER NOT NULL, NOME VARCHAR(30) NOT NULL, CARGAHORARIA INTEGER NOT NULL, 45 RA_PROF TRA NOT NULL, RA_MON TRA, CONSTRAINT DISCPK PRIMARY KEY(CODIGO, SEMESTRE, ANO), CONSTRAINT DISCPROFFK FOREIGN KEY(RA_PROF) REFERENCES PROFESSOR(RA) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT DISCMONFK FOREIGN KEY(RA_MON) REFERENCES MONITOR(RA) ON DELETE CASCADE ON UPDATE CASCADE 0

50 ) ; CREATE TABLE CURSA( CODIGO_DISC CHAR( 6 ) NOT NULL, SEMESTRE_DISC INTEGER NOT NULL, 55 ANO_DISC INTEGER NOT NULL, RA_ALU TRA NOT NULL, TURMA INT NOT NULL, CONSTRAINT CURPK PRIMARY KEY(CODIGO_DISC, SEMESTRE_DISC, ANO_DISC, RA_ALU ), CONSTRAINT CURDISCFK FOREIGN KEY(CODIGO_DISC, SEMESTRE_DISC, ANO_DISC) REFERENCES DISCIPLINA(CODIGO, SEMESTRE, ANO) ON DELETE CASCADE ON UPDATE CASCADE, 60 CONSTRAINT CURALUFK FOREIGN KEY(RA_ALU) REFERENCES ALUNO(RA) ON DELETE CASCADE ON UPDATE CASCADE ) ; CREATE TABLE TAREFA( CODIGO_DISC CHAR( 6 ) NOT NULL, 65 SEMESTRE_DISC INTEGER NOT NULL, ANO_DISC INTEGER NOT NULL, NOME VARCHAR(30) NOT NULL, ESPECIFICACAO TFILE NOT NULL, VALOR FLOAT NOT NULL, 70 TESTE TFILE NOT NULL, RESULTADO TFILE NOT NULL, TIPO INT NOT NULL, SUPERVISIONADO BOOLEAN NOT NULL DEFAULT FALSE, CONSTRAINT TARPK PRIMARY KEY(CODIGO_DISC, SEMESTRE_DISC, ANO_DISC, NOME), 75 CONSTRAINT TARDISCFK FOREIGN KEY(CODIGO_DISC, SEMESTRE_DISC, ANO_DISC) REFERENCES DISCIPLINA(CODIGO, SEMESTRE, ANO) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT TIPOCHK CHECK(TIPO = OR TIPO = 2) ) ; CREATE TABLE SUBMISSAO( 80 RA_ALU TRA NOT NULL, CODIGO_DISC CHAR( 6 ) NOT NULL, SEMESTRE_DISC INTEGER NOT NULL, ANO_DISC INTEGER NOT NULL, NOME_TAR VARCHAR( 3 0) NOT NULL, 85 ID SERIAL UNIQUE, DEFINITIVA BOOLEAN NOT NULL, NOTA FLOAT NOT NULL, RA_MON TRA, CONSTRAINT SUBPK PRIMARY KEY(RA_ALU, CODIGO_DISC, SEMESTRE_DISC, ANO_DISC, NOME_TAR, ID ), 90 CONSTRAINT SUBALUFK FOREIGN KEY(RA_ALU) REFERENCES ALUNO(RA) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT SUBMONFK FOREIGN KEY(RA_MON) REFERENCES MONITOR(RA) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT SUBTARFK FOREIGN KEY(CODIGO_DISC, SEMESTRE_DISC, ANO_DISC, NOME_TAR) REFERENCES TAREFA(CODIGO_DISC, SEMESTRE_DISC, ANO_DISC, NOME ) ON DELETE CASCADE ON UPDATE CASCADE ) ; 95 CREATE TABLE ARQUIVOS(

RA_ALU TRA NOT NULL, CODIGO_DISC CHAR( 6 ) NOT NULL, SEMESTRE_DISC INTEGER NOT NULL, ANO_DISC INTEGER NOT NULL, 00 NOME_TAR VARCHAR( 3 0) NOT NULL, ID_SUB INTEGER NOT NULL, NOME TFILE NOT NULL, CONSTRAINT ARQPK PRIMARY KEY(RA_ALU, CODIGO_DISC, SEMESTRE_DISC, ANO_DISC, NOME_TAR, ID_SUB, NOME), CONSTRAINT ARQSUBFK FOREIGN KEY(RA_ALU, CODIGO_DISC, SEMESTRE_DISC, ANO_DISC, NOME_TAR, ID_SUB) REFERENCES SUBMISSAO(RA_ALU, CODIGO_DISC, SEMESTRE_DISC, ANO_DISC, NOME_TAR, ID ) ON DELETE CASCADE ON UPDATE CASCADE 05 ) ; END; Programa : SQL de Criação do Banco <?php c l a s s SWATConecta { 5 p r i v a t e s t a t i c $host = " l o c a l h o s t " ; p r i v a t e s t a t i c $port = "5432" ; p r i v a t e s t a t i c $dbname = " swat " ; p r i v a t e s t a t i c $usuario = " swat " ; p r i v a t e s t a t i c $pass = " ufopdecomcom20lapdi " ; 0 p r i v a t e s t a t i c $con ; p r i v a t e s t a t i c $ e r r ; p u b l i c s t a t i c f u n c t i o n conecta ( ) { $ s t r = ' h o s t='. s e l f : : $host. ' port='. s e l f : : $port. ' dbname= '. s e l f : : $dbname. ' user='. s e l f : : $usuario. ' password='. s e l f : : $pass ; 5 s e l f : : $con = pg_connect ( $ s t r ) ; pg_set_client_encoding ( s e l f : : $con, "UNICODE" ) ; p u b l i c s t a t i c f u n c t i o n fecha ( ) { 20 pg_close ( s e l f : : $con ) ; p u b l i c s t a t i c f u n c t i o n i n i c i a T r a n s a c a o ( ) { SWATConecta : : conecta ( ) ; 25 $query = " begin ; " ; SWATConecta : : executa ( $query ) ; return SWATConecta : : n o t i c e ( ) ; 30 p u b l i c s t a t i c f u n c t i o n desfaztransacao ( ) { $query = " r o l l b a c k ; " ; SWATConecta : : executa ( $query ) ; SWATConecta : : fecha ( ) ; 35 return $msg ; 2

p u b l i c s t a t i c f u n c t i o n encerratransacao ( ) { $query = "end ; " ; 40 SWATConecta : : executa ( $query ) ; SWATConecta : : fecha ( ) ; return $msg ; 45 p u b l i c s t a t i c f u n c t i o n executa ( $query ) { $ r e s u l t = pg_query( s e l f : : $con, $query ) ; s e l f : : $ e r r = pg_errormessage ( s e l f : : $con ) ; return $ r e s u l t ; 50 55 60 65 p u b l i c s t a t i c f u n c t i o n n o t i c e ( ) { return s e l f : : $ e r r ; p u b l i c s t a t i c f u n c t i o n horasistema ( ) { $hora = date ( 'G: i : s ' ) ; return $hora ; p u b l i c s t a t i c f u n c t i o n datasistema ( ) { $data = date ( "d/m/y" ) ; return $data ; p u b l i c s t a t i c f u n c t i o n diasistema ( ) { $numdia = strftime ( '%u ' ) ; switch ( $numdia ) { case : $dia = ' Segunda ' ; 70 break ; case 2 : $dia = ' Terca ' ; break ; case 3 : $dia = ' Quarta ' ; break ; 75 case 4 : $dia = ' Quinta ' ; break ; case 5 : $dia = ' Sexta ' ; break ; case 6 : $dia = ' Sabado ' ; 80 break ; case 7 : $dia = ' Domingo ' ; break ; return $dia ; 85?> Programa 2: Conexão com o Banco <?php 3

include_once "SWATConecta. php" ; 5 c l a s s Admin { p u b l i c s t a t i c f u n c t i o n c r i a D i s c ( $codigo, $semestre, $ano, $nome, $ch, $RA_Prof, $RA_Mon) { $msg = SWATConecta : : i n i c i a T r a n s a c a o ( ) ; 0 SWATConecta : : encerratransacao ( ) ; return "Erro Conexao Admin : : c r i a D i s c " ; $query = "INSERT INTO DISCIPLINA(CODIGO,SEMESTRE,ANO,NOME, CARGAHORARIA,RA_PROF,RA_MON) VALUES ( ' $codigo ', $semestre, $ano, ' $nome ', $ch, ' $RA_Prof ', ' $RA_Mon ') " ; 5 $ r e s u l t = SWATConecta : : executa ( $query ) ; SWATConecta : : desfaztransacao ( ) ; return " erro Insercao Admin : : C r i a d i s c " ; 20 $msg = SWATConecta : : encerratransacao ( ) ; i f (strcmp ( $msg, "" ) ) return " erro Final Admin : : C r i a d i s c " ; 25 p u b l i c s t a t i c f u n c t i o n criausu ( $ra, $senha, $nome, $idade, $sexo, $ t i p o ) { $msg = SWATConecta : : i n i c i a T r a n s a c a o ( ) ; SWATConecta : : encerratransacao ( ) ; 30 return "Erro Conexao Admin : : criausu " ; $query = "INSERT INTO USUARIO(RA,SENHA,NOME, IDADE, SEXO,ADMIN) VALUES ( ' $ra ', ' $senha ', ' $nome ', $idade, ' $sexo ', 'FALSE ') " ; $ r e s u l t = SWATConecta : : executa ( $query ) ; 35 SWATConecta : : desfaztransacao ( ) ; return " erro Insercao Admin : : CriaUsu " ; 40 i f (strcmp ( $tipo, " p r o f " ) ) { $query = "INSERT INTO PROFESSOR(RA, SALA) VALUES ( ' $ra ', ' ' ) " ; else i f (strcmp ( $tipo, " alu " ) ) { $query = "INSERT INTO ALUNO(RA,MEDIA) 45 VALUES ( ' $ra ', 0. 0 ) " ; else i f (strcmp ( $tipo, "mon" ) ) { $query = "INSERT INTO MONITOR(RA, EMAIL) VALUES ( ' $ra ', ' ' ) " ; else { 50 SWATConecta : : desfaztransacao ( ) ; return " erro Tipo Admin : : CriaUsu " ; $ r e s u l t = SWATConecta : : executa ( $query ) ; 4

55 SWATConecta : : desfaztransacao ( ) ; return " erro Insercao Admin : : CriaUsu " ; $msg = SWATConecta : : encerratransacao ( ) ; 60 i f (strcmp ( $msg, "" ) ) return " erro Final Admin : : CriaUsu " ; 65 p u b l i c s t a t i c f u n c t i o n matriculaaluno ( $codigo, $semestre, $ano, $ra_aluno, $turma ) { $msg = SWATConecta : : i n i c i a T r a n s a c a o ( ) ; SWATConecta : : encerratransacao ( ) ; return "Erro Conexao Admin : : Matricula " ; 70 $query = "INSERT INTO CURSA(CODIGO_DISC, SEMESTRE_DISC,ANO_DISC, RA_ALUNO,TURMA) VALUES ( ' $codigo ', $semestre, $ano, ' $ra_aluno ', $turma ) " ; $ r e s u l t = SWATConecta : : executa ( $query ) ; 75 SWATConecta : : desfaztransacao ( ) ; return " erro Insercao Admin : : Matricula " ; $msg = SWATConecta : : encerratransacao ( ) ; 80 i f (strcmp ( $msg, "" ) ) return " erro Final Admin : : Matricula " ; 85 p u b l i c s t a t i c f u n c t i o n l o g i n ($RA_Admin, $senha ) { $msg = SWATConecta : : i n i c i a T r a n s a c a o ( ) ; SWATConecta : : encerratransacao ( ) ; return "Erro Conexao Admin : : l o g i n " ; 90 $query = "SELECT FROM USUARIO WHERE RA = $RA_Admin and SENHA = $senha " ; 95 $ r e s u l t = SWATConecta : : executa ( $query ) ; SWATConecta : : encerratransacao ( ) ; return " erro Login Admin : : Login " ; 00 $response ; $cont = 0 ; while ( $data = pg_fetch_array ( $ r e s u l t ) ) { foreach ( $data as $ i => $value ) { 05 $data [ $ i ] = utf8_decode ( $value ) ; $response [ ] = $data ; $cont++; 5

0 $msg = SWATConecta : : encerratransacao ( ) ; i f (strcmp ( $msg, "" ) ) return " erro Final Admin : : Login " ; i f ( $cont > 0) return $response ; 5 return "Nome de Usuario ou Senha I n v a l i d o " ; 20?> <?php Programa 3: Classe Admin include_once "SWATConecta. php" ; 5 c l a s s Aluno { p u b l i c s t a t i c f u n c t i o n submete ($RA_aluno, $codigo_disc, $semestre_disc, $ano_disc, $nome_tarefa, $ L i s t a _ f i l e s A d r e s s, $ f i n a l ) { $msg = SWATConecta : : i n i c i a T r a n s a c a o ( ) ; 0 SWATConecta : : encerratransacao ( ) ; return "Erro Conexao Aluno : : submete " ; $query = "INSERT INTO SUBMISSAO (RA_ALU, CODIGO_DISC, SEMESTRE_DISC,ANO_DISC,NOME_TAR, DEFINITIVA) VALUES( ' $RA_aluno ', ' $codigo_disc ', $semestre_disc, $ano_disc, ' $nome_tarefa ', $ f i n a l ) ; " ; 5 $ r e s u l t = SWATConecta : : executa ( $query ) ; SWATConecta : : desfaztransacao ( ) ; 20 return " erro Insercao Aluno : : submete " ; $query = "SELECT MAX( ID) FROM SUBMISSAO" ; 25 $ r e s u l t = SWATConecta : : executa ( $query ) ; SWATConecta : : desfaztransacao ( ) ; return " erro GetID Aluno : : submete " ; 30 $response ; $cont = 0 ; while ( $data = pg_fetch_array ( $ r e s u l t ) ) { $response [ ] = $data ; 35 $cont++; i f ( $cont == 0) { SWATConecta : : desfaztransacao ( ) ; 6

return " n u l l " ; 40 $id = $response [ 0 ] [ 0 ] ; foreach ( $ L i s t a _ f i l e s A d r e s s as $ f i l e a d r e s s ) { $query = "INSERT INTO ARQUIVOS (RA_ALU, CODIGO_DISC, SEMESTRE_DISC,ANO_DISC,NOME_TAR, NomeArquivo ) 45 VALUES( ' $RA_aluno ', ' $codigo_disc ', $semestre_disc, $ano_disc, ' $nome_tarefa ', $ f i l e a d r e s s ) ; " ; $ r e s u l t = SWATConecta : : executa ( $query ) ; SWATConecta : : desfaztransacao ( ) ; 50 return " erro Insercao a r q u i v o s Aluno : : submete " ; $msg = SWATConecta : : encerratransacao ( ) ; i f (strcmp ( $msg, "" ) ) 55 return " erro Final Aluno : : H i s t o r i c o " ; p u b l i c s t a t i c f u n c t i o n h i s t o r i c o ($RA_Aluno) { $msg = SWATConecta : : i n i c i a T r a n s a c a o ( ) ; 60 SWATConecta : : encerratransacao ( ) ; return "Erro Conexao Aluno : : h i s t o r i c o " ; $query = "SELECT CODIGO_DISC, SEMESTRE_DISC,ANO_DISC,NOME_TAR, NOTA, D e f i n i t i v a 65 FROM SUBMISSAO WHERE RA_Aluno = $RA_Aluno" ; $ r e s u l t = SWATConecta : : executa ( $query ) ; 70 SWATConecta : : encerratransacao ( ) ; return " erro Busca Aluno : : H i s t o r i c o " ; $response ; 75 $cont = 0 ; while ( $data = pg_fetch_array ( $ r e s u l t ) ) { foreach ( $data as $ i => $value ) { $data [ $ i ] = utf8_decode ( $value ) ; 80 $response [ ] = $data ; $cont++; $msg = SWATConecta : : encerratransacao ( ) ; i f (strcmp ( $msg, "" ) ) 85 return " erro Final Aluno : : H i s t o r i c o " ; i f ( $cont > 0) return $response ; return "Nao ha Submissoes! " ; 90 p u b l i c s t a t i c f u n c t i o n l o g i n ($RA_Aluno, $senha ) { 7

$msg = SWATConecta : : i n i c i a T r a n s a c a o ( ) ; 95 SWATConecta : : encerratransacao ( ) ; return "Erro Conexao Aluno : : h i s t o r i c o " ; $query = "SELECT FROM USUARIO 00 WHERE RA = $RA_Aluno and SENHA = $senha " ; $ r e s u l t = SWATConecta : : executa ( $query ) ; 05 SWATConecta : : encerratransacao ( ) ; return " erro Login Aluno : : Login " ; $response ; $cont = 0 ; 0 while ( $data = pg_fetch_array ( $ r e s u l t ) ) { foreach ( $data as $ i => $value ) { $data [ $ i ] = utf8_decode ( $value ) ; $response [ ] = $data ; 5 $cont++; $msg = SWATConecta : : encerratransacao ( ) ; i f (strcmp ( $msg, "" ) ) return " erro Final Aluno : : Login " ; 20 i f ( $cont > 0) return $response ; return "Nome de Usuario ou Senha I n v a l i d o " ; 25?> Programa 4: Classe Aluno <?php include_once "SWATConecta. php" ; 5 c l a s s Monitor { p u b l i c s t a t i c f u n c t i o n buscasubmissoes ($ra_mon) { $msg = SWATConecta : : i n i c i a T r a n s a c a o ( ) ; 0 SWATConecta : : encerratransacao ( ) ; return " erro Conexao Monit : : buscasubmissoes " ; $query = "SELECT CODIGO,SEMESTRE,ANO FROM DISCIPLINA WHERE RA_MON = $ra_mon ; " ; $ r e s u l t = SWATConecta : : executa ( $query ) ; 5 SWATConecta : : encerratransacao ( ) ; 8

return " erro BUSCADISC Monit : : BuscaSubmissoes " ; 20 $data = pg_fetch_array ( $ r e s u l t ) ; $codigo = utf8_decode ( $data [ 0 ] ) ; $semestre = $data [ ] ; $ano = $data [ 2 ] ; i f ( $codigo==n u l l $semestre == n u l l $ano == n u l l ) { 25 SWATConecta : : encerratransacao ( ) ; return " erro BuscaDisc Monit : : BuscaSubmissoes " ; $query = "SELECT NOME, ESPECIFICACAO,VALOR, TESTE,RESULTADO FROM TAREFA 30 WHERE CODIGO_DISC = ' $codigo ' AND SEMESTRE_DISC = $semestre AND ANO_DISC = $ano AND SUPERVISIONADO = 'TRUE' " ; $ r e s u l t = SWATConecta : : executa ( $query ) ; 35 SWATConecta : : encerratransacao ( ) ; return " erro BuscaTarefa Monit : : BuscaSubmissoes " ; 40 $cont = 0 ; while ( $data = pg_fetch_array ( $ r e s u l t ) ) { foreach ( $data as $ i => $value ) { $data [ $ i ] = utf8_decode ( $value ) ; 45 $response [ ] = $data ; $cont++; i f ( cont <=0){ SWATConecta : : desfaztransacao ( ) ; 50 return " erro BuscaTarefa Monit : : BuscaSubmissoes " ; foreach ( $response as $ t a r e f a ) { $query = "SELECT ID" ; 55 p u b l i c s t a t i c f u n c t i o n l o g i n ($RA_Monit, $senha ) { $msg = SWATConecta : : i n i c i a T r a n s a c a o ( ) ; 60 SWATConecta : : encerratransacao ( ) ; return "Erro Conexao Monit : : h i s t o r i c o " ; $query = "SELECT 65 FROM USUARIO WHERE RA = $RA_Monit and SENHA = $senha " ; $ r e s u l t = SWATConecta : : executa ( $query ) ; 70 SWATConecta : : encerratransacao ( ) ; return " erro Login Monit : : Login " ; $response ; 9

75 $cont = 0 ; while ( $data = pg_fetch_array ( $ r e s u l t ) ) { foreach ( $data as $ i => $value ) { $data [ $ i ] = utf8_decode ( $value ) ; 80 $response [ ] = $data ; $cont++; $msg = SWATConecta : : encerratransacao ( ) ; i f (strcmp ( $msg, "" ) ) 85 return " erro Final Monit : : Login " ; i f ( $cont > 0) return $response ; return "Nome de Usuario ou Senha I n v a l i d o " ; 90?> Programa 5: Classe Monitor <?php include_once "SWATConecta. php" ; 5 c l a s s P r o f e s s o r { p u b l i c s t a t i c f u n c t i o n c r i a T a r e f a ( $codigo_disc, $semestre_disc, $ano_disc, $nome, $especpath, $valor, $ t e s t f i l e p a t h, $ r e s u l t f i l e p a t h, $tipo, $ s u p e r v i s i o n a d o ) { 0 $msg = SWATConecta : : i n i c i a T r a n s a c a o ( ) ; SWATConecta : : encerratransacao ( ) ; return "Erro Conexao P r o f e s s o r : : c r i a " ; 5 $query = "INSERT INTO TAREFA (CODIGO_DISC, SEMESTRE_DISC,ANO_DISC, NOME, ESPECIFICACAO,VALOR, TESTE,RESULTADO, TIPO, SUPERVISIONADO) VALUES( ' $codigo_disc ', $semestre_disc, $ano_disc, ' $nome ', ' $especpath ', $valor, ' $ t e s t f i l e p a t h ', ' $ r e s u l t f i l e p a t h ', $tipo, $ s u p e r v i s i o n a d o ) ; " ; $ r e s u l t = SWATConecta : : executa ( $query ) ; 20 SWATConecta : : desfaztransacao ( ) ; return " erro Insercao P r o f e s s o r : : c r i a " ; $msg = SWATConecta : : encerratransacao ( ) ; 25 i f (strcmp ( $msg, "" ) ) return " erro Final P r o f e s s o r : : c r i a " ; 30 p u b l i c s t a t i c f u n c t i o n l o g i n ($RA_Prof, $senha ) { 20

$msg = SWATConecta : : i n i c i a T r a n s a c a o ( ) ; SWATConecta : : encerratransacao ( ) ; 35 return "Erro Conexao Prof : : Login " ; $query = "SELECT FROM USUARIO WHERE RA = $RA_Prof and SENHA = $senha " ; 40 $ r e s u l t = SWATConecta : : executa ( $query ) ; SWATConecta : : encerratransacao ( ) ; 45 return " erro Login Prof : : Login " ; $response ; $cont = 0 ; while ( $data = pg_fetch_array ( $ r e s u l t ) ) { 50 foreach ( $data as $ i => $value ) { $data [ $ i ] = utf8_decode ( $value ) ; $response [ ] = $data ; $cont++; 55 $msg = SWATConecta : : encerratransacao ( ) ; i f (strcmp ( $msg, "" ) ) return " erro Final Prof : : Login " ; i f ( $cont > 0) 60 return $response ; return "Nome de Usuario ou Senha I n v a l i d o " ; 65?> Programa 6: Classe Professor <?php include_once ' Aluno. php ' ; include_once ' P o r t e i r o. php ' ; 5 include_once ' P r o f e s s o r. php ' ; include_once ' S e c r e t a r i a. php ' ; c l a s s SWATBancodeDados { 0 p u b l i c f u n c t i o n SWATBancodeDados ( ) { p u b l i c f u n c t i o n submete ($RA_aluno, $codigo_disc, $semestre_disc, $ano_disc, $nome_tarefa, $ L i s t a _ f i l e s A d r e s s, $ f i n a l ) { 5 return Aluno : : submete ($RA_aluno, $codigo_disc, $semestre_disc, $ano_disc, $nome_tarefa, $ L i s t a _ f i l e s A d r e s s, $ f i n a l ) ; 2

p u b l i c f u n c t i o n h i s t o r i c o ($RA_Aluno) { return Aluno : : h i s t o r i c o ($RA_Aluno) ; 20 25 p u b l i c f u n c t i o n loginaluno ($RA_Aluno, $senha ) { return Aluno : : l o g i n ($RA_Aluno, $senha ) ; p u b l i c f u n c t i o n loginadmin ($RA_Aluno, $senha ) { return Admin : : l o g i n ($RA_Admin, $senha ) ; 30 p u b l i c f u n c t i o n c r i a D i s c ( $codigo, $semestre, $ano, $nome, $ch, $RA_Prof, $RA_Mon) { return Admin : : c r i a D i s c ( $codigo, $semestre, $ano, $nome, $ch, $RA_Prof, $RA_Mon) ; p u b l i c f u n c t i o n criausu ( $ra, $senha, $nome, $idade, $sexo, $ t i p o ) { 35 return Admin : : criausu ( $ra, $senha, $nome, $idade, $sexo, $ t i p o ) ; p u b l i c f u n c t i o n matriculaaluno ( $codigo, $semestre, $ano, $ra_aluno, $turma ) { return Admin : : matriculaaluno ( $codigo, $semestre, $ano, $ra_aluno, $turma ) ; 40 45 p u b l i c f u n c t i o n loginmonit ($RA_Monit, $senha ) { return Monitor : : l o g i n ($RA_Monit, $senha ) ; p u b l i c f u n c t i o n buscasubmissoes ( ) { return Monitor : : buscasubmissoes ( ) ; 50 p u b l i c f u n c t i o n l o g i n P r o f ( $cpf, $senha ) { return P r o f e s s o r : : l o g i n ( $cpf, $senha ) ; p u b l i c f u n c t i o n c r i a T a r e f a ( $codigo_disc, $semestre_disc, $ano_disc, $nome, $especpath, $valor, $ t e s t f i l e p a t h, $ r e s u l t f i l e p a t h, $tipo, $ s u p e r v i s i o n a d o ) { 55 return P r o f e s s o r : : c r i a T a r e f a ( $codigo_disc, $semestre_disc, $ano_disc, $nome, $especpath, $valor, $ t e s t f i l e p a t h, $ r e s u l t f i l e p a t h, $tipo, $ s u p e r v i s i o n a d o ) ; 60?> Programa 7: Classe de Comunicação BD/Interface 22