Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
#include <stdio.h> #include <stdlib.h> #include <locale.h> #include <string.h> struct extrato{ char* data; char* transacao; int detalhes; float valor; }; typedef struct extrato Extrato; struct cartao{ int numero; int codigo_verificador; float limite; }; typedef struct cartao Cartao; struct conta{ char nome[20]; char cpf[12]; char rg[20]; float saldo; int agencia; int conta_pri; int senha; Cartao user; }; typedef struct conta Conta; int autentica (int autent){ FILE* servidor; servidor= fopen ("Dados_bancarios.txt", "rb"); if(autent== 1){// administrador char login[10]; char senha[10]; printf("\nInforme seu login: "); scanf("%s", &login); getchar(); printf("\nInforme sua senha: "); scanf("%s", &senha); getchar(); if(strcmp(login, "admin")!= NULL || strcmp(senha, "admin")!= NULL){ printf("\t\t**ERRO AO TENTAR FAZER LOGIN**\n"); return 0; }else{ return 1; } } else if(autent== 2){// cliente int login1; int senha1; int descripto; Conta teste; printf("informe o numero da conta: "); scanf("%i", &login1); int cont=0; fclose(servidor); servidor= fopen ("Dados_bancarios.txt", "rb"); if(servidor== NULL){ printf("\t\t**POSSIVEL ERRO AO TENTAR EXECUTAR O ARQUIVO**\n"); } while((fread(&teste, sizeof(Conta),1, servidor))==1){ descripto= ((teste.senha/teste.user.codigo_verificador)); if (teste.conta_pri== login1){ printf("Informe a senha: "); scanf("%i", &senha1); cont++; if(descripto== senha1){ return 1; }else{ printf("\t*Senha Invalida\n"); return 0; } } } printf("\t*Conta invalida\n"); }// user else{ printf("\t*Opcão invalida\n"); return 0; } fclose(servidor); return 0; } //////////////////////////////////////////////////////////////////////////////// int administrador(FILE* servidor){ int opcao; system("cls"); do{ char busca[20]; int pos= 0, pos1= 0; printf("\t ________________________________________________________________\n"); printf("\t| 01 BANCO CENTRAL TI 10 [ADM] |\n"); printf("\t|________________________________________________________________|\n"); printf("\n"); printf("1- Criar conta\n2- Apagar contas\n3- Editar conta\n4- Voltar\n"); scanf("%i", &opcao); //--------------------------------Cria conta----------------------------------- if(opcao== 1){ servidor= fopen("Dados_bancarios.txt", "ab"); if(servidor== NULL){ printf("\t\t**POSSIVEL ERRO AO TENTAR EXECUTAR O ARQUIVO**\n"); } Conta* teste= (Conta*) malloc(sizeof(Conta)); printf("Nome: "); scanf("%s", teste->nome); getchar(); printf("\nCPF: "); scanf("%s", teste->cpf); getchar(); printf("\nRG: "); scanf("%s", teste->rg); getchar(); printf("\nSaldo inicial: "); scanf("%f", &teste->saldo); printf("\nAgência (Somente numeros): "); scanf("%i", &teste->agencia); printf("\nConta: "); scanf("%i", &teste->conta_pri); printf("\nSenha (Somente numeros): "); scanf("%i", &teste->senha); printf("\nNº do Cartão (Somente numeros): "); scanf("%i", &teste->user.numero); printf("\nCódigo Verificador (Somente numeros): "); scanf("%i", &teste->user.codigo_verificador); getchar(); teste->senha= (teste->senha * teste->user.codigo_verificador); printf("\nLimite (Somente numeros): "); scanf("%f", &teste->user.limite); fwrite(teste, sizeof(Conta), 1, servidor); fclose(servidor); system("cls"); printf("\t--Cadastro realizado com sucesso--\n"); } //-------------------------------Apaga conta----------------------------------- if(opcao== 2){ int i, pesq_cont; int achou=0; int quantidade=0; FILE* servidor; servidor= fopen("Dados_bancarios.txt", "rb"); if(servidor== NULL){ printf("\t\t**POSSIVEL ERRO AO TENTAR EXECUTAR O ARQUIVO**\n"); } Conta cnt; while(fread(&cnt, sizeof(Conta),1,servidor)==1){ quantidade++; } fclose(servidor); printf("Conta (apagar): "); scanf("%d",&pesq_cont); servidor= fopen("Dados_bancarios.txt", "r+b"); if(servidor== NULL){ printf("\t\t**POSSIVEL ERRO AO TENTAR EXECUTAR O ARQUIVO**\n"); } Conta* tst = (Conta*) malloc (quantidade*sizeof(Conta)); fread(tst, sizeof(Conta),quantidade, servidor); fclose(servidor); for(i=0;i<quantidade;i++){ if(tst[i].conta_pri==pesq_cont){ achou=i+1; } } if(achou==0){ printf("\t*Conta não encontrado!\n"); }else{ Conta* novo = (Conta*)malloc(quantidade*sizeof(Conta)); int ajud=0; int j; achou=achou-1; for(j=0; j<quantidade; j++){ if(j==achou){ j++; if(j>=quantidade){ break; } } novo[ajud]=tst[j]; ajud++; } servidor= fopen("Dados_bancarios.txt", "w+b"); if(servidor== NULL){ printf("\t\t**POSSIVEL ERRO AO TENTAR EXECUTAR O ARQUIVO**\n"); } free(tst); quantidade-=1; fwrite(novo, sizeof(Conta),quantidade,servidor); fclose(servidor); printf("\t*Conta excluida com sucesso!\n"); } } //-------------------------------Editar conta----------------------------------- if(opcao== 3){ Conta teste; servidor= fopen("Dados_bancarios.txt", "r+b"); if(servidor== NULL){ printf("\t\t**POSSIVEL ERRO AO TENTAR EXECUTAR O ARQUIVO**\n"); } printf("Informe o nome da Conta: "); scanf("%s", busca); getchar(); while(!feof(servidor)){ fread(&teste, sizeof(Conta),1, servidor); if(strcmp (teste.nome, busca)== 0){ pos1= pos+1; break; } pos++; }// fim do while; if(pos1== 0){ system("cls"); printf("\t*Conta não encontrada no sistema!\n"); } else{ printf("Nome: "); scanf("%s", teste.nome); getchar(); printf("\nCPF: "); scanf("%s", teste.cpf); getchar(); printf("\nRG: "); scanf("%s", teste.rg); getchar(); printf("\nSaldo inicial: "); scanf("%f", &teste.saldo); printf("\nAgencia: "); scanf("%i", &teste.agencia); printf("\nConta: "); scanf("%i", &teste.conta_pri); printf("\nSenha: "); scanf("%i", &teste.senha); printf("\nNº do Cartão: "); scanf("%i", &teste.user.numero); printf("\nCódigo Verificador ( numeros): "); scanf("%i", &teste.user.codigo_verificador); printf("\nLimite: "); scanf("%f", &teste.user.limite); teste.senha= (teste.senha * teste.user.codigo_verificador); fseek(servidor, sizeof(Conta)* (pos1-1), SEEK_SET); fwrite(&teste, sizeof(Conta), 1, servidor); system("cls"); printf("\t--Dados atualizados com sucesso!--\n"); fclose(servidor); } }// fim da opcao 3; }while(opcao!= 4); return 0; } //////////////////////////////////////////////////////////////////////////////// int clientes(){ int opcao, cod; system("cls"); do{ printf("\t ________________________________________________________________\n"); printf("\t| 01 BANCO CENTRAL TI 10 [Cliente] |\n"); printf("\t|________________________________________________________________|\n"); printf("\n"); int busca; int operacao; int pos=0, pos1=0; float saldo_d; printf("1- Saque\n2- Depósito\n3- Transferência\n4- Pagamento\n5- Saldo\n6- Limite\n7- Extrato\n8- Sair\n> "); scanf("%i", &opcao); Conta teste; Conta dois; Extrato dado; FILE* servidor; servidor= fopen("Dados_bancarios.txt", "r+b"); if(servidor== NULL){ printf("\t\t**POSSIVEL ERRO AO TENTAR EXECUTAR O ARQUIVO**\n"); } FILE* extrat= fopen("extrato_clientes.txt", "a+b"); if(extrat== NULL){ printf("\t\t**POSSIVEL ERRO AO TENTAR EXECUTAR O ARQUIVO**\n"); } printf("Numero Conta (ATUAL): "); scanf("%i", &busca); while(!feof(servidor)){ fread(&teste, sizeof(Conta),1, servidor); if(teste.conta_pri == busca){ pos1= pos+1; break; } pos++; }// fim do while; switch(opcao){ case 1:{ if(pos1== 0){ system("cls"); printf("\t*Conta não encontrada no sistema!\n"); break; } else{ printf("\nValor do Saque: "); scanf("%i", &operacao); if(operacao>0 && operacao<=teste.saldo){ system("cls"); printf("\n\t*Saque realizado com sucesso\n\tRETIRE AS NOTAS\n"); fseek(servidor, sizeof(Conta)* (pos1-1), SEEK_SET); teste.saldo= teste.saldo-operacao; dado.data="31/12"; dado.transacao= "saque"; dado.detalhes=teste.conta_pri; dado.valor= operacao; fwrite(&dado, sizeof(Extrato), 1, extrat); fwrite(&teste, sizeof(Conta), 1, servidor); } else{ system ("cls"); printf("\t*Valor de saque não disponivel!\n"); } }//fim do else fclose(servidor); fclose(extrat); break; }//fim da case 1 case 2:{ if(pos1== 0){ system("cls"); printf("\t*Conta não encontrada no sistema!\n"); break; } else{ printf("\nValor do depósito: "); scanf("%i", &operacao); if(operacao>0){ system("cls"); printf("\n\t*Depósito realizado com sucesso\n"); fseek(servidor, sizeof(Conta)* (pos1-1), SEEK_SET); teste.saldo= teste.saldo+operacao; fwrite(&teste, sizeof(Conta), 1, servidor); dado.data="31/12"; dado.transacao= "depósito"; dado.detalhes=teste.conta_pri; dado.valor= operacao; fwrite(&dado, sizeof(Extrato), 1, extrat); } else{ system ("cls"); printf("\t*Valor de depósito inválido!\n"); } }//fim do else fclose(servidor); fclose(extrat); break; }//fim da case 2 case 3:{ if(pos1== 0){ system("cls"); printf("\t*Conta não encontrada no sistema!\n"); break; } else{ int pos2=0; int pos3=0; printf("\nConta (p/tranferência): "); scanf("%i", &busca); saldo_d= teste.saldo; fclose(servidor); servidor= fopen("Dados_bancarios.txt", "r+b"); if(extrat== NULL){ printf("\t\t**POSSIVEL ERRO AO TENTAR EXECUTAR O ARQUIVO**\n"); } while(!feof(servidor)){ fread(&dois, sizeof(Conta),1, servidor); if(dois.conta_pri == busca){ pos3= pos2+1; break; } pos2++; }// fim do while; if(pos3== 0){ system("cls"); printf("\t*Conta não encontrada no sistema!\n"); printf("\t*Transferência não realizada!\n"); break; } else{ printf("\nValor da transferência: "); scanf("%i", &operacao); if(operacao>0 && operacao <= saldo_d){ system("cls"); printf("\n\t*Transferência realizada com sucesso\n"); fseek(servidor, sizeof(Conta)* (pos1-1), SEEK_SET); teste.saldo= teste.saldo-operacao; fwrite(&teste, sizeof(Conta), 1, servidor); fseek(servidor, sizeof(Conta)* (pos3-1), SEEK_SET); dois.saldo= dois.saldo+operacao; dado.data="31/12"; dado.transacao= "Transferencia"; dado.detalhes=teste.conta_pri; dado.valor= operacao; fwrite(&dado, sizeof(Extrato), 1, extrat); fwrite(&dois, sizeof(Conta), 1, servidor); } } }//fim do else fclose(servidor); fclose(extrat); break; }// fim da case 3 case 4:{ if(pos1== 0){ system("cls"); printf("\t*Conta não encontrada no sistema!\n"); break; } else{ printf("\nCódigo do boleto: "); scanf("%i", &cod); printf("\nValor do boleto: "); scanf("%i", &operacao); if(operacao>0 && operacao <= teste.saldo){ system("cls"); printf("\n\t*Boleto pago com sucesso!\n"); fseek(servidor, sizeof(Conta)* (pos1-1), SEEK_SET); teste.saldo= teste.saldo-operacao; dado.data="31\12"; dado.transacao= "pagamento"; dado.detalhes= busca; dado.valor= operacao; fwrite(&dado, sizeof(Extrato), 1, extrat); fwrite(&teste, sizeof(Conta), 1, servidor); } else{ system ("cls"); printf("\t*Saldo indisponível!\n"); } }//fim do else fclose(extrat); fclose(servidor); break; }//fim da case 4 case 5:{ if(pos1== 0){ system("cls"); printf("\t*Conta não encontrada no sistema!\n"); break; } else{ printf("\t*SALDO: %.2f R$\n", teste.saldo); } break; }//fim da case 5 case 6:{ if(pos1== 0){ system("cls"); printf("\t*Conta não encontrada no sistema!\n"); break; } else{ printf("\t*Limite: %.2f R$\n", teste.user.limite); printf("\t-Empréstimos\n\t-Parcelamentos\n\nAumentar limite?\n-Fale com um de nossos Adm's\n"); } break; }//fim da case 6 case 7:{ printf("\t--Transações--\n"); while(fread(&dado, sizeof(Extrato), 1, extrat)==1){ if(busca==dado.detalhes){ printf("Data: %s Movimentação: %s Valor: %.2f\n",dado.data, dado.transacao, dado.valor); } } fclose(servidor); fclose(extrat); break; } }//fim switch } while(opcao!= 8); return 1; } //////////////////////////////////////////////////////////////////////////////// int main (void){ setlocale(LC_ALL, ""); int sim, autent, result_aute; //verifica abertura do arquivo FILE* servidor = fopen ("Dados_bancarios.txt", "r+b"); FILE* extrat= fopen ("extrato_clientes.txt", "a+b"); if(extrat== NULL){ printf("\t\t**POSSIVEL ERRO AO TENTAR EXECUTAR O ARQUIVO**\n"); } if(servidor== NULL){ fclose(servidor); printf("\t\t**ERRO AO TENTAR EXECUTAR O ARQUIVO**\n"); printf("-> Certifique-se se o arquivo 'Dados_bancarios.txt', está no mesmo local do execultavel.\n\n"); printf("Deseja Criar um arquivo? (1: sim | 2: não): "); scanf("%i", &sim); if(sim== 1){ FILE* lista = fopen ("Dados_bancarios.txt", "wb"); fclose(lista); } else{ printf("\n\t-*Programa encerrado com sucesso*-\n"); exit(1); } }// fim do if //-------------------------fim da verificação do arquivo------------------------ do{ printf("\t ________________________________________________________________\n"); printf("\t| 01 BANCO CENTRAL TI 10 |\n"); printf("\t|________________________________________________________________|\n"); printf("\n*É necessario a autenticar sua entrada\n1- Administrador.\n2- Cliente.\n3- Sair\n> "); scanf("%i", &autent); if(autent== 1){ // chama função do adm result_aute= autentica(autent); if(result_aute== 1){ result_aute= administrador(servidor); } } else if(autent== 2){ //chamar função do cliente result_aute= autentica(autent); if(result_aute== 1){ result_aute= clientes(); } result_aute=0; } }while(autent!=3); printf("Sistema Encerrado com sucesso!"); fclose(servidor); fclose(extrat); return 0; }
Compartilhar