Enunciado SIGIT

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 responsabilidade um diverso leque de missões que são cumpridas por muitas tripulações distintas, de naturezas variadas. A correcta gestão das tripulações é crucial para otimizar os recursos existentes, garantir o cumprimentos da missão e salvaguardar a saúde e bem-estar dos nossos militares. O esforço para criar tripulações e manter um registo atualiado das disponibilidades e tempos mínimos de descanso dos tripulantes é significativo 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 Tripulações (SIGIT). O sistema contém os dados de todos os tripulantes e possíveis missões a realizar. O CA define as missões que devem ser executadas e em que datas. O SIGIT cria automaticamente, e de forma otimizada, as tripulações necessárias para o efeito.

Estrutura & Organização

  • Existem Tripulante, Missão, Voo, Função
  • Cada Tripulante está associado a uma Função
  • Cada Missão está associado a uma ou mais Função
  • Cada Voo está associado a uma missão e a um conjunto de Tripulante
  • Dados de Tripulante
    • id
    • estado (operacional ou inop)
    • nome
    • função
  • Dados de Missão
    • id da missão
    • nome da missão
    • número de tripulantes
    • indicação das funções dos tripulantes
  • Dados de Voo
    • id do voo
    • data
    • id da Missão
    • lista de ids dos tripulantes
  • Dados de Função
    • id da função
    • nome da função
  • O programa guarda os tripulantes e voos numa base de dados binária.
  • O programa guarda a lista de funções e missões em 2 ficheiros de texto de configuração

Funcionalidades

  1. Importar dados de ficheiro de texto
    1. Tripulantes
    2. Voos
  2. Marcar voos
    1. SIGIT mostra lista das missões disponíveis e utilizador escolhe.
    2. SIGIT pede uma data para o voo desejado.
    3. SIGIT cria tripulação para o voo automaticamente
    4. Condições
      1. Um tripulante não pode ser selecionado para 2 voos no mesmo dia.
      2. Um tripulante não pode ser selecionado para um voo se estiver inoperacional.
  3. Listas
    1. Lista com todos os voos
    2. Lista com todos os voos entre 2 datas
    3. Lista com todos os tripulantes
    4. Qualquer uma destas listas pode ser exportada para um fiheiro de texto (⚠️ para grupos de 4 elementos)
    5. Notas:
      1. Os dados do voo incluem a sua missão, data e o nome e função de todos os tripulantes
      2. A lista de tripulantes inclui o nome, função e estado atual de cada tripulante
  4. Mudar estado de tripulante
    1. Recebe id do tripulante
    2. Comuta o estado desse tripulante para o contrário do que está

Formato dos ficheiros

  • Tripulantes
    • cada tripulante em cada linha
    • id estado função nome
    • e.g.
    135531 1 1 João Silva
    136535 0 5 Maria Santos
  • Voo
    • cada campo em cada linha
      • id do voo
      • id do tipo de missão
      • data
      • ids dos tripulantes, um por linha
    • cada voo separado por “% % % % %”
    • exemplo
    1
    2
    2023-05-17
    135658
    136797
    % % % % %
    2
    5
    2023-04-13
    135658
    % % % % %
  • Tipos de missão
    • cada campo em cada linha
      • id do tipo de missão
      • nome do tipo de missão
      • número de tripulantes
      • ids das funções, um por linha
    • exemplo
    1
    Transporte de Doentes
    4
    1
    2
    5
    6
    % % % % %
    2
    Transporte de Carga
    3
    1
    2
    4
    % % % % %
  • Funções
    • cada função numa linha
    • campos separados por espaço
    • exemplo
    1 Piloto
    2 Co-Piloto
    3 Navegador
    4 Load Master
    5 Médico
    6 Enfermeiro

Notas

  • Se for conveniente, podes assumir que nunca existirão mais de 500 tripulantes 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.