Você está aqui: Página Inicial Disciplinas 2012 fprog exercicios banco-incompleto.cpp

banco-incompleto.cpp

banco-incompleto.cpp — C++ source code, 4 kB (4697 bytes)

Conteúdo do arquivo

/*
 * banco.cpp
 *
 *  Created on: 04/02/2013
 *      Author: bruno
 */

#include <iostream>
#include <string>
#include <sstream>

using namespace std;

/* OBS.: Por ora o sistema tem apenas um tipo conta que serve
 * tanto para conta corrente quanto para poupança. O ideal
 * é que sejam diferentes, já que a conta poupança é um outro 
 * tipo de conta.
 */
struct Conta {
	int numero;
	float saldo;
};

struct Cliente {
	string cpf;
	string nome;
	string data_nasc;
	string data_cadastro; //início do relacionamento com o banco
	float renda_bruta;
	Conta corrente;
	Conta poupanca;
};

/* Operações do cliente */
float consultar_saldo (Conta cc);
void creditar (Conta &cc, float valor);
bool debitar (Conta &cc, float valor);
bool transferir (Conta ori, Conta &dest, float valor);

/* Operações de funcionários */
Cliente cadastrar_cliente (string cpf, string nome, string dt_nasc,
						   string dt_cad, float rendab);
bool autorizar_emprestimo (Cliente cl, float valor);
void realizar_emprestimo (Cliente &cl, float valor);
bool autorizar_financiamento (Cliente cl, float valor);
void realizar_financiamento (Cliente &cl, float valor);

int main () {
	/*
	Cliente cl1 = cadastrar_cliente("1021022", "Xavier Silva", 
								   "14/09/1978", "05/01/1991", 3750.00);

	cout << "===> Cliente: " << cl1.nome << endl << endl;
	cout << "### Creditando R$ 100,00 ###" << endl;
	creditar(cl1.corrente, 200.0);

	cout << "Saldo atual da conta corrente: "
		 << consultar_saldo(cl1.corrente) << endl;

	cout << "### Debitando R$ 46,00 ###" << endl;
	debitar (cl1.corrente, 46.0);

	cout << "Saldo atual da conta corrente: "
		 << consultar_saldo(cl1.corrente) << endl;

	cout << "Numero da conta: " << cl1.corrente.numero << endl << endl;

	Cliente cl2 = cadastrar_cliente("3421022", "Ricardo Pereira", 
									"25/04/1948", "12/12/1967", 6900.0);


	cout << "===> Cliente: " << cl2.nome << endl << endl;
	cout << "Saldo atual da conta corrente: "
		 << consultar_saldo(cl2.corrente) << endl;

	cout << "### Tranferindo R$ 100 de "
		 << cl1.nome << " para " << cl2.nome << endl;
	transferir(cl1.corrente, cl2.corrente, 100.0);

	cout << "Saldo atual da conta corrente de " << cl2.nome << ": "
	     << consultar_saldo(cl2.corrente) << endl;

	cout << "### Creditando R$ 2000,00 ###" << endl;
	creditar(cl2.corrente, 2000.0);

	cout << "Saldo atual da conta corrente de " << cl2.nome << ": "
		     << consultar_saldo(cl2.corrente) << endl;

	cout << "### Realizando empréstimo de R$ 600,00 ###" << endl;
	realizar_emprestimo(cl2, 600.0);

	cout << "### Realizando Financiamento de R$ 30000,00 ###" << endl;
	realizar_financiamento(cl2, 30000.0);

	cout << "Saldo atual da conta corrente de " << cl2.nome << ": "
		 << consultar_saldo(cl2.corrente) << endl;
	*/
	
	return 0;
}

/** Retorna o saldo de uma conta */
float consultar_saldo (Conta cc) {
	return cc.saldo;
}

void creditar (Conta &cc, float valor) {
	cc.saldo += valor;
}

/** FAZER 
 *  
 * return 'true': se o débito foi realizado, ou seja, se a conta tem
 *  		       saldo suficiente para o valor requisitado.
 */
bool debitar (Conta &cc, float valor) {
	
	return false;
}

/** FAZER
 * 
 *  ori - conta de origem.
 *  dest - conta de destino.
 *  valor - quantia a ser transferida.
 *
 *  return 'true' se a transferência foi realizada ou 
 * 		   'false', caso contrário.
 *
 */
bool transferir (Conta ori, Conta &dest, float valor) {
	
	return false;

}

/* OBS.: Idealmente, esta e as outras operações deveriam ter 
 * verificações que atestassem que os dados foram fornecidos 
 * corretamente (não estão vazios ou fora do padrão).
 */
Cliente cadastrar_cliente (string cpf, string nome,
						   string dt_nasc, string dt_cad, float rendab) {
	Cliente cl;

	cl.cpf = cpf;
	cl.nome = nome;
	cl.data_nasc = dt_nasc;
	cl.data_cadastro = dt_cad;
	cl.renda_bruta = rendab;

	//conta corrente
	Conta cc;

	int num = 0;

	//Cálculo do número da conta a partir do cpf
	stringstream (cpf) >> num;
    num = (num / 2) * 10 + 1;

    cc.numero = num;
	cc.saldo = 0.0;

	Conta cp;
	//mesmo número da conta corrente, pois neste caso, a conta
	//poupança é vinculada à conta corrente do cliente.
	cp.numero = num;
	cp.saldo = 0.0;

	cl.corrente = cc;
	cl.poupanca = cp;

	return cl;
}

/** FAZER */
bool autorizar_emprestimo (Cliente cl, float valor) {
	//Autorizado se valor <= 30% da renda bruta
	
	return false;
}

/** FAZER */
void realizar_emprestimo (Cliente &cl, float valor) {
	
}

/** FAZER */
bool autorizar_financiamento (Cliente cl, float valor) {
	//Valor deve ser menor ou igual que 10 vezes a renda bruta
	
	return false;
}

/** FAZER */
void realizar_financiamento (Cliente &cl, float valor) {
	
}