Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package ads2017.pkg1;
import static ads2017.pkg1.Lista1.input;//importa variavel input da classe Lista1 para n ter q declarar um novo Scanner
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
/**
*
* @author Jerry Junior
*/
public class Banco {
//menu contaCorrente
/**
*
* @throws IOException
*/
private static final Random random = new Random();
static Cliente clientes_aux;//
public static List<Cliente> listClientes = new ArrayList<Cliente>();//lista de clientes
public static List<Conta> listContas = new ArrayList<Conta>();//lista de contas associadas a clientes;
public static void contaCorrente() throws IOException {
int opc = 1;
while(opc > 0){
System.out.println("1 - Criar conta >>>");
System.out.println("2 - Ver saldo >>>");
System.out.println("3 - Sacar >>>");
System.out.println("4 - Depositar >>>");
System.out.println("5 - Transferir >>>");
System.out.println("6 - Ver dados >>> ");
System.out.println("7 - Ver clientes >>> ");
System.out.println("8 - Extrato >>> ");
System.out.println("0 - Sair >>>");
opc = input.nextInt();
switch(opc){
case 0: break;
case 1:
criaCC();
break;
case 2:
verSaldo();
break;
case 3:
sacar();
break;
case 4:
depositar();
break;
case 5:
transfere();
break;
case 6:
verDados();
break;
case 7:
verClientes();
break;
case 8:
verExtrato();
break;
}
}
}
private static void criaCC() throws IOException {
int cpf;
Cliente clientes = null; //cria variavel clientes do tipo Cliente
Conta contas = null; //cria variavel contas do tipo Conta
System.out.print("Digite CPF: ");
cpf = input.nextInt();
if(listClientes.isEmpty()){//verifica se listCliente esta vazia
cadastraDados(clientes, contas, cpf);
} else if(!verifCPF(cpf)) {//verifica se cpf diigitado esta contido na listClientes
cadastraDados(clientes, contas, cpf);//chama funcao cadastraDados enviando as variaveis clientes contas e cpf;
} else System.out.println("CPF ja cadastrado.");
System.out.println("Press Enter to continue...");
System.in.read();
//System.out.print(listContas.get(0).getTitular()); // debug para ver se conta esta referenciando seu titular
}
private static void cadastraDados(Cliente clientes, Conta contas, int cpf){
String nome;
int cc, ag;
//clientes.setCod(Lista1.cod);
//contas.setCod(Lista1.cod);
//clientes.setCPF(cpf);
//contas.setCPF(clientes.getCPF());
System.out.print("Digite nome: ");
nome = input.next();
//clientes.setName(nome);
System.out.print("Digite agencia: ");
ag = input.nextInt();
//contas.setAg(ag);
//System.out.print("Digita a conta: ");
cc = 1000 + random.nextInt(9999);
while(verifCC(cc))
cc = 1000 + random.nextInt(9999);
System.out.println("Número da sua conta corrente > " + cc);
//cc = input.nextInt();
//contas.setCC(cc);
clientes = new Cliente(cpf,nome);//criando novo cliente chamando o construtor da classe Cliente;
contas = new Conta(ag,cc,cpf); //criando nova conta chamando o construtor da classe Conta;
System.out.println("Inicialmente a conta terá R$ 500,00 para movimentações futuras.");
contas.setSaldo(500); //inicia o saldo da conta criada no valor de 500 reais;
contas.setTitular(clientes.getName());//atribuindo titular da conta na variavel titular da classe Conta;
clientes.setCC(contas);
clientes.setCod();
contas.setCod();
//clientes.setCC(contas);
//contas.setTitular(clientes.getName());
//contas.setCPF(clientes.getCPF());
listClientes.add(clientes); //inserindo novo cliente na lista de clientes;
listContas.add(contas);//inserindo nova conta na lista de contas;
clientes_aux = clientes;//guarda informacoes do cliente anterior;
}
private static void verClientes() throws IOException{
for (Cliente c : listClientes) {//laço para percorrer a listClientes e imprimir todos;
System.out.println("#############################");
System.out.println("# CPF: " + c.getCPF());
System.out.println("# Nome: " + c.getName());
System.out.println("# Ag: " + c.getCC().getAg());
System.out.println("# CC: " + c.getCC().getCC());
System.out.println("# Saldo: " + c.getCC().getSaldo());
System.out.println("#############################");
}
//Metodo abaixo avançado, nem eu entendi completo ainda kkkkkk
/*listClientes.stream().map((c) -> {
System.out.println("#############################");
return c;
}).map((c) -> {
System.out.println("# CPF: " + c.getCPF());
return c;
}).map((c) -> {
System.out.println("# Nome: " + c.getName());
return c;
}).map((c) -> {
System.out.println("# Ag: " + c.getCC().getAg());
return c;
}).map((c) -> {
System.out.println("# CC: " + c.getCC().getCC());
return c;
}).map((c) -> {
System.out.println("# Saldo: " + c.getCC().getSaldo());
return c;
}).forEachOrdered((_item) -> {
System.out.println("#############################");
});*/
System.out.println("Press Enter to continue...");
System.in.read();
}
private static void verSaldo() throws IOException{
int cpf;
System.out.print("Insira o CPF do titular >>> ");
cpf = input.nextInt();
if(verifCPF(cpf)){ //verifica se cpf esta cadastrado na listClientes
listClientes.stream().filter((c) -> (c.getCPF() == cpf)).forEachOrdered((c) -> {
System.out.println("Saldo >>> " + c.getCC().getSaldo());
}); //laço para percorrer a listClientes verificando se cpf digitado é igual a algum cpf da listClientes
//caso ache, para o laço e imprime o saldo da conta que a variavel 'c' esta referenciando
}
else System.out.println("CPF nao cadastrado.");
System.out.println("Press Enter to continue...");
System.in.read();
}
private static boolean verifCPF(int cpf){//verifica se cpf ja esta cadastrado
if(cpf <= 0)
return false;
boolean existe = false;
for (Cliente cliente : listClientes) {//percorre q lista para saber se cpf esta contido na listClientes
if(cliente.getCPF() == cpf){
existe = true;
}
}
return existe;
}
private static boolean verifCC(int cc){//verifica
se conta corrente gerada ja existe
//if(cc <= 0)
//return false;
//boolean existe = false;
for (Cliente cliente : listClientes) {//percorre q lista para saber se cpf esta contido na listClientes
if(cliente.getCC().getCC() == cc){
return true;
}
}
return false;
}
private static int insereCPF(){
//int cpf;
System.out.print("Insira o CPF do titular >>> ");
return input.nextInt();
}
private static void verExtrato() throws IOException{
int cpf;
cpf = insereCPF();
if(verifCPF(cpf)){//verifica se cpf esta cadastrado
listClientes.stream().filter((c) -> c.getCPF() == cpf).forEachOrdered((c) -> {
System.out.println(c.getCC().Extrato());
}); /*laço para percorrer a listClientes verificando se cpf digitado é igual a algum cpf da listClientes
/caso ache, para o laço e chama o metodo Sacar(valor) da classe Conta via o metodo getCC() da classe Cliente
Porque todo cliente está vinculado a uma conta, entao se eu acho o cliente pelo cpf, eu tenho acesso
a todos os dados e metodos da sua conta*/
}
else System.out.println("CPF nao cadastrado. ");
System.out.println("Press Enter to continue...");
System.in.read();
}
private static void sacar() throws IOException{
int cpf;
cpf = insereCPF();
if(verifCPF(cpf)){//verifica se cpf esta cadastrado
System.out.print("Valor do saque >>> ");
double valor = input.nextDouble();
listClientes.stream().filter((c) -> (c.getCPF() == cpf)).forEachOrdered((c) -> {
if(c.getCC().qtdSaque() < 5){
System.out.println(c.getCC().Sacar(valor));
System.out.println("Saldo >>> " + c.getCC().getSaldo());
}
else System.out.println("Limite de saque diario;");
}); /*laço para percorrer a listClientes verificando se cpf digitado é igual a algum cpf da listClientes
/caso ache, para o laço e chama o metodo Sacar(valor) da classe Conta via o metodo getCC() da classe Cliente
Porque todo cliente está vinculado a uma conta, entao se eu acho o cliente pelo cpf, eu tenho acesso
a todos os dados e metodos da sua conta*/
}
else System.out.println("CPF nao cadastrado. ");
System.out.println("Press Enter to continue...");
System.in.read();
}
private static void depositar() throws IOException{
int cpf;
cpf = insereCPF();
if(verifCPF(cpf)){
System.out.print("Valor do deposito >>> ");
double valor = input.nextDouble();
listClientes.stream().filter((c) -> c.getCPF() == cpf).forEachOrdered((c) -> {
c.getCC().Deposita(valor);
//c.getCC().setDep();
System.out.println("Deposito efetuado com sucesso na conta do Sr(a) " + c.getName() + ".");
System.out.println("Saldo da conta destino: " + c.getCC().getSaldo());
}); /*laço para percorrer a listClientes verificando se cpf digitado é igual a algum cpf da listClientes
/caso ache, para o laço e chama o metodo Deposita(valor) da classe Conta via o metodo getCC() da classe Cliente
Porque todo cliente está vinculado a uma conta, entao se eu acho o cliente pelo cpf, eu tenho acesso
a todos os dados e metodos da sua conta*/
}
else System.out.println("CPF nao cadastrado. ");
System.out.println("Press Enter to continue...");
System.in.read();
}
private static void transfere() throws IOException{
int cpf, cpf_aux;
Conta cc1 = null, cc2 = null;
System.out.println("Insira dois CPF cadastrados, so podera prosseguir apos inserir dados corretos. \nPara cancelar digite cpf's = 0");
do{
System.out.print("Insira o CPF do titular >>> ");
cpf = input.nextInt();
System.out.print("Insira o CPF do favorecido >>> ");
cpf_aux = input.nextInt();
}while((!verifCPF(cpf) || !verifCPF(cpf_aux)) && (cpf != 0 || cpf_aux != 0));
if(cpf > 0 || cpf_aux > 0){
System.out.print("Valor da transferencia >>> ");
double valor = input.nextDouble();
for(Cliente c : listClientes){// Percorre a listClientes ate achar 2 clientes, do remetente e destinataria
int aux = c.getCPF(); //atribui o cpf da conta 'c' pelo metodo ogetCPF()
if(aux == cpf_aux)//verifica se aux é igual a cpf_aux do destinatario
cc1 = c.getCC();//favorecido, atribui a conta a variavel cc1 do tipo Conta
else if (aux == cpf)//caseo contrario, verifica se aux é igual a cpf do remetente
cc2 = c.getCC();//remetente, atribui a conta a variavel cc2 do tipo Conta
}/*
for(int i = 0 ; i < listClientes.size(); i++){
if (listClientes.get(i).getCPF() == cpf_aux)
cc1 = listClientes.get(i).getCC();//favorecido
else if (listClientes.get(i).getCPF() == cpf)
cc2 = listClientes.get(i).getCC();//remetente
}*/
System.out.println("Destinatario Sr(a) " + cc2.getTitular());//imprime o nome do titular da conta cc2, achada no laço for
System.out.println("Favorecido Sr(a) " + cc1.getTitular());//imprime o nome do titular da conta cc1, achada no laço for
if(!cc2.Transfere(cc1, valor)){//chama o metodo Transfere da classe Conta, cc2 transfere para cc1
System.out.println("Saldo insuficiente na conta do remetente :/ ");
}
else{
System.out.println("Transferencia efetuado com sucesso para o Sr(a) " + cc1.getTitular());
//cc2.setTrans();
}
}
System.out.println("Press Enter to continue...");
System.in.read();
}
private static void verDados() throws IOException{
int cpf;
cpf = insereCPF();
if(verifCPF(cpf)){
listClientes.stream().filter((c) -> c.getCPF() == cpf).forEachOrdered((c) -> {
System.out.println("#############################");
System.out.println("# Cod: " + c.getCC().getCod());
System.out.println("# Nome: " + c.getName());
System.out.println("# Ag: " + c.getCC().getAg());
System.out.println("# CC: " + c.getCC().getCC());
System.out.println("# Saldo: " + c.getCC().getSaldo());
System.out.println("#############################");
}); /*laço para percorrer a listClientes verificando se cpf digitado é igual a algum cpf da listClientes
/caso ache, para o laço e imprime todos os dados da classe Conta via o metodo getCC() da classe Cliente
Porque todo cliente está vinculado a uma conta, entao se eu acho o cliente pelo cpf, eu tenho acesso
a todos os dados e metodos da sua conta e tamber imprime o metodo getName da classe Cliente */
}
else System.out.println("CPF nao cadastrado. ");
System.out.println("Press Enter to continue...");
System.in.read();
}
}