• Nenhum resultado encontrado

Biblioteca Digital do IPG: Relatório de Projeto - Gestão de Reservas de um Hotel e Pedidos do Restaurante

N/A
N/A
Protected

Academic year: 2021

Share "Biblioteca Digital do IPG: Relatório de Projeto - Gestão de Reservas de um Hotel e Pedidos do Restaurante"

Copied!
85
0
0

Texto

(1)
(2)

Instituto Politécnico da Guarda

Escola Superior de Tecnologia e Gestão

Gestão de Reservas de um Hotel e Pedidos do

Restaurante

João Ricardo da Costa Nunes - No 1009720

Projeto Aplicado no Curso

de Engenharia Informática

(3)

Instituto Politécnico da Guarda

Escola Superior de Tecnologia e Gestão

Gestão de Reservas de um Hotel e Pedidos do

Restaurante

João Ricardo da Costa Nunes - No 1009720

Projeto Aplicado no Curso

de Engenharia Informática

Orientador: Mestre Paulo Jorge Costa Nunes da Unidade

Técnico-Cientíca de Informática da ESTG.

(4)

Agradecimentos

O desempenho no desenvolvimento deste projeto não teria sido o mesmo sem o apoio, a colaboração e a paciência de algumas pessoas, às quais gostaria de agradecer. Em primeiro lugar, como não poderia deixar de ser, quero deixar um agradecimento a todos os familiares e amigos que sempre me apoiaram e incentivaram durante o percurso deste projeto.

Em segundo lugar, um agradecimento aos professores da Unidade Curricular Projeto de Informática, em especial ao Professor Paulo Nunes e Professor Noel Lopes.

(5)

Resumo

Este documento descreve o trabalho realizado no âmbito da Unidade Curricular de Projeto de Informática da Licenciatura em Engenharia Informática, na Escola Superior de Tecnologia e Gestão do Instituto Politécnico da Guarda.

A evolução da tecnologia permite cada vez mais a criação de aplicações web. O facto de poder fazer reservas num hotel a partir de casa e guardar os dados em formato digital faz com que a procura de aplicações para este efeito cresça cada vez mais O trabalho consistiu em desenvolver uma aplicação web para fazer a gestão de reservas de um hotel e uma aplicação para um dispositivo móvel para a gestão de pedidos do restaurante desse mesmo hotel. A aplicação web foi desenvolvida na linguagem ASP.NET e C#, e a base de dados em SQL Server. Já a aplicação móvel foi desenvolvida para o sistema operativo Windows Phone e C#, com recurso a um WCF Service e Linq to Entities.

A aplicação web permite ao cliente consultar quartos disponíveis e fazer reservas de quartos. Além desta aplicação, foi também criada uma plataforma de gestão para os funcionários fazerem o tratamento das reservas e uma plataforma para a administração para a edição de conteúdos do website. A aplicação para o dispositivo móvel permite ao funcionário do restaurante enviar os pedidos sem ter que se deslocar até à cozinha.

Palavras Chave

ASP.NET, C#, Aplicação Web, Aplicação para Dispositivo Móvel, WCF, Win-dows Phone.

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

The evolution of technology increasingly allows the creation of web applications. The possibility of making a hotel reservation from home and save the data in digital format increases the search of applications.

The work consisted in developing a web application to manage a hotel reservation and an application for a mobile device to manage requests from the hotel restaurant. The web application was developed in language ASP.NET and C, the database in SQL Server. The mobile application has been developed for the Windows Phone operating system and C using a WCF Service and Linq to Entities. The web appli-cation allows customers to view available rooms and make room reservations. Also has been created a platform for management employees to the treatment of reserves and a platform for the administration to edit website content. The application for the mobile device allows the employee to send requests to the restaurant without having to move to the kitchen

Key words

ASP.NET, C#, Web Application, Application for Mobile Device, WCF, Win-dows Phone.

(7)

Conteúdo

1 Introdução 13 1.1 Motivação . . . 14 1.2 Solução . . . 14 1.3 Contribuição . . . 15 1.4 Estrutura do documento . . . 15

2 Denição do problema e objetivos previstos 16 2.1 Denição do problema . . . 16

2.2 Objetivos previstos . . . 17

3 Metodologia e resultados esperados 18 3.1 Metodologia . . . 18

3.2 Descrição das tarefas . . . 18

3.3 Resultados esperados . . . 19

4 Estado da Arte 21 4.1 Hotéis Vila Galé . . . 21

4.2 Natura IMB Hotels . . . 24

4.3 Bematech . . . 27 5 Tecnologias utilizadas 28 5.1 Tecnologias web . . . 28 5.1.1 HTML . . . 28 5.1.2 CSS . . . 29 5.1.3 ASP.NET . . . 29 5.1.4 C# . . . 30 5.1.5 SQL Server . . . 31 5.1.6 Javascript . . . 31 5.1.7 WCF . . . 31 5.1.8 Linq to Entities . . . 32 5.2 Ferramentas utilizadas . . . 33

5.2.1 Microsoft Visual Studio 2010 . . . 33

6 Implementação da solução 34 6.1 Base de Dados . . . 34

6.1.1 Modelo Relacional . . . 35

6.1.2 Descrição das tabelas . . . 37 5

(8)

6.1.2.1 Tabela Clientes . . . 37 6.1.2.2 Tabela Funcionários . . . 37 6.1.2.3 Tabela Mensagens . . . 37 6.1.2.4 Tabela Notícias . . . 38 6.1.2.5 Tabela Quartos . . . 38 6.1.2.6 Tabela Reserva . . . 38 6.1.2.7 Tabela Reserva/Quarto . . . 39 6.1.2.8 Tabela Serviços . . . 39 6.1.2.9 Tabela Reserva/Serviços . . . 40 6.1.2.10 Tabela TiposQuartos . . . 40 6.1.2.11 Tabela ProdutosRestaurante . . . 40 6.1.2.12 Tabela PedidosRestaurante . . . 41 6.1.2.13 Tabela ProdutosPedidos . . . 41 6.2 FrontOce . . . 42

6.2.1 Utilizador Não Autenticado . . . 42

6.2.1.1 Mapa do Site . . . 42

6.2.1.2 Registo de Utilizadores . . . 43

6.2.2 Utilizador Autenticado . . . 44

6.2.2.1 Mapa do Site . . . 44

6.2.2.2 Home Page . . . 44

6.2.2.3 Formulário das Reservas . . . 46

6.2.2.4 Envio de Mensagens ao Hotel . . . 54

6.3 BackOce . . . 55 6.3.1 Funcionários . . . 55 6.3.1.1 Mapa do Site . . . 55 6.3.1.2 Home Page . . . 56 6.3.1.3 Reservas Pendentes . . . 56 6.3.1.4 Reservas Conrmadas . . . 59 6.3.1.5 Reservas Especiais . . . 61 6.3.1.6 Mensagens . . . 63 6.3.2 Administradores . . . 63 6.3.2.1 Mapa do Site . . . 63 6.3.2.2 Home Page . . . 64 6.3.2.3 Notícias . . . 65 6.3.2.4 Registar Funcionários . . . 67

6.4 Gestão de Pedidos do Restaurante . . . 68

6.4.1 Menu Mesas . . . 68

6.4.2 Lista de Pedidos por Mesa . . . 70

6.4.3 Pedir Pedido . . . 70

6.5 Importância do Login . . . 73

6.6 Divulgação Online . . . 73

6.6.1 Domínios . . . 73

(9)

7 Conclusões e trabalho futuro 74 7.1 Conclusões . . . 74 7.2 Trabalho futuro . . . 74

A Listagem de programas 79

A.1 Código para Enviar Email . . . 79 A.2 Código Imprimir Fatura . . . 80 A.3 Código para mostrar quartos disponíveis na página atribuir quartos . 81 A.4 Código inserir uma reserva normal . . . 82

(10)

Lista de Figuras

3.1 Tarefas. . . 19

3.2 Mapa de Gantt. . . 19

4.1 1o Passo Hotéis Vila Galé. . . 22

4.2 2o Passo Hotéis Vila Galé. . . 23

4.3 3o Passo Hotéis Vila Galé. . . 23

4.4 4o Passo Hotéis Vila Galé. . . 24

4.5 1o Passo Natura IMG Hotels. . . 25

4.6 2o Passo Natura IMG Hotels. . . 25

4.7 3o Passo Natura IMG Hotels. . . 26

4.8 4o Passo Natura IMG Hotels. . . 26

4.9 5o Passo Natura IMG Hotels. . . 27

5.1 Data Source do Windows Phone 7. . . 32

6.1 Arquitetura ASP.NET. . . 34

6.2 Modelo relacional para gestão de utilizadores. . . 35

6.3 Modelo relacional para a gestão de reservas. . . 36

6.4 Modelo relacional para a gestão do restaurante. . . 36

6.5 Formulário para Criar Utilizador. . . 43

6.6 Home Page. . . 45

6.7 Formulário Reserva. . . 46

6.8 Calendário. . . 47

6.9 Exemplo de erros. . . 47

6.10 Lista de quartos. . . 48

6.11 Dados da Base de Dados. . . 48

6.12 Quartos Ocupados. . . 49

6.13 Página Detalhes Reserva. . . 49

6.14 Exemplo de subtração dos quartos disponíveis. . . 50

6.15 Página Detalhes Reserva. . . 50

6.16 Página Finalizar Reserva Dados Cliente. . . 51

6.17 Página Finalizar Reserva Dados Reserva. . . 52

6.18 Página Finalizar Reserva. . . 52

6.19 Popup para imprimir. . . 53

6.20 Página Lista das Minhas Reservas. . . 53

6.21 Página Detalhe das Minhas Reservas. . . 54

6.22 Página Contactos. . . 54

6.23 Home Page Funcionários. . . 56 8

(11)

6.24 Lista Reservas Pendentes. . . 57

6.25 Página atribuir quartos. . . 58

6.26 Número dos quartos disponíveis. . . 58

6.27 Reservas Conrmadas. . . 59

6.28 Atribuir Serviços. . . 60

6.29 Editar Serviços. . . 60

6.30 Imprimir Reserva Conrmada. . . 61

6.31 Reservas Especiais. . . 62 6.32 Resposta às mensagens. . . 63 6.33 Home Page. . . 64 6.34 Editar notícias. . . 65 6.35 Notícias. . . 66 6.36 Registar Funcionários. . . 67 6.37 Menu Mesas. . . 69

6.38 Lista Pedidos por Mesa. . . 70

6.39 Pedir Produto. . . 71

(12)

Lista de Tabelas

6.1 Estrutura da tabela dos Clientes. . . 37

6.2 Estrutura da tabela dos Funcionários. . . 37

6.3 Estrutura da tabela das Mensagens. . . 38

6.4 Estrutura da tabela das Notícias. . . 38

6.5 Estrutura da tabela dos Quartos. . . 38

6.6 Estrutura da tabela das Reservas. . . 39

6.7 Estrutura da tabela dos Reserva/Quarto. . . 39

6.8 Estrutura da tabela dos Serviços. . . 40

6.9 Estrutura da tabela dos Reserva/Serviços. . . 40

6.10 Estrutura da tabela dos Tipos de Quartos. . . 40

6.11 Estrutura da tabela dos Produtos do Restaurante. . . 41

6.12 Estrutura da tabela dos Pedidos do Restaurante. . . 41

6.13 Estrutura da tabela dos Produtos Pedidos. . . 41

(13)

Lista de listagens

1 Exemplo de código HTML. . . 29

2 Exemplo de código ASP.NET. . . 30

3 Exemplo de um query em Linq to Entities. . . 33

4 Exemplo Subtract de datas. . . 46

5 Query para mostrar número de quartos ocupados. . . 49

6 Query para buscar os dados do cliente online. . . 51

7 Código para abrir a popup para imprimir. . . 52

8 Objetos HTML no C#. . . 65

9 Transferir imagens para a pasta do projeto. . . 66

10 Registar Funcionários. . . 68

11 Exemplo de função de um WCF. . . 68

12 Pintar mesas ocupadas. . . 69

13 Query que vai buscar os pratos para a list picker. . . 71

14 Colocar dos pratos na list picker. . . 71

15 Inserir Pedidos na Base de Dados. . . 72

(14)

Glossário

FTP  File Transfer Protocol em português Protocolo de transferência de cheiros. IP  Internet Protocol em português Protocolo de internet.

Open Web Platform  coleção de tecnologias Web desenvolvidas pela W3C e por outros corpos de normalização, como o Unicode Consortium, Internet Engineering Task Force, entre outros.

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.

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.

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.

HTTP  Hipertext Transfer Protocol, ou em Português, Protocolo de Transferência de Hipertexto é um protocolo de comunicação.

Unicode  padrão que permite aos computadores representar e manipular, de forma consistente, texto de qualquer sistema de escrita existente

Visual Studio  é um pacote de programas da Microsoft para desenvolvimento de software.

PK  Primary Key - Chave Primária. FK Foreign Key - Chave Estrangeira.

Site  Um website ou site é um conjunto de páginas web, isto é, de hipertextos acessíveis geralmente pelo protocolo HTTP na internet.

CSS  É a abreviatura para Cascading Style Sheets, é uma linguagem que dene estilos às paginas web.

ASP.NET  É a abreviatura para Active Server Pages, é um ambiente de desen-volvimento de aplicações web de pequeno ou grande porte.

WCF  É a abreviatura para Windows Communication Foundation, é uma fra-mework para a construção de aplicações orientadas a services.

Base de Dados  Conjunto de dados estruturados e relacionados entre si.

(15)

Capítulo 1

Introdução

O projeto consistiu em desenvolver duas aplicações. A primeira é uma aplicação Web para a gestão de reservas de um Hotel. A aplicação destina-se aos utilizadores da Internet que pretendam reservar quartos sem qualquer custo adicional e, à admi-nistração, a gestão das reservas dos clientes. A segunda aplicação é para dispositivos móveis com o sistema operativo Windows Phone, de modo a permitir a gestão de pedidos do restaurante do hotel. O funcionário, através de um dispositivo móvel, comunica para a base de dados os pedidos que cada cliente faz, sendo depois lidos na cozinha.

Os dispositivos móveis têm capacidade de armazenamento, de realizar processa-mento, de trocar informações via rede e, devido ao seu reduzido tamanho, de ser transportado facilmente pelo seu utilizador [5]. Com os dispositivos móveis o utili-zador tem acesso a serviços e informações em qualquer lugar e a qualquer momento. Um funcionário de um restaurante tem de se movimentar constantemente entre as diversas mesas e a cozinha para atender os clientes, efetuar os pedidos à cozinha e servir as refeições. A utilização de um dispositivo móvel pelo funcionário permite simplicar o processo de comunicação entre os funcionários e os cozinheiros e au-mentar a sua taxa, ou seja, mais pedidos por unidade de tempo. O trabalho do funcionário ca menos cansativo porque evita as viagens constantes desde a sala do restaurante até à cozinha. Desta forma, o funcionário pode atender os clientes de uma forma mais personalizada e mais rápida porque o pedido chega à cozinha momentos depois de ter sido efetuado. Por outro lado, enquanto o funcionário se desloca à cozinha ou ao bar para obter os artigos, já outro funcionário os selecionou e colocou à sua disposição.

Nas últimas décadas a constante evolução das tecnologias e a aderência aos mercados virtuais por parte dos utilizadores, obrigou ao desenvolvimento de aplicações online por parte das empresas, de modo a não perderem competitividade.

Inicialmente os websites eram maioritariamente na linguagem HTML onde não havia a preocupação com o design e a apresentação gráca na internet. Em apenas 6 anos o design evoluiu signicativamente que tornou os layouts irreconhecíveis com os anteriores.

Com o passar dos anos, juntamente com a competitividade entre as empresas e a evolução, o mais importante é ter um visual agradável e, ao mesmo tempo, atraente

(16)

14 CAPÍTULO 1. INTRODUÇÃO e cativante para o utilizador, onde a Home Page contenha amostras do conteúdo que o website pode oferecer. [3]

Tão ou mais importante num website, é também a utilidade para o utilizador. O facto de o utilizador poder fazer quase tudo através de um computador torna a internet um meio apetecível e com grande aderência.

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; • Gestão de tempo e cumprimento de prazos;

O projeto realizado obedeceu as seguintes condições:

• Ter um orientador docente da Unidade Técnico-Cientíca de informática da ESTG do Instituto Politécnico da Guarda;

• Ter um plano de desenvolvimento aprovado pelo docente;

1.1 Motivação

A principal motivação para o desenvolvimento deste projeto é a possibilidade de aprofundar os conhecimentos adquiridos de ASP.NET e C#, e utilizar novas tecno-logias como WCF Service e Linq to Entities, de forma a desenvolver duas aplicações: gestão de reservas de hotel e gestão de pedidos de restaurante.

A aplicação para a gestão de reservas de um hotel permite, por um lado, simplicar a tarefa de reservar hotel aos clientes e, por outro, permite à administração do hotel reduzir o número de tarefas de gestão de reservas, tais como registar dados de reservas efetuadas via telefone, fax ou correio eletrónico.

A aplicação para a gestão de pedidos na sala de um restaurante através de um dispositivo móvel com o sistema operativo Windows Phone, permite atingir vários objetivos de uma só vez: simplicar as tarefas dos funcionários que servem à mesa no restaurante, personalizar o atendimento ao cliente e aumentar a velocidade de satisfação dos pedido por parte da cozinha do restaurante.

1.2 Solução

A solução consiste em desenvolver duas aplicações:

1. Uma aplicação web com um FrontOce para os clientes efetuarem reservas no hotel, e um BackOce para os funcionários e administradores fazerem a gestão das reservas.

(17)

1.3. CONTRIBUIÇÃO 15

1.3 Contribuição

A contribuição principal deste trabalho é o desenvolvimento e implementação de uma aplicação que ajude na gestão de reservas do hotel para evitar uma má gestão e perdas de dados.

A aplicação para o dispositivo móvel de gestão de pedidos do restaurante serve para ganhar tempo tanto aos empregados como aos clientes que esperam pelos pedidos, evitando assim que os empregados do restaurante tenham de se deslocar à cozinha para comunicar os pedidos.

1.4 Estrutura do documento

O documento compreende cinco capítulos para além do presente capítulo, e está organizado da seguinte forma:

• No segundo capítulo, é descrita a denição do problema e os objetivos previs-tos;

• No terceiro capítulo, é descrita a metodologia e a calendarização do projeto; • No quarto capítulo; é descrito o estado da arte de algumas aplicações já

exis-tentes;

• No quinto capítulo, são descritas as tecnologias utilizadas na implementação do projeto;

• No sexto capítulo, é descrito de forma detalhada todo o trabalho desde a base de dados até a aplicação web e a aplicação para o dispositivo móvel;

• No sétimo e último capítulo, são apresentadas as considerações nais sobre o trabalho e possível trabalho futuro;

(18)

Capítulo 2

Denição do problema e objetivos

previstos

2.1 Denição do problema

Desenvolver uma aplicação web para a gestão de reservas de um hotel. A aplicação deve permitir aos clientes efetuarem pedidos de reservas de quartos, aparecendo uma lista dos quartos disponíveis para as datas que o cliente selecionou. Após o cliente conrmar o pedido de reserva será enviado um email com os dados da reserva. A aplicação web deverá ter uma área restrita a funcionários e administradores, onde os funcionários atribuem quartos às reservas dos clientes, atribuem também servi-ços pedidos pelos clientes às reservas e ainda alteram o estado das reservas. Já os administradores inserem novos quartos, editam os preços dos quartos, modicam as notícias da página principal e criam novas contas para funcionários ou administra-dores. Os administradores podem também inserir a ementa para o restaurante do hotel.

Desenvolver uma aplicação para dispositivo móvel que permita ao funcionário do restaurante ter um menu com as mesas livres e ocupadas, e em cada mesa poder abrir e fechar contas, mostrando também quando as contas estão abertas e quais os pedidos feitos por aquela mesa.

Os principais problemas a resolver são:

• Como registar e autenticar os utilizadores;

• Que sistema de gestão de base de dados utilizar para armazenar os dados das reservas e dos pedidos no restaurante;

• Denir sistema de navegação entre as páginas; • Denir os estilos (CSS) das páginas;

• Desenvolver as páginas web em ASP.NET/C# e HTML;

• Como calcular o total da reserva, após inserir serviços pedidos pelo cliente e editar as quantidades;

(19)

2.2. OBJETIVOS PREVISTOS 17 Os principais problemas a resolver na aplicação para o dispositivo móvel:

• Denir sistema de navegação entre as páginas; • Desenhar o interface gráco para a aplicação;

• Como trocar entre a dados da base de dados do website e o dispositivo móvel;

2.2 Objetivos previstos

Os principais objetivos denidos no início do projeto, foram:

• Desenvolver uma aplicação web para a gestão total de um hotel, quer a nível de reservas, de stocks, de funcionários e eventos;

• Desenvolver uma aplicação para dispositivo móvel com sistema operativo Win-dows Phone para a gestão de pedidos do restaurante do hotel;

• Integrar a aplicação para gestão de pedidos do restaurante com a base de dados da aplicação web;

(20)

Capítulo 3

Metodologia e resultados esperados

3.1 Metodologia

A metodologia utilizada para desenvolver, implementar e testar a aplicação web foi a seguinte:

1. Usar o HTML como linguagem base da construção das páginas web. 2. Usar CSS para denir os estilos das páginas web.

3. Usar Javascript para fazer slide de imagens.

4. Usar ASP.NET para a construção das páginas web. 5. Utilizar o C# para programar os objetos do ASP.NET. 6. Utilizar o SQL SERVER para a construção da base de dados.

7. Utilizar Linq to Entities para aceder do dispositivo móvel à base de dados. 8. Realização de testes e análise da eciência e abilidade da aplicação colocando

pessoas que nunca viram o trabalho, a utilizar o software.

9. Visual Studio 2010 como ambiente de programação para todo projeto. 10. Utilizar o latex para produzir um relatório pata documentar o projeto.

3.2 Descrição das tarefas

As principais tarefas foram:

• Tarefa 1  Análise dos requisitos da aplicação web; • Tarefa 2  Estudo das tecnologias a utilizar.

• Tarefa 3  Criar a base de dados; 18

(21)

3.3. RESULTADOS ESPERADOS 19 • Tarefa 4  Denir os estilos (CSS) para todas páginas;

• Tarefa 5  Criar as páginas ASP.NET/C# como linguagem base o HTML; • Tarefa 6  Testes da aplicação;

• Tarefa 7  Elaboração do relatório.

O agendamento das tarefas é apresentado na gura 3.1.

Figura 3.1: Tarefas. O respetivo Mapa de Gantt é apresentado na gura 3.2.

Figura 3.2: Mapa de Gantt.

3.3 Resultados esperados

No nal do projeto espera-se que a aplicação web esteja pronta a ser utilizada pelos utilizadores e a aplicação para o restaurante pelos funcionários do restaurante. Na área dos clientes será possível:

1. Consultar a lista de quartos que estão disponíveis nas datas selecionadas; 2. Efetuar reservas de no máximo três quartos;

3. Consultar o estado das reservas na aplicação web e por correio eletrónico; 4. Alterar os dados pessoais da conta.

(22)

20 CAPÍTULO 3. METODOLOGIA E RESULTADOS ESPERADOS 1. Alterar o estado das reservas;

2. Atribuir os quartos às reservas; 3. Atribuir serviços às reservas;

4. Responder a questões colocadas pelos utilizadores através de correio eletrónico; 5. Alterar os dados pessoais.

Na área dos administradores será possível:

1. Criar contas de funcionários ou administradores; 2. Editar notícias da página principal;

3. Inserir,editar e eliminar quartos; 4. Alterar preços dos quartos; 5. Inserir,editar e eliminar serviços;

6. Inserir,editar e eliminar produtos à ementa do restaurante para ser visível no dispositivo móvel.

Na aplicação para o restaurante será possível:

1. Enviar pedidos dos cliente para a base de dados;

(23)

Capítulo 4

Estado da Arte

No âmbito da gestão hoteleira, praticamente todos hotéis têm, hoje em dia, um website para fazer reservas online de quartos, pois pela internet não há custos adici-onais para o cliente, logo a aderência a este tipo de aplicações é grande. Poder fazer pagamentos pela internet é também um fator aliciante para os clientes.

Quanto à aplicação para a gestão de pedidos, existem alguns restaurantes que já usam este tipo de sistemas. O facto de poder tratar dos pedidos através de um dispositivo móvel sem ter de se deslocar até à cozinha é aliciante para os restaurantes, dependendo do seu número de mesas, pois se este tiver poucas mesas, talvez não seja benéco usar este tipo de sistema.

4.1 Hotéis Vila Galé

Nos Hotéis Vila Galé, para fazer reservas de quartos é bastante simples, bastando apenas escolher as datas de entrada e saída, o tipo de quarto pretendido, um serviço que pretenda e preencher os dados pessoais. Os clientes não precisam de criar uma conta, mas têm de inserir os seus dados pessoais em todas reservas que façam no hotel. É possível reservar vários quartos numa reserva. Quanto a preços de quartos, estes dependem da localização do hotel e também do número de estrelas - quanto mais estrelas, mais caro será o preço por noite. Por exemplo, no Hotel Vila Galé do Porto com quarto estrelas, o preço de um quarto individual é de 58 Euros por noite; já no Hotel Vila Galé Atlântico no Alentejo e Algarve, o preço do mesmo tipo de quarto é de 47 Euros por noite.

A aplicação web pode ser vista na gura com o formulário para selecionar o hotel e as datas Figura(4.1).

O segundo passo é para ver a disponibilidade e os preços dos quartos do hotel (Figura 4.2).

O terceiro passo são os detalhes da reserva: selecionar os quartos desejados e os serviços, mostrando também os termos e as condições. No nal da página, o cliente tem de introduzir os seus dados pessoais, pois, neste website, o cliente não necessita de ter conta no hotel para reservar quartos (Figura 4.3).

(24)

22 CAPÍTULO 4. ESTADO DA ARTE

(25)

4.1. HOTÉIS VILA GALÉ 23

Figura 4.2: 2o Passo Hotéis Vila Galé.

(26)

24 CAPÍTULO 4. ESTADO DA ARTE O quarto e último passo a reserva já está efetuada, o cliente pode imprimir os dados que selecionou da reserva (Figura 4.4).

Figura 4.4: 4o Passo Hotéis Vila Galé.

A aplicação pode ser vista no endereço em https://www.vilagale.pt/.

4.2 Natura IMB Hotels

O hotel Lusitânia, na Guarda, faz parte do grupo Natura IMB Hotels e também tem um sistema bastante simples de efetuar reserva de quartos. No entanto, só é possível reservar um quarto em cada reserva, mas o cliente também não precisa de ter uma conta no grupo Natura IMB Hotels, basta preencher um formulário durante o processo da reserva. Neste grupo de hotéis, é possível efetuar o pagamento logo após o pedido de reserva através de cartão de credito. Quanto a preços, o hotel é de quatro estrelas e o preço de um quarto duplo casal é de 54 Euros.

O hotel Vanguarda na Guarda também faz parte do mesmo grupo hoteleiro. O formulário para efetuar reservas é o mesmo e, em comparação com o hotel Lusitânia, os preços pouco variam. O hotel Vanguarda é de três estrelas e o preço de um quarto duplo casal é de 51 Euros.

Como podemos ver os preços variam em relação à localização e ao número de estrelas do hotel. Neste caso, o hotel Vanguarda, que tem três estrelas, está mais no centro da cidade é um pouco mais barato (3 Euros) do que o hotel Lusitânia que tem quatro estrelas, mas está mais longe do centro da cidade.

O primeiro passo é para selecionar as datas que o cliente pretende para reservar os quartos (4.5).

O segundo passo é para escolher o hotel que o cliente pretende e os quartos com os respetivos preços (Figura 4.6).

(27)

4.2. NATURA IMB HOTELS 25

Figura 4.5: 1o Passo Natura IMG Hotels.

(28)

26 CAPÍTULO 4. ESTADO DA ARTE O terceiro passo o cliente escolhe qual o tipo de quarto pretende reservar (Figura 4.7).

Figura 4.7: 3o Passo Natura IMG Hotels.

O quarto passo o cliente tem de inserir os seus dados pessoais e aceitar os termos e as condições do hotel e reserva será feita (Figura 4.8).

Figura 4.8: 4o Passo Natura IMG Hotels.

O quinto passo o cliente conrma os dados que inseriu e pode imprimir-los (Figura 4.9).

(29)

4.3. BEMATECH 27

Figura 4.9: 5o Passo Natura IMG Hotels.

4.3 Bematech

Bematech é uma empresa brasileira do segmento da tecnologia para o comercio. Esta empresa desenvolveu uma aplicação que permite aos funcionários do restaurante realizar os pedidos na mesa e enviar automaticamente para a cozinha, tendo ainda acesso ao mapa das mesas disponíveis, assim como a conta nal do cliente. Estes recursos permitem reduzir os custos e melhorar a velocidade do atendimento aos clientes.

(30)

Capítulo 5

Tecnologias utilizadas

As tecnologias para o desenvolvimento de aplicações web são padronizadas pelo W3C. O World Wide Web Consortium é um consórcio de empresas de tecnologia, fundado por Tim Berners-Lee, em 1994, para tentar levar a web a atingir o seu po-tencial máximo através de protocolos comuns que promovem a evolução e asseguram a sua interoperabilidade.

O W3C desenvolve padrões para a criação e a interpretação dos conteúdos para a Web. Sites desenvolvidos nestes padrões podem ser visualizados por qualquer pessoa ou tecnologia, independentemente do hardware ou do software utilizados, sendo de maneira rápida e compatível com os novos padrões e tecnologias que possam surgir com a evolução da internet.[9]

5.1 Tecnologias web

5.1.1 HTML

HTML é a linguagem base na qual se denem as páginas web. Trata-se de um conjunto de tags que servem para denir como são mostrados os objetos na página. É uma linguagem muito fácil de aprender, qualquer pessoa pode aprender facilmente e fazer o seu próprio website. Por exemplo, a tag <b> signica que o texto ca em negrito (bold), para fechar a tag </b>; <p> é paragrafo; <a> são links. Para fazer um website basta usar um editor de texto como notepadd++ ou até mesmo o bloco de notas, apenas tem de ter a extensão .html ou .htm.[1].

Esta tecnologia foi usada como a linguagem base na construção das páginas web. Exemplo de código HTML Listagem 1.

(31)

5.1. TECNOLOGIAS WEB 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> <h2>Olá Mundo</h2> <h3>Olá Mundo</h3> <h4>Olá Mundo</h4> <b>Exemplo Tabela</b> <table> <tr> <td></td><td>Coluna 1</td><td>Coluna 2</td> </tr> <tr>

<td>Linha 1</td><td>Olá </td><td>Olá </td> </tr>

<tr>

<td>Linha 2</td><td>Mundo </td><td>Mundo </td> </tr> </table> <p>Exemplo Teste HTML.</p> </body> </html>

5.1.2 CSS

CSS é a abreviatura para Cascading Style Sheets. É uma linguagem que dene estilos das paginas web: controla fontes, cores, margens, linhas, alturas, larguras, imagens de fundo, entre outras.

O HTML também pode ser usado para denir os layouts dos websites. No entanto, o CSS é mais preciso e sosticado, pois tudo o que é relacionado com layout ca num cheiro único. O CSS é suportado por todos os navegadores e é usado para formatar conteúdos estruturados, enquanto o HTML é usado para estruturar conteúdos.

Principais benefícios do uso de CSS:

• Controle do layout de vários documentos a partir de uma simples folha de estilos;

• Maior precisão no controle do layout [10];

Esta tecnologia foi usada denir os estilos(cores, etc) da página web.

5.1.3 ASP.NET

ASP.NET (Active Server Pages) é uma tecnologia da Microsoft que é uma evolução do ASP. É um ambiente de desenvolvimento de aplicações web, de pequeno ou grande

(32)

30 CAPÍTULO 5. TECNOLOGIAS UTILIZADAS porte. Estes aplicativos correm no servidor web e necessitam do .NET Framework, onde as páginas vão car disponíveis para serem acedidas por qualquer navegador. ASP.NET tem como principais características a segurança; o facto de as páginas são compiladas antes de serem executadas ganham velocidade, estabilidade, intero-perabilidade; a orientação face a objetos; a inserção no .NET Framework, podendo utilizar as classes do mesmo; as páginas são desenvolvidas por controlos de inter-face, validation, data, html entre outros: a possibilidade de criar páginas ricas em recursos e dinâmicas com acesso à base de dados de maneira simples, devido ao IDE(Integrated Develop-ment Environment).

Até ao momento as páginas ASP.NET podem ser desenvolvidas em C#, Visual Basic ou J# [4].

Exemplo de código ASP Listagem 2.

Listagem 2 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>Teste</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>

Esta tecnologia foi usada para a construção das páginas web.

5.1.4 C#

C# é uma linguagem criada pela Microsoft, orientada a objetos, faz parte da sua plataforma .Net e foi baseada em C++ e Java. A linguagem foi criada juntamente com a arquitetura .NET, embora existam várias linguagens de programação que suportam esta tecnologia como o Visual Basic, C++ ou J#. C# é considerada o símbolo do .NET pelas seguintes razões:

• Foi criada do zero para funcionar nesta plataforma sem preocupações de com-patibilidade;

(33)

5.1. TECNOLOGIAS WEB 31 • A grande maioria das classes .NET Framework foram desenvolvidas em C#

[6];

Esta tecnologia foi usada para a construção das páginas web e para o dispositivo móvel.

5.1.5 SQL Server

SQL Server é um SGBD (Sistema de Gestão de Base de Dados) criado pela Micro-soft em parceria com a Sybase. A integração com o Framework .Net possibilita a construção de rotinas, utilizando as linguagens do .Net como Visual Basic e C#. Atualmente, é dos mais usados no mundo, tendo competidores como os sistemas MySQL ou Oracle.

O SQL Server é um dos melhores SGBD do mercado. Não obstante, está a perder espaço para o MySQL, pois o MySQL tem código livre e não tem nenhum custo. Um dos problemas do SQL Server é a diculdade, em algumas versões, do suporte para programas de outras empresas e a diculdade de instalar o programa em outros sistemas operativos que não sejam o Windows. [11]

Esta tecnologia foi usada para a criação da base de dados.

5.1.6 Javascript

Javascript é uma linguagem de programação utilizada para criar pequenos programas encarregados de realizar ações dentro do âmbito de um website. Trata-se de uma linguagem de programação do lado do cliente, pois é o navegador que suporta a carga de processamento. Graças à sua compatibilidade com a maioria dos navegadores modernos, é mais utilizada a linguagem de programação do lado do cliente.

Com Javascript podemos criar efeitos especiais nas páginas e denir interatividades com o utilizador. O navegador do cliente é o encarregado de interpretar as instruções Javascript e executa-las para realizar estes efeitos e interatividades, de modo que o maior recurso é o próprio navegador. [2]

Esta tecnologia foi usada para usar o estilos nas drop down lists e para os slides das páginas.

5.1.7 WCF

Windows Communication Foundation é uma framework para a construção de apli-cações orientadas a services. Através do WCF é possível enviar dados como men-sagens assíncronas de um endpoint para outro. Um endpoint pode ser parte de um serviço continuamente disponível, hospedado pelo IIS, ou pode ser hospedado numa aplicação. No WCF o relacionamento entre o endereço (Address - que dene onde o endpoint reside), o contrato (Contract - que dene o que o serviço vai fazer) e a vinculação (Binding - que dene como se comunicar com o serviço), a chamada endpoint.

(34)

32 CAPÍTULO 5. TECNOLOGIAS UTILIZADAS

Figura 5.1: Data Source do Windows Phone 7. Diferenças entre Web Service em ASP.NET e WCF Service

WCF é o substituto para todas as tecnologias web service anteriores à Microsoft. WCF faz muito mais do que os web service tradicionais. Com o WCF há um grau muito mais elevado de exibilidade e portabilidade do que no ASMX tradicional, por-que o WCF é projetado desde inicio para resumir todas as diferentes infraestruturas de programação distribuída, oferecidas pela Microsoft. Um endpoint no WCF pode ser comunicado com a mesma facilidade sobre SOAP/XML, pois ele pode comunicar através de TCP.

ASMX é mais antigo que o WCF e tudo o que se faz no ASMX pode ser feito no WCF. Basicamente o WCF tenta agrupar logicamente todas as diferentes formas de obter duas aplicações para comunicar no mundo da Microsoft. ASMX era apenas uma das muita maneiras e, por isso, está agora agrupado no "guarda-chuva"das capacidade do WCF.

Os Web Services podem ser acedidos apenas por HTTP e funcionam num ambiente sem estado, enquanto o WCF é exível, pois os seus serviços podem ser hospedados em diferentes tipos de aplicações. A principal diferença é que os Web Services usam o XmlSerializer, enquanto o WCF usa DataContractSerializer, que é melhor em desempenho em comparação ao XmlSerializer. [13]

Esta tecnologia foi usada como web service para comunicar o dispositivo móvel com a base de dados.

5.1.8 Linq to Entities

Lint to Entities foi usado para fazer conexões à base de dados da aplicação web através do dispositivo móvel. Linq to Entities fornece Language-Integrated Query (LINQ) e permite aos programadores criar queries no Entity Framework, usando o Visual Basic ou C#. Além disso, executa as consultas no Entity Framework,

(35)

5.2. FERRAMENTAS UTILIZADAS 33 e retorna objetos que podem ser usados tanto pelo Entity Framework como pelo LINQ. [12]

Exemplo de um query em Linq To Entities Listagem 3.

Esta tecnologia foi usada para aceder à base de dados para as tabelas relacionadas com a gestão dos pedidos do restaurante.

Listagem 3 Exemplo de um query em Linq to Entities.

HotelEntities1 GetIdPratoDB = new HotelEntities1(); //para conectar as tabelas da base de dados

IEnumerable<int> query = from n in GetIdPratoDB.ProdutosRestaurante where n.nomeProdutoRes.Length > 0 && n.nomeProdutoRes == sopa orderby n.nomeProdutoRes descending

select n.id_produtoRes;

5.2 Ferramentas utilizadas

5.2.1 Microsoft Visual Studio 2010

O Microsoft Visual Studio é um programa criado para o desenvolvimento de software (especialmente para .NET Framework) e para as linguagens Visual Basic, C, C++, C# e J#. Também é possível desenvolver aplicações web usando a plataforma ASP.NET. Em 2010 foi lançado a versão com o objetivo de ser IDE mais completa, sendo possível desenvolver aplicações para o Windows Phone, SharePoint, além de melhorar os Windows Forms, Web Forms e também plataformas como Microsoft XNA. [14].

(36)

Capítulo 6

Implementação da solução

O BackOce, FrontOce e a base de dados foram desenvolvidos no Microsoft Visual Studio 2010 com recurso às tecnologias HTML, CSS, Javascript, ASP.NET e SQL Server. A arquitetura utilizada ao longo do projeto foi a seguinte:

Figura 6.1: Arquitetura ASP.NET.

6.1 Base de Dados

As tabelas da gestão dos utilizadores estão na base de dados chamada ASPNETDB.MDF. As restantes tabelas, tanto da gestão reservas como da gestão dos pedidos do res-taurante, estão na base de dados chamada Hotel.mdf.

(37)

6.1. BASE DE DADOS 35

6.1.1 Modelo Relacional

No modelo relacional estão guardados todos os dados do sistema de gestão de re-servas do hotel. Foram usados três modelos relacionais: um que, por defeito, está no SQL Server do Visual Studio e que serve para guardar utilizadores, privilégios (Figura 6.2), grupos, entre outros; outro com tudo o que é necessário para a gestão de reservas (Figura 6.3) e outro, o Entity Data Model, para ser utilizado o Linq To Entities de modo a fazer os queries para o dispositivo móvel (Figura 6.4). Mais à frente serão explicadas detalhadamente as tabelas do modelo relacional para a gestão de reservas e para a gestão do restaurante.

(38)

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

Figura 6.3: Modelo relacional para a gestão de reservas.

(39)

6.1. BASE DE DADOS 37

6.1.2 Descrição das tabelas

Aqui vão ser descritas as tabelas, juntamente com o dicionário de dados de cada uma.

6.1.2.1 Tabela Clientes

Na tabela Clientes estão os dados pessoais relativamente ao cliente como o nome, morada, telefone,BI, NIF, NIB e o e-mail. Na tabela 6.1 apresenta-se a estrutura da tabela dos clientes.

Campo Tipo Tamanho Validações Descrição

ID Cliente (PK) Inteiro 5 Maior que 0 Número sequencial que identica uni-vocamente cada cliente

Nome Texto 50 Carateres de A a Z Nome do cliente Morada Texto 256 Carateres de A a Z Morada do cliente Telefone Texto 9 De 9 a 15 dígitos Telefone do cliente

Email Texto 256 Carateres de A a Z Email do cliente BI Texto 9 De 7 a 9 dígitos BI do cliente NIF Texto 9 Até 9 dígitos NIF do cliente NIB Texto 21 Até 21 dígitos NIB do cliente Username Texto 256 Carateres de A a Z Username do cliente

Tabela 6.1: Estrutura da tabela dos Clientes.

Os clientes do hotel nem sempre podem ser portugueses então o telefone pode ir até 15 dígitos.

6.1.2.2 Tabela Funcionários

Na tabela Funcionários estão os dados pessoais relativamente aos funcionários como o nome, morada, telefone,BI, NIF, NIB, e-mail e a função. Na tabela 6.2 apresenta-se a estrutura da tabela dos funcionários.

Campo Tipo Tamanho Validações Descrição

ID Funcionario (PK) Inteiro 5 Maior que 0 Número sequencial que identica uni-vocamente cada funcionário

Nome Texto 50 Carateres de A a Z Nome do funcionário Morada Texto 256 Carateres de A a Z Morada do funcionário Telefone Inteiro 9 Até 9 dígitos Telefone do funcionário

Email Texto 256 Carateres de A a Z Email do funcionário BI Texto 9 De 7 a 9 dígitos BI do funcionário NIF Texto 9 Até 9 dígitos NIF do funcionário NIB Texto 21 Até 21 dígitos NIB do funcionário Username Texto 256 Carateres de A a Z Username do funcionário

Funcao Texto 256 Carateres de A a Z Função do funcionário

Tabela 6.2: Estrutura da tabela dos Funcionários. 6.1.2.3 Tabela Mensagens

A tabela Mensagens serve para questões ou testemunhos que os clientes pretendam fazer ao hotel. A estrutura da tabela apresenta os dados do cliente - nome e email, a mensagem e o assunto, a data do envio e um campo visto que informa o funcionário

(40)

38 CAPÍTULO 6. IMPLEMENTAÇÃO DA SOLUÇÃO se a mensagem já foi ou não lida. Na tabela 6.3 apresenta-se a estrutura da tabela das mensagens.

Campo Tipo Tamanho Validações Descrição

ID Mensagem (PK) Inteiro 5 Maior que 0 Número sequencial que iden-tica univocamente cada mensagem

Nome Texto 50 Carateres de A a Z Nome do cliente Email Texto 256 Carateres de A a Z Email do cliente Assunto Texto 100 Carateres de A a Z Assunto da mensagem Mensagem Texto MAX Carateres de A a Z Corpo da mensagem

Data Data e Hora DD/MM/YYYY

HH:MM:SS Data do envio da mensagem Visto Booleano True ou False 0 ou 1 Informa ao funcionário se a

mensagem já foi lida ou não

Tabela 6.3: Estrutura da tabela das Mensagens. 6.1.2.4 Tabela Notícias

A tabela Notícias serve para editar as notícias que se encontram na Home Page. Na tabela 6.4 apresenta-se a estrutura da tabela das notícias.

Campo Tipo Tamanho Validações Descrição

ID Noticia (PK) Inteiro 5 Maior que 0 Número sequencial que identica uni-vocamente cada notícia

Titulo Texto 10 Carateres de A a Z Título da notícia Noticia Texto MAX Carateres de A a Z Texto da notícia

Imagem Texto 100 Carateres de A a Z Caminho da imagem para a notícia

Tabela 6.4: Estrutura da tabela das Notícias. 6.1.2.5 Tabela Quartos

Na tabela 6.5 apresenta-se a estrutura da tabela dos quartos.

Campo Tipo Tamanho Validações Descrição

ID Quarto (PK) Inteiro 5 Maior que 0 Número sequencial que identica uni-vocamente cada quarto

Nr Quarto Inteiro 3 Maior que 100 Número de cada quarto

ID TipoQuarto (FK) Inteiro 5 Maior que 0 Número sequencial que identica uni-vocamente cada tipo de quarto

Tabela 6.5: Estrutura da tabela dos Quartos. 6.1.2.6 Tabela Reserva

A tabela Reserva serve para guardar os dados relativos às reservas, como as datas de entrada e saída, o ID do cliente, o custo da reserva, entre outros. Na tabela 6.6 apresenta-se a estrutura da tabela das reservas.

(41)

6.1. BASE DE DADOS 39

Campo Tipo Tamanho Validações Descrição

ID Reserva (PK) Inteiro 5 Maior que 0 Número sequencial que iden-tica univocamente cada re-serva

ID Cliente (FK) Inteiro 5 Maior que 0 Número sequencial que iden-tica univocamente o cliente ID Funcionario (FK) Inteiro 5 Maior que 0 Número sequencial que

iden-tica univocamente cada tipo de funcionário que valida a reserva (Permite Nulos) Data Pedido Data e Hora DD/MM/YYYY

HH:MM:SS Data do pedido da reserva Data Chegada Data e Hora DD/MM/YYYY

HH:MM:SS Data de check-in da reserva Data Partida Data e Hora DD/MM/YYYY

HH:MM:SS Data de check-out da reserva Custo Total Decimal 2 Maior que 0 Custo do preço dos quartos a multiplicar pelo número de dias

Estado Texto 10 Carateres de A a Z Estado da reserva (Pendente, Conrmada, Check-In, Check-Out e Cancelada) Pedido Texto 256 Carateres de A a Z Pedido dos quartos que o

cli-ente selecionou reservar Observacao Texto 256 Carateres de A a Z Uma observação que o cliente

pretenda escrever quando efe-tua a reserva (Permite Nulos) Nnoites Inteiro 3 Até 3 dígitos Número de noites que o

cli-ente estará no hotel

Nadultos Inteiro 2 Até 2 dígitos Número de adultos na reserva Ncrancas Inteiro 2 Até 2 dígitos Número de crianças na

re-serva

Custo Servicos Decimal 2 Maior que 0 Custo total dos serviços pe-didos pelo cliente durante a estadia no hotel

Total Decimal 2 Maior que 0 Custo total da reserva (Custo Total + Custo Servicos)

Tabela 6.6: Estrutura da tabela das Reservas. 6.1.2.7 Tabela Reserva/Quarto

A tabela Reserva/Quarto é uma tabela N para N onde guarda o ID da reserva e o ID dos quartos da reserva. Na tabela 6.7 apresenta-se a estrutura da tabela dos quartos.

Campo Tipo Tamanho Validações Descrição

ID Quarto (PK)(FK) Inteiro 5 Maior que 0 Número sequencial que identica uni-vocamente cada quarto

ID Reserva (PK)(FK) Inteiro 5 Maior que 0 Número sequencial que identica uni-vocamente cada reserva

Tabela 6.7: Estrutura da tabela dos Reserva/Quarto. 6.1.2.8 Tabela Serviços

A tabela Serviços é utilizada para guardar os serviços que os clientes podem pedir durante a sua estadia. Na tabela 6.8 apresenta-se a estrutura da tabela dos serviços.

(42)

40 CAPÍTULO 6. IMPLEMENTAÇÃO DA SOLUÇÃO

Campo Tipo Tamanho Validações Descrição

ID Servico (PK) Inteiro 5 Maior que 0 Número sequencial que identica uni-vocamente cada serviço

Tipo Servico Texto 20 Carateres de A a Z Nome do serviço Custo Decimal 2 Maior que 0 Custo de cada serviço

Tabela 6.8: Estrutura da tabela dos Serviços. 6.1.2.9 Tabela Reserva/Serviços

A tabela Reserva/Serviços é a tabela N para N, entre os serviços e as reservas. Os clientes podem pedir vários tipos de serviços durante a sua estadia. Na tabela 6.9 apresenta-se a estrutura da tabela dos Reserva/Serviços.

Campo Tipo Tamanho Validações Descrição

ID Servico (PK)(FK) Inteiro 5 Maior que 0 Número sequencial que identica uni-vocamente cada serviço

ID Reserva (PK)(FK) Inteiro 5 Maior que 0 Número sequencial que identica uni-vocamente cada reserva

Quantidade Inteiro 3 Maior que 0 Quantidade de cada serviço que é pe-dido pelo cliente

Tabela 6.9: Estrutura da tabela dos Reserva/Serviços. 6.1.2.10 Tabela TiposQuartos

A tabela Tipos de Quartos é onde são guardados os preços por noite de cada quarto, o total de quartos de cada tipo e ainda uma descrição. Na tabela 6.10 apresenta-se a estrutura da tabela dos tipos de quartos.

Campo Tipo Tamanho Validações Descrição

ID TipoQuarto (PK) Inteiro 5 Maior que 0 Número sequencial que identica uni-vocamente cada tipo de quarto Tipo Quarto Texto 20 Carateres de A a Z Nome do tipo de quarto

Total Quarto Inteiro 3 Maior que 0 Total de quarto existentes do hotel para cada tipo de quarto

Custo Decimal 2 Maior que 0 Custo de cada quarto por noite Descrição Texto 3 Carateres de A a Z Descrição do conteúdo do tipo de

quarto

Capacidade Inteiro 1 Maior que 0 Capacidade de pessoas para cada tipo de quarto

Tabela 6.10: Estrutura da tabela dos Tipos de Quartos. 6.1.2.11 Tabela ProdutosRestaurante

A tabela Produtos Restaurante guarda os produtos disponíveis para serem mostra-dos no dispositivo móvel no restaurante. Na tabela 6.11 apresenta-se a estrutura da tabela dos ProdutosRestaurante.

(43)

6.1. BASE DE DADOS 41

Campo Tipo Tamanho Validações Descrição

ID ProdutoRes (PK) Inteiro 5 Maior que 0 Número sequencial que identica uni-vocamente cada produto do restau-rante

NomeProdutoRes Texto 20 Carateres de A a Z Nome do produto do restaurante PrecoProdutoRes Decimal 3 Maior que 0 Custo de cada produto do restaurante CategoriaProdutoRes Texto 20 Carateres de A a Z Categoria do produto do restaurante (Sopa, Prato Principal, Bebida, Sobre-mesa, Outros)

Tabela 6.11: Estrutura da tabela dos Produtos do Restaurante. 6.1.2.12 Tabela PedidosRestaurante

A tabela Pedidos Restaurante é onde são guardados os pedidos por mesa dos clientes. Na tabela 6.12 apresenta-se a estrutura da tabela dos PedidosRestaurante.

Campo Tipo Tamanho Validações Descrição

ID PedidoRes (PK) Inteiro 5 Maior que 0 Número sequencial que identica uni-vocamente cada pedido por mesa do restaurante

Mesa Inteiro 2 Até 2 dígitos Número da mesa dos pedidos

PrecoTotal Decimal 3 Maior que 0 Custo total dos pedidos efetuados pela mesa

Estado Texto 20 Carateres de A a Z Estado da conta (Aberta ou Fechada)

Tabela 6.12: Estrutura da tabela dos Pedidos do Restaurante.

6.1.2.13 Tabela ProdutosPedidos

A tabela ProdutosPedidos é a tabela N para N, onde são guardados os vários pe-didos por mesa dos clientes. Na tabela 6.13 apresenta-se a estrutura da tabela dos PedidosRestaurante.

Campo Tipo Tamanho Validações Descrição

ID PedidoRes (PK)(FK) Inteiro 5 Maior que 0 Número sequencial que identica univocamente cada pedido por mesa do restaurante

ID ProdutoRes (PK)(FK) Inteiro 5 Maior que 0 Número sequencial que identica univocamente cada produto pedido por mesa do restaurante NomePedido Texto 20 Carateres de A a Z Nome do produto que o

cli-ente pediu

Quantidade Inteiro 3 Maior que 0 Quantidade do produto pe-dido

Preco Decimal 3 Maior que 0 Preço do produto pedido EstadoPedido Booleano True ou False 0 ou 1 Se for false signica que o

pedido ainda não foi reali-zado, se for 1 signica que o pedido já foi realizado pela cozinha

(44)

42 CAPÍTULO 6. IMPLEMENTAÇÃO DA SOLUÇÃO

6.2 FrontOce

O FrontOce é a parte da aplicação que se refere aos utilizadores nais, tendo estes clientes uma conta criada no website ou sendo apenas visitantes, onde é possível vericar a disponibilidade dos quartos para as datas pretendidas pelo cliente.

6.2.1 Utilizador Não Autenticado

Os utilizadores não autenticados podem ver os quartos disponíveis e respetivos pre-ços para as datas pretendidas e selecionada. Podem também comunicar com o hotel, mandando uma mensagem, para a tabela de reservas, sobre questões ou testemunhos que queiram dar. Além disso, podem ver igualmente os tipos de quartos que o hotel oferece e os serviços para entretenimento. É possível também criar as contas de cliente, onde, de seguida, é enviado um email de conrmação para validar a conta. 6.2.1.1 Mapa do Site

• Default - Default.aspx

• Quartos & Suites - QuartosHotel.aspx • Serviços  Spas - Spas.aspx  Golfe - Golf.aspx  Eventos - Eventos.aspx  Restaurante - Restaurante.aspx  Ginásio - Ginasio.aspx  Galerias - Galerias.aspx • Reservar - Reservar.aspx

 Lista Quartos Disponíveis - ListaQuartos.aspx • Contactos

 Contacte-nos - Contactos.aspx  Localização - Localizacao.aspx • Login - Login.aspx

(45)

6.2. FRONTOFFICE 43 6.2.1.2 Registo de Utilizadores

Na área não autenticada, os utilizadores, caso pretendam reservar quartos no hotel, devem criar a conta de cliente para o fazer. Para isso, é necessário preencher um formulário com os seus dados pessoais e, em seguida, serão enviados dois emails: um com os dados inseridos e outro para conrmar e ativar a conta através de um link enviado no email. Deste modo, a conta ca inativa, após ter sido criada, para evitar que uma pessoa crie a conta em nome de outra pessoa, apenas por conhecer o seu email. Para melhorar a segurança foi colocado um captcha para evitar que hackers criem utilizadores em massa (Figura 6.5). Falta apenas referir que todos dados são validados antes de serem inseridos na base de dados.

(46)

44 CAPÍTULO 6. IMPLEMENTAÇÃO DA SOLUÇÃO

6.2.2 Utilizador Autenticado

Nesta área, o cliente tem acesso a quase todas as páginas que um utilizador não autenticado, apenas os diferencia o facto do cliente poder fazer reservas de quartos do hotel, de poder alterar os seus dados pessoais, alterar a password e uma página com todas reservas efetuadas pelo cliente até à data.

6.2.2.1 Mapa do Site

• Default - Clientes/Default.aspx

• Quartos & Suites - Clientes/QuartosHotel.aspx • Serviços  Spas - Clientes/Spas.aspx  Golfe - Clientes/Golf.aspx  Eventos - Clientes/Eventos.aspx  Restaurante - Clientes/Restaurante.aspx  Ginásio - Clientes/Ginasio.aspx  Galerias - Clientes/Galerias.aspx • Reservar - Clientes/Reservar.aspx

 Lista Quartos Disponíveis - Clientes/ListaQuartos.aspx  Detalhes Reserva - Clientes/DetalhesReserva.aspx  Finalizar Reserva - Clientes/FinalizarReserva.aspx  Minhas Reservas - Clientes/MinhasReservas.aspx • Contactos

 Contacte-nos - Clientes/Contactos.aspx  Localização - Clientes/Localizacao.aspx • Minha Conta - Clientes/MinhaConta.aspx

• Minhas Reservas - Clientes/MinhasReservas.aspx • Alterar Password - Clientes/ChangePassword.aspx 6.2.2.2 Home Page

Na Home Page estão disponíveis as paginas todas no FrontOce, para que o utiliza-dor tenha acesso a informações sobre as instalações do hotel. Existe um formulário para selecionar as datas de check-in e check-out, de forma a vericar a disponibili-dade dos quartos e, de seguida, poder efetuar a reserva.

(47)

6.2. FRONTOFFICE 45

(48)

46 CAPÍTULO 6. IMPLEMENTAÇÃO DA SOLUÇÃO 6.2.2.3 Formulário das Reservas

Na página Default, há um formulário que permite ao cliente pesquisar quartos, dando a data de check-in, check-out e o número de adultos e crianças, como é visível na gura 6.7.

Figura 6.7: Formulário Reserva.

O formulário contém validações, pois não é possível pesquisar tipos de quartos dis-poníveis com os campos das datas por preencher. As datas são selecionadas através de um calendário, ao clicar no ícone como mostra a gura 6.8. Se as text box tiverem DD/MM/AAAA como texto, signica que o cliente ainda não introduziu uma data, então, é mostrada a mensagens de erro, como podemos ver na gura 6.9.

O código está todo dentro de um try para vericar se a data escolhida é uma data válida. Primeiro, é preciso saber-se quantos dias há de diferença entre as datas selecionadas para depois multiplicar esse valor pelo preço por noite de cada quarto. Para isso usei o Subtract (Listagem 4) e é necessário converter para Date as datas que estão na text box. Se essa conversão falha signica que a data não é uma data válida logo o try passa para o catch que da o erro de data inválida.

Listagem 4 Exemplo Subtract de datas.

TimeSpan diff = Convert.ToDateTime(tbCheckOut.Text).Subtract(Convert.ToDateTime(tbCheckIn.Text)); int TotalNoOfDays = diff.Days;

Se as datas forem então válidas falta ainda vericar se a data de check-out é após da data de check-in. A fórmula usada é simples: subtrai-se a data de check-out à

(49)

6.2. FRONTOFFICE 47

Figura 6.8: Calendário.

(50)

48 CAPÍTULO 6. IMPLEMENTAÇÃO DA SOLUÇÃO data de check-in para dar o número de dias. Para isso, o Subtract também é muito útil: se o número de dias for negativo, dá o erro e não deixa avançar para a próxima página.

Página Lista de Quartos:

Nesta página é mostrado a lista de quartos e a sua disponibilidade (Figura 6.10).

Figura 6.10: Lista de quartos.

Nesta página, mostra-se numa tabela os tipos de quartos que o hotel tem, a capaci-dade de cada um, a descrição, o preço e ainda os quartos disponíveis. Neste exemplo, mostra-se o número de quartos disponíveis para exemplicar o funcionamento. Aqui é feita uma vericação na base de dados para se saber se existem quartos disponí-veis ou não para as datas selecionadas pelo cliente, ou seja, no page load da página, vai-se à tabela N para N entre a tabela reserva e quartos, e conta-se quantos tipos de quartos estão na tabela entre as datas selecionadas pelo cliente. Vê-se também se a data de check-in é menor que a data de chegada da base de dados e se a data de check-out é maior que a data de partida da base de dados (Listagem do query 5). De seguida, subtrai-se o total de quartos que existe no hotel ao número de quartos ocupados e obtém-se o número de quartos disponíveis. No entanto, é necessário referir que apenas as reservas com estado Conrmada ou Check-In contam como quartos ocupados.

Figura 6.11: Dados da Base de Dados.

Como podemos ver na Figura 6.11 existem duas reservas nas datas de 20/08/2012 até 30/08/2012 e, neste exemplo, o cliente introduziu as datas 28/08/2012 e 30/08/2012.

(51)

6.2. FRONTOFFICE 49 Listagem 5 Query para mostrar número de quartos ocupados.

SELECT COUNT(*) AS Expr1 FROM [Reserva/Quarto] INNER JOIN Quartos ON [Reserva/Quarto].id_quarto = Quartos.id_quarto INNER JOIN Reserva ON [Reserva/Quarto].id_reserva = Reserva.id_reserva WHERE

(Reserva.estado = @estado) AND (Quartos.id_tipoquarto = @id_tipoquarto) AND(((@dataCI BETWEEN Reserva.data_chegada AND Reserva.data_partida) OR (@dataCO BETWEEN Reserva.data_chegada AND Reserva.data_partida)) OR (@dataCI < Reserva.data_chegada AND @dataCO > Reserva.data_partida))

Nestas datas há dois quartos duplos ocupados, mas como no total há 30 quartos, signica que há 28 quartos disponíveis como é visível através da imagem acima disponível (Figura 6.10).

Em caso de o número de quartos disponíveis ser 0, o cliente não pode reservar aquele tipo de quarto nas datas que escolheu como se pode observar na gura 6.12.

Figura 6.12: Quartos Ocupados. Página Detalhes Reserva

Na página Detalhes Reserva estão os quartos selecionados pelo cliente na página Lista de Quartos (Figura 6.13). Só é possível reservar três quartos por cada reserva - caso o cliente pretenda mais quartos, será feita uma reserva especial pelo que terá de entrar em contacto com o hotel.

Figura 6.13: Página Detalhes Reserva.

Em cada botão Reservar da página Lista Quartos há uma variável que é incremen-tada, isto para subtrair ao número de quartos disponíveis. Como é visível na gura

(52)

50 CAPÍTULO 6. IMPLEMENTAÇÃO DA SOLUÇÃO 6.14, agora o número de quartos disponíveis é 27, ou seja, decrementou um porque o cliente já selecionou um quarto duplo para reservar. Isto serve para evitar que haja, por exemplo, dois quartos disponíveis do tipo individual. Imaginemos que um cliente quer três quartos individuais, assim, ao decrementar o valor, evito que o cliente reserve quartos que depois poderão não estar disponíveis.

Figura 6.14: Exemplo de subtração dos quartos disponíveis.

Na página Detalhes da Reserva, também é possível eliminar a seleção dos quartos, sendo que, se o cliente pretender continuar, obrigatoriamente tem de voltar à lista de quartos e escolhe-los. O valor dos quartos disponíveis também volta ao que estava anteriormente.

Ainda na página Detalhes Reserva, há um campo para escrever observações e é necessário aceitar os termos e condições do hotel para reservar quartos (Figura 6.15).

Figura 6.15: Página Detalhes Reserva.

(53)

6.2. FRONTOFFICE 51 algumas validações. A capacidade dos quartos tem de ser maior ou igual ao número de adultos que o cliente selecionou e é necessário que a check box esteja a true. Página Finalizar Reserva

Após estar tudo validado na página Finalizar Reserva, primeiro aparecem os dados do cliente que está online na página, ou seja, o cliente, para fazer reservas, tem de ter uma conta no site para o conseguir fazer (Figura 6.16. O query (Listagem 6 tem a condição where do username seja igual ao username do utilizador online.

Listagem 6 Query para buscar os dados do cliente online.

SELECT id_cliente, nome, morada, telefone, email, username, bi, nif, nib FROM Clientes WHERE (username = @username)

SqlDataSourceId.SelectParameters["username"].DefaultValue = User.Identity.Name;

Figura 6.16: Página Finalizar Reserva Dados Cliente.

A segunda tabela é dedicada aos detalhes da reserva, onde são mostrados os dados que o cliente selecionou, como é visível na gura 6.17. O botão reservar insere o pedido na base de dados.

Após o cliente clicar em reservar, os dados são inseridos na tabela Reservas (Figura 6.18 e é enviado um email para o cliente com os dados da reserva. O painel onde estão as tabelas ca a false, cando visível o painel para poder imprimir a reserva ou continuar para a página Minhas Reservas.

No botão imprimir abre uma popup (Figura 6.19) em Javascript (Listagem 7) para poder imprimir o painel onde estão as tabelas dos dados da reserva, onde o cliente pode guardar os dados da reserva em pdf.

Página Minhas Reservas

No botão Continuar, o utilizador é reencaminhado para a página Minhas Reservas. Esta página é onde o cliente pode vericar o estado das suas reservas (Figura 6.20). Nesta página, são apenas mostradas as reservas do cliente que fez o login. Aqui

(54)

52 CAPÍTULO 6. IMPLEMENTAÇÃO DA SOLUÇÃO

Figura 6.17: Página Finalizar Reserva Dados Reserva.

Figura 6.18: Página Finalizar Reserva.

Listagem 7 Código para abrir a popup para imprimir.

protected void btImprimir_Click(object sender, EventArgs e) { Panel1.Visible = true; Session["ctrl"] = Panel1; ClientScript.RegisterStartupScript(this.GetType(), "onclick", "<script language=javascript>window.open('Imprimir.aspx','Imprimir', height=600px,width=600px,scrollbars=1');</script>"); }

(55)

6.2. FRONTOFFICE 53

Figura 6.19: Popup para imprimir.

(56)

54 CAPÍTULO 6. IMPLEMENTAÇÃO DA SOLUÇÃO faz-se um select à tabela reservas onde o username é igual ao username do utilizador online.

Para ver os dados da reserva mais detalhados, o cliente necessita selecionar uma reserva do grid view e os dados são mostrados. Na gura 6.21 é visível a reserva efetuada neste exemplo.

Figura 6.21: Página Detalhe das Minhas Reservas. 6.2.2.4 Envio de Mensagens ao Hotel

Os utilizadores autenticados e não autenticados podem contactar o hotel, enviando os dados para a tabela Mensagens, onde , de seguida, os funcionários responderão para o email que o utilizador indicar (Figura 6.22). Todos dados são validados e obrigatórios.

(57)

6.3. BACKOFFICE 55

6.3 BackOce

O BackOce é a parte da aplicação que se refere aos funcionários e administradores, podendo-se aqui gerir as reservas efetuadas pelos clientes, entre outros. Esta área está dividida em duas partes: a parte visível aos funcionários e a parte dos admi-nistradores. Os funcionários fazem o tratamento das reservas e os administradores alguma gestão do hotel.

6.3.1 Funcionários

Os funcionários fazem o tratamento das reservas, podendo cancelar reservas, assim como também os clientes o podem fazer até 48h antes da data de check-in. O estado das reservas pode ser alterado pelos funcionários - conrmada, check-in (cliente já entrou) e check-out (cliente já saiu). Nesta área, também se podem adicionar à conta dos clientes, que tenham as reservas conrmadas, serviços pedidos pelos clientes como por exemplo, massagens. Os funcionários podem ainda efetuar reservas especiais, isto quando os clientes pretenderem mais que três quartos e para isso contactam o hotel, daí o facto de elas serem chamadas de especiais.

6.3.1.1 Mapa do Site

• Default - Funcionarios/MenuPrincipalFunc.aspx • Reservas

 Reservas Pendentes - Funcionarios/Reservas.aspx

∗ Atribuir Quartos - Funcionarios/AtribuirQuartos.aspx · Lista de Quartos - Funcionarios/ListaQuartos.aspx · Detalhes Reserva - Funcionarios/DetalhesReserva.aspx · Finalizar Reserva - Funcionarios/FinalizarReserva.aspx  Reservas Conrmadas - Funcionarios/ReservasConrmadas.aspx  Reservas Especiais - Funcionarios/ReservasEspeciais.aspx

∗ Lista Quartos Especial - Funcionarios/ListaQuartosEspecial.aspx ∗ Finalizar Reserva Especial - Funcionarios/FinalizarReservaEspecial.aspx • Entradas de Hoje - Funcionarios/ReservasCIHoje.aspx

• Saída de Hoje - Funcionarios/ReservasCOHoje.aspx • Mensagens - Funcionarios/Mensagens.aspx

• Minha Conta - Funcionarios/MinhaConta.aspx

(58)

56 CAPÍTULO 6. IMPLEMENTAÇÃO DA SOLUÇÃO 6.3.1.2 Home Page

Na home page dos funcionários há um menu para as funcionalidades que o estes podem efetuar. Há mensagens a vermelho para chamar a atenção para novas reservas efetuadas pelos clientes e para novas mensagens, mostrando o número de reservas ou mensagens novas através de um query que faz o count de reservas pendentes e mensagens não lidas. É ainda possível ver as entradas e saídas de hoje do hotel, onde a data de check-in ou check-out seja igual à data de hoje (Figura 6.23).

Figura 6.23: Home Page Funcionários. 6.3.1.3 Reservas Pendentes

Nesta área, encontram-se as reservas feitas pelos clientes e que ainda não foram vistas pelos funcionários. Após a conrmação, o funcionário pode atribuir os quartos às reservas (Figura 6.24).

Atribuir Quartos

Nesta página os dados veem por sessão da página das reservas pendentes. uma reserva especial, é necessário colocar o visto para atribuir mais que três quartos; se

(59)

6.3. BACKOFFICE 57

Figura 6.24: Lista Reservas Pendentes.

for uma reserva normal, só pode haver três quartos selecionados, como já foi referido anteriormente (Figura 6.25).

Nesta fase, houve um problema: mostrar os quartos disponíveis para as datas que estão na reserva. Em primeiro lugar, é preciso escolher o tipo de quarto e, de seguida, aparece uma drop down list com o número dos quartos do tipo selecionado antes, mas só podem aparecer o número dos quartos que estão disponíveis. A forma como se resolveu o problema foi ao fazer um select aos quartos que estão ocupados entre as datas da reserva, guardando o número dos quartos numa lista. De seguida fez-se um select a todos os números dos quartos de cada tipo selecionado. Durante o select a todos os quartos, compara-se o número do quarto à lista onde se guardou o número dos quartos ocupado - se os números forem diferentes, adiciona-se à drop down list do número dos quartos, se forem iguais não se adiciona (Figura 6.26).

Ao clicar no botão reservar, já estão selecionados os quartos desejados pelo cliente e faz-se um update à tabela Reserva, onde o estado deixa de ser Pendente e passa a ser Conrmada. Insere-se também na tabela N para N entre as reservas e os quartos. Ainda nesta página, é possível alterar o pedido do cliente. Se por algum motivo não for possível atribuir um tipo de quarto que o cliente pretendia, é possível modicar o pedido, contactando o cliente para essa mudança. Por exemplo, imaginemos que o Cliente 1, às 19 horas, faz o pedido de reserva de um quarto do tipo duplo e neste caso só há um quarto duplo livre. Posteriormente o Cliente 2 também pretende um quarto duplo e faz o pedido às 19:10 horas. Num espaço de tempo tão curto, o pedido do Cliente 1 ainda não foi processado e a reserva está Pendente (as reserva com estado Pendente não contam como quartos ocupados na página da lista dos quartos na área do cliente). Então, a alteração do pedido serve para estas situações. Neste caso, o Cliente 2 não pode car com o quarto duplo, uma vez que fez o pedido depois do Cliente 1. Então, com autorização do cliente, o funcionário pode alterar o pedido de reserva para outro tipo de quarto.

(60)

58 CAPÍTULO 6. IMPLEMENTAÇÃO DA SOLUÇÃO

Figura 6.25: Página atribuir quartos.

Referências

Documentos relacionados

Dentre os tipos de revestimento dos pavimentos flexíveis, existem as misturas usinadas, as quais essa combinação de agregados e ligante é feita em uma usina estacionária,

Nessa situação temos claramente a relação de tecnovívio apresentado por Dubatti (2012) operando, visto que nessa experiência ambos os atores tra- çam um diálogo que não se dá

A placa EXPRECIUM-II possui duas entradas de linhas telefônicas, uma entrada para uma bateria externa de 12 Volt DC e uma saída paralela para uma impressora escrava da placa, para

A versão reduzida do Questionário de Conhecimentos da Diabetes (Sousa, McIntyre, Martins &amp; Silva. 2015), foi desenvolvido com o objectivo de avaliar o

Taking into account the theoretical framework we have presented as relevant for understanding the organization, expression and social impact of these civic movements, grounded on

Neste estudo foram estipulados os seguintes objec- tivos: (a) identifi car as dimensões do desenvolvimento vocacional (convicção vocacional, cooperação vocacio- nal,

Os principais resultados obtidos pelo modelo numérico foram que a implementação da metodologia baseada no risco (Cenário C) resultou numa descida média por disjuntor, de 38% no

Our contributions are: a set of guidelines that provide meaning to the different modelling elements of SysML used during the design of systems; the individual formal semantics for