Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

Ricardo_Couto

Como guardar dados numa estrutura?

Mensagens Recomendadas

Ricardo_Couto    0
Ricardo_Couto

Olá preciso de ajuda, estou a tentar desenvolver um programa de gestão de stocks, e queria saber como alojo dados na estrutura do armazém, de forma a podermos depois continuar com a criação de outras funções, mas que nos permita visualizar o que já existe dentro do armazém...

O código que tenho ate ao momento é o seguinte..

Se puderem ajudar agradeço, tenho alguma urgência.

Obrigado

#include <stdio.h>
#include <stdlib.h>
#define MAXARMAZEM 200
#define MAXCLIENTES 1000

// Declaraçao de Matrizes, com a sua carga inicial, automática para referencias de componentes e
// circuitos integrados bem como o respectivo preço associado a cada um deles.


char refComp[][4]={"001","003","005","007","009","011","013","015","017","019"};
char refCirc[][4]={"002","004","006","008","010","012","014","016","018","020"};
char precoComp[][5]={"10","0,89","1,45","3.20","4","2,10","0,37","1,63","0,51","17"};
char precoCirc[][6]={"15","10,56","11,40","7,52","8,35","10,88","20","6,73","8,81","9,40"};

// Declaraçao das estruturas

typedef struct cliente {
  int num_cliente;
  char nome[40];
  char morada[60];
}Cliente;

typedef struct item
{
char tipo; // componente ou circuito integrado
char referencia[10];
double preco;
} Item;



typedef struct encomenda
{
int numEncomenda;
int tipoProduto;
char referencia[10];
int quantidade;
int quantiSatisfeita;
} Encomenda;

typedef struct armazem
{
Item itens[MAXARMAZEM];
int quantStock[MAXARMAZEM];
int stockMedio[MAXARMAZEM];
int stockMinimo[MAXARMAZEM];
} Armazem;


// Declaraçao das funçoes

int ler(int linf,int lsup)
{
    int i;
    printf("Escolha a opcao pretendida\n");
    do
    {
       scanf("%d",&i);
       if(i<linf || i>lsup)
       printf("Numero invalido. Escolha entre %d e %d", linf, lsup);
    }

    while(i<linf || i>lsup);
return i;

}


char menuPrincipal()
{
    char opcao;
    do
    {

    printf("\nMENU ENCOMENDAS\n");
            printf("\n\n\t1-AREA Cliente");
            printf("\n\n\t2-AREA Producao");
            printf("\n\n\t3-Estatisticas");
            printf("\n\n\t4-Armazem");
            printf("\n\n\ts\S-Sair");
            printf("\n\n\tOpcao:");
            opcao=getch();
    }       while (opcao!='1' && opcao!='2' && opcao!='3' && opcao!='4' && opcao!='s' && opcao!='S' );
            return opcao;

}



void menuProducao(Armazem v[],int *q)
{
    system("cls");

    char op;
    int i;
    printf("1.Componentes\n");
    printf("2.Encomenda de componentes\n");
    printf("3.Adicionar Circuitos Integrados ao stock\n");


    do
    {

        scanf("%c",&op);
        getchar();
        switch(op)
        {
            case'1': system("cls");
            printf("\t\t***REFERENCIA DE COMPONENTES***\n\n\n");
            for (i=0; i<10; i++)

            {printf("\nReferencia do Circuito Integrado - %s",refComp[i]);
             printf(" -> Custo - %seuros",precoComp[i]);
            }
            break;
            case'2':system("cls");
            printf("\t\t***ENCOMENDA DE COMPONENTES***\n\n\n");
            if (*q==0)
            printf("Nao tem nada em stock");
            else
            {
                for (i=0; i<*q; i++)
                printf("Referencia - %s",v[i].itens[i].referencia);
            }
            break;
            //case'3': addCircuitosIntegrados();break;
            case'0': break;

            default: printf("Opcao invalida");break;
        }
    }
    while (op !='0');

}

void menuCliente(Armazem v[],int *q,Cliente c[],int *qc)
{
    system("cls");
    int i;
    char op;

    do
    {
    system("cls");
    printf("\n1.Custo de circuitos integrados\n");
    printf("2.Encomenda de circuitos integrados\n");
    printf("3.Insercao de dados\n");
    printf("0. sair\n");
    printf("\n\nIntroduza opcao pretendida\n");


        scanf("%c",&op);
        getchar();
        switch(op)
        {
            case'1': system("cls");
            printf("\t\t***REFERENCIA E CUSTO DE CIRCUITOS INTEGRADOS***\n\n\n");
            for (i=0; i<10; i++)

            {printf("\nReferencia do Circuito Integrado - %s",refCirc[i]);
             printf(" -> Custo - %seuros",precoCirc[i]);
            }
                getchar();

            break;
            case'2':system("cls");
            printf("\t\t***ENCOMENDA DE CIRCUITOS INTEGRADOS***\n\n\n");
            if (*q==0)
            printf("Nao tem nada em stock");
            else
            {
                for (i=0; i<*q; i++)
                printf("Referencia - %s",v[i].itens[i].referencia);
            }

            break;
            case'3':system("cls");

            {
           printf("\t\t***INSERIR DADOS***\n\n\n");
           inserirCliente(c,&(*qc));

            }
            break;
            case'0': break;

            default: printf("Opcao invalida");break;
        }
    }
    while (op !='0');

}

void inserirCliente(Cliente c[], int *qc)
{
     system("cls");

        if(*qc==MAXCLIENTES)
        printf("Base de dados atingiu quantidade máxima de clientes");
        else
        {

            printf("\n\n Numero do Cliente: ");
            scanf("%d",&c[*qc].num_cliente);
            printf("\n\n Nome do Cliente: ");
            scanf("%s",c[*qc].nome);
            printf("\n\n Morada do Cliente: ");
            scanf("%s",c[*qc].morada);
            (*qc++);

        }



}
void comparar (int *qstock)
{

    int i,n,b,c=0;
    char tipo[10];
do
{
    printf("Introduza um numero:");
scanf("%s",tipo);
i=strlen(tipo);

if(i==3){
n=atoi(tipo);
   for(b=0;b<10;b++){

   if (n==atoi(refComp[b])) c=1;
   if (n==atoi(refCirc[b])) c=2;
   }

if(c!=0){
  if(c==2) printf("\n\nCircuitos Integrados\n\n");
  else  printf("\n\nComponente\n\n");
  printf("Qual a quantidade que pretende introduzir?");


}


else
{
     printf("\n\nReferencia nao existe\n");
     printf("\n\nComponentes\t\t\t\tCircuitos Integrados\n\n");
     for(b=0;b<10;b++){ printf("\nComponentes existentes:%s",refComp[b]);
     printf("           Circuitos Integrados existentes:%s",refCirc[b]);}
     printf("Qual a quantidade que pretende introduzir?");
}

}

else {
    printf("\n\nNao Existe\n\nReferencias existentes:\n");

    printf("\n\nComponentes\t\t\t\tCircuitos Integrados\n\n");
     for(b=0;b<10;b++){ printf("\nComponentes existentes:%s",refComp[b]);
     printf("           Circuitos Integrados existentes:%s",refCirc[b]);}
     printf("\n\nIntroduza uma referencia com tres digitos\n");
}
printf("\n\n");
}
while(i!=3);
getchar;


}


void prencherStruct(Armazem*armazem,int *qstock)
{
    system("cls");
    printf("Items:");
    comparar(*qstock);
    scanf("%c",&armazem->itens[*qstock].tipo);
    printf("Quantidade de stock:");
    scanf("%d",&armazem->quantStock);
    printf("Stock Médio:");
    scanf("%d",&armazem->stockMedio);
    printf("Stock Minimo de Segurança:");
    scanf("%d",&armazem->stockMinimo);
}

    void menuEstatisticas()
{
    system("cls");
    int op;
    printf("1.Quantidade de componentes consumida ao longo do ano\n");
    printf("2.Custo de um componente em stock\n");
    printf("3.Stock medio mensal de componentes\n");
    printf("4.Stock minimo de seguranca de componentes\n");
    printf("5.Quantidade de componentes vendida ao longo do ano\n");
    printf("6.Quantidade de circuitos integrados consumida ao longo do ano\n");
    printf("7.Custo de um circuito integrado em stock\n");
    printf("8.Stock medio mensal de circuitos integrados\n");
    printf("9.Stock minimo de seguranca de circuitos integrados\n");
    printf("10.Quantidade de circuitos integrados vendida ao longo do ano\n");
    printf("11.Disponibilidade de item em stock\n");
    printf("12.Taxa de rotacao\n");
    printf("13.Custo de posse anual de um item em armazem\n");
    printf("14.Valores minimos e maximos");
    do
    {
        printf("Introduza opcao pretendida\n");
        scanf("%d",&op);
        switch(op)
        {
            case'1': ;break;
            case'2': ;break;
            case'3': ;break;
            case'4': ;break;
            case'5': ;break;
            case'6': ;break;
            case'7': ;break;
            case'8': ;break;
            case'9': ;break;
            case'10': ;break;
            case'11': ;break;
            case'12': ;break;
            case'13': ;break;
            case'14': ;break;
            case'0':printf("Terminar programa\n");
            default: printf("Opcao invalida");
        }
    }
    while (op !=0);
}



int main (int argc, const char * argv[])
{
Armazem v[MAXARMAZEM];
Cliente c [MAXCLIENTES];
Armazem armazem;
int quantidade_stock=0;
int quantidade_clientes=0;
//stockComp[MAXARMAZEM];
    char op;

    do

    {
    system ("cls");
    op=menuPrincipal();
    switch(op)
            {
                case '1': {menuCliente(v,&quantidade_stock,c,&quantidade_clientes);break;} //envio de vector para menucliente
                case '2': {menuProducao(v,&quantidade_stock);break;}
                case '3': {menuEstatisticas();break;}
                case '4': {prencherStruct(&armazem,&quantidade_stock);break;}
                default: break;
            }
            getchar();

    }
        while (op!= 's' && op!='S');





    Encomenda * arrayEncomendas; // vetor dinamico de encomendas
    return 0;
}

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
lomba    0
lomba

typedef struct cliente {
  int num_cliente;
  char nome[40];
  char morada[60];
}Cliente;

int main()
{
    cliente *dados; 
    int n_clintes,i;
    
    printf("quantos clintes");
    scanf("%d"&n_clintes);
    dados=malloc(sizeof(Clientes)*n_clintes);//primeiro tens de reservar memoria consoante o n_clientes
    do{
        i=0
    printf("\nQual o nome ? --> ");
    fgets(zona[i].nome,40,stdin);
    printf("\nQual o numero? --> ");
    scanf("%d",&zona[i].numeronumero)
    printf("\nQual a morada? --> ");
    fgets(zona[i].morada,60,stdin);
    }while(i!=n_clientes);
    //para as outras estruturas e identico  
}

espero que te ajude

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Ricardo_Couto    0
Ricardo_Couto

Obrigado pela ajuda, estou a tentar mas não estou a conseguir ainda, sou novo nisto e ainda apresento muitas limitações em c. Vou tentando

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita a nossa Política de Privacidade