Você está na página 1de 5

Para cada Acomodacao deseja-se armazenar os seguintes atributos: numero, tipo

(Simples, Confortvel ou Luxo), bairro, valorDiaria (valor da diria), tipoCliente


(Nacional, Internacional ou Estudante), ocupado (boolean), dataInicialOcupacao e
numDiasOcupao.
A aplicao dever possibilitar ao usurio administrador cadastrar, alterar e remover
usurios (do sistema).
Cada usurio ter um login e uma senha e poder alterar suas prprias informaes.
Os usurios podero cadastrar, alterar e remover clientes (turistas).
Dos clientes deseja-se armazenar: nome, endereo, sexo, data de nascimento,
nacionalidade e ocupao. Alm disso, cada cliente pode cadastrar um conjunto de
bairros (com prioridade) em que deseja se hospedar e um conjunto de tipos de
acomodao que deseja (tambm com uma prioridade). Cada cliente tambm dever
ter um login e uma senha para a utilizao do sistema. Cada cliente poder alterar
suas prprias informaes.
Cada cliente s pode ocupar uma nica acomodao.
A aplicao deve possibilitar aos usurios do sistema:
01. Cadastrar uma nova acomodao (o qual pode ser um Quarto, Vaga ou
Apartamento);
02. Ocupar uma acomodao;
03. Desocupar uma acomodao;
04. Consultar a despesa (valor total a pagar) de uma acomodao;
05. Adicionar camas extras em um Apartamento. S se aplica aos aptos;
06. Consultar o valor do desconto de uma determinada acomodao. Somente se
aplica s acomodaes do tipo Vaga, que estejam ocupadas por estudantes;
07. Consultar se uma determinada acomodao est ocupada;
08. Listar as acomodaes desocupadas, informando seu nmero, tipo, valor da diria
e o seu modelo (se a acomodao de um Quarto, Vaga ou Apartamento);
09. Listar as acomodaes que estaro desocupadas em uma determinada data
(fornecida pelo usurio), informando seu nmero, tipo, valor da diria e o seu
modelo (se a acomodao de um Quarto, Vaga ou Apartamento);

10. Remover uma acomodao. S deve ser permitido se ela estiver desocupada. Caso
contrrio uma exceo deve ser gerada;
11. Incrementar o nmero de dias da ocupao (atributo numDiasOcupacao) de
uma determinada acomodao;
A aplicao dever ainda possibilitar aos usurios do sistema gerar os seguintes
relatrios:
1. Relatrio que mostre para cada tipo de acomodao: a sua descrio, a quantidade
de acomodaes deste tipo existentes, a quantidade de acomodaes deste tipo que
esto desocupadas e a quantidade de acomodaes deste tipo que esto ocupadas (na
data atual);
2. Relatrio que mostre para cada bairro o seu nome, o nmero de clientes que
desejam se hospedar no bairro, a quantidade total de hospedagens no bairro, a
quantidade de hospedagens ocupadas e a quantidade de hospedagens desocupadas no
bairro.
3. A quantidade de clientes hospedados por bairro.
4. A quantidade de clientes por sexo e nacionalidade.
5. O total arrecadado em hospedagens por bairro, por tipo de hospedagem, por
nacionalidade do cliente e pelo sexo do cliente.
6. A quantidade de hospedagens (por tipo) que deveriam ser adicionadas para atender
a todos os clientes (ainda sem hospedagem).
A aplicao dever possibilitar aos clientes:
1. Consultar a despesa (valor total a pagar) de sua acomodao;
2. Consultar o valor do desconto de sua acomodao.
3. Listar as acomodaes desocupadas que se enquadram em suas preferncias, por
ordem de preferncia (prioridade).
4. Listar as acomodaes que se enquadram em suas preferncias, por ordem de
preferncia (prioridade), e que estaro desocupadas em uma determinada data
fornecida como parmetro.
* Ao se ocupar uma acomodao deve-se solicitar ao usurio o tipo do cliente e a
quantidade de dias que o cliente deseja ficar hospedado. Inicialmente deve-se verificar
se a acomodao se encontra desocupada (atributo ocupado igual a false). Em
caso afirmativo, deve-se atribuir o valor true ao atributo ocupado, atribuir a data

atual (do sistema) ao atributo dataInicialOcupacao, alm de setar os atributos


tipoCliente e numDiasOcupao com os valores recebidos como parmetro.
Caso contrrio, uma exceo (personalizada) deve ser gerada.
* Ao se desocupar uma acomodao deve-se inicialmente verificar se a acomodao
encontra-se ocupada (atributo ocupado igual a true). Em caso afirmativo, deve-se
atribuir o valor false ao atributo ocupado e zerar os atributos tipoCliente,
dataInicialOcupacao e numDiasOcupao.
Existem trs tipos de Acomodacao: Vaga, Quarto e Apartamento. A forma
de calcular o valor total da despesa difere nestes trs tipos. A seguir descrevemos estas
diferenas: Para acomodaes do tipo Quarto o valor total a ser pago consiste
apenas nas despesas de dirias (ou seja, valorDiaria * numDiasOcupacao). J para
acomodaes do tipo Vaga (vaga em um quarto coletivo), o programa de
acomodaes oferece, para estudantes, descontos, no valor das dirias, que variam de
acordo com o tipo da acomodao (Vaga):
Simples 10%
Confortvel 20%
Luxo 30%
Para acomodaes do tipo Apartamento, o programa oferece a possibilidade de se
adicionar uma cama extra. Por cada cama extra cobrado o valor de 25% do valor da
diria. Podem ser adicionadas no mximo trs camas extras em um Apartamento.
Desta forma, o valor total a ser pago pelo hspede consiste na soma entre as despesas
de dirias e o valor cobrado pelas camas extras (ou seja, (valorDiaria *
numDiasOcupacao) + (valorDiaria * 0,25 * numCamasExras * numDiasOcupacao)).

1 A regra de negcios da aplicao deve ser definida para ser programada no banco
de dados. Isso quer dizer que tudo o que foi visto nas informaes gerais deve ser
implementado no banco de dados atravs de Triggers, Views, Stored Procedures,
constraints, etc.
2 Deve ser criado um diagrama Entidade Relacionamento com as tabelas do sistema.
A partir desse diagrama um script deve ser gerado para a criao do banco de dados.
3 Deve-se seguir uma padronizao para os nomes das tabelas, campos, indices,
sequencias, restries, etc.
4 O sistema ser utilizado por usurios e pelos clientes. evidente que os clientes
iro acessar o sistema remotamente atravs de browser. Nossa preocupao deixar
todas as funcionalidades no banco de dados e implementar a parte Desktop que os
usurios utilizaro.
* Nomes de tabelas Devem ser escritas no singular; O nome deve ser o mais
descritvel possvel, mas no pode ter mais do que 30 caracteres; Caso o nome seja
composto, deve ser separado por Underline; O nome deve ser escrito em maisulo;
* Nomes dos campos Devem ser escritos em maisculo; Todo nome precisa ter um
prefixo e dependendo do prefixo deve-se vincular ao tipo de dados padro para aquele
prefixo, como no esquema abaixo:
Nome
Auto Incremento
Cdigo
Descrio
Data
Valor
Tipo
Situao
Nome
Nmero
Quantidade
Taxa

Prefixo
SEQ
COD
DSC
DAT
VLR
TIP
SIT
NOM
NUM
QTD
TAX

Tipo de Dado
Number
Number
Varchar2
Data
Number(p,s)
Varchar2
Varchar2
Varchar2
Number
Number
Number

* Constraint Reference o nome dessas constraints devem conter os nomes das duas
tabelas envolvidas separadas por Underline;
* O nome das chaves primarias devem comear com PK_ seguido do nome da tabela;
* O nome das views devem comear com VIEW_ seguido de uma descrio clara do
que ser mostrado;

* O nome das Stored Procedures devem comear com PROC_ no caso de um


procedimento e FUNC_ no caso de uma funo, seguido de uma descrio clara do
que ser executado;
* O nome das sequences devem comear com SEQ_ seguida do nome da tabela;
* O nome dos triggers devem comear com TRIG_ seguido dos eventos e do nome da
tabela. Exemplo: TRIG_BI_Funcionario;

Você também pode gostar