Programação Orientada para Objectos


ISCTE

Ano lectivo 2000/2001

Semestre


Problema 2


Notas:


1  Objectivo

A pensão de D. Matilde na Ericeira está a crescer e ela, de modo a ter tudo muito bem organizado, decidiu usar um sistema informático para gerir as reservas de quartos.  Isto deu-lhe um certo trabalho, pois teve de compreender bem as características e funcionalidades que lhe eram importantes e descrevê-las de uma maneira objectiva.  Assim ela chegou às seguintes conclusões:

A informação sobre os quartos encontra-se num ficheiro (quartos.txt) com o seguinte formato (os comentários não fazem parte do ficheiro):

5            // Número de quartos.
I01          //
Identificador do quarto.
individual   //
Tipo de quarto.
sim          //
Tem WC?
sim          //
Tem minibar?
30           //
Preço em euros.
ocupado      // Livre ou ocupado?
2001         // Data de entrada (só existe se o quarto está ocupado)
3
30
2001         //
Data de saída (só existe se o quarto está ocupado)

8

Laurinda Luz // Nome do cliente (só existe se o quarto está ocupado)
I02          //
Identificador do quarto.
individual   //
Tipo de quarto.
sim          //
Tem WC?
sim          //
Tem minibar?
30           //
Preço em euros.
livre        // Livre ou ocupado?
D03          //
Identificador do quarto.
duplo        //
Tipo de quarto.
sim          //
Tem WC?
sim          //
Tem minibar?
50           //
Preço em euros.
ocupado      // Livre ou ocupado?
2001         // Data de entrada (só existe se o quarto está ocupado)
3
30

2001         // Data de saída (só existe se o quarto está ocupado)
4
13

Tiago Serpa  // Nome do cliente (só existe se o quarto está ocupado)
D11          // Identificador do quarto.
duplo        //
Tipo de quarto.
não          //
Tem WC?
não          //
Tem minibar?
40           //
Preço em euros.
livre        // Livre ou ocupado?
D12          // Identificador do quarto.
duplo        //
Tipo de quarto.
não          //
Tem WC?
não          //
Tem minibar?
40           //
Preço em euros.
livre        // Livre ou ocupado?

A informação sobre as reservas (reservas.txt) encontra-se num ficheiro com o seguinte formato:

5              // Número de quartos.

I01            // Identificador do quarto.
0              //
Número de reservas.

I02            // Identificador do quarto.
2              //
Número de reservas.
R2             // Código de reserva.
2001           // Início.
3
30
2001           //
Fim.

1

Paulo Diogo    // Nome do cliente.
R3             // Código de reserva.
2001           // Início.
4
1
2001           //
Fim.
4
7

Susana Estrela // Nome do cliente.

D03            // Identificador do quarto.
0              //
Número de reservas.

D11            // Identificador do quarto.
1              //
Número de reservas
R4             // Código de reserva.
2001           // Início.

2
2001           //
Fim.
7
8

João Rico      // Nome do cliente.

D12            // Identificador do quarto.
1              //
Número de reservas.
R5             //
Código de reserva.
2001           //
Início.
7
2
2001           //
Fim.
7
8

Benjamim Rapaz // Nome do cliente.

O sistema deve permitir as seguintes funcionalidades:

Se um cliente não fizer check-in até ao final do dia de início da reserva, esta deve ser anulada e o sistema deve emitir uma mensagem como a seguinte:

Deve ser cobrado ao cliente Joaquim dos Anzóis um dia de ocupação e foi anulada a reserva código R7.

Os check-out devem realizados automaticamente quando o dia final da ocupação for atingido.  O quarto passa a livre e a ocupação é eliminada.  Deve ser mostrado o preço da estadia.

2  Processamento de datas

Para guardar datas pode recorrer à classe Data definida no espaço nominativo Utilitarios::DataTempo da biblioteca Utilitarios.  Esta biblioteca é parte integrante da distribuição Pacotes-0.2.tar.gz.  A sua documentação está disponível quer em PDF quer em HTML.

Esta classe permite fazer as operações usuais com datas.  Em particular permite alternar duma forma simples entre datas actuais obtidas do sistema e datas actuais pedidas ao utilizador do programa.  Esta possibilidade é fundamental para permitir o teste do programa sem ter de se esperar vários dias...

Para garantir o comportamento adequado do programa, antes da execução de cada opção do menu deve ser verificada a data actual e tomadas as acções previstas no enunciado.  Por outro lado o menu do programa deve conter opções para:

  1. Actualizar.  Limita-se a verificar a data actual e agir em conformidade.
  2. Tornar datas actuais automáticas, i.e., fornecidas pelo sistema.
  3. Tornar datas actuais manuais, i.e., pedidas ao utilizador.

3  Requisitos de implementação

4  Avaliação

Será avaliado neste trabalho: A interface com o utilizador deverá ser o mais simples possível.  Não se valorizam interfaces sofisticadas.