• Nenhum resultado encontrado

Biblioteca Digital do IPG: Relatório de Projeto - Plataforma de anúncios online, Anuncie aqui já

N/A
N/A
Protected

Academic year: 2021

Share "Biblioteca Digital do IPG: Relatório de Projeto - Plataforma de anúncios online, Anuncie aqui já"

Copied!
92
0
0

Texto

(1)
(2)

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 1009988

Projeto Aplicado no Curso

de Engenharia Informática em contexto de estágio

(3)

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 1009988

Projeto 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.

(4)

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.

(5)

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

(6)

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

(7)

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 . . . 17

2.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

(8)

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

(9)

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

(10)

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

(11)

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

(12)

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

(13)

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

(14)

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.

(15)

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.

(16)

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

(17)

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.

(18)

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.

(19)

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;

(20)

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/.

(21)

CAPÍTULO 2. ESTADO DA ARTE 18

(22)

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/.

(23)

CAPÍTULO 2. ESTADO DA ARTE 20

(24)

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/.

(25)

CAPÍTULO 2. ESTADO DA ARTE 22

(26)

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.

(27)

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.

(28)

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.

(29)

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.

(30)

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.

(31)

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.

(32)

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 */ }

(33)

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.

(34)

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); }

(35)

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.

(36)

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.

(37)

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.

(38)

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.

(39)

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 36

(40)

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.

(41)

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.

(42)

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 39

(43)

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.

(44)

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.

(45)

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.

(46)

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.

(47)

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.

(48)

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.

(49)

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)

(50)

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)

(51)

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.

(52)

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"; } } }

(53)

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).

(54)

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");

(55)

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.

(56)

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.

(57)

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)

(58)

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.

(59)

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 56

(60)

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.

(61)

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.

(62)

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.

(63)

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.

(64)

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.

Referências

Documentos relacionados

O primeiro cenário inflacionário proposto em 1981 pelo físico norte americano Alan Guth resolve o problema da planura e o problema do horizonte para os quais o modelo cosmológico

Dentre os fatores que influem na ocorrência de deformação permanente proveniente da camada de revestimento asfáltico, destacam-se as características dos agregados

Sendo assim, para maior estabilidade do resultado final do cálculo e para amenizar algum tipo de erro ou interferência causada ou pelo sinal de entrada ou por

9 - CARACTERÍSTICAS DA PRECIPITAÇÃO PLUVIOMETRICA EM ANOS SECOS POSTO... POSTO:

Observou-se a influência significativa do tempo de cura para o incremento da ação da associação polimérica, visto que todos os solos estudados tiveram ganhos

Dispositivos de Supervisão Externos lDSE) Dispositivos de Supervisão Internas ( • SI). pria arquitetura do computador, sendo muitas vêzes fornecidos como elemento

K= Eu acho que o rádio é um desafio constante, porque todo mundo acha que é assim como o livro, que vai acabar, que as pessoas não vão mais ler, não vão mais folear um jornal,