Glaucco 1 Denunciar post Postado Maio 27, 2009 Como eu valido Consulta saldo, Saque, Depósito, Transferência com senha? #include<iostream> #include<fstream> using namespace std; class ContaBancaria { // declaração dos atributos privados float saldo; int numero; int agencia; string titular; public: // declaração dos métodos públicos float getSaldo(); int doAgencia(); int getNumero(); int getAgencia(); string getTitular(); void setNumero(int); void setAgencia(int); void setTitular(string); float consultaSaldo(); float deposito(float); float saque(float); ContaBancaria(); // construtor-padrão }; // fim da classe // criação dos métodos float ContaBancaria::getSaldo() { return saldo; } float ContaBancaria::consultaSaldo() { return saldo; } int ContaBancaria::getNumero() { return numero; } int ContaBancaria::getAgencia() { return agencia; } string ContaBancaria::getTitular() { return titular; } void ContaBancaria::setNumero(int n) { numero=n; } void ContaBancaria::setAgencia(int a) { agencia=a; } void ContaBancaria::setTitular(string t) { titular=t; } float ContaBancaria::deposito(float valor) { saldo+=valor; return saldo; } float ContaBancaria::saque(float valor) { saldo=valor; return saldo; } int ContaBancaria::doAgencia() { int soma=(agencia % 10) * 2; soma+=((agencia % 100 / 10) * 3); soma+=((agencia % 1000 / 100) * 4); soma+=((agencia / 1000) * 5); return ((soma*10) % 11); } ContaBancaria::ContaBancaria() { saldo = 0.0; } int main() { ContaBancaria cb; int num, ag; string tit; float valor; cout << "informe o titular da conta: "; getline(cin,tit); cb.setTitular(tit); cout << "informe o numero da conta: "; cin >> num; cb.setNumero(num); cout << "informe o numero da agencia: "; cin >> ag; cb.setAgencia(ag); cout << "informe um valor para deposito: "; cin >> valor; cout << "Seu novo saldo apos deposito: " << cb.deposito(valor) << endl; cout << "informe um valor para saque: "; cin >> valor; cout << "Seu novo saldo apos saque: " << cb.saque(valor) << endl; cout << "Digito Verificador " << cb.doAgencia() << endl; system("pause"); } Compartilhar este post Link para o post Compartilhar em outros sites
José Enésio 4 Denunciar post Postado Maio 28, 2009 Adicione uma variável de senha na classe; Crie uma função que leia uma senha e compare com a senha da classe. Pode usar a função compare (provavelmente ficaria algo como senha.compare(senhaDigitada);). Se as senhas fecharem, então retorna true, caso contrário retorna false; Chame essa função nas funções que você deseja restringir, e caso o retorno da função seja false, você termina a execução da função com return: if(!this->PedeSenha()) { return 0; } Por exemplo. Compartilhar este post Link para o post Compartilhar em outros sites
Glaucco 1 Denunciar post Postado Maio 28, 2009 Pessoal alguém pode me ajuda como irrei grava esse meu código em binário. cadastrar e consultar? #include <fstream> #include <iomanip> #include <conio.h> #include <iostream> #include <cstring> #include <string> using namespace std; class ContaBancaria { // declaração dos atributos privados float saldo; int numero; int agencia; string titular; int senha; public: // declaração dos métodos públicos float aux1,aux; ContaBancaria(string, int, int, float,float, bool); ContaBancaria(); // construtor-padrão float getSaldo(); int setNumero(int); int getNumero(); int setAgencia(int); int getAgencia(); bool setTitular(string); string getTitular(); bool setDeposito(float); float getDeposito(); float dep(float); float saque(float); bool setSaque(float); float getSaque(); bool validaSenha(int); int digVerAgencia(); int digVerConta(); float consultaSaldo(); void cadastraUsuario(); void print(); }; // fim da classe //************* CONSTRUTOR PADRAO GARANTE QUE O SALDO DA CONTA ESTEJA COM VALOR INICIAL ZERO ContaBancaria::ContaBancaria() { saldo = 0.0; aux=0; aux1=0; } //************* CONSTRUTOR COM ARGUMENTOS RECEBE OS QUE SERAO VALIDADOS PELO SISTEMA ContaBancaria::ContaBancaria(string n, int cont, int ag, float dep, float saq, bool sen) { setTitular(n);//titular=n; setNumero(cont);//conta=cont; setAgencia(ag);//agencia=ag; setDeposito(dep); setSaque(saq); validaSenha(sen); } // CRIAÇÃO DOS METODOS DE ACESSO DOS DADOS //############ METODO QUE CALCULA O DIGITO VERIFICADOR DA CONTA int ContaBancaria::digVerAgencia() { //metodo que verifica o digito verificador da agencia int aux; int soma=(agencia%10)*2; soma+=((agencia%100/10)*3); soma+=((agencia%1000/100))*4; soma+=(agencia%1000)*5; aux=(soma*10)%11; return aux; } //############ METODO QUE CALCULA O DIGITO VERIFICADOR DA CONTA int ContaBancaria::digVerConta() { int aux1; int soma=(numero%10)*2; soma+=((numero%100/10)*3); soma+=((numero%1000/100))*4; soma+=(numero%10000/1000)*5; soma+=((numero/10000)*6); aux1=(soma*10)%11; return aux1; } //############ METODO QUE VERIFICA E VALIDA A SENHA bool ContaBancaria::validaSenha(int sen) { if (sen>111111&&sen<999999) { senha=sen; return true; } else cout<<"A SENHA DEVE CONTER 6 DIGITOS!!! "<<endl; return false; } //############ METODO QUE VALIDA O NUMERO DA CONTA int ContaBancaria::setNumero(int n) { if (n<1||n>99999) return 0; else numero=n; return numero; } //############ METODO QUE VALIDA A AGENCIA int ContaBancaria::setAgencia(int a) { if (a<1||a>9999) { return 0; } else { agencia=a; } return agencia; } //############ METODO QUE VALIDA O NOME DO TITULAR DA CONTA bool ContaBancaria::setTitular(string t) { titular=t; if (titular.size()>2) { //||titular!=" ") return true; } else { // cout<<"Nome invalido!"; return false; } } //############ METODO QUE RETORNA O NUMERO DA CONTA JA VALIDADO int ContaBancaria::getNumero() { return numero; } //############ METODO QUE RETORNA O VALOR DO SALDO ATUAL float ContaBancaria::getSaldo() { return saldo; } //############ METODO QUE RETORNA O NUMERO DA AGENCIA JA VALIDADO int ContaBancaria::getAgencia() { return agencia; } //############ METODO QUE RETORNA O NOME DO TITULAR JA VALIDADO string ContaBancaria::getTitular() { return titular; } //############ METODO QUE RETORNA O VALOR DO SALDO float ContaBancaria::consultaSaldo() { return saldo; } //############ METODO QUE VALIDA O VALOR DEPOSITADO bool ContaBancaria::setDeposito(float dep) { //float aux; if (dep>0) { aux=dep; return true; } else { cout<<"DEPOSITO INVALIDO !!! "<<endl; return false; } } //############ METODO QUE RETORNA O VALOR DEPOSITADO float ContaBancaria::getDeposito() { return aux; } float ContaBancaria::dep(float aux) { return saldo+=aux; // return saldo; } //############ METODO QUE VALIDA O VALOR A SER SACADO bool ContaBancaria::setSaque(float val) { //float aux1; if (val<=saldo) { aux1=val; return true; } else cout<<"SALDO INSUFICIENTE!!!"<<endl; return false; } //############ METODO QUE RETORNA O VALOR SACADO float ContaBancaria::getSaque() { return aux1; } //############ METODO QUE CALCULA O SAQUE - O SALDO float ContaBancaria::saque(float aux1) { return saldo-=aux1; } //############ METODO QUE CADASTRA CORRENTISTAS void ContaBancaria::cadastraUsuario() { ContaBancaria cb; int aux=100; agencia=129; numero=201; float valorDep; cout << "informe o nome do titular da conta: \n"; fflush(stdin); // gets(tit); getline(cin,titular); cb.setTitular(titular); // strupr(tit); if (cb.setTitular(titular)==false) { cout<<"Nome invalido!"<<endl<<endl; } else { aux++; numero+=aux; } //}while(cb.setTitular(titular)==false); cb.setNumero(numero); //cb.setDeposito(valorDep); cb.setAgencia(agencia); do { cout << "informe a senha: "; //s=getche(); cin >> senha; //cb.validaSenha(s); } while (!cb.validaSenha(senha)); } //############ METODO QUE IMPRIME OS DADOS CALCULADOS void ContaBancaria::print() { cout<<"Titular da Conta: "<<titular<<endl <<setfill('0') <<"Numero da conta: "<<numero<<"-"<<digVerConta()<<endl <<"Agencia: "<<agencia<<"-"<<digVerAgencia()<<endl <<setiosflags(ios::fixed)//notação nao cientifica <<setiosflags(ios::showpoint)//ponto deicimal <<setprecision(3)<<setfill('0')// <<"Valor do deposito: "<<aux<<endl <<"Valor do saque: "<<aux1<<endl <<"Saldo: "<<saldo<<endl; //getch(); } int main() { char resp; ContaBancaria C; do { C.cadastraUsuario(); cout<<"deseja cadastrar outro cliente?[S/N]"<<endl; cin>>resp; } while (resp!='n'); C.print(); getch(); return 0; } #include <fstream> #include <iomanip> #include <conio.h> #include <iostream> #include <cstring> #include <string> #include "CadastroConta.h" //#include "MenuConta.h" int main() { char resp; ContaBancaria C; //menu cad; int op,op1; do { cout<<"\t***** MENU *****\n"<<endl; cout<<"1-Cadastra correntista.\n"<<endl; cout<<"2-Outras opcoes.\n"<<endl; cout<<"3-Sair do pgrograma.\n"<<endl; cin>>op1; switch(op1) {//inicio do switch principal(MENU) case 1: do { C.cadastraUsuario(); cout<<"Deseja cadastrar outro cliente?[S/N] "<<endl; cin>>resp; }while(resp!='n'); break; case 2: C.menuConta(); break; case 3: break; } }while(op1!=3); getch(); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
Glaucco 1 Denunciar post Postado Junho 2, 2009 Pessoal agora meu problema é o seguinte quando eu digito a opção 5 imprimir extrato mostra apenas o conta recente do ultimo titular ele não mostrar todas as contas. Como eu faço para mostrar todas as contas no extrato? e para o programa criar automaticamente a conta e agencia ? #include <iostream> #include <string> #include <fstream> using namespace std; class ContaBancaria { // Atributos privados da Class ContaBancaria float saldo; int numero; int agencia; int senha; string titular; public: // Declarando os protótipos dos métodos, já que todos eles serão criados fora da classe. bool setAgencia(int,bool); // Aqui também é indicado o tipo do parâmetro a ser passado. bool setNumero(int,bool); // Aqui também é indicado o tipo do parâmetro a ser passado. void setTitular(string); // Aqui também é indicado o tipo do parâmetro a ser passado. void setSaque(); int getAgencia(int); // Aqui também é indicado o tipo do parâmetro a ser passado. int getNumero(int); // Aqui também é indicado o tipo do parâmetro a ser passado. string getTitular(); float getSaldo(); float consultarSaldo(); float deposito(float); // Aqui também é indicado o tipo do parâmetro a ser passado. float saque(float); // Aqui também é indicado o tipo do parâmetro a ser passado. bool verificaSaldo(float,bool); int digVerAgencia(); int digVerConta(); bool setSenha(int,bool); void MostraMenu(); void CadastrarCorrentista(); ContaBancaria() { saldo = 0; } }; // Criação dos métodos bool ContaBancaria::setSenha(int sen, bool debug=false) { if (!((sen > 100000) && (sen < 999999))) { if (debug) cout << "*** ATENCAO!!! A senha deve conter 6 digitos numericos e nao pode comecar com zero.\n"; return false; } senha = sen; return true; } bool ContaBancaria::setAgencia(int ag, bool debug = false) { // Método SET para Agencia. A variável debug é um parâmetro opcional pois ela recebe o valor "false". Se for retirado o "false", ele passa a ser obrigatório. if (ag < 1 || ag > 9999) { if (debug) cout << "*** ATENCAO!!! Numero invalido.\n"; return false; } agencia = ag; return true; } bool ContaBancaria::setNumero(int n, bool debug = false) { // Método SET para Numero da Conta. A variável debug é um parâmetro opcional pois ela recebe o valor "false". Se for retirado o "false", ele passa a ser obrigatório. if (n < 1 || n > 99999) { if (debug) cout << "*** ATENCAO!!! Numero invalido.\n"; return false; } numero = n; return true; } void ContaBancaria::setTitular(string t) { // Método SET para Titular da Conta. titular=t; } int ContaBancaria::getAgencia(int agencia) { // Método GET para Agencia. return agencia; } int ContaBancaria::getNumero(int numero) { // Método GET para Numero da Conta. return numero; } float ContaBancaria::getSaldo() { // Método GET para Saldo. return saldo; } string ContaBancaria::getTitular() { // Método GET para Titular da Conta. return titular; } float ContaBancaria::deposito(float dep) { saldo+=dep; // SALDO recebe ele mesmo e soma com DEP return saldo; } float ContaBancaria::consultarSaldo() { return saldo; } float ContaBancaria::saque(float saq) { if (verificaSaldo(saq,true)) { return saldo-=saq; } else return saldo; } bool ContaBancaria::verificaSaldo(float vl, bool debug = false) { if (vl > saldo) { if (debug) { cout << "*** ATENCAO!!! Saldo insuficiente.\n"; } return false; } return true; } int ContaBancaria::digVerAgencia() { // Método para calcular o dígito verificador da agência. int soma=(agencia%10)*2; soma+=((agencia%100/10)*3); soma+=((agencia%1000/100))*4; soma+=(agencia%1000)*5; return ((soma*10)%11); } int ContaBancaria::digVerConta() { // Método para calcular o dígito verificador da agência. int soma=(agencia%10)*2; soma+=(agencia%100/10)*3; soma+=(agencia%1000/100)*4; soma+=(agencia%10000/1000)*5; soma+=(agencia%10000)*6; return ((soma*10)%11); } void ContaBancaria::MostraMenu(){ cout << "--------- M.E.N.U ---------" << endl << endl; cout << "1 - Cadastrar cliente" << endl; cout << "2 - Consultar Saldo" << endl; cout << "3 - Depositar" << endl; cout << "4 - Realizar Saque" << endl; cout << "5 - Imprimir extrato" << endl; cout << "0 - Sair do programa" << endl << endl; cout << "---------------------------" << endl; } void ContaBancaria::CadastrarCorrentista(){ ContaBancaria cc; // Criando um objeto para acessar os outros métodos da classe. char sdate[9]; char stime[9]; _strdate( sdate ); // Declarando variável para exibir a data no formato mm/dd/aaaa. _strtime( stime ); // Declarando variável para exibir a hora no formato 00:00:00. int op,num,agen,senha; float dep,saldo,saq; string tit; do { cout << "Informe sua opcao: "; cin >> op; cout << endl; switch (op) { case 1: cout << "---------------------------" << endl; cout << "-> Titular da Conta: "; fflush(stdin); getline(cin,tit); cc.setTitular(tit); do { cout << "-> Numero da Conta: "; cin >> num; } while (!cc.setNumero(num,true)); // Passa como parâmetro o valor "True" para a variável DEBUG. do { cout << "-> Agencia: "; cin >> agen; } while (!cc.setAgencia(agen,true)); // Passa como parâmetro o valor "True" para a variável DEBUG. do { cout << "-> Digite uma nova senha com 6 digitos: "; cin >> senha; } while (!cc.setSenha(senha,true)); cout << "---------------------------\n"; break; case 2: cout << "---------------------------" << endl; cout << "-> SALDO: R$ " << cc.consultarSaldo() << endl; cout << "---------------------------" << endl << endl; break; case 3: cout << "---------------------------" << endl; cout << "VALOR DO DEPOSITO: R$ "; cin >> dep; cout << "-> SALDO APOS O DEPOSITO: R$ " << cc.deposito(dep) << endl; cout << "---------------------------" << endl << endl; break; case 4: cout << "---------------------------" << endl; cout << "VALOR DO SAQUE: R$ "; cin >> saq; cout << "-> SALDO APOS O SAQUE: R$ " << cc.saque(saq) << endl; cout << "---------------------------" << endl << endl; break; case 5: system ("cls"); for cout << "-----------------------------------------------" << endl; cout << "->Nome: " << cc.getTitular() << endl; cout << "->Numero da Conta: " << cc.getNumero(num) << "-" << cc.digVerConta() << endl; cout << "->Agencia: " << cc.getAgencia(agen) << "-" << cc.digVerAgencia() << endl; cout << "->Saldo atual: " << cc.getSaldo() << endl; cout << "*** Operacao realizada em " << sdate << " as " << stime<< endl; // Exibindo a data e hora do sistma. cout << "-----------------------------------------------" << endl; cc.MostraMenu(); break; default: cout << "*** Opcao invalida!\n\n"; break; } } while (op!=0); system ("cls"); cout << "---------------------------" << endl; cout << "Encerrando o programa..." << endl; cout << "---------------------------" << endl; } int main() { ContaBancaria cb; fstream arquivo; cb.MostraMenu(); cb.CadastrarCorrentista(); // Chamando o método Cadastrar Correntista. arquivo.open("contas.txt",ios::out | ios::app | ios::binary); // Criando arquivo arquivo.write(reinterpret_cast<char*>(&cb),sizeof(ContaBancaria)); // Grava no arquivo o objeto CB da classe Conta Bancária. } Compartilhar este post Link para o post Compartilhar em outros sites
VictorCacciari 42 Denunciar post Postado Junho 4, 2009 Glaucco Serviçoes de postagem não foram criados para ficaram de enfeite.... :P :P :P Quando for postar um código desse tamanho, utilize www.codepag.com, ou pastebin, pasteninja... qualquer um deles. Não entendi a sua pergunta. :/ Reformule a sua pergunta, e poste somente a parte do código que interessa para resolução! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Junho 4, 2009 fflush(stdin); Meu deus, parem de usar essa porcaria... Pessoal agora meu problema é o seguinte quando eu digito a opção 5 imprimir extrato mostra apenas o conta recente do ultimo titular ele não mostrar todas as contas. Como eu faço para mostrar todas as contas no extrato? e para o programa criar automaticamente a conta e agencia ? Não entendi. Você quer armazenar uma lista de contas de um único titular? Tipo...Uma pessoa pode ser titular de várias contas? Se for isso, porque você está usando um objeto e não uma lista de objetos? Fica meio difícil armazenar tudo num único pedaço de memória. Compartilhar este post Link para o post Compartilhar em outros sites
Glaucco 1 Denunciar post Postado Junho 4, 2009 Não cara é asim quero. Exemplo quando começar a copilar vai aparecer o informe o nome do titular da conta quero que o programa crie automaticamente a agência e a conta sem presisar digitar a conta e a agência. é que nem quando você criar um conta no banco. Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Junho 4, 2009 Não cara é asim quero. Exemplo quando começar a copilar vai aparecer o informe o nome do titular da conta quero que o programa crie automaticamente a agência e a conta sem presisar digitar a conta e a agência. é que nem quando você criar um conta no banco. Dá p/ escrever direito? E compilação não é igual a execução. Eu não quero saber como você quer registrar a conta e a agência. Estou perguntando se o relacionamento é de 1 p/ n (titular -> conta). Leia novamente meu post anterior. Compartilhar este post Link para o post Compartilhar em outros sites
Glaucco 1 Denunciar post Postado Junho 5, 2009 import java.Isis não to entendo que você também está dizendo. Se você tem uma idéia para me ajuda aceito ajudas. Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Junho 5, 2009 Que parte você não entendeu? É só ler o post novamente e olhar o que você está fazendo no código. Compartilhar este post Link para o post Compartilhar em outros sites
Glaucco 1 Denunciar post Postado Junho 6, 2009 Mais qual o problema de usar fflush(stdin);? Eu posso usar quantas vezes eu quiser. Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Junho 6, 2009 pode usar até system("pause"); se você quiser ow melhor ainda getch(); da conio Compartilhar este post Link para o post Compartilhar em outros sites
Kelvin Dules 0 Denunciar post Postado Junho 6, 2009 Primeira tapa é um real. =O -----------------------| Use system("pause"); (#include <windows.h>) como o quitzaummm disse.. getch(); também é bom.. depende muito do caso... logo system("pause"); não funciona em ambiente linux etc. como ja disse depende muito da necessidade ^^ Compartilhar este post Link para o post Compartilhar em outros sites
Glaucco 1 Denunciar post Postado Junho 6, 2009 Alguém pode me ajudar como eu faço para o copilador criar automaticamente número da conta e agência? Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Junho 6, 2009 o compilador n cria nd automaticamente;. automaticamente você diz como aleatoriamente?? []s Compartilhar este post Link para o post Compartilhar em outros sites
Glaucco 1 Denunciar post Postado Junho 6, 2009 Isso quitZAUMMM. Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Junho 6, 2009 usa o rand(); orra tem bastante coisa do rand aki no fórum, de uma busca ae []s Compartilhar este post Link para o post Compartilhar em outros sites
Glaucco 1 Denunciar post Postado Junho 10, 2009 Pessoal agora está faltando apenas transferir e arumar o saldo. Exemplo quando eu crio mais de duas contas ele mostra o saldo da conta primera na conta segunda. #include <iostream> #include <iomanip> #include <fstream> #include <conio.h> #include <sstream> #include <string> using namespace std; class ContaBancaria { // declaração dos atributos privados float saldo; int numero; int digitoConta; int agencia; int digitoAgencia; char titular[80]; int senha; public: // declaração dos métodos públicos float aux1,aux; ContaBancaria(string, int, int, float,float, bool); ContaBancaria(); // construtor-padrão float getSaldo(); void setNumero(int); int getNumero(); void setAgencia(int); int getAgencia(); bool setTitular(string); string getTitular(); bool setDeposito(float); float getDeposito(); float dep(float); float saque(float); bool setSaque(float); float getSaque(); bool validaSenha(int,int,int); bool verificaConta(int,int ); bool verificaAgencia(int,int); // int digVerAgencia(); //int digVerConta(); float consultaSaldo(); bool setSenha(int,int); void print(); bool autentica(int ,int, int); int getDigitoConta(); int getDigitoAgencia(); }; // fim da classe ContaBancaria::ContaBancaria() { saldo = 0.0; // aux=0; //aux1=0; } // code01 bool ContaBancaria::validaSenha(int sen,int confirma, int auxS) { if (auxS==0) { { if (sen==confirma) { return true; } return false; } return false; } if (auxS==1) { if (sen==senha) { return true; } return false; } return false; } bool ContaBancaria::setSenha(int sen,int confirma ) { if (validaSenha(sen,confirma,0)) { senha=sen; return true; } return false; } void ContaBancaria::setNumero(int n) { if (n<1||n>99999) cout<<"Conta invalida!(setNumero)"<<endl; else { numero=n; //return numero; int soma=(numero%10)*2; soma+=((numero%100/10)*3); soma+=((numero%1000/100))*4; soma+=(numero%10000/1000)*5; soma+=((numero/10000)*6); digitoConta=(soma*10)%11; //return digitoConta; } } void ContaBancaria::setAgencia(int a) { if (a<1||a>9999) { cout<<"Agencia invalida!"<<endl; } else { agencia=a; int soma=(agencia%10)*2; soma+=((agencia%100/10)*3); soma+=((agencia%1000/100))*4; soma+=(agencia%1000)*5; digitoAgencia=(soma*10)%11; } } bool ContaBancaria::setTitular(string tit) { char* nome; int tam = tit.size(); nome = new char[tit.length() + 1]; fflush(stdin); strcpy(nome,tit.c_str()); for (int j = 0; j < tam; ++j) { if (nome[j]==' ') { tam--; } } if (tam>2) { fflush(stdin); strcpy(titular,nome); return true; } cout << "\n\n\t\tnome invalido (O Nome deve conter no minimo 3 digitos)\n\n"; system("pause"); return false; } //METODOS DE VALIDAÇÃO bool ContaBancaria::verificaConta(int auxConta,int auxDigCo) { int aux1=0; if (auxConta>1&&auxConta<99999) { aux1=(auxConta%10)*2; aux1+=((auxConta%100/10)*3); aux1+=((auxConta%1000/100))*4; aux1+=(auxConta%10000/1000)*5; aux1+=((auxConta/10000)*6); } aux1=(aux1*10)%11; if (aux1==auxDigCo) { return true; } else return false; cout<<"Conta invalida (verificaConta)! "<<endl; getch(); } bool ContaBancaria::verificaAgencia(int auxAgencia,int auxDigAg) { int aux=0; if (auxAgencia>1&&auxAgencia<9999) { aux=(auxAgencia%10)*2; aux+=((auxAgencia%100/10)*3); aux+=((auxAgencia%1000/100))*4; aux+=(auxAgencia%1000)*5; } aux=(aux*10)%11; //cout<<"digito agencia"<<aux<<endl; //getch(); if (aux==auxDigAg) { return true; } else return false; cout<<"Agencia invalida! "<<endl; getch(); } bool ContaBancaria::autentica(int aConta, int aAgencia, int aSenha) { if (aAgencia==agencia) { if (aConta==numero) { if (aSenha==senha) return true; else cout<<"Senha invalida!"<<endl; } cout<<"Conta invalida!"<<endl; } else cout<<"Agencia invalida!"<<endl; return false; } bool ContaBancaria::setDeposito(float dep) { if (dep>0) { saldo+=dep; return true; } else { cout<<"ERRO DEPOSITO !!! "<<endl; return false; } } bool ContaBancaria::setSaque(float val) { //float aux1; if (val<=saldo) { //saldo-=val; return true; } else cout<<"NAO ha SALDO para esta operacao!!!"<<endl; return false; } //FIM DOS METODOS DE VALIDAÇÃO //METODOS DE MANIPULAÇÃO float ContaBancaria::dep(float aux) { return saldo+=aux; // return saldo; } float ContaBancaria::saque(float aux1) { return saldo-=aux1; } //FIM DOS METODOS DE MANIPULAÇÃO //METODOS QUE IMPRIME (RETORNA VALORES A SEREM IMPRESSOS OU MANIPULADOS) int ContaBancaria::getDigitoConta() { return digitoConta; } int ContaBancaria::getAgencia() { return agencia; } int ContaBancaria::getDigitoAgencia() { return digitoAgencia; } float ContaBancaria::consultaSaldo() { return saldo; } float ContaBancaria::getSaque() { return aux1; } int ContaBancaria::getNumero() { return numero; } float ContaBancaria::getSaldo() { return saldo; } string ContaBancaria::getTitular() { return titular; } float ContaBancaria::getDeposito() { return aux; } void ContaBancaria::print() { cout<<"Titular da Conta.................-> "<<titular<<endl <<setfill('0') <<"Numero da conta..................-> "<<setw(5)<<numero<<"-"<<digitoConta<<endl <<"Agencia..........................-> "<<setw(4)<<agencia<<"-"<<digitoAgencia<<endl <<setiosflags(ios::fixed)//notação nao cientifica <<setiosflags(ios::showpoint)//ponto deicimal <<setprecision(2)<<setfill('0')// //<<"Valor do deposito................-> R$ "<<setw(2)<<aux<<endl //<<"Valor do saque...................-> R$ "<<setw(2)<<aux1<<endl <<"Saldo............................-> R$ "<<setw(2)<<saldo<<endl; //getch(); } //FIM DOS METODOS DE IMPRESSAO int main() { ContaBancaria cb,auxObj; int num=100, ag=2501,op,s,confSenha,op1,auxConta=0; string tit,cliente; float valor,valorDep=0.0; char resp; fstream conta;//declaracao do objeto conta (para criacao do arquivo) do { cout<<"\n\n Sistema de Cadastro de Clientes\n"<<endl; cout<<" 1 - Cadastra nova conta"<<endl; cout<<" 2 - Outras Opcoes"<<endl; cout<<" 3 - Sair do Pgrograma"<<endl; cout<<"\n\n Informe a OPCAO desejada: "; cin>>op1; switch (op1) { case 1: {system ("cls"); conta.open("arqConta.txt",ios::out|ios::app|ios::binary);//ABRE O ARQUIVO PARA GRAVAÇÃO conta.seekp(0,ios::end);//PERCORRE TODO O ARQUIVO fflush(stdin);//ESVAZIA BUFFER long contArq=conta.tellp()/sizeof(ContaBancaria);//VERIFICA QUANTOS REGISTROS O ARQUIVO TEM if (!conta.good())//SE O ARQUIVO NÃO ABRIU MOSTRA MSG DE ERRO { cout<<"\nArquivo nao foi aberto\n"; getch(); } do { cout << "informe o nome do titular da conta: \n\n -> "; fflush(stdin); // gets(tit); getline(cin,tit); // strupr(tit); } while (cb.setTitular(tit)==false); do { cout << "informe a senha: \n-> "<<endl; //s=getche(); cin >> s; //cb.validaSenha(s); cout<<"Confirme a senha: \n-> "<<endl; cin>>confSenha; } while (!cb.setSenha(s,confSenha)); cb.setNumero(num+contArq++); cout<<endl; cb.setAgencia(ag); cb.print(); //auxConta=contArq; conta.write(reinterpret_cast<char*>(&cb), sizeof(ContaBancaria));//ESCREVE O OBJETO NO ARQUIVO conta.close();//FECHA O ARQUIVO break; } case 2: {system("cls"); do { cout<<endl; cout<<"1- deposito "<<endl; cout<<"2- saque "<<endl; cout<<"3- saldo "<<endl; cout<<"4- transferencia "<<endl; cout<<"5- sair "<<endl; cin>>op; switch (op) { case 1: {system("cls"); int ndc,nda,dAgencia,dConta,valDep; conta.open("arqConta.txt",ios::in|ios::binary);//ABRE O ARQUIVO PARA LEITURA if (!conta.good())//SE NÃO ABRIU MOSTRA MSG DE ERRO cout<<"\nERRO AO ABRIR O ARQUIVO! \n"; int aux,cont=0; cout<<endl; do { cout << "Informe a conta. \n-> "; cin>>ndc; cout << "Informe o digito. \n-> "; cin>>dConta; } while (!auxObj.verificaConta(ndc,dConta)); do { cout << "Informe a agencia. \n-> "; cin>>nda; cout << "Informe o digito. \n-> "; cin>>dAgencia; } while (!auxObj.verificaAgencia(nda,dAgencia)); do { cout<<"Informe um valor para deposito. \n R$: "<<endl; cin>>valDep; } while (valDep<1); conta.seekg(0,ios::end);//percorre todo o arquivo long con= conta.tellg()/sizeof(ContaBancaria);//VERIFICA QUANTOS REGISTROS TEM O ARQUIVO conta.seekg(0);//POSICIONA NO PRIMEIRO REGISTRO for (int i=0;i<con;++i) { conta.read(reinterpret_cast<char*>(&cb), sizeof(ContaBancaria)); cont++; if (((cb.getNumero()==ndc)&&(cb.getAgencia()==nda))) { //cout<<"informe o valor para deposito. "<<endl; //cin>>valorDep; if (cb.setDeposito(valDep)==true) { conta.close(); conta.open("arqConta.txt",ios::out|ios::in|ios::binary); conta.seekp((--cont)*sizeof(ContaBancaria)); conta.write(reinterpret_cast<char*>(&cb), sizeof(ContaBancaria)); conta.close(); cout<<endl; cout<<"Valor depositado ...-> R$ "<<valDep; cout<<endl; break; //cb.print(); } } } if (cont==con) { cout<<"Cliente nao localizado! "<<endl; conta.close(); } break; } case 2: {system("cls"); // int ncs,nsa,aux,digitoC,digitoA,auxSenha; int nuCo,diCo,nuAg,diAg,aSe; float valSaque; conta.open("arqConta.txt",ios::in|ios::binary); if (!conta.good())//se nao abriu o arquivo retorna msg de erro { cout<<"\nERRO AO ABRIR O ARQUIVO!"<<endl; } cout<<endl; do { cout << "Informe a conta. \n-> "; cin>>nuCo; cout << "Informe o digito. \n-> "; cin>>diCo; } while (!auxObj.verificaConta(nuCo,diCo)); do { cout << "Informe a agencia. \n-> "; cin>>nuAg; cout << "Informe o digito. \n-> "; cin>>diAg; } while (!auxObj.verificaAgencia(nuAg,diAg)); cout<<"Informe a senha 6 digitos(Apenas numeros). \n ->"; cin>>aSe; conta.seekp(0,ios::end);//percorre todo o arquivo int cont=0;//variaveis auxiliares long con= conta.tellg()/sizeof(ContaBancaria);//VERIFICA QUANTOS REGISTROS TEM O ARQUIVO conta.seekg(0);//POSICIONA NO PRIMEIRO REGISTRO for (int i=0;i<con;i++) { conta.read(reinterpret_cast<char*>(&cb),sizeof(ContaBancaria)); ++cont; if (cb.autentica(nuCo,nuAg,aSe)==true) { //cb.print(); cout<<"Informe um valor para saque. \n R$: "; cin>>valSaque; } if (!cb.saque(valSaque)) { cout<<"\tVerifique o valor informado...\n\n"<<endl; getch(); --cont; // continue; }; //ponto e virgula indica que acabou a instrução cout<<"\tOperacao realizada com sucesso !!!"<<endl; cout<<"\tSaldo atual R$ "<<cb.getSaldo()<<endl; conta.close();//fecha arquivo para leitura conta.open("arqConta.txt",ios::out|ios::in|ios::binary);//abre arquivo de eitura e escrita if (!conta.good()) { cout<<"\t\nERRO AO ABRIR O ARQUIVO!"<<endl; } conta.seekp((--cont)*sizeof(ContaBancaria)); conta.write(reinterpret_cast <char *> (&cb), sizeof(ContaBancaria)); conta.close(); cb.print(); break; } if (cont==con) { conta.close(); cout << "\n\tDados incorretos\n\t"; system("pause"); break; } break; } case 3: {system("cls"); int numConta,digConta,numAgencia,digAgencia,auxSenha; conta.open("arqConta.txt",ios::in|ios::binary);//ABRE O ARQUIVO PARA LEITURA if (!conta.good())//SE NÃO ABRIU MOSTRA MSG DE ERRO cout<<"\nERRO AO ABRIR O ARQUIVO! \n"; do { cout << "Informe o numero Conta. "; cin>>numConta; cout <<"Digito. "; cin>>digConta; } while (!auxObj.verificaConta(numConta,digConta)); do { cout << "Informe a agencia. "; cin>>numAgencia; cout <<"digito. "; cin>>digAgencia; } while (!auxObj.verificaAgencia(numAgencia,digAgencia)); cout<<"Informe a senha 6 digitos(Apenas numeros).\n -> "; cin>>auxSenha; conta.seekg(0,ios::end);//percorre todo o arquivo int c=0;//variaveis auxiliares long con= conta.tellg()/sizeof(ContaBancaria);//VERIFICA QUANTOS REGISTROS TEM O ARQUIVO //cout<<"Existem "<<con<<" clientes cadastrados \n"; conta.seekg(0);//POSICIONA NO PRIMEIRO REGISTRO for (int i=0;i<con;i++) { conta.read(reinterpret_cast<char*>(&cb),sizeof(ContaBancaria)); ++c; if (cb.autentica(numConta,numAgencia,auxSenha)==true) { // cout<<endl; cb.print(); cout<<endl; getch(); break; --c; } /*else cout<<"Dados invalidos"; break;*/ } conta.close(); //if (c==con) // cout<<"Cliente nao localizado"<<endl; break; } case 4: {system("cls"); break; } case 5: cout<<"obrigado por utilizar nosso sistema!!! "<<endl; } //cb.print(); system("pause"); } while (op!=5); break; } case 3: break; } } while (op1!=3); //}while (cb.setNumero(num)==0); getch(); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites