Ir para conteúdo

POWERED BY:

Arquivado

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

viciado

Arquivos

Recommended Posts

Não sei o que tá tão complicado p/ você.

 

1 - você precisa de um loop p/ imprimir o menu.

 

2 - Não precisa de chaves num case.

 

arquivo = fopen("arquivo.txt","ab");
printf("Informe o codigo\n");
fgets(vend.id);

 

Não existe uma struct vend declarada na função.

 

 

4- Se você vai cadastrar alguma coisa, mexa com memória, porque disco é lento. Ao cadastrar as vendas você tem que abrir o arquivo dos vendedores, percorrer linha por linha no pior caso, ler e ainda comparar.

 

5 - Não use o mesmo arquivo p/ armazenar coisas diferentes.

 

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
   int id;
   char nome[30];
}vendedor;

typedef struct{
   vendedor * idVendedor;
   char mes[20];
   int qtvendas;
} venda;

void menu () {
 printf(" (1) Cadastrar vendedor \n");
 printf(" (2) Cadastrar venda \n");
 printf(" (3) Consultar vendas de um funcionário em determinado mes \n");
 printf(" (4) Consultar o total das vendas de determinado vendedor \n");
 printf(" (5) Mostrar o numero do vendedor que mais vendeu em determinado mes \n");
 printf(" (6) Mostrar o numero do mes com mais vendas \n");
 printf(" (7) Finalizar programa \n");
}

vendedor * cadastroVendedores;
int ultimoVendedor;
venda * cadastroVendas;
int ultimaVenda;

void cadastrar_vendedor(){
 vendedor dado;
 printf("Informe o codigo:");
 scanf("%d",&dado.id);
 printf("Nome:");
 scanf("%30s",&dado.nome);
 ultimoVendedor++;
 cadastroVendedores = (vendedor *)realloc(cadastroVendedores,ultimoVendedor*sizeof(vendedor*));
	 if (cadastroVendedores == NULL) exit(1);
 cadastroVendedores[ultimoVendedor-1].id = dado.id;
 strcpy(cadastroVendedores[ultimoVendedor-1].nome, dado.nome);
}

int main()
{
int n;
enum {CAD_VENDEDOR=1,
		CAD_VENDA,
		CON_VENDAS_FUNC,
		CON_TOTAL_VENDEDOR,
		EXIBIR_VENDEDOR,
		EXIBIR_MES,FIM};

cadastroVendedores = (vendedor*)malloc(0);
ultimoVendedor = 0;
cadastroVendas = (venda*)malloc(0);
ultimaVenda = 0;

	if (cadastroVendedores == NULL || cadastroVendas == NULL)
			exit(1);

// LEITURA DO ARQUIVO DE VENDEDORES E VENDAS AQUI


do {
	menu();
	scanf("%d",&n);
	switch(n){
		case CAD_VENDEDOR:
			cadastrar_vendedor();
			break;

		case CAD_VENDA:
			puts("2");
			break;

		case CON_VENDAS_FUNC:
			puts("3");
			break;

		case CON_TOTAL_VENDEDOR:
			puts("4");
			break;

		case EXIBIR_VENDEDOR:
			puts("5");
			break;

		case EXIBIR_MES:
			puts("6");
			break;
	 }
 } while (n != FIM);

// ESCREVER ARQUIVOS AQUI
free(cadastroVendedores);
 return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você não tiver um livro para seguir, o negócio é ir pesquisando no Todo Poderoso Google e lendo:

http://www.google.com/search?ie=UTF-8&...mp;q=arquivos+c

 

Estude bastante manipulação de arquivos no modo binário

Compartilhar este post


Link para o post
Compartilhar em outros sites

C: Total e Cmpleto é o que mais abrange assuntos. Também é o maior deles. Consequentemente é o mais caro. Mas vale a pena

 

O Linguagem C eu havia comprado antes de entrar na faculdade. Achei-o bem bom também. Tem uma abordagem mais prática e direta

 

O C: A linguagem de Programação foi indicação do professor de C. Mas não o achei tão bom quanto os dois anteriores

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem que utilizar uma manobra de cast, fiz algo assim a um tempinho tipo:

Para entrada:

ofstream arq;
		  arq.open(arqcadastro, ios::app);
		  cadcliente a[5];//a struct cadcliente recebe o "apelido" de "a"
		  while(opcao==1)
		  { 
			  system("cls");
			  cout<<"Nome do Cliente :"<<endl;
			  fflush(stdin);
			  gets(a[i].nome);
			  cout<<"Endereco : "<<endl;
			  fflush(stdin);
			  gets(a[i].endereco);
			  cout<<"email :"<<endl;
			  fflush(stdin);
			  gets(a[i].email);
			  cout<<"idade :"<<endl;
			  fflush(stdin);
			  cin>>a[i].idade;
			  system("cls");
			  fflush(stdin);
			  arq.write(reinterpret_cast<char*>(&a[i]),sizeof(a[i]));
			  cout<<"Deseja incluir mais registros? 1 para sim e 2 para não: ";
			  cin>>opcao;
			  i++;
		  }
		  cout.flush();
	  arq.close();

A seguinte linha:

arq.open(arqcadastro, ios::app);
Abre o arquivo em modo de escrita, caso o arquivo não exista ele cria, se o arquivo ja existir ele acrescenta o conteudo no final apos o ultimo registro.

para ler o arquivo depois você terá que verificar primeiro o tamanho, calculo da divisão do tamanho do arquivo pelos bytes ocupados por cada estrutura assim podera utilizar um contador e para ler é utilizar ao invés de

arq.open(arqcadastro, ios::app);
o

arq.open(arqcadastro, ios::in);
para leitura, e ao invés do "arq.write" o "arq.read" dai poderá imprimir o arquivo e etc, existem n's metodos alguns melhores outros piores, para a utilização e criação de um programa eficiente você terá que aprender como utilizam-se estruturas, o interligamento, saber utilizar vetores auxiliares para armazenamento temporário, aprender tipo de aberturas de arquivos e ver qual melhor se aplica ao seu trabalho, espero ter lhe ajudado.

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.