Ir ao conteúdo

Posts recomendados

Postado

fiz esse programa que simula um banco.

Mas agora preciso fazer  a parte de saque e deposito e qual comando usar para modificar um arquivo especifico?

#include <stdio.h>
#include<stdlib.h>
#include <string.h>
#include <conio.h>
#include <locale.h>
 
struct Cliente{
	int cpf,senha;
	char nome[50];
	float saldo; 
};
main(){
	setlocale(LC_ALL,"Portuguese");
	FILE *arq;
	Cliente cli;
	system("color 1f");
	int consa,e=0,sd,op;
	float valor;
	arq = fopen("cliente.txt","a+b");
	if (arq==NULL)printf("\nEr01Erro ao tentar abrir arquivo");
	  else{
	  	do{
	  		printf("\n\n\n\n\t\t\t\t\t\t\t\t================MENU================");     
	  		printf("\n\t\t\t\t\t\t\t\t\t1-Criar conta");
	  		printf("\n\t\t\t\t\t\t\t\t\t2-Consultar saldo");
	  		printf("\n\t\t\t\t\t\t\t\t\t3-Entre em contato");
	  		printf("\n\t\t\t\t\t\t\t\t\t4-Sair");
	  		printf("\n\t\t\t\t\t\t\t\t====================================\n");
	  		scanf("%d",&op);
	  		system("cls");
	  		switch(op){
	  		case 1:{
	  			e=0;
	  			consa=0;
	  			rewind(arq);
			printf("\n\t\t\t\t\t\t\t\tInforme seu cpf\n");
	  		scanf("%d",&consa);	
			  system("cls");
			while(!feof(arq)){
			fread(&cli,sizeof(cli),1,arq);
			 if (ferror(arq)){
	  		     system("color 74");;printf("\nConta nao encontrada\n");system("pause");system("cls");system("color 1f");}
	  		    				else{
			if(e==0){	
			if(consa==cli.cpf){
	  		e=1;
	  			}
			}}}
	  		if(e!=1){	 
			printf("\n\n\n\n\t\t\t\t\t\t\t\t=====================Cadastro================\n");	
			valor=0;
			cli.saldo=0;  			
	  		cli.cpf=consa;
	  		fflush(stdin);
	  		printf("\n\t\t\t\t\t\t\t\t\tDigite o nome do cliente\n");
	  		gets(cli.nome);
	  		fflush(stdin);
	  		printf("\n\t\t\t\t\t\t\t\tDigite o saldo que deseja adicionar a conta\n");
	  			scanf("%f",&cli.saldo);
	  		printf("\n\t\t\t\t\t\t\t\tDigite uma senha pra conta de numeros 0-9\n");
	  			scanf("%d",&cli.senha);
	  		fwrite(&cli,sizeof(cli),1,arq);
	  		printf("\n\t\t\t\t\t\t\t\t=============================================\n\n\n");
			system("cls");
	  		system("color 74");
	  		printf("\n\n\n\n\n\n\n\n\t\t\t\t\t\t\t\tConta criada!\n");
	  		getch();
			system("cls");
			system("color 1f");
			
			}
	  		  
	  		   if(e==1){system("cls");system("color 74");printf("\n\n\n\n\n\n\n\n\t\t\t\t\t\t\t\tConta já existe\n");getch();system("cls");system("color 1f");}
			break;
				}
	  		case 2: {
	  		e=0;
			rewind(arq);
			printf("\n\t\t\t\t\t\t\t\tInforme seu cpf\n");
	  		scanf("%d",&consa);	
			while(!feof(arq)){
	  		    fread(&cli,sizeof(cli),1,arq);
	  		    if (ferror(arq)){system("color 74");
	  		    printf("\n\n\n\n\n\n\n\n\t\t\t\t\t\t\t\tConta nao encontrada\n");system("pause");system("cls");system("color 1f");}
	  		    				else{
			
			if(e==0){
	  		if (!feof(arq)){
	  		if(consa==cli.cpf){
	  		e=1;
	  		printf("\n\t\t\t\t\t\t\t\tInforme a Senha da conta\n");
	  		scanf("%d",&sd);
	  		getch();
			system("cls");
	  		if(sd==cli.senha)
	  		{
	  			printf("\n\t\t\t\t\t\t\t\t================Consulta===============");
	  		    	 printf("\n\t\t\t\t\t\t\t\t\tnome %s\n",cli.nome);
	  		         printf("\n\t\t\t\t\t\t\t\t\tsaldo %0.2f\n",cli.saldo);
	  		        printf("\n\t\t\t\t\t\t\t\t=======================================\n");
	  		        system("pause");
	  		        system("cls");
			  }
			  					else {system("color 74");printf("\nsenha invalida\n");getch();system("cls");system("color 1f");}
			  }				
		}							
	}	
							
	}
}
if(e==0){system("cls");system("color 74");printf("\n\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t\t\t\t\t\t\t\tConta não encontrada\n");getch();system("cls");system("color 1f");}
	break;
}
case 3:{
	printf("\n\n\n\n\t\t\t\t\t\t\t\t======================Contatos================================\n");
	printf("\n\t\t\t\t\t\t\t\t\tGerente Geral.........................(35) 9829-7083\n");
    printf("\n\t\t\t\t\t\t\t\t\tGerente de Contas.....................(35) 9865-8931\n");
    printf("\n\t\t\t\t\t\t\t\t\tGerente Financeiro....................(35) 9884-7549\n");
    printf("\n\t\t\t\t\t\t\t\t\tCentral de atendimento................(35) 3441-7019\n");
    printf("\n\t\t\t\t\t\t\t\t==============================================================\n");
	getch();
    system("cls");
	break;
}
case 4:{
	printf("\n\n\n\n\n\n\n\n\t\t\t\t\t\t\t\tSaindo...\n");
	getch();
    system("cls");
	break;
}
    default :{
    system("color 74");
    printf ("\n\n\n\n\n\n\n\n\t\t\t\t\t\t\t\tValor invalido!\n");
    getch();
    system("cls");
	system("color 1f");}
}

								  }while (op!=4);

}
fclose(arq);
}

 

  • Curtir 1
  • Amei 1
Postado

@Mayycon0707 para modificar um arquivo você precisa abri-lo usando o comando fread pois você gravou com o comando fwrite  são arquivo binário , se fosse  arquivo txt seria fprintf e fscanf  ,  então depois de abrir o arquivo você modifica o que está na variável usada para pegar os dados no arquivo , nesse caso aí embaixo a variável é uma struct ,

assim :

FILE* f;
	f = fopen("fornecedores.txt", "rb");
	while (fread(&fornecedores, sizeof(struct Fornecedor), 1, f)==1){
		printf("---------------------------------------------");
		quebra_linha();
		printf("Codigo de registro -: %s\n",fornecedores.cod  );
		printf("Cnpj ---------------: %s\n",fornecedores.cnpj );
		printf("Empresa ------------: %s\n",fornecedores.cia  );
		printf("---------------------------------------------");
		quebra_linha();
	}
	fclose(f);

 

  • Curtir 1
Postado

tipo como eu modificaria um arquivo especifico ex: a pessoa quer adicionar na conta 500 reais ai esse valor teria que ser adicionado no seu cpf como adicionaria no cpf informado pelo usuário? 

  • Curtir 1
  • Obrigado 1
Postado

@Mayycon0707    para trabalhar com arquivos é difícil  gravar e ler ao mesmo tempo , então melhor ler tudo que está no arquivo e colocar na struct no início e depois no fim quando for sair gravar tudo no arquivo novamente ,  e os arquivos binários são complicados de usar então coloquei como txt , e seu código poderia ser assim  :

#include <stdio.h>
#include<stdlib.h>
#include <string.h>
#include <conio.h>
#include <locale.h>
#include <windows.h>
/*             0     1    2     3   4      5      6      7         8  */
typedef enum{BLACK,BLUE,GREEN,CYAN,RED,MAGENTA,BROWN,LIGHTGRAY,DARKGRAY,   /* nome das cores */
LIGHTBLUE,LIGHTGREEN,LIGHTCYAN,LIGHTRED,LIGHTMAGENTA,YELLOW,WHITE} COLORS;
/*  9         10         11        12        13         14    15 */

static int __BACKGROUND = 1/*BLACK*/;/*pode ser o numero ou o nome da cor*/
static int __FOREGROUND = LIGHTGRAY;

void textcolor (int letras, int fundo){/*para mudar a cor de fundo mude o background*/
    __FOREGROUND = letras;
    __BACKGROUND = fundo;
    SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),
    letras + (__BACKGROUND << 4));
}
                  /* y = linha de 0 a 24 , x = coluna de 0 a 80 */
void gotoxy(int x, int y){/*imprimir na linha e coluna desejada */
  COORD c;
  c.X = x;
  c.Y = y;
  SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), c);
}
int som(int f){
    Beep(f,150);/* primeiro a frquência depois o tempo de duração do som */
    return 0;
}
void pausar(int r){
    int carac[8]={179,47,196,92,179,47,196,92};
    int j,w,x,y,x2;                              /* variáveis simples                       */
    HANDLE hOut;                              /* controle dos dispositivos do pc         */
    hOut= GetStdHandle(STD_OUTPUT_HANDLE);    /* pega a saída padrão                     */
    CONSOLE_SCREEN_BUFFER_INFO SBInfo;        /* informações sobre a buffer da tela      */
    GetConsoleScreenBufferInfo(hOut, &SBInfo);/* pega a posição do cursor do console     */
    x = SBInfo.dwCursorPosition.X;            /* X será a posição x do cursor no console */
    y = SBInfo.dwCursorPosition.Y;            /* Y será a posição y do cursor no console */
    for(j=0;j<10;j++){
        textcolor(12,15);
        gotoxy(x+3,y);
        printf(" %d",9-j);
        textcolor(10,0);
        for(w=0;w<8;w++){
            if(kbhit()){
                j=10;
                break;
            }
            gotoxy(x,y);
            printf("%c",carac[w]);/* gira o caractere na tela */
            Sleep(r/25);          /* dorme um tempinho        */
        }
    }
    gotoxy(x,y);
    textcolor(7,0);
    printf("      \n\n");
}

struct Cliente{
	int   cpf,senha;
	char  nome[50];
	float saldo;
};
struct Cliente cli[100];/* serão 100 até contas */
int cont;
int main(){
	setlocale(LC_ALL,"Portuguese");
	FILE *arq;
	struct Cliente cli[100];/* serão 100 até contas */
	system("color 1f");
	int consa,e=0,sd,op,j;
	float valor;
	arq=fopen("cliente.txt","r");
	if(arq==NULL){
        printf("\nEr01Erro ao tentar abrir arquivo");
	    arq = fopen("cliente.txt","w");
	    fclose(arq);
	}
    else{
        textcolor(14,0);
        printf("Lista com todos os clientes cadstrados !\n\n");
        while( fscanf(arq, "%d" , &cli[cont].cpf      )!= EOF  &&  /* aqui pega do arquivo e coloca na struct    */
               fscanf(arq, "%s" , &cli[cont].nome     )!= EOF  &&  /* seguindo nessa ordem  */
               fscanf(arq, "%d" , &cli[cont].senha    )!= EOF  &&  /* no arquivo precisa estar nessa mesma ordem */
               fscanf(arq, "%f" , &cli[cont].saldo    )!= EOF  ){
               printf("cpf ---: %d\n",cli[cont].cpf   );
               printf("nome --: %s\n",cli[cont].nome  );
               printf("senha -: %d\n",cli[cont].senha );
               printf("saldo -: %.2f\n\n",cli[cont].saldo);
               cont++;
        }
        fclose(arq);                                                /* fecha o arquivo */
        pausar(1200);
	  	do{
	  	    textcolor(7,0);
            system("cls");
	  		gotoxy(28, 4);printf("================MENU================");
            gotoxy(28, 5);printf("1-Criar conta");
	  		gotoxy(28, 6);printf("2-Consultar saldo");
	  		gotoxy(28, 7);printf("3-Entre em contato");
	  		gotoxy(28, 8);printf("4-fazer deposito");
	  		gotoxy(28, 9);printf("5-Listar contas");
	  		gotoxy(28,10);printf("6-Sair");
	  		gotoxy(28,11);printf("====================================\n");
	  		scanf("%d",&op);
	  		system("cls");
	  		switch(op){
	  		case 1:
                e=0;
	  			consa=0;
	  			gotoxy(28,1);printf("Informe seu cpf\n");
	  		    scanf("%d",&consa);
                system("cls");
                for(j=0;j<cont;j++){
                    if(consa==cli[j].cpf){
                        e=1;/* conta com esse cpf ja existe , nao pode outra */
                        break;
                    }
                }
	  		    if(e==0){
			        printf("\n\n\n\n=====================Cadastro================\n");
			        valor=0;
                    cli[cont].cpf=consa;
                    fflush(stdin);
                    printf("\nDigite o nome do cliente ");
                    gets(cli[cont].nome);
                    fflush(stdin);
                    printf("\nDigite o saldo que deseja adicionar a conta ");
                    scanf("%f",&cli[cont].saldo);
                    printf("\nDigite uma senha pra conta de numeros 0-9 ");
                    scanf("%d",&cli[cont].senha);
                    cont++;
                    printf("\n=============================================\n\n\n");
                    system("cls");
                    system("color 74");
                    printf("\n\n\n\n\n\n\n\nConta criada!\n");
                    getch();
                    system("cls");
                    system("color 1f");
			    }
	  		    if(e==1){system("cls");
	  		        system("color 74");
	  		        printf("\n\n\n\n\n\n\n\nConta já existe ");
	  		        pausar(1200);
	  		        system("cls");
	  		        system("color 1f");
                }
                break;
	  		case 2 :
	  		    e=0;
			    printf("\nInforme seu cpf\n");
	  		    scanf("%d",&consa);
                for(j=0;j<cont;j++){
                    if(consa==cli[j].cpf){
                        e=1;
                        printf("\nInforme a Senha da conta\n");
                        scanf("%d",&sd);
                        system("cls");
                        if(sd==cli[j].senha){
                            printf("\n================Consulta===============\n");
                            printf("nome --: %s\n"   ,cli[j].nome );
                            printf("saldo -: %0.2f\n",cli[j].saldo);
                            printf("\n=======================================\n");
                            system("pause");
                            system("cls");
                        }
                        else{
                            system("color 74");
                            printf("\nsenha invalida\n");
                            getch();
                            system("cls");
                            system("color 1f");
                        }
                    }
                }
                if(e==0){
                    system("cls");
                    system("color 74");
                    printf("\n\n\n\n\n\n\n\n\n\nConta não encontrada\n");
                    getch();
                    system("cls");
                    system("color 1f");
                }
	            break;
            case 3 :
                printf("\n\n\n\n\t\t\t\t\t\t\t\t======================Contatos================================\n");
                printf("\n\t\t\t\t\t\t\t\t\tGerente Geral.........................(35) 9829-7083\n");
                printf("\n\t\t\t\t\t\t\t\t\tGerente de Contas.....................(35) 9865-8931\n");
                printf("\n\t\t\t\t\t\t\t\t\tGerente Financeiro....................(35) 9884-7549\n");
                printf("\n\t\t\t\t\t\t\t\t\tCentral de atendimento................(35) 3441-7019\n");
                printf("\n\t\t\t\t\t\t\t\t==============================================================\n");
                getch();
                system("cls");
                break;
            case 4 :
                printf("fazendo um deposito !\n");
                printf("O numero do seu cpf ");
                scanf("%d",&sd);
                for(j=0;j<cont;j++){
                    if(cli[j].cpf == sd){
                        printf("Quanto vai depositar ");
                        scanf("%d",&sd);
                        cli[j].saldo+=sd;
                    }
                }
                pausar(1200);
                break;
            case 5 :
                textcolor(14,0);
                printf("Listando todas as contas\n");
                for(j=0;j<cont;j++){
                    printf("Nome --: %s\n"  ,cli[j].nome );
                    printf("Cpf ---: %d\n"  ,cli[j].cpf  );
                    printf("Saldo -: %.2f\n",cli[j].saldo);
                    printf("Senha -: %d\n\n",cli[j].senha);
                }
                pausar(1200);
                textcolor(7,0);
                break;
            case 6 :
                printf("\n\n\n\n\n\n\n\nSaindo...    Tecle ");
                pausar(1200);
                system("cls");
	            break;
            default :
                system("color 74");
                printf ("\n\n\n\n\n\n\n\nValor invalido!\n");
                getch();
                system("cls");
                system("color 1f");
            }
        }while (op!=6);
    }
    arq=fopen("cliente.txt","w");
    for(j=0;j<cont;j++){
        fprintf(arq, "%d " , cli[j].cpf   );  /* grava no arquivo txt */
        fprintf(arq, "%s " , cli[j].nome  );  /* grava no arquivo txt */
        fprintf(arq, "%d " , cli[j].senha );  /* grava no arquivo txt */
        fprintf(arq, "%f " , cli[j].saldo );  /* grava no arquivo txt */
    }
    fclose(arq);
    return 0;
}

 

  • Curtir 1
  • Obrigado 1
Postado

mas ai você nao esta salvando os dados ?

porque apos q fecha o programa e volta n esta mais la a conta ou seja o valor depositado é temporario

 

 

  • Curtir 2
Postado

@Mayycon0707     está salvando sim , você já testou ?  aqui testei e funciona bem , no codeblocks 16.01  ,   por que sim as variáveis são temporárias ,  mas elas duram enquanto o programa está rodando e antes de fechar o programa todas elas são gravadas no arquivo com o valor de cada uma lá no disco rígido  do seu pc na pasta onde você salvou o seu programa .

  • Curtir 1
  • Obrigado 1
Postado

é que seu programa esta "complexo" pra mim q ainda estou aprendendo, mas valeu pela ajuda me ajudou bastante.

  • Curtir 2
Postado

@Mayycon0707 Se eu, coloco cada conta em um arquivo *.Conta. Assim, quando quero um conta, abro a leitura com uma chamada fopen; se a função não retorna o stream do arquivo é porque a conta não existe. Por exemplo:

/* É só um exemplo */
unsigned char	us_cpf[ 12 ]= {""};
		/*: Salvar o CPF da conta */

unsigned char	us_link[]= {"Banco\\Contas\\00000000000.Conta"}; 
		/*: String para estabelecer a ligação com a base de contas */

FILE *		pf_banco__conta;
		/*: guardar o ponteiro do stream de arquivo da base de contas */



puts( "Bem vindo! Digite o CPF da conta" );
/*: Instrução do procedimento a seguir */

gets( us_cpf );
/*: Pegar um string que é o cpf da conta */

sprintf( us_link, "Banco\\Contas\\%s.Conta", us_cpf );
/*: Criar a string que é o atalho para o arquivo *.conta, se existir */

pf_banco__conta= fopen( us_link, "rb" );
/*: Solicitar abertura do aquivo */

if( NULL == pf_banco__conta )
/*: Testar, para o CPF, se a conta existe e fechar se não. */
{	printf( "Titulo de n. %s inexistente", us_link );
 	exit(1);
}

 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!