PedroRamalho Posted January 6, 2017 at 03:13 PM Report #601861 Posted January 6, 2017 at 03:13 PM 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); } }
HappyHippyHippo Posted January 6, 2017 at 03:26 PM Report #601863 Posted January 6, 2017 at 03:26 PM 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 Portugol Plus
PedroRamalho Posted January 6, 2017 at 03:43 PM Author Report #601865 Posted January 6, 2017 at 03:43 PM 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.
HappyHippyHippo Posted January 6, 2017 at 04:49 PM Report #601867 Posted January 6, 2017 at 04:49 PM 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 Portugol Plus
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now