Jump to content

Lista de compras em "C"


Recommended Posts

Posted

Boas pessoal, eu tenho um programa a desenvolver que consiste numa lista de compras, já tinha posto esta duvida anteriormente mas ainda nao tinha codiog concreto, agora que tenho gostaria que me pudessem ajudar a completar este codigo. os requisitos :

1.1 Criar categorias de produtos

1.2. Criar produtos, os produtos devem conter informação relevante tais como: nome, categoria, kcal e com/sem lactose;

1.3. Criar várias listas de compras, a lista de compras deve conter um nome e conjunto de produtos;

1.4. Inserir, eliminar e editar os produtos das listas de compras;

1.5. Listar os produtos da lista de compras por categoria, por intervalo de kcal e por produtos com ou sem lactose;

1.6. Ler e gravar as listas de compras em ficheiros .txt

Se me pudessem ajudar agradecia imenso...

Cumprimentos

 

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

#define TAM 50


struct produto{
    int id;
    char nome[50];
    char categoria [50];
    float kcal;
    char lactose[1]; //Lactose: S || N
    int qtd;
};

struct produtos_lista{
    int pid;
    char pnome[50];
    char pcategoria [50];
    float pkcal;
    char plactose[1]; //Lactose: S || N
};





int criar_ID();
int Numero_lista_compras();


void criar_categoria();
void gerir_produtos();
void criar_listas_compras();
void atualizarProduto (int id,int qtd);
struct produto encontrarProduto(int id);



char fproduto[]={"produto.txt"};
char fcategorias[]={"categorias.txt"};
char fprodutos_lista[]={"lista.txt"};





int main()
{
    FILE * fp;
    int ch;


    while(1){

    system("cls");

    printf("                       ---------------------------------------      \n");
    printf("                           <<<<<< LISTA DE COMPRAS >>>>>>           \n");
    printf("                       ---------------------------------------      \n");


        printf("Escolha a opcao a que se adequa a acao pretendida []:\n");
        printf("\n");
        printf(" [1]Criar Listas\n");
        printf(" [2]Gerir Produtos\n");
        printf(" [3]Escolher produtos para adicionar na lista \n");
        printf(" [4]Gerir lista \n");
        printf(" [5]Sair\n");

        scanf("%d", &ch);

        switch (ch)
        {
            case 1:

                criar_listas();
                break;

            case 2:
                gerir_produtos ();
                break;

            case 3:
                gerir_lista();
                break;

            case 4: exit(0);
        }

    }
return 0;
}


int criar_ID(){
    FILE * fp;
    int valor=0;
    fp=fopen("id_produto.txt","r");

    if(fp==NULL){
        fp=fopen("id_produto.txt","w");
        fprintf(fp,"%d",0);
        fclose(fp);
        fp=fopen("id_produto.txt","r");
    }

    fscanf(fp,"%d",&valor);

    fclose(fp);

    fp=fopen("id_produto.txt","w");

    fprintf(fp,"%d",valor+1);

    fclose(fp);

    return valor+1;
}


void gerir_produtos(){
    int ch;
    int voltar = 0;
    system("cls");
    while (1){

             printf("\n\n----------------------------------------------\n\n");
             printf("\t\tProdutos \n\n");
             printf("--------------------------------------------------\n\n");

             printf("1. Adicionar novo produto\n\n");
             printf("2. Mostrar produtos\n\n");

             printf("0. Voltar\n\n");

             printf("Insira a sua escolha:");
             scanf("%d",&ch);

             switch(ch){
                case 1: adicionar_produto();
                        break;

                case 2: mostrar_produtos();
                        break;

                case 0: voltar = 1;
                        break;
             }

             if (voltar==1){
                break;
             }
             else{

             }
    }
}


void adicionar_produto(){
    FILE * fp;
    struct produto t1;



    fp=fopen(fproduto,"ab");

    t1.id=criar_ID();

    printf("\nInsira o nome do produto:");
    scanf("%s",t1.nome);
    printf("\nInsira a categoria do produto:");
    scanf("%s",t1.categoria);
    printf("\nInsira a quantidade de calorias do produto:");
    scanf("%f",&t1.kcal);
    printf("\nO produto tem lactose? (s/n):");
    scanf("%s",t1.lactose);
    printf("\nInsira a quantidade existente deste produto:");
    scanf("%d",&t1.qtd);

    fwrite(&t1,sizeof(t1),1,fp);

    fclose(fp);

}

void mostrar_produtos(){
    FILE * fp;
    struct produto t;
    int id, encontrado=0;

    fp = fopen(fproduto,"rb");

    printf("\n =============================================\n\n");
    printf("\t\t Detalhes dos Produtos \n\n");
    printf("================================================\n\n");

    printf("ID\tNome\tCategoria\tCalorias(kcal)\tLactose(Sim/Nao)  Quantidade\n\n");

    while(1){
        fread(&t,sizeof(t),1,fp);

        if (feof(fp)){
            break;
        }

        printf("%d\t",t.id);
        printf("%s\t",t.nome);
        printf("%s\t\t",t.categoria);
        printf("%f\t",t.kcal);
        printf("%s\t\t",t.lactose);
        printf("  %d\n",t.qtd);
    }
    printf("==============================================\n");
    fclose(fp);
}

void gerir_listas(){ //Nao utiliziavel, para já

    int ch;
    int voltar = 0;
    system("cls");
    while (1){
             printf("\t\tListas \n\n");

             printf("1. Criar nova lista\n\n");


             printf("0. Voltar\n\n");

             printf("Insira a sua escolha:");
             scanf("%d",&ch);

             switch(ch){
                case 1: criar_listas_compras();
                        break;

                case 2: mostrar_produtos();
                        break;

                case 0: voltar = 1;
                        break;
             }

             if (voltar==1){
                break;
             }
             else{

             }
    }
}


void gerir_lista(){

    FILE *fp, *fp1;
    struct produtos_lista t;
    int id, encontrado=0;
    char ch1;
    int ltemprel=0;
    char nomelista[TAM],nomelistapretendido[TAM];

    system("cls");

    fp=fopen(fprodutos_lista,"rb");

    printf("\n ---------------------------------------------\n\n");
    printf("\t\t Detalhes da Lista  \n\n");
    printf("-------------------------------------------------\n\n");

    printf("ID\tNome\tCategoria\tCalorias(kcal)\tLactose(Sim/Nao)  Quantidade\n\n");

    while(1){

        fread (&t,sizeof(t),1,fp);

        if(feof(fp)){
            break;
        }

        printf("%d\t",t.pid);
        printf("%s\t",t.pnome);
        printf("%s\t",t.pcategoria);
        printf("%s\t",t.plactose);

    }

    fclose(fp);

    fflush(stdin);
    printf("\n\n\nPretende guardar esta lista? (s/n):");
    scanf("%c",&ch1);

    if(ch1=='s'){

        printf("\n\nQual pretende que seja o nome dessa lista?:");
        scanf("%s",nomelistapretendido);
//        nomelista =("%s.txt",nomelistapretendido); //-- Como se definie o nome do ficheiro,
                                                      //segundo a palavra dada pelo utilizador? */


        ltemprel=numerolista();
        sprintf(nomelista,"%s%d","",ltemprel);
        strcat(nomelista,".txt");

        fp=fopen(fprodutos_lista,"rb");
        fp1=fopen(nomelista,"wb");

        while(1){
            fread(&t,sizeof(t),1,fp);

            if(feof(fp)){
                break;
            }
            fwrite(&t,sizeof(t),1,fp1);
        }
        fclose(fp);
        fclose(fp1);

        fp=fopen(fprodutos_lista,"wb");
        fclose(fp);
    }
}

 int numerolista(){
    FILE * fp;
    int valor=0;
    fp=fopen("numero_lista.txt","r");

    if(fp==NULL){
            fp=fopen("numero_lista.txt","w");
            fprintf(fp,"%d",0);
            fclose(fp);
            fp=fopen("numero_lista.txt","r");
    }
    fscanf(fp,"%d",&valor);

    fclose(fp);

    fp=fopen("numero_lista.txt","w");
    fprintf(fp,"%d",valor+1);
    fclose(fp);

    return valor+1;
}


void criar_listas_compras(){

    char nlista[50];
    printf("Qual o nome da lista nova que pretende criar?\n");
    scanf("%s\n",nlista);
    //nficheiro = ("%s.txt", nlista);

    FILE * fp;

//    fp = fopen (nficheiro,"w");
    //INCOMPLETO




}



void criar_listas ()
{
    char nomelis,nomprod;
    int nlista,i,j,nprod;
    printf("Quantas listas deseja criar?\n");
    scanf("%d",&nlista);
    fflush(stdin);
    for (i=0;i<nlista;i++)
    {
        printf("Que nome deseja dar a sua lista de compras?\n");
        scanf("%s",&nomelis);
        fflush(stdin);
        printf("Quantos produtos deseja inserir nesta lista?\n");
        scanf("%d",&nprod);

    }
}

 

Posted

e a ajuda é relativa a que dificuldade ?

é que os únicos sites que resolvem enunciados é de freelancing indianos

IRC : sim, é algo que ainda existe >> #p@p
Posted
16 minutos atrás, HappyHippyHippo disse:

e a ajuda é relativa a que dificuldade ?

é que os únicos sites que resolvem enunciados é de freelancing indianos

olhar para o code e indicar me no que posso melhorar, no que me falta como poderei fazer.. são algumas das dúvidas que pretendia que me esclarecessem.

Posted
49 minutes ago, PedroRamalho said:

olhar para o code e indicar me no que posso melhorar

ok, listas ligadas

IRC : sim, é algo que ainda existe >> #p@p

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.