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