Ir para conteúdo

POWERED BY:

Arquivado

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

Glaucco

Arquivo-conta-bancária

Recommended Posts

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

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

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

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

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
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

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
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

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

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

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

o compilador n cria nd automaticamente;.

automaticamente você diz como aleatoriamente??

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.