Buscar

Classes Conta, Cliente e Banco. Simulacao de criacao de conta bancaria utilizando classes.

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(); 
 }
}

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais