Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

MarcioExpedito

[Resolvido] Programa Estoque de Loja

Recommended Posts

Oi Galera, sou novo no forum e estou cursando o 2º Semestre de SI, não estou sabendo realizar este programa na faculdade, tenho pouco conhecimento, se alguém poder me ajudar eu agradeço...

 

 

Escreva programa para gerenciar os estoques de uma empresa composta de 2 lojas, vendendo 5 produtos diferentes em cada uma delas.

Para cada uma das lojas são armazenadas as seguintes informações:

(1) nome da loja

(2) informações a respeito dos itens vendidos (nome do produto, unidades disponíveis e preço unitário)

 

Faça um programa para efetuar as seguintes tarefas:

 

a) preenchimento de todos os dados para a empresa;

B) inclusão de novos produtos em uma das lojas;

 

Sugere-se utilizar as seguintes declarações:

 

struct PRODUTO{
	  char NOME[10];
	  int QUANTIDADE;
	  float PRECO_UNITARIO;
};


struct LOJA{

	  char NOME[10];
	  struct PRODUTO itens[5];

}lojas[2];

Compartilhar este post


Link para o post
Compartilhar em outros sites

ow trabalha com alocação dinamica e tals ow desse modo q você passow soh q assim:

typedef struct{
	  char NOME[10];
	  int QUANTIDADE;
	  float PRECO_UNITARIO;
}PRODUTO;

PRODUTO p1, p2, p3, p4, p5;

bom eu gosto de usar o typedef tem pessoas q fazem uso de struct de outra maneira, + ai vai do seu gosto!

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

fiz um exemplo, podem dar dicas pra melhorar ae, vlw :D

 

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

typedef struct
{
	char nome[10];
	int quantidade;
	float preco_unitario;
}Produto;

typedef struct
{
	char nome[10];
	Produto itens[5];
}Loja;
Loja lojas[2];

void Menu();
void ExecutaOpcao(int opcao);
void CadastrarEmpresa(char *nome_empresa);
void ExibirLoja();
void CadastrarProduto(char *nome_empresa, char *nome_produto, int qtd_produto, float preco_produto);
int VerificaEmpresa(char *nome_empresa);


int main()
{
	int opcao,i,j;
	for(i=0;i<2;i++)
	{
		strcpy(lojas[i].nome,"0");
		for(j=0;j<5;j++)
		{
			strcpy(lojas[i].itens[j].nome,"0");	
		}
	}
	do
	{
		Menu();
		printf("\nEscolha uma opcao: ");
		scanf("%d",&opcao);
		fflush(stdin);
		ExecutaOpcao(opcao);
	}while(opcao != -1);
	return(0);
}

void Menu()
{
	printf("01 - Nova Empresa");
	printf("\n02 - Inclusao de Produtos");
	printf("\n03 - Exibir Loja e Produtos");
	printf("\n-1 - Sair");
}

void ExecutaOpcao(int opcao)
{
	char nome_empresa[10];
		char nome_produto[10];
		int qtd_produto;
		float preco_produto;
	switch(opcao)
	{
		case 1:
			printf("\nNome da Empresa: ");
			scanf("%s",&nome_empresa);
			fflush(stdin);

			system("cls");
			CadastrarEmpresa(nome_empresa);
		break;
		case 2:
			printf("\nNome da Empresa: ");
			scanf("%s",&nome_empresa);
			fflush(stdin);

			if(VerificaEmpresa(nome_empresa) == 0)
			{
				puts("EMPRESA NAO CADASTRADA!\n");
				break;
			}
			
			printf("\nNome do Produto: ");
			scanf("%s",&nome_produto);
			fflush(stdin);

			printf("\nQuantidade do Produto: ");
			scanf("%d",&qtd_produto);
			fflush(stdin);

			printf("\nPreco do Produto: ");
			scanf("%f",&preco_produto);
			fflush(stdin);
			system("cls");
			
			CadastrarProduto(nome_empresa, nome_produto, qtd_produto, preco_produto);
		break;
		case 3:
			system("cls");
			ExibirLoja();
		break;
		case -1:
			printf("Saindo...");
		break;
	}
}

void CadastrarEmpresa(char *nome_empresa)
{
	int i;
	for(i=0;i<2;i++)
	{
		if(strcmp(lojas[i].nome,nome_empresa) == 0)
		{
			printf("LOJA JAH EXISTE!\n\n");
			break;
		}
		else
		{
			if(strcmp(lojas[i].nome,"0") == 0)
			{
				strcpy(lojas[i].nome,nome_empresa);
				printf("LOJA CADASTRADA!\n\n");
				break;
			}
			
		}
	}
}

void ExibirLoja()
{
	int i,j;
	for(i=0;i<2;i++)
	{
		if(strcmp(lojas[i].nome,"0") != 0)
		{
			printf("Nome da Loja: [ %s ]", lojas[i].nome);		
		}
		for(j=0;j<5;j++)
		{
			if(strcmp(lojas[i].itens[j].nome,"0") != 0)
			{
				printf("\n\nPRODUTO: %s",lojas[i].itens[j].nome);
				printf("\nQUANTIDADE: %d",lojas[i].itens[j].quantidade);
				printf("\nPRECO: %.2f",lojas[i].itens[j].preco_unitario);
				printf("\n");
			}
		}
		printf("\n");
	}
	printf("\n");
}

void CadastrarProduto(char *nome_empresa, char *nome_produto, int qtd_produto, float preco_produto)
{
	int i,j;
	for(i=0;i<2;i++)
	{
		if(strcmp(lojas[i].nome, nome_empresa) == 0)
		{
			for(j=0;j<5;j++)
			{
				if(strcmp(lojas[i].itens[j].nome,"0") == 0)
				{
					strcpy(lojas[i].itens[j].nome, nome_produto);
					lojas[i].itens[j].quantidade = qtd_produto;
					lojas[i].itens[j].preco_unitario = preco_produto;
					printf("PRODUTO CADASTRADO!\n\n");
					break;
				}
			}
		}
	}
}

int VerificaEmpresa(char *nome_empresa)
{
	int i;
	for(i=0;i<2;i++)
	{
		if(strcmp(lojas[i].nome,nome_empresa) == 0)
		{
			return(1);
		}
		else
		{
			return(0);
		}
	}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Parar com esse fflush(stdin).

 

while((c = getchar()) != '\n' && c != EOF)

 

Faça uma biblioteca com essas funções p/ sair usando.

 

 

for(i=0;i<2;i++) {
	strcpy(lojas[i].nome,"0");
	for(j=0;j<5;j++)
	{
		strcpy(lojas[i].itens[j].nome,"0");	
	}

 

Use memset.É mais econômico.

 

 

 

 

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX_NOME 256
#define MAX_LOJA 2
#define MAX_PROD 5
#define CADEMP(DST,SRC) memcpy(DST,SRC,sizeof(SRC))
#define CADPNOME(DST,SRC) memcpy(DST,SRC,sizeof(SRC))

typedef struct {
char nome[MAX_NOME];
unsigned int qtd;
float preco;
}Produto;

typedef struct {
char nome[MAX_NOME];
Produto itens[MAX_PROD];
} Loja;

Loja lojas[MAX_LOJA];

void Menu() {
printf("1 - Cadastrar Empresa");
printf("\n2 - Inclusao de Produtos");
printf("\n3 - Exibir Loja e Produtos");
printf("\n4 - Sair");
}

char VerificaEmpresa(const char nome_empresa[]) {
 char zerado[MAX_NOME];
 memset(zerado,0,sizeof(zerado));
 char emppos;
 for(emppos=0;emppos<MAX_LOJA;emppos++)
if(strcmp(lojas[emppos].nome,zerado)==0)
  break;

 if(emppos ==  0) return -1; // lista vazia

 char i;
 for(i=0;i< emppos;i++)
if(strcmp(lojas[i].nome,nome_empresa) == 0)
   return(i); // empresa existe

 if(i==emppos && emppos == MAX_LOJA) return -2; //lista cheia sem empresa
 return i; //posicao a inserir a empresa
}

char VerificaProduto(const char nome_produto[],const char lpos) {
 char zerado[MAX_NOME];
 memset(zerado,0,sizeof(zerado));
 char ppos;
 for(ppos=0;ppos<MAX_PROD;ppos++)
 if(strcmp(lojas[lpos].itens[ppos].nome,zerado) == 0)
	break;

 if (ppos == 0) return -1; //lista vazia

 char i;
 for(i=0;i<ppos;i++)
 if(strcmp(lojas[lpos].itens[i].nome,nome_produto) == 0)
	return i; // posicao do produto existente na lista

 if(i==ppos && ppos==MAX_PROD) return -2; // lista cheia sem o produto
 return i; // posicao a inserir o produto
}


void cadastrarProduto(const char pos) {
char nome_produto[MAX_NOME];
char ppos;
printf("\nNome do Produto: ");
scanf("%s",&nome_produto);

ppos = VerificaProduto(nome_produto,pos);
if (ppos == -2)
  puts("\nLISTA CHEIA");
else if (ppos >-1 && strcmp(lojas[pos].itens[ppos].nome,nome_produto) == 0)
  puts("\nPRODUTO JA EXISTE");
else {
  if (ppos == -1)  CADPNOME(lojas[pos].itens[0].nome,nome_produto);
  else  CADPNOME(lojas[pos].itens[ppos].nome,nome_produto);

  printf("\nQuantidade do Produto: ");
  if (ppos == -1)  scanf("%u",&lojas[pos].itens[0].qtd);
  else  scanf("%u",&lojas[pos].itens[ppos].qtd);

  printf("\nPreco do Produto: ");
  if (ppos == -1)  scanf("%f",&lojas[pos].itens[0].preco);
  else scanf("%f",&lojas[pos].itens[ppos].preco);
}
}

void ExibirLoja(){
char zerado[MAX_NOME];
memset(zerado,0,sizeof(zerado));

for(char i=0;i<MAX_LOJA && strcmp(lojas[i].nome,zerado) != 0;i++) {
   printf("Nome da Loja: [ %s ]", lojas[i].nome);
   for(char j=0;j<MAX_PROD && strcmp(lojas[i].itens[j].nome,zerado)!=0;j++)  {
		 printf("\n\nPRODUTO: %s",lojas[i].itens[j].nome);
		 printf("\nQUANTIDADE: %u",lojas[i].itens[j].qtd);
		 printf("\nPRECO: %.2f\n",lojas[i].itens[j].preco);
	}
	puts("");
}
}


void ExecutaOpcao(const unsigned int opcao) {
char nome_empresa[MAX_NOME];
char posicao;

   if (opcao == 0) puts("Saindo do programa");

if (opcao == 1) {
   printf("\nNome da Empresa: ");
   scanf("%s",&nome_empresa);
   posicao = VerificaEmpresa(nome_empresa);

  if(posicao == -2)  puts("\nLISTA CHEIA");
  else if (posicao > -1 && strcmp(lojas[posicao].nome,nome_empresa)==0)
	  puts("\nEMPRESA JA EXISTE");
  else {
	  if (posicao == -1) CADEMP(lojas[0].nome,nome_empresa);
	  else CADEMP(lojas[posicao].nome,nome_empresa);
  }

} else if (opcao == 2) {

   printf("\nNome da Empresa: ");
   scanf("%s",&nome_empresa);
   posicao = VerificaEmpresa(nome_empresa);

   if (posicao > -1 && strcmp(lojas[posicao].nome,nome_empresa) == 0)
	  cadastrarProduto(posicao);
   else  puts("\nEMPRESA NAO EXISTE");

  } else if (opcao == 3)
	ExibirLoja();
}

int main()
{
memset(&lojas,0,sizeof(lojas));

unsigned int opcao;
do {
	Menu();
	printf("\nEscolha uma opcao: ");
	scanf("%u",&opcao);
	ExecutaOpcao(opcao%4);
}while(opcao%4 != 0);

return(0);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

ow trabalha com alocação dinamica e tals ow desse modo q você passow soh q assim:

typedef struct{
	  char NOME[10];
	  int QUANTIDADE;
	  float PRECO_UNITARIO;
}PRODUTO;

PRODUTO p1, p2, p3, p4, p5;

bom eu gosto de usar o typedef tem pessoas q fazem uso de struct de outra maneira, + ai vai do seu gosto!

 

[]'s

Valeu...obrigado!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

fiz um exemplo, podem dar dicas pra melhorar ae, vlw :D

 

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

typedef struct
{
	char nome[10];
	int quantidade;
	float preco_unitario;
}Produto;

typedef struct
{
	char nome[10];
	Produto itens[5];
}Loja;
Loja lojas[2];

void Menu();
void ExecutaOpcao(int opcao);
void CadastrarEmpresa(char *nome_empresa);
void ExibirLoja();
void CadastrarProduto(char *nome_empresa, char *nome_produto, int qtd_produto, float preco_produto);
int VerificaEmpresa(char *nome_empresa);


int main()
{
	int opcao,i,j;
	for(i=0;i<2;i++)
	{
		strcpy(lojas[i].nome,"0");
		for(j=0;j<5;j++)
		{
			strcpy(lojas[i].itens[j].nome,"0");	
		}
	}
	do
	{
		Menu();
		printf("\nEscolha uma opcao: ");
		scanf("%d",&opcao);
		fflush(stdin);
		ExecutaOpcao(opcao);
	}while(opcao != -1);
	return(0);
}

void Menu()
{
	printf("01 - Nova Empresa");
	printf("\n02 - Inclusao de Produtos");
	printf("\n03 - Exibir Loja e Produtos");
	printf("\n-1 - Sair");
}

void ExecutaOpcao(int opcao)
{
	char nome_empresa[10];
		char nome_produto[10];
		int qtd_produto;
		float preco_produto;
	switch(opcao)
	{
		case 1:
			printf("\nNome da Empresa: ");
			scanf("%s",&nome_empresa);
			fflush(stdin);

			system("cls");
			CadastrarEmpresa(nome_empresa);
		break;
		case 2:
			printf("\nNome da Empresa: ");
			scanf("%s",&nome_empresa);
			fflush(stdin);

			if(VerificaEmpresa(nome_empresa) == 0)
			{
				puts("EMPRESA NAO CADASTRADA!\n");
				break;
			}
			
			printf("\nNome do Produto: ");
			scanf("%s",&nome_produto);
			fflush(stdin);

			printf("\nQuantidade do Produto: ");
			scanf("%d",&qtd_produto);
			fflush(stdin);

			printf("\nPreco do Produto: ");
			scanf("%f",&preco_produto);
			fflush(stdin);
			system("cls");
			
			CadastrarProduto(nome_empresa, nome_produto, qtd_produto, preco_produto);
		break;
		case 3:
			system("cls");
			ExibirLoja();
		break;
		case -1:
			printf("Saindo...");
		break;
	}
}

void CadastrarEmpresa(char *nome_empresa)
{
	int i;
	for(i=0;i<2;i++)
	{
		if(strcmp(lojas[i].nome,nome_empresa) == 0)
		{
			printf("LOJA JAH EXISTE!\n\n");
			break;
		}
		else
		{
			if(strcmp(lojas[i].nome,"0") == 0)
			{
				strcpy(lojas[i].nome,nome_empresa);
				printf("LOJA CADASTRADA!\n\n");
				break;
			}
			
		}
	}
}

void ExibirLoja()
{
	int i,j;
	for(i=0;i<2;i++)
	{
		if(strcmp(lojas[i].nome,"0") != 0)
		{
			printf("Nome da Loja: [ %s ]", lojas[i].nome);		
		}
		for(j=0;j<5;j++)
		{
			if(strcmp(lojas[i].itens[j].nome,"0") != 0)
			{
				printf("\n\nPRODUTO: %s",lojas[i].itens[j].nome);
				printf("\nQUANTIDADE: %d",lojas[i].itens[j].quantidade);
				printf("\nPRECO: %.2f",lojas[i].itens[j].preco_unitario);
				printf("\n");
			}
		}
		printf("\n");
	}
	printf("\n");
}

void CadastrarProduto(char *nome_empresa, char *nome_produto, int qtd_produto, float preco_produto)
{
	int i,j;
	for(i=0;i<2;i++)
	{
		if(strcmp(lojas[i].nome, nome_empresa) == 0)
		{
			for(j=0;j<5;j++)
			{
				if(strcmp(lojas[i].itens[j].nome,"0") == 0)
				{
					strcpy(lojas[i].itens[j].nome, nome_produto);
					lojas[i].itens[j].quantidade = qtd_produto;
					lojas[i].itens[j].preco_unitario = preco_produto;
					printf("PRODUTO CADASTRADO!\n\n");
					break;
				}
			}
		}
	}
}

int VerificaEmpresa(char *nome_empresa)
{
	int i;
	for(i=0;i<2;i++)
	{
		if(strcmp(lojas[i].nome,nome_empresa) == 0)
		{
			return(1);
		}
		else
		{
			return(0);
		}
	}
}

 

Valeu, obrigado, vai ser muito útil.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.