Baixe o app para aproveitar ainda mais
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(); } }
Compartilhar