Cadastro de Estudantes v0.0.1
Gera uma lista ligada de estudantes.
Macros | Enumerações | Funções

Referência ao ficheiro ceui.h

Define TAD da interface com usuario. Mais...

#include <poll.h>
#include "fila.h"
#include "lista.h"
#include "pilha.h"
#include "mycommdef.h"

Ir para o código fonte deste ficheiro.

Macros

#define ERR_INIC_FILA   1
#define ERR_INIC_LISTA   2
#define ERR_INIC_PILHA   3
#define MIN_DISCIPLINA   1
#define MAX_DISCIPLINA   200
#define DEFAULT_COLS   80
#define DEFAULT_LINES   25

Enumerações

enum  eOptMenu {
  oCreateQueue = 1, oInsertStudent, oPrint, oPrintQueue = 31,
  oPrintList, oPrintStack, oGift = 4, oRemove,
  oExit, oUnknown, oNone
}

Funções

void PrintMenu (void)
void Greeting (void)
enum eOptMenu ParseOption (const char *, enum eOptMenu, struct TipoFila *, struct TipoLista *, struct TipoPilha *)
 Processa opcoes do usuario.
bool MoreInput (void)
int GetDisciplina (char **)
 Obtém disciplina através da string passada como parâmetro.
enum eOptMenu InsertStudent (struct TipoFila *, struct TipoLista *, struct TipoPilha *)
 Insere aluno na lista.
enum eOptMenu InsertNextStudent (struct TipoItem *, struct TipoLista *, struct TipoPilha *)
 Insere próximo estudante na lista.
enum eOptMenu InsertPilha (struct TipoPilha *)
 Insere elementos na pilha.
enum eOptMenu GetCommand (char *, char *)
 Obtem um comando através de uma string.
enum eOptMenu CriaFila (struct TipoFila *)
 Gera uma fila, cada elemento da fila é um inteiro, representando a senha do aluno na fila.
enum eOptMenu RemoveStudent (struct TipoLista *)
 Remove aluno da lista duplamente encadeada.
enum eOptMenu WhichCmd (char *, const char *,...)
 Seleciona um dos comandos de impressão, função recebe um número variável de parâmetros.

Descrição detalhada

Define TAD da interface com usuario.

Data:
02-05-2012 16:36:45
Versão:
0.0.1
Autor:
Alessandro Elias, ae11@inf.ufpr.br
Welton Pereira Martins wpm11@inf.ufpr.br

Documentação das macros

#define DEFAULT_COLS   80

Define número padrão de colunas. Em caso de erro este será o tamanho adotado.

#define DEFAULT_LINES   25

Define número de linhas padrão. Em caso de erro este será o tamanho adotado.

#define ERR_INIC_FILA   1

erro ao inicializar a fila.

#define ERR_INIC_LISTA   2

Erro ao inicializar a lista.

#define ERR_INIC_PILHA   3

Erro ao inicializar a pilha.

#define MAX_DISCIPLINA   200

Maximo codigo das disciplinas.

#define MIN_DISCIPLINA   1

Minimo codigo das diciplinas.


Documentação dos valores da enumeração

enum eOptMenu

Opcoes do menu.

Observações:
A pilha de brindes e entregue na ordem de matriculas introduzida no sistema, primeira matricula recebe o brinde que esta no topo, o segundo recebe penultimo brinde da pilha e assim por diante.
Valores da enumeração:
oCreateQueue 

Cria uma fila de estudades.

oInsertStudent 

Cadastro de estudantes.

oPrint 

Imprime todas as listas.

oPrintQueue 

Imprime fila.

oPrintList 

Imprime lista de estudantes.

oPrintStack 

Imprime a pilha de brindes.

oGift 

Gera uma pilha de brindes a alunos inscritos.

oRemove 

Remove um estudante da lista.

oExit 

Sair do programa.

oUnknown 

Opcao invalida.

oNone 

Nao faca nada


Documentação das funções

enum eOptMenu CriaFila ( struct TipoFila Fila)

Gera uma fila, cada elemento da fila é um inteiro, representando a senha do aluno na fila.

Parâmetros:
Fila- Estrutura de dados do TipoFila.
Retorna:
Uma opção do menu passado como comando.
-pf Imprime fila.
-pl Imprime lista.
-pp Imprime a pilha.
oNone (não faça nada) em caso nenhum comando foi encontrado.
Veja também:
LogMessage, InicFila, PERRLN, WaitReturn, WhichCmd, Enfileira
enum eOptMenu GetCommand ( char *  pstr,
char *  pcmd 
)

Obtem um comando através de uma string.

Parâmetros:
pstr- Ponteiro para uma string qualquer contendo um dos comandos abaixo:
-pf - Imprime fila
-pl - ImprimeLista
-pp - ImprimePilha
pcmd- Ponteiro de retorno com o comando extraido da string do parametro um.
Retorna:
Uma opção do menu passado como comando.
-pf Imprime fila.
-pl Imprime lista.
-pp Imprime a pilha.
oNone (não faça nada) em caso nenhum comando foi encontrado.
Observações:
Seguindo as especificações propostas esta função possibilita ao usuário utilizar um comando de impressão a qualquer momento de execução do programa.
int GetDisciplina ( char **  p)

Obtém disciplina através da string passada como parâmetro.

Faz o parse das disciplinas.

Parâmetros:
[in,out]p- ponteiro para ponteiro. Este parâmetro recebe o endereco do ponteiro da string que contém as entradas das disciplinas. Este buffer é scaniado até que seja encontrado um espaço, quando encontrado é substituído por final da string, e convertido para um inteiro. Como a função recebe o endereço da variável ela é atualiza para a próxima entrada. ATENÇÃO! quem chamou deve passar o endereço de uma variável que pode perder seu conteúdo.
Retorna:
Retorna um inteiro referente a disciplina que usuário entrou. Em p é retornado o ponteiro para o primeiro char da próxima entrada, ou final da entrada.
Observações:
A decisão de implementar desta maneira é para o código ficar mais robusto, não correndo riscos de laco infinito ou falha de segmentacao, por outras funcoes como scanf().
void Greeting ( void  )

Imprime titulo do programa.

enum eOptMenu InsertNextStudent ( struct TipoItem pitem,
struct TipoLista pLista,
struct TipoPilha pPilha 
)

Insere próximo estudante na lista.

Toda a checagen é feito nesta função, como: verificar se todas as disciplinas foram entradas corretamente, ou se nome foi entradado em branco, se usuário inseriu um comando.

Parâmetros:
[in,out]pitem- item a ser inserido na lista, observe que este parâmetro serve como retorno para quem chamou, vazio significa uma flag.
[in,out]pLista- ponteiro para a lisata onde serão inseridos os novos alunos.
[in,out]pPilha- ponteiro para a pilha, de onde serão desenpilhados os brindes a cada inscrito.
Retorna:
Uma opção do menu passado como comando.
-pf Imprime fila.
-pl Imprime lista.
-pp Imprime a pilha.
oNone (não faça nada) em caso nenhum comando foi encontrado.
Veja também:
PERRLN, LogMessage, WaitReturn, WhichCmd, MoreInput, EmptyStdIn, GetDisciplina, VaziaPilha, Pop, InsereLista
enum eOptMenu InsertPilha ( struct TipoPilha pPilha)

Insere elementos na pilha.

Cada elemento da pilha é um brinde que será distribuido aos alunos por ordem de chegada, ou seja, a cada aluno inscrito recebe o brinde do topo da pilha.

Parâmetros:
[in,out]pPilha- Recebe topo da pilha e empilha cada novo elemento.
Retorna:
Uma opção do menu passado como comando.
-pf Imprime fila.
-pl Imprime lista.
-pp Imprime a pilha.
oNone (não faça nada) em caso nenhum comando foi encontrado.
Veja também:
LogMessage, PERRLN, WaitReturn, MoreInput, WhichCmd, Push
enum eOptMenu InsertStudent ( struct TipoFila pFila,
struct TipoLista pLista,
struct TipoPilha pPilha 
)

Insere aluno na lista.

função controla quando deverá parar de pedir entrada para o usuário. Ela para quando:
1. InsertNextStudent retorna diferente de oNone (opção não faça nada). 2. O nome do aluno for deixada em branco. 3. Não tem mais alunos na fila.

Parâmetros:
[in,out]pFila- ponteiro para fila.
[in,out]pLista- ponteiro para a lista onde serão inseridos os alunos.
[in,out]pPilha- ponteiro par a pilha.
Retorna:
Uma opção do menu passado como comando.
-pf Imprime fila.
-pl Imprime lista.
-pp Imprime a pilha.
Observações:
O usuário tem a opção de entrar o nome em branco para finalizar aquela entrada daquela senha, porém esta senha será perdida.
Veja também:
LogMessage, VaziaFila, WaitReturn, Desinfileira, InsertNextStudent
bool MoreInput ( void  )

função verifica se ha mais dados a serem lidos da entrada padrão.

Observações:
Esta decisão de implementação fez-se necessária, uma vez que decidimos que o usuário é livre para dar entrada ao programa sem filtrar o que o usuário entrou. O comportamento de read() em caso a entrada do usuário é maior que o buffer passado a ela, é de: na subsequente chamada a ela, irá retornar o restante da entrada do usuário, até que possa ser lido toda entrada do usuário, uma vez todo o buffer foi consumido, subsequente chamada irá entrar em modo de espera até que seja dada uma outra entrada, em outras palavras, quando tem mais dados no buffer do stdin, as chamadas ao read() retornara imediatamente, até que não reste mais nada no stdin.
enum eOptMenu ParseOption ( const char *  pOpt,
enum eOptMenu  opt,
struct TipoFila pFila,
struct TipoLista pLista,
struct TipoPilha pPilha 
)

Processa opcoes do usuario.

Parâmetros:
[in]pOpt- ponteiro para string com a entrada do usuário.
[in]opt- opção do usuário na forma enum optMenu.
[in,out]pFila- ponteiro para a fila.
[in,out]pLista- ponteiro para a lista.
[in,out]pPilha- pilha de elementos; brindes.
Retorna:
Uma opção do menu passado como comando.
-pf Imprime fila.
-pl Imprime lista.
-pp Imprime a pilha.
oNone (não faça nada) em caso nenhum comando foi encontrado.
Observações:
pOpt tera uma string truncada em caso usuario inseriu uma entrada maior que o buffer.
Veja também:
CriaFila, InsereLista, Imprime, Brinde, Remove
void PrintMenu ( void  )

Imprime opcoes do menu.

enum eOptMenu RemoveStudent ( struct TipoLista pLista)

Remove aluno da lista duplamente encadeada.

Parâmetros:
[in,out]pLista- in informações a respeito da lista. out atualiza lista em caso algum registro foi removido.
Retorna:
Uma opção do menu passado como comando.
-pf Imprime fila.
-pl Imprime lista.
-pp Imprime a pilha.
oNone (não faça nada) em caso nenhum comando foi encontrado.
Veja também:
VaziaLista, LogMessage, WaitReturn, PERRLN, WhichCmd, RemoveLista
enum eOptMenu WhichCmd ( char *  pstr,
const char *  fmt,
  ... 
)

Seleciona um dos comandos de impressão, função recebe um número variável de parâmetros.

Parâmetros:
[in,out]pstr- in string com a entrada do usuário contendo ou não um comando. Se existe um comando ele sera extraído, tudo que estiver depois do comando será ignorado out.
[in]fmt- formato de uma mensagem que deve aparacer para o usuário. Segue os mesmos critérios de printf.
...um número variável de parâmetros, comforme fmt.
Retorna:
Uma opção do menu passado como comando.
-pf Imprime fila.
-pl Imprime lista.
-pp Imprime a pilha.
oNone (não faça nada) em caso nenhum comando foi encontrado.
Observações:
ATENÇÃO! qualquer dado depois do comando será ignorado.
Veja também:
GetCommand, LogMessage, WaitReturn, PERRLN, MoreInput, EmptyStdIn
 Tudo Classes Ficheiros Funções Variáveis Definições de tipos Enumerações Valores da enumeração Macros