Equipe5-2015-1

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
A versão imprimível não é mais suportada e pode ter erros de renderização. Atualize os favoritos do seu navegador e use a função de impressão padrão do navegador.

Integrantes

ANDREZA CHAVES

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

Desenvolvimento

Conclusão

Código fonte

#include <stdio.h>
#include <stdlib.h>

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

int i=1;
FILE *fp;

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


void add_prod()
{	
	struct TProduto *pp = (struct TProduto *) malloc(sizeof(struct TProduto));
	int res, j;
	printf("Digite o código do produto: ");
	scanf("%d", &pp->codigo);
	printf("Digite a quantidade de produtos: ");
	scanf("%d", &pp->qtdade);
	printf("Digite o nome do produto: ");
	scanf("%s", pp->descricao);
	printf("Digite preço do produto: ");
	scanf("%f", &pp->preco);
	if ((fp=fopen("produtos.dat", "a")) == NULL) {
		printf("Falha na abertura do arquivo\n");
		return;
	}
	if((res = fprintf(fp,"%d %d %s %0.2f", pp->codigo, pp->qtdade, pp->descricao, pp->preco)) == EOF) {
		printf("Erro\n");
	}
	fclose(fp);
}


void rm_prod()
{
	struct TProduto *pp = (struct TProduto *) malloc(sizeof(struct TProduto));
	int cod, j, res, c, q;
	float p;
	char d[20];
	if ((fp = fopen("produtos.dat", "r+")) == NULL) {
		printf("Falha na abertura do arquivo\n");
		return;
	}

	printf("\nDigite o código: ");
	scanf("%d", &cod);
	rewind(fp);
    
	for(pp=lista;pp!=NULL;pp=pp->prox) {
		if((res = fprintf(fp,"%d %d %s %0.2f", pp->codigo, pp->qtdade, pp->descricao, pp->preco)) == EOF) {
			printf("Erro\n");
		}
		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);
		pp->codigo = c;
		pp->qtdade = q;
		pp->preco = p;
		for(j=0;j<20;j++)
			pp->descricao[j] = d[j];
		pp = pp->prox;
		if ( pp != NULL && pp->codigo == cod ){
			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()
{
	struct TProduto *pp = (struct TProduto *) malloc(sizeof(struct TProduto));
	int cod, res;
	if ((fp = fopen("produtos.dat", "r")) == NULL) {
		printf("Falha na abertura do arquivo\n");
		return;
	}

	printf("\nDigite o código: ");
	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 ){
			printf("\n%d %d %s %0.2f\n",  pp->codigo, pp->qtdade, pp->descricao, pp->preco);
			break;
		}
	}
    if( res == -1 ){
		printf("\nCódigo não encontrado\n");
	}
	fclose(fp);
} 


		 
void ordenar()
{


}


void estat()
{
		
	
}


void mostra_opcoes()
{
	system("clear");
	printf("-----------------------------------------\n");
	printf("Menu\n");
	printf("Opçã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: Ordenar produtos\n");
	printf("Opção 6: Estatísticas\n");
	printf("Opção 7: Sair\n");
	printf("-----------------------------------------\n");
	
}


void opcoes(int x)
{   
	int k;
	while(i){
		switch(x) {
		    case 1:
				printf("\nTempo de visualização (segundos): ");
				scanf("%d",&k);
				listar_produtos();  // função listar
				sleep(k);
				funcao_principal();	
				break;
		    case 2:
				add_prod();			// função adicionar
				funcao_principal();	
				break;
		    case 3:
				printf("\nRemover Produtos");
				rm_prod();			// função remover
				funcao_principal();	
				break;
			case 4:
				printf("\nLocalizar Produtos");
				printf("\nTempo de visualização (segundos): ");
				scanf("%d",&k);
		        localizar();		// função buscar
				sleep(k);
				funcao_principal();	
				break;
		    case 5:
		        ordenar();			// função ordenar
				funcao_principal();	
				break;
			case 6:
				estat();
				funcao_principal();	
				break;
			case 7:
				printf("Saindo!!\n");
				i=0;	
		    default:
				x=7; 
		}
	}
} 

funcao_principal()
{
	int num;
	mostra_opcoes();
	printf("Entre com um número: ");
	scanf("%d",&num);
	opcoes(num);
}

void main()
{
	funcao_principal();
	
		  
}



<< Equipe5-2015-1