Enunciado SIGIF

Autor

Diogo Silva

Data de Publicação

6 de maio de 2024

Introdução

A Força Aérea Portuguesa, com a sua missão de garantir a defesa do espaço aéreo nacional, tem à sua disposição várias aeronaves com características diversas. A correcta manutenção destas aeronaves é fundamental para o seu uso continuado em segurança. Para este efeito, existem vários engenheiros encarregues da gestão das frotas. Os dados necessários a esta função são bastantes e um sistema digital integrado é necessário. A sua missão é desenhar e implementar o Sistema de Informação para a Gestão Integrada de Frotas (SIGIF). O sistema recebe dados de todas as aeronaves de todas as frotas e o registo de todos os voos.

Estrutura & Organização

  • Existem Aeronaves e Voos
  • Cada Voo está associado a uma Aeronave
  • Dados da Aeronave
    • número de cauda
    • esquadra
    • fabricante & modelo
    • número de horas inicial
  • Dados de Voo
    • data
    • número de cauda
    • duração
  • O programa guarda uma base de dados em formato binário.

Funcionalidades

  1. Importar dados de ficheiro de texto
    1. Aeronaves
    2. Voos
  2. Listas
    1. Lista com todas as aeronaves
    2. Lista com todas as aeronaves de determinada esquadra
    3. Lista com todos os voos
    4. Lista com todos os voos de determinada aeronave
    5. Lista com todos os voos entre 2 datas
    6. Qualquer uma destas listas pode ser exportada para um fiheiro de texto
  3. Estatísticas
    1. Indicar a esquadra com mais horas de voo
    2. Indicar as 5 aeronaves com mais horas de voo
    3. Histograma das horas de voo de toda a Força Aérea, por ano (⚠️ para grupos de 4 elementos)

Formato dos ficheiros de texto para importar

  • Aeronaves

    15133 201 F-16 800
    15134 301 F-16 100
    1319 802 Chipmunk 2300
  • Voos (duração dada em minutos)

    2023-05-17
    15133
    120
    = = = = =
    2023-05-18
    15133
    180
    = = = = =
    2023-05-19
    15134
    90
    = = = = =

Notas

  • Caso seja conveniente, podes assumir que nunca existirão mais de 500 aeronaves e 1000 voos em sistema.
  • Pode ajudar manter a base de dados dos voos ordenada por data.
  • Não usar qualquer biblioteca além das que foram introduzidas nas aulas sem aprovação do docente.

Entrega do trabalho

  • O trabalho deve implementar uma aplicação para o problema enunciado. Os ficheiros de código (.c e .h) assim como documentação auxiliar (.txt, .pdf) são submetidos pelo chefe do grupo no Moodle. Ficheiros a submeter:
    • todos os ficheiros .c e .h necessários para a compilação e execução do programa;
    • todos os ficheiros necessários para a execução do programa (e.g. ficheiros de configuração, devem ser do tipo .txt);
    • um manual de utilização MANUAL.pdf com uma descrição simples e curta de como utilizar o programa (é o documento que um utilizador iria ler para aprender a utilizar o programa);
    • um relatório REPORT.pdf simples e curto sobre como implementaram as diversas funcionalidades e as decisões que tomaram, e onde se clarifica a estrutura do código (e.g. o ficheiro comandos.c contém as funções que manipulam a lista de comandos, grava a lista em ficheiro; optámos por manter a base de dados dos voos ordenada porque…; a estratégia para exportar os relatórios para ficheiro foi….; etc.);
  • Caso necessário, irão ocorrer discussões para defesa dos trabalhos.

Critérios de avaliação

  • A avaliação do trabalho será feita de acordo com os seguintes princípios:
    • O programa deve estar estruturado em funções consideradas necessárias para a resolução do problema. O programa deve estar dividido em vários ficheiros quando for relevante.
    • O programa pode e deve reutilizar código tanto quanto possível e for adequado.
    • O programa deve executar todas as funcionalidades tal como pedido.
    • Devem ser escolhidos nomes apropriados para os tipos de dados, operações, variáveis e constantes de modo a facilitar o entendimento do programa. A formatação do código é importante.
    • O código deve ser comentado. Todas as funções devem ter um breve comentário sobre a sua função, imediatamente abaixo do cabeçalho.
    • Devem ser utilizadas as estruturas de dados (e.g. vectores, registos) apropriadas para cada problema.