Escolar Documentos
Profissional Documentos
Cultura Documentos
Junho de 2018
Pá gina 1 de 33
3 Modelaçã o e Simulaçã o de Sistemas
RESUMO
Este relató rio descreve os objetivos, modelaçã o e implementaçã o do projeto final de Modelaçã o e
Simulaçã o de Sistemas, tal como o publico alvo/atores e instruçõ es para a sua utilizaçã o. O trabalho rea-
lizado consiste num sistema de gestã o de uma linha de hotéis (designada pelo nome fictício Hotéis
LUSO), constituído por três entidades no Porto, Lisboa e Algarve.
O desenvolvimento do sistema em questã o utiliza um servidor de alojamento denominado
000Web- Host, da empresa HOSTINGER, que proporciona uma base de dados MySQL e uma interface
grá fico PHPmyadmin.
A construçã o do estilo das pá ginas Web e das funcionalidades envolveu ferramentas como HTML,
PHP, comandos/pedidos mySQL, JavaScript e Bootstrap.
Keywords: Sistema de gestã o, atores, casos de uso, cená rios, HTML, PHP, mySQL, JavaScript,
Bootstrap, PHPmyadmin, website.
Pá gina 3 de 33
5 Modelaçã o e Simulaçã o de Sistemas
1 ÍNDICE
1 Introduçã o.................................................................................................................................................................. 7
1.1 Objetivos e aná lise de requisitos.................................................................................................................. 7
2 Modelaçã o................................................................................................................................................................... 9
2.1 Atores...................................................................................................................................................................... 9
2.1.1 Visitante........................................................................................................................................................ 9
2.1.2 Cliente............................................................................................................................................................ 9
2.1.3 Funcioná rio.................................................................................................................................................. 9
2.2 Casos de uso.......................................................................................................................................................... 9
2.3 Cená rios............................................................................................................................................................... 11
3 Implementaçã o...................................................................................................................................................... 11
3.1 Base de dados.................................................................................................................................................... 13
3.2 Gestã o de contas............................................................................................................................................... 13
3.2.1 Acesso à base de dados........................................................................................................................ 14
3.2.2 Criaçã o de conta cliente....................................................................................................................... 14
3.2.3 Iniciar Sessã o na pá gina web................................................................................................................... 14
3.2.4 Fechar sessã o na pá gina web.................................................................................................................. 15
3.2.5 Visualizar/Editar dados de clientes................................................................................................ 15
3.2.6 Visualizar informaçõ es de cada hotel............................................................................................. 16
3.3 Criaçã o e Gestã o de Reservas...................................................................................................................... 17
3.3.1 Criar reserva............................................................................................................................................. 18
4.1.1 Editar e Eliminar..................................................................................................................................... 21
4.1.2 Visualizar................................................................................................................................................... 22
4.2 O uso de JavaScript.......................................................................................................................................... 22
4.3 O uso de AJAX..................................................................................................................................................... 24
5 Manual de Utilizaçã o............................................................................................................................................ 27
5.1 Pá gina principal................................................................................................................................................ 27
5.2 Criar conta/Iniciar Sessã o............................................................................................................................ 28
5.3 Cliente visualiza e edita a sua conta e reservas...................................................................................28
5.4 Cliente faz reservas......................................................................................................................................... 29
5.5 Funcioná rio Visualiza/Edita dados e reservas de clientes..............................................................30
5.6 Funcioná rio visualiza vagas......................................................................................................................... 31
6 Conclusã o................................................................................................................................................................. 33
Pá gina 5 de 33
7 Modelaçã o e Simulaçã o de Sistemas
1 INTRODUÇÃO
Este trabalho surge no â mbito da unidade curricula Modelaçã o e Simulaçã o de Sistema, tendo por
objetivo aprofundar e aplicar os conceitos de sistemas de informaçã o. Como tal desenvolveu-se um sis-
tema de gestã o de reservas de um grupo de hotéis, sendo desenvolvida uma pá gina web que permite
aos clientes efetuar e editar reservas e aos funcioná rios dos hotéis fazer a gestã o das mesmas.
Para este trabalho houve a necessidade de utilizar diversas linguagens de programaçã o,
utilizando- se o HTML e CSS para a parte estilística da pá gina web, mais precisamente a utilizaçã o do
Bootstrap, que permite o desenvolvimento de aplicaçõ es e pá ginas web com uma interface mais
apelativa na perspetiva do utilizador. Além do CSS utilizam-se linguagens como o JavaScrip. Para a
gestã o de base de dados uti- liza-se a linguagem SQL com a utilizaçã o do phpMyAdmin, que permite a
criaçã o das bases de dados e fazer a sua gestã o. Para a interaçã o entre a base de dados e a pá gina web
utiliza-se a linguagem PHP, sendo responsá vel pelos registos e leituras nas tabelas da base de dados,
bem como responsá vel pelas sessõ es login.
Objetivos:
...
1.1 OBJETIVOS E ANÁLISE DE REQUISITOS
O objetivo deste trabalho é desenvolver um sistema de gestã o de reservas de um grupo de hotéis
com capacidades de multi-user. Este sistema deve permitir que os utilizadores tenham uma conta
pessoal, com a qual podem efetuar e editar reservas. Para além disso, deve disponibilizar contas com
permissõ es superiores, para os funcioná rios dos hotéis, para que estes possam gerir as reservas dos
clientes. Estas sã o os requisitos obrigató rios e nos quais o desenvolvimento do projeto se centrou.
Os requisitos facultativos serã o a implementaçã o de uma pá gina de perfil para cada conta, com a
possibilidade de poder alterar estes. Quer seja os clientes editarem os seus dados, como os funcioná rios
editarem os dados dos clientes a pedido destes. Disponibilizar informaçã o sobre as características dos
hotéis. E a inclusã o de uma funcionalidade que dê feedback sobre as vagas nos hotéis do grupo de
acordo com filtros.
Pá gina 7 de 33
9 Modelaçã o e Simulaçã o de Sistemas
Arquitetura do sistema:
2 MODELAÇÃO
2.1 ATORES
O publico alvo pretendido para a utilizaçã o deste sistema está divido entre três papeis, denomina-
dos atores:
2.1.1 VISITANTE
Este é o título atribuído para qualquer utilizador que interaja com o sistema sem possuir qualquer
tipo de registo. O cliente (ponto 2.1.2) é um ator que numa primeira instâ ncia, até à criaçã o de uma
conta, intitula-se como Visitante.
As funçõ es e permissõ es de um visitante sã o muito limitadas, este tem apenas a capacidade de
con- sultar as informaçõ es e condiçõ es dos hotéis e criar contas do tipo Cliente.
2.1.2 CLIENTE
O cliente representa o publico ao qual o serviço deste sistema se destina, podendo usufruir a
capa- cidade de, nã o só consultar as informaçõ es dos hotéis, mas criar, gerir e/ou apagar as suas
reservas.
2.1.3 FUNCIONÁRIO
O funcioná rio é o ator que utiliza o sistema para servir o cliente. Este tem permissã o para consultar as
reservas dos clientes e alterar os seus parâ metros ou elimina-las. Também pode consultar vagas pelo
tipo de quartos, hotéis e por datas.
Pá gina 9 de 33
Tabela 1 - Tabela de casos de uso
3 IMPLEMENTAÇÃO
Neste capítulo será descrevido o processo de desenvolvimento e implementaçã o do sistema.
A Tabela Hotéis contem o registo de todos os hotéis da linha, com a sua morada e outras
informaçõ es gerais;
A Tabela Quartos contem o nú mero de quartos total que existe em cada hotel por tipo de
quarto (Exemplo: No hotel Porto, existem 100 quartos do tipo Duplo);
A Tabela TQuartos contem a informaçã o relativa aos tipos de quartos de cada hotel (Ex:
Tipo Individual, Características: uma cama singular, …).
Por fim, a Tabela Reservas possui os registos das reservas criadas pelos Clientes. Aqui, a tabela
encontra-se ligada pelo email dos Clientes e pelo nome do Hotéis pois cada um dos registos encontra-se
em funçã o de um registo de cada uma destas tabelas.
Pá gina 13 de 33
3.2 GESTÃO DE CONTAS
O cliente na “Minha Conta” e o funcioná rio na “Painel Administrativo” podem entã o visualizar e editar
os dados de clientes. Para que o cliente possa editar os seus dados, ele tem ao seu dispor um formulá rio
preenchido com os dados atuais, podendo alterar cada um deles, sendo depois os dados atualizados na
base de dados. Já o funcioná rio pode pesquisar pelos dados dos clientes através do email dos mesmos,
depois terá um formulá rio já preenchido com os dados atuais dos clientes e poderá editar cada um
deles, sendo atualizado na base de dados. Para se atualizar os dados de um determinado cliente é
utilizado a funçã o mysqli_query juntamente com o comando UPDATE, como se pode observar na Figura
8.
Existem três ficheiros com um formulá rio de preenchimento para realizar o pedido de criaçã o de
uma reserva (Porto.php, Lisboa.php e Algarve.php respetivamente ao hotel pretendido). O funciona-
mento de todos estes é idêntico (Figura 10):
Os parâmetros desejados pelo cliente sã o recebidos em inputs de um form HTML, sendo alguns de
escolha mú ltipla (Radio) ou de seleçã o de datas (date). Ao premir o botã o de submissã o (button
type=’sub- mit’), os valores preenchidos sã o enviados para um ficheiro “POST_interp_res.php”,
juntamente com dois valores de tipo hidden identificando em que hotel está a ser criada a reserva e com
o endereço do ficheiro de origem para o cliente ser automaticamente redirecionado para esta pá gina
depois de submetido pe- dido.
O ficheiro de submissã o do pedido é composto por uma secçã o de validaçã o dos dados recebidos,
outra para a verificaçã o da existência de vagas e, por fim, de envio dos dados estruturados para base de
dados. A secçã o de validaçã o verifica as seguintes condiçõ es:
1. Se o pedido é de criaçã o ou ediçã o: Este ficheiro é utilizado para submeter um destes dois
pedidos, pois estes funcionam de forma muito semelhante. A variá vel $edit controla o tipo
de funçã o a executar (1 para editar, 0 para criar). Para criar, o parâmetro mail do Cliente é
retirado de uma variá vel de sessã o:
Figura 11 - Controlo da função no ficheiro POST_interp_res.php
A secçã o de verificaçã o da existência de vagas (Figura 13) faz uma busca na Tabela de reservas à
procura de qualquer registo que intersete os dados do registo a criar (linhas 57 a 60). Para isto ele pro-
curo por todas as reservas do mesmo hotel e tipo de quarto e compara as datas. Como se encontra
esque- matizado na Figura 14, duas vagas intersetam-se em uma das seguintes situaçõ es:
1. Se a data de inicio da reserva existente for superior à data de inicio e inferior à data de fim
da reserva a criar;
2. Se a data de inicio da reserva a criar for superior à data de inicio e inferior à data de fim da
reserva existente;
3. Se ambas as datas da reserva a criar encontram-se dentro do período da reserva existente
ou vice-versa.
Figura 13 - Função para verificação da existência de vagas
Dia 1 2 3 4
Inicio Fim
Caso 1
Inicio Fim
Inicio Fim
Caso 2
Intersecçõ es
Inicio Fim
Inicio Fim
Caso 3
Inicio Fim
Inicio Fim
Caso 4
Inicio Fim
Dia 1 2 3 4
Inicio Fim
Caso 1
Inicio Fim
Vagas
Inicio Fim
Caso 2
Inicio Fim
Reserva a criar Reserva existente
Por fim, retira-se o nú mero total de quartos desse tipo da tabela de quartos e compara-se ao nú -
mero de registos que intersetam esta reserva (linha 62). Se este ú ltimo for superior ou igual, nã o exis-
tem vagas, caso contrá rio, procede-se para a estruturaçã o dos dados.
De seguida é, das linhas 62 a 101, foi implementada uma funçã o que recolhe o numero de todos os
quartos ocupados pelas reservas intercetantes, faz uma contagem dos nú meros em ordem ascendente e
quando encontrar um numero que salte mais do que uma unidade do anterior (Exemplo: Quartos 1, 2, 3,
5, 6, …), utiliza esse valor intermediá rio como o numero de quarto da reserva a criar.
Por fim, gera-se um valor de reserva (linhas 106 a 111), incrementando uma unidade à reserva de
maior valor e enviam-se todos estes dados numa string (INSERT INTO reservas VALUES
($nres,'$mail','$hotel',$NumQuarto,'$tipoq','$din','$dout')) para a base de dados. Terminado o processo, o
utilizador é redirecionado para a pá gina onde fez o registo. Surge um alerta indicando se a reserva foi
efetuada ou se surgiu um problema juntamente com informaçã o da sua causa.
3.3.2 EDITAR E ELIMINAR
A funçã o editar é muito semelhante à de criar reserva. Esta pode ser efetuada através da pá gina
do cliente (contacl.php) ou no painel de administraçã o (padmin.php). Em ambas as situaçõ es é chamada
uma tabela com todos os registos de reservas que se encontram na base de dados (No caso da pá gina de
cliente, a tabela encontra-se numa divisã o e no painel encontra-se num ficheiro à parte cujo output será
colocado na mesma pá gina através de AJAX). Em cada registo é colocado um botã o que permite a ediçã o
ou elimi- naçã o (linhas 231 e 232 na Figura 15).
No caso de eliminaçã o, ao carregar no botã o, é enviado por href duas variá veis com o nú mero de
reserva a eliminar e com o ficheiro de origem para o ficheiro POST_eliminar_res.php, onde é construído o
comando para apagar o registo na base de dados (DELETE FROM reservas WHERE nreserva=$delete).
No caso de editar, o utilizador é direcionado para a pá gina do ficheiro Editar_Reservas.php, onde
surge um formulário semelhante ao formulário de criar reservas, com a exceçã o de que os inputs
possuem valores default correspondentes aos valores atuais da reserva.
Submetendo o pedido, o processo para a submissã o do pedido é efetuado no mesmo ficheiro de
submissã o de criar contas, mas o email do cliente é enviado por um input, o numero da reserva
mantem- se igual e o comando é substituído por: UPDATE reservas SET hotel='$ho-
tel',nquarto=$NumQuarto,tquarto='$tipoq',entrada='$din',saida='$dout' WHERE nreserva=$nres").
A pá gina “A Minha Conta”, é uma pá gina que contém algumas funcionalidades que recorrem a Ja-
vaScript para além da funçã o hide_btn(), como por exemplo a funçã o preencher_dados(). Esta, é
executada sempre que a pá gina é carregada para preencher o perfil do utilizador da conta com os dados
guardados na base de dados. Para tal, é utilizado o método document.getElementById(‘elementID’).value,
ao qual será atribuído o valor da variá vel de sessão nome, morada, contacto ou nif, dependendo do
elementID esco- lhido. As variá veis de sessã o sã o criadas quando esta pá gina é carregada. O có digo desta
funçã o pode ser visualizado na Figura 18.
Outra funcionalidade, para qual foi usada JavaScript pode ser visualizada ao introduzir a
password no momento da criaçã o da conta. A funçã o pass_check() é executada sempre que, quando o
campo “Pas- sword” ou o campo “Confirme a password” estiver selecionado, uma tecla do teclado for
levantada, isto é, é executada com o evento onkeyup. Esta funçã o compara os valores dos dois campos
mencionados an- teriormente e, caso estes sejam diferentes, é colocado um contorno vermelho à volta
do segundo para indicar que as passwords nã o sã o iguais e o botã o “Criar conta” é desativado para
evitar que o utilizador submeta o formulá rio. Caso os valores sejam iguais, é colocado um contorno
verde à volta do segundo campo e é ativado o botã o “Criar conta”. Os contornos sã o colocados
adicionando, e removendo, classes ao input “Confirme a password” usando os métodos
document.getElementById(‘elementID’).class- List.add(‘ClassName’) e
document.getElementById(‘elementID’).classList.remove(‘ClassName’) respetiva- mente. Sendo que a
ClassName será is-valid para o contorno verde e is-invalid para contorno vermelho, estas sã o classes do
Bootstrap.
Esta funçã o recebe o email do cliente, que será enviado para o ficheiro
AJAX_pesquisa_dados_clientes.php através do método GET. Neste ficheiro, será feita a pesquisa dos dados
e depois será feito echo de uma string formada por estes dados separados por vírgulas. Esta string será
recebida na funçã o pesquisa_dados_cliente()que a irá dividir em novas strings usando as vírgulas como
referência para determinar o inicio e o fim dos dados. A receçã o da resposta do ficheiro php é
assinalada pela propriedade readystate, esta quando for igual a 4 significa que o pedido terminou e a
resposta está pronta. De seguida, estes dados sã o colocados nos campos através do método
document.getElemen- tById(‘elementID’).value.
Uma outra funcionalidade que recorre a AJAX encontra-se na segunda tab, “Editar Reservas”.
Nesta, o funcioná rio pode introduzir o email do cliente, ou o nú mero de uma reserva, e apó s carregar no
botã o “Pesquisar” irá ser apresentada uma tabela com todas as reservas do cliente, ou com a reserva
inserida. A implementaçã o desta funcionalidade é parecida com a anterior, mudando apenas alguns
aspetos. A funçã o, pesquisa_reservas(), na qual será feito o pedido HTTP, irá receber dois parâmetros, o
valor do campo de inserçã o do email e o valor do campo de inserçã o do nú mero da reserva. Um destes
campos estará vazio assim, é verificado qual dos valores nã o é igual a null para que seja enviado para o
ficheiro AJAX_pesquisa_reservas.php através do método GET. Neste ficheiro, é efetuada a pesquisa na
base de da- dos e é feito echo da tabela com os resultados da pesquisa. Este será recebido na funçã o
pesquisa_reser- vas() que irá coloca-lo na tag p com o id table_reservas.
Uma terceira funcionalidade que usa AJAX é visível na terceira tab do painel administrativo,
“Visu- alizar vagas”. Nesta, o funcioná rio introduz dados como o hotel, a data de entrada, a data de saída
e o tipo de quarto, sendo necessá rio preencher pelo menos as datas, e é informado sobre o nú mero de
quartos disponíveis de cada tipo em cada hotel. Para implementar tal funcionalidade, os dados inseridos
pelo funcioná rio sã o enviados para a funçã o pesquisar_vagas(). Esta, começa por determinar os radio
buttons selecionados através de dois ciclos for, um para os radio buttons referentes ao hotel e outro para
os de seleçã o do tipo de quarto. Tal como nas funçõ es anteriores é feito um pedido HTTP, neste caso
para o ficheiro AJAX_pesquisa_vagas.php que irá receber os parâmetros do formulá rio através do
método GET. Neste ficheiro serã o feitas pesquisas na base de dados para determinar quais as vagas
disponíveis de acordo com os dados inseridos e irá fazer echo da informaçã o a mostrar ao funcioná rio,
que será recebida na funçã o pesquisar_vagas() que irá escrevê-la na tag p com o id table_vagas.
27 Modelaçã o e Simulaçã o de Sistemas
4 MANUAL DE UTILIZAÇÃO
Pá gina 27 de 33
4.2 CRIAR CONTA/INICIAR SESSÃO
Para o visitante criar conta de cliente este terá de clicar em “Criar Conta/Iniciar Sessã o”, onde terá
acesso à pá gina da Figura 22. De seguida terá de preencher o formulá rio “Criar Conta”, sendo o nome,
email e password de preenchimento obrigató rio e a morada, contacto e NIF de cará ter opcional. Depois
de criada a conta, o já cliente (pois já tem conta criada), pode fazer login na pá gina, podendo deste modo
realizar as mais variadas operaçõ es disponíveis para clientes.
Dentro do “A minha conta” o cliente pode ainda visualizar, editar ou eliminar as suas reservas, clicando
em “Reservas”, acedendo à pá gina da Figura 24. Para o cliente eliminar a sua reserva basta clicar em
“Eliminar” na reserva que pretende excluir.
Figura 24 Visualizar, editar e eliminar reservas
Para editar as suas reservas o cliente deve clicar na em “Editar” na reserva que pretende modificar,
acendo à janela da Figura 25. Nesta janela o cliente poderá variar todos os parâ metros da sua reserva,
ou seja, o hotel, tipo de quarto e data de entrada e saída.
Uma outra funcionalidade que o funcioná rio tem disponível é poder visualizar, editar ou eliminar uma
reserva do cliente, bastando para tal aceder ao “Painel Administrativo” na á rea “Editar Reservas”. Aqui
o funcioná rio poderá fazer uma pesquisa por cliente, preenchendo o campo “Email do cliente”, ou por
nú - mero de reserva, preenchendo o campo “Nú mero de reserva”, clicando no final em “Pesquisar”, tal
como o demonstrado na Figura 28. Despois de efetuada a pesquisa o funcioná rio poderá editar a
reserva do cliente, clicando em “Editar”, abrindo uma nova janela onde poderá fazer a atualizaçã o dos
dados. O fun- cioná rio poderá ainda eliminar um ou vá rias reservas do cliente, clicando em “Eliminar”
Figura 28 Funcionário visualiza, edita ou elimina reserva de cliente
5 CONCLUSÃO
Concluído este trabalho verifica-se que os objetivos principais foram cumpridos, e, portanto, a pá gina
web desenvolvida permite aos utilizadores (visitantes, clientes e funcioná rio) efetuar as operaçõ es
prin- cipais que se pretende num sistema de gestã o de reservas de hotéis, permitindo ao visitante ter
acesso à s informaçõ es dos hotéis, o cliente efetuar reservas e editá -las e ao funcioná rio visualizar,
controlar e editar reservas de todo o grupo de hotéis. O sistema desenvolvido é assim um sistema
versá til que pode- ria ser aplicado a um grupo de hotéis real, embora houvessem pormenores que
poderiam ser melhorados, como por exemplo, o funcioná rio poder efetuar reservas, uma demonstraçã o
mais ilustrativa do estado de ocupaçã o dos hotéis a curto e longo prazo, entre outros possíveis
melhoramentos.
Este trabalho permitiu aprofundar conhecimentos de base de dados, linguagens de programaçã o como
PHP, Java Script, Ajax, SQL, CSS e HTML, sendo por isso um contributo positivo para os elementos do
grupo.
Referências Bibliográficas
...
Pá gina 33 de 33