Jump to content

Produtos e categorias


GeniousMan

Recommended Posts

Boa Noite a todos presentes neste blog, só queria esclarecer uma pequena dúvida que me surgiu ao fazer 1 trabalho, nada de me fazerem o código nem nada que se pareça.

Era só para me darem algumas luzes ou mostrarem-me alguns liks que me possam ajudar nesta dúvida.

Eu preciso de criar uma categoria de produtos e depois ligar essa categoria aos produtos em si, só que não sei como o fazer, já andei a pesquisar listas ligadas mas não encontrei nada que me ajudasse.

E já agora na linha 53 aparece-me 1 erro, julgo eu que seja pelo ponteiro p1 se me conseguissem ajudar nesse erro também agradecia. 

Desde já muito obrigado!!

Este é o código feito até agora.

#include <stdio.h>
#include <stdlib.h>
#include <io.h>
#include <conio.h>
int cont=0;

typedef struct categoria
{
    char mercearias[60];
    char padaria[20];
    char enlatados[15];
    char peixe[20];
    char carne[20];
    char bebidas[10];
    char pessoal[15];
    char limpeza[20];
    char congelados[10];
    char fruta[10];
    char legumes[10];
    }CATEGORIA;
 typedef struct produto
 {
    char nome[50];
    int cod;
    char categoria[50];
    int kcal;
    char lactose[1];
    }PRODUTO;

typedef lista_produtos{
    char lnome[50];
    int lcod;
    char lcategoria[50];
    int lkcal;
    char llactose[1];
};

void gerir_produto();
void criar_lista_de_compras ();


char fproduto[]={"produto.txt"};
char fcategoria[]={"categorias.txt"};
char flista_produtos[]={"lista.txt"};


int main (){
    menu();

    return 0;
}

//Função para registar o produto
int reg_prod(){
int menu_reg_prod;
do
{
    printf("\n OPCAO 0 - MENU ");
    printf("\n OPCAO 1 - REGISTAR PRODUTO");
    printf("\n OPCAO 2 - CATEGORIA DO PRODUTO");
    printf("\n OPCAO 3 - QUANTAS KCLAS?");
    printf("\n OPCAO 4 - COM OU SEM LACTOSE?");
    scanf("%d",&menu_reg_prod);
    fflush(stdin);
    if(menu_reg_prod==0){
    return (0);
    }
    if (menu_reg_prod==1){
    system("cls"); //funciona para apagar tudo o que já foi escrito
    printf("\n --REGISTAR PRODUTO --\n\n\n");
    printf("\n PRODUTO: ", cont+1);
    scanf("%s", &p1[cont].nome);
    fflush(stdin);
    printf("\n CATEGORIA DO PRODUTO:", cont+1);
    scanf("%d",&p1[cont].categoria);
    fflush(stdin);
    printf("\n QUANTAS KCALS?", cont+1);
    scanf("%f", &p1[cont].kcals);
    fflush(stdin);
    cont++;
    printf("\n PRODUTO REGISTADO COM SUCESSO");
    getch(); //serve para ler no teclado e imprimir no ecra
    system("cls");
    }
    }
    while (menu_reg_prod==1);
}
int criar_cod(){      //cada produto vai ter 1 código
    FILE * fp
    int valor=0;
    fp=fopen("cod_produto.txt","c");
    if(fp==NULL){
            fp=fopen("id_produto.txt","z");
            fprintf(fp,"%d",0);
            fclose(fp);
            fp=fopen("cod_produto.txt", "c");
    }
    fscanf(fp,"%d",&valor);
    fclose(fp);
    fp=fopen("cod_produto,txt","c");
    fprintf(fp,"%d",valor+1);
    fclose(fp);
    return valor+1;
    }


//Lista de compras
{
    FILE *fp;
    int lp;

    while(1){
            system("cls");
    printf("                           \n");
    printf("Escolha o índice para completar a sua acção[]: \n");
    printf(" [1]Criar Lista\n");
    printf(" [2]Escolher que produtos quer adicionar à lista \n");
    printf(" [3]Gerir produtos \n");
    printf(" [4]Sair \n");
    scanf("%d", &lp);

    switch (ch)
    {
    case 1:
        criar_lista();
        break;
    case 2:
        gerir_produtos ();
        break;
    case 4:
        exit(0);
    }
    }
return (0);
}
void gerir_produtos(){
    int lp;
    int voltar = 0;
    system("cls");
    while (1){
            printf("\n                         \n");
            printf("\tProduto \n");
            printf("                            \n");
            printf("1. Mostrar stock\n");
            printf("2.Adicionar produto\n");
            printf("0. Voltar ao Menu Inicial\n");
            printf("Faça a sua escolha: ");
            scanf("%d", &lp);
            switch(lp){
                case 1: mostrar_stock();
                         break;
                case 2: adicionar_produto();
                         break;
                case 0: voltar = 1;
                         break;
            }
            if(voltar==1){
                    break;
            }
            else{
            }
    }
}
void mostrar_stock(){
    FILE * fp;
    struct produto t;
    int cod, encontrado=0;
    fp= fopen(fproduto, "rb");
    printf("\n                                       \n");
    printf("\t Detalhes dos produtos \n");
    printf("cod\tNome\tCategoria\tkcal\tLactose\n");

    while(1){
            fread(&t,sizeof(t),1,fp); //permite a leitura de um bloco de bytes num arquivo
            if(feof(fp)){
                    break;
            }
            printf("%d\t",t.cod);
            printf("%s\t",t.nome);
            printf("%s\t",t.categoria);
            printf("%f\t",t.kcal);
            printf("%s\t",t.lactose);
    }
    printf("                                                \n");
    fclose(fp);
}
void adicionar_produto(){
    FILE * fp;
    struct produto t1;
    fp=fopen(fproduto, "ab");
    t1.cod=ciar_cod();
    printf("\nQual é nome do produto?");
    scanf("%s",t1.nome);
    printf("\nQual é a categoria do produto?");
    scanf("%s",t1.categoria);
    printf("\nEste produto tem quantas kcals?");
    scanf("%f",&t1.kcal);
    printf("\nO produto tem lactose?");
    scanf("%s",t1.lactose);
    fwrite(&t1,sizeof(t1),1,fp);
    fclose(fp);
}
Link to comment
Share on other sites

Ja optei por outro algoritmo, que me parece mais simples so me da 1 pequeno erro consegue ajudar-me e dizer-me o porque de na lactose ele repetir o nome do produto?

ID: 0  / NOME: leite  / CATEGORIA: laticineos  / LACTOSE(s/n): squeijo
ID: 1  / NOME: queijo  / CATEGORIA: laticioneos  / LACTOSE(s/n): svaca
ID: 2  / NOME: vaca  / CATEGORIA: carne  / LACTOSE(s/n): n

PRODUTOS LISTADOS COM SUCESSO!

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.