Diagrama de Classe
Por: Adriano Felipe • 1/12/2015 • Monografia • 5.236 Palavras (21 Páginas) • 371 Visualizações
ANHANGUERA EDUCACIONAL – UNIDADE 4
Ciência da Computação
Relatório 02 – Listas Ligadas
Campinas
2013
ANHANGUERA EDUCACIONAL – UNIDADE 4
Ciência da Computação
Estrutura de Dados
Atividades Práticas Supervisionadas, sob
Orientação do Prof. Ricardo Barbosa,
Realizado pelos alunos:
- Filipe Barreto S. Carneio RA: 3770750140
- Gustavo M. Paltrinieri RA: 3770743660
- Adriano Felipe RA: 4251858508
- Ericson Rodrigues Lorenzetti RA: 6227192853
- Wendel de Paula Barros RA: 3715676648
Campinas
2013
Relatório
Desenvolvemos um sistema em linguagem C, denominado VoeBem, utilizando Lista Encadeada como estrutura de dados. Esse sistema permite fazer o cadastro, consulta e exclusão de Voos como também o cadastro e consulta de Passagens.
Os dados cadastrados ficam armazenados na memória RAM do computador de forma dinâmica, ou seja, a cada novo cadastro é alocado um espaço específico na memória para o armazenamento dos dados. Ao sair do sistema todos os dados são destruídos da memória não tendo possibilidade de recupera-los posteriormente, embora com algumas alterações seja possível fazer implementações que permitam salvar os dados em arquivos no disco rígido sem comprometer o projeto.
Existem diversas formas de estruturar os dados em um sistema computacional, mas nesse projeto específico trabalhamos com Lista Encadeada. Sua estrutura é linear e dinâmica, composta por nós que sempre apontam para o próximo elemento da lista, sendo que o último não aponta pra ninguém, ou seja, seu valor é nulo.
Um membro da estrutura guarda o encadeamento enquanto os outros membros guardam os dados do registro.
Sendo assim, foram implementadas algumas funções que são responsáveis pelo cadastro, consulta e exclusão dos dados. A cada cadastro é alocado na memória o espaço necessário para guardar o novo registro, depois os dados são atribuídos a esse registro e o apontamento da lista fica guardada em um membro. Portanto temos conhecimento somente do ultimo item incluído que será o primeiro da lista.
Fizemos 2 bibliotecas separadas responsáveis pela manipulação dos dados na lista de Voos e Passagens. Cada módulo contem um conjunto de funções e procedimentos que são chamadas pelo projeto principal. Como o uso tornou-se abstrato, qualquer implementação na forma de armazenamento dos dados será feito nas bibliotecas não afetando o sistema que sempre chamará as funções fixas.
Para deixar o sistema mais amigável, desenvolvemos sua manipulação através de menus e sub-menus que na verdade são loops onde a cada clico são processados as funções do sistema. Algumas validações também foram programadas para deixar o sistema mais intuitivo, como análise de duplicidade dos cadastros e verificação de existência dos mesmos antes de exclui-los ou consulta-los. A consequência dessas validações trazem mais processamentos que podem deixar o sistema mais lento em proporção ao volume de dados.
Apesar do fato de que o uso de Listas Encadeadas em memória deixa a manipulação de dados muito simples, é necessário tomar alguns cuidados quando trabalha manualmente com a memória. Sempre que remover um nó tem que liberar o espaço usado ou quando terminar a aplicação deve-se liberar todo espaço consumido por todos os elementos da lista, e foi o que fizemos aqui nesse projeto.
Imagens das Telas
Tela Inicial
[pic 1]
Menu Voos
[pic 2]
Cadastro de Voo
[pic 3]
Consulta de Voo
[pic 4]
Exclusão de Voo
[pic 5]
Cadastro de Passagem
No cadastro de Passagens foi feito um relacionamento com o cadastro de Voos, portando só pode fazer o cadastro da passagem tendo feito antes o cadastro do Voo, caso contrário o sistema não deixará cadastrar a Passagem.
[pic 6]
Ao fazer o cadastro da passagem e informar o numero do Voo, o sistema coleta as informações do Voo e preenche a estrutura com essas informações.
[pic 7]
Consulta de Passagem
[pic 8]
Código Fonte
[Arquivo Voo.c]
#include
#include
#include
typedef struct Voo {
int NumeroVoo;
char Data[15];
char Hora[15];
char Embarque[50];
char Desembarque[50];
char Rota[50];
char Duracao[10];
int Passageiros;
struct Voo *Prox;
} TVoo;
TVoo* Voo_Criar(){
return NULL;
}
int Voo_Vazio(TVoo *V){
return (V == NULL);
}
TVoo *Voo_Inserir(TVoo *V,TVoo Dados){
TVoo* Novo = (TVoo*)malloc(sizeof(TVoo));
Novo->NumeroVoo = Dados.NumeroVoo;
strcpy(Novo->Data, Dados.Data);
strcpy(Novo->Hora, Dados.Hora);
strcpy(Novo->Embarque, Dados.Embarque);
...