Mudanças entre as edições de "Equipe5-2015-1"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
 
(17 revisões intermediárias por 2 usuários não estão sendo mostradas)
Linha 1: Linha 1:
 
=Integrantes=
 
=Integrantes=
ANDREZA CHAVES
+
LEONARDO TASCA
  
 
LUISA MACHADO
 
LUISA MACHADO
Linha 41: Linha 41:
  
 
==Distribuição==
 
==Distribuição==
OII
+
Este Projeto foi realizado em conjunto, as função foram criadas com o auxilio de todos os integrantes da Equipe. Portanto não houve uma distribuição precisa.
  
 
==Desenvolvimento==
 
==Desenvolvimento==
 +
Houve dois principais processos no desenvolvimento.
 +
Primeiramente utilizamos a estratégia em que a cada função, era preciso abrir o arquivo, escrever nele e gravar. Mas tivemos certa dificuldade, então com a ajudo do Professor mudados nossa estratégia.Com esta mudança tivemos que iniciar novamente toda construção do programa. Iniciando um novo processo, em que utilizamos duas novas funções, uma no inicio, para abrir o arquivo e "copiar" para uma estrutura temporária, e outra para atualizar, copiando esta estrutura temporária para o arquivo. Utilizando esta estratégia não precisamos ficar abrindo o arquivo a todo momento, facilitando o desenvolvimento do projeto.
  
 
==Conclusão==
 
==Conclusão==
 +
Este projeto nos proporcionou utilizar tudo aquilo que aprendemos ao longo este semestre, trabalhar em equipe e melhorar nosso desempenho em programação. As dificuldades que tivemos nos fizeram repensar melhor e aprender ainda mais.
 +
 +
==Auto avaliação==
 +
 +
LEONARDO TASCA - 9
 +
 +
LUÍSA MACHADO - 9
 +
 +
NATÁLIA ADRIANA MIRANDA - 9
 +
 +
==Avaliação (professor)==
 +
 +
Caros alunos!
 +
 +
Parabéns pelo trabalho de vocês. Ficou o mais próximo do que eu esperava. O programa atendeu a todos os requisitos iniciais, o código fonte está bem organizado, mas senti falta dele estar melhor comentado. Ainda faltou um cuidado maior com a wiki.
 +
 +
Por isso minha nota para a toda a equipe é: 9.
 +
 +
Douglas A.
  
 
=Código fonte=
 
=Código fonte=
 
<syntaxhighlight lang=c>
 
<syntaxhighlight lang=c>
 
 
#include <stdio.h>
 
#include <stdio.h>
 
#include <stdlib.h>
 
#include <stdlib.h>
 +
 +
typedef struct TProduto produtos;
  
 
struct TProduto{
 
struct TProduto{
Linha 60: Linha 82:
 
struct TProduto *prox;
 
struct TProduto *prox;
 
}*lista;
 
}*lista;
 +
 +
int i=1;
  
int i=1;
 
FILE *fp;
 
  
void listar_produtos()
+
void ler_arquivo_para_lista()
{
+
{
struct TProduto *pp = (struct TProduto *) malloc(sizeof(struct TProduto));
+
FILE *fp;
 
int res;
 
int res;
 +
 
if ((fp = fopen("produtos.dat", "r")) == NULL) {
 
if ((fp = fopen("produtos.dat", "r")) == NULL) {
printf("Falha na abertura do arquivo\n");
+
printf("Falha na abertura do arquivo.\n");
 
return;
 
return;
 
}  
 
}  
printf("\n");
 
 
while(1) {
 
while(1) {
if((res = fscanf(fp,"%d %d %s %f", &pp->codigo, &pp->qtdade, pp->descricao, &pp->preco)) == EOF) {      
+
    produtos *novo = malloc(sizeof(produtos));
 +
if((res = fscanf(fp,"%d %d %s %f", &novo->codigo, &novo->qtdade, novo->descricao, &novo->preco)) == EOF) {
 
break;
 
break;
 
}
 
}
printf("%d %d %s %0.2f\n", pp->codigo, pp->qtdade, pp->descricao, pp->preco);
+
if(lista == NULL) {
 +
lista = novo;
 +
}else {
 +
novo->prox = lista->prox;
 +
lista->prox = novo;
 +
}
 
}
 
}
 
fclose(fp);
 
fclose(fp);
Linha 83: Linha 111:
  
  
 +
void atualizar()
 +
{
 +
FILE *fp;
 +
int res;
 +
produtos *p;
 +
 +
if ((fp = fopen("produtos.dat", "w")) == NULL) {
 +
printf("Falha na abertura do arquivo.\n");
 +
return;
 +
}
 +
for (p = lista; p != NULL; p = p->prox) {
 +
if((res = fprintf(fp,"%d %d %s %0.2f\n", p->codigo, p->qtdade, p->descricao, p->preco)) == EOF) {
 +
printf("Erro\n");
 +
}
 +
}
 +
printf("\nArquivo atualizado\n");
 +
fclose(fp);
 +
}
 +
 +
 +
void listar_produtos()
 +
{
 +
system("clear");
 +
produtos *p;
 +
printf("\nLista dos Produtos Cadastrados:\n");
 +
printf("\n-------------------------------------------------------------------------------\n");
 +
for (p = lista; p != NULL; p = p->prox) {
 +
printf( "%d %d %s %0.2f", p->codigo, p->qtdade, p->descricao, p->preco);
 +
printf("\n-------------------------------------------------------------------------------\n");
 +
}
 +
}
 +
 +
 
void add_prod()
 
void add_prod()
 
{
 
{
struct TProduto *pp = (struct TProduto *) malloc(sizeof(struct TProduto));
+
system("clear");
int res, j;
+
printf("\nAdicionar produto:\n");
printf("Digite o código do produto: ");
+
produtos *p = malloc (sizeof(produtos));
scanf("%d", &pp->codigo);
+
printf("\nDigite o código do produto: ");
 +
scanf("%d", &p->codigo);
 
printf("Digite a quantidade de produtos: ");
 
printf("Digite a quantidade de produtos: ");
scanf("%d", &pp->qtdade);
+
scanf("%d", &p->qtdade);
 
printf("Digite o nome do produto: ");
 
printf("Digite o nome do produto: ");
scanf("%s", pp->descricao);
+
scanf("%s", p->descricao);
 
printf("Digite preço do produto: ");
 
printf("Digite preço do produto: ");
scanf("%f", &pp->preco);
+
scanf("%f", &p->preco);
if ((fp=fopen("produtos.dat", "a")) == NULL) {
+
printf("Falha na abertura do arquivo\n");
+
if(lista == NULL) {
return;
+
lista = p;
}
+
}else {
if((res = fprintf(fp,"%d %d %s %0.2f", pp->codigo, pp->qtdade, pp->descricao, pp->preco)) == EOF) {
+
p->prox = lista->prox;
printf("Erro\n");
+
lista->prox = p;
 
}
 
}
fclose(fp);
 
 
}
 
}
 
+
 
+
 
void rm_prod()
 
void rm_prod()
 
{
 
{
struct TProduto *pp = (struct TProduto *) malloc(sizeof(struct TProduto));
+
system("clear");
int cod, j, res, c, q;
+
int cod;
float p;
+
produtos *pa = malloc (sizeof(produtos));
char d[20];
+
produtos *p;
if ((fp = fopen("produtos.dat", "r+")) == NULL) {
+
pa=lista;
printf("Falha na abertura do arquivo\n");
+
printf("\n-------------------------------------------------------------------------------\n");
return;
+
printf("\nRemover Produto\n");
}
 
 
 
 
printf("\nDigite o código: ");
 
printf("\nDigite o código: ");
 
scanf("%d", &cod);
 
scanf("%d", &cod);
rewind(fp);
+
 
   
+
for(p = lista; p != NULL; p = p->prox) {
for(pp=lista;pp!=NULL;pp=pp->prox) {
+
if(p->codigo == cod)
if((res = fprintf(fp,"%d %d %s %0.2f", pp->codigo, pp->qtdade, pp->descricao, pp->preco)) == EOF) {
+
break;
printf("Erro\n");
+
pa = p;
}
 
printf("Linha: %d %d %s %0.2f", pp->codigo, pp->qtdade, pp->descricao, pp->preco);
 
 
}
 
}
/* fscanf(fp,"%d %d %s %f", &c, &q, d, &p);
+
if(p != NULL) {
pp->codigo = c;
+
free(p);
pp->qtdade = q;
+
pa->prox = p->prox;
pp->preco = p;
+
printf("\nProduto removido!!\n");
for(j=0;j<20;j++)
+
printf("\n-------------------------------------------------------------------------------\n");
pp->descricao[j] = d[j];
+
}else {
pp = pp->prox;
+
printf("\nCódigo não existente!!\n");
if ( pp != NULL && pp->codigo == cod ){
+
printf("\n-------------------------------------------------------------------------------\n");
printf("\n%d %d %s %0.2f\n",  pp->codigo, pp->qtdade, pp->descricao, pp->preco);
+
}
free(pp);
 
printf("\nProduto Retirado!");
 
break;
 
}*/
 
  //  if( res == -1 ){
 
// printf("\nCódigo não encontrado\n");
 
//}
 
fclose(fp);
 
 
 
 
}
 
}
 
+
+
 
void localizar()
 
void localizar()
 
{
 
{
struct TProduto *pp = (struct TProduto *) malloc(sizeof(struct TProduto));
+
system("clear");
int cod, res;
+
int cod;
if ((fp = fopen("produtos.dat", "r")) == NULL) {
+
produtos *p;
printf("Falha na abertura do arquivo\n");
+
p = lista->prox;
return;
+
printf("\nLocalizar Produto\n");
}
 
 
 
 
printf("\nDigite o código: ");
 
printf("\nDigite o código: ");
 
scanf("%d", &cod);
 
scanf("%d", &cod);
rewind(fp);
 
   
 
while(1) {
 
if((res = fscanf(fp,"%d %d %s %f", &pp->codigo, &pp->qtdade, pp->descricao, &pp->preco)) == EOF){       
 
break;
 
}
 
  
if ( pp != NULL && pp->codigo == cod ){
+
for(p = lista; p != NULL; p = p->prox) {
printf("\n%d %d %s %0.2f\n",  pp->codigo, pp->qtdade, pp->descricao, pp->preco);
+
if(p->codigo == cod)
 
break;
 
break;
}
 
}
 
    if( res == -1 ){
 
printf("\nCódigo não encontrado\n");
 
 
}
 
}
fclose(fp);
+
if(p!=NULL) {
 +
printf("\n-------------------------------------------------------------------------------\n");
 +
printf( "\n%d %d %s %0.2f\n", p->codigo, p->qtdade, p->descricao, p->preco);
 +
printf("\n-------------------------------------------------------------------------------\n");
 +
}else {
 +
printf("\n-------------------------------------------------------------------------------\n");
 +
printf("\nProduto não encontrado!!\n");
 +
printf("\n-------------------------------------------------------------------------------\n");
 +
}
 
}  
 
}  
 
+
 
+
 
void ordenar()
 
{
 
 
 
 
 
}
 
 
 
 
 
 
void estat()
 
void estat()
 
{
 
{
+
system("clear");
 +
int soma=0, cod_menor, cod_maior, div=0;
 +
float maior, menor, somatorio=0, media;
 +
char *nomemenor, *nomemaior;
 +
produtos *p;
 +
p = lista->prox;
 +
printf("\n-------------------------------------------------------------------------------\n");
 +
printf("\nEstatísticas dos Produto:\n");
 +
maior = p->preco;
 +
cod_maior = p->codigo;
 +
        nomemaior = p->descricao;
 +
menor = p->preco;   
 +
cod_menor = p->codigo;
 +
nomemenor = p->descricao;   
 +
   
 +
for(p = lista; p != NULL; p = p->prox) {
 +
soma = soma + p->qtdade;
 +
somatorio = somatorio + p->preco;
 +
div = div + 1;
 +
if(maior < p->preco) {
 +
maior = p->preco;
 +
cod_maior = p->codigo;
 +
            nomemaior = p->descricao;
 +
}
 +
if(menor > p->preco) {
 +
menor = p->preco;
 +
cod_menor = p->codigo;
 +
nomemenor = p->descricao;
 +
}
 +
}
 +
media = somatorio/div;
 
 
 +
printf("\nMenor valor: %0.2f  produto: %s", menor, nomemenor);
 +
printf("\nMaior valor: %0.2f  produto: %s", maior, nomemaior);
 +
printf( "\nMedia de preço dos produtos: %0.2f", media);
 +
printf( "\nTotal de produtos: %d\n", soma);
 +
printf("\n-------------------------------------------------------------------------------\n");
 
}
 
}
 
+
 
+
 
void mostra_opcoes()
 
void mostra_opcoes()
 
{
 
{
 
system("clear");
 
system("clear");
printf("-----------------------------------------\n");
+
printf("\n-------------------------------------------------------------------------------\n");
 
printf("Menu\n");
 
printf("Menu\n");
printf("Opção 1: Listar produtos cadastrados\n");
+
printf("\nOpção 1: Listar produtos cadastrados\n");
 
printf("Opção 2: Adicionar produtos\n");
 
printf("Opção 2: Adicionar produtos\n");
 
printf("Opção 3: Remover produto\n");
 
printf("Opção 3: Remover produto\n");
 
printf("Opção 4: Localizar produto\n");
 
printf("Opção 4: Localizar produto\n");
printf("Opção 5: Ordenar produtos\n");
+
printf("Opção 5: Estatísticas\n");
printf("Opção 6: Estatísticas\n");
+
printf("Opção 6: Sair\n");
printf("Opção 7: Sair\n");
+
printf("\n-------------------------------------------------------------------------------\n");
printf("-----------------------------------------\n");
 
 
 
}
 
}
 
+
 
+
 
void opcoes(int x)
 
void opcoes(int x)
 
{   
 
{   
 
int k;
 
int k;
while(i){
+
while(i) {
 
switch(x) {
 
switch(x) {
    case 1:
+
    case 1: // função listar
 
printf("\nTempo de visualização (segundos): ");
 
printf("\nTempo de visualização (segundos): ");
scanf("%d",&k);
+
scanf("%d", &k);
listar_produtos(); // função listar
+
listar_produtos();
 
sleep(k);
 
sleep(k);
 
funcao_principal();
 
funcao_principal();
 
break;
 
break;
    case 2:
+
    case 2: // função adicionar
add_prod(); // função adicionar
+
add_prod();
 
funcao_principal();
 
funcao_principal();
 
break;
 
break;
    case 3:
+
    case 3: // função remover
printf("\nRemover Produtos");
+
rm_prod();
rm_prod(); // função remover
+
sleep(3);
 
funcao_principal();
 
funcao_principal();
 
break;
 
break;
case 4:
+
case 4: // função buscar
printf("\nLocalizar Produtos");
+
        localizar();
 +
sleep(5);
 +
funcao_principal();
 +
break;
 +
case 5: // função estatística
 
printf("\nTempo de visualização (segundos): ");
 
printf("\nTempo de visualização (segundos): ");
scanf("%d",&k);
+
scanf("%d", &k);
        localizar(); // função buscar
+
estat();
 
sleep(k);
 
sleep(k);
funcao_principal();
 
break;
 
    case 5:
 
        ordenar(); // função ordenar
 
 
funcao_principal();
 
funcao_principal();
 
break;
 
break;
 
case 6:
 
case 6:
estat();
 
funcao_principal();
 
break;
 
case 7:
 
 
printf("Saindo!!\n");
 
printf("Saindo!!\n");
 
i=0;
 
i=0;
 
    default:
 
    default:
x=7;  
+
x=6;  
 
}
 
}
 
}
 
}
 
}  
 
}  
  
 +
 
funcao_principal()
 
funcao_principal()
 
{
 
{
Linha 261: Linha 327:
 
mostra_opcoes();
 
mostra_opcoes();
 
printf("Entre com um número: ");
 
printf("Entre com um número: ");
scanf("%d",&num);
+
scanf("%d", &num);
 
opcoes(num);
 
opcoes(num);
 
}
 
}
 
+
 
void main()
 
void main()
 
{
 
{
 +
lista = NULL;
 +
ler_arquivo_para_lista();
 
funcao_principal();
 
funcao_principal();
+
atualizar();
 
 
 
}
 
}
 
 
 
 
 
 
 
 
  
 
</syntaxhighlight>
 
</syntaxhighlight>

Edição atual tal como às 11h18min de 1 de julho de 2015

Integrantes

LEONARDO TASCA

LUISA MACHADO

NATALIA ADRIANA MIRANDA

Descrição da atividade principal

Implemente um programa em linguagem C que faça o controle de estoque simplificado de produtos de uma loja de informática. O programa deverá ter necessariamente um menu onde se poderá fazer a escolha pelas opções disponíveis em loop contínuo, mas com opção de saída. Deverá ler de um arquivo de dados informações sobre os produtos de informática (cadastrados), poderá acrescentar novos produtos, eliminar produtos, e buscar um produto específico pelo código. Deverá ainda ter as opções de ordenar e imprimir a lista na tela de todos os produtos. Também deverá gravar as alterações no mesmo arquivo de dados lido. Pra terminar, contar com uma opção de estatística dizendo qual a quantidade de produtos, o maior, menor e valor médio dos produtos de informática cadastrados.

Descrição da atividade específica

Fazer uso
  1. Comando swith
  2. Lista encadeada
  3. Ponteiros
  4. Alocação Dinâmica de Memória
  5. Funções para tratamento de arquivo


Exemplo da estrutura (encadeada)
struct TProduto{
  int codigo;
  char descricao[40];
  float preco;
  int qtdade;
  struct TProduto *prox;
};
Exemplo de arquivo (produtos.dat)
cat produtos.dat
111 PENDRIVE 19.50 20
102 DVD-RW 2.30 200
150 MOUSE 17.85 50
115 HP3212 80.50 10

Atividades

Distribuição

Este Projeto foi realizado em conjunto, as função foram criadas com o auxilio de todos os integrantes da Equipe. Portanto não houve uma distribuição precisa.

Desenvolvimento

Houve dois principais processos no desenvolvimento. Primeiramente utilizamos a estratégia em que a cada função, era preciso abrir o arquivo, escrever nele e gravar. Mas tivemos certa dificuldade, então com a ajudo do Professor mudados nossa estratégia.Com esta mudança tivemos que iniciar novamente toda construção do programa. Iniciando um novo processo, em que utilizamos duas novas funções, uma no inicio, para abrir o arquivo e "copiar" para uma estrutura temporária, e outra para atualizar, copiando esta estrutura temporária para o arquivo. Utilizando esta estratégia não precisamos ficar abrindo o arquivo a todo momento, facilitando o desenvolvimento do projeto.

Conclusão

Este projeto nos proporcionou utilizar tudo aquilo que aprendemos ao longo este semestre, trabalhar em equipe e melhorar nosso desempenho em programação. As dificuldades que tivemos nos fizeram repensar melhor e aprender ainda mais.

Auto avaliação

LEONARDO TASCA - 9

LUÍSA MACHADO - 9

NATÁLIA ADRIANA MIRANDA - 9

Avaliação (professor)

Caros alunos!

Parabéns pelo trabalho de vocês. Ficou o mais próximo do que eu esperava. O programa atendeu a todos os requisitos iniciais, o código fonte está bem organizado, mas senti falta dele estar melhor comentado. Ainda faltou um cuidado maior com a wiki.

Por isso minha nota para a toda a equipe é: 9.

Douglas A.

Código fonte

#include <stdio.h>
#include <stdlib.h>
 
typedef struct TProduto produtos;

struct TProduto{
	int codigo;
	int qtdade;  
	char descricao[20];
	float preco;
	struct TProduto *prox;
}*lista;
 
int i=1;


void ler_arquivo_para_lista()
{
	FILE *fp;
	int res;

	if ((fp = fopen("produtos.dat", "r")) == NULL) {
		printf("Falha na abertura do arquivo.\n");
		return;
	} 
	while(1) {
    	produtos *novo = malloc(sizeof(produtos));
		if((res = fscanf(fp,"%d %d %s %f", &novo->codigo, &novo->qtdade, novo->descricao, &novo->preco)) == EOF) {
			break;
		}
		if(lista == NULL) {
			lista = novo;
		}else {
			novo->prox = lista->prox;
			lista->prox = novo;
		}	
	}
	fclose(fp);
}


void atualizar()
{
	FILE *fp;
	int res;
	produtos *p;

	if ((fp = fopen("produtos.dat", "w")) == NULL) {
		printf("Falha na abertura do arquivo.\n");
		return;
	} 
	for (p = lista; p != NULL; p = p->prox) {
		if((res = fprintf(fp,"%d %d %s %0.2f\n", p->codigo, p->qtdade, p->descricao, p->preco)) == EOF) {
			printf("Erro\n");
		}
	}
	printf("\nArquivo atualizado\n");
	fclose(fp);
}


void listar_produtos()
{	
	system("clear");
	produtos *p;
	printf("\nLista dos Produtos Cadastrados:\n");
	printf("\n-------------------------------------------------------------------------------\n");
	for (p = lista; p != NULL; p = p->prox) {
		printf( "%d %d %s %0.2f", p->codigo, p->qtdade, p->descricao, p->preco);
		printf("\n-------------------------------------------------------------------------------\n");
	}
}

 
void add_prod()
{	
	system("clear");
	printf("\nAdicionar produto:\n");
	produtos *p = malloc (sizeof(produtos));
	printf("\nDigite o código do produto: ");
	scanf("%d", &p->codigo);
	printf("Digite a quantidade de produtos: ");
	scanf("%d", &p->qtdade);
	printf("Digite o nome do produto: ");
	scanf("%s", p->descricao);
	printf("Digite preço do produto: ");
	scanf("%f", &p->preco);
 
	if(lista == NULL) {
		lista = p;
	}else {
		p->prox = lista->prox;
		lista->prox = p;
	}
}
 
 
void rm_prod()
{
	system("clear");
	int cod;
	produtos *pa = malloc (sizeof(produtos));
	produtos *p;
	pa=lista;
	printf("\n-------------------------------------------------------------------------------\n");
	printf("\nRemover Produto\n");
	printf("\nDigite o código: ");
	scanf("%d", &cod);

	for(p = lista; p != NULL; p = p->prox) {
		if(p->codigo == cod)
			break;
		pa = p;		
	}
	if(p != NULL) {
		free(p);
		pa->prox = p->prox;
		printf("\nProduto removido!!\n");
		printf("\n-------------------------------------------------------------------------------\n");
	}else {
		printf("\nCódigo não existente!!\n");
		printf("\n-------------------------------------------------------------------------------\n");
	}	
}
 
 
void localizar()
{
	system("clear");
	int cod;
	produtos *p;
	p = lista->prox;
	printf("\nLocalizar Produto\n");
	printf("\nDigite o código: ");
	scanf("%d", &cod);

	for(p = lista; p != NULL; p = p->prox) {
		if(p->codigo == cod)
			break;
	}
	if(p!=NULL) {
		printf("\n-------------------------------------------------------------------------------\n");
		printf( "\n%d %d %s %0.2f\n", p->codigo, p->qtdade, p->descricao, p->preco);
		printf("\n-------------------------------------------------------------------------------\n");
	}else {
		printf("\n-------------------------------------------------------------------------------\n");
		printf("\nProduto não encontrado!!\n");
		printf("\n-------------------------------------------------------------------------------\n");
	}	
} 
 
 
void estat()
{
	system("clear");
	int soma=0, cod_menor, cod_maior, div=0;
	float maior, menor, somatorio=0, media;
	char *nomemenor, *nomemaior;
	produtos *p;
	p = lista->prox;
	printf("\n-------------------------------------------------------------------------------\n");
	printf("\nEstatísticas dos Produto:\n");
	maior = p->preco;
	cod_maior = p->codigo;
        nomemaior = p->descricao;
	menor = p->preco;    
	cod_menor = p->codigo;
	nomemenor = p->descricao;    
    
	for(p = lista; p != NULL; p = p->prox) {
		soma = soma + p->qtdade;
		somatorio = somatorio + p->preco;
		div = div + 1;
		if(maior < p->preco) {
			maior = p->preco;
			cod_maior = p->codigo;
            nomemaior = p->descricao;
		}
		if(menor > p->preco) {
			menor = p->preco;
			cod_menor = p->codigo;
			nomemenor = p->descricao;
		}
	}
	media = somatorio/div;
	
	printf("\nMenor valor: %0.2f  produto: %s", menor, nomemenor);
	printf("\nMaior valor: %0.2f  produto: %s", maior, nomemaior);
	printf( "\nMedia de preço dos produtos: %0.2f", media);
	printf( "\nTotal de produtos: %d\n", soma);
	printf("\n-------------------------------------------------------------------------------\n");
}
 
 
void mostra_opcoes()
{
	system("clear");
	printf("\n-------------------------------------------------------------------------------\n");
	printf("Menu\n");
	printf("\nOpção 1: Listar produtos cadastrados\n");
	printf("Opção 2: Adicionar produtos\n");
	printf("Opção 3: Remover produto\n");
	printf("Opção 4: Localizar produto\n");
	printf("Opção 5: Estatísticas\n");
	printf("Opção 6: Sair\n");
	printf("\n-------------------------------------------------------------------------------\n");
}
 
 
void opcoes(int x)
{   
	int k;
	while(i) {
		switch(x) {
		    case 1: 						// função listar
				printf("\nTempo de visualização (segundos): ");
				scanf("%d", &k);
				listar_produtos();
				sleep(k);
				funcao_principal();	
				break;
		    case 2:							// função adicionar
				add_prod();
				funcao_principal();	
				break;
		    case 3:							// função remover
				rm_prod();
				sleep(3);
				funcao_principal();	
				break;
			case 4:							// função buscar
		        localizar();
				sleep(5);
				funcao_principal();	
				break;
			case 5:							// função estatística
				printf("\nTempo de visualização (segundos): ");
				scanf("%d", &k);
				estat();
				sleep(k);
				funcao_principal();	
				break;
			case 6:
				printf("Saindo!!\n");
				i=0;	
		    default:
				x=6; 
		}
	}
} 

 
funcao_principal()
{
	int num;
	mostra_opcoes();
	printf("Entre com um número: ");
	scanf("%d", &num);
	opcoes(num);
}
 
void main()
{
	lista = NULL;
	ler_arquivo_para_lista();
	funcao_principal();
	atualizar();
}



<< Equipe5-2015-1