TPG
folitécnico
1 daGuarda
Polytechnic
ol Guarda
RELATÓRIO DE PROJETO
Licenciatura em Engenharia Informática
Ruben José Oliveira Ventura
dezembro 1 2014
—
-—
j
ESCOLA SUPERIOR DE TECNOLOGIA E GESTÃO
INSTITUTO POLITÉCNICO DA GUARDA
Robô Bombeiro
Aplicação Web para Gestão de Equipas
Projeto Aplicado no Curso de Engenharia Informática
Ruben José Oliveira Ventura
Dezembro | 2014
ESCOLA SUPERIOR DE TECNOLOGIA E GESTÃO
INSTITUTO POLITÉCNICO DA GUARDA
Robô Bombeiro
Aplicação Web para Gestão de Equipas
Projeto Aplicado no Curso de Engenharia Informática
Orientador: Mestre Paulo Jorge Costa Nunes, Professor Adjunto da
Unidade Técnico-Científica de Informática da ESTG
Ruben José Oliveira Ventura
Nº 1010399
Dezembro | 2014
“A melhor maneira de predizer o futuro é inventá-lo.”
Alan kay
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
AGRADECIMENTOS
Ao longo do meu percurso académico deparei-me com muitos obstáculos,
conseguindo ultrapassá-los graças à ajuda das pessoas mais importantes da minha vida,
aos meus pais, irmão, namorada e amigos verdadeiros que sempre estiveram ao meu lado.
Muitíssimo obrigada pai, mãe e irmão, pelo esforço que fizeram para eu conseguir
alcançar este sonho, sem vós jamais o conseguiria!
Agradeço à minha namorada pela perseverança, apoio, paciência, força, ajuda,
compreensão e por estar sempre ao meu lado quando precisei.
Aos meus amigos, em especial ao Johnny Lopes, André Gomes e ao Francisco
Monteiro, por serem imprescindíveis para o meu sucesso académico com uma grande
dedicação, amizade e ajuda.
Aos docentes da ESTG, especialmente ao meu orientador Professor Paulo Jorge
Costa Nunes, o meu muito obrigado e à Professora Maria Clara Silveira pela ajuda
despendida.
Por fim, agradeço aos meus colegas e amigos de curso, em especial ao meu colega
Marco Lucas pela ajuda nos problemas encontrados ao longo da realização do projeto.
A todas estas pessoas que foram e são essenciais na minha vida, MUITO
OBRIGADA!
i
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
RESUMO
O relatório tem como objetivo descrever e demonstrar o trabalho realizado na
Unidade Curricular Projeto de Informática, englobada na Licenciatura em Engenharia
Informática da Escola Superior de Tecnologia e Gestão do Instituto Politécnico da
Guarda.
As aplicações web, de uma forma geral, são sistemas informáticos projetados para
a utilização através de um browser, através de aplicações desenvolvidas em HTML,
JavaScript e CSS, este pode ser executado a partir de um servidor Web ou localmente no
dispositivo do utilizador. A função de um servidor web é receber uma solicitação e
devolver uma resposta. O browser permite ao utilizador solicitar um recurso e quando o
servidor responde a uma solicitação são encontrados recursos como: páginas HTML,
figuras e documentos em PDF que são exibidas depois para o utilizador. Geralmente os
servidores enviam instruções para o browser escritas em HTML e o HTML diz ao
browser como apresentar conteúdo ao utilizador web.
O presente projeto, proposto pelo Instituto Politécnico da Guarda (IPG), consiste
no desenvolvimento de uma aplicação web para o concurso nacional do Robô Bombeiro,
que tem como objetivo simplificar a gestão dos participantes/equipas do concurso,
permitindo-lhes gerir os seus dados pessoais bem como os da equipa. Permite ao
administrador a gestão dos dados pessoais, das equipas, dos membros das equipas, dos
participantes, das classes, das entidades, das edições, do tipo de entidades e dos
patrocínios.
As ferramentas utilizadas no desenvolvimento do projeto foram o Microsoft
Visual Studio e o Microsoft SQL Server Management Studio. As principais tecnologias
empregadas foram o C#, ASP.net, SQL Server, HTML e CSS.
Palavras-chave:
Aplicação Web, Gerir, C#, ASP.net, SQL Server, CSS.
ii
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
ABSTRACT
This report aims to describe and show the work carried out within the course of
Computer Project in Informatics Engineering of the Polytechnic Institute of Guarda
School.
Web applications are, in general, computer systems designed to be used through
a web browser, through applications developed in HTML, JavaScript and CSS, which can
be run from a server Web or locally on the device user. The function of a web server is to
receive a request and develop a response. The browser allows the user to request a feature
and when the server responds to a request resources are found such as: HTML pages,
pictures and PDF documents that are displayed to the user. Usually servers send
instructions to the browser, written in HTML which tells the browser how to display the
content to the web user.
This project, proposed by the Polytechnic Institute of Guarda (IPG), is developing
a web application for the national competition Robot Firefighter, which aims to simplify
the management of participants/teams in contest, allowing them to manage their personal
data as well as the team’s (it allows the administrator to manage personal data, the teams’;
members’ of the teams, participants’, classes’, entities’, the issues’, the type of entities’
and sponsorships’.
The tools used to develop this project were the Microsoft Visual Studio and
Microsoft SQL Server Management Studio. And the key technologies used were C #,
ASP.net, SQL Server, HTML and CSS.
Keywords: Web Application, Manage, C #, ASP.net, SQL Server, CSS.
iii
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
ÍNDICE
1.
Introdução ................................................................................................................. 1
1.1. Motivação .......................................................................................................... 1
1.2. Definição do Problema ...................................................................................... 2
1.3. Objetivos Previstos ............................................................................................ 2
1.4. Solução............................................................................................................... 3
1.5. Estrutura do Documento .................................................................................... 4
2. ESTADO DE ARTE ................................................................................................. 5
2.2. Introdução .......................................................................................................... 5
2.2.1. Enquadramento ........................................................................................... 5
2.2.2. Usabilidade ................................................................................................. 5
2.2.3. Design ......................................................................................................... 6
2.3. Exemplos de Aplicações Existentes .................................................................. 6
2.3.1. Ferramentas de Questionários/Registos ..................................................... 6
2.3.2. Divulgação de Eventos ............................................................................. 10
2.4. Análise Crítica do Estado de Arte .................................................................... 15
2.4.1. Tabela Comparativas de Ferramentas de Questionários/Registos ............ 15
2.4.2. Tabela Comparativa da Divulgação de Eventos ....................................... 16
2.4.3. Conclusões ................................................................................................ 17
3. METODOLOGIA E RESULTADOS ESPERADOS ............................................ 18
3.1. Metodologia ..................................................................................................... 18
3.2. Descrição de Tarefas ........................................................................................ 18
3.3. Resultados Esperados ...................................................................................... 20
4. ANÁLISE DOS REQUESITOS E CONCEÇÃO DA APLICAÇÃO ................... 21
4.1. Diagrama de Contexto ..................................................................................... 21
4.2. Atores e Respetivos Casos de Uso ................................................................... 22
4.3. Diagrama de Casos de Uso .............................................................................. 23
4.4. Descrição de Casos de Uso .............................................................................. 25
4.4.1. Descrição de Caso de Uso - Efetuar Registo no Sistema ......................... 26
4.4.2. Descrição de Caso de Uso - Confirmar o registo no sistema ................... 27
4.4.3. Descrição de Caso de Uso - Editar os dados dados pessoais.................... 28
4.4.4. Descrição de Caso de Uso - Recuperar password .................................... 29
4.4.5. Descrição de Caso de Uso - Criar Equipa ................................................ 30
4.4.6. Descrição de Caso de Uso - Adicionar membro à equipa ........................ 31
4.4.7. Descrição de Caso de Uso - Aprovar ser membro de uma equipa ........... 32
4.5. Diagramas de Sequência .................................................................................. 33
4.5.1. Diagrama de Sequência - Efetuar Registo no Sistema ............................. 34
4.5.2. Diagrama de Sequência - Confirmar o registo no sistema ....................... 35
4.5.3. Diagrama de Sequência - Editar os dados dados pessoais........................ 36
4.5.4. Diagrama de Sequência - Recuperar password ........................................ 37
4.5.5. Diagrama de Sequência - Criar Equipa .................................................... 38
4.5.6. Diagrama de Sequência - Adicionar membro à equipa ............................ 39
4.5.7. Diagrama de Sequência - Aprovar ser membro de uma equipa ............... 40
4.6. Diagrama de Classes ........................................................................................ 41
iv
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
4.7. Semântica de Classes ....................................................................................... 44
4.8. Diagrama de Atividades ................................................................................... 58
4.9. Diagrama de Estados ....................................................................................... 60
4.10. Diagrama de Componentes .............................................................................. 61
4.11. Diagrama de Instalação .................................................................................... 62
5. TECNOLOGIAS UTILIZADAS ........................................................................... 64
5.1. Introdução ........................................................................................................ 64
5.2. Tecnologias Web ............................................................................................. 64
5.2.1. C# ............................................................................................................. 64
5.2.2. ASP.net ..................................................................................................... 66
5.2.3. SQL Server ............................................................................................... 67
5.2.4. HTML 5 .................................................................................................... 67
5.2.5. CSS3 ......................................................................................................... 68
5.2.6. Bootstrap ................................................................................................... 69
5.2.7. iTextSharp ................................................................................................ 70
5.2.8. Microsoft Visual Studio 2013 .................................................................. 71
5.2.9. Microsoft SQL Server Management Studio 2014 .................................... 71
5.2.10. Power Designer 16 ................................................................................... 72
5.2.11. Bitbucket e SourceTree ............................................................................ 73
6. IMPLEMENTAÇÃO DA SOLUÇÃO E TESTES ................................................ 75
6.1. Introdução ........................................................................................................ 75
6.2. Importância do Login e do Logout .................................................................. 75
6.3. Base de Dados .................................................................................................. 76
6.3.1. Modelo Racional ...................................................................................... 76
6.4. Solução............................................................................................................. 77
6.4.1. MasterPage ............................................................................................... 77
6.4.2. Página Gerir as Minhas Equipas ............................................................... 80
6.4.3. Página Editar Dados Pessoais ................................................................... 85
6.4.4. Página Dashboard ..................................................................................... 87
6.4.5. Página Gerir Apoios ................................................................................. 88
6.4.6. Página Gerir Classes ................................................................................. 90
6.4.7. Página Gerir Edições ................................................................................ 91
6.4.8. Página Gerir Entidades ............................................................................. 93
6.4.9. Página Gerir Equipas ................................................................................ 94
6.4.10. Página Gerir Participantes ........................................................................ 98
6.4.11. Página Login .......................................................................................... 101
6.4.12. Página Confirmar Registo Novo Participante ........................................ 101
6.4.13. Página Aprovar Membro Equipa............................................................ 102
6.5. Testes ............................................................................................................. 103
7. CONCLUSÃO E TRABALHO FUTURO .......................................................... 106
7.1. Conclusão....................................................................................................... 106
7.2. Trabalho Futuro ............................................................................................. 106
REFERÊNCIAS BIBLIOGRÁFICAS ......................................................................... 107
v
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
ÍNDICE DE FIGURAS
Figura 1: Questionário SurveyMonkey ............................................................................ 7
Figura 2: Questionário/Registo Google Forms ................................................................. 8
Figura 3: Questionário SurveyGizmo ............................................................................... 9
Figura 4: Evento no Eventbrite....................................................................................... 10
Figura 5: Funcionalidades do Eventbrite ........................................................................ 11
Figura 6: Evento Amiando ............................................................................................. 12
Figura 7: Evento no Eventbee ........................................................................................ 13
Figura 8: Evento no Eventzilla ....................................................................................... 14
Figura 9: Lista de tarefas ................................................................................................ 19
Figura 10: Mapa de Gantt ............................................................................................... 19
Figura 11: Diagrama de Fluxos de Dados ...................................................................... 21
Figura 12: Diagrama de Casos de Uso (1ª Parte) ........................................................... 23
Figura 13:Diagrama de Casos de Uso (2ª Parte) ............................................................ 24
Figura 14: Diagrama de Sequência - Efetuar Registo no Sistema.................................. 34
Figura 15: Diagrama de Sequência - Confirmar Registo no Sistema ............................. 35
Figura 16: Diagrama de Sequência - Editar Dados Pessoais .......................................... 36
Figura 17: Diagrama de Sequência "Recuperar Password"............................................ 37
Figura 18: Diagrama de Sequência - Criar Equipa ......................................................... 38
Figura 19: Diagrama de Sequência "Adicionar Membro à Equipa" .............................. 39
Figura 20: Diagrama de Sequência - Aprovar ser Membro de uma Equipa................... 40
Figura 21: Diagrama de Classes da aplicação web Robô Bombeiro .............................. 42
Figura 22: Modelo ER das contas de utilizador da aplicação Robô Bombeiro .............. 43
Figura 23: Diagrama de Atividades aprovar membro de equipa .................................... 59
Figura 24: Diagrama de Estado membro equipa ............................................................ 60
Figura 25: Diagrama de Estado registo do utilizador ..................................................... 60
Figura 26: Diagrama de Componentes ........................................................................... 61
Figura 27: Diagrama de Instalação ................................................................................. 62
Figura 28: Logotipo do CSharp ...................................................................................... 64
Figura 29: Exemplo de código da linguagem C# ........................................................... 65
Figura 30: Logotipo da linguagem ASP.NET ................................................................ 66
Figura 31: Exemplo de código em ASP.NET ................................................................ 66
Figura 32: Logotipo SQL Server .................................................................................... 67
Figura 33: Logotipo HTML 5 ......................................................................................... 67
Figura 34: Exemplo de código em HTLM 5 .................................................................. 68
Figura 35: Logotipo do CSS3 ......................................................................................... 68
Figura 36: Exemplo de código em CSS3 ....................................................................... 69
Figura 37: Logotipo do Bootstrap .................................................................................. 69
Figura 38: Logotipo do iTextSharp ................................................................................ 70
Figura 39: Exemplo de código do iTextSharp ................................................................ 70
Figura 40: Interface do Microsoft Visual Studio 2013 ................................................... 71
Figura 41: Interface do SQL Server Management Studio 2014 ..................................... 72
Figura 42: Interface do Power Designer 16 .................................................................... 73
Figura 43: Interface do Site do Bitbucket ....................................................................... 73
Figura 44: Interface do SorceTree .................................................................................. 74
vi
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
Figura 45: Imagem ilustrativa de um exemplo de botões do Login e do Lougout ......... 75
Figura 46: Modelo Físico da Base de Dados da aplicação ............................................. 76
Figura 47: Estrutura da Master Page e das páginas finais .............................................. 79
Figura 48: Página Gerir as minhas equipas .................................................................... 80
Figura 49: FormView Dados da Equipa ......................................................................... 81
Figura 50: Formulário Editar Equipa ............................................................................. 82
Figura 51: Aviso Apagar Equipa .................................................................................... 83
Figura 52: GridView Participantes ................................................................................. 83
Figura 53: Formulário Adicionar Membro ..................................................................... 84
Figura 54: Aviso Remover Elemento ............................................................................. 84
Figura 55: Página Editar Dados Pessoais ....................................................................... 85
Figura 56: Formulário Editar Dados Pessoais ................................................................ 86
Figura 57: Formulário Alterar Password ........................................................................ 87
Figura 58: Página Dashboard ......................................................................................... 88
Figura 59: Página Gerir Apoios ...................................................................................... 89
Figura 60: Página Gerir Classes ..................................................................................... 90
Figura 61: Página Gerir Edições ..................................................................................... 92
Figura 62: Página Gerir Entidades.................................................................................. 93
Figura 63: Página Gerir Equipa (1ª Parte) ...................................................................... 95
Figura 64: Página Gerir Equipa (2ª Parte) ...................................................................... 96
Figura 65: Dados das Equipas Exportados em PDF ....................................................... 97
Figura 66: Dados das Equipas Exportados em Excel ..................................................... 98
Figura 67: Página Gerir Participantes (1ª Parte) ............................................................. 99
Figura 68: Página Gerir Participantes (2ª Parte) ........................................................... 100
Figura 69: Página do Login na plataforma da aplicação .............................................. 101
Figura 70: Confirmação da Nova Conta no Sistema .................................................... 102
Figura 71: Aprovação de Entrada na Equipa ................................................................ 102
Figura 72: Página Registar Novo Utilizador ................................................................ 104
Figura 73: Adicionar Membro ...................................................................................... 105
Figura 74: Aviso Aprovar Membro .............................................................................. 105
Figura 75: Output E-mail Novo Membro ..................................................................... 108
vii
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
ÍNDICE DE TABELAS
Tabela 1. Tabela Comparativa de Ferramentas de Questionário/Registo ...................... 15
Tabela 2. Tabela Comparativa de Divulgação de Eventos ............................................. 16
Tabela 3. Tabela de Atores e Respetivos Casos de Uso ................................................. 22
Tabela 4. Caso de uso - Efetuar registo no sistema ........................................................ 26
Tabela 5. Caso de Uso - Confirmar o registo no sistema ............................................... 27
Tabela 6. Caso de Uso - Editar os dados dados pessoais ............................................... 28
Tabela 7. Caso de Uso - Recuperar password ................................................................ 29
Tabela 8. Caso de Uso - Criar Equipa ............................................................................ 30
Tabela 9. Caso de Uso - Adicionar membro à equipa .................................................... 31
Tabela 10. Caso de Uso “Aprovar ser membro de uma equipa” .................................... 32
Tabela 11: Entidade - País .............................................................................................. 45
Tabela 12: Operações da Tabela Entidade - País ........................................................... 45
Tabela 13: Entidade - Participante.................................................................................. 47
Tabela 14: Operações da Tabela Entidade - Participante ............................................... 48
Tabela 15: Entidade - Classe .......................................................................................... 49
Tabela 16: Operações da Tabela Entidade - Classe ........................................................ 49
Tabela 17: Entidade - Edição ......................................................................................... 50
Tabela 18: Operações da Tabela Entidade - Edição ....................................................... 50
Tabela 19: Entidade - TipoEntidade ............................................................................... 51
Tabela 20: Operações da Tabela Entidade - TipoEntidade ............................................ 51
Tabela 21: Entidade - Entidade ...................................................................................... 53
Tabela 22: Operações da Tabela Entidade - Entidade .................................................... 53
Tabela 23: Entidade – Apoio .......................................................................................... 53
Tabela 24: Operações da Tabela Entidade - Apoio ........................................................ 54
Tabela 25: Entidade - Equipa ......................................................................................... 55
Tabela 26: Operações da Tabela Entidade - Equipa ....................................................... 56
Tabela 27: Entidade - ParticipanteEquipa ...................................................................... 57
Tabela 28: Operações da Tabela Entidade – ParticipanteEquipa ................................... 57
viii
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
GLOSSÁRIO DE SIGLAS
API – Application Programming Interface
ASP.NET – Active Server Pages.NET
BD – Base de Dados
BIC – Bank Identifier Code
CASE – Computer-Aided Software Engineering
CLR – Common Language Runtime
CSS – Cascading Style Sheets
DE – Diagrama de Estados
ER – Entidade Relacionamento
FK – Foreign Key
FTP –Protocolo de Transferência de Arquivos
HTML – HyperText Markup Language
HTTP – Hyper Text Transfer Protocol
IBAN – International Bank Account Number
IDE – Integrated Development Environment
IIS – Internet Information Services
IPG – Instituto Politécnico da Guarda
NIB – Número de Identificação Bancária
NIF – Número de Identificação Fiscal
NNT – Network News Transfer Protocol
NT – New Technology
OS – operating system
PDF – Portable Document Format
PK – Primary Key
SGBD – Sistema de Gestão de Base de Dados
SMTP – Simple Mail Transfer Protocol
SQL – Structured Query Language
SSMS – SQL Server Management Studio
T-SQL – Transact-Structured Query Language
1
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
UML – Unified Modeling Language
URL – Uniform Resource Locator
VB.NET – Visual Basic.Net
W3C – World Wide Web Consortium
XML – eXtensible Markup Language
2
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
1. INTRODUÇÃO
O Projeto aplicado no curso de Engenharia Informática consiste no
desenvolvimento de uma aplicação web.
Ao longo dos anos o Instituto Politécnico da Guarda promove uma edição do
concurso nacional do Robô Bombeiro. Concurso este, que põe à prova robôs móveis e
autónomos com o objetivo de encontrar e apagar um incêndio que é simulado por uma
vela dentro de um labirinto, este formado por corredores, quartos e alguns obstáculos.
Face ao grande aumento do número de participações e tendo em vista a sua
internacionalização torna-se difícil gerir esta quantidade de dados, logo, a solução para a
presente situação passa no desenvolvimento de uma aplicação web para o concurso do
Robô Bombeiro.
1.1. Motivação
A principal motivação para a escolha deste projeto foi o facto de ter a possibilidade
de contribuir com o desenvolvimento de uma aplicação proposta para o Instituto
Politécnico da Guarda, onde através desta será possível uma melhor gestão e organização
de dados e dos participantes, nacionais e/ou internacionais que o concurso do Robô
Bombeiro possa vir a ter.
O facto que, também, contribuiu para o aumento da motivação em avançar com
este projeto foram as linguagens de programação utilizadas, estando à vontade com as
mesmas e o especial gosto da programação para a web.
1
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
1.2. Definição do Problema
Desenvolver uma aplicação web para o concurso Robô Bombeiro, de modo a ter
funcionalidades como o registo de utilizadores com confirmação/autentificação através
do envio de um e-mail.
Os participantes registados podem:
 Gerir os seus dados pessoais;
 Recuperar e definir a sua password;
 Gerir as suas equipas para cada edição do concurso;
 Confirmação/aprovação dos membros das equipas através do envio de um
e-mail;
 Produção de listagens dos dados dos participantes e das equipas em PDF.
No entanto, o administrador como tal pode gerir os seus dados pessoais; gerir
todas as equipas, classes, entidades, edições, tipos de entidades, apoios/patrocínios, tal
como os participantes.
1.3. Objetivos Previstos
Os objetivos previstos, do projeto, que se pretendem atingir são os seguintes:
 Registar, apagar, consultar, pesquisar, editar participantes;
 Criar, editar, consultar, pesquisar, apagar classes;
 Adicionar, editar, consultar, pesquisar, apagar edições;
 Adicionar, editar, consultar, pesquisar, apagar tipo de entidades;
 Adicionar, editar, consultar, pesquisar, apagar entidades;
 Adicionar, consultar, pesquisar, remover apoios/patrocínio;
 Criar, consultar, pesquisar, remover equipas;
 Adicionar, consultar, remover, participantes das equipas;
 Registo de participantes com confirmação/autenticação através do envio
de um e-mail;
2
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
 Confirmação/aprovação dos membros das equipas através do envio de um
e-mail;
 Produção de listagens em PDF com os dados das equipas e dos
participantes.
1.4. Solução
A solução encontrada para a proposta feita e de acordo com os requisitos pedidos
foi a criação de uma aplicação para web, com o objetivo de informatizar e simplificar a
gestão das participações do concurso Robô Bombeiro
A resolução passa pelo desenvolvimento de uma aplicação web que permita o
registo de utilizadores e a gestão de todas as suas informações necessárias à sua
participação no concurso do Robô Bombeiro. No entanto, para os utilizadores não
registados a aplicação apenas deve permitir visualizar a página inicial, a página dos
contactos e a página sobre.
3
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
1.5. Estrutura do Documento
O presente documento contém sete capítulos, dispostos da seguinte forma:
No primeiro capítulo é apresentada a introdução onde estão descritos pontos como
a motivação, a definição do problema, os objetivos previstos, a solução encontrada, a
contribuição e a estrutura do documento.
No segundo capítulo é descrito o Estado de Arte sendo uma das partes com maior
importância, uma vez que faz referência ao que se tem descoberto sobre o assunto
pesquisado. Neste capítulo estão disponíveis alguns exemplos de aplicações existentes e
a sua análise crítica.
O terceiro capítulo abrange as metodologias usadas no desenvolvimento deste
projeto, a descrição das tarefas e os resultados esperados.
No quarto capítulo é apresentada a análise dos requisitos e conceção da aplicação,
onde se encontra o diagrama de contexto, diagrama de classes, casos de uso, entre outros.
No quinto capítulo são descritas detalhadamente as tecnologias web e o software
utilizado ao longo do projeto.
O sexto capítulo contém a implementação da solução, sendo esta a descrição do
trabalho elaborado ao longo do projeto e respetivos testes.
No sétimo capítulo são apresentadas as conclusões finais do projeto realizado e
do trabalho a realizar no futuro para o complementar.
4
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
2. ESTADO DE ARTE
2.2. Introdução
2.2.1. Enquadramento
O IPG no final do segundo semestre de cada ano letivo realiza um concurso
nacional de Robôs Bombeiros, cujo objetivo é encontrar e apagar um incêndio, que é
simulado por uma vela.
Derivado ao seu crescimento e estando em vista uma internacionalização do
concurso, a organização necessita de uma plataforma que os ajude a gerir a quantidade de
informação/dados do mesmo.
2.2.2. Usabilidade
A usabilidade é um atributo de qualidade dos produtos que permite aferir se uma
interface com o utilizador é fácil de utilizar.
O sistema deverá ter uma capacidade de resposta rápida, por forma a manter um
nível razoável de fluidez de interação, mesmo nos picos de maior tráfego.
É recomendável, uma boa navegação entre páginas dos módulos sem
complicações.
É apropriado que as mensagens de erro sejam simplificadas, tanto no formato
como no conteúdo, contendo apenas a informação estritamente necessária e suficiente
para o utilizador perceber, numa leitura rápida, a causa do problema. Por sua vez os
formulários devem apresentar uma indicação visual e clara acerca do campo que necessita
de ser revisto pelo utilizador.
Diferenciar visualmente todos os botões, dando algum destaque visual ao botão
que é mais utilizado no módulo, como por exemplo o botão “Guardar”. Pois os
utilizadores, se os botões não estiverem bem diferenciados, podem por impulso, clicar no
botão errado.
5
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
Utilizadores frequentemente escolhem funções do sistema por engano logo o
sistema vai precisar de uma "saída de emergência" claramente identificada para sair do
estado indesejado sem ter que passar por um diálogo prolongado.
2.2.3. Design
A nível de design deve ter-se em atenção os princípios básicos de design, tais
como o ênfase, este basicamente, é a análise de conteúdo de um site, a fim de determinar
a importância que o conteúdo tem. Um método de fazer essa análise, é ordenar a lista de
todos os elementos necessários numa página em ordem de importância, de modo a que a
hierarquia visual da página reflita a determinada importância. É importante evitar
enfatizar tudo, pois se ao tentar enfatizar tudo, não se irá enfatizar nada.
É necessário o destaque de certas palavras, expressões ou ideias numa
determinada frase e/ou num determinado texto.
Outro dos princípios básicos de design é o contraste, este é a diferenciação visual
dos elementos. Os elementos com forte contraste são distinguidos pelo olhar, no entanto
os elementos com baixo contraste parecem semelhantes ou misturam-se. Através do
contraste, um design de um site pode ter variedade visual, e evitar ser obsoleto.
2.3. Exemplos de Aplicações Existentes
2.3.1. Ferramentas de Questionários/Registos
Segue-se a comparação de três ferramentas de questionários/registos mais
conhecidas no mercado: SurveyMonkey, Google Forms, e SurveyGizmo.
Todas estas ferramentas oferecem versões gratuitas que podem ser limitadas de
duas maneiras:
1. O número de inquéritos / pergunta;
2. O número de respostas.
6
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
A atualização para a versão paga, normalmente, fornece o acesso a mais dados,
análise e estatística avançada e mais opções de personalização.
2.3.1.1. SurveyMonkey
O SurveyMonkey oferece um recurso de pesquisa de palavras-chave, útil para
ajudar os utilizadores a navegar e dão garantia de segurança.
O SurveyMonkey oferece uma versão básica gratuita, útil para pequenos e
informais questionários/registos, como se pode ver na Figura 1. Esta versão permite pouca
personalização de temas, um número limitado de modelos, alguns questionários que já
foram criados, sem exportação de relatórios ou dados, e 15 diferentes tipos de perguntas
disponíveis para selecionar. Pode-se incluir até 10 perguntas e recolher até 100 respostas
por questionário/registo gratuitamente.
Figura 1: Questionário SurveyMonkey
7
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
2.3.1.2. Google Forms
O Google Forms providencia uma maneira fácil e acessível para recolher grandes
quantidades de dados.
Esta só oferece seis tipos de perguntas, uma quantidade ilimitada de
questionários/registos e espaço para guardar mais de 1.000 respostas. Os temas dos
questionários/registos são robustos, a incorporação na web é fácil, e há uma série de
maneiras de visualizar os dados.
Pode-se criar gráficos com estatísticas dos formulários recolhidos.
Esta Ferramenta é totalmente gratuita.
Pode-se visualizar na Figura 2 os temas de questionário/registo no Google Forms.
Figura 2: Questionário/Registo Google Forms
8
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
2.3.1.3. Surveygizmo
O SurveyGizmo oferece uma versão gratuita, bem como uma solução de baixo
custo (19 €/mês) com alguns recursos avançados, suporta até 1.000 questionários/registos
por mês. A variedade de pacotes mais avançados estão disponíveis a partir de 49 €/mês.
Em todos os pacotes, o SurveyGizmo oferece, questionários totalmente
personalizáveis e a capacidade de incorporar imagens e vídeos, como se pode verificar na
Figura 3.
Figura 3: Questionário SurveyGizmo
Outra vantagem é o Dashboard, que nitidamente mostra todos os questionários e
fornece uma visão instantânea do atual número de inquéritos concluídos e em andamento
com um mapa, a taxa de resposta diária e um gráfico de satisfação.
O SurveyGizmo fornece uma biblioteca abrangente de tutoriais, incluindo vídeos.
Esta ferramenta oferece 23 tipos de perguntas, juntamente com um número
ilimitado de questionários. O limite de resposta é de 250 por inquérito.
9
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
2.3.2. Divulgação de Eventos
Nos pontos que se seguem, estão discriminadas as três melhores plataformas,
encontradas para registo online em eventos.
2.3.2.1. Eventbrite
O Eventbrite é um serviço de emissão de bilhetes online, este permite que os seus
organizadores planeiem, criem vendas de bilhetes e promovam eventos. Após a criação
do evento, Figura 4, o organizador pode publica-lo no Facebook, Twitter e outras
ferramentas de redes sociais diretamente da interface do site.
Figura 4: Evento no Eventbrite
10
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
O Eventbrite desenvolveu duas aplicações direcionadas para os organizadores
do evento.
A aplicação móvel, que funciona com um “Gestor de entrada”, este permite
que os organizadores vejam o número de bilhetes vendidos para um determinado evento
e oferece várias maneiras de verificar os participantes. Este tem, também um link para a
página do utilizador no Eventbrite, fornecendo detalhes pós-evento e um relatório síntese
por participante. A outra aplicação mais recente opera como uma bilheteira móvel,
permitindo ao participante fazer check-in, bem como obter bilhetes de compra e processar
cartões de crédito no local.
A empresa gera receitas através da cobrança de uma taxa de organizadores de
2,5% do preço do bilhete, mais 0,99 cêntimos por bilhete vendido, mas não cobra
nenhuma taxa para eventos gratuitos. E se o cartão é de crédito é cobrado 3% por
transação.
O Eventbrite possibilita ver os eventos que os nossos amigos estão a participar
através do Facebook.
A Figura 5 apresenta algumas das funcionalidades do Eventbrite.
Figura 5: Funcionalidades do Eventbrite
11
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
2.3.2.2. Amiando
O Amiando é um gestor de eventos, que tem como alvo dois principais segmentos:
1. Os eventos de negócio – congressos, seminários, eventos corporativos;
2. E os eventos de entretenimento – espetáculos, torneios desportivos e
festas.
No caso deste gestor os clientes são os organizadores do evento, bem como as
agências de eventos, e todos os serviços estão disponíveis em Inglês, Espanhol, Alemão
e Francês.
Este serviço é gratuito para eventos gratuitos e os eventos pagos são cobrados a
0,99 cêntimos por taxa de participante mais 5,9% da taxa de atendimento.
Pode-se verificar na Figura 6 a criação de um evento através da plataforma
Amiando.
Figura 6: Evento Amiando
12
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
2.3.2.3. Eventbee
O Eventbee é um software de gestão de eventos, Figura 7, que tenta obter o
máximo de vendas de bilhetes para os organizadores de eventos e proporcionar o máximo
de benefícios aos participantes dos eventos.
Este permite que os organizadores do evento consigam aceder em tempo real às
informações dos participantes.
Figura 7: Evento no Eventbee
A plataforma do Eventbee é básica, no entanto fornece um serviço sólido e com
preços competitivos. Sendo o preço de 1 € taxa fixa, independentemente do preço do
bilhete.
13
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
2.3.2.4. Eventzilla
O Eventzilla é uma ferramenta de venda de bilhetes online e offline. Este permite
vender os bilhetes online e gerir os participantes tendo uma aplicação integrada. Não
existem taxas ou mensalidades.
Esta ferramenta permite a criação de páginas de inscrição do evento, Figura 8,
permite a divulgação dos eventos no Facebook e Twitter, permite a entrega bilhetes online
com códigos de barras único; envia notificações de e-mail aos participantes e permite a
gestão de anulações.
O Eventzilla fornece ajuda na organização de qualquer tipo de evento (desportivo,
turístico, entre outros), nas conferências e seminários.
Figura 8: Evento no Eventzilla
14
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
2.4. Análise Crítica do Estado de Arte
2.4.1. Tabela Comparativas de Ferramentas de
Questionários/Registos
Após pesquisa efetuada, elaborou-se uma tabela comparativa, Tabela 1, relativa
às plataformas abordadas anteriormente.
Plataformas/Perguntas
Incorporar formulário numa
SurveyMonkey
Google
Forms
Surveygizmo
Sim
Sim
Sim
Mostrar resumo das respostas
Sim
Sim
Sim
Permite dados duplicados
Sim
Sim
Sim
Validar/Solicitar respostas
Solicitar
Solicitar
Todos
Todos
Todos
Sim
Sim
Sim
Não
Não
Não
Por Pergunta
Por Pergunta
Por Pergunta
Não
csv
Exel/csv/PDF
10
255
Ilimitado(pago)
Sim
Sim
Sim
Tipos de Questões
15
6
30
Edição dos Dados
Não
Não
Não
Login
Não
Não
Não
página web
Idiomas Suportados
Personalização
Confirmação do registo por EMail
Relatórios
Exportação dos Dados
Limite de Questões
Upload Imagens
Validações
Básicas
Tabela 1. Tabela Comparativa de Ferramentas de Questionário/Registo
15
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
Conclui-se que, as ferramentas em análise têm dois grandes problemas,
nomeadamente, não permitem editar os dados dos formulários nem a gestão de
pagamentos e não permitem fazer login após preencher o formulário com os respetivos
dados.
2.4.2. Tabela Comparativa da Divulgação de Eventos
Plataformas / Perguntas
Incorporar formulário numa
Eventbrite Amiando Eventbee Eventzilla
Sim
Sim
Sim
Sim
Permite dados duplicados
Sim
Sim
Sim
Sim
Validar/Solicitar respostas
Solicitar
Solicitar
Solicitar
Solicitar
Todos
Inglês
Inglês
Inglês
Sim
Sim
Sim
Sim
Sim
Sim
Sim
Sim
Relatórios
Sim
Sim
Sim
Sim
Exportação dos Dados
PDF
PDF
PDF
PDF
Edição dos Dados
Não
Não
Não
Não
Notificações de e-mail
Sim
Sim
Sim
Sim
Login
Não
Não
Não
Gerir Cancelamentos
Sim
Sim
Sim
Sim
Definir uma localização no mapa
Sim
Não
Não
Sim
Gestão de pagamentos
Sim
Sim
Sim
Sim
Menu de Gestão do Evento
Sim
Sim
Sim
Sim
página web
Idiomas Suportados
Personalização
Confirmação do registo por EMail
Tabela 2. Tabela Comparativa de Divulgação de Eventos
No final da análise destas quatro ferramentas, Tabela 2, foi concluído que mesmo
que a maioria sejam ferramentas gratuitas para eventos gratuitos, não é disponibilizado
16
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
nenhum código ou API (Application Programming Interface) para que se possa fazer um
plugin para se poder utiliza-las num programa feito por nós.
2.4.3. Conclusões
O primeiro tipo de ferramentas analisadas não se adaptam aos objetivos do projeto
devido a não permitem editar os dados dos formulários nem a gestão de pagamentos, e a
não permitem fazer login após preencher o formulário com os respetivos dados.
O segundo tipo de ferramentas analisadas, também, não se adaptam aos objetivos
do presente projeto pelo facto que mesmo que na maioria sejam ferramentas gratuitas para
eventos gratuitos não é disponibilizado nenhum código ou API para que se possa fazer
um plugin para poder ser utilizada num programa elaborado por mim.
Após a análise destas ferramentas conclui-se que a aplicação final vai ser
desenvolvida em ASP.net e C#, como foi pedido inicialmente, sendo que não foi
encontrada nenhuma ferramenta que fosse de encontro aos objetivos requeridos para que
se pudesse utilizar no desenvolvimento da presente aplicação. Uma das causas que levou
à escolha da plataforma desenvolvimento ASP.net foi a escola dispor de licenças para o
desenvolvimento do projeto no Visual Studio e, também, ser detentora de servidores
Windows Server, para posteriormente a aplicação ser aí colocada.
17
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
3. METODOLOGIA E RESULTADOS ESPERADOS
3.1. Metodologia
Para o desenvolvimento deste projeto foi utilizada uma metodologia ágil, que
consistiu, em ter, ocasionalmente, uma nova versão para apresentar ao professor
coordenador Paulo Jorge Costa Nunes e no final documentar tudo. Assim sendo, a
metodologia para desenvolver, implementar e testar a aplicação web, é a seguinte:
1. Análise dos requisitos do projeto para identificam as necessidades do
cliente;
2. CSS para as folhas de estilo a usar;
3. Javascript para verificar quando as sessões expiram;
4. ASP.net para a criação dinâmica das páginas HTML;
5. Utilizar o C# para programar as ações dos objetos das páginas;
6. Utilizar o SQL Server Management Studio 2014 para criar a base de dados
a partir do modelo;
7. Utilizar o SQL Server Management Studio 2014 para aceder à base de
dados;
8. Microsoft Visual Studio 2013 para a realização do projeto em si;
9. Utilizar a Word para produzir um relatório para documentar o projeto;
10. iTextSharp para produção de listagens em PDF e Excel.
3.2. Descrição de Tarefas
As principais tarefas desempenhadas ao longo do projeto foram as seguintes:
 Tarefa 1: Análise dos requisitos da aplicação web;
 Tarefa 2: Estado de Arte;
 Tarefa 3: Estudo das tecnologias a utilizar;
 Tarefa 4: Criação de Base de Dados;
 Tarefa 5: Criação de script para inserção de dados na BD;
18
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
 Tarefa 6: Definir os estilos (CSS) para as páginas;
 Tarefa 7: Criação de script para inserção de dados na BD;
 Tarefa 8: Testes de aplicação;
 Tarefa 9: Realização do relatório.
Na Figura 9 pode-se verificar o número de horas e quais os dias despendidos para
cada uma das tarefas.
Figura 9: Lista de tarefas
Pode-se visualizar na Figura 10 o mapa de Gantt relativo à lista de tarefas
apresentada anteriormente.
Figura 10: Mapa de Gantt
19
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
3.3. Resultados Esperados
No final do projeto espera-se que a aplicação web, a nível de participantes, seja
capaz de:
 Gerir os seus dados pessoais;
 Recuperar e definir a sua password;
 Gerir as suas equipas para cada edição do concurso;
 Confirmação/aprovação dos membros das equipas através do envio de um
e-mail.
A nível de administrador, espera-se que a aplicação seja capaz de:
 Gerir os seus dados pessoais;
 Gerir todas as equipas;
 Gerir todas as classes;
 Gerir todas as entidades;
 Gerir as edições;
 Gerir os tipos de entidades;
 Gerir os apoios/patrocínios;
 Gerir os participantes;
 Produção de listagens dos dados dos participantes e das equipas em PDF
e Excel.
20
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
4. ANÁLISE DOS REQUESITOS E CONCEÇÃO
DA APLICAÇÃO
4.1. Diagrama de Contexto
O Diagrama de Fluxos de Dados (DFD), representa todo o sistema como um único
processo, é conhecido como diagrama de contexto, sendo composto por fluxos de dados
que mostram as interfaces entre o sistema e as entidades externas. O diagrama é uma
forma de representar o objeto de estudo.
Um diagrama de contexto permite identificar os limites dos processos, as áreas
envolvidas com o processo e os relacionamentos com outros processos e elementos
externos à empresa (ex.: participantes) e mostra as caraterísticas do sistema como:
 Organizações/sistemas/pessoas que comunicam com o sistema;
 Dados que o sistema absorve e deve processar;
 Dados que o sistema gera para o ambiente;
 Fronteira do sistema com o ambiente.
Na Figura 11 pode-se observar o DFD do projeto elaborado.
Figura 11: Diagrama de Fluxos de Dados
21
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
4.2. Atores e Respetivos Casos de Uso
Um ator é algo que interage com o sistema do qual não se tem controlo, estando
este sobre influência do sistema. Um ator tem um papel externo e é quem inicia os casos
de uso. Especificamente, um ator é o papel de um dispositivo de hardware desempenha
ao interagir com o sistema.
Cada ator corresponde a um papel específico, no entanto diversas pessoas que
desempenham o mesmo papel correspondem a um único ator.
Os atores são quem utilizam o sistema, quem o inicializa, quem fornece os dados
e quem usa as informações do sistema.
A Tabela 3 tem como objetivo definir o ator/atores (Participante e Administrador)
bem como os respetivos casos de uso que interferem com o sistema. Os casos de uso
definem a maioria dos requisitos de um sistema computacional.
Atores
Descrição
Participante







Efetuar registo no sistema
Confirmar o registo no sistema
Consultar e editar os dados dados pessoais
Recuperar e definir nova password
Criar, consultar, apagar as suas equipas
Adicionar, remover e consultar membros à equipa
Aprovar ser membro de uma equipa
Administrador










Consultar e editar os dados dados pessoais
Consultar, pesquisar e apagar equipas
Consultar, pesquisar e remover membros das equipas
Consultar, pesquisar e apagar participantes
Criar, consultar, pesquisar e remover classes
Criar, consultar, pesquisar e remover entidades
Criar, consultar, pesquisar e remover edições
Criar, consultar, pesquisar e remover tipos de entidades
Criar, consultar, pesquisar e remover apoios
Consultar dados estatísticos através de gráficos
Tabela 3. Tabela de Atores e Respetivos Casos de Uso
22
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
4.3. Diagrama de Casos de Uso
Um diagrama de casos de uso descreve a funcionalidade proposta para um novo
sistema que será projetado, ou seja, permite ver de uma forma simples e rápida todas as
interações que as funcionalidades do sistema têm entre si, assim como todas as interações
com os atores.
Nos diagramas de casos de uso a linguagem utilizada foi a UML – Unifield
Modeling Language, é uma linguagem de modelagem que permite representar um sistema
de uma forma padronizada.
Na Figura 12 e Figura 13, pode-se ver o Diagrama de Casos de Uso deste projeto.
Figura 12: Diagrama de Casos de Uso (1ª Parte)
23
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
Figura 13:Diagrama de Casos de Uso (2ª Parte)
24
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
4.4. Descrição de Casos de Uso
Cada caso de uso descreve um cenário de possível interação com o utilizador ou
com outro sistema. Os casos de uso devem ser o mais claro possível evitando os termos
técnicos que possam dificultar a compreensão inequívoca da funcionalidade descrita, para
que todos os eventuais leitores possam entendê-los de igual modo. Cada caso de uso deve
descrever unicamente uma funcionalidade ou um objetivo do sistema. Para sistemas mais
complexos, é comum serem necessários bastantes casos de uso para uma correta e
completa descrição de todas as funcionalidades requeridas pelo sistema.
As tabelas de descrição dos casos de uso são compostas por:
 Nome: indica a designação do caso de uso que se está a definir;
 Descrição: mostra para que serve o caso de uso que se está a desenvolver;
 Atores envolvidos: são todos os que interagem com o caso de uso;
 Pré-condições: são as condições necessárias para se poder executar o caso
de uso;
 Prioridade: importância aplicada ao caso (baixa, média ou alta);
 Caminho ou cenário principal: é o que o sistema e o ator principal fazem
neste caso de uso;
 Caminhos alternativos: são os caminhos que fazem parte do caso de uso
mas só são executados em certas circunstâncias;
 Suplementos ou adornos: são as validações que são necessárias para se
poder executar o caso de uso pretendido;
 Pós-condições: são as verificações finais que são feitas após a execução
do que representa o caso de uso.
25
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
4.4.1. Descrição de Caso de Uso - Efetuar Registo no
Sistema
A seguinte tabela, Tabela 4, descreve com detalhe o caso de uso efetuar registo no
sistema.
Nome
Efetuar registo no sistema
Descrição
Atores Envolvidos
Pré condições
Prioridade
Caminho principal ou
cenário principal
Caminhos alternativos
Suplementos ou Adornos
Pós condições
O ator efetua o registo n o sistema
Participante
Alta
1. O caso de uso começa quando o ator seleciona a
opção de efetuar registo;
2. O ator insere as informações relativas ao seu
registo no formulário apresentado;
3. O sistema pede para confirmar o registo;
4. O ator confirma;
5. O sistema envia um e-mail com um link para o ator
confirmar o registo;
6. O sistema confirma o sucesso;
2. A) O ator não respeita as validações do formulário
de dados;
3. A) O sistema rejeita as alterações;
3. B) O sistema pergunta se deseja continuar ou
cancelar;
4. A) O ator não confirma;
5. A) O sistema não envia o e-mail;
6. A) O sistema não confirma o sucesso;
6. B) O sistema mantem a versão inalterada dos
dados;
Testar um Username duplicado
Testar se envia o e-mail
Testar se o sistema deixa introduzir campos nulos ou
inválidos
Proceder às alterações na base de dados.
Tabela 4. Caso de uso - Efetuar registo no sistema
26
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
4.4.2. Descrição de Caso de Uso - Confirmar o registo
no sistema
A seguinte tabela, Tabela 5, descreve com detalhe o caso de uso confirmar o
registo no sistema.
Nome
Descrição
Atores Envolvidos
Pré condições
Prioridade
Caminho principal ou
cenário principal
Caminhos alternativos
Suplementos ou
Adornos
Pós condições
Confirmar o registo no sistema
O ator aprova/confirma o registo n o sistema
Participante
Alta
1. O caso de uso começa quando o ator copia e cola no
browser o link que foi enviado por e-mail para a
confirmação do registo;
2. O sistema verifica se o link está correto;
3. O sistema verifica se o utilizador que se vai fazer a
confirmação existe na base de dados;
4. O sistema verifica se já foi confirmado o registo;
5. O sistema envia um e-mail para o ator a confirmar que o
registo foi efetuado com sucesso;
6. O sistema confirma o sucesso;
2. A) O ator não copia e ou cola corretamente o link no
browser;
2. B) O sistema exibe mensagem de erro.
3. A) O sistema não encontra o utilizador na base de
dados;
3. B) O sistema exibe mensagem de erro.
4. A) O sistema avisa que o registo já foi previamente
confirmado;
5. A) O sistema não envia o e-mail;
6. A) O sistema não confirma o sucesso;
6. B) O sistema mantem a versão inalterada dos dados;
Testar a confirmação do registo com o link
alterado/modificado
Testar se envia o e-mail
Proceder às alterações na base de dados.
Tabela 5. Caso de Uso - Confirmar o registo no sistema
27
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
4.4.3. Descrição de Caso de Uso - Editar os dados
dados pessoais
A Tabela 6 descreve com detalhe o caso de uso consultar e editar os dados
pessoais.
Nome
Descrição
Atores Envolvidos
Pré condições
Prioridade
Caminho principal ou
cenário principal
Caminhos alternativos
Suplementos ou Adornos
Pós condições
Editar os dados pessoais
O ator edita os seus dados pessoais
Participante, Administrador
Baixa
1. O caso de uso começa quando o ator seleciona a
opção de editar os seus dados pessoais;
2. O ator insere os dados a alterar;
3. O sistema pede para confirmar a alteração;
4. O ator confirma;
5. O sistema confirma o sucesso;
2. A) O ator não respeita as validações do formulário
de dados;
3. A) O sistema rejeita as alterações;
3. B) O sistema pergunta se deseja continuar ou
cancelar;
4. A) O ator não confirma;
5. A) O sistema não confirma o sucesso;
5. B) O sistema mantem a versão inalterada dos
dados;
Testar se o sistema deixa introduzir campos nulos ou
inválidos
Proceder às alterações na base de dados.
Tabela 6. Caso de Uso - Editar os dados dados pessoais
28
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
4.4.4. Descrição de Caso de Uso - Recuperar password
A seguinte tabela, Tabela 7, descreve com detalhe o caso de uso efetuar registo no
sistema.
Nome
Descrição
Atores Envolvidos
Pré condições
Prioridade
Caminho principal ou
cenário principal
Caminhos alternativos
Suplementos ou Adornos
Pós condições
Recuperar password
O ator recupera a password da sua conta
Participante
Media
1. O caso de uso começa quando o ator seleciona a
opção de recuperar password;
2. O ator insere o seu username no formulário
apresentado;
3. O sistema devolve um novo formulário com a
pergunta de segurança do ator;
4. O ator insere a resposta á pergunta de segurança
no formulário;
5. O sistema pede a confirmação de alteração da
password;
6. O ator confirma;
7. O sistema gera uma nova password e envia um email com a nova password;
8. O sistema confirma o sucesso da operação;
2. A) O ator não respeita as validações do formulário
de dados;
4. A) O ator não respeita as validações do formulário
de dados;
6. A) O ator não confirma;
7. A) O sistema não envia o e-mail;
8. A) O sistema não confirma o sucesso;
8. B) O sistema mantem a versão inalterada dos
dados;
Testar uma resposta errada ou um username inválido
Testar se envia o e-mail
Testar se o sistema deixa introduzir campos nulos ou
inválidos
Proceder às alterações na base de dados.
Tabela 7. Caso de Uso - Recuperar password
29
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
4.4.5. Descrição de Caso de Uso - Criar Equipa
A seguinte tabela, Tabela 8, descreve com detalhe o caso de uso criar equipa.
Nome
Descrição
Atores Envolvidos
Pré condições
Prioridade
Caminho principal ou
cenário principal
Caminhos alternativos
Suplementos ou
Adornos
Pós condições
Criar Equipa
O ator cria uma equipa
Participante
Alta
1. O caso de uso começa quando o ator seleciona a opção
de criar equipa;
2. O ator insere as informações relativas à equipa no
formulário apresentado;
3. O sistema pede para confirmar o a criação da nova
equipa;
4. O ator confirma;
5. O sistema confirma o sucesso;
2. A) O ator não respeita as validações do formulário de
dados;
3. A) O sistema rejeita as alterações;
3. B) O sistema pergunta se deseja continuar ou cancelar;
5. A) O sistema não confirma o sucesso;
5. B) O sistema mantem a versão inalterada dos dados;
Testar se o sistema deixa introduzir campos nulos ou
inválidos
Proceder às alterações na base de dados.
Tabela 8. Caso de Uso - Criar Equipa
30
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
4.4.6. Descrição de Caso de Uso - Adicionar membro à
equipa
A seguinte tabela, Tabela 9, descreve com detalhe o caso de uso adicionar membro
à equipa.
Nome
Descrição
Atores Envolvidos
Pré condições
Prioridade
Caminho principal ou
cenário principal
Caminhos alternativos
Suplementos ou
Adornos
Pós condições
Adicionar membro à equipa
O ator adiciona um membro à equipa
Participante
Alta
1. O caso de uso começa quando o ator seleciona a opção
de adicionar membro;
2. O ator seleciona o membro a inserir;
3. O sistema pede para confirmar;
4. O ator confirma;
5. O sistema envia um e-mail com um link para o ator
confirmar/aprovar a sua entrada na equipa;
6. O sistema confirma o sucesso;
2. A) O ator não respeita as validações do formulário de
dados;
3. A) O sistema rejeita as alterações;
3. B) O sistema pergunta se deseja continuar ou cancelar;
4. A) O ator não confirma;
5. A) O sistema não envia o e-mail;
6. A) O sistema não confirma o sucesso;
6. B) O sistema mantem a versão inalterada dos dados;
Testar se envia o e-mail
Proceder às alterações na base de dados.
Tabela 9. Caso de Uso - Adicionar membro à equipa
31
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
4.4.7. Descrição de Caso de Uso - Aprovar ser membro
de uma equipa
A seguinte tabela, Tabela 10, descreve com detalhe o caso de uso aprovar ser
membro de uma equipa.
Nome
Descrição
Atores Envolvidos
Pré condições
Prioridade
Caminho principal
ou cenário principal
Caminhos
alternativos
Suplementos ou
Adornos
Pós condições
Aprovar ser membro de uma equipa
O ator aprova/confirma ser membro da equipa
Participante
Login Válido
Alta
1. O caso de uso começa quando o ator copia e cola no
browser o link que foi enviado por e-mail para a
confirmação de membro;
2. O sistema verifica se o utilizador tem o login feito;
3. O sistema verifica se o link está correto;
4. O sistema verifica se o id que se quer fazer a ativação
existe na base de dados;
5. O sistema verifica se o utilizador que está a fazer a
confirmação/aprovação é o utilizador correto (aquele que
foi adicionado a entrar na equipa);
6. O sistema verifica se o membro já foi
confirmado/aprovado;
7. O sistema confirma o sucesso;
2. A) O ator não tem o login feito;
2. B) O sistema exibe mensagem de erro.
3. A) O ator não copia e ou cola corretamente o link no
browser;
3. B) O sistema exibe mensagem de erro.
4. A) O Id não existe na base de dados.
4. B) O sistema exibe mensagem de erro.
5. A) Não é o utilizador correto;
5. B) O sistema exibe mensagem de erro.
6. A) O sistema avisa que o registo já foi previamente
confirmado;
7. A) O sistema não confirma o sucesso;
7. B) O sistema mantem a versão inalterada dos dados;
Testar a confirmação do registo com o link
alterado/modificado
Testar se envia o e-mail
Proceder às alterações na base de dados.
Tabela 10. Caso de Uso “Aprovar ser membro de uma equipa”
32
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
4.5. Diagramas de Sequência
Os diagramas de sequência mostram as interações entre objetos segundo uma
perspetiva temporal.
 Um objeto é representado por um retângulo e uma linha vertical,
denominada a linha de vida do objeto.
 Os objetos comunicam trocando mensagens representadas por setas
horizontais orientadas do emissor de uma mensagem para o seu
destinatário.
 Utilização: Documentar Casos Uso e representar interações entre objetos.
Um diagrama de sequência descreve a maneira como os grupos de objetos
colaboram em algum comportamento ao longo do tempo. Ele registra o comportamento
de um único caso de uso e mostra os objetos e as mensagens passadas entre esses objetos
no caso de uso.
Em síntese: o Diagrama de Sequência é uma das ferramentas UML usadas para
representar interações entre objetos de um cenário, realizadas através de operações ou
métodos (procedimentos ou funções). Este diagrama é construído a partir do Diagrama
de Casos de Uso.
A seguir poderão ser visualizados alguns diagramas de sequência deste projeto.
Optou-se por desenhar os diagramas de sequência dos casos de uso observados no ponto
4.4..
33
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
4.5.1. Diagrama de Sequência - Efetuar Registo no
Sistema
O diagrama de sequência representado na Figura 14 descreve os eventos e ações,
com o sistema, quando o utilizador efetua o registo no sistema.
Figura 14: Diagrama de Sequência - Efetuar Registo no Sistema
No diagrama de sequência que pode ser visto na Figura 14, o utilizador seleciona
a interface “Registar Participante”, o sistema devolve um formulário para o participante
preencher com os seus dados (nome, e-mail, telefone nif, morada, código postal,
localidade, data de nascimento, sexo, username, pergunta de segurança e resposta de
segurança) e selecionar o seu país. Após o participante introduzir os dados, confirma,
clicando no botão “Criar Utilizador” para o sistema efetuar o registo do novo participante
34
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
e criar um e-mail para enviar ao novo participante com um link para que ele possa fazer
a confirmação/ativação da conta criada.
4.5.2. Diagrama de Sequência - Confirmar o registo no
sistema
O diagrama de sequência representado na Figura 15 descreve os eventos e ações,
com o sistema, quando o novo utilizador confirma o seu registo no sistema.
Figura 15: Diagrama de Sequência - Confirmar Registo no Sistema
No diagrama de sequência, Figura 15, o novo participante clica no link recebido
por e-mail para poder fazer a confirmação da sua conta no sistema.
O sistema verifica várias condições antes de efetuar a confirmação, verifica se o
url está correto, se o participante a que se quer fazer a confirmação existe na base de
dados e verificar se a ativação ainda não foi feita. Sempre que uma das condições acima
35
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
não se verifiquem, o sistema exibe o erro correspondente, caso todas se verifiquem o
sistema confirma o registo do novo participante, colocando o campo IsAproved igual a
True. Realizada a confirmação do registo, o participante já pode usar o seu username e
password para fazer login no site.
4.5.3. Diagrama de Sequência - Editar os dados dados
pessoais
O diagrama de sequência representado na Figura 16 descreve os eventos e ações,
com o sistema, quando o participante edita os seus dados pessoais.
Figura 16: Diagrama de Sequência - Editar Dados Pessoais
No diagrama de sequência, Figura 16, o participante seleciona a interface “Editar
Dados Pessoais”, o sistema devolve um formulário com os dados pessoais do participante,
36
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
Após o participante fazer a alteração dos dados que deseja, confirma, clicando no botão
“Guardar” para o sistema efetuar as respetivas alterações.
4.5.4. Diagrama de Sequência - Recuperar password
O diagrama de sequência representado na Figura 17 descreve os eventos e ações,
com o sistema, quando um participante recupera a password da sua conta.
Figura 17: Diagrama de Sequência "Recuperar Password"
No diagrama de sequência, Figura 17, o participante seleciona a interface “Recuperar
Password”, o sistema devolve um formulário para indicar qual o nome do utilizador que
se quer recuperar a password, depois de inserido, clica no botão “Seguinte” e o sistema
vai devolver a pergunta de segurança desse utilizador e um formulário para se responder
37
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
á pergunta. Se o participante responder corretamente á pergunta de segurança e clicar no
botão “Recuperar”, o sistema gera uma nova password, faz a alteração da password na
base de dados e cria um e-mail com a nova password para ser enviada ao participante que
efetuou o pedido de recuperação de password.
4.5.5. Diagrama de Sequência - Criar Equipa
O diagrama de sequência representado na Figura 18 descreve os eventos e ações,
com o sistema, quando o participante cria uma equipa.
Figura 18: Diagrama de Sequência - Criar Equipa
No diagrama de sequência, Figura 18, o participante seleciona a interface “Criar
Equipa”, o sistema devolve um formulário para o participante preencher com os dados da
nova equipa (nome, telefone, e-mail, instituição, data, esta é preenchida automaticamente
38
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
pelo com a data atual do sistema) e selecionar a edição, a classe e o país. Depois do
participante preencher o formulário, tem de confirmar, clicando no botão “Criar” para o
sistema criar a nova equipa, sendo adicionado, também, como membro e responsável da
equipa o participante que a criou.
4.5.6. Diagrama de Sequência - Adicionar membro à
equipa
O diagrama de sequência representado na Figura 19 descreve os eventos e ações,
com o sistema, quando o participante adiciona um membro a uma equipa.
Figura 19: Diagrama de Sequência "Adicionar Membro à Equipa"
39
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
No diagrama de sequência, Figura 19, o participante seleciona a interface
“Adicionar Membro”, o sistema devolve uma DropDownList com a lista dos participantes
a adicionar exceto aqueles que já se encontram na equipa. Após o participante selecionar
o nome do membro, tem de confirmar, clicando no botão “Adicionar” e o sistema cria um
e-mail para enviar ao novo membro da equipa com um link, para que ele possa fazer a
aprovação de ser membro naquela equipa.
4.5.7. Diagrama de Sequência - Aprovar ser membro
de uma equipa
O diagrama de sequência representado na Figura 20 descreve os eventos e ações
com o sistema, quando o participante aprova ser membro de uma equipa.
Figura 20: Diagrama de Sequência - Aprovar ser Membro de uma Equipa
40
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
No diagrama de sequência, Figura 20, o novo participante adicionado na equipa
clica no link recebido via e-mail para fazer a sua aprovação/entrada na equipa.
O sistema verifica várias condições antes de efetuar a confirmação, verifica se o
login está feito, se o url está correto, se o id que se vai ativar existe na base de dados, se
o utilizador que está a fazer a ativação é aquele que foi adicionado na equipa e se a
aprovação ainda não tiver sido feita.
Sempre que cada uma das condições acima não se verifiquem, o sistema exibe o erro
correspondente, caso todas se verifiquem o sistema aprova a entrada do participante na
equipa, colocando o campo Aprovado igual True.
4.6. Diagrama de Classes
Em programação, um diagrama de Classes é uma representação da estrutura e
relação das classes que servem de modelo para objetos.
É uma modelagem muito útil para o sistema pois define todas as classes que o
sistema necessita possuir, sendo a base para a construção dos diagramas de comunicação,
sequência e estados.
O diagrama apresentado na Figura 21 é consequência de uma análise prévia de
requisitos, este mostra como as diferentes classes se relacionam entre si. Cada classe é
constituída pelo nome, atributos e as operações que representam o papel dos atores no
sistema.
41
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
Figura 21: Diagrama de Classes da aplicação web Robô Bombeiro
Para além da base de dados anterior, quando criamos os utilizadores, “por
predefinição, o provider SqlMembershipProvider recorre a uma base de dados SQL
Server Express colocada no interior da pasta app_data para guardar as contas dos
42
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
utilizadores. O primeiro pedido efetuado à API de Membership resulta na criação do
ficheiro ASPNETDB.mdf usado para guardar os dados dos utilizadores” [1].
Figura 22: Modelo ER das contas de utilizador da aplicação Robô Bombeiro
43
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
“As tabelas aspnet_Applications, aspnet_Users e aspnet_Membership
guardam os dados usados pela API de Membership. A primeira tabela contém apenas
dados que identificam uma aplicação que possui contas nesta base de dados (permite-nos
manter contas de utilizadores de várias aplicações na mesma base de dados). O nome da
aplicação é mantido através do campo ApplicationName. As restantes duas tabelas
armazenam dados relativos às contas dos utilizadores. O campo UserName é o campo
principal da tabela aspnet_Users e guarda o nome de utilizador. A tabela armazena ainda
outros dados, como, por exemplo, a data associada ao último pedido efetuado pelo
utilizador (esta informação pode ser importante para obter o número de utilizadores
online). Como podemos verificar através da Figura 22, a tabela aspnet_Membership
armazena os restantes dados da conta de um utilizador (e-mail, pergunta e resposta de
recuperação). Para além desses campos, a tabela possui ainda outros que são importantes
para as funcionalidades suportados pela API. Por exemplo, o campo IsLockedOut
permite-nos saber se a conta de um utilizador está ou não bloqueada.” [1].
4.7. Semântica de Classes
A semântica de classes tem como objetivo descrever as classes utilizadas:
 Nome do campo – campos da classe;
 Tipo de dados – valores que compõem o atributo;
 Descrição – o que representa o atributo na classe;
 Valores válidos – Apesar do tipo de dados, esta coluna tem como objetivo
referenciar os valores válidos no contexto em que esses valores irão ser
usados;
 Formato – Representação do atributo. Por exemplo se for data: yyyy-MMdd (Ano-Mês-dia);
 Restrições – Como é tratado o atributo: se é pelo sistema ou pelo
utilizador;
 Valor por defeito – Indica se o campo tem um valor por defeito e qual é
esse valor.
44
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
Na Tabela 11, encontra-se a tabela referente à entidade “País” e na Tabela 12 as
suas respetivas operações.
Entidade: País
Descrição: Contém a informação do país do participante inscrito.
Pais
Valores
Válidos
Formato
Restrições
Valor
por
defeito
Número sequencial que
identifica univocamente o
país
>0
Até 9
dígitos
Gerado pelo
sistema,
não pode
ser alterado
-
Char
Parte da ISO 3166 que
sugere códigos para os
nomes de países, Sistema
de 2 letras
Caracteres
de A a Z
2
caracteres
Obrigatório
e alterável
-
NmPais
String
Nome completo do país,
em letras maiúsculas
Caracteres
de A a Z
Até 80
caracteres
Obrigatório
e alterável
-
Printable
Nm
String
Caracteres
de A a Z
Até 80
caracteres
Obrigatório
e alterável
-
iso3
Char
Caracteres
de A a Z
3
caracteres
Alterável
-
CodPais
Char
Caracteres
numéricos
3 dígitos
numéricos
Alterável
-
Nome do
Campo
Tipo de
Dados
Descrição
IdPais
(PK)
Numeração
Automática
iso
Nome completo do país,
sendo este o nome que é
apresentado
Parte da ISO 3166 que
sugere códigos para os
nomes de países, Sistema
de 3 letras
Parte da ISO 3166 que
sugere códigos para os
limites fronteiriços de cada
país, Sistema numérico de 3
dígitos
Tabela 11: Entidade - País
Operações
Nome
Descrição
Consultar ()
Permite a consulta dos dados (nome, isso, codPais) de um determinado país através do seu
número único de identificação
Pesquisar ()
Permite fazer pesquisas através do nome do país.
Tabela 12: Operações da Tabela Entidade - País
45
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
Na Tabela 13, encontra-se a tabela referente à entidade “Participante” e na Tabela
14 as suas respetivas operações.
Entidade: Participante
Descrição: Contém toda a informação relativa aos participantes do concurso.
Participante
Valores
Válidos
Formato
Restrições
Valor
por
defeito
Número sequencial que
identifica univocamente
o voluntario
>0
Até 9
dígitos
Gerado pelo
sistema, não
pode ser
alterado
-
Número
inteiro
Número que identifica
o país
>0
Até 9
dígitos
Facultado
pelo sistema
-
NmParticipan
te
String
Nome complete do
participante
Caracteres
de A a Z
Até 100
caracteres
Obrigatório e
alterável
-
E-mail
String
E-mail do participante
Todos os
caracteres
Até 100
caracteres
Obrigatório e
alterável
-
Telefone
Char
Número de telefone do
participante para
contacto
Caracteres
numéricos
9 dígitos
numéricos
9xxxxxxxx/
2xxxxxxxx
-
NIF
Char
Número de idenficação
fiscal do participante
Caracteres
numéricos
9 dígitos
numéricos
Obrigatório e
alterável
-
NIB
Char
Caracteres
numéricos
21 dígitos
numéricos
Obrigatório e
alterável
-
IBAN
Char
Caracteres
numéricos
34 dígitos
numéricos
Alterável
-
SWIFT
Char
Caracteres
numéricos
11 dígitos
numéricos
Alterável
-
Morada
String
Morada do participante
Caracteres
alfanuméric
os
Até 150
caracteres
Obrigatório e
alterável
-
CodPostal
Char
Código postal relativo à
morada do participante
Caracteres
numéricos
8 dígitos
numéricos
Obrigatório e
alterável
-
Localidade
String
Cidade/ Região do
particiapante
Caracteres
de A a Z
Até 100
caracteres
Obrigatório e
alterável
-
Nome do
Campo
Tipo de
Dados
Descrição
IdParticipante
(PK)
Numeração
Automática
IdPaisFK (FK)
Número de
identificação bancária
do participante
Código-padrão
internacional para a
identificação de contas
bancárias
Entidade que gere os
códigos que permitem
a identificação de um
banco, códigos esses
denominados por Bank
Identifier Code (BIC)
46
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
Foto
Image
Fotografia do
participante
>0
2^311bytes
Alterável
-
DataNasc
Date time
Data de nascimento do
participante
Caracteres
numéricos
DD/MM/Y
YYY
Obrigatório e
alterável
-
Até 1
caracter
Obrigatório e
alterável Check (M ou
F)
-
Até 50
caracteres
Obrigatório e
alterável
-
Sexo
Char
Sexo do participante
Caracteres
MeF
Username_Lo
gin
Nvarchar
Nome que o
participante utiliza para
fazer o login
Caracteres
alfanuméric
os
Tabela 13: Entidade - Participante
Operações
Nome
Registar( )
Descrição
Permite o registo de um novo participante.
Código:
connection = new
SqlConnection(ConfigurationManager.ConnectionStrings["Con
nectionString"].ConnectionString);
connection.Open();
SqlCommand insert = new SqlCommand("INSERT
INTO Participante(NmParticipante, E-mail, Telefone, NIF,
NIB, IBAN, SWIFT, Morada, CodPostal, Localidade,
IdPaisFK, DataNasc, Sexo, Username_Login) VALUES
(@NmParticipante, @Email, @Telefone, @NIF, @NIB, @IBAN,
@SWIFT, @Morada, @CodPostal, @Localidade, @IdPaisFK,
@DataNasc, @Sexo, @Username_Login)", connection);
insert.Parameters.AddWithValue("NmParticipante", nome);
insert.Parameters.AddWithValue("Email",
Membership.GetUser(CreateUserWizardParticipante.UserName)
.Email);
insert.Parameters.AddWithValue("Telefone",
telefone);
insert.Parameters.AddWithValue("NIF", nif);
insert.Parameters.AddWithValue("NIB", nib);
insert.Parameters.AddWithValue("IBAN", iban);
insert.Parameters.AddWithValue("SWIFT",
swift);
insert.Parameters.AddWithValue("Morada",
morada);
insert.Parameters.AddWithValue("CodPostal",
codpostal);
insert.Parameters.AddWithValue("Localidade",
localidade);
insert.Parameters.AddWithValue("IdPaisFK",
pais);
47
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
insert.Parameters.AddWithValue("DataNasc",
DataNasc);
insert.Parameters.AddWithValue("Sexo", sexo);
insert.Parameters.AddWithValue("Username_Login",
CreateUserWizardParticipante.UserName);
insert.ExecuteNonQuery();
Apagar( )
Permite apagar um participante através do seu número de identificação.
Código:
DELETE FROM Participante WHERE (IdParticipante =
@IdParticipante)
Consultar()
Permite consultar um participante através do seu número de identificação.
Código:
SELECT Participante.IdParticipante,
Participante.IdPaisFK, Participante.NmParticipante,
Participante.Email, Participante.Telefone,
Participante.NIF, Participante.NIB, Participante.IBAN,
Participante.SWIFT, Participante.Morada,
Participante.CodPostal, Participante.Localidade,
Participante.Foto, Participante.DataNasc,
Participante.Sexo, Pais.IdPais, Pais.PrintableNm,
Participante.Username_Login FROM Participante INNER JOIN
Pais ON Participante.IdPaisFK = Pais.IdPais WHERE
(Participante.Username_Login = @Username_Login)
Pesquisar()
Editar()
Permite pesquisar um participante por nome.
Permite editar os dados do participante através do seu número de identificação
Código:
UPDATE Participante SET NmParticipante = @NmParticipante,
DataNasc = @DataNasc, Sexo = @Sexo, Morada = @Morada,
CodPostal = @CodPostal, Localidade = @Localidade,
IdPaisFK = @IdPaisFK, Telefone = @Telefone, Email =
@Email, NIF = @NIF, NIB = @NIB, IBAN = @IBAN, SWIFT =
@SWIFT, Foto = @Foto WHERE (IdParticipante =
@IdParticipante)
Tabela 14: Operações da Tabela Entidade - Participante
Na Tabela 15, encontra-se a tabela referente à entidade “Classe” e na Tabela 16
as suas respetivas operações.
48
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
Entidade: Classe
Descrição: Contém a informação por tipo de instituições de ensino.
Classe
Nome do
Campo
IdClasse
(PK)
Tipo de
Dados
Numeração
Automática
NmClasse
Número
inteiro
Observacoes
String
Descrição
Valores
Válidos
>0
Formato
Restrições
Até 9
dígitos
Número que identifica o
nome da classe
>0
Até 9
dígitos
Gerado pelo
sistema, não
pode ser
alterado
Facultado
pelo sistema
Breve descrição da classe
Caracteres
de A a Z
Até 500
caracteres
Número sequencial que
identifica univocamente
o voluntario
Alterável
Valor por
defeito
-
-
-
Tabela 15: Entidade - Classe
Operações
Nome
Descrição
Criar( )
Permite a criação de uma nova classe.
Editar( )
Permite editar os dados da classe através do seu número de identificação.
Consultar()
Permite consultar uma classe através do seu número de identificação.
Pesquisar()
Permite pesquisar uma classe pelo nome.
Apagar()
Permite apagar uma classe através do seu número de identificação.
Tabela 16: Operações da Tabela Entidade - Classe
Na Tabela 17, encontra-se a tabela referente à entidade “Edição” e na Tabela 18
as suas respetivas operações.
49
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
Entidade: Edição
Descrição: Contém a informação da edição do concurso.
Edicao
Nome do
Campo
Tipo de
Dados
Descrição
Valores
Válidos
Formato
Restrições
Valor
por
defeito
-
IdEdicao
(PK)
Numeração
Automática
>0
Até 9
dígitos
Data
Date time
Número sequencial
que identifica
univocamente o
voluntario
Data da edição do
concurso
Caracteres
numéricos
DD/MM/Y
YYY
Gerado pelo
sistema, não
pode ser
alterado
Obrigatório e
não alterável
Edicao
Char
Identificação da
edição do concurso
Caracteres
numéricos
Até 10
dígitos
Obrigatório e
não alterável
-
Morada
String
Morada da edição do
concurso
Caracteres
alfanuméricos
Até 100
caracteres
Obrigatório e
alterável
-
Localidade
String
Cidade/região da
edição do concurso
Carateres de
AaZ
Até 100
caracteres
Obrigatório e
alterável
-
CodPostal
Char
Código postal da
morada da edição do
concurso
Caracteres
numéricos
8 dígitos
numéricos
Obrigatório e
alterável
-
PoterPdf
Varbinary
Poster em format
PDF da edição do
concurso
>0
2^311bytes
Alterável
-
PosterImg
Image
Imagem do poster da
edição do concurso
>0
2^311bytes
Alterável
-
-
Tabela 17: Entidade - Edição
Operações
Nome
Adicionar( )
Editar( )
Descrição
Permite adicionar uma nova edição.
Permite editar os dados da edição através do seu número de identificação.
Consultar()
Permite consultar uma edição através do seu número de identificação.
Pesquisar()
Permite pesquisar uma edição pelo número de edição.
Apagar()
Permite apagar uma edição através do seu número de identificação.
Tabela 18: Operações da Tabela Entidade - Edição
50
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
Na Tabela 19, encontra-se a tabela referente à entidade “TipoEntidade” e na
Tabela 20 as suas respetivas operações.
Entidade: Tipo Entidade
Descrição: Fornece as caraterísticas/informações do tipo de entidades inscrita.
TipoEntidade
Nome do Campo
Tipo de
Dados
Descrição
Valores
Válidos
Formato
Restrições
IdTipoEntidade
(PK)
Numeração
Automática
>0
Até 9
dígitos
NmTipoEntidade
String
Número sequencial
que identifica
univocamente o
voluntario
Nome/ Designação do
tipo de entidade
Caractere
s de A a Z
Até 100
caracteres
Gerado pelo
sistema,
não pode
ser alterado
Obrigatório
e Alterável
Descricao
String
Breve descrição do
tipo de entidade
Caractere
s de A a Z
Até 400
caracteres
Valor
por
defeito
-
Alterável
-
-
Tabela 19: Entidade - TipoEntidade
Operações
Nome
Adicionar( )
Editar( )
Descrição
Permite adicionar um novo tipo de entidade.
Permite editar os dados do tipo de entidade através do seu número de identificação.
Consultar()
Permite consultar um tipo de entidade através do seu número de identificação.
Pesquisar()
Permite pesquisar um tipo de entidade pelo seu nome.
Apagar()
Permite apagar um tipo de entidade através do seu número de identificação.
Tabela 20: Operações da Tabela Entidade - TipoEntidade
Na Tabela 21, encontra-se a tabela referente à entidade “Entidade” e na Tabela 22
as suas respetivas operações.
51
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
Entidade: Entidade
Descrição: Contém toda a informação necessária de cada uma das entidades.
Entidade
Nome do Campo
Tipo de
Dados
Descrição
Valores
Válidos
Formato
Restrições
Valor
por
defeito
-
IdEntidade
(PK)
Numeração
Automática
>0
Até 9
dígitos
IdTipoEntidadeFK
(FK)
Número
inteiro
Número sequencial
que identifica
univocamente o
voluntario
Número que
identifica o tipo de
entidade
>0
Até 9
dígitos
Gerado pelo
sistema,
não pode
ser alterado
Facultado
pelo
sistema
NmEntidade
String
Nome completo da
entidade
Caracter
es de A
aZ
Até 200
caracteres
Obrigatório
e alterável
-
Logotipo
Image
Logotipo da empresa
patrocinadora
>0
2^311bytes
Alterável
-
Localidade
String
Cidade/região da
entidade
Caratere
s de A a
Z
Até 100
caracteres
Obrigatório
e alterável
-
Telefone
Char
Número de telefone
da para contato
9 dígitos
numéricos
2xxxxxxxx
-
Telemovel
Char
9 dígitos
numéricos
9xxxxxxxx
-
Fax
Char
Número de
telemóvel da
entidade para
contato
Número de fax da
entidade para
contato
9 dígitos
numéricos
2xxxxxxxx
-
Email
String
E-mail da entidade
Até 100
caracteres
Obrigatório
e alterável
-
Web
String
Página web da
entidade
Caracter
es
numéric
os
Caracter
es
numéric
os
Caracter
es
numéric
os
Todos
os
caracter
es
Caracter
es de A
aZ
Até 100
caracteres
Obrigatório
e alterável
-
NmContacto
String
Caracter
es de A
aZ
Até 100
caracteres
Alterável
-
CargoContacto
String
Caracter
es de A
aZ
Até 50
caracteres
Alterável
-
TelefoneContacto
Char
Nome da pessoa
designada para
contacto na
entidade
Cargo da pessoa
designada para
contacto na
entidade
Telefone da pessoa
designada para
contacto na
entidade
Caracter
es
numéric
os
9 dígitos
numéricos
2xxxxxxxx
-
-
52
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
TelemovelContacto
Char
EmailContacto
String
Ruben Ventura (2014)
Telemóvel da pessoa
designada para
contacto na
entidade
E-mail para contato
com a entidade
patrocinadora
Caracter
es
numéric
os
Todos
os
caracter
es
9 dígitos
numéricos
9xxxxxxxx
-
Até 100
caracteres
Alterável
-
Tabela 21: Entidade - Entidade
Operações
Nome
Descrição
Adicionar( )
Permite adicionar uma nova entidade.
Editar( )
Permite editar os dados da entidade através do seu número de identificação.
Consultar()
Permite consultar a entidade através do seu número de identificação.
Pesquisar()
Permite pesquisar uma entidade pelo seu nome.
Apagar()
Permite apagar uma entidade através do seu número de identificação.
Tabela 22: Operações da Tabela Entidade - Entidade
Na Tabela 23, encontra-se a tabela referente à entidade “Apoio” e na Tabela 24 as
suas respetivas operações.
Entidade: Apoio
Descrição: Contém as entidades que patrocinam cada uma das edições do concurso do
Robô Bombeiro.
Apoio
Nome do
Campo
Tipo de
Dados
Descrição
Valores
Válidos
Formato
Restrições
IdApoio
(PK)
Numeração
Automática
Número sequencial que
identifica univocamente o
voluntario
>0
Até 9
dígitos
IdEdicaoFK
(FK)
Número
inteiro
Número que identifica a
edição
>0
Até 9
dígitos
Gerado pelo
sistema, não
pode ser
alterado
Facultado pelo
sistema
IdEntidadeFK
(FK)
Número
inteiro
Número que identifica a
entidade
>0
Até 9
dígitos
Facultado pelo
sistema
Valor
por
defeito
-
-
-
Tabela 23: Entidade – Apoio
53
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
Operações
Nome
Descrição
Adicionar( )
Permite adicionar um apoio.
Consultar()
Permite consultar um apoio através do seu número de identificação.
Pesquisar()
Permite pesquisar um apoio pela edição.
Remover()
Permite remover um apoio através do seu número de identificação.
Tabela 24: Operações da Tabela Entidade - Apoio
Na Tabela 25, encontra-se a tabela referente à entidade “Equipa” e na Tabela 26
as suas respetivas operações.
Entidade: Equipa
Descrição: Contém toda a informação da equipa inscrita no concurso do Robô Bombeiro.
Equipa
Nome do
Campo
Tipo de
Dados
Descrição
Valores
Válidos
Formato
Restrições
Valor
por
defeito
-
IdEquipa (PK)
Número sequencial que
identifica univocamente
o voluntario
>0
Até 9
dígitos
IdClasseFK
(FK)
Numeraçã
o
Automátic
a
Número
inteiro
Número que identifica a
classe
>0
Até 9
dígitos
Gerado pelo
sistema,
não pode
ser alterado
Facultado
pelo
sistema
IdEdicaoFK
(FK)
Número
inteiro
Número que identifica a
edição
>0
Até 9
dígitos
Facultado
pelo
sistema
-
IdPaisFK (FK)
Número
inteiro
Número que identifica
o país
>0
Até 9
dígitos
Facultado
pelo
sistema
-
IdParticipante
ResponsavelF
K (FK)
Número
inteiro
Número que identifica
o participante
responsável
>0
Até 9
dígitos
Facultado
pelo
sistema
-
-
54
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
NmEquipa
String
Nome completo da
equipa
Caracteres
alfanuméricos
Até 100
caracteres
Obrigatório
e alterável
-
Telefone
Char
Número de telefone da
equipa para contacto
Caracteres
numéricos
9 dígitos
numéricos
9xxxxxxxx/
2xxxxxxxx
-
Email
String
E-mail da equipa
participante
Todos os
caracteres
Até 100
caracteres
Alterável
-
DataInscricao
Date time
Data da inscrição da
equipa
Caracteres
numéricos
DD/MM/Y
YYY
Obrigatório
e não
alterável
-
Instituicao
String
Nome completo da
Instituição
Caracteres de
AaZ
Até 200
caracteres
Alterável
-
Foto
Image
Fotografia da equipa
>0
2^311bytes
Alterável
-
Tabela 25: Entidade - Equipa
Operações
Nome
Descrição
Criar( )
Permite criar uma equipa.
Código:
e.Values["Foto"] = FileUploadFoto.FileBytes;
//Colocar o username na variavel Username_Login
e.Values.Add("Username_Login", User.Identity.Name);
SqlDataSourceFView.InsertCommand = "INSERT INTO Equipa(
IdClasseFK, IdEdicaoFK, IdPaisFK,
IdParticipanteResponsavelFK, NmEquipa, Telefone, Email,
DataIncricao, Instituicao, Foto) VALUES (@IdClasseFK,
@IdEdicaoFK, @IdPaisFK, (SELECT IdParticipante FROM
Participante WHERE Username_Login = @Username_Login),
@NmEquipa, @Telefone, @Email, GETDATE(), @Instituicao,
@Foto)" + "INSERT INTO
ParticipanteEquipa(IdParticipanteFK, IdEquipaFK,
Aprovado) VALUES ((SELECT IdParticipante FROM
Participante WHERE Username_Login = @Username_Login),
(SELECT Scope_Identity()), 1)";
Editar()
Permite editar uma equipa através do seu número de identificação.
Código:
if (FileUploadFoto.HasFile)
{
e.NewValues["Foto"] =
FileUploadFoto.FileBytes;
}
else
{
SqlDataSourceFView.UpdateCommand = "UPDATE
Equipa SET IdClasseFK = @IdClasseFK, IdEdicaoFK =
55
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
@IdEdicaoFK, IdPaisFK = @IdPaisFK,
IdParticipanteResponsavelFK =
@IdParticipanteResponsavelFK, NmEquipa = @NmEquipa,
Telefone = @Telefone, Email = @Email, Instituicao =
@Instituicao WHERE (IdEquipa = @IdEquipa)";
}
Consultar()
Permite consultar uma equipa através do seu número de identificação.
Código:
SELECT ParticipanteEquipa.IdPartiEquipa,
ParticipanteEquipa.IdParticipanteFK,
ParticipanteEquipa.IdEquipaFK, Classe.NmClasse,
Edicao.Edicao, Equipa.IdParticipanteResponsavelFK,
Equipa.NmEquipa, Equipa.DataIncricao, Equipa.IdEquipa,
Edicao.Data, Edicao.IdEdicao,
ParticipanteEquipa.Aprovado FROM Participante INNER
JOIN ParticipanteEquipa ON Participante.IdParticipante
= ParticipanteEquipa.IdParticipanteFK INNER JOIN Equipa
ON ParticipanteEquipa.IdEquipaFK = Equipa.IdEquipa
INNER JOIN Classe ON Equipa.IdClasseFK =
Classe.IdClasse INNER JOIN Edicao ON Equipa.IdEdicaoFK
= Edicao.IdEdicao WHERE (Participante.Username_Login =
@Username_Login) AND (ParticipanteEquipa.Aprovado = 1)
Pesquisar()
Apagar()
Permite pesquisar uma equipa por nome e por edição.
Permite apagar uma equipa através do seu número de identificação.
Código:
//Primeiro apagar os Membros da Equipa e depois apagar
a Equipa
SqlDataSourceFView.DeleteCommand = "DELETE FROM
ParticipanteEquipa WHERE (IdEquipaFK = @IdEquipa)" +
"DELETE FROM Equipa WHERE (IdEquipa = @IdEquipa)";
Tabela 26: Operações da Tabela Entidade - Equipa
Na Tabela 27, encontra-se a tabela referente à entidade “ParticipanteEquipa” e na
Tabela 28 as suas respetivas operações.
56
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
Entidade: Participante Equipa
Descrição: Contém toda a informação dos participantes inscritos em cada equipa.
ParticipanteEquipa
Nome do
Campo
Tipo de
Dados
Descrição
Valores
Válidos
Formato
Restrições
Valor
por
defeito
-
IdPartiEquipa
(PK)
Numeração
Automática
Número sequencial que
identifica univocamente o
voluntario
>0
Até 9
dígitos
IdParticipante
FK (FK)
Número
inteiro
Número que identifica o
participante
>0
Até 9
dígitos
Gerado pelo
sistema,
não pode
ser alterado
Facultado
pelo
sistema
IdEquipaFK
(FK)
Número
inteiro
Número que identifica a
equipa
>0
Até 9
dígitos
Facultado
pelo
sistema
-
Aprovado
Boolean
Campo que menciona se
o participantes está ou
não aprovado na equipa
True /
False
1/0
Obrigatório
e não
alterável
0 (false)
-
Tabela 27: Entidade - ParticipanteEquipa
Operações
Nome
Descrição
Adicionar( )
Permite adicionar um Participante a uma equipa.
Consultar()
Permite consultar os participantes de uma através do seu número de identificação.
Remover()
Permite remover participantes das equipas através do seu número de identificação.
Tabela 28: Operações da Tabela Entidade – ParticipanteEquipa
57
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
4.8. Diagrama de Atividades
O Diagrama de atividade é um diagrama definido pela Linguagem de Modelagem
Unificada
(UML) e representa os fluxos conduzidos por processamentos. É
essencialmente um gráfico de fluxo, mostrando o fluxo de controlo de uma atividade para
outra.
Os diagramas de atividade não são importantes exclusivamente para a modelagem
de aspetos dinâmicos de um sistema ou um fluxograma, mas também para a construção
de sistemas executáveis por meio de engenharia de produção reversa.
 Um diagrama de atividade pode ser dividido em pistas de responsabilidade
(swimlanes), separadas por linhas contínuas.
 Cada pista tem o nome da unidade organizacional, entidade ou objeto
responsável pelas ações e atividades aí localizadas.
 Cada ação ou atividade é localizada numa única pista, mas uma transição
pode atravessar várias pistas.
Na Figura 23 pode observar-se o diagrama de atividades com estados da página
de aprovar um membro na equipa.
O sistema verifica várias condições antes de efetuar a confirmação, verifica se o
login está feito, se o url está correto, se o id que se vai ativar existe na base de dados, se
o utilizador que está a fazer a ativação é aquele que foi adicionado na equipa e se a
aprovação ainda não tiver sido feita.
Sempre que cada uma das condições acima não se verifiquem, o sistema exibe o erro
correspondente, caso todas se verifiquem o sistema aprova a entrada do participante na
equipa, colocando o campo Aprovado igual True.
58
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
Figura 23: Diagrama de Atividades aprovar membro de equipa
59
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
4.9. Diagrama de Estados
O Diagrama de Estados é uma representação do estado ou da situação em que um
objeto se pode encontrar no decorrer da execução de um processo de um sistema. Desta
forma o objeto pode passar de um estado inicial para um estado final de uma transição.
 Estado Membro da Equipa
O diagrama da Figura 24 mostra a transição do estado de um novo membro de
equipa, que inicialmente esse estado é “Não Aprovado”, sendo que quando o novo
membro clica no link enviado por e-mail para a aprovação o estado passa a ser
“Aprovado”.
 Estado Registo de utilizador
O diagrama da Figura 25 mostra a transição do estado de um novo utilizador, que
inicialmente esse estado é “Não Aprovado”, sendo que quando o novo utilizador clica no
link enviado por e-mail para a aprovação/confirmação do registo o estado passa a ser
“Aprovado”.
Figura 24: Diagrama de Estado
membro equipa
Figura 25: Diagrama de Estado
registo do utilizador
60
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
4.10.
Ruben Ventura (2014)
Diagrama de Componentes
Diagrama de Componentes, permite descrever os diversos “pedaços” de software
que são os programas fonte, bibliotecas ou programas executáveis.
É utilizado para:
 Modelar os componentes do código fonte, do código executável
do software;
 Destacar a função de cada módulo para facilitar a sua reutilização;
 Auxiliar no processo de engenharia reversa, por meio da organização dos
módulos do sistema e seus relacionamentos.
Como mostra a Figura 26, o Diagrama de Componentes descreve os componentes
da aplicação e ilustra como as classes deverão estar organizadas.
Figura 26: Diagrama de Componentes
61
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
4.11.
Ruben Ventura (2014)
Diagrama de Instalação
O Diagrama de instalação é definido pela Linguagem de Modelagem
Unificada (UML), descreve os componentes de hardware e software e a sua interação
com outros elementos de suporte ao processamento. Representa a configuração e a
arquitetura de um sistema em que estarão ligados aos seus respetivos componentes, sendo
representado pela arquitetura física de hardware e processadores, como é evidenciado na
Figura 27.
Figura 27: Diagrama de Instalação
O diagrama de instalação apresentado serve, não só para a aplicação desenvolvida,
como, também para qualquer outra aplicação ASP.net, independentemente se for em C#
ou VB. O ciclo de vida de uma aplicação ASP.net (tipicamente IIS) começa com uma
solicitação envida por um browser para o servidor Web.
62
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
O servidor Web IIS permite administrar as aplicações Web e comunicar-se com
os browsers do cliente mediante o protocolo http (Hypertext Transfer Protocol),
oferecendo, também, outros serviços de protocolo, como transferência de arquivos (FTP),
serviço de correio eletrônico (SMTP) e serviço de notícias (NNTP).
Quando solicitada uma página de tipo .aspx (página de ASP.Net) o servidor Web
de IIS envia a solicitação a .Net Framework que é quem realmente processa a petição da
página. Desta forma, as aplicações Web de ASP.Net beneficiam-se de todas a vantagens
de execução de código em .Net Framework, já que o código é compilado e executado por
.Net Framework e devolvido ao IIS para que este o envie ao cliente.
63
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
5. TECNOLOGIAS UTILIZADAS
5.1. Introdução
No presente capítulo vão ser mencionadas as tecnologias utilizadas ao longo do
projeto.
Quando se desenvolve uma aplicação para a web, é usado o consórcio W3C
(Consórcio World Wide Web), sendo este um consórcio internacional no qual
organizações filiadas, trabalham em tempo integral e com ajuda do público para
desenvolver padrões para a Web. Este consórcio tem como principal objetivo atingir todo
o seu potencial, desenvolvendo protocolos e diretrizes que garantam o seu crescimento a
longo prazo.
5.2. Tecnologias Web
5.2.1. C#
C# (CSharp) é uma linguagem de programação criada pela Microsoft, dirigida por
eventos e totalmente orientada a objetos. A linguagem C# foi baseada no C++ e no Java.
Embora existam várias outras linguagens que suportam essa tecnologia, como por
exemplo VB.NET, C++, entre outras, a linguagem C# foi criada junto com a arquitetura.
.NET, sendo considerada a linguagem símbolo do .NET, pelas razões que se seguem:
1. Foi criada de novo para funcionar de imediato na plataforma;
2. O compilador da linguagem foi o primeiro a ser desenvolvido;
3. A maior parte das classes do .NET Framework
foram desenvolvidas na mesma linguagem.
A Figura 28 mostra o logotipo da linguagem CSharp
Figura 28: Logotipo do
CSharp
(C#).
64
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
Na Figura 29 pode-se verificar um exemplo de código em C#.
Figura 29: Exemplo de código da linguagem C#
O código observado na Figura 29 corresponde á validação do NIF, e pode ser
explicado da seguinte forma: se o NIF for diferente de 9 dígitos, retorna false, caso seja
igual a 9 dígitos vai verificar se o primeiro dígito é igual a 0,3,4 ou 9 se for igual retorna
65
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
false, no caso de não acontecer vai fazer operações com as parcelas, depois calcula o
CheckDigit, se for igual a 0 retorna true se não retorna false.
5.2.2. ASP.net
“O ASP.NET é uma plataforma de aplicação Web unificada que fornece os
serviços necessários para construir e implementar aplicações Web de classe empresarial.
O ASP.NET oferece um novo modelo de programação e de infraestruturas para aplicações
mais seguras, escaláveis e estáveis para qualquer browser ou dispositivo.
O ASP.NET está incluído no Microsoft .NET Framework, um ambiente
informático que simplifica o desenvolvimento de aplicações no
ambiente altamente distribuído da Internet. O NET Framework
inclui o runtime Common Language Runtime (CLR), que
fornece serviços principais, tais como a gestão da memória,
gestão de threads e segurança de código. Também inclui a
biblioteca de classes de .NET Framework, que é um conjunto
completo e orientado para objetos” [2]. O logotipo do ASP.NET
Figura 30: Logotipo da
linguagem ASP.NET
encontra-se na Figura 30.
Na Figura 31 pode-se observar um exemplo de código de asp.net.
Figura 31: Exemplo de código em ASP.NET
A Figura 31 ilustra dois controlos do ASP.NET, uma TextBox para se
introduzir os dados, neste caso o nome do participante e depois tem um botão para guardar
esses dados, o botão pode ser programado através de eventos na linguagem de
programação em C#.
66
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
5.2.3. SQL Server
O Microsoft SQL Server é um SGBD (Sistema de Gestão de Base de
dados) desenvolvido pela Microsoft. Foi criado em parceria com
a Sybase em 1988 inicialmente para a plataforma OS/21 . Esta
parceria durou até 1994, com o lançamento da versão para Windows
NT e desde então a Microsoft mantém a manutenção do produto.
O logotipo do SGBD “SQL Server” encontra-se na Figura
Figura 32: Logotipo
SQL Server
32.
5.2.4. HTML 5
A palavra HTML deriva de uma expressão inglesa HyperText Markup Language,
que significa Linguagem de Marcação de Hipertextos, esta surgiu em abril de 2010. A
presente linguagem é uma linguagem de marcação utilizada para produzir páginas web.
É a quinta versão da linguagem HTML, pode-se visualizar o
logotipo na Figura 33. Esta nova versão traz consigo importantes
mudanças quanto ao papel do HTML no mundo da Web, através de
novas funcionalidades como semântica e acessibilidade. Com novos
recursos, antes só possíveis por meio de outras tecnologias.
O HTML é o responsável por organizar e formatar as páginas
Figura 33: Logotipo
HTML 5
visualizadas na Internet. Foram feitas grandes alterações, que
incluem:
 Novas API’s, entre elas uma para desenvolvimento de gráficos
bidimensionais;
 Controlo embutido de conteúdo multimídia;
 Aprimoramento do uso offline;
 Melhoria na depuração de erros.
67
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
Pode verificar-se na Figura 34 um exemplo de código em HTML 5, o resultado
deste código é uma tabela de 3 colunas por 3 linhas.
Figura 34: Exemplo de código em HTLM 5
5.2.5. CSS3
CSS3 (Cascading Style Sheets) é a mais nova versão de linguagem de folhas de
estilos, onde se define estilos para páginas web com efeitos de transição, imagem, e
outros, que dão um estilo novo às páginas Web 2.0 em todos os aspetos de design do
layout.
A principal função do CSS3 é abolir as imagens de plano
de fundo, bordas arredondadas, apresentar transições e efeitos
para criar animações de vários tipos, como um simples relógio de
ponteiros.
Tudo isto se deve aos novos browsers, com suporte a essa
linguagem,
como
o
Google
Chrome,
Opera,
Internet
Figura 35: Logotipo do
CSS3
68
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
Explorer 9, Safari e Mozilla Firefox. Em suma, o CSS3 irá facilitar o trabalho das pessoas
que trabalham com web e também utilizadores.
Está apresentado na Figura 35 o logotipo do CSS3 e na Figura 36 um exemplo de
código do mesmo, é um estilo que pode ser aplicado a uma tabela. A tabela vai ocupar
100% do elemento em que se encontra (por exemplo uma div ou um painel) e a linha dos
títulos vai ter uma altura 50 px.
Figura 36: Exemplo de código em CSS3
5.2.6. Bootstrap
O projeto foi desenvolvido tendo em conta que hoje em dia são utilizados vários
dispositivos para navegar na web como por exemplo smartphones, tablets, portáteis e
desktops. Tendo em consideração o que foi dito anteriormente, foi
usado o Bootstrap para ser mais fácil desenvolver páginas web com
responsive design que visa a elaboração de sites para fornecer uma
experiência de visualização de fácil leitura e navegação otimizada
com um mínimo de redimensionamento, e scrolling de uma ampla
gama de dispositivos (desde monitores de computador de mesa para
Figura 37: Logotipo do
Bootstrap
telefones móveis).
O Bootstrap traz uma série de recursos:
 Estilo visual base pra maioria das tags;
 Ícones;
 Grids prontos pra uso;
 Componentes CSS;
 Plugins JavaScript;
 Tudo responsivo e mobile-first;
69
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
Como o próprio nome diz, é uma forma de começar o projeto logo com um design
e recursos base sem perder tempo com design no início. Na Figura 37 encontra-se o
logotipo do Bootstrap.
5.2.7. iTextSharp
O iTextSharp é uma biblioteca PDF open source programada em C#, que apareceu
em 2001, permite criar, inspecionar e fazer a manutenção de documentos em Portable
Document Format (PDF). Com iTextShar é possível: gerar
documentos e relatórios com base num arquivo XML ou numa
base de dados, Adicionar marcadores, números de página, marcas
d’água e outros recursos existentes para documentos em PDF,
separar ou concatenar páginas de documentos PDF existentes e
preencher formulários interativos.
O iText é usado em JAVA, .NET e Android para melhorar
Figura 38: Logotipo do
iTextSharp
as aplicações com funcionalidades PDF.
Figura 39: Exemplo de código do iTextSharp
Na Figura 38 encontra-se o logotipo da biblioteca iTextSharp, e na Figura 39 é
possível observar-se um exemplo de código do iTextSharp, que gera um ficheiro em PDF
com um “Hello World” de exemplo. Primeiro cria-se o documento, depois diz-se que o
novo ficheiro vai ter o nome “HelloWorld”, abrimos o ficheiro, adiciona-se um parágrafo
ao ficheiro com a frase “Hello World” e por fim fecha-se o ficheiro.
70
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
5.2.8. Microsoft Visual Studio 2013
“O Microsoft Visual Studio é um pacote de programas da Microsoft para
desenvolvimento de software especialmente dedicado ao .NET Framework e às
linguagens Visual Basic (VB), C, C++, C# (C Sharp) e J# (J Sharp). É também um grande
produto de desenvolvimento na área web, usando a plataforma do ASP.NET. As
linguagens usadas nesta plataforma são: VB.NET (Visual Basic.Net) e o C# (C Sharp)”
[3].
Na Figura 40 é apresentada a interface do Microssoft Visual Studio 2013. Todo o
projeto foi desenvolvido neste IDE.
Figura 40: Interface do Microsoft Visual Studio 2013
5.2.9. Microsoft SQL Server Management Studio 2014
“O SQL Server Management Studio (SSMS) é uma aplicação de software lançado
pela primeira vez com o Microsoft SQL SERVER 2005, que é usado para configurar,
gerir e administrar todos os componentes do Microsoft SQL SERVER. A ferramenta
inclui ferramentas gráficas que trabalham com objetos e recursos do servidor. Este
71
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
software pode ser usado, por exemplo, para carregar ficheiros externos a partir de um
ficheiro do excel.” [4].
Na Figura 41 é apresentado a interface do SQL Server Management Studio 2014.
Foi nesta aplicação que a base de dados deste projeto foi criada.
Figura 41: Interface do SQL Server Management Studio 2014
5.2.10. Power Designer 16
O PowerDesigner (literalmente do inglês designer forte) é um software produzido
pela empresa americana Sybase que permite aos utilizadores suportar algumas fases e
tarefas de processo de desenvolvimento de software ou sistemas de informação.
Segundo a Gartner, a quota de mercado de ferramentas CASE para modelagem de
dados que pertence ao PowerDesigner foi 39% em 2002.1 Em suma, o PowerDesigner é
ferramenta CASE integrada, colaborativa e líder do mercado [5].
Na Figura 42 é apresentado a interface do Power Designer 16. Todos os diagramas
da análise de requisitos foram feitos nesta aplicação.
72
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
Figura 42: Interface do Power Designer 16
5.2.11.
Bitbucket e SourceTree
Ao longo da realização do projeto foi utilizado o Bitbucket que é um serviço de
hospedagem de projetos controlados através do Mercurial, um sistema de controlo de
versões distribuído. É similar ao GitHub (que utiliza Git, somente). O Bitbucket também
suporta repositórios que usam o sistema de controlo de versões Git (sistema utilizado no
projeto).
Figura 43: Interface do Site do Bitbucket
73
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
Na Figura 43 é apresentado a interface do site do Bitbucket (que é para onde as
versões são enviadas a fazer-se um commit).
O SourceTree é a aplicação que foi utilizada para fazer os commits para o
serviço de hospedagem do Bitbucket, onde é possível gerir os repositórios com uma
interface simples.
Figura 44: Interface do SorceTree
74
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
6. IMPLEMENTAÇÃO DA SOLUÇÃO E TESTES
6.1. Introdução
Devido ao estudo que foi feito na análise de requisitos verificou-se que a solução
está bem definida, o que iria tornar a sua implementação mais fácil. Após a análise de
requisitos só faltava transformar o estudo que foi feito em realidade e passar à sua
implementação. Um dos principais objetivos foi tornar o produto final o mais simples e
fácil de utilizar, não esquecendo a rapidez de resposta da aplicação web.
A solução desenvolveu-se em ASP.net e C# sendo o software utilizado o
Microsoft Visual Studio 2013, usando SourceTree como controlo de versões.
6.2. Importância do Login e do Logout
O utilizador para poder inscrever-se no concurso é necessário fazer login. Quando
esse login é usado em locais públicos podem surgir algumas questões relacionadas com
segurança. Por exemplo, se alguns utilizadores não efetuarem o logout, pensando que
simplesmente fecharem as páginas é suficiente para sair do site. O problema é que hoje
em dia, alguns browsers, ao reabrirem as páginas, onde não foi efetuado o logout, vão
abrir as páginas com o login efetuado e caso isso aconteça em locais públicos pode estar
alguém a ter acesso à página de outra pessoa e até fazer-se passar por ela. Para resolver
esta questão, os utilizadores nunca se devem esquecer de fazer o logout, principalmente
em locais públicos. Na Figura 45 está uma imagem ilustrativa ao login e ao logout.
Figura 45: Imagem ilustrativa de um exemplo de botões do Login e do Lougout
75
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
6.3. Base de Dados
6.3.1. Modelo Racional
Neste capítulo será apresentado o Modelo Entidade Relacionamento (ER) da
aplicação web para o concurso do Robô Bombeiro.
Foi através do modelo fisico representado pela Figura 46 que foi implementada a
Base de Dados da aplicação. A descrição dos atributos das tabelas pode ser observado
com mais pormenor na análise de requisitos, na secção semântica de classes, no tópico
4.7.
Figura 46: Modelo Físico da Base de Dados da aplicação
76
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
6.4. Solução
Neste ponto vão ser apresentados alguns dos módulos criados para a aplicação,
quais as suas funcionalidades e como são estruturados.
6.4.1. MasterPage
As master pages permitem o desenvolvimento de várias páginas com o mesmo
layout. Uma master page pode ser vista pode ser vista como uma página “especial” que,
que define o layout genérico de todas as páginas que usam essa master. A master pode
definir vários espaços reservados que serão “preenchidos” por controlos introduzidos
pelas páginas ASPX finais.
Os controlos colocados fora das zonas reservadas não podem ser alterados nas
páginas finais, portanto, todos os controlos definidos fora das zonas reservadas
constituem o template genérico apresentado por todas as páginas que utilizam essa
master.
As master pages são representadas por ficheiros de extensão .master e podem
conter vários tipos de elementos, na prática, podem conter práticamente todos os
controlos normalmente usados numa página ASPX. A master permite ainda aa utilização
do controlo (ContentPlaceHolder) responsável por introduzir uma zona reservada, cujo o
conteudo será personalizado pelas páginas finais.
Para se fazer a associação de uma master page a uma página, basta colocar o
atributo MasterPageFile, no cimo da página, que permite indicar o caminho até ao
ficheiro master que queremos aplicar à nosssa página.
O excerto seguinte ilustra um exemplo dessa associação numa das páginas do
projeto presente:
<%@ Language="C#" MasterPageFile="~/DefaultAll.master" %>
77
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
Na Figura 47 pode-se verificar a estrutura da master page que foi utilizada na
maioria das páginas, é constituída: no cimo da página por um menu para o utilizador
aceder ás páginas correspondentes; no fundo da página encontra-se um rodapé e no meio
da página encontra-se o ContentPlaceHolder, que é o exemplo mais simples do projeto,
este é a área reservada para colocar os controlos das páginas finais, ou seja, a área onde
vai ser colocada toda a informação e operações que se podem realizar na aplicação.
A estrutura final de página aqui representada, não corresponde na realidade à
estrutura de todas as páginas, pois diferentes páginas têm diferentes controlos, umas
podem ter mais ou menos controlos que outras. No entanto, a estrutura utilizada nas
restantes páginas seguem o mesmo princípio, uma GridView para o utilizador ver os
dados (por exemplo ver as edições do concurso), uma FormView que aparece depois que
o utilizador seleciona uma linha na GridView, apresenta, os dados detalhados da linha que
selecionou e pôr fim aos botões “Adicionar”, “Apagar” e “Editar” para fazer as operações
correspondentes.
78
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
Figura 47: Estrutura da Master Page e das páginas finais
79
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
6.4.2. Página Gerir as Minhas Equipas
Ao entrar na página “Gerir as Minhas Equipas”, Figura 48, é possivel verem-se as
equipas do utilizador que está logado. Para tornar isso possivel foi utilizado o controlo
GridView onde é possivel visualizar uma lista com as equipas do utilizador, se existirem
mais de dez equipas a GridView passa a ter paginação. É possivel ordenar a informação
de dados, para isso basta clicar no cabeçalho da coluna que se quer ordenar, é possivel
pesquisar uma equipa pelo seu nome, por classe ou pela edição do concurso.
Figura 48: Página Gerir as minhas equipas
80
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
Para visualizar os dados detalhados de uma equipa, basta clicar na seta que aparece
em cada linha da GridView para visualizar os dados da equipa correspondente, ao
selecionar uma equipa aparece uma FormView com os dados da mesma, Figura 49, para
esconder esses dados, basta clicar no cabeçalho do painel que diz “Dados da Equipa”.
Figura 49: FormView Dados da Equipa
81
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
Para editar uma equipa é preciso primeiro selecionar uma equipa na GridView e
depois clicar no botão “Editar Equipa”, sendo que todos os elementos da página
desaparecem ficando só disponivel o formulário para editar a equipa, como se pode ver
na Figura 50, é posssivel sempre que o utilizador o desejar cancelar a opereção.
Figura 50: Formulário Editar Equipa
82
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
Para apagar uma equipa, tambem, é necessário selecionar uma equipa na
GridView e depois clicar no botão “Apagar Equipa”, vai apareceu um painel com um
aviso, Figura 51, que ao apagar uma equipa os participantes dessa serão, também,
removidos, o utilizador pode então confirmar ou cancelar a opereção.
Figura 51: Aviso Apagar Equipa
Ao selecionar uma equipa, é mostrado no final da página uma GridView com os
membros dessa equipa, Figura 52, também é possivel ver uma label que mostra o total de
membros que a equipa tem.
Figura 52: GridView Participantes
83
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
Como se pode verificar na Figura 53, para adicionar membros a uma equipa é
necessário clica no botão “Adicionar Membro” , ao clicar nesse botão só fica visivel na
página a GridView dos Membros e fica disponivel uma DropDownList com o nome dos
participantes a adicionar, a qualquer momento o utilizador pode cancelar a operação
clicando no botao “Cancelar”. No caso de se confirmar a operação o sistema envia
automaticamente um e-mail para o participante adicionado com um link para que o
mesmo posssa aprovar a sua entrada na equipa.
Figura 53: Formulário Adicionar Membro
Para remover membros da equipa basta selecionar o membro que se quer remover
e depois clicar no botão “Remover Membro”, um painel de aviso aparece na página para
o utilizador confirmar ou cancelar a operação, como mostra a
Figura 54.
Figura 54: Aviso Remover Elemento
84
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
6.4.3. Página Editar Dados Pessoais
A o entrar na página “Editar Dados Pessoais”, Figura 55, o participante pode
visualizar uma FormView como os seus dados pessoais e com a informação (data e hora)
do último login realizado no sistema, mais abaixo, pode ver-se um painel com a
informação da data e a hora da última vez que o participante mudou a password (se nunca
mudou aparece a dizer que nunca foi mudada) e um botão para proceder á alteração da
password para aceder ao sistema.
Figura 55: Página Editar Dados Pessoais
85
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
Para editar os dados é preciso clicar no botão “Editar Dados Pessoais”, logo de
seguida a FormView desaparece e aparece um formulário com os dados para se proceder
à alteração. Depois da alteração dos dados que se pretende, basta clicar no botão
“Guardar” que o sistema efetue as alteraçoes na base de dados, sendo possível, sempre
que o utilizador desejar, cancelar a operação clicando no botão “Cancelar”.
Se o
utilizador confirmar ou cancelar a operação a página volta a mostrar a FormView com os
dados do participante.
Na Figura 56 é apresentado o formulário para editar os dados pessoais.
Figura 56: Formulário Editar Dados Pessoais
86
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
Se o participante desejar alterar a password é necessário clicar no botão
“Recuperar Passwor”, todos os elementos da página que estavam disponíveis
desaparecem e aparece um formulário para o utilizador modificar a sua password, em
qualquer momento o utilizador pode cancelar a opreação clicando no botão “Cancelar”
ou confirmar a operação depois do formulário preenchido clicando no botao “Confirmar”
Na Figura 57 pode visualizar-se o formulário para recuperar a password.
Figura 57: Formulário Alterar Password
6.4.4. Página Dashboard
A página que se pode observar na Figura 58, é única e exclusivamente do
administrador, é um género de “painel de controlo” para o administrador é onde ele tem
acesso ao módulos para gerir toda a informação da aplicação. É possivel verificar-se nesta
página o número de total de participantes, equipas, edições, apoios, entidades, tipos de
entidades e classes. Esses valores são atualizados sempre que o administrador fizer
refresh à página. É posssivel, também, observarem-se nessa página gráficos estatísticos,
como por exemplo, o número de equipas por edição no concurso e a percentagem de
rapazes e raparigas que participam no concurso. A página apresentada é denominada por
Dashboard.
87
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
Figura 58: Página Dashboard
6.4.5. Página Gerir Apoios
A página de gerir os apoios pertence ao administrador, nela, ele pode adicionar ou
remover os apoios/patrocínios que fazem parte de cada edição do concurso do Robô
Bombeiro, para adicionar um apoio é preciso clicar no botão adicionar, depois basta
selecionar o apoio que se quer adicionar e confirma-se clicando no botão “Guardar”.
Para remover um apoio basta selecionar o apoio na GridView e depois clicar no
botão “Remover Apoio”, vai aparecer um painel com um aviso para o utilizador confirmar
ou cancelar a ação.
Na figura Figura 59 pode-se verificar a página referente à gestão dos Apoios.
88
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
Figura 59: Página Gerir Apoios
89
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
6.4.6. Página Gerir Classes
A página de gestão de classes que pertence ao administrador, nela, ele pode criar,
editar e apagar classes. Para criar uma classe basta clicar no botão “Criar Classe”, a seguir
o sistema devolve um formulário para o administrador preencher com o nome da classe e
com as observações da mesma, para confirmar basta clicar no botão “Criar”, no caso de
querer cancelar basta a qualquer momento clicar no botão cancelar.
Figura 60: Página Gerir Classes
Para editar uma classe é preciso selecionar a classe na GridView e depois clicar
no botão “Editar Classe”, um formulário vai aparecer com os dados da classe, depois das
90
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
alterações feitas o utilizador confirma clicando no botão “Guardar” sempre que o
utilizador assim o desejar pode cancelar a operação clicando no botão ”Cancelar”.
Para remover uma classe é preciso selecionar respetiva classe na GridView e
depois clicar no botão “Apagar Classe”, de seguida vai aparecer um painel com um aviso
para o utilizador confirmar ou cancelar a ação.
Na Figura 60 pode-se visualizar a página que o administrador utiliza para gerir as
classes das equipas.
6.4.7. Página Gerir Edições
A página de gestão de edições pertence ao administrador, nela, ele pode criar,
editar e apagar as edições do concurso do Robô Bombeiro. Para criar uma edição basta
clicar no botão “Adicionar” que depois o sistema devolve um formulário para o
administrador preencher com os dados da edição, para confirmar basta clicar no botão
“Adicionar”, no caso de querer cancelar basta a qualquer momento clicar no botão
cancelar.
Para editar uma edição é preciso selecionar a edição na GridView e depois clicar
no botão “Editar Edição”, vai aparecer um formulário com os dados da edição, depois das
alterações feitas o utilizador confirma clicando no botão “Guardar” sempre que o
utilizador assim o desejar pode cancelar a operação clicando no botão ”Cancelar”.
Para apagar uma edição é preciso selecionar a edição na GridView e depois clicar
no botão “Apagar Edição”, um painel com um aviso vai aparecer para o utilizador
confirmar ou cancelar a ação.
Pode-se verificar a página de gerir edições na Figura 61.
91
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
Figura 61: Página Gerir Edições
92
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
6.4.8. Página Gerir Entidades
Figura 62: Página Gerir Entidades
93
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
Na página de gestão de entidades, que se encontra na Figura 62, e que pertence ao
administrador, nela, ele pode criar, editar e apagar as entidades que vão ser as elas que
apoiam/patrocinam o concurso do Robô Bombeiro. Para criar uma entidade basta clicar
no botão “Adicionar” que depois o sistema devolve um formulário para o administrador
preencher com os dados da entidade e do contacto que tem na entidade, para confirmar
basta clicar no botão “Adicionar”, no caso de querer cancelar basta a qualquer momento
clicar no botão cancelar.
Para editar uma entidade é necessário selecionar a entidade na GridView e depois
clicar no botão “Editar”, vai aparecer um formulário com os dados da entidade, depois
das alterações feitas o utilizador confirma clicando no botão “Guardar” sempre que o
utilizador o desejar pode cancelar a operação clicando no botão ”Cancelar”.
Para apagar uma entidade é preciso selecionar a entidade na GridView e depois
clicar no botão “Apagar”, um painel com um aviso vai aparecer para o utilizador
confirmar ou cancelar a ação.
6.4.9. Página Gerir Equipas
A página gerir equipas pertence ao administrador, nela, ele pode criar, editar e
apagar equipas do concurso do Robô Bombeiro e também para adicionar e remover
membros às equipas. Para criar uma equipa, basta clicar no botão “Criar Equipa” logo de
seguida o sistema devolve um formulário ao administrador para este preencher, com os
dados da equipa. Para confirmar basta clicar no botão “Criar”, no caso de querer cancelar
basta, a qualquer momento clicar no botão cancelar.
Para editar uma equipa é necessário selecionar a equipa na GridView das equipas
e depois clicar no botão “Editar Equipa”, onde aparece um formulário com os dados da
equipa, depois das alterações feitas o utilizador confirma clicando no botão “Guardar”
sempre que o utilizador o desejar pode cancelar a operação clicando no botão ”Cancelar”.
Para apagar uma equipa é necessário selecionar a equipa na GridView das equipas
e a seguir clicar no botão “Apagar Equipa”, um painel com um aviso de que apagar a
equipa irá remover os membros da mesma, vai aparecer, para o utilizador confirmar ou
cancelar a ação.
Na
94
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
Figura 63 e Figura 64 pode-se ver à página onde o administrador gere as equipas
do concurso.
Figura 63: Página Gerir Equipa (1ª Parte)
95
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
Figura 64: Página Gerir Equipa (2ª Parte)
96
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
O mesmo acontece para adicionar um membro à equipa, é necessário selecionar a
equipa na GridView das equipas e de seguida clicar no botão “Adicionar Membro”, uma
DropDownList vai aparecer com o nome dos membros a adicionar, o utilizador seleciona
um e depois confirma clicando no botão “Guardar”, a qualquer momento o utilizador
pode cancelar a operação.
Para remover um membro é preciso selecionar a equipa na GridView das equipas,
depois selecionar o membro na GridView dos membros das equipas e depois clicar no
botão “Remover Membro”, um painel com um aviso vai aparecer para o utilizador
confirmar ou cancelar a ação.
O administrador pode exportar os dados da GridView das Equipas em PDF ou
Excel, se assim o desejar, para isso basta clicar no botão “Exportar PDF” ou “Exportar
Excel”, respetivamente. O utilizador pode filtrar os dados fazendo uma pesquisa, por
classes, por edição ou por equipa, depois ao exportar os dados, apenas são visualizados
os dados da pesquisa.
Na Figura 65 pode-se observar a exportação dos dados em PDF e na Figura 66 a
exportação para Excel.
Figura 65: Dados das Equipas Exportados em PDF
97
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
Figura 66: Dados das Equipas Exportados em Excel
6.4.10. Página Gerir Participantes
A página de gestão dos participantes pertence, também, ao administrador, nela,
ele pode editar e apagar participantes do concurso do Robô Bombeiro. Para editar uma
equipa é preciso selecionar a equipa na GridView dos participantes e depois clicar no
botão “Editar Participante”, um formulário vai aparecer com os dados do participante,
depois das alterações feitas o utilizador confirma clicando no botão “Guardar” sempre
que o utilizador o desejar pode cancelar a operação clicando no botão ”Cancelar”.
Para apagar um participante é necessário selecionar o participante na GridView
dos participantes e depois clicar no botão “Apagar Participante”, vai aparecer um painel
com um aviso para o utilizador confirmar ou cancelar a ação.
Na Figura 67 e Figura 68 pode-se observar a página on o administrador gere os
participantes.
98
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
Figura 67: Página Gerir Participantes (1ª Parte)
99
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
Figura 68: Página Gerir Participantes (2ª Parte)
O administrador pode exportar os dados da GridView dos participantes em PDF
ou Excel, se assim o desejar, para isso basta clicar no botão “Exportar PDF” ou “Exportar
Excel”, respetivamente. O utilizador pode filtrar os dados fazendo uma pesquisa, por
nome, localidade ou sexo, depois ao exportar os dados, apenas são visualizados os dados
da pesquisa.
100
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
6.4.11. Página Login
A página de login, que se pode verificar na Figura 69, serve para os utilizadores
registados do web site fazerem login para depois poderem aceder ao seus dados e às suas
equipas. Se o utilizador perdeu ou esquceu-se da password é possivel recuperala através
de uma pergunta de segurança.
Figura 69: Página do Login na plataforma da aplicação
6.4.12. Página Confirmar Registo Novo Participante
Esta página é para os participanteas acabados de se registar no sistema,
confirmarem o registo. O novo participante clica no link recebido por e-mail para poder
fazer a confirmação da sua conta no sistema.
O sistema verifica várias condições antes de efetuar a confirmação, verifica se o
url está correto, se o participante a que se quer fazer a confirmação existe na base de
101
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
dados e verifica se a ativação ainda não foi feita. Sempre que uma das condições acima
não se verifiquem, o sistema exibe o erro correspondente, caso todas se verifiquem o
sistema confirma o registo do novo participante, como se pode ver pela Figura 70.
Realizada a confirmação do registo, o participante já pode usar o seu username e
password para fazer login no site.
Figura 70: Confirmação da Nova Conta no Sistema
6.4.13. Página Aprovar Membro Equipa
Esta página é para os participanteas que foram adicionados numa equipa,
aprovarem a sua entrada na mesma. O membro adicionado na equipa clica no link
recebido via e-mail para fazer a sua aprovação/entrada na equipa.
O sistema verifica várias condições antes de efetuar a confirmação, verifica se o
login está feito, se o url está correto, se o id que se vai ativar existe na base de dados, se
o utilizador que está a fazer a ativação é aquele que foi adicionado na equipa e se a
aprovação ainda não tiver sido feita.
Sempre que cada uma das condições acima não se verifiquem, o sistema exibe o erro
correspondente, caso todas se verifiquem o sistema aprova a entrada do participante na
equipa, como se pode ver pela Figura 71.
Figura 71: Aprovação de Entrada na Equipa
102
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
6.5. Testes
Nesta seção serão apresentados, a título ilustrativo, alguns procedimentos de testes
e validações realizadas na aplicação de Software desenvolvida, tendo em vista que todos
os módulos passaram pelo mesmo procedimento de testes.
No módulo (registar novo utilizador) que podemos ver na Figura 72, foram feitos
testes para verificar se o formulário aceitava valores nulos, se o endereço de e-mail
introduzido é válido, se o formato da data é válida, se a aplicação permite registar
utilizadores com o mesmo username, se são aceites nomes com caracteres especiais, se o
NIF aceita valores não numéricos ou se aceita menos ou mais de 9 caracteres e foi também
testado se no final do registo do utilizador o sistema envia um e-mail com o link para
utilizador que acabou de se registar confirmar o seu registo.
103
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
Figura 72: Página Registar Novo Utilizador
No módulo (adicionar membros à equipa), da Figura 73, foi testado se o sistema
deixa introduzir um elemento que já seja membro da equipa e se o sistema no final de
adicionar o membro envia um e-mail com um link para o membro adicionado, se quiser
pertencer aquela equipa, aprovar a sua entrada na equipa.
104
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
Figura 73: Adicionar Membro
No último exemplo pode-se verificar que no módulo (aprovar ser membro de
uma equipa) observado na Figura 74, foi testado se um utilizador que não esteja com o
login efetuado consegue fazer a aprovação, o que acontece se um utilizador malintencionado modificar o conteúdo dos dados que são passados na url, se o utilizador que
está a fazer a aprovação é aquele que realmente foi adicionado na equipa, e foi testado no
casso de a aprovação já tiver sido feita posteriormente se o sistema volta a fazer a
aprovação.
Figura 74: Aviso Aprovar Membro
105
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
7. CONCLUSÃO E TRABALHO FUTURO
7.1. Conclusão
O desenvolvimento da aplicação web apresentada, proporcionou uma ligação
entre os conhecimentos teóricos e práticos adquiridos na licenciatura. Desta forma, foi
possível aprofundar as potencialidades das tecnologias utilizadas.
Os objetivos do projeto foram cumpridos com trabalho e dedicação, conseguindo
superar as dificuldades que surgiram ao longo deste, estando em constante aprendizagem.
A aplicação encontra-se apta para se utilizar já nas inscrições para próxima edição
do concurso, todos os módulos realizados estão funcionais, a aplicação encontra-se
preparada para futuras evoluções.
Em suma, a apreensão inicial, transformou-se numa partilha de conhecimento que
culminou num trabalho enriquecedor, tendo ajudado a vislumbrar os desafios que se
poderão colocar na vida profissional futura.
7.2. Trabalho Futuro
De uma forma geral pode-se afirmar que todas a funcionalidades que pensadas
inicialmente foram implementadas. No entanto, ao longo do desenvolvimento do projeto
foram surgindo novas ideias sobre novas funcionalidades que poderiam ser
implementadas no futuro, tais como: Módulo para gerir os prémios para cada edição do
concurso, módulo de gestão da realização do concurso e um módulo para produção de
páginas web em tempo real com os dados sobre o decorrer do concurso.
106
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
REFERÊNCIAS BIBLIOGRÁFICAS
[1] L. Abreu, ASP.NEt 4.5, Lousã: FCA - Editora de Informática, Lda, 2013.
[2] Microsoft, “Descrição Geral do ASP.NET,” [Online]. Available:
http://technet.microsoft.com/pt-pt/library/cc728044(v=ws.10).aspx. [Acedido em
05 12 2014].
[3] “Microsoft Visual Studio,” [Online]. Available:
http://pt.wikipedia.org/wiki/Microsoft_Visual_Studio. [Acedido em 10 12 2014].
[4] “SQL Server Management Studio,” [Online]. Available:
http://en.wikipedia.org/wiki/SQL_Server_Management_Studio. [Acedido em 10 12
2014].
[5] “PowerDesigner,” [Online]. Available: http://pt.wikipedia.org/wiki/PowerDesigner.
[Acedido em 10 12 2014].
[6] M. Nunes e H. O'Neill, Fundamental de UML, 7ª Edição ed., Lisboa: FCA - Editora
de Informática, Lda, 2004.
[7] H. Loureiro, C# com Visual Studio 2012, Lisboa: FCA - Editora de Informática
Lda, 2013.
[8] Microsoft, “Books Online for SQL Server 2014,” [Online]. Available:
http://technet.microsoft.com/en-us/library/ms130214.aspx. [Acedido em 05 10
2014].
107
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
Anexos
Anexo A – Script de criação da BD .............................................................................110
Anexo B – Script para inserção dos dados na BD .........................................................117
Anexo C – Envio de e-mails automaticamente ............................................................. 139
108
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
Anexo A
109
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
Anexo A – Script de criação da BD
USE master ;
GO
DROP DATABASE RoboBombeiro ;
GO
USE [master]
GO
/****** Object: Database [RoboBombeiro]
Script Date: 07/05/2014 01:05:44 ******/
CREATE DATABASE [RoboBombeiro]
CONTAINMENT = NONE
ON PRIMARY
( NAME = N'RoboBombeiro.mdf', FILENAME =
N'C:\RoboBombeiro\RoboBombeiroIPG\App_Data\RoboBombeiro.mdf' , SIZE = 8256KB , MAXSIZE =
UNLIMITED, FILEGROWTH = 1024KB )
LOG ON
( NAME = N'RoboBombeiro.ldf', FILENAME =
N'C:\RoboBombeiro\RoboBombeiroIPG\App_Data\RoboBombeiro.ldf' , SIZE = 1536KB , MAXSIZE =
2048GB , FILEGROWTH = 10%)
GO
ALTER DATABASE [RoboBombeiro] SET COMPATIBILITY_LEVEL = 110
GO
IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))
begin
EXEC [RoboBombeiro].[dbo].[sp_fulltext_database] @action = 'enable'
end
GO
ALTER DATABASE [RoboBombeiro] SET ANSI_NULL_DEFAULT OFF
GO
ALTER DATABASE [RoboBombeiro] SET ANSI_NULLS OFF
GO
ALTER DATABASE [RoboBombeiro] SET ANSI_PADDING OFF
GO
ALTER DATABASE [RoboBombeiro] SET ANSI_WARNINGS OFF
GO
ALTER DATABASE [RoboBombeiro] SET ARITHABORT OFF
GO
ALTER DATABASE [RoboBombeiro] SET AUTO_CLOSE ON
GO
ALTER DATABASE [RoboBombeiro] SET AUTO_CREATE_STATISTICS ON
GO
ALTER DATABASE [RoboBombeiro] SET AUTO_SHRINK OFF
GO
ALTER DATABASE [RoboBombeiro] SET AUTO_UPDATE_STATISTICS ON
GO
ALTER DATABASE [RoboBombeiro] SET CURSOR_CLOSE_ON_COMMIT OFF
GO
ALTER DATABASE [RoboBombeiro] SET CURSOR_DEFAULT GLOBAL
GO
ALTER DATABASE [RoboBombeiro] SET CONCAT_NULL_YIELDS_NULL OFF
GO
ALTER DATABASE [RoboBombeiro] SET NUMERIC_ROUNDABORT OFF
GO
ALTER DATABASE [RoboBombeiro] SET QUOTED_IDENTIFIER OFF
GO
ALTER DATABASE [RoboBombeiro] SET RECURSIVE_TRIGGERS OFF
GO
ALTER DATABASE [RoboBombeiro] SET DISABLE_BROKER
GO
ALTER DATABASE [RoboBombeiro] SET AUTO_UPDATE_STATISTICS_ASYNC OFF
GO
ALTER DATABASE [RoboBombeiro] SET DATE_CORRELATION_OPTIMIZATION OFF
GO
ALTER DATABASE [RoboBombeiro] SET TRUSTWORTHY OFF
GO
110
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
ALTER DATABASE [RoboBombeiro] SET ALLOW_SNAPSHOT_ISOLATION OFF
GO
ALTER DATABASE [RoboBombeiro] SET PARAMETERIZATION SIMPLE
GO
ALTER DATABASE [RoboBombeiro] SET READ_COMMITTED_SNAPSHOT OFF
GO
ALTER DATABASE [RoboBombeiro] SET HONOR_BROKER_PRIORITY OFF
GO
ALTER DATABASE [RoboBombeiro] SET RECOVERY SIMPLE
GO
ALTER DATABASE [RoboBombeiro] SET MULTI_USER
GO
ALTER DATABASE [RoboBombeiro] SET PAGE_VERIFY CHECKSUM
GO
ALTER DATABASE [RoboBombeiro] SET DB_CHAINING OFF
GO
ALTER DATABASE [RoboBombeiro] SET FILESTREAM( NON_TRANSACTED_ACCESS = OFF )
GO
ALTER DATABASE [RoboBombeiro] SET TARGET_RECOVERY_TIME = 0 SECONDS
GO
USE [RoboBombeiro]
GO
/****** Object: Table [dbo].[Apoio]
Script Date: 07/05/2014 01:05:45 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Apoio](
[IdApoio] [int] IDENTITY(1,1) NOT NULL,
[IdEdicaoFK] [int] NOT NULL,
[IdEntidadeFK] [int] NOT NULL,
CONSTRAINT [PK_Apoio] PRIMARY KEY CLUSTERED
(
[IdApoio] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[Classe]
Script Date: 07/05/2014 01:05:45 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Classe](
[IdClasse] [int] IDENTITY(1,1) NOT NULL,
[NmClasse] [varchar](100) NULL,
[Observacoes] [varchar](500) NULL,
CONSTRAINT [PK_Classe] PRIMARY KEY CLUSTERED
(
[IdClasse] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
/****** Object: Table [dbo].[Edicao]
Script Date: 07/05/2014 01:05:45 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Edicao](
[IdEdicao] [int] IDENTITY(1,1) NOT NULL,
[Data] [date] NOT NULL,
[Edicao] [nchar](10) NOT NULL,
[Morada] [varchar](100) NOT NULL,
[Localidade] [varchar](100) NOT NULL,
111
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
[CodPostal] [char](8) NOT NULL,
[PoterPdf] [varbinary](max) NULL,
[PosterImg] [image] NULL,
CONSTRAINT [PK_Edicao] PRIMARY KEY CLUSTERED
(
[IdEdicao] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
/****** Object: Table [dbo].[Entidade]
Script Date: 07/05/2014 01:05:45 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Entidade](
[IdEntidade] [int] IDENTITY(1,1) NOT NULL,
[IdTipoEntidadeFK] [int] NOT NULL,
[NmEntidade] [varchar](200) NOT NULL,
[Logotipo] [image] NULL,
[Localidade] [varchar](100) NOT NULL,
[Telefone] [numeric](18, 0) NULL,
[Telemovel] [numeric](18, 0) NOT NULL,
[Fax] [numeric](18, 0) NULL,
[Email] [varchar](100) NOT NULL,
[Web] [varchar](100) NOT NULL,
[NmContacto] [varchar](100) NULL,
[CargoContacto] [varchar](50) NULL,
[TelefoneContacto] [numeric](18, 0) NOT NULL,
[TelemovelContacto] [numeric](18, 0) NULL,
[EmailContacto] [varchar](100) NULL,
CONSTRAINT [PK_Entidade] PRIMARY KEY CLUSTERED
(
[IdEntidade] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
/****** Object: Table [dbo].[Equipa]
Script Date: 07/05/2014 01:05:45 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Equipa](
[IdEquipa] [int] IDENTITY(1,1) NOT NULL,
[IdClasseFK] [int] NOT NULL,
[IdEdicaoFK] [int] NOT NULL,
[IdPaisFK] [int] NOT NULL,
[IdParticipanteResponsavelFK] [int] NULL,
[NmEquipa] [varchar](100) NOT NULL,
[Telefone] [numeric](18, 0) NULL,
[Email] [varchar](100) NULL,
[DataIncricao] [date] NULL,
[Instituicao] [varchar](200) NULL,
[Foto] [image] NULL,
CONSTRAINT [PK_Equipa] PRIMARY KEY CLUSTERED
(
[IdEquipa] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
112
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
SET ANSI_PADDING OFF
GO
/****** Object: Table [dbo].[Pais]
Script Date: 07/05/2014 01:05:45 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Pais](
[IdPais] [int] IDENTITY(1,1) NOT NULL,
[iso] [char](2) NOT NULL,
[NmPais] [varchar](80) NOT NULL,
[PrintableNm] [varchar](80) NOT NULL,
[iso3] [char](3) NULL,
[CodPais] [char](3) NULL,
CONSTRAINT [PK_Pais] PRIMARY KEY CLUSTERED
(
[IdPais] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
/****** Object: Table [dbo].[Participante]
Script Date: 07/05/2014 01:05:45 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Participante](
[IdParticipante] [int] IDENTITY(1,1) NOT NULL,
[IdPaisFK] [int] NOT NULL,
[NmParticipante] [varchar](100) NOT NULL,
[Email] [varchar](100) NOT NULL,
[Telefone] [numeric](18, 0) NOT NULL,
[NIF] [numeric](9, 0) NOT NULL,
[NIB] [numeric](21, 0) NOT NULL,
[IBAN] [char](34) NULL,
[SWIFT] [char](11) NULL,
[Morada] [varchar](150) NOT NULL,
[CodPostal] [char](8) NOT NULL,
[Localidade] [varchar](100) NOT NULL,
[Foto] [image] NULL,
[DataNasc] DATE NULL,
[Sexo] CHAR(1) NULL CHECK (Sexo in ('M','F')) ,
[Username_Login] NVARCHAR(50) NULL,
CONSTRAINT [PK_Participante] PRIMARY KEY CLUSTERED
(
[IdParticipante] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
/****** Object: Table [dbo].[ParticipanteEquipa]
Script Date: 07/05/2014 01:05:45
******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[ParticipanteEquipa](
[IdPartiEquipa] [int] IDENTITY(1,1) NOT NULL,
[IdParticipanteFK] [int] NULL,
[IdEquipaFK] [int] NOT NULL,
[Aprovado] [bit] NOT NULL,
CONSTRAINT [PK_ParticipanteEquipa] PRIMARY KEY CLUSTERED
113
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
(
[IdPartiEquipa] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[TipoEntidade]
Script Date: 07/05/2014 01:05:45 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[TipoEntidade](
[IdTipoEntidade] [int] IDENTITY(1,1) NOT NULL,
[NmTipoEntidade] [varchar](100) NOT NULL,
[Descricao] [varchar](400) NULL,
CONSTRAINT [PK_TipoEntidade] PRIMARY KEY CLUSTERED
(
[IdTipoEntidade] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo].[Apoio] WITH CHECK ADD CONSTRAINT [FK_Apoio_Edicao] FOREIGN
KEY([IdEdicaoFK])
REFERENCES [dbo].[Edicao] ([IdEdicao])
GO
ALTER TABLE [dbo].[Apoio] CHECK CONSTRAINT [FK_Apoio_Edicao]
GO
ALTER TABLE [dbo].[Apoio] WITH CHECK ADD CONSTRAINT [FK_Apoio_Entidade] FOREIGN
KEY([IdEntidadeFK])
REFERENCES [dbo].[Entidade] ([IdEntidade])
GO
ALTER TABLE [dbo].[Apoio] CHECK CONSTRAINT [FK_Apoio_Entidade]
GO
ALTER TABLE [dbo].[Entidade] WITH CHECK ADD CONSTRAINT [FK_Entidade_TipoEntidade]
FOREIGN KEY([IdTipoEntidadeFK])
REFERENCES [dbo].[TipoEntidade] ([IdTipoEntidade])
GO
ALTER TABLE [dbo].[Entidade] CHECK CONSTRAINT [FK_Entidade_TipoEntidade]
GO
ALTER TABLE [dbo].[Equipa] WITH CHECK ADD CONSTRAINT [FK_Equipa_Classe] FOREIGN
KEY([IdClasseFK])
REFERENCES [dbo].[Classe] ([IdClasse])
GO
ALTER TABLE [dbo].[Equipa] CHECK CONSTRAINT [FK_Equipa_Classe]
GO
ALTER TABLE [dbo].[Equipa] WITH CHECK ADD CONSTRAINT [FK_Equipa_Edicao] FOREIGN
KEY([IdEdicaoFK])
REFERENCES [dbo].[Edicao] ([IdEdicao])
GO
ALTER TABLE [dbo].[Equipa] CHECK CONSTRAINT [FK_Equipa_Edicao]
GO
ALTER TABLE [dbo].[Equipa] WITH CHECK ADD CONSTRAINT [FK_Equipa_Pais] FOREIGN
KEY([IdPaisFK])
REFERENCES [dbo].[Pais] ([IdPais])
GO
ALTER TABLE [dbo].[Equipa] CHECK CONSTRAINT [FK_Equipa_Pais]
GO
ALTER TABLE [dbo].[Equipa] WITH CHECK ADD CONSTRAINT [FK_Equipa_Participante] FOREIGN
KEY([IdParticipanteResponsavelFK])
REFERENCES [dbo].[Participante] ([IdParticipante])
GO
ALTER TABLE [dbo].[Equipa] CHECK CONSTRAINT [FK_Equipa_Participante]
GO
ALTER TABLE [dbo].[Participante] WITH CHECK ADD CONSTRAINT [FK_Participante_Pais]
FOREIGN KEY([IdPaisFK])
114
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
REFERENCES [dbo].[Pais] ([IdPais])
GO
ALTER TABLE [dbo].[Participante] CHECK CONSTRAINT [FK_Participante_Pais]
GO
ALTER TABLE [dbo].[ParticipanteEquipa] WITH CHECK ADD CONSTRAINT
[FK_ParticipanteEquipa_Equipa] FOREIGN KEY([IdEquipaFK])
REFERENCES [dbo].[Equipa] ([IdEquipa])
GO
ALTER TABLE [dbo].[ParticipanteEquipa] CHECK CONSTRAINT [FK_ParticipanteEquipa_Equipa]
GO
ALTER TABLE [dbo].[ParticipanteEquipa] WITH CHECK ADD CONSTRAINT
[FK_ParticipanteEquipa_Participante] FOREIGN KEY([IdParticipanteFK])
REFERENCES [dbo].[Participante] ([IdParticipante])
GO
ALTER TABLE [dbo].[ParticipanteEquipa] CHECK CONSTRAINT
[FK_ParticipanteEquipa_Participante]
GO
USE [master]
GO
ALTER DATABASE [RoboBombeiro] SET
GO
READ_WRITE
115
Instituto Politécnico da Guarda
Concurso Nacional do Robô Bombeiro
Ruben Ventura (2014)
Anexo B
116
Robô Bombeiro
Anexo B
Anexo B – Script para inserção dos dados na BD
/**************************************************** Paises
*************************************************************/
INSERT INTO Pais VALUES ('AF','AFGHANISTAN','Afghanistan','AFG','004');
INSERT INTO Pais VALUES ('AL','ALBANIA','Albania','ALB','008');
INSERT INTO Pais VALUES ('DZ','ALGERIA','Algeria','DZA','012');
INSERT INTO Pais VALUES ('AS','AMERICAN SAMOA','American Samoa','ASM','016');
INSERT INTO Pais VALUES ('AD','ANDORRA','Andorra','AND','020');
INSERT INTO Pais VALUES ('AO','ANGOLA','Angola','AGO','024');
INSERT INTO Pais VALUES ('AI','ANGUILLA','Anguilla','AIA','660');
INSERT INTO Pais VALUES ('AQ','ANTARCTICA','Antarctica',NULL,NULL);
INSERT INTO Pais VALUES ('AG','ANTIGUA AND BARBUDA','Antigua and Barbuda','ATG','028');
INSERT INTO Pais VALUES ('AR','ARGENTINA','Argentina','ARG','032');
INSERT INTO Pais VALUES ('AM','ARMENIA','Armenia','ARM','051');
INSERT INTO Pais VALUES ('AW','ARUBA','Aruba','ABW','533');
INSERT INTO Pais VALUES ('AU','AUSTRALIA','Australia','AUS','036');
INSERT INTO Pais VALUES ('AT','AUSTRIA','Austria','AUT','040');
INSERT INTO Pais VALUES ('AZ','AZERBAIJAN','Azerbaijan','AZE','031');
INSERT INTO Pais VALUES ('BS','BAHAMAS','Bahamas','BHS','044');
INSERT INTO Pais VALUES ('BH','BAHRAIN','Bahrain','BHR','048');
INSERT INTO Pais VALUES ('BD','BANGLADESH','Bangladesh','BGD','050');
INSERT INTO Pais VALUES ('BB','BARBADOS','Barbados','BRB','052');
INSERT INTO Pais VALUES ('BY','BELARUS','Belarus','BLR','112');
INSERT INTO Pais VALUES ('BE','BELGIUM','Belgium','BEL','056');
INSERT INTO Pais VALUES ('BZ','BELIZE','Belize','BLZ','084');
INSERT INTO Pais VALUES ('BJ','BENIN','Benin','BEN','204');
INSERT INTO Pais VALUES ('BM','BERMUDA','Bermuda','BMU','060');
INSERT INTO Pais VALUES ('BT','BHUTAN','Bhutan','BTN','064');
INSERT INTO Pais VALUES ('BO','BOLIVIA','Bolivia','BOL','068');
INSERT INTO Pais VALUES ('BA','BOSNIA AND HERZEGOVINA','Bosnia and
Herzegovina','BIH','070');
INSERT INTO Pais VALUES ('BW','BOTSWANA','Botswana','BWA','072');
INSERT INTO Pais VALUES ('BV','BOUVET ISLAND','Bouvet Island',NULL,NULL);
INSERT INTO Pais VALUES ('BR','BRAZIL','Brazil','BRA','076');
117
Robô Bombeiro
Anexo B
INSERT INTO Pais VALUES ('IO','BRITISH INDIAN OCEAN TERRITORY','British Indian Ocean
Territory',NULL,NULL);
INSERT INTO Pais VALUES ('BN','BRUNEI DARUSSALAM','Brunei Darussalam','BRN','096');
INSERT INTO Pais VALUES ('BG','BULGARIA','Bulgaria','BGR','100');
INSERT INTO Pais VALUES ('BF','BURKINA FASO','Burkina Faso','BFA','854');
INSERT INTO Pais VALUES ('BI','BURUNDI','Burundi','BDI','108');
INSERT INTO Pais VALUES ('KH','CAMBODIA','Cambodia','KHM','116');
INSERT INTO Pais VALUES ('CM','CAMEROON','Cameroon','CMR','120');
INSERT INTO Pais VALUES ('CA','CANADA','Canada','CAN','124');
INSERT INTO Pais VALUES ('CV','CAPE VERDE','Cape Verde','CPV','132');
INSERT INTO Pais VALUES ('KY','CAYMAN ISLANDS','Cayman Islands','CYM','136');
INSERT INTO Pais VALUES ('CF','CENTRAL AFRICAN REPUBLIC','Central African
Republic','CAF','140');
INSERT INTO Pais VALUES ('TD','CHAD','Chad','TCD','148');
INSERT INTO Pais VALUES ('CL','CHILE','Chile','CHL','152');
INSERT INTO Pais VALUES ('CN','CHINA','China','CHN','156');
INSERT INTO Pais VALUES ('CX','CHRISTMAS ISLAND','Christmas Island',NULL,NULL);
INSERT INTO Pais VALUES ('CC','COCOS (KEELING) ISLANDS','Cocos (Keeling)
Islands',NULL,NULL);
INSERT INTO Pais VALUES ('CO','COLOMBIA','Colombia','COL','170');
INSERT INTO Pais VALUES ('KM','COMOROS','Comoros','COM','174');
INSERT INTO Pais VALUES ('CG','CONGO','Congo','COG','178');
INSERT INTO Pais VALUES ('CD','CONGO, THE DEMOCRATIC REPUBLIC OF THE','Congo, the
Democratic Republic of the','COD','180');
INSERT INTO Pais VALUES ('CK','COOK ISLANDS','Cook Islands','COK','184');
INSERT INTO Pais VALUES ('CR','COSTA RICA','Costa Rica','CRI','188');
INSERT INTO Pais VALUES ('CI','COTE D''IVOIRE','Cote D''Ivoire','CIV','384');
INSERT INTO Pais VALUES ('HR','CROATIA','Croatia','HRV','191');
INSERT INTO Pais VALUES ('c*','CUBA','Cuba','CUB','192');
INSERT INTO Pais VALUES ('CY','CYPRUS','Cyprus','CYP','196');
INSERT INTO Pais VALUES ('CZ','CZECH REPUBLIC','Czech Republic','CZE','203');
INSERT INTO Pais VALUES ('DK','DENMARK','Denmark','DNK','208');
INSERT INTO Pais VALUES ('DJ','DJIBOUTI','Djibouti','DJI','262');
INSERT INTO Pais VALUES ('DM','DOMINICA','Dominica','DMA','212');
INSERT INTO Pais VALUES ('DO','DOMINICAN REPUBLIC','Dominican Republic','DOM','214');
INSERT INTO Pais VALUES ('EC','ECUADOR','Ecuador','ECU','218');
INSERT INTO Pais VALUES ('EG','EGYPT','Egypt','EGY','818');
INSERT INTO Pais VALUES ('SV','EL SALVADOR','El Salvador','SLV','222');
118
Robô Bombeiro
Anexo B
INSERT INTO Pais VALUES ('GQ','EQUATORIAL GUINEA','Equatorial Guinea','GNQ','226');
INSERT INTO Pais VALUES ('ER','ERITREA','Eritrea','ERI','232');
INSERT INTO Pais VALUES ('EE','ESTONIA','Estonia','EST','233');
INSERT INTO Pais VALUES ('ET','ETHIOPIA','Ethiopia','ETH','231');
INSERT INTO Pais VALUES ('FK','FALKLAND ISLANDS (MALVINAS)','Falkland Islands
(Malvinas)','FLK','238');
INSERT INTO Pais VALUES ('FO','FAROE ISLANDS','Faroe Islands','FRO','234');
INSERT INTO Pais VALUES ('FJ','FIJI','Fiji','FJI','242');
INSERT INTO Pais VALUES ('FI','FINLAND','Finland','FIN','246');
INSERT INTO Pais VALUES ('FR','FRANCE','France','FRA','250');
INSERT INTO Pais VALUES ('GF','FRENCH GUIANA','French Guiana','GUF','254');
INSERT INTO Pais VALUES ('PF','FRENCH POLYNESIA','French Polynesia','PYF','258');
INSERT INTO Pais VALUES ('TF','FRENCH SOUTHERN TERRITORIES','French Southern
Territories',NULL,NULL);
INSERT INTO Pais VALUES ('GA','GABON','Gabon','GAB','266');
INSERT INTO Pais VALUES ('GM','GAMBIA','Gambia','GMB','270');
INSERT INTO Pais VALUES ('GE','GEORGIA','Georgia','GEO','268');
INSERT INTO Pais VALUES ('DE','GERMANY','Germany','DEU','276');
INSERT INTO Pais VALUES ('GH','GHANA','Ghana','GHA','288');
INSERT INTO Pais VALUES ('GI','GIBRALTAR','Gibraltar','GIB','292');
INSERT INTO Pais VALUES ('GR','GREECE','Greece','GRC','300');
INSERT INTO Pais VALUES ('GL','GREENLAND','Greenland','GRL','304');
INSERT INTO Pais VALUES ('GD','GRENADA','Grenada','GRD','308');
INSERT INTO Pais VALUES ('GP','GUADELOUPE','Guadeloupe','GLP','312');
INSERT INTO Pais VALUES ('GU','GUAM','Guam','GUM','316');
INSERT INTO Pais VALUES ('GT','GUATEMALA','Guatemala','GTM','320');
INSERT INTO Pais VALUES ('GN','GUINEA','Guinea','GIN','324');
INSERT INTO Pais VALUES ('GW','GUINEA-BISSAU','Guinea-Bissau','GNB','624');
INSERT INTO Pais VALUES ('GY','GUYANA','Guyana','GUY','328');
INSERT INTO Pais VALUES ('HT','HAITI','Haiti','HTI','332');
INSERT INTO Pais VALUES ('HM','HEARD ISLAND AND MCDONALD ISLANDS','Heard Island and
Mcdonald Islands',NULL,NULL);
INSERT INTO Pais VALUES ('VA','HOLY SEE (VATICAN CITY STATE)','Holy See (Vatican City
State)','VAT','336');
INSERT INTO Pais VALUES ('HN','HONDURAS','Honduras','HND','340');
INSERT INTO Pais VALUES ('HK','HONG KONG','Hong Kong','HKG','344');
INSERT INTO Pais VALUES ('HU','HUNGARY','Hungary','HUN','348');
INSERT INTO Pais VALUES ('IS','ICELAND','Iceland','ISL','352');
119
Robô Bombeiro
Anexo B
INSERT INTO Pais VALUES ('IN','INDIA','India','IND','356');
INSERT INTO Pais VALUES ('ID','INDONESIA','Indonesia','IDN','360');
INSERT INTO Pais VALUES ('IR','IRAN, ISLAMIC REPUBLIC OF','Iran, Islamic Republic
of','IRN','364');
INSERT INTO Pais VALUES ('IQ','IRAQ','Iraq','IRQ','368');
INSERT INTO Pais VALUES ('IE','IRELAND','Ireland','IRL','372');
INSERT INTO Pais VALUES ('IL','ISRAEL','Israel','ISR','376');
INSERT INTO Pais VALUES ('IT','ITALY','Italy','ITA','380');
INSERT INTO Pais VALUES ('JM','JAMAICA','Jamaica','JAM','388');
INSERT INTO Pais VALUES ('JP','JAPAN','Japan','JPN','392');
INSERT INTO Pais VALUES ('JO','JORDAN','Jordan','JOR','400');
INSERT INTO Pais VALUES ('KZ','KAZAKHSTAN','Kazakhstan','KAZ','398');
INSERT INTO Pais VALUES ('KE','KENYA','Kenya','KEN','404');
INSERT INTO Pais VALUES ('KI','KIRIBATI','Kiribati','KIR','296');
INSERT INTO Pais VALUES ('KP','KOREA, DEMOCRATIC PEOPLE''S REPUBLIC OF','Korea,
Democratic People''s Republic of','PRK','408');
INSERT INTO Pais VALUES ('KR','KOREA, REPUBLIC OF','Korea, Republic of','KOR','410');
INSERT INTO Pais VALUES ('KW','KUWAIT','Kuwait','KWT','414');
INSERT INTO Pais VALUES ('KG','KYRGYZSTAN','Kyrgyzstan','KGZ','417');
INSERT INTO Pais VALUES ('LA','LAO PEOPLE''S DEMOCRATIC REPUBLIC','Lao People''s
Democratic Republic','LAO','418');
INSERT INTO Pais VALUES ('LV','LATVIA','Latvia','LVA','428');
INSERT INTO Pais VALUES ('LB','LEBANON','Lebanon','LBN','422');
INSERT INTO Pais VALUES ('LS','LESOTHO','Lesotho','LSO','426');
INSERT INTO Pais VALUES ('LR','LIBERIA','Liberia','LBR','430');
INSERT INTO Pais VALUES ('LY','LIBYAN ARAB JAMAHIRIYA','Libyan Arab
Jamahiriya','LBY','434');
INSERT INTO Pais VALUES ('LI','LIECHTENSTEIN','Liechtenstein','LIE','438');
INSERT INTO Pais VALUES ('LT','LITHUANIA','Lithuania','LTU','440');
INSERT INTO Pais VALUES ('LU','LUXEMBOURG','Luxembourg','LUX','442');
INSERT INTO Pais VALUES ('MO','MACAO','Macao','MAC','446');
INSERT INTO Pais VALUES ('MK','MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF','Macedonia,
the Former Yugoslav Republic of','MKD','807');
INSERT INTO Pais VALUES ('MG','MADAGASCAR','Madagascar','MDG','450');
INSERT INTO Pais VALUES ('MW','MALAWI','Malawi','MWI','454');
INSERT INTO Pais VALUES ('MY','MALAYSIA','Malaysia','MYS','458');
INSERT INTO Pais VALUES ('MV','MALDIVES','Maldives','MDV','462');
INSERT INTO Pais VALUES ('ML','MALI','Mali','MLI','466');
120
Robô Bombeiro
Anexo B
INSERT INTO Pais VALUES ('MT','MALTA','Malta','MLT','470');
INSERT INTO Pais VALUES ('MH','MARSHALL ISLANDS','Marshall Islands','MHL','584');
INSERT INTO Pais VALUES ('MQ','MARTINIQUE','Martinique','MTQ','474');
INSERT INTO Pais VALUES ('MR','MAURITANIA','Mauritania','MRT','478');
INSERT INTO Pais VALUES ('MU','MAURITIUS','Mauritius','MUS','480');
INSERT INTO Pais VALUES ('YT','MAYOTTE','Mayotte',NULL,NULL);
INSERT INTO Pais VALUES ('MX','MEXICO','Mexico','MEX','484');
INSERT INTO Pais VALUES ('FM','MICRONESIA, FEDERATED STATES OF','Micronesia, Federated
States of','FSM','583');
INSERT INTO Pais VALUES ('MD','MOLDOVA, REPUBLIC OF','Moldova, Republic
of','MDA','498');
INSERT INTO Pais VALUES ('MC','MONACO','Monaco','MCO','492');
INSERT INTO Pais VALUES ('MN','MONGOLIA','Mongolia','MNG','496');
INSERT INTO Pais VALUES ('MS','MONTSERRAT','Montserrat','MSR','500');
INSERT INTO Pais VALUES ('MA','MOROCCO','Morocco','MAR','504');
INSERT INTO Pais VALUES ('MZ','MOZAMBIQUE','Mozambique','MOZ','508');
INSERT INTO Pais VALUES ('MM','MYANMAR','Myanmar','MMR','104');
INSERT INTO Pais VALUES ('NA','NAMIBIA','Namibia','NAM','516');
INSERT INTO Pais VALUES ('NR','NAURU','Nauru','NRU','520');
INSERT INTO Pais VALUES ('NP','NEPAL','Nepal','NPL','524');
INSERT INTO Pais VALUES ('NL','NETHERLANDS','Netherlands','NLD','528');
INSERT INTO Pais VALUES ('AN','NETHERLANDS ANTILLES','Netherlands
Antilles','ANT','530');
INSERT INTO Pais VALUES ('NC','NEW CALEDONIA','New Caledonia','NCL','540');
INSERT INTO Pais VALUES ('NZ','NEW ZEALAND','New Zealand','NZL','554');
INSERT INTO Pais VALUES ('NI','NICARAGUA','Nicaragua','NIC','558');
INSERT INTO Pais VALUES ('NE','NIGER','Niger','NER','562');
INSERT INTO Pais VALUES ('NG','NIGERIA','Nigeria','NGA','566');
INSERT INTO Pais VALUES ('NU','NIUE','Niue','NIU','570');
INSERT INTO Pais VALUES ('NF','NORFOLK ISLAND','Norfolk Island','NFK','574');
INSERT INTO Pais VALUES ('MP','NORTHERN MARIANA ISLANDS','Northern Mariana
Islands','MNP','580');
INSERT INTO Pais VALUES ('NO','NORWAY','Norway','NOR','578');
INSERT INTO Pais VALUES ('OM','OMAN','Oman','OMN','512');
INSERT INTO Pais VALUES ('PK','PAKISTAN','Pakistan','PAK','586');
INSERT INTO Pais VALUES ('PW','PALAU','Palau','PLW','585');
INSERT INTO Pais VALUES ('PS','PALESTINIAN TERRITORY, OCCUPIED','Palestinian Territory,
Occupied',NULL,NULL);
INSERT INTO Pais VALUES ('PA','PANAMA','Panama','PAN','591');
121
Robô Bombeiro
Anexo B
INSERT INTO Pais VALUES ('PG','PAPUA NEW GUINEA','Papua New Guinea','PNG','598');
INSERT INTO Pais VALUES ('PY','PARAGUAY','Paraguay','PRY','600');
INSERT INTO Pais VALUES ('PE','PERU','Peru','PER','604');
INSERT INTO Pais VALUES ('PH','PHILIPPINES','Philippines','PHL','608');
INSERT INTO Pais VALUES ('PN','PITCAIRN','Pitcairn','PCN','612');
INSERT INTO Pais VALUES ('PL','POLAND','Poland','POL','616');
INSERT INTO Pais VALUES ('PT','PORTUGAL','Portugal','PRT','620');
INSERT INTO Pais VALUES ('PR','PUERTO RICO','Puerto Rico','PRI','630');
INSERT INTO Pais VALUES ('QA','QATAR','Qatar','QAT','634');
INSERT INTO Pais VALUES ('RE','REUNION','Reunion','REU','638');
INSERT INTO Pais VALUES ('RO','ROMANIA','Romania','ROM','642');
INSERT INTO Pais VALUES ('RU','RUSSIAN FEDERATION','Russian Federation','RUS','643');
INSERT INTO Pais VALUES ('RW','RWANDA','Rwanda','RWA','646');
INSERT INTO Pais VALUES ('SH','SAINT HELENA','Saint Helena','SHN','654');
INSERT INTO Pais VALUES ('KN','SAINT KITTS AND NEVIS','Saint Kitts and
Nevis','KNA','659');
INSERT INTO Pais VALUES ('LC','SAINT LUCIA','Saint Lucia','LCA','662');
INSERT INTO Pais VALUES ('PM','SAINT PIERRE AND MIQUELON','Saint Pierre and
Miquelon','SPM','666');
INSERT INTO Pais VALUES ('VC','SAINT VINCENT AND THE GRENADINES','Saint Vincent and the
Grenadines','VCT','670');
INSERT INTO Pais VALUES ('WS','SAMOA','Samoa','WSM','882');
INSERT INTO Pais VALUES ('SM','SAN MARINO','San Marino','SMR','674');
INSERT INTO Pais VALUES ('ST','SAO TOME AND PRINCIPE','Sao Tome and
Principe','STP','678');
INSERT INTO Pais VALUES ('SA','SAUDI ARABIA','Saudi Arabia','SAU','682');
INSERT INTO Pais VALUES ('SN','SENEGAL','Senegal','SEN','686');
INSERT INTO Pais VALUES ('CS','SERBIA AND MONTENEGRO','Serbia and
Montenegro',NULL,NULL);
INSERT INTO Pais VALUES ('SC','SEYCHELLES','Seychelles','SYC','690');
INSERT INTO Pais VALUES ('SL','SIERRA LEONE','Sierra Leone','SLE','694');
INSERT INTO Pais VALUES ('SG','SINGAPORE','Singapore','SGP','702');
INSERT INTO Pais VALUES ('SK','SLOVAKIA','Slovakia','SVK','703');
INSERT INTO Pais VALUES ('SI','SLOVENIA','Slovenia','SVN','705');
INSERT INTO Pais VALUES ('SB','SOLOMON ISLANDS','Solomon Islands','SLB','090');
INSERT INTO Pais VALUES ('SO','SOMALIA','Somalia','SOM','706');
INSERT INTO Pais VALUES ('ZA','SOUTH AFRICA','South Africa','ZAF','710');
INSERT INTO Pais VALUES ('GS','SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS','South
Georgia and the South Sandwich Islands',NULL,NULL);
122
Robô Bombeiro
Anexo B
INSERT INTO Pais VALUES ('ES','SPAIN','Spain','ESP','724');
INSERT INTO Pais VALUES ('LK','SRI LANKA','Sri Lanka','LKA','144');
INSERT INTO Pais VALUES ('SD','SUDAN','Sudan','SDN','736');
INSERT INTO Pais VALUES ('SR','SURINAME','Suriname','SUR','740');
INSERT INTO Pais VALUES ('SJ','SVALBARD AND JAN MAYEN','Svalbard and Jan
Mayen','SJM','744');
INSERT INTO Pais VALUES ('SZ','SWAZILAND','Swaziland','SWZ','748');
INSERT INTO Pais VALUES ('SE','SWEDEN','Sweden','SWE','752');
INSERT INTO Pais VALUES ('CH','SWITZERLAND','Switzerland','CHE','756');
INSERT INTO Pais VALUES ('SY','SYRIAN ARAB REPUBLIC','Syrian Arab
Republic','SYR','760');
INSERT INTO Pais VALUES ('TW','TAIWAN, PROVINCE OF CHINA','Taiwan, Province of
China','TWN','158');
INSERT INTO Pais VALUES ('TJ','TAJIKISTAN','Tajikistan','TJK','762');
INSERT INTO Pais VALUES ('TZ','TANZANIA, UNITED REPUBLIC OF','Tanzania, United Republic
of','TZA','834');
INSERT INTO Pais VALUES ('TH','THAILAND','Thailand','THA','764');
INSERT INTO Pais VALUES ('TL','TIMOR-LESTE','Timor-Leste',NULL,NULL);
INSERT INTO Pais VALUES ('TG','TOGO','Togo','TGO','768');
INSERT INTO Pais VALUES ('TK','TOKELAU','Tokelau','TKL','772');
INSERT INTO Pais VALUES ('TO','TONGA','Tonga','TON','776');
INSERT INTO Pais VALUES ('TT','TRINIDAD AND TOBAGO','Trinidad and Tobago','TTO','780');
INSERT INTO Pais VALUES ('TN','TUNISIA','Tunisia','TUN','788');
INSERT INTO Pais VALUES ('TR','TURKEY','Turkey','TUR','792');
INSERT INTO Pais VALUES ('TM','TURKMENISTAN','Turkmenistan','TKM','795');
INSERT INTO Pais VALUES ('TC','TURKS AND CAICOS ISLANDS','Turks and Caicos
Islands','TCA','796');
INSERT INTO Pais VALUES ('TV','TUVALU','Tuvalu','TUV','798');
INSERT INTO Pais VALUES ('UG','UGANDA','Uganda','UGA','800');
INSERT INTO Pais VALUES ('UA','UKRAINE','Ukraine','UKR','804');
INSERT INTO Pais VALUES ('AE','UNITED ARAB EMIRATES','United Arab
Emirates','ARE','784');
INSERT INTO Pais VALUES ('GB','UNITED KINGDOM','United Kingdom','GBR','826');
INSERT INTO Pais VALUES ('US','UNITED STATES','United States','USA','840');
INSERT INTO Pais VALUES ('UM','UNITED STATES MINOR OUTLYING ISLANDS','United States
Minor Outlying Islands',NULL,NULL);
INSERT INTO Pais VALUES ('UY','URUGUAY','Uruguay','URY','858');
INSERT INTO Pais VALUES ('UZ','UZBEKISTAN','Uzbekistan','UZB','860');
INSERT INTO Pais VALUES ('VU','VANUATU','Vanuatu','VUT','548');
123
Robô Bombeiro
Anexo B
INSERT INTO Pais VALUES ('VE','VENEZUELA','Venezuela','VEN','862');
INSERT INTO Pais VALUES ('VN','VIET NAM','Viet Nam','VNM','704');
INSERT INTO Pais VALUES ('VG','VIRGIN ISLANDS, BRITISH','Virgin Islands,
British','VGB','092');
INSERT INTO Pais VALUES ('VI','VIRGIN ISLANDS, U.S.','Virgin Islands,
U.s.','VIR','850');
INSERT INTO Pais VALUES ('WF','WALLIS AND FUTUNA','Wallis and Futuna','WLF','876');
INSERT INTO Pais VALUES ('EH','WESTERN SAHARA','Western Sahara','ESH','732');
INSERT INTO Pais VALUES ('YE','YEMEN','Yemen','YEM','887');
INSERT INTO Pais VALUES ('ZM','ZAMBIA','Zambia','ZMB','894');
INSERT INTO Pais VALUES ('ZW','ZIMBABWE','Zimbabwe','ZWE','716');
/****************************************************
Participante*****************************************************/
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Carlos
Almeida','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-235','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Gon硬o
Machado','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-236','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Diogo
Gomes','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-237','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Jos頍essias Monteiro
Fernandes','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-238','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Hugo Ant� Alexandre
Gomes','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-239','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Fᢩo Fernandes
Lopes','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-240','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Jo㯠Costa
','[email protected]',965588991,123456789,123456789123456000000,'A minha Morada','3600241','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png', SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Andr頓
ilva','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-242','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
124
Robô Bombeiro
Anexo B
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Jo㯠Bal㯧
,'[email protected]',965588991,123456789,123456789123456000000,'A minha Morada','3600243','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png', SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Luis Bal㯧
,'[email protected]',965588991,123456789,123456789123456000000,'A minha Morada','3600244','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png', SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Artur
Lee','[email protected]',965588991,123456789,123456789123456000000,'A minha Morada','3600245','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png', SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Sofia
Costa','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-246','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Marina
Dias','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-247','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Alberto da Concei磯
Cardoso','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-248','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Fᢩo Ribeiro
Bento','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-249','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Rui Jorge Gaspar
Santos','[email protected]',965588991,123456789,123456789123456000000,'A minha Morada','3600250','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png', SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Bruno Jo㯠Cascavel
Geraldes','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-251','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Bruno Alfredo da Silva
Alves','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-252','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Miguel Oliveira
Santos','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-253','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Alfeu Garcia Magalh㥳
','[email protected]',965588991,123456789,123456789123456000000,'A minha Morada','3600254','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png', SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
125
Robô Bombeiro
Anexo B
dade],[Foto]) VALUES (172,'Jo㯠Fonseca
Cordeiro','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-255','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Jo㯠Pinto
Botelho','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-256','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Miguel Pinto de
Almeida','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-257','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Paulo Fran硧
,'[email protected]',965588991,123456789,123456789123456000000,'A minha Morada','3600258','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png', SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Gustavo
Rua','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-259','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Miguel Elias
Oliveira','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-260','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Ana Beatriz
Oliveira','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-261','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Maria Goretti Santos Nabais
Caldeira','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-262','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Miguel Nunes
Seabra','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-263','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Anita Nunes
Morgado','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-264','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Andreia Pinto
Botelho','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-265','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Carlos Alberto Rodrigues de
Amorim','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-266','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
126
Robô Bombeiro
Anexo B
dade],[Foto]) VALUES (172,'Richard Jos頔avares
Rodrigues','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-267','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'S鲧io Alexandre Ferreira de
Carvalho','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-268','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Luis Miguel Casal Ribeiro Magalh㥳
','[email protected]',965588991,123456789,123456789123456000000,'A minha Morada','3600269','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png', SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Carlos Miguel Moreira
Costa','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-270','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Filipe Gra硠
Sousa','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-271','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Tiago Andr頤e Sousa
Matos','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-272','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'H鬤er Ricardo Gon硬ves
Vieira','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-273','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Orlando Filipe Guedes Pereira da
Silva','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-274','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Pedro Miguel da Silva
Dantas','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-275','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'M�io Jos頌opes dos
Reis','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-276','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Tom�Jos頄ias
Moreno','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-277','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Tiago
Manel','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-278','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
127
Robô Bombeiro
Anexo B
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Jo㯠Cristov㯧
,'[email protected]',965588991,123456789,123456789123456000000,'A minha Morada','3600279','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png', SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Guilherme
Filipe','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-280','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Vitor
Coelho','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-281','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Professor Jos頃
arvalho','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-282','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Daniel
Mendes','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-283','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Marcelo Ferr㯧
,'[email protected]',965588991,123456789,123456789123456000000,'A minha Morada','3600284','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png', SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Bruna
Fonseca','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-285','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'M�ia
Bernardino','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-286','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Nuno
Cruz','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-287','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Cristiana
Gabriel','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-288','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'LuRafael dos Santos
Afonso','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-289','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'LuCarlos Mendes
Rodrigues','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-290','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
128
Robô Bombeiro
Anexo B
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Andr順ilipe
Henriques','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-291','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Joel Pais
Martins','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-292','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Flᶩo Miguel Oliveira
Antunes','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-293','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Jos頤os Santos Bidarra
Barbosa','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-294','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Ricardo
Mendes','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-295','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Jorge Manuel
Baptista','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-296','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Cunal
Maugi','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-297','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Igor
Pereira','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-298','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Paulo Jorge Nogueira Torcato
(professor)','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-299','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Gon硬o Miguel Trindade
Quintino','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-300','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Guilherme Ant� Trindade
Quintino','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-301','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'M�o LuDias
Fernandes','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-302','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
129
Robô Bombeiro
Anexo B
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Paulo S鲧io da Fonseca
Jorge','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-303','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Jo㯠Gaspar
Ramomes','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-304','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Gon硬o Alves
Baptista','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-305','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Jo㯠
Delgado','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-306','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Eduardo
Dias','[email protected]',965588991,123456789,123456789123456000000,'A minha Morada','3600307','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png', SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Miguel
Almeida','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-308','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Luis
Soares','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-309','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Tiago
Branco','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-310','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Pedro
Soares','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-311','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Bruno Jos頏liveira
Almeida','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-312','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Bruno Rafael Cruz
Oliveira','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-313','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Pedro Daniel Tomas de
Almeida','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-314','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
130
Robô Bombeiro
Anexo B
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Carlos Miguel Boto
Figueiredo','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-315','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Vitor S鲧io Fernandes de
Jesus','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-316','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Daniel Gon硬ves da
Fonseca','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-317','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Manuel Ant� Monteiro
Pinto','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-318','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Micael Jorge Pires
Martins','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-319','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Nuno Miguel Alves
Teixeira','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-320','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Tiago
Fernandes','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-321','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Clᵤia Ferreira
Morgado','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-322','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Felisberto
Costa','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-323','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Elson
Lopes','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-324','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Tiago
Silva','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-325','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Bruno
Gomes','[email protected]',965588991,123456789,123456789123456000000,'A minha
131
Robô Bombeiro
Anexo B
Morada','3600-326','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Ricardo
Ferreira','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-327','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Carlos
Duque','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-328','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Vasco
Costa','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-329','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Adriano
Fernandes','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-330','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Carlos Alberto Matias
Martins','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-331','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Tiago Docilio
Caldeira','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-332','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Tiago
Caldeira','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-333','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Clᵤia
Carvalho','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-334','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Paulo Roberto Rodrigues Fran硧
,'[email protected]',965588991,123456789,123456789123456000000,'A minha Morada','3600335','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png', SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Diana Margarida Rodrigues Fran硧
,'[email protected]',965588991,123456789,123456789123456000000,'A minha Morada','3600336','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png', SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Helena Raquel de Jesus da Mota Leit㯧
,'[email protected]',965588991,123456789,123456789123456000000,'A minha Morada','3600337','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png', SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Manuel
Carneiro','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-338','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
132
Robô Bombeiro
Anexo B
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Michael
Fritschi','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-339','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Ahmad Al
Nabulsi','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-340','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Fahad Al
Shaibani','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-341','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Ana Paula
SimFerreira','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-342','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Francisco Miguel Gon硬ves
Martinho','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-343','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Clᵤia Filipa da Costa
Amaral','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-344','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Andr頓
antos','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-345','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Ant� Louren篧
,'[email protected]',965588991,123456789,123456789123456000000,'A minha Morada','3600346','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png', SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Paulo
Lopes','[email protected]',965588991,123456789,123456789123456000000,'A minha Morada','3600347','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png', SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Mafalda
Zquete','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-348','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Andr頚
quete','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-349','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Jos頍anuel
Torres','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-350','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
133
Robô Bombeiro
Anexo B
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Andr頃
arvalho','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-351','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Rui Silva
Moreira','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-352','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Helder
Ventura','[email protected]',965588991,123456789,123456789123456000000,'A minha
Morada','3600-353','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png',
SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Monica
Alves','[email protected]',965588991,123456789,123456789123456000000,'A minha Morada','3600354','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png', SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Participante]
([IdPaisFK],[NmParticipante],[Email],[Telefone],[NIF],[NIB],[Morada],[CodPostal],[Locali
dade],[Foto]) VALUES (172,'Johnny
Lopes','[email protected]',965588991,123456789,123456789123456000000,'A minha Morada','3600355','Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\User.png', SINGLE_BLOB) AS A));
/**************************************************** Classe
*****************************************************/
INSERT INTO [dbo].[Classe] ([NmClasse],[Observacoes])
Grades');
INSERT INTO [dbo].[Classe] ([NmClasse],[Observacoes])
('Standard','College/Polytechnic/University and other
INSERT INTO [dbo].[Classe] ([NmClasse],[Observacoes])
VALUES ('Senior','High-School
VALUES
adults');
VALUES ('Walking','Any age');
/**************************************************** Edicao
*****************************************************/
INSERT INTO [dbo].[Edicao]
([Data],[Edicao],[Morada],[Localidade],[CodPostal],[PoterPdf],[PosterImg]) VALUES
('2013-07-06',11,'Pavilh㯠de S㯠Miguel','6300-235','Guarda',(SELECT * FROM
OPENROWSET(BULK 'C:\Img\ed11.pdf', SINGLE_BLOB) AS A),(SELECT * FROM OPENROWSET(BULK
'C:\Img\ed11.png', SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Edicao]
([Data],[Edicao],[Morada],[Localidade],[CodPostal],[PoterPdf],[PosterImg]) VALUES
('2014-07-05',12,'Pavilh㯠de S㯠Miguel','6300-236','Guarda',(SELECT * FROM
OPENROWSET(BULK 'C:\Img\ed12.pdf', SINGLE_BLOB) AS A),(SELECT * FROM OPENROWSET(BULK
'C:\Img\ed12.png', SINGLE_BLOB) AS A));
/**************************************************** Equipa
*****************************************************/
INSERT INTO [dbo].[Equipa]
([IdClasseFK],[IdEdicaoFK],[IdPaisFK],[IdParticipanteResponsavelFK],[NmEquipa],[Telefone
],[Email],[DataIncricao],[Instituicao],[Foto]) VALUES (2,1,172,1,'ESDD
Flydinis',910845334,'[email protected]','2013-02-02','Agrupamento de Escola D.
Dinis',(SELECT * FROM OPENROWSET(BULK 'C:\Img\team.png', SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Equipa]
([IdClasseFK],[IdEdicaoFK],[IdPaisFK],[IdParticipanteResponsavelFK],[NmEquipa],[Telefone
],[Email],[DataIncricao],[Instituicao],[Foto]) VALUES (2,1,172,4,'Matrakilho
XIII',271227004,'[email protected]','2013-03-03','Agrupamento de Escolas da S頭
Guarda',(SELECT * FROM OPENROWSET(BULK 'C:\Img\team.png', SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Equipa]
([IdClasseFK],[IdEdicaoFK],[IdPaisFK],[IdParticipanteResponsavelFK],[NmEquipa],[Telefone
134
Robô Bombeiro
Anexo B
],[Email],[DataIncricao],[Instituicao],[Foto]) VALUES (2,1,172,7,'E硂ot
I',965017555,'[email protected]','2013-03-04','Agrupamento de Escolas de E硠de
Queir�/span>,(SELECT * FROM OPENROWSET(BULK 'C:\Img\team.png', SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Equipa]
([IdClasseFK],[IdEdicaoFK],[IdPaisFK],[IdParticipanteResponsavelFK],[NmEquipa],[Telefone
],[Email],[DataIncricao],[Instituicao],[Foto]) VALUES (1,1,172,10,'E硂ot
II',965017555,'[email protected]','2013-03-05','Agrupamento de Escolas de E硠de
Queir�/span>,(SELECT * FROM OPENROWSET(BULK 'C:\Img\team.png', SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Equipa]
([IdClasseFK],[IdEdicaoFK],[IdPaisFK],[IdParticipanteResponsavelFK],[NmEquipa],[Telefone
],[Email],[DataIncricao],[Instituicao],[Foto]) VALUES (2,1,172,14,'Os Ma硲
icos',244848250,'[email protected]','2013-03-06','Agupamento de Escolas Domingos
Sequeira',(SELECT * FROM OPENROWSET(BULK 'C:\Img\team.png', SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Equipa]
([IdClasseFK],[IdEdicaoFK],[IdPaisFK],[IdParticipanteResponsavelFK],[NmEquipa],[Telefone
],[Email],[DataIncricao],[Instituicao],[Foto]) VALUES (2,2,172,17,'RX1',255661350,'[email protected]','2014-03-07','Agupamento de Escolas Domingos
Sequeira',(SELECT * FROM OPENROWSET(BULK 'C:\Img\team.png', SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Equipa]
([IdClasseFK],[IdEdicaoFK],[IdPaisFK],[IdParticipanteResponsavelFK],[NmEquipa],[Telefone
],[Email],[DataIncricao],[Instituicao],[Foto]) VALUES (3,2,172,20,'ADoT Matos e
Prata',256661350,'[email protected]','2014-03-08','Associa磯 Desenvolver o
Talento',(SELECT * FROM OPENROWSET(BULK 'C:\Img\team.png', SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Equipa]
([IdClasseFK],[IdEdicaoFK],[IdPaisFK],[IdParticipanteResponsavelFK],[NmEquipa],[Telefone
],[Email],[DataIncricao],[Instituicao],[Foto]) VALUES (2,2,172,24,'ADoT Cr餩to
Agrla',257661350,'[email protected]','2014-03-09','Associa磯 Desenvolver o
Talento',(SELECT * FROM OPENROWSET(BULK 'C:\Img\team.png', SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Equipa]
([IdClasseFK],[IdEdicaoFK],[IdPaisFK],[IdParticipanteResponsavelFK],[NmEquipa],[Telefone
],[Email],[DataIncricao],[Instituicao],[Foto]) VALUES (3,2,172,28,'ADoT Centro
Estudos',258661350,'[email protected]','2014-03-10','Associa磯 Desenvolver o
Talento',(SELECT * FROM OPENROWSET(BULK 'C:\Img\team.png', SINGLE_BLOB) AS A));
INSERT INTO [dbo].[Equipa]
([IdClasseFK],[IdEdicaoFK],[IdPaisFK],[IdParticipanteResponsavelFK],[NmEquipa],[Telefone
],[Email],[DataIncricao],[Instituicao],[Foto]) VALUES
(1,2,172,32,'PiJ',259661350,'[email protected]','2014-03-11','CENFIM - Ncleo de
Oliveira de Azem驳',(SELECT * FROM OPENROWSET(BULK 'C:\Img\team.png', SINGLE_BLOB) AS
A));
/********************************************** PaerticipanteEquipa
*****************************************************/
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
ParticipanteEquipa
ParticipanteEquipa
ParticipanteEquipa
ParticipanteEquipa
ParticipanteEquipa
ParticipanteEquipa
ParticipanteEquipa
ParticipanteEquipa
ParticipanteEquipa
ParticipanteEquipa
ParticipanteEquipa
ParticipanteEquipa
ParticipanteEquipa
ParticipanteEquipa
ParticipanteEquipa
ParticipanteEquipa
ParticipanteEquipa
ParticipanteEquipa
ParticipanteEquipa
ParticipanteEquipa
ParticipanteEquipa
ParticipanteEquipa
ParticipanteEquipa
ParticipanteEquipa
ParticipanteEquipa
ParticipanteEquipa
ParticipanteEquipa
([IdParticipanteFK],[IdEquipaFK])
([IdParticipanteFK],[IdEquipaFK])
([IdParticipanteFK],[IdEquipaFK])
([IdParticipanteFK],[IdEquipaFK])
([IdParticipanteFK],[IdEquipaFK])
([IdParticipanteFK],[IdEquipaFK])
([IdParticipanteFK],[IdEquipaFK])
([IdParticipanteFK],[IdEquipaFK])
([IdParticipanteFK],[IdEquipaFK])
([IdParticipanteFK],[IdEquipaFK])
([IdParticipanteFK],[IdEquipaFK])
([IdParticipanteFK],[IdEquipaFK])
([IdParticipanteFK],[IdEquipaFK])
([IdParticipanteFK],[IdEquipaFK])
([IdParticipanteFK],[IdEquipaFK])
([IdParticipanteFK],[IdEquipaFK])
([IdParticipanteFK],[IdEquipaFK])
([IdParticipanteFK],[IdEquipaFK])
([IdParticipanteFK],[IdEquipaFK])
([IdParticipanteFK],[IdEquipaFK])
([IdParticipanteFK],[IdEquipaFK])
([IdParticipanteFK],[IdEquipaFK])
([IdParticipanteFK],[IdEquipaFK])
([IdParticipanteFK],[IdEquipaFK])
([IdParticipanteFK],[IdEquipaFK])
([IdParticipanteFK],[IdEquipaFK])
([IdParticipanteFK],[IdEquipaFK])
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
(1,1);
(2,1);
(3,1);
(4,2);
(5,2);
(6,2);
(7,3);
(8,3);
(9,3);
(10,4);
(11,4);
(12,4);
(13,4);
(14,5);
(15,5);
(16,5);
(17,6);
(18,6);
(19,6);
(20,7);
(21,7);
(22,7);
(23,7);
(24,8);
(25,8);
(26,8);
(27,8);
135
Robô Bombeiro
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INTO
INTO
INTO
INTO
INTO
INTO
INTO
ParticipanteEquipa
ParticipanteEquipa
ParticipanteEquipa
ParticipanteEquipa
ParticipanteEquipa
ParticipanteEquipa
ParticipanteEquipa
Anexo B
([IdParticipanteFK],[IdEquipaFK])
([IdParticipanteFK],[IdEquipaFK])
([IdParticipanteFK],[IdEquipaFK])
([IdParticipanteFK],[IdEquipaFK])
([IdParticipanteFK],[IdEquipaFK])
([IdParticipanteFK],[IdEquipaFK])
([IdParticipanteFK],[IdEquipaFK])
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
(28,9);
(29,9);
(30,9);
(31,9);
(32,10);
(33,10);
(34,10);
/**************************************************** TipoEntidade
*****************************************************/
INSERT INTO [dbo].[TipoEntidade] ([NmTipoEntidade],[Descricao]) VALUES ('Sociedade
Comercial','As sociedades comerciais s㯠a estrutura tca da empresas nas economias de
mercado, embora a empresa possa revestir outras formas jurcas.
Nos termos do art. 1 CSC, as sociedades comerciais t�necessariamente por objecto a prᴩca
de actos de com鲣io e as sociedades que tenham por objecto a prᴩca de actos de com鲣io
devem revestir um dos tipos previstos no C�o.');
INSERT INTO [dbo].[TipoEntidade] ([NmTipoEntidade],[Descricao]) VALUES
('Cooperativa','As cooperativas s㯠pessoas colectivas aut�as sem fins lucrativos, de
livre constitui磯, com capital e composi磯 variᶥl, que visam a satisfa磯 das necessidades
e aspira絥s econ�as, sociais ou culturais dos seus membros');
INSERT INTO [dbo].[TipoEntidade] ([NmTipoEntidade],[Descricao]) VALUES ('Entidade Pblica
Empresaria','Uma entidade pblica empresarial (EPE) 頵ma pessoa coletiva de direito
pblico, com natureza empresarial, criada pelo Estado, mas que 頡dministrada por uma
empresa terceira indicada por aquele.');
INSERT INTO [dbo].[TipoEntidade] ([NmTipoEntidade],[Descricao]) VALUES ('Estado','O
estado refere-se ao conjunto de institui絥s que regulam e de apoio que t�soberania ao
longo de um territ� definido e popula磯');
INSERT INTO [dbo].[TipoEntidade] ([NmTipoEntidade],[Descricao]) VALUES ('Instituto
Pblico','Um instituto pblico (IP) ou instituto de direito pblico constitui um tipo de
organismo que integra a administra磯 indireta do Estado ou das regiaut�as.');
INSERT INTO [dbo].[TipoEntidade] ([NmTipoEntidade],[Descricao]) VALUES ('Associa磯','Uma
associa磯 頵ma organiza磯 resultante da reuni㯠legal entre duas ou mais pessoas, com ou
sem personalidade jurca, sem fins lucrativos para a realiza磯 de um objetivo comum.');
INSERT INTO [dbo].[TipoEntidade] ([NmTipoEntidade],[Descricao]) VALUES ('Funda磯','Uma
funda磯, 頣onsiderado um fundo auto, que tem por finalidade uma a磯, definida nos seus
estatutos. De forma geral, 頵ma institui磯 caracterizada como pessoa jurca composta pela
organiza磯 de um patrimmas que n㯠tem propriet�o, nem titular, nem s�s');
INSERT INTO [dbo].[TipoEntidade] ([NmTipoEntidade],[Descricao]) VALUES
('Autarquias','Uma autarquia 頵ma entidade auta, auxiliar e descetralizada da
administra磯 pblica, por魠fiscalizada e tuecrãda pelo Estado, com patrim formado com
recursos pr�os, cuja finalidade 頥xecutar servi篳 que interessam a coletividade ou de
natureza estatal. ');
/**************************************************** Entidade
*****************************************************/
INSERT INTO [dbo].[Entidade]
([IdTipoEntidadeFK],[NmEntidade],[Logotipo],[Localidade],[Telefone],[Telemovel],[Fax],[E
mail],[Web],[NmContacto],[CargoContacto],[TelefoneContacto],[TelemovelContacto],[EmailCo
ntacto]) VALUES (1,'ERA',(SELECT * FROM OPENROWSET(BULK 'C:\Img\era.jpg', SINGLE_BLOB)
AS A),'Guarda',213600150,967489548,213600159,'[email protected]','http://www.era.pt/','Rui
Era','Diretor Comercial',213600154,967489578,'[email protected]');
INSERT INTO [dbo].[Entidade]
([IdTipoEntidadeFK],[NmEntidade],[Logotipo],[Localidade],[Telefone],[Telemovel],[Fax],[E
mail],[Web],[NmContacto],[CargoContacto],[TelefoneContacto],[TelemovelContacto],[EmailCo
ntacto]) VALUES (1,'FCA',(SELECT * FROM OPENROWSET(BULK 'C:\Img\fca.jpg', SINGLE_BLOB)
AS A),'Lisboa',213511448,962289548,213173259,'[email protected]','http://www.fca.pt/','Artur
Santos','Diretor Comercial',213173254,967484478,'[email protected]');
INSERT INTO [dbo].[Entidade]
([IdTipoEntidadeFK],[NmEntidade],[Logotipo],[Localidade],[Telefone],[Telemovel],[Fax],[E
mail],[Web],[NmContacto],[CargoContacto],[TelefoneContacto],[TelemovelContacto],[EmailCo
ntacto]) VALUES (8,'C�ra Municipal da Guarda',(SELECT * FROM OPENROWSET(BULK
'C:\Img\cmg.jpg', SINGLE_BLOB) AS A),'Guarda',271220200,968889548,271220280,'[email protected]','http://www.mun-guarda.pt/','Micael Saraiva','Vice
Presidente',271220255,967489998,'[email protected]');
INSERT INTO [dbo].[Entidade]
([IdTipoEntidadeFK],[NmEntidade],[Logotipo],[Localidade],[Telefone],[Telemovel],[Fax],[E
mail],[Web],[NmContacto],[CargoContacto],[TelefoneContacto],[TelemovelContacto],[EmailCo
136
Robô Bombeiro
Anexo B
ntacto]) VALUES (6,'Bombeiros Guarda',(SELECT * FROM OPENROWSET(BULK
'C:\Img\bombeiros.jpg', SINGLE_BLOB) AS
A),'Guarda',271220000,939289548,271223529,'[email protected]','http://www.bombeiros-guarda.com/','Manuel
Madeira','Comandante',271222112,961189998,'[email protected]');
INSERT INTO [dbo].[Entidade]
([IdTipoEntidadeFK],[NmEntidade],[Logotipo],[Localidade],[Telefone],[Telemovel],[Fax],[E
mail],[Web],[NmContacto],[CargoContacto],[TelefoneContacto],[TelemovelContacto],[EmailCo
ntacto]) VALUES (1,'Mcdonalds',(SELECT * FROM OPENROWSET(BULK 'C:\Img\mac.jpg',
SINGLE_BLOB) AS
A),'Guarda',214475300,918989548,214405400,'[email protected]','http://www.mcdon
alds.pt/','Pedro Alberto','Diretor Comercial',214405300,961127998,'[email protected]');
/**************************************************** Apoio
*****************************************************/
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
[dbo].[Apoio]
[dbo].[Apoio]
[dbo].[Apoio]
[dbo].[Apoio]
[dbo].[Apoio]
[dbo].[Apoio]
[dbo].[Apoio]
[dbo].[Apoio]
[dbo].[Apoio]
([IdEdicaoFK],[IdEntidadeFK])
([IdEdicaoFK],[IdEntidadeFK])
([IdEdicaoFK],[IdEntidadeFK])
([IdEdicaoFK],[IdEntidadeFK])
([IdEdicaoFK],[IdEntidadeFK])
([IdEdicaoFK],[IdEntidadeFK])
([IdEdicaoFK],[IdEntidadeFK])
([IdEdicaoFK],[IdEntidadeFK])
([IdEdicaoFK],[IdEntidadeFK])
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
(1,1);
(1,2);
(1,3);
(1,4);
(2,1);
(2,2);
(2,3);
(2,4);
(2,5);
137
Robô Bombeiro
Anexo B
Anexo C
138
Robô Bombeiro
Anexo B
Anexo C – Envio de e-mails automaticamente
Primeiro é preciso alterar o ficheiro web.config do projeto e adicionar a configuração para a
aplicação conseguir enviar e-mails. O seguinte excerto mostra essa configuração:
<mailSettings>
<smtp>
<network host="smtp.gmail.com" password="*****" port="587"
userName="[email protected]" enableSsl="true" defaultCredentials="false"/>
</smtp>
</mailSettings>
O excerto seguinte mostra o envo de um e-mail quando um participante é adicionado numa equipa
para ele depois proceder à aprovação.
// ********************* Eviar email com link para a aprovação de membro na equipa
****************************************
MailMessage message = new MailMessage();
message.From = new MailAddress("[email protected]");
message.To.Add(new MailAddress(email));
message.Subject = "Novo Membro de Equipa";
message.Body = "Olá, " + nomeMembro + ",\n\nÉ nescessária a sua aprovação! \nO
Utilizador: " + responsavel + ", Adicionu-o na Equipa: " + equipaNovoMembro + "\nSe for do seu
interesse ser membro da equipa mencionada por favor click no seguinte link: \n" +
"http://localhost:1376/Participante/AtivacaoMembroE.aspx?Token=" + identityToken + "\nNo caso de
nao querer ser membro da equipa mencionada, por favor ignore este email.\n\nObrigado";
SmtpClient mail = new SmtpClient();
try
{
mail.Send(message);
}
catch
{
LabelErro.Text = "O email mão pode ser enviado. Por favor tente novamente.";
}
// ********************* FIM Eviar email com link para a aprovação de membro na
equipa ****************************************
A Figura 75 mostra o e-mail enviado quando um membro é adicionado a uma equipa .
Figura 75: Output E-mail Novo Membro
139
Download

Ver/Abrir - Biblioteca Digital do IPG