Cadastro de Estudantes v0.0.1
Gera uma lista ligada de estudantes.
|
Módulo da interface com usuário. Mais...
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <strings.h>
#include <unistd.h>
#include <errno.h>
#include <term.h>
#include <curses.h>
#include "mydebug.h"
#include "ceui.h"
#include "fila.h"
#include "pilha.h"
#include "lista.h"
#include "log.h"
Macros | |
#define | TOTAL 48 |
#define | SIZE_TAB 8 |
#define | TOTAL 42 |
Funções | |
int | main (void) |
bool | MoreInput (void) |
void | EmptyStdIn (void) |
Consome dados da entrada padrão. Isto fará com que os dados a mais que o usuário entrou sejam ignorados. A leitura byte a byte faz-se necessária, pois o programa pode estar trabalhando com um arquivo de entrada, assim podemos identificar cada final de entrada com LF ' '. | |
void | Greeting (void) |
void | PrintMenu (void) |
enum eOptMenu | ParseOption (const char *pOpt, enum eOptMenu opt, struct TipoFila *pFila, struct TipoLista *pLista, struct TipoPilha *pPilha) |
Processa opcoes do usuario. | |
enum eOptMenu | RemoveStudent (struct TipoLista *pLista) |
Remove aluno da lista duplamente encadeada. | |
enum eOptMenu | CriaFila (struct TipoFila *Fila) |
Gera uma fila, cada elemento da fila é um inteiro, representando a senha do aluno na fila. | |
enum eOptMenu | InsertPilha (struct TipoPilha *pPilha) |
Insere elementos na pilha. | |
enum eOptMenu | InsertStudent (struct TipoFila *pFila, struct TipoLista *pLista, struct TipoPilha *pPilha) |
Insere aluno na lista. | |
enum eOptMenu | InsertNextStudent (struct TipoItem *pitem, struct TipoLista *pLista, struct TipoPilha *pPilha) |
Insere próximo estudante na lista. | |
void | WaitReturn (void) |
Imprime na tela espere e aguarda pela tecla enter. | |
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. | |
int | GetDisciplina (char **p) |
Obtém disciplina através da string passada como parâmetro. | |
enum eOptMenu | GetCommand (char *pstr, char *pcmd) |
Obtem um comando através de uma string. | |
Variáveis | |
bool | g_bStdinConnectedTotty |
int | g_ncols = DEFAULT_COLS |
int | g_nlines = DEFAULT_LINES |
Módulo da interface com usuário.
Este módulo possui todas as funcões que interagem com o usuário, é o TUI (text user interface).
Gera uma fila, cada elemento da fila é um inteiro, representando a senha do aluno na fila.
Fila | - Estrutura de dados do TipoFila. |
void EmptyStdIn | ( | void | ) |
Consome dados da entrada padrão. Isto fará com que os dados a mais que o usuário entrou sejam ignorados. A leitura byte a byte faz-se necessária, pois o programa pode estar trabalhando com um arquivo de entrada, assim podemos identificar cada final de entrada com LF '
'.
enum eOptMenu GetCommand | ( | char * | pstr, |
char * | pcmd | ||
) |
Obtem um comando através de uma string.
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. |
int GetDisciplina | ( | char ** | p | ) |
Obtém disciplina através da string passada como parâmetro.
Faz o parse das disciplinas.
[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. |
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.
[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. |
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.
[in,out] | pPilha | - Recebe topo da pilha e empilha cada novo elemento. |
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.
[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. |
int main | ( | void | ) |
Ponto de inicialização do program.
bool MoreInput | ( | void | ) |
função verifica se ha mais dados a serem lidos da entrada padrão.
enum eOptMenu ParseOption | ( | const char * | pOpt, |
enum eOptMenu | opt, | ||
struct TipoFila * | pFila, | ||
struct TipoLista * | pLista, | ||
struct TipoPilha * | pPilha | ||
) |
Processa opcoes do usuario.
[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. |
void PrintMenu | ( | void | ) |
Imprime opcoes do menu.
Remove aluno da lista duplamente encadeada.
[in,out] | pLista | - in informações a respeito da lista. out atualiza lista em caso algum registro foi removido. |
void WaitReturn | ( | void | ) |
Imprime na tela espere e aguarda pela tecla enter.
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.
[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. |
Variável blobal, recebe valor da função isatty().
isatty() retorna 1 quando file descriptor esta conectado a um terminal, 0 caso contrário.
int g_ncols = DEFAULT_COLS |
Variável global, armazena número de colunas do terminal do usuário.
int g_nlines = DEFAULT_LINES |
Variável global, armazena número de linhas do terminal do usuário.