Instituto Politécnico da Guarda
Escola Superior de Tecnologia e Gestão
Plataforma de anúncios online, Anuncie aqui já
Daniel Teixeira Gêgo - No 1009988Projeto Aplicado no Curso
de Engenharia Informática em contexto de estágio
Instituto Politécnico da Guarda
Escola Superior de Tecnologia e Gestão
Plataforma de anúncios online, Anuncie aqui já
Daniel Teixeira Gêgo - No 1009988Projeto Aplicado no Curso
de Engenharia Informática em contexto de estágio
Supervisor: André Filipe Barata - Gerente - DotFlow Solutions, Lda
Orientador: Mestre Paulo Jorge Costa Nunes, Professor Adjunto da
Unidade Técnico-Cientíca de Informática da ESTG.
Agradecimentos
O desenvolvimento deste projeto, em contexto de estágio, foi me facilitado devido à ajuda de alguns intervenientes aos quais gostaria de deixar aqui o meu agradeci-mento.
Em primeiro lugar, como não poderia deixar de ser, quero deixar um agradecimento a todos os familiares e amigos que sempre me incentivaram ao longo de todo o projeto.
Um agradecimento à Diretora da Escola Superior de Tecnologia e Gestão, Professora Doutora Maria Clara Silveira por todo o seu apoio e disponibilidade.
Um agradecimento aos professores da Unidade Curricular do Projeto de Informática, Professor Paulo Nunes (Orientador do projeto), e ao Professor Noel Lopes.
Um agradecimento ao supervisor do projeto, Gerente da empresa DotFlow Solutions, Lda, André Filipe Barata, o qual sempre se mostrou disponível para qualquer assunto relacionado com o projeto.
Por m, um agradecimento muito especial à minha namorada, pelo apoio e paciência que sempre demonstrou.
Resumo
Este documento descreve o trabalho realizado no âmbito da Unidade Curricular Pro-jeto de Informática, na Licenciatura em Engenharia Informática da Escola Superior de Tecnologia e Gestão do Instituto Politécnico da Guarda.
Devido à evolução tecnológica e à necessidade de vender ou comprar produtos em segunda mão, cada vez mais as pessoas procuram vários produtos ou serviços na Internet e para isso é necessário criar uma plataforma que facilite a procura ou a publicação dos anúncios a esses utilizadores.
O projeto consistiu em desenvolver uma aplicação em que os utilizadores podem inserir anúncios e visualizar os anúncios inseridos por outros utilizadores, sendo estas as principais funcionalidades da aplicação.
Foi ainda desenvolvida a parte de gestão da aplicação, onde os moderadores podem, por exemplo, validar os anúncios e responder a mensagens. Os administradores podem, por exemplo, inserir novos funcionários e ver os anúncios conrmados. As ferramentas usadas no desenvolvimento do projeto foi o Microsof Visual Studio e o Microsoft Sql Server Management Studio. As principais tecnologias utilizadas foram: ASP.NET, C# e o SQL SERVER.
Palavras Chave
Abstract
This document describes the work done under the discipline Projeto de Informática in the graduation in Engenharia Informática from Escola Superior de Tecnologia e Gestão in the Instituto Politécnico da Guarda.
Due to technological developments and need to sell or buy second-hand products, increasingly people are looking for various products or services on the Internet and to do it is necessary create a platform that facilitates the search or your advertisements to those users.
The project was to develop an application that users can insert advertisements and view inserted advertisements by other users, which are the main features of the application.
It was developed too a management application area where moderators may, for example, validate the advertisements and reply to messages. The Administrators can, for example, insert new employees and see the advertisements conrmed. The tools used in the development of the project was Microsof Visual Studio and Mi-crosoft Sql Server Management Studio. The main technologies used were: ASP.NET, C# and SQL SERVER.
Key words
Conteúdo
1 Introdução 13 1.1 Instituição de acolhimento . . . 14 1.2 Motivação . . . 14 1.3 Solução . . . 15 1.4 Contribuição . . . 15 1.5 Estrutura do documento . . . 16 2 Estado da arte 17 2.1 Portugal Anúncios classicados grátis OLX . . . 172.2 Anúncios grátis Coisas . . . 19
2.3 Custo Justo Portugal . . . 21
2.4 Imovirtual . . . 23
2.5 Standvirtual . . . 23
2.6 Comparação das aplicações existentes da área . . . 23
3 Metodologia e resultados esperados 25 3.1 Metodologia . . . 25
3.2 Descrição das tarefas . . . 26
3.3 Resultados esperados . . . 27 4 Tecnologias utilizadas 28 4.1 Introdução . . . 28 4.2 Tecnologias web . . . 28 4.2.1 HTML . . . 28 4.2.2 CSS . . . 29 4.2.3 Javascript . . . 30 4.2.4 ASP.NET . . . 30 4.2.5 C# . . . 31 4.2.6 Microsoft SQL SERVER . . . 32 4.2.7 Linq to Entities . . . 32 4.3 Software utilizado . . . 32
4.3.1 Microsoft Visual Studio 2010 . . . 32
4.3.2 SQL Server Management Studio . . . 33
5 Implementação da solução 34 5.1 Introdução . . . 34
5.2 A importância do login e do logout . . . 35 4
5.3 Base de dados Anúncios . . . 35 5.3.1 Modelo Relacional . . . 35 5.3.2 Dicionário de dados . . . 40 5.3.2.1 Anuncios . . . 40 5.3.2.2 Anuncios_Veiculos . . . 40 5.3.2.3 Anuncios_Imoveis . . . 41 5.3.2.4 Anuncios_Animais . . . 41 5.3.2.5 Anuncios_Empregos . . . 42 5.3.2.6 Utilizadores . . . 42 5.3.2.7 Moderadores . . . 43 5.3.2.8 Distritos . . . 43 5.3.2.9 Concelhos . . . 43 5.3.2.10 Freguesias . . . 44 5.3.2.11 SubCategorias . . . 44 5.3.2.12 Categorias . . . 44 5.3.2.13 TiposAnuncio . . . 45 5.3.2.14 CatTip . . . 45 5.3.2.15 Mensagens . . . 45
5.4 Aplicação ASP.NET em três camadas . . . 46
5.5 FrontOce . . . 47 5.5.1 Visitante . . . 47 5.5.1.1 Mapa do site . . . 47 5.5.1.2 Home Page . . . 48 5.5.1.3 Registo de utilizadores . . . 52 5.5.2 Utilizador . . . 54 5.5.2.1 Mapa do site . . . 54 5.5.2.2 Home Page . . . 55 5.5.2.3 Inserir anúncio . . . 57 5.5.2.4 Editar anúncio . . . 62 5.5.2.5 Os meus anúncios . . . 65
5.5.2.6 Editar dados pessoais . . . 67
5.5.2.7 Editar password . . . 68 5.5.2.8 Contactar . . . 69 5.6 BackOce . . . 70 5.6.1 Moderadores . . . 70 5.6.1.1 Mapa do site . . . 70 5.6.1.2 Home page . . . 70 5.6.1.3 Validar anúncios . . . 71
5.6.1.4 Retirar/Colocar anúncios em destaque . . . 73
5.6.1.5 Mensagens . . . 73 5.6.2 Administradores . . . 75 5.6.2.1 Mapa do site . . . 75 5.6.2.2 Home page . . . 76 5.6.2.3 Inserir funcionários . . . 76 5.6.2.4 Inserir subcategoria . . . 77 5.6.2.5 Anúncios conrmados . . . 78
5.7 Colocação e divulgação online . . . 78
5.7.1 IIS (Internet Information Services) . . . 78
5.7.2 Registo de domínios . . . 79
5.7.3 Servidor utilizado . . . 79
5.7.4 Divulgação online . . . 79
6 Conclusões e trabalho futuro 80 6.1 Conclusões . . . 80
6.2 Trabalho futuro . . . 80
A Listagem de programas 85 A.1 Enviar email automaticamente . . . 85
A.2 Inserir imagens na pasta . . . 86
B Carregamento cheiros externos 88 B.1 Ficheiro dos distritos . . . 88
B.2 Ficheiro dos concelhos . . . 88
Lista de Figuras
2.1 Página inicial do site de anúncios OLX . . . 18
2.2 Página inicial do site de anúncios Coisas . . . 20
2.3 Página inicial do site de anúncios Custo Justo . . . 22
3.1 Tarefas . . . 26
3.2 Mapa de Gantt . . . 26
4.1 Interface principal do Microsoft Visual Studio 2010. . . 33
4.2 Exemplo de interface do Sql server Management Studio. . . 33
5.1 Arquitetura do projeto. . . 34
5.2 Modelo relacional da base de dados. . . 36
5.3 Diagrama ER normalizado . . . 37
5.4 Tabela mensagens. . . 38
5.5 Base de dados criada por omissão. . . 39
5.6 Representação das três camadas de uma aplicação ASP.NET. . . 46
5.7 Home page (visitantes) . . . 48
5.8 Icons usados . . . 50
5.9 Categorias e subcategorias de anúncios. . . 50
5.10 Página dos Anúncios por Categoria. . . 51
5.11 Página dos Anúncios por Subcategoria. . . 52
5.12 Formulário de registo para os utilizadores. . . 53
5.13 Exemplo de email enviado ao utilizador com os dados. . . 54
5.14 Exemplo de email enviado ao utilizador para conrmação. . . 54
5.15 Home page (utilizadores) . . . 56
5.16 Dados relativos à categoria e tipo de anúncio . . . 57
5.17 Dados relativos à localização do anúncio . . . 58
5.18 Dados gerais de um anúncio . . . 59
5.19 Dados gerais de um anúncio de emprego . . . 59
5.20 Dados especícos para apartamentos . . . 60
5.21 Selecionar anúncio para destaque . . . 60
5.22 Dados para colocar o anúncio em destaque . . . 61
5.23 Selecionar imagens para o anúncio . . . 61
5.24 Inserir imagens . . . 62
5.25 Selecionar anúncio a editar . . . 63
5.26 Editar anúncio selecionado . . . 64
5.27 Editar anúncio selecionado (emprego) . . . 65
5.28 Os meus anúncios . . . 66 7
5.29 Detalhes de um anúncio . . . 67
5.30 Editar dados pessoais . . . 68
5.31 Editar password . . . 69
5.32 Formulário para contactar a administração . . . 69
5.33 Home page (moderadores) . . . 71
5.34 Anúncios pendentes . . . 71
5.35 Validar anúncio selecionado . . . 72
5.36 Ver anúncios em destaque e destacar outro . . . 73
5.37 Selecionar mensagem a responder . . . 74
5.38 Responder à mensagem selecionada . . . 75
5.39 Home page (administradores) . . . 76
5.40 Formulário para inserir funcionários . . . 77
5.41 Inserir subcategorias . . . 78
5.42 Anúncio conrmado . . . 78
B.1 Distritos. . . 88
B.2 Concelhos. . . 89
Lista de Tabelas
2.1 Comparação entre os vários sites . . . 24
5.1 Estrutura da tabela Anuncios . . . 40
5.2 Estrutura da tabela Anuncios_Veiculos . . . 41
5.3 Estrutura da tabela Anuncios_Imoveis . . . 41
5.4 Estrutura da tabela Anuncios_Animais . . . 42
5.5 Estrutura da tabela Anuncios_Empregos . . . 42
5.6 Estrutura da tabela Utilizadores . . . 43
5.7 Estrutura da tabela Moderadores . . . 43
5.8 Estrutura da tabela Distritos . . . 43
5.9 Estrutura da tabela Concelhos . . . 44
5.10 Estrutura da tabela Freguesias . . . 44
5.11 Estrutura da tabela SubCategorias . . . 44
5.12 Estrutura da tabela Categorias . . . 45
5.13 Estrutura da tabela TiposAnuncio . . . 45
5.14 Estrutura da tabela CatTip . . . 45
5.15 Estrutura da tabela Mensagens . . . 46
Lista de Códigos Fonte
1 Exemplo de código HTML. . . 29
2 Exemplo de código CSS. . . 29
3 Exemplo de código Javascript. . . 30
4 Exemplo de código ASP.NET . . . 31
5 Exemplo de código C#. . . 31
6 Exemplo de query, Linq to Entities. . . 32
7 Exemplo para colocar os anúncios em destaque. . . 49
8 Exemplo para mostrar os vários icons no destaque. . . 49
9 Exemplo para redirecionar para a página de anúncios por categoria. . 51
10 Exemplo para redirecionar para os anúncios por subcategoria. . . 52
11 Exemplo para carregar a dropdownlist tipos de anúncio. . . 57
12 Query que retorna os tipos de anúncio da uma dada categoria. . . 58
13 Exemplo de função que insere na tabela anúncios. . . 62
14 Inserir o cargo para um funcionário. . . 77
Glossário
ASP.NET Active Server Pages é a plataforma da Microsoft para o desenvolvi-mento de aplicações Web e é o sucessor da tecnologia ASP.
Base de dados Conjunto de dados estruturados e relacionados entre si.
CSS Cascading Style Sheets é uma linguagem de estilo utilizada para denir a apresentação de documentos escritos numa linguagem de marcação, como HTML. C# É uma linguagem de programação orientada a objetos, desenvolvida pela Microsoft como parte da plataforma .NET.
EDMX Modelo que permite aceder à base de dados, SQL SERVER, usando Linq to Entities.
FCCN Fundação para a Computação Cientíca Nacional é a entidade responsável pela gestão, registo e manutenção de domínios em Portugal.
FK Foreign Key é a chave estrangeira de uma tabela da base de dados, ou seja, é chave primária noutra tabela.
HTML Hyper Text Markup Language, é uma linguagem de marcação para pro-dução de páginas Web.
HTTP Hipertext Transfer Protocol (Protocolo de Transferência de Hipertexto) é um protocolo de comunicação.
IP Internet Protocol (Protocolo de internet).
ISS Internet Information Services, é um servidor web criado pela Microsoft, para ser usado com os seus sistemas operativos.
JavaScript É uma linguagem de script e atualmente é a principal linguagem para programação do lado do cliente em navegadores web.
LINQ Language Integrated Query, é um componente .NET que adiciona funci-onalidades de consulta nalgumas linguagens de programação.
Linq to Entities É uma implementação especíca do LINQ e ajuda no acesso e na manipulação de uma base de dados relacional.
PK Primary Key é a chave primária de uma tabela da base de dados.
Servidor Web Um programa de computador responsável por aceitar pedidos HTTP de clientes, geralmente os navegadores, e servi-los com respostas HTTP, in-cluindo opcionalmente dados, que geralmente são páginas web, tais como documentos HTML com objetos embutidos.
12 Site Um website ou site é um conjunto de páginas web, isto é, de hipertextos acessíveis geralmente pelo protocolo HTTP na internet.
SQL SERVER É um SGBD (Sistema de Gestão de Base de Dados) criado pela Microsoft e Sysbase que permite interação com os dados através da linguagem SQL. Unicode Padrão que permite aos computadores representar e manipular, de forma consistente, texto de qualquer sistema de escrita existente.
WWW World Wide Web é um sistema de documentação em todos os formatos (textos, imagens, vídeos) que são interligados e executados na internet.
W3C World Wide Web Consortium é um consórcio internacional que visa desen-volver padrões para a criação e interpretação de conteúdos para a Web.
Capítulo 1
Introdução
O presente relatório descreve o projeto em contexto de estágio desenvolvido pelo aluno Daniel Teixeira Gêgo, na empresa DotFlow Solutions, Lda, no âmbito da Uni-dade Curricular Projeto de Informática, na Licenciatura em Engenharia Informática da Escola Superior de Tecnologia e Gestão do Instituto Politécnico da Guarda. O conceito de Internet surgiu na década de 1960 e desde então, até aos dias de hoje, esteve sempre em constante evolução. Em 1969 ocorreu a transmissão de dados, o que pode ser considerado o primeiro E-mail da história a ser enviado e recebido (apesar de o texto não ter chegado todo ao destinatário) [20]. A partir do ano de 2000, até agora, pode dizer-se que a Internet passou a ser conhecida como um mercado, ou seja, cada vez mais passou a ser usada para fazer várias ações que anteriormente teriam que ser feitas em locais especícos. Diversas tecnologias inovadoras contribuíram para os interesses das empresas, que atuavam, ou passaram então a atuar nesse mercado [10].
O marketing e a publicidade online também têm vindo a mudar muito. Hoje em dia a empresa já não deve comunicar, deve sim aprender a interagir. A publicidade deixou de ser feita apenas num sentido, onde a empresa emitia uma mensagem que o consumidor devia receber. Como a Internet é constituída pelas pessoas, a publicidade passou a ser feita de forma a que as pessoas da empresa se relacionem com os consumidores [25].
O projeto consistiu em desenvolver uma aplicação web (ASP.NET/C#) para anún-cios, denominada Anuncie Aqui Já. A aplicação destina-se às pessoas que pretendam comprar ou vender produtos. Cada utilizador registado pode inserir os seus anún-cios e procurar outros anúnanún-cios pelas várias categorias ou subcategorias presentes no site.
O projeto enquadra-se no âmbito e complexidade adequada às competências adqui-ridas no curso:
• Autonomia e capacidade de denir objetivos; • Capacidade de modelação de problemas;
• Saber elaborar relatórios de análise, desenho e implementação de soluções; 13
CAPÍTULO 1. INTRODUÇÃO 14 • Gestão de tempo e cumprimento de prazos.
O projeto realizado teve que ter em conta as seguintes regras:
• Ter um orientador docente da Unidade Técnico-Cientíca de Informática da Escola Superior de Tecnologia e Gestão do Instituto Politécnico da Guarda, assim como um supervisor na empresa;
• Ter um plano de desenvolvimento aprovado pelo diretor do curso;
• O tempo necessário para a realização do projeto foi exível, dependendo ape-nas das datas denidas pelos professores da Unidade Curricular Projeto de Informática. Sendo assim, o projeto acabou por ter uma duração de vários meses, devido ao facto de o aluno ter outras Unidades Curriculares para fazer e assim foi necessário fazer várias interrupções. O projeto teve início no mês de Março e foi nalizado no mês de Novembro.
1.1 Instituição de acolhimento
A empresa DotFlow Solutions, Lda situada no Largo Alberto Sampaio No 3 A,
em Linda-a-Velha tem como missão a prestação de serviços de desenvolvimento de soluções de tecnologias de informação e a prestação de serviços em consultoria em soluções de tecnologias de informação.
1.2 Motivação
A principal motivação para o desenvolvimento deste projeto foi o facto de ter a oportunidade de aprendizagem de competências prossionais num contexto real de trabalho, podendo ter assim uma primeira impressão, mesmo que pequena ainda, sobre o que é trabalhar numa empresa. O facto de se poder trabalhar com novas tecnologias, que ainda não se tinham usado, principalmente o Linq to Entities, o Entity Framework e o EDM (Entity Data Model) é também muito importante, já que assim aprendem-se coisas novas.
Neste momento, devido à crise económica e às perspetivas de recuperação económica muito sombrias, a procura e venda de produtos em segunda mão tem sido cada vez maior. Prevendo-se um grande aumento neste tipo de negócio, a empresa vê aqui uma grande oportunidade. A empresa, pretende ainda, concorrer com outros portais de serviços semelhantes, apostando fortemente em estratégias de marketing que se apoiam nas redes sociais. Ao longo do projeto surgiram outras motivações, tais como, em trabalho futuro, a pesquisa de anúncios noutros sites e lucrar com a publicidade.
CAPÍTULO 1. INTRODUÇÃO 15
1.3 Solução
A solução proposta consiste em desenvolver uma plataforma web de anúncios, onde a aplicação é composta pelo FrontOce e pelo BackOce.
Para os utilizadores não registados não há muitas funcionalidades disponíveis, po-dendo apenas visualizar os anúncios inseridos por utilizadores registados, pesquisar anúncios pelas várias categorias e subcategorias, e enviar mensagens para os funci-onários do site para pedir informações.
A aplicação tem outras funcionalidades para os utilizadores registados, tais como: pesquisa de anúncios pelas várias categorias e subcategorias, editar anúncios já in-seridos, ver todos os anúncios inseridos por si e qual o estado de cada um desses anúncio no momento, entre outras.
As funcionalidades para os moderadores são as seguintes: validar anúncios, reti-rar/colocar anúncios em destaque, responder a mensagens recebidas, entre outras. Para o administrador as funcionalidades são as seguintes: inserir novos funcionários, inserir novas subcategorias para as categorias, visualizar os anúncios pendentes, conrmados e cancelados, sendo que para estes últimos dois casos consegue ver qual o moderador que fez a ação.
Por m, cada um dos utilizadores registados pode ainda ver e editar os seus dados pessoais.
Para realizar o projeto será necessário resolver alguns problemas, enumerados de seguida:
• Como registar e autenticar os utilizadores;
• Que sistema de gestão de base de dados utilizar para armazenar os dados dos anúncios, nomeadamente as imagens;
• Como usar o Linq to Entities para poder comunicar com a base de dados, usando o modelo EDMX;
• Como retirar/colocar um anúncio em destaque;
• Como responder às mensagens enviadas pelos utilizadores.
1.4 Contribuição
A contribuição principal deste trabalho foi o desenvolvimento, implementação e teste de uma plataforma web de anúncios online, na plataforma ASP.NET/C# com armazenamento de dados em bases de dados SQL SERVER e acesso hierárquico aos dados, através da tecnologia LINQ to Entities.
CAPÍTULO 1. INTRODUÇÃO 16
1.5 Estrutura do documento
Este documento compreende cinco capítulos para além do presente capítulo, e está organizado da seguinte forma:
• No segundo capítulo é descrito o Estado da arte - são apresentados alguns sites que já existem relacionados com anúncios;
• No terceiro capítulo é descrita a Metodologia e resultados esperados - apresen-tação das metodologias usadas no projeto, a sua calendarização e os resultados esperados;
• No quarto capítulo são descritas as Tecnologias utilizadas - descrição das tec-nologias usadas ao longo do projeto, detalhadamente;
• No quinto capítulo é descrita a Implementação da solução - descrição detalhada do trabalho realizado ao longo de todo o projeto;
• No sexto capítulo são descritas as Conclusões e trabalho futuro - considerações nais sobre o trabalho realizado e trabalho a realizar no futuro para completar o projeto;
Capítulo 2
Estado da arte
No âmbito dos anúncios já existem várias aplicações web em funcionamento com muito sucesso. Nestas aplicações, pode dizer-se que o preço dos anúncios é um pouco elevado. No projeto desenvolvido não foi implementada a parte dos pagamentos, mas em trabalho futuro poderá ser implementada e conseguir ter melhores preços é um fator aliciante. Também o facto de pesquisar anúncios noutros sites e reuni-los no mesmo site é outro dos fatores que poderia ser relevante porque os existentes não têm esta funcionalidade.
2.1 Portugal Anúncios classicados grátis OLX
No site OLX podemos encontrar várias vantagens, tais como publicar anúncios grátis, mas estes apenas podem estar online durante uma semana. Para colocar anúncios em destaque e por mais algum tempo terá que ser efetuado um pagamento. O site tem também uma parte onde podem ser vistas as mensagens trocadas entre o utilizador e os interessados nos seus anúncios. Podem ser efetuadas pesquisas de anuncio de produtos por distrito/concelho categoria/subcategoria. Alguns dos preços para os serviços, são os seguintes:• Anúncio em destaque na página inicial têm um custo de 15 e/semana; • Anúncio sobressaído terá um custo de 3 e/semana;
• Anúncio de topo têm um custo de 7 e/semana.
Na gura 2.1 podemos ver a página inicial do OLX. O endereço para aceder a esta página é o seguinte: http://www.olx.pt/.
CAPÍTULO 2. ESTADO DA ARTE 18
CAPÍTULO 2. ESTADO DA ARTE 19
2.2 Anúncios grátis Coisas
As principais funcionalidades do Coisas é a possibilidade de inserir anúncios grátis, podendo também inserir anúncios pagos, e há também uma secção para a troca de mensagens entre utilizadores. Podem ser efetuadas pesquisas de anuncio de produtos por distrito/concelho categoria/subcategoria.
Este site tem 3 pacotes, um deles grátis e dois pagos, sendo estes: • Grátis - duração de 4 semanas;
• Standard - preço: 10 e, duração de 5 semanas, aprovação prioritária, o anúncio é sobressaído durante 1 semana e está no topo durante 1 semana;
• Premium - preço: 25 e, duração de 5 semanas, aprovação prioritária, o anúncio é sobressaído durante 1 semana, está no topo durante 1 semana e o anúncio está em destaque na primeira página durante 1 semana, sendo esta a diferença para o pacote anterior.
Na gura 2.2 podemos ver a página inicial do Coisas. O endereço para aceder a esta página é o seguinte: http://www.coisas.com/.
CAPÍTULO 2. ESTADO DA ARTE 20
CAPÍTULO 2. ESTADO DA ARTE 21
2.3 Custo Justo Portugal
Aqui podem ser pesquisados os anúncios por distrito e há ainda vários serviços pagos no site. Podem ainda ser inseridos anúncios grátis e anúncios pagos.
Alguns dos serviços pagos deste site e as suas características são:
• Subir - permite a colocação imediata do seu anúncio no topo da lista como se tivesse sido publicado de novo e tem um custo de 2 e;
• Subir x8 - permite a colocação imediata do seu anúncio no topo da lista, sendo que, a cada 7 dias o seu anúncio voltará ao topo da lista, durante 8 semanas consecutivas, com um custo de 6 e;
• Montra - proporciona maior destaque e visibilidade ao anúncio, tendo um custo de 10 e para 7 dias e de 30 e para 30 dias;
• Modicar - permite alterar o anúncio sem ter de o eliminar, com um custo de 2 e;
• Urgente - permite destacar o anúncio indicando tratar-se de uma venda ur-gente, com um logótipo especico, sendo que, durante 3 dias, a cada 24 horas o anúncio é colocado no topo da lista com um custo de 3 e.
Na gura 2.3 podemos ver a página inicial do Custo Justo. O endereço para aceder a esta página é o seguinte: http://www.custojusto.pt/.
CAPÍTULO 2. ESTADO DA ARTE 22
CAPÍTULO 2. ESTADO DA ARTE 23
2.4 Imovirtual
Neste site, podem ser encontrados e publicados anúncios sobre imóveis, pelo que, este site não pode ser relacionado com o projeto já que, apesar de ser um site de anúncios apenas possui anúncios de imóveis. Este site pode ser visto em http: //www.imovirtual.com/.
2.5 Standvirtual
Neste site, apenas podem ser encontrados e publicados anúncios sobre automóveis, ou seja, é uma plataforma de anúncios para automóveis, pelo que não pode ser relacionado diretamente com o projeto, apesar de também ser um site de anúncios. Este site pode ser visto em http://www.standvirtual.com/.
2.6 Comparação das aplicações existentes da área
Tal como já foi referido anteriormente, todos estes sites possuem funcionalidades muito semelhantes. Nos vários sites os preços dos serviços pagos, normalmente, variam com o tempo que se pretende usar um determinado serviço, sendo que, quanto mais tempo se quiser usar esse serviço mais elevado será o preço. Todos os sites referidos possuem várias formas para pesquisar os anúncios pretendidos. Na tabela 2.1 podemos ver algumas comparações entre os sites. Todos os dados são relativos ao site português, já que alguns destes sites têm também sites no estrangeiro.CAPÍTULO 2. ESTADO DA ARTE 24
OLX Coisas Custo Justo Número de
anún-cios Cerca de 676.540 Cerca de 711.660 Cerca de 856.465 Anúncios grátis? Sim Sim Sim
Preços dos serviços
pagos (e) 3 ou 7 ou 15 10 ou 25 2, 3, 6 ou 10 Formas de
paga-mento Multibanco, Visa,MasterCard, Payshop e Pay-Pal Multibanco, Visa, MasterCard, Payshop e Pay-Pal Multibanco e car-tão de crédito Pesquisa de
anún-cios noutros sites? Não Sim, mas a um siteda mesma empresa Não Pesquisa por
locali-dade? Sim Sim Sim Pesquisa por
cate-goria? Sim Sim Sim Sistema de
mensa-gens? Sim Sim Sim Utilizadores
regis-tados? Sim Sim Sim Site no estrangeiro? Sim Não Sim Ranking em
Portu-gal 13 [3] 46 [1] 22 [2] Reputação 1714 [3] 283 [1] 429 [2] Gostos no facebook 303.033 [17] 158.828 [15] 100.005 [16]
Tabela 2.1: Comparação entre os vários sites
Os valores referentes ao facebook são muito relativos, já que, normalmente sobem a todo o instante. Quanto aos valores retirados do site http://www.alexa.com/, são estatísticas recolhidas pelo motor de busca e pela tollbar dos próprios, mas como têm uma boa amostra, supõe-se que a margem de erro não seja muito elevada. Todos os dados da tabela acima que não têm referência foram retirados da respetiva página.
Capítulo 3
Metodologia e resultados esperados
3.1 Metodologia
Para o desenvolvimento deste projeto foi utilizada uma metodologia ágil, que con-sistiu em ter, de quando em quando, uma nova versão para apresentar à empresa, e apenas no nal documentar tudo. Assim sendo, a metodologia para desenvolver, implementar e testar a aplicação web, é a seguinte:
1. Análise dos requisitos do projeto; 2. CSS para as folhas de estilo a usar;
3. Javascript no slide, que já vinha com o template e para vericar quando as sessões expiram;
4. ASP.NET para 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 para fazer a base de dados;
7. Utilizar o LINQ to Entities para aceder à base de dados;
8. Realização de testes e análise da eciência e abilidade da aplicação, colocando o site online;
9. Visual Studio 2010 para a realização do projeto em si;
10. SQL Server Management Studio para carregar dados externos e criar a base de dados a partir do modelo;
11. Utilizar o latex para produzir um relatório pata documentar o projeto.
De forma a facilitar o acompanhamento do projeto, do supervisor da empresa, foram apresentadas as várias partes do projeto conforme iam sendo realizadas, para que no nal o trabalho correspondesse ao que foi pedido pela empresa.
CAPÍTULO 3. METODOLOGIA E RESULTADOS ESPERADOS 26
3.2 Descrição das tarefas
As principais tarefas foram:
• Tarefa 1 Análise dos requisitos da aplicação web; • Tarefa 2 Estudo da arte;
• Tarefa 3 Estudo das tecnologias a utilizar;
• Tarefa 4 Criar a base de dados, no SQL SERVER; • Tarefa 5 Denir os estilos (CSS) para as várias páginas;
• Tarefa 6 Criação das páginas HTML, com o ASP.NET e o C#; • Tarefa 7 Testes da aplicação;
• Tarefa 8 Elaboração do relatório;
• Tarefa 9 Colocação e divulgação online da aplicação web. O agendamento das tarefas é apresentado na gura 3.1.
Figura 3.1: Tarefas
O respetivo Mapa de Gantt é apresentado na gura 3.2.
CAPÍTULO 3. METODOLOGIA E RESULTADOS ESPERADOS 27
3.3 Resultados esperados
No nal do projeto espera-se que a aplicação web, a nível dos utilizadores, seja capaz de:
• Permitir aos utilizadores registados inserir e editar anúncios;
• Permitir a inserção de dados especícos para os anúncios, dependendo da sub-categoria;
• Permitir a listagem dos anúncios, por categoria ou subcategoria; • Permitir a visualização dos detalhes de cada anúncio;
• Permitir o registo de utilizadores; • Permitir a pesquisa de anúncios.
Ao nível da administração, espera-se que a aplicação seja capaz de: • Permitir a colocação de anúncios em destaque;
• Permitir a inserção de novas subcategorias para uma determinada categoria; • Permitir o registo de novos funcionários;
• Consultar os anúncios pendentes;
• Consultar os anúncios conrmados e cancelados, e vericar qual o moderador que efetuou essa ação.
Capítulo 4
Tecnologias utilizadas
4.1 Introdução
Neste capítulo vão ser referidas, com algum detalhe, as tecnologias utilizadas ao longo do projeto.
Para desenvolver aplicações para a web é usado o consórcio W3C (Consórcio World Wide Web), sendo que é um consórcio internacional no qual organizações liadas, 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
4.2 Tecnologias web
4.2.1 HTML
O HTML (em inglês Hypertext Markup Language e em português Linguagem de Marcação de Hipertexto) é uma das linguagens que utilizamos para desenvolver web sites, podendo ser considerada a linguagem base da Internet. Existem outras linguagens mais avançadas para desenvolver sites, porém dicilmente conseguimos encontrar um site que não utilize HTML, e o mais comum é encontrar sites que utilizam somente HTML [6]. Na listagem 1 podemos ver um pequeno exemplo de código html. Esta tecnologia foi usada em todas as páginas do projeto.
CAPÍTULO 4. TECNOLOGIAS UTILIZADAS 29 Listagem 1 Exemplo de código HTML.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" %"http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <title>Teste de HTML</title> </head> <body> <h1> Olá Mundo</h1> <br /> <b>Exemplo Tabela</b> <table> <tr> <td> </td> <td> Coluna 1 </td> </tr> <tr> <td> Linha 1 </td> <td> Olá </td> </tr> </table> </body> </html>
4.2.2 CSS
O CSS (Cascading Style Sheets) é uma "folha de estilo"utilizada para denir a apresentação (aparência) nas páginas da Internet que optam por usar linguagens de marcação, como HTML, para o seu desenvolvimento. O CSS dene como vão ser exibidos os elementos contidos no código de uma página, tendo como maior vantagem separar o formato e o conteúdo de um documento, ou seja, é feito um documento à parte só para o css, sendo que depois é chamado onde o queremos usar [18]. Na listagem 2 podemos ver um pequeno exemplo de código css. Esta tecnologia foi usada para elaborar as folhas de estilo para o projeto.
Listagem 2 Exemplo de código CSS.
#todoform th { background:#000000;
/* a cor preta para o fundo do título */ padding:3px;
/* um afastamento de 3px */
font: bold 15px arial, verdana, helvetica, sans-serif; /* letras em negrito com 15px e familia arial, verd....*/ border-bottom:1px solid #ff9900;
/* uma borda inferior solida de 1px na cor laranja */ }
CAPÍTULO 4. TECNOLOGIAS UTILIZADAS 30
4.2.3 Javascript
Javascript é uma linguagem de programação utilizada para criar pequenos programas encarregados de realizar ações dentro de uma página web, do lado do cliente, já que é o navegador que suporta a carga de processamento. Já que é compatível com a maioria dos navegadores, é a linguagem de programação, do lado do cliente, mais utilizada. É uma linguagem com várias potencialidades, entre elas: podemos criar efeitos especiais nas páginas e denir interatividades com o usuário [4]. Na listagem 3 podemos ver um pequeno exemplo de código javascript. Esta tecnologia foi usada, por exemplo no slide dos anúncios em destaque, que já vinha incluído no template. Listagem 3 Exemplo de código Javascript.
<script>
window.open("http://www.google.com","","width=550,height=420, menubar=no") </script>
4.2.4 ASP.NET
O ASP.NET (Active Server Pages) é um ambiente de desenvolvimento onde são desenvolvidos aplicativos para a Web, sendo uma tecnologia da Microsoft que é uma evolução do ASP. Os aplicativos feitos neste ambiente rodam no servidor Web especicamente dentro da Internet Information Services (IIS) e necessitam do .NET Framework, onde as páginas do aplicativo, vão car disponíveis para poderem ser acedidas por qualquer sistema operacional e navegador.
Vão agora ser mostradas algumas características do ASP.NET: é orientada a obje-tos, faz parte do .NET Framework podendo utilizar as classes do mesmo, as páginas ASP.NET são compiladas antes da serem executadas, ganhando assim velocidade, segurança, estabilidade e interoperabilidade. As páginas ASP.NET são desenvolvi-das por diversos controlos de Interface, Validação, Data, HTML, entre outros. Para completar o ASP.NET, deve ser escolhida, no Microssoft Visual Studio, uma das seguintes linguagens: C#, Visual Basic e J# [7]. Na listagem 4 podemos ver um pequeno exemplo de código ASP.NET. Esta tecnologia foi usada em todas as páginas do projeto, já que é a tecnologia sobre a qual o projeto foi elaborado.
CAPÍTULO 4. TECNOLOGIAS UTILIZADAS 31 Listagem 4 Exemplo de código ASP.NET
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body>
<form id="form1" runat="server"> <div>
<asp:Label ID="Label1" runat="server" Text="Olá Mundo!"> </asp:Label>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> </div>
</form> </body> </html>
4.2.5 C#
C# (CSharp) é uma linguagem de programação orientada a objetos criada pela Microsoft, fazendo parte da sua plataforma .Net. A linguagem C# baseou-se no C++ e no Java. Foi criada junto com a arquitetura .NET, embora existam várias outras linguagens que suportam essa tecnologia (como VB.NET, C++, J#). É considerada a linguagem símbolo do .NET, por várias razões: foi criada de novo para funcionar logo na plataforma, o compilador da linguagem foi o primeiro a ser desenvolvido e a maior parte das classes do .NET Framework foram desenvolvidas na mesma linguagem [5]. Na listagem 5 podemos ver um pequeno exemplo de código C#. Esta tecnologia foi usada em todas as páginas do projeto, já que é uma das tecnologias principais.
Listagem 5 Exemplo de código C#.
public class ClasseExemplo {
public static void Main() {
System.Console.WriteLine("Olá mundo!"); calcula_media();
} }
private double calcula_media() {
int j;
double media, soma; soma = 0;
for (j = 0; j < i; j++) {
soma = soma + E[j].Velocidade; }
return (media = soma / j); }
CAPÍTULO 4. TECNOLOGIAS UTILIZADAS 32
4.2.6 Microsoft SQL SERVER
O SQL (Structured Query Language ou Linguagem de Consulta Estruturada), é uma linguagem de pesquisa declarativa para base de dados relacionais. [23] O Microsoft SQL SERVER foi o SGBD (Sistema de Gestão de Base de dados) usado no projeto, já que é uma base de dados robusta que vem incluída no Microsoft Visual Studio (software usado na elaboração do projeto) [14]. Esta tecnologia foi usada para o desenvolvimento da base de dados.
4.2.7 Linq to Entities
O Linq to Entities foi usado no projeto principalmente pelo facto de poder usar herança entre tabelas. O linq to Entities pode ser usado com qualquer base de dados relacional, ao contrário do linq to sql, que apenas pode ser usado com o SQL SERVER. O LINQ to SQL é mapeado diretamente para as tabelas da base de dados e o LINQ to Entities permite criar um modelo de objetos baseados nas tabelas de qualquer base de dados [12]. Na listagem 6 podemos ver um pequeno exemplo de um query, linq to entities. Esta tecnologia foi usada para aceder à base de dados. Listagem 6 Exemplo de query, Linq to Entities.
public static IQueryable mostraFreguesiasConSel(int idConcelho) {
ModelBDClassificadosContainer classificadosBD = new ModelBDClassificadosContainer(); var query = from freguesias in classificadosBD.Freguesias
where freguesias.Id_concelho == idConcelho orderby freguesias.Freguesia
select freguesias; return query;
}
4.3 Software utilizado
4.3.1 Microsoft Visual Studio 2010
O Microsoft Visual Studio é um pacote de programas da Microsoft para desenvol-vimento 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) [22].
O interface principal do Microsoft Visual Studio 2010 é apresentado na gura 4.1. Pode dizer-se que todo o projeto foi desenvolvido sobre esta plataforma.
CAPÍTULO 4. TECNOLOGIAS UTILIZADAS 33
Figura 4.1: Interface principal do Microsoft Visual Studio 2010.
4.3.2 SQL Server Management Studio
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 congurar, gerir e administrar todos os componentes do Microsoft SQL SERVER. A ferramenta inclui ferramentas grácas que trabalham com objetos e recursos do servidor. Este software pode ser usado, por exemplo, para carregar cheiros externos a partir de um cheiro do excel [24].
Um exemplo de interface do Sql Server Management Studio é apresentado na gura 4.2.
Capítulo 5
Implementação da solução
5.1 Introdução
A solução foi desenvolvida na plataforma ASP.NET, com recurso a várias tecnolo-gias, tais como: HTML, CSS, SQL SERVER e JavaScript. O projeto foi desenvolvido com a arquitetura da gura 5.1.
Figura 5.1: Arquitetura do projeto.
CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 35
5.2 A importância do login e do logout
Para efetuar algumas ações, depois de efetuado o registo, o utilizador terá que efe-tuar o login. Quando esse login é usado em locais públicos podem surgir algumas questões relacionadas com segurança. Por exemplo, alguns utilizadores não efe-tuam o logout, pensando que o facto de fecharem as páginas é suciente. 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, as pessoas nunca se devem esquecer de fazer o logout, principalmente em locais públicos. [11]
5.3 Base de dados Anúncios
A base de dados foi criada com recurso ao SQL SERVER.
5.3.1 Modelo Relacional
Para criar a base de dados, inicialmente foi desenhado o modelo ER da aplicação, usando o modelo EDMX (ADO.NET Entity Data Model), tal como podemos ver na gura 5.2.
CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 36
CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 37 O modelo foi criado para poder ser usada a herança entre tabelas, já que o SQL SERVER não suporta diretamente essa opção. O modelo permitiu também que fosse usado o Linq to Entities para aceder à base de dados (desta forma foi possível elaborar a aplicação em três camadas, tal como já foi referido). Depois de criado o modelo foi criado o script que posteriormente vai criar a base de dados no SQL SERVER. Com o uso da ferramenta Sql Server Management Studio, vai ser corrido o script criado anteriormente e desta forma será criada a base de dados, tal como podemos ver na gura 5.3.
Figura 5.3: Diagrama ER normalizado
Para além do diagrama anterior, a base de dados é ainda composta pela tabela da gura 5.4.
CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 38
Figura 5.4: Tabela mensagens.
Para além da base de dados anterior, quando criamos os utilizadores, privilégios e roles (grupos), por defeito, a plataforma ASP.NET recorre a uma base de dados SQL SERVER para guardar tudo isso, como podemos ver na gura 5.5.
CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 39
CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 40 Ainda com a mesma ferramenta, foram carregadas algumas tabelas a partir do Mi-crosoft Excel, usando a importação de dados, sendo as tabelas as seguintes: Distri-tos, Concelhos e Freguesias. Nos anexos do documento poderemos ver os prints dos cheiros do Microsof excel.
5.3.2 Dicionário de dados
5.3.2.1 Anuncios
Na tabela 5.1 apresentam-se as várias características dos campos relativos aos anún-cios.
Campo Tipo Tamanho Obrigatório Descrição
Id_anuncio (PK) Inteiro 4 Sim / automático Número sequencial que identi-ca univocamente cada anún-cio
Id_utilizador (FK) Inteiro 4 Sim / automático Número que identica o utili-zador a quem pertence o anún-cio
Id_tipo_anuncio (FK) Inteiro 4 Sim Número que identica o tipo de anúncio
Id_sub_categoria (FK) Inteiro 4 Sim Número que identica a subca-tegoria do anúncio
Data_publicacao Data - Sim / automática Data/hora da publicação do anúncio
Localizacao Texto MAX Sim Localização especíca do anún-cio
Id_freguesia (FK) Inteiro 4 Sim Número que identica a fregue-sia relativa ao anúncio Titulo Texto MAX Sim Título do anúncio Descricao Texto MAX Sim Descrição do anúncio
Id_moderador (FK) Inteiro 4 Não / automático Número que identica o mode-rador que valida o anúncio Estado Texto MAX Sim Estado do anúncio
Preco Texto 10 Não Preço que aparece no anúncio Tipo_contrato Texto 49 Não Tipo de contrato do emprego Para_destaque Booleano - Sim Indica se o anúncio é para
des-taque ou não
Destaque Texto 50 Não Indica o estado do destaque do anúncio
Titulo_destaque Texto 15 Não Título do anúncio em destaque Sub_titulo_destaque Texto 22 Não Subtítulo do anúncio em
desta-que
Descricao_destaque Texto MAX Não Descrição do anúncio em des-taque
Imagem1 Texto MAX Não Caminho da imagem 1 Imagem2 Texto MAX Não Caminho da imagem 2
Tabela 5.1: Estrutura da tabela Anuncios 5.3.2.2 Anuncios_Veiculos
Na tabela 5.2 apresentam-se as várias características dos campos relativos aos anún-cios de veículos, ou seja, esta é uma tabela que herda os atributos da tabela Anunanún-cios.
CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 41
Campo Tipo Tamanho Obrigatório Descrição Marca Texto MAX Não Marca do veículo Modelo Texto MAX Não Modelo do veículo Primeiro_registo Inteiro 4 Não Primeiro registo do veículo
Condicao Texto MAX Não Condição do veículo (novo, usado)
Tipo_carro Texto MAX Não Tipo de carro a que se refere o anúncio
Quilometros Inteiro 7 Não Número de quilómetros que o veículo possui
Combustivel Texto MAX Não Tipo de combustível do veículo Potencia Texto MAX Não Potencia do veiculo
Tonalidade Texto MAX Não Cor predominante do veículo Extras Texto MAX Não Extras que fazem parte do
veí-culo
Cilindrada Texto MAX Não Indica a cilindrada do veículo Tipo_barco Texto MAX Não Indica o tipo de barco Comprimento Texto MAX Não Comprimento do barco Id_anuncio (PK) Inteiro 4 Sim / automático Número sequencial que
identi-ca o anúncio a que o veículo se refere
Tabela 5.2: Estrutura da tabela Anuncios_Veiculos 5.3.2.3 Anuncios_Imoveis
Na tabela 5.3 apresentam-se as várias características dos campos relativos aos anún-cios de imóveis, ou seja, esta é uma tabela que herda os atributos da tabela Anunanún-cios.
Campo Tipo Tamanho Obrigatório Descrição Condicao Texto MAX Não Condição do imóvel
Tipologia Texto MAX Não Tipologia do imóvel (T1, T2) Area_util Inteiro 7 Não Área útil do imóvel
Casas_banho Texto MAX Não Número de casas de banho Area_bruta Inteiro 7 Não Área bruta do imóvel, toda a
área que lhe pertence Ano_construcao Inteiro 4 Não Ano de construção do imóvel
Caracteristicas Texto MAX Não Principais características (ga-ragem, aquecimento central) Area_Terreno Inteiro 4 Não Área do terreno em causa Tipo_Terreno Texto MAX Não Tipo de terreno em causa
(In-dustrial, urbano)
Finalidade Texto MAX Não Finalidade a que se destina o terreno
Licença_const Texto MAX Não Indica se já tem licença de construção e qual o seu estado Declive Texto MAX Não Declive do terreno em causa Divisoes Inteiro 2 Não Número de divisões do imóvel
em causa
Id_anuncio (PK) Inteiro 4 Sim / automático Número sequencial que identi-ca o anúncio a que o imóvel se refere
Tabela 5.3: Estrutura da tabela Anuncios_Imoveis 5.3.2.4 Anuncios_Animais
Na tabela 5.4 apresentam-se as várias características dos campos relativos aos anún-cios de animais, ou seja, esta é uma tabela que herda os atributos da tabela Anunanún-cios.
CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 42
Campo Tipo Tamanho Obrigatório Descrição Genero Texto MAX Não Género do animal
Raca Texto MAX Não Raça do animal em causa Tipo_peixe Texto MAX Não Tipo de peixe, no caso da
sub-categoria ser essa Animal Texto MAX Não Indica o animal em causa Id_anuncio (PK) Inteiro 4 Sim / automático Número sequencial que
identi-ca o anúncio a que o animal se refere
Tabela 5.4: Estrutura da tabela Anuncios_Animais 5.3.2.5 Anuncios_Empregos
Na tabela 5.5 apresentam-se as várias características dos campos relativos aos anún-cios de empregos, ou seja, esta é uma tabela que herda os atributos da tabela Anuncios.
Campo Tipo Tamanho Obrigatório Descrição
Empresa Texto MAX Não Empresa a que o emprego se re-fere
Funcao Texto MAX Não Função no emprego Perl Texto MAX Não Perl pretendido
Ofertas_benecios Texto MAX Não Ofertas ou benefícios dados pela empresa
Tipo_trabalho Texto MAX Não Tipo de trabalho pretendido Experiencia_prof Texto MAX Não Experiência prossional
pre-tendida
Habilitacoes Texto MAX Não Habilitações pretendidas Linguas Texto MAX Não Conhecimentos nas várias
lín-guas
Mensagem_intro Texto MAX Não Mensagem introdutória para o emprego
Disponibilidade Texto MAX Não Disponibilidade pretendida Id_anuncio (PK) Inteiro 4 Sim / automático Número sequencial que
identi-ca o anúncio a que o emprego se refere
Tabela 5.5: Estrutura da tabela Anuncios_Empregos 5.3.2.6 Utilizadores
Na tabela 5.6 apresentam-se as várias características dos campos relativos aos utili-zadores.
CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 43
Campo Tipo Tamanho Obrigatório Descrição
Id_utilizador (PK) Inteiro 4 Sim / automático Número sequencial que identi-ca univocamente cada utiliza-dor
Nome Texto MAX Sim Nome completo do utilizador E_mail Texto MAX Sim Email do utilizador
Telefone Texto 9 Sim Número de telefone do utiliza-dor
Morada Texto MAX Sim Indica a morada do utilizador Data_registo Data - Sim / automático Data e hora do registo do
uti-lizador
Username Texto MAX Sim Nome de utilizador que o iden-tica de forma única
Tabela 5.6: Estrutura da tabela Utilizadores 5.3.2.7 Moderadores
Na tabela 5.7 apresentam-se as várias características dos campos relativos aos mo-deradores.
Campo Tipo Tamanho Obrigatório Descrição
Id_moderador (PK) Inteiro 4 Sim / automático Número sequencial que identi-ca univocamente cada mode-rador
Nome Texto MAX Sim Nome completo do moderador E_mail Texto MAX Sim Email do moderador
Telefone Texto 9 Sim Número de telefone do mode-rador
Cargo Texto 50 Sim Indica o cargo do moderador Username Texto 50 Sim Nome do moderador que o
identica de forma única
Tabela 5.7: Estrutura da tabela Moderadores 5.3.2.8 Distritos
Na tabela 5.8 apresentam-se as várias características dos campos relativos aos dis-tritos.
Campo Tipo Tamanho Obrigatório Descrição
Id_distrito (PK) Inteiro 4 Sim / automático Número sequencial que identi-ca univocamente cada distrito Distrito Texto MAX Sim Nome do distrito
Tabela 5.8: Estrutura da tabela Distritos 5.3.2.9 Concelhos
Na tabela 5.9 apresentam-se as várias características dos campos relativos aos con-celhos.
CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 44
Campo Tipo Tamanho Obrigatório Descrição
Id_concelho (PK) Inteiro 4 Sim / automático Número sequencial que identi-ca univocamente cada conce-lho
Concelho Texto MAX Sim Nome do concelho
Id_distrito (FK) Inteiro 4 Sim Número que identica o dis-trito do anúncio
Tabela 5.9: Estrutura da tabela Concelhos 5.3.2.10 Freguesias
Na tabela 5.10 apresentam-se as várias características dos campos relativos às fre-guesias.
Campo Tipo Tamanho Obrigatório Descrição
Id_freguesia (PK) Inteiro 4 Sim / automático Número sequencial que identi-ca univocamente cada fregue-sia
Freguesia Texto MAX Sim Nome da freguesia
Id_concelho (FK) Inteiro 4 Sim Número que identica o conce-lho do anúncio
Tabela 5.10: Estrutura da tabela Freguesias 5.3.2.11 SubCategorias
Na tabela 5.11 apresentam-se as várias características dos campos relativos às sub-categorias dos anúncios.
Campo Tipo Tamanho Obrigatório Descrição
Id_sub_categoria (PK) Inteiro 4 Sim / automático Número sequencial que identi-ca univocamente cada subca-tegoria
Nome Texto MAX Sim Nome da subcategoria Id_categoria (FK) Inteiro 4 Sim Número que identica a
cate-goria do anúncio
Tabela 5.11: Estrutura da tabela SubCategorias 5.3.2.12 Categorias
Na tabela 5.12 apresentam-se as várias características dos campos relativos às cate-gorias dos anúncios.
CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 45
Campo Tipo Tamanho Obrigatório Descrição
Id_categoria (PK) Inteiro 4 Sim / automático Número sequencial que identi-ca univocamente cada catego-ria
Nome Texto MAX Sim Nome da categoria
Tabela 5.12: Estrutura da tabela Categorias 5.3.2.13 TiposAnuncio
Na tabela 5.13 apresentam-se as várias características dos campos relativos aos tipos de anúncio de cada anúncio.
Campo Tipo Tamanho Obrigatório Descrição
Id_tipo_anuncio (PK) Inteiro 4 Sim / automático Número sequencial que identi-ca univocamente cada tipo de anúncio
Nome Texto MAX Sim Nome do tipo de anúncio
Tabela 5.13: Estrutura da tabela TiposAnuncio 5.3.2.14 CatTip
A tabela 5.14 é uma tabela intermédia, onde a cada categoria são atribuídos os tipos de anúncio que esta pode ter. Vamos obter uma tabela com uma chave primária concatenada.
Campo Tipo Tamanho Obrigatório Descrição
Id_categoria (PK) Inteiro 4 Sim / automático Número sequencial que identi-ca cada categoria
Id_tipo_anuncio (PK) Inteiro 4 Sim / automático Número sequencial que identi-ca cada tipo de anúncio
Tabela 5.14: Estrutura da tabela CatTip 5.3.2.15 Mensagens
Na tabela 5.15 apresentam-se as várias características dos campos relativos às men-sagens.
CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 46
Campo Tipo Tamanho Obrigatório Descrição
Id_mensagem (PK) Inteiro 4 Sim / automático Número sequencial que identi-ca univocamente cada mensa-gem
Nome Texto 50 Sim Nome de quem envia a mensa-gem
Email Texto 50 Sim Email de quem envia a mensa-gem
Assunto Texto 70 Sim Assunto da mensagem Mensagem Texto MAX Sim Mensagem enviada pelo
utili-zador
Data Data - Sim / automática Data e hora de envio da men-sagem
Estado Booleano - Sim Indica se a mensagem já foi res-pondida ou não
Tabela 5.15: Estrutura da tabela Mensagens
5.4 Aplicação ASP.NET em três camadas
A arquitetura em três camadas é uma arquitetura cliente servidor na qual o interface do utilizador, processos de negócios e armazenamento de dados são desenvolvidos e mantidos em módulos independentes, ou em plataforma separadas.
A gura 5.6 procura mostrar de forma resumida as três camadas identicando cada uma delas.
Figura 5.6: Representação das três camadas de uma aplicação ASP.NET. As três camadas referidas são as seguintes:
• Camada de apresentação - User Interface (Presentation Tier) • Camada de Negócios - Business Logic Layer (Business Logic Tier)
CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 47 • Camada de Acesso a dados - Data Access Layer (Data Tier)
Cada camada pode ser desenvolvida e testada separadamente.
A camada de apresentação contém os elementos da interface do utilizador do site e inclui ainda toda a lógica de interação entre o utilizador e as regras de negócio. (ASP .NET Web Forms, Users Controls e Master Pages).
A camada de negócio recebe a requisição da camada de apresentação e retorna o resultado dependendo da lógica de negócio. (Classes C#).
A camada de acesso a dados contém as classes que acedem à base de dados e retornam o resultado para a camada de negócio.(Classes C#) [13].
5.5 FrontOce
Neste capítulo vão ser mostradas as páginas que podem ser visíveis para todos os utilizadores e algumas das suas principais funcionalidades.
5.5.1 Visitante
Os visitantes são os utilizadores do site que ainda não efetuaram o seu login. Al-gumas das principais funcionalidades destes utilizadores são: efetuar o seu registo, contactar a administração do site, visualizar os anúncios, entre outras.
5.5.1.1 Mapa do site
• Home (Default/Default.aspx)
Detalhes do anúncio (Default/DetalhesAnuncio.aspx) Anúncios por categoria (Default/AnunciosCat.aspx)
∗ Detalhes do anúncio (Default/DetalhesAnuncio.aspx) Anúncios por subcategoria (Default/AnunciosSubCat.aspx)
∗ Detalhes do anúncio (Default/DetalhesAnuncio.aspx) • Missão (Default/Missao.aspx)
• Anúncios (Default/SelecionarCatSub.aspx)
Anúncios por categoria (Default/AnunciosCat.aspx) ∗ Detalhes do anúncio (Default/DetalhesAnuncio.aspx) Anúncios por subcategoria (Default/AnunciosSubCat.aspx)
∗ Detalhes do anúncio (Default/DetalhesAnuncio.aspx) • Registo (Default/Register.aspx)
• Log In (Default/Login.aspx)
CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 48 5.5.1.2 Home Page
A home page dos visitantes é a página principal do web site, ou seja, é a página que aparece quando entramos na plataforma web de anúncios.
Na gura 5.7 podemos ver essa página.
Figura 5.7: Home page (visitantes)
Nesta página é onde podemos ver os anúncios em destaque. Tal como podemos ver, apenas podem estar quatro anúncios de cada vez em destaque. Um pequeno exemplo do código que permite visualizar no slide os anúncios que estão em destaque, está na listagem 7, sendo que aqui podemos ver como colocar um anúncio em destaque (para os outros três anúncios o código é semelhante).
Quanto aos destaques há ainda a salientar o icon que aparece, já que esse icon depende da categoria ou da subcategoria a que o anúncio, que está em destaque, pertence.
Na listagem 8 podemos ver um pequeno exemplo do código da função que coloca no destaque o respetivo icon.
CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 49
Listagem 7 Exemplo para colocar os anúncios em destaque.
foreach (Anuncios anuncio in ClassQueries.anunciosDestaque()) { if (aux == 0) { mostraIcons(aux, anuncio); aux1 = anuncio.Id_anuncio; desc1.InnerText = anuncio.Descicao_destaque.ToString(); titulo1.InnerText = anuncio.Titulo_destaque.ToString(); subtitulo1.InnerText = anuncio.Sub_titulo_destaque.ToString(); img1.Src = anuncio.Imagem1; aux = 1; } }
Listagem 8 Exemplo para mostrar os vários icons no destaque.
private void mostraIcons(int aux, Anuncios anuncio) { if (anuncio.SubCategorias.Nome.Equals("Carros")) { if (aux == 0) { imagem1.Src = "img/icons/carro.png"; } else if (aux == 1) { imagem2.Src = "img/icons/carro.png"; } else if (aux == 2) { imagem3.Src = "img/icons/carro.png"; } else if (aux == 3) { imagem4.Src = "img/icons/carro.png"; } } }
CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 50 Os icons que foram usadas estão na gura 5.8.
Figura 5.8: Icons usados
No slide, há ainda um botão "Mais detalhes", sendo que este botão é um LinkButton que nos manda para a página dos detalhes do anúncio que está em destaque. Na parte nal da página estão as várias categorias e subcategorias dos anúncios, tal como podemos ver na gura 5.9.
Figura 5.9: Categorias e subcategorias de anúncios.
Quando se clica em cima de um nome, dependendo se é uma categoria ou sub-categoria há um reencaminhamento para as páginas de anúncios por sub-categoria ou subcategoria, respetivamente.
Na listagem 9 podemos ver um pequeno exemplo do código usado no evento Click de um LinkButton para chegar à página de anúncios por categoria (gura 5.10).
CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 51
Listagem 9 Exemplo para redirecionar para a página de anúncios por categoria.
foreach (Categorias categoria in
ClassQueries.mostraCategoria(LinkButtonVeiculos)) { { Session["id_cat"] = categoria.Id_categoria; } } Response.Redirect("AnunciosCat.aspx");
CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 52 Na listagem 10 podemos ver um pequeno exemplo do código usado no evento Selecte-dIndexChanged de um DataList para chegar à pagina de anúncios por subcategoria (gura 5.11).
Listagem 10 Exemplo para redirecionar para os anúncios por subcategoria.
Session["id_sub"] = DataListAnimais.SelectedValue; Response.Redirect("AnunciosSubCat.aspx");
Figura 5.11: Página dos Anúncios por Subcategoria. 5.5.1.3 Registo de utilizadores
Nesta página os visitantes podem efetuar o seu registo, para desta forma passarem a utilizadores registados. Para efetuarem o registo é necessário preencher um for-mulário, em que todos os campos são de preenchimento obrigatório. Os campos têm ainda outras validações, sendo estas: o telefone terá que ter nove dígitos, o username não pode ser repetido, terá que ser introduzido um email válido e a password terá que ter no mínimo seis carateres. É ainda usado o captacha para que não possam ser inseridos utilizadores através de um programa para o efeito. O formulário descrito é o da gura 5.12.
CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 53
Figura 5.12: Formulário de registo para os utilizadores.
Depois de submetido o formulário, o utilizador irá receber dois emails automatica-mente, num deles serão enviados os dados do utilizador (gura 5.13), para que este os verique e no outro o utilizador deverá validar o seu email (gura 5.14) [9]. Em anexo pode ser consultado o código usado para enviar o email dos dados.
CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 54
Figura 5.13: Exemplo de email enviado ao utilizador com os dados.
Figura 5.14: Exemplo de email enviado ao utilizador para conrmação.
5.5.2 Utilizador
Aqui vamos ver algumas das principais funcionalidades dos utilizadores que já efe-tuaram o login, sendo estas: inserir e editar anúncios, visualizar os vários anúncios presentes, contactar a administração do site, visualizar os seus próprios anúncios, entre outras.
5.5.2.1 Mapa do site
• Home (Utilizador/DefaultUtilizador.aspx)
Detalhes do anúncio (Utilizador/DetalhesAnuncio.aspx) Anúncios por categoria (Utilizador/AnunciosCat.aspx)
CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 55 ∗ Detalhes do anúncio (Utilizador/DetalhesAnuncio.aspx)
Anúncios por subcategoria (Utilizador/AnunciosSubCat.aspx) ∗ Detalhes do anúncio (Utilizador/DetalhesAnuncio.aspx) • Missão (Utilizador/Missao.aspx)
• Os meus anúncios (Utilizador/MeusAnuncios.aspx)
Detalhes do anúncio (Utilizador/DetalhesAnuncio.aspx) • Dados pessoais (Utilizador/Dados.aspx)
Editar dados (Utilizador/EditarDados.aspx)
Editar password (Utilizador/AlterarPassword.aspx) • Contactar (Utilizador/Mensagens.aspx)
• Inserir anúncio (Utilizador/InserirAnuncio.aspx)
• Editar anúncio (Utilizador/EditarAnuncioSelecionar.aspx)
Selecionar anúncio a editar (Utilizador/EditarAnuncioSelecionar.aspx) ∗ Editar anúncio selecionado (Utilizador/EditarAnuncio.aspx) 5.5.2.2 Home Page
A home page dos utilizadores é a página para onde é reencaminhado um utilizador que acabou de efetuar o seu login.
CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 56
CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 57 Esta página é semelhante à home page dos visitantes, possuindo as mesmas funci-onalidades, apesar de ter ainda outras, que apenas são possíveis para utilizadores registados, tais como: inserir anúncio, editar anúncios, editar os seus dados e ver os anúncios inseridos por si.
5.5.2.3 Inserir anúncio
Nesta página é onde os utilizadores podem inserir os seus anúncios. Agora vai ser explicado passo a passo o formulário que é necessário preencher para inserir um anúncio. Todos os campos obrigatórios têm * e possuem validações para tal.
No início do formulário o utilizador tem que preencher os dados relativos à categoria e ao tipo de anúncio, tal como podemos ver na gura 5.16.
Figura 5.16: Dados relativos à categoria e tipo de anúncio
Em primeiro lugar terá que ser selecionada a categoria do anúncio e só depois a subcategoria e o tipo de anúncio, já que estes campos dependem do primeiro. A drop down list das subcategorias apenas carrega os dados relativos à categoria selecionada. Quanto ao tipo de anúncio, é usada a tabela CatTip, onde cada categoria tem os respetivos tipos de anúncios. Na listagem 11 podemos ver um exemplo de como é efetuado o carregamento da drop down list tipos de anúncio, neste caso para os imóveis. O query "mostraTiposAnuncio"vai buscar os tipos de anúncio relativos aos imóveis.
Listagem 11 Exemplo para carregar a dropdownlist tipos de anúncio.
if (DropDownListCategoria.SelectedItem.Text.Equals("Imóveis")) {
DropDownListTipoAnuncio.DataSource = ClassQueries.mostraTiposAnuncio(3); DropDownListTipoAnuncio.DataBind();
DropDownListTipoAnuncio.Items.Insert(0, new ListItem("Selecione o tipo de anúncio", "")); }
O query "mostraTiposAnuncio"vai buscar os tipos de anúncio relativos a uma categoria passada por parâmetro, tal como podemos ver na listagem 12.
CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 58 Listagem 12 Query que retorna os tipos de anúncio da uma dada categoria.
public static IQueryable mostraTiposAnuncio(int idCategoria) {
ModelBDClassificadosContainer classificadosBD = new ModelBDClassificadosContainer(); var query = from tiposAnun in classificadosBD.TiposAnuncio
join categoriasTiposanuncio in classificadosBD.CatTip on tiposAnun.Id_tipo_anuncio equals
categoriasTiposanuncio.Id_tipo_anuncio join categorias in classificadosBD.Categorias on categoriasTiposanuncio.Id_categoria equals categorias.Id_categoria
where categoriasTiposanuncio.Id_categoria == idCategoria orderby tiposAnun.Nome
select tiposAnun; return query; }
Na gura 5.17 podemos ver a parte do formulário onde são inseridos os dados rela-tivos à localização do anúncio.
Figura 5.17: Dados relativos à localização do anúncio
Para selecionar dados nesta parte do formulário, é necessário seguir a ordem, ou seja, primeiro é necessário selecionar o distrito, depois o concelho e por m a freguesia, já que há uma interligação entre esses dados. As drop down list são carregadas usando as tabelas Distritos, Concelhos e Freguesias, onde foi usado o carregamento externo de dados para efetuar o seu preenchimento.
Na gura 5.18 podemos ver a parte do formulário onde são inseridos os dados gerais para o anúncio e para a maior parte das categorias dos anúncios. Neste caso, temos que inserir o preço para o anúncio.
CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 59
Figura 5.18: Dados gerais de um anúncio
Quando a categoria do anúncio é emprego, os dados gerais do anúncio são diferentes, tal como podemos ver na gura 5.19. Neste caso já não é necessário inserir o preço, mas sim o tipo de contrato.
Figura 5.19: Dados gerais de um anúncio de emprego
Ao nível dos dados para um anúncio, há ainda a salientar que, dependendo da subcategoria, há dados especícos que podem ser inseridos pelos utilizadores. Na gura 5.20 podemos ver, um exemplo, onde neste caso, temos os dados que podem ser inseridos para um anúncio de apartamentos.
CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 60
Figura 5.20: Dados especícos para apartamentos
Na parte seguinte do formulário o utilizador poderá escolher se quer colocar o anúncio em destaque, selecionando a check box, tal como podemos ver na gura 5.21.
Figura 5.21: Selecionar anúncio para destaque
Caso o anúncio seja para destaque, o utilizador terá que preencher mais alguns dados, tal como podemos ver na gura 5.22.
CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 61
Figura 5.22: Dados para colocar o anúncio em destaque
Para terminar o formulário, o utilizador poderá escolher se quer inserir imagens para o anúncio, selecionando a check box, tal como podemos ver na gura 5.23.
Figura 5.23: Selecionar imagens para o anúncio
Caso o utilizador deseje inserir imagens para o anúncio, terá que selecionar o cheiro a partir do seu computador, tal como podemos ver na gura 5.24. Apenas são aceites cheiros png e jpg, com um determinado tamanho. Em anexo poderá ser consultado um exemplo do código que guarda as imagens numa pasta do sistema de cheiros e o caminho dessas imagens na base de dados. Já que a pasta onde as imagens cam é sempre a mesma, para que não haja problemas com imagens que tenham o mesmo nome, foi adicionado o dia, mês, ano, horas, minutos, segundos e milissegundos, para resolver esse problema. O tempo é encriptado usando o algoritmo MD5Hash.