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) {
}
