2º Trabalho Prático de Programação II


1. Organização e calendário


2. Especificação

2.1 Objectivo

Desenvolva em ANSI C um programa de gestão de reservas/alugueres para uma empresa de aluguer de automóveis. O programa deverá manter a seguinte informação e proporcionar as funcionalidades mínimas indicadas:

Informação sobre a frota existente
Deverá manter-se um registo das viaturas da empresa incluindo a seguinte informação sobre cada viatura:
Por exemplo:
Classe 1:
  • Ford Ka,
  • Renault Twingo,
  • Fiat Cinquecento e
  • Opel Corsa.
Classe 2:
  • Ford Mondeo,
  • Renault Megane,
  • Fiat Bravo e
  • Opel Vectra.
Classe 3:
  • Ford Scorpio,
  • Renault Safrane,
  • Fiat Marea e
  • Opel Omega.
Pretendem-se as seguintes funcionalidades mínimas:
  1. inserir nova viatura,
  2. remover uma viatura e
  3. listar informação de todas as viaturas.
Informação sobre reservas e alugueres
Deverá manter-se um registo de reservas e alugueres, sendo cada reserva caracterizada pela seguinte informação:
Pretendem-se as seguintes funcionalidades mínimas:
  1. Face a um pedido de reserva por parte de um cliente, determinar que viaturas se encontram disponíveis para o período pretendido. Esta consulta deverá ser suficientemente flexível para que o cliente possa especificar o modelo ou apenas a classe de viatura que pretende. Se houver uma viatura disponível para o período pretendido procede-se então à inserção da reserva. Caso não haja nenhuma viatura disponível que satisfaça a especificação do cliente, deverão ser-lhe apresentadas alternativas de entre as viaturas da mesma classe que estejam disponíveis. Se não houver alternativas deve considerar-se o pedido de aluguer como pendente e sujeito a eventuais desistências por parte de outros clientes.
  2. anular reservas de clientes que desistiram ou que não efectuaram o levantamento das viaturas no primeiro dia do período pretendido (é necessário que o programa considere a data corrente), e
  3. actualizar a informação sobre reservas/alugueres quando:
    • um contrato de aluguer é concretizado,
    • uma reserva é anulada ou
    • uma viatura é devolvida à agência.
  4. Nos casos de anulação de reservas ou de devolução antecipada de veículos, devem-se considerar as reservas pendentes e satizfazê-las se possível.
Determinação do preço
Deverá ser possível determinar o preço do aluguer de uma viatura. O preço é função da classe da viatura alugada e do número de dias de aluguer. A definição do preçário fica ao critério dos alunos. Devem-se prever multas para devoluções atrasadas ou antecipadas.

2.2 Concretização

  1. Nas reservas pendentes não deverá estar informação sobre uma viatura específica. As reservas pendentes referem-se ou a uma classe ou, alternativamente, a um dado modelo de viatura.
  2. As estruturas de dados utilizadas para armazenar informação sobre as viaturas e sobre reservas e alugueres devem ser implementadas utilizando listas duplamente ligadas genéricas e memória dinâmica. As listas devem ser manipuladas por intermédio de iteradores. Não deve haver qualquer restrição quanto ao número de veículos ou reservas e alugueres (excepto, é claro, a memória disponível).
  3. Devem ser utilizados ficheiros binários para armazenar a informação relevante no final da execução do programa e para carregar a informação no início da sua execução.
  4. Para simplificar considerou-se no enunciado que alugueres e reservas estariam armazenados na mesma estrutura de dados. Nada impede que os alunos considerem outras soluções.
  5. Devem-se usar a representação de datas e as funções para a sua manipulação definidas pelo ANSI C (veja-se o ficheiro de cabeçalho "time.h").
  6. O programa deve resistir a más utilizações! Proteja as leituras e valide os valores obtidos.

2.3 Estruturação

O programa deverá ser dividido em módulos. Por exemplo:

  1. Módulo principal, com a função main().
  2. Módulo das listas.
  3. Módulo dos registos de veículos.
  4. Módulo dos registos de alugeres e reservas.
  5. Módulo das funções de leitura do teclado.
  6. Módulo de funções de escrita de menus e leitura de opções.
  7. Módulo de operações sobre datas e horas e tempos de duração.

Página concebida e mantida por Dr. Filipe Santos (última actualização 2006/07/07)
Copyright © 1998 ISCTE