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


1. Organização e calendário


2. Especificação

2.1 Objectivo

O objectivo do trabalho é a realização de um sistema de gestão de contactos pessoais.

Um contacto consiste em informação sobre uma pessoa:

  1. Nome
  2. Categoria
  3. Empresa
  4. Morada
  5. Telefone

A categoria dos contactos pode ser:

  1. Colega
  2. Fornecedor
  3. Cliente
  4. Amigo

Para além de manter informação sobre os contactos, deve ser mantido também um diário de acontecimentos relativos a cada contacto. Os acontecimentos podem ser dos tipos seguintes:

  1. Telefonema
  2. Reunião
  3. Carta
  4. Fax

Para telefonemas e reuniões devem-se registar as datas e hora de início e fim. Para cartas e fax basta registar a data e hora de recepção. Em todos os casos é necessário guardar de quem foi a iniciativa: do contacto ou nossa. Associado a cada acontecimento devem poder ser registados comentários vários. Como é evidente, um acontecimento estará sempre associado a um contacto existente. Assim, a remoção de um contacto deve implicar a remoção dos acontecimentos respectivos.

2.2 Funcionalidades mínimas

O programa deve:

  1. Permitir a visualização da lista de contactos por ordem crescente (alfabética) de nome.
  2. Permitir a visualização da lista geral de acontecimentos por ordem decrescente de tempo de início dos acontecimentos.
  3. Permitir a visualização da lista de acontecimentos associados a um dado contacto por ordem decrescente do tempo de início dos acontecimentos.
  4. Permitir a visualização dos pormenores de um contacto arbitrário.
  5. Permitir a visualização dos pormenores de um acontecimento arbitrário, incluindo toda a informação acerca do respectivo contacto.
  6. Permitir a introdução de novos contactos e a alteração ou remoção de contactos já existentes.
  7. Permitir a introdução de novos acontecimentos e a alteração ou remoção de acontecimentos já existentes. A alteração do contacto respeitante a um dado acontecimento deve, no entanto, ser proibida.
  8. Permitir ler e guardar a base de dados de contactos e acontecimentos em ficheiros no disco.

Todos os casos que não sejam cobertos por este enunciado deverão ser resolvidos com bom senso.

2.3 Concretização

  1. A base de dados de contactos e acontecimentos deve ser mantida na forma de listas dinâmicas genéricas.
  2. A gestão das datas de início dos acontecimentos e sua duração pode recorrer às funções ANSI-C do ficheiro de cabeçalho time.h.
  3. A entrada de dados (por parte do utilizador) deverá ser resistente a erros.

2.4 Estruturação

O programa deverá ser dividido em módulos, existindo pelo menos os seguintes:

  1. Módulo principal, com a função main().
  2. Módulo das listas genéricas.
  3. Módulo das funções de leitura do teclado.
  4. Módulo de funções de escrita de menus e leitura de opções.
  5. Módulo de operações sobre datas e horas e tempos de duração.

Página concebida e mantida por Eng. Manuel Menezes de Sequeira (última actualização 2006/07/07)
Copyright © 1996-2001 ISCTE