Example #1
0
        public void trasferirAplicacoes(FundoInvestimento fi, int codigoC)
        {
            // Verificando se a moeda do fundo passado como parâmetro
            // é igual ao do fundo que está recebendo
            if (fi.getMoeda() == this.getMoeda())
            {
                foreach (Aplicacao apli in fi.aplicacoes)
                {
                    if (fi.getMoeda().Equals("Real") && apli.getCodCliente() == codigoC)
                    {
                        double aux = apli.getValor();
                        apli.setValor(aux - 10);
                        this.novaAplicacao(apli);
                    }
                    else if (fi.getMoeda().Equals("Dolar") && apli.getCodCliente() == codigoC)
                    {
                        this.novaAplicacao(apli);
                    }
                }

                //Limpando a lista de aplicações do FI passado por parâmetro
                fi.aplicacoes.Clear();
            }
        }
        public static void lerArquivo(List<Cliente> clientes)
        {
            try
            {
                if (File.Exists("../../clientes.txt"))
                {
                    Stream arqDados = File.Open("../../clientes.txt", FileMode.Open);
                    StreamReader leitor = new StreamReader(arqDados);
                    String linha = leitor.ReadLine();
                    String[] separador;
                    Cliente clientePadrao;
                    FundoInvestimento novoFundo = null;

                    List<Aplicacao> aplicacoes = new List<Aplicacao>();
                    List<FundoInvestimento> fundoInvestimento = new List<FundoInvestimento>();

                    Real real = new Real(2, "real", "R$");
                    Dolar dolar = new Dolar(3, "dolar", "U$");

                    Aplicacao.lerArquivo(aplicacoes);
                    FundoInvestimento.lerArquivo(fundoInvestimento, dolar, real);

                    bool verifica = false;

                    while (linha != null)
                    {
                        separador = linha.Split(';');
                        clientePadrao = new Cliente(clientes.Count(), separador[1], separador[2], separador[3], Convert.ToDouble(separador[4]), separador[5],DateTime.Parse(separador[6]));

                        for (int i=0;i< Aplicacao.buscaAplicacaoCliente(aplicacoes, clientePadrao.codCliente).Count();i++)
                        {
                            for (int j=0;j<fundoInvestimento.Count();j++)
                            {
                                if (Aplicacao.buscaAplicacaoCliente(aplicacoes, clientePadrao.codCliente)[i].getCodInvestimento().Equals(fundoInvestimento[j].getCodInvestimento()))
                                {
                                    if (fundoInvestimento[j].getMoeda().getNomeMoeda().Equals("real")){
                                        novoFundo = new FundoInvestimento(fundoInvestimento[j].getCodInvestimento() - 1, fundoInvestimento[j].getNome(), real);
                                    }
                                    else
                                    {
                                        novoFundo = new FundoInvestimento(fundoInvestimento[j].getCodInvestimento() - 1, fundoInvestimento[j].getNome(), dolar);
                                    }
                                }

                                for(int k=0;k<clientePadrao.fundoInvestimento.Count();k++)
                                {
                                    if (clientePadrao.fundoInvestimento[k].getCodInvestimento().Equals(Aplicacao.buscaAplicacaoCliente(aplicacoes, clientePadrao.codCliente)[i].getCodInvestimento()))
                                    {
                                        verifica = true;
                                    }

                                }
                                if (verifica)
                                {
                                    //dando problema aqui
                                    FundoInvestimento.buscaFundo(clientePadrao.fundoInvestimento, Aplicacao.buscaAplicacaoCliente(aplicacoes, clientePadrao.codCliente)[i].getCodInvestimento()).buscaAplicacao().Add(Aplicacao.buscaAplicacaoCliente(aplicacoes, clientePadrao.codCliente)[j]);
                                }
                                else
                                {
                                    novoFundo.buscaAplicacao().Add(Aplicacao.buscaAplicacaoCliente(aplicacoes, clientePadrao.codCliente)[i]);
                                    clientePadrao.fundoInvestimento.Add(novoFundo);
                                }

                            }
                        }
                        linha = leitor.ReadLine();
                        clientes.Add(clientePadrao);
                        verifica = false;
                    }

                    leitor.Close();
                    arqDados.Close();
                }
            }catch(IOException io){
                Console.WriteLine("\nOcorreu um erro: {0}", io);
            }
        }
        static void Main(string[] args)
        {
            int opcao = 0;
            List<Cliente> clientes = new List<Cliente>(100);
            Random randNum = new Random();
            int codCliente = 1;

            //criando os fundos de investimento
            FundoInvestimento fundo1 = new FundoInvestimento();
            fundo1.setNome("Bolsa de Valores de São Paulo");
            fundo1.setCodigo(1);
            fundo1.setSigla("BOVESPA");
            fundo1.setMoeda("Real");

            FundoInvestimento fundo2 = new FundoInvestimento();
            fundo2.setNome("Bolsa de Mercadorias e Futuros");
            fundo2.setCodigo(2);
            fundo2.setSigla("BM&F");
            fundo2.setMoeda("Real");

            FundoInvestimento fundo3 = new FundoInvestimento();
            fundo3.setNome("NASDAQ Stock Market");
            fundo3.setCodigo(3);
            fundo3.setSigla("NASDAQ");
            fundo3.setMoeda("Dolar");

            FundoInvestimento fundo4 = new FundoInvestimento();
            fundo4.setNome("Bolsa de Valores de Nova York");
            fundo4.setCodigo(4);
            fundo4.setSigla("NYSE");
            fundo4.setMoeda("Dolar");

            while (opcao >= 0)
            {
                Console.WriteLine("----------------------------------------------------------------------");
                Console.WriteLine("1 - Cadastrar Cliente");
                Console.WriteLine("2 - Fazer Aplicaçao");
                Console.WriteLine("3 - Fazer Resgate");
                Console.WriteLine("4 - Trasferir aplicãções de um fundo para outro");
                Console.WriteLine("5 - Gerar relatório mensal de aplicações (Empresa)");
                Console.WriteLine("6 - Gerar relatório de aplicações (Cliente)");
                Console.WriteLine("7 - Aplicar Remuneração");
                Console.WriteLine("-1 - Sair");
                Console.WriteLine("----------------------------------------------------------------------");
                Console.Write("Digite a opção desejada: ");
                opcao = int.Parse(Console.ReadLine());
                Console.WriteLine();

                // OPÇÃO 1

                if (opcao == 1)
                {
                    //criar um cliente
                    Console.WriteLine("1 - Pessoa Física, 2 - Pessoa Jurídica");
                    Console.Write("Digite a opção desejada: ");
                    int tipoCliente = int.Parse(Console.ReadLine());
                    if (tipoCliente == 1)
                    {
                        Cliente_Fisico cli = new Cliente_Fisico();
                        cli.setCodigo(codCliente++);
                        Console.Write("Nome do cliente: ");
                        cli.setNome(Console.ReadLine());
                        Console.Write("CPF do cliente: ");
                        cli.setCPF(Console.ReadLine());
                        Console.Write("Número do cliente: ");
                        cli.setNumero(Console.ReadLine());
                        Console.Write("Endereço do cliente: ");
                        cli.setEndereco(Console.ReadLine());
                        clientes.Add(cli);
                        Console.WriteLine("Código do cliente: {0} ", cli.getCodigo());
                    }
                    else if (tipoCliente == 2)
                    {
                        Cliente_Juridico cli = new Cliente_Juridico();
                        cli.setCodigo(randNum.Next(100));
                        Console.WriteLine("Nome da Empresa: ");
                        cli.setNome(Console.ReadLine());
                        Console.WriteLine("CPF do cliente: ");
                        cli.setCNPJ(Console.ReadLine());
                        Console.WriteLine("Número do cliente: ");
                        cli.setNumero(Console.ReadLine());
                        Console.WriteLine("Endereço do cliente: ");
                        cli.setEndereco(Console.ReadLine());
                        clientes.Add(cli);
                    }
                    else
                    {
                        Console.WriteLine("Opção Inválida");
                    }

                }

                // OPÇÃO 2

                if (opcao == 2)
                {
                    //fazer uma aplicacao
                    Aplicacao apl1 = new Aplicacao();
                    Console.WriteLine("Código do cliente: ");
                    apl1.setCodCliente(int.Parse(Console.ReadLine()));
                    Console.WriteLine("Valor da Aplicação: ");
                    apl1.setValor(double.Parse(Console.ReadLine()));
                    Console.WriteLine("Informe a data de hoje (DIA/MÊS/ANO): ");
                    apl1.setDataAplicacao(Convert.ToDateTime(Console.ReadLine()));

                    Console.Clear();

                    Console.WriteLine("Informe qual Fundo de investimento você deseja inserir essa aplicação: ");
                    Console.WriteLine("1 - BOVESPA, 2 - BM&F, 3 - NASDAQ, 4 - NYSE");
                    int fundoE = int.Parse(Console.ReadLine());

                    if (fundoE == 1)
                    {
                        fundo1.novaAplicacao(apl1);
                    }
                    else if (fundoE == 2)
                    {
                        fundo2.novaAplicacao(apl1);
                    }
                    else if (fundoE == 3)
                    {
                        fundo3.novaAplicacao(apl1);
                    }
                    else if (fundoE == 4)
                    {
                        fundo4.novaAplicacao(apl1);
                    }
                    else
                    {
                        Console.WriteLine("Opção inválida!");
                    }

                    Console.Clear();
                }

                // OPÇÃO 3

                if (opcao == 3)
                {
                    //fazer o resgate
                    Console.WriteLine("Valor do resgate: ");
                    float valor = float.Parse(Console.ReadLine());
                    Console.WriteLine("Código do cliente: ");
                    int cod = int.Parse(Console.ReadLine());
                    Console.WriteLine();
                    Console.WriteLine("Informe qual Fundo de investimento você deseja fazer o resgate: ");
                    Console.WriteLine("1 - BOVESPA, 2 - BM&F, 3 - NASDAQ, 4 - NYSE");
                    int fundoE = int.Parse(Console.ReadLine());

                    if (fundoE == 1)
                    {
                        fundo1.resgate(valor, cod);
                    }
                    else if (fundoE == 2)
                    {
                        fundo2.resgate(valor, cod);
                    }
                    else if (fundoE == 3)
                    {
                        fundo3.resgate(valor, cod);
                    }
                    else if (fundoE == 4)
                    {
                        fundo4.resgate(valor, cod);
                    }
                    else
                    {
                        Console.WriteLine("Opção inválida!");
                    }

                    Console.Clear();
                }

                // OPÇÃO 4

                if (opcao == 4)
                {
                    Console.WriteLine("Informe qual Fundo de investimento vai receber a(s) aplicação(ões): ");
                    Console.WriteLine("1 - BOVESPA, 2 - BM&F, 3 - NASDAQ, 4 - NYSE");
                    Console.Write("Digite a opção desejada: ");
                    int fundoA = int.Parse(Console.ReadLine());
                    Console.Clear();

                    if (fundoA == 1)
                    {
                        Console.WriteLine("Informe qual Fundo de investimento vai perder a(s) aplicação(ões): ");
                        Console.WriteLine("2 - BM&F, 3 - NASDAQ, 4 - NYSE");
                        Console.Write("Digite a opção desejada: ");
                        int fundoB = int.Parse(Console.ReadLine());
                        Console.Clear();

                        if (fundoB == 2)
                        {
                            Console.Write("Código do cliente: ");
                            int cod = int.Parse(Console.ReadLine());
                            fundo1.trasferirAplicacoes(fundo2, cod);
                        }
                        else if (fundoB == 3)
                        {
                            Console.Write("Código do cliente: ");
                            int cod = int.Parse(Console.ReadLine());
                            fundo1.trasferirAplicacoes(fundo3, cod);
                        }
                        else if (fundoB == 4)
                        {
                            Console.Write("Código do cliente: ");
                            int cod = int.Parse(Console.ReadLine());
                            fundo1.trasferirAplicacoes(fundo4, cod);
                        }
                        else
                        {
                            Console.WriteLine("Opção inválida!");
                        }

                    }
                    else if (fundoA == 2)
                    {
                        Console.WriteLine("Informe qual Fundo de investimento vai perder a(s) aplicação(ões): ");
                        Console.WriteLine("1 - BOVESPA, 3 - NASDAQ, 4 - NYSE");
                        Console.Write("Digite a opção desejada: ");
                        int fundoB = int.Parse(Console.ReadLine());
                        Console.Clear();

                        if (fundoB == 1)
                        {
                            Console.Write("Código do cliente: ");
                            int cod = int.Parse(Console.ReadLine());
                            fundo2.trasferirAplicacoes(fundo1, cod);
                        }
                        else if (fundoB == 3)
                        {
                            Console.Write("Código do cliente: ");
                            int cod = int.Parse(Console.ReadLine());
                            fundo2.trasferirAplicacoes(fundo3, cod);
                        }
                        else if (fundoB == 4)
                        {
                            Console.Write("Código do cliente: ");
                            int cod = int.Parse(Console.ReadLine());
                            fundo2.trasferirAplicacoes(fundo4, cod);
                        }
                        else
                        {
                            Console.WriteLine("Opção inválida!");
                        }
                    }
                    else if (fundoA == 3)
                    {
                        Console.WriteLine("Informe qual Fundo de investimento vai perder a(s) aplicação(ões): ");
                        Console.WriteLine("1 - BOVESPA, 2 - BM&F, 4 - NYSE");
                        Console.Write("Digite a opção desejada: ");
                        int fundoB = int.Parse(Console.ReadLine());
                        Console.Clear();

                        if (fundoB == 1)
                        {
                            Console.Write("Código do cliente: ");
                            int cod = int.Parse(Console.ReadLine());
                            fundo3.trasferirAplicacoes(fundo1, cod);
                        }
                        else if (fundoB == 2)
                        {
                            Console.Write("Código do cliente: ");
                            int cod = int.Parse(Console.ReadLine());
                            fundo3.trasferirAplicacoes(fundo2, cod);
                        }
                        else if (fundoB == 4)
                        {
                            Console.Write("Código do cliente: ");
                            int cod = int.Parse(Console.ReadLine());
                            fundo3.trasferirAplicacoes(fundo4, cod);
                        }
                        else
                        {
                            Console.WriteLine("Opção inválida!");
                        }
                    }
                    else if (fundoA == 4)
                    {
                        Console.WriteLine("Informe qual Fundo de investimento vai perder a(s) aplicação(ões): ");
                        Console.WriteLine("1 - BOVESPA, 2 - BM&F, 3 - NASDAQ");
                        Console.Write("Digite a opção desejada: ");
                        int fundoB = int.Parse(Console.ReadLine());
                        Console.Clear();

                        if (fundoB == 1)
                        {
                            Console.Write("Código do cliente: ");
                            int cod = int.Parse(Console.ReadLine());
                            fundo4.trasferirAplicacoes(fundo1, cod);
                        }
                        else if (fundoB == 2)
                        {
                            Console.Write("Código do cliente: ");
                            int cod = int.Parse(Console.ReadLine());
                            fundo4.trasferirAplicacoes(fundo2, cod);
                        }
                        else if (fundoB == 3)
                        {
                            Console.Write("Código do cliente: ");
                            int cod = int.Parse(Console.ReadLine());
                            fundo4.trasferirAplicacoes(fundo3, cod);
                        }
                        else
                        {
                            Console.WriteLine("Opção inválida!");
                        }
                    }
                    else
                    {
                        Console.WriteLine("Opção inválida!");
                    }

                    Console.Clear();

                }

                // OPÇÃO 5

                if (opcao == 5)
                {
                    Console.WriteLine("Informe qual Fundo de investimento você deseja gerar o relatório: ");
                    Console.WriteLine("1 - BOVESPA, 2 - BM&F, 3 - NASDAQ, 4 - NYSE");
                    Console.Write("Digite a opção desejada: ");
                    int fundoE = int.Parse(Console.ReadLine());

                    if (fundoE == 1)
                    {
                        fundo1.relatorioAplicacoes();
                    }
                    else if (fundoE == 2)
                    {
                        fundo2.relatorioAplicacoes();
                    }
                    else if (fundoE == 3)
                    {
                        fundo3.relatorioAplicacoes();
                    }
                    else if (fundoE == 4)
                    {
                        fundo4.relatorioAplicacoes();
                    }
                    else
                    {
                        Console.WriteLine("Opção inválida!");
                    }

                    Console.Clear();
                }

                // OPÇÃO 6

                if (opcao == 6)
                {
                    Console.WriteLine("Informe qual Fundo de investimento você deseja gerar o relatório: ");
                    Console.WriteLine("1 - BOVESPA, 2 - BM&F, 3 - NASDAQ, 4 - NYSE");
                    Console.Write("Digite a opção desejada: ");
                    int fundoE = int.Parse(Console.ReadLine());

                    if (fundoE == 1)
                    {
                        Console.WriteLine("Código do cliente: ");
                        int cod = int.Parse(Console.ReadLine());
                        foreach (Cliente c in clientes)
                        {
                            if (c.getCodigo() == cod)
                            {
                                Console.WriteLine("Nome: {0}", c.getNome());
                            }
                        }
                        fundo1.relatorioPorCliente(cod);
                    }
                    else if (fundoE == 2)
                    {
                        Console.WriteLine("Código do cliente: ");
                        int cod = int.Parse(Console.ReadLine());
                        foreach (Cliente c in clientes)
                        {
                            if (c.getCodigo() == cod)
                            {
                                Console.WriteLine("Nome: {0}", c.getNome());
                            }
                        }
                        fundo2.relatorioPorCliente(cod);
                    }
                    else if (fundoE == 3)
                    {
                        Console.WriteLine("Código do cliente: ");
                        int cod = int.Parse(Console.ReadLine());
                        foreach (Cliente c in clientes)
                        {
                            if (c.getCodigo() == cod)
                            {
                                Console.WriteLine("Nome: {0}", c.getNome());
                            }
                        }
                        fundo3.relatorioPorCliente(cod);
                    }
                    else if (fundoE == 4)
                    {
                        Console.WriteLine("Código do cliente: ");
                        int cod = int.Parse(Console.ReadLine());
                        foreach (Cliente c in clientes)
                        {
                            if (c.getCodigo() == cod)
                            {
                                Console.WriteLine("Nome: {0}", c.getNome());
                            }
                        }
                        fundo4.relatorioPorCliente(cod);
                    }
                    else
                    {
                        Console.WriteLine("Opção inválida!");
                    }

                    Console.Clear();
                }

                // OPÇÃO 7

                if (opcao == 7)
                {
                    fundo1.calculaRemuneracao();
                    fundo2.calculaRemuneracao();
                    fundo3.calculaRemuneracao();
                    fundo4.calculaRemuneracao();
                    Console.WriteLine("Remunerações realizadas com sucesso!");

                    Console.Clear();
                }

            }
        }
        public void trasferirAplicacoes(FundoInvestimento fi, int codigoC)
        {
            // Verificando se a moeda do fundo passado como parâmetro
            // é igual ao do fundo que está recebendo
            if (fi.getMoeda() == this.getMoeda())
            {
                foreach (Aplicacao apli in fi.aplicacoes)
                {
                    if (fi.getMoeda().Equals("Real") && apli.getCodCliente() == codigoC)
                    {
                        double aux = apli.getValor();
                        apli.setValor(aux - 10);
                        this.novaAplicacao(apli);
                    }
                    else if (fi.getMoeda().Equals("Dolar") && apli.getCodCliente() == codigoC)
                    {
                        this.novaAplicacao(apli);
                    }
                }

                //Limpando a lista de aplicações do FI passado por parâmetro
                fi.aplicacoes.Clear();
            }
        }
 public Resgate(FundoInvestimento fundoInvestimento, Aplicacao aplicacao)
 {
     this.fundoInvestimento = fundoInvestimento;
     this.aplicacao = aplicacao;
     this.dataResgate = DateTime.Now;
 }
        public static void lerArquivo(List<FundoInvestimento> fundoInvestimento, Moeda dolar, Moeda real)
        {
            try
            {
                if (File.Exists("../../fundos.txt"))
                {
                    Stream arqDados = File.Open("../../fundos.txt", FileMode.Open);
                    StreamReader leitor = new StreamReader(arqDados);
                    String linha = leitor.ReadLine();
                    String[] separador;
                    FundoInvestimento fundoPadrao;

                    while (linha != null)
                    {
                        separador = linha.Split(';');
                        if (separador[2] == "real") {
                            fundoPadrao = new FundoInvestimento(fundoInvestimento.Count(), separador[1], real);
                        }
                        else
                        {
                            fundoPadrao = new FundoInvestimento(fundoInvestimento.Count(), separador[1], dolar);
                        }
                        linha = leitor.ReadLine();
                        fundoInvestimento.Add(fundoPadrao);
                    }

                    leitor.Close();
                    arqDados.Close();
                }
            }
            catch (IOException io)
            {
                Console.WriteLine("\nOcorreu um erro: {0}", io);
            }
        }
Example #7
0
        static void Main(string[] args)
        {
            int            opcao      = 0;
            List <Cliente> clientes   = new List <Cliente>(100);
            Random         randNum    = new Random();
            int            codCliente = 1;

            //criando os fundos de investimento
            FundoInvestimento fundo1 = new FundoInvestimento();

            fundo1.setNome("Bolsa de Valores de São Paulo");
            fundo1.setCodigo(1);
            fundo1.setSigla("BOVESPA");
            fundo1.setMoeda("Real");

            FundoInvestimento fundo2 = new FundoInvestimento();

            fundo2.setNome("Bolsa de Mercadorias e Futuros");
            fundo2.setCodigo(2);
            fundo2.setSigla("BM&F");
            fundo2.setMoeda("Real");

            FundoInvestimento fundo3 = new FundoInvestimento();

            fundo3.setNome("NASDAQ Stock Market");
            fundo3.setCodigo(3);
            fundo3.setSigla("NASDAQ");
            fundo3.setMoeda("Dolar");

            FundoInvestimento fundo4 = new FundoInvestimento();

            fundo4.setNome("Bolsa de Valores de Nova York");
            fundo4.setCodigo(4);
            fundo4.setSigla("NYSE");
            fundo4.setMoeda("Dolar");

            while (opcao >= 0)
            {
                Console.WriteLine("----------------------------------------------------------------------");
                Console.WriteLine("1 - Cadastrar Cliente");
                Console.WriteLine("2 - Fazer Aplicaçao");
                Console.WriteLine("3 - Fazer Resgate");
                Console.WriteLine("4 - Trasferir aplicãções de um fundo para outro");
                Console.WriteLine("5 - Gerar relatório mensal de aplicações (Empresa)");
                Console.WriteLine("6 - Gerar relatório de aplicações (Cliente)");
                Console.WriteLine("7 - Aplicar Remuneração");
                Console.WriteLine("-1 - Sair");
                Console.WriteLine("----------------------------------------------------------------------");
                Console.Write("Digite a opção desejada: ");
                opcao = int.Parse(Console.ReadLine());
                Console.WriteLine();

                // OPÇÃO 1

                if (opcao == 1)
                {
                    //criar um cliente
                    Console.WriteLine("1 - Pessoa Física, 2 - Pessoa Jurídica");
                    Console.Write("Digite a opção desejada: ");
                    int tipoCliente = int.Parse(Console.ReadLine());
                    if (tipoCliente == 1)
                    {
                        Cliente_Fisico cli = new Cliente_Fisico();
                        cli.setCodigo(codCliente++);
                        Console.Write("Nome do cliente: ");
                        cli.setNome(Console.ReadLine());
                        Console.Write("CPF do cliente: ");
                        cli.setCPF(Console.ReadLine());
                        Console.Write("Número do cliente: ");
                        cli.setNumero(Console.ReadLine());
                        Console.Write("Endereço do cliente: ");
                        cli.setEndereco(Console.ReadLine());
                        clientes.Add(cli);
                        Console.WriteLine("Código do cliente: {0} ", cli.getCodigo());
                    }
                    else if (tipoCliente == 2)
                    {
                        Cliente_Juridico cli = new Cliente_Juridico();
                        cli.setCodigo(randNum.Next(100));
                        Console.WriteLine("Nome da Empresa: ");
                        cli.setNome(Console.ReadLine());
                        Console.WriteLine("CPF do cliente: ");
                        cli.setCNPJ(Console.ReadLine());
                        Console.WriteLine("Número do cliente: ");
                        cli.setNumero(Console.ReadLine());
                        Console.WriteLine("Endereço do cliente: ");
                        cli.setEndereco(Console.ReadLine());
                        clientes.Add(cli);
                    }
                    else
                    {
                        Console.WriteLine("Opção Inválida");
                    }
                }

                // OPÇÃO 2

                if (opcao == 2)
                {
                    //fazer uma aplicacao
                    Aplicacao apl1 = new Aplicacao();
                    Console.WriteLine("Código do cliente: ");
                    apl1.setCodCliente(int.Parse(Console.ReadLine()));
                    Console.WriteLine("Valor da Aplicação: ");
                    apl1.setValor(double.Parse(Console.ReadLine()));
                    Console.WriteLine("Informe a data de hoje (DIA/MÊS/ANO): ");
                    apl1.setDataAplicacao(Convert.ToDateTime(Console.ReadLine()));

                    Console.Clear();

                    Console.WriteLine("Informe qual Fundo de investimento você deseja inserir essa aplicação: ");
                    Console.WriteLine("1 - BOVESPA, 2 - BM&F, 3 - NASDAQ, 4 - NYSE");
                    int fundoE = int.Parse(Console.ReadLine());

                    if (fundoE == 1)
                    {
                        fundo1.novaAplicacao(apl1);
                    }
                    else if (fundoE == 2)
                    {
                        fundo2.novaAplicacao(apl1);
                    }
                    else if (fundoE == 3)
                    {
                        fundo3.novaAplicacao(apl1);
                    }
                    else if (fundoE == 4)
                    {
                        fundo4.novaAplicacao(apl1);
                    }
                    else
                    {
                        Console.WriteLine("Opção inválida!");
                    }

                    Console.Clear();
                }

                // OPÇÃO 3

                if (opcao == 3)
                {
                    //fazer o resgate
                    Console.WriteLine("Valor do resgate: ");
                    float valor = float.Parse(Console.ReadLine());
                    Console.WriteLine("Código do cliente: ");
                    int cod = int.Parse(Console.ReadLine());
                    Console.WriteLine();
                    Console.WriteLine("Informe qual Fundo de investimento você deseja fazer o resgate: ");
                    Console.WriteLine("1 - BOVESPA, 2 - BM&F, 3 - NASDAQ, 4 - NYSE");
                    int fundoE = int.Parse(Console.ReadLine());

                    if (fundoE == 1)
                    {
                        fundo1.resgate(valor, cod);
                    }
                    else if (fundoE == 2)
                    {
                        fundo2.resgate(valor, cod);
                    }
                    else if (fundoE == 3)
                    {
                        fundo3.resgate(valor, cod);
                    }
                    else if (fundoE == 4)
                    {
                        fundo4.resgate(valor, cod);
                    }
                    else
                    {
                        Console.WriteLine("Opção inválida!");
                    }

                    Console.Clear();
                }

                // OPÇÃO 4

                if (opcao == 4)
                {
                    Console.WriteLine("Informe qual Fundo de investimento vai receber a(s) aplicação(ões): ");
                    Console.WriteLine("1 - BOVESPA, 2 - BM&F, 3 - NASDAQ, 4 - NYSE");
                    Console.Write("Digite a opção desejada: ");
                    int fundoA = int.Parse(Console.ReadLine());
                    Console.Clear();

                    if (fundoA == 1)
                    {
                        Console.WriteLine("Informe qual Fundo de investimento vai perder a(s) aplicação(ões): ");
                        Console.WriteLine("2 - BM&F, 3 - NASDAQ, 4 - NYSE");
                        Console.Write("Digite a opção desejada: ");
                        int fundoB = int.Parse(Console.ReadLine());
                        Console.Clear();

                        if (fundoB == 2)
                        {
                            Console.Write("Código do cliente: ");
                            int cod = int.Parse(Console.ReadLine());
                            fundo1.trasferirAplicacoes(fundo2, cod);
                        }
                        else if (fundoB == 3)
                        {
                            Console.Write("Código do cliente: ");
                            int cod = int.Parse(Console.ReadLine());
                            fundo1.trasferirAplicacoes(fundo3, cod);
                        }
                        else if (fundoB == 4)
                        {
                            Console.Write("Código do cliente: ");
                            int cod = int.Parse(Console.ReadLine());
                            fundo1.trasferirAplicacoes(fundo4, cod);
                        }
                        else
                        {
                            Console.WriteLine("Opção inválida!");
                        }
                    }
                    else if (fundoA == 2)
                    {
                        Console.WriteLine("Informe qual Fundo de investimento vai perder a(s) aplicação(ões): ");
                        Console.WriteLine("1 - BOVESPA, 3 - NASDAQ, 4 - NYSE");
                        Console.Write("Digite a opção desejada: ");
                        int fundoB = int.Parse(Console.ReadLine());
                        Console.Clear();

                        if (fundoB == 1)
                        {
                            Console.Write("Código do cliente: ");
                            int cod = int.Parse(Console.ReadLine());
                            fundo2.trasferirAplicacoes(fundo1, cod);
                        }
                        else if (fundoB == 3)
                        {
                            Console.Write("Código do cliente: ");
                            int cod = int.Parse(Console.ReadLine());
                            fundo2.trasferirAplicacoes(fundo3, cod);
                        }
                        else if (fundoB == 4)
                        {
                            Console.Write("Código do cliente: ");
                            int cod = int.Parse(Console.ReadLine());
                            fundo2.trasferirAplicacoes(fundo4, cod);
                        }
                        else
                        {
                            Console.WriteLine("Opção inválida!");
                        }
                    }
                    else if (fundoA == 3)
                    {
                        Console.WriteLine("Informe qual Fundo de investimento vai perder a(s) aplicação(ões): ");
                        Console.WriteLine("1 - BOVESPA, 2 - BM&F, 4 - NYSE");
                        Console.Write("Digite a opção desejada: ");
                        int fundoB = int.Parse(Console.ReadLine());
                        Console.Clear();

                        if (fundoB == 1)
                        {
                            Console.Write("Código do cliente: ");
                            int cod = int.Parse(Console.ReadLine());
                            fundo3.trasferirAplicacoes(fundo1, cod);
                        }
                        else if (fundoB == 2)
                        {
                            Console.Write("Código do cliente: ");
                            int cod = int.Parse(Console.ReadLine());
                            fundo3.trasferirAplicacoes(fundo2, cod);
                        }
                        else if (fundoB == 4)
                        {
                            Console.Write("Código do cliente: ");
                            int cod = int.Parse(Console.ReadLine());
                            fundo3.trasferirAplicacoes(fundo4, cod);
                        }
                        else
                        {
                            Console.WriteLine("Opção inválida!");
                        }
                    }
                    else if (fundoA == 4)
                    {
                        Console.WriteLine("Informe qual Fundo de investimento vai perder a(s) aplicação(ões): ");
                        Console.WriteLine("1 - BOVESPA, 2 - BM&F, 3 - NASDAQ");
                        Console.Write("Digite a opção desejada: ");
                        int fundoB = int.Parse(Console.ReadLine());
                        Console.Clear();

                        if (fundoB == 1)
                        {
                            Console.Write("Código do cliente: ");
                            int cod = int.Parse(Console.ReadLine());
                            fundo4.trasferirAplicacoes(fundo1, cod);
                        }
                        else if (fundoB == 2)
                        {
                            Console.Write("Código do cliente: ");
                            int cod = int.Parse(Console.ReadLine());
                            fundo4.trasferirAplicacoes(fundo2, cod);
                        }
                        else if (fundoB == 3)
                        {
                            Console.Write("Código do cliente: ");
                            int cod = int.Parse(Console.ReadLine());
                            fundo4.trasferirAplicacoes(fundo3, cod);
                        }
                        else
                        {
                            Console.WriteLine("Opção inválida!");
                        }
                    }
                    else
                    {
                        Console.WriteLine("Opção inválida!");
                    }

                    Console.Clear();
                }

                // OPÇÃO 5

                if (opcao == 5)
                {
                    Console.WriteLine("Informe qual Fundo de investimento você deseja gerar o relatório: ");
                    Console.WriteLine("1 - BOVESPA, 2 - BM&F, 3 - NASDAQ, 4 - NYSE");
                    Console.Write("Digite a opção desejada: ");
                    int fundoE = int.Parse(Console.ReadLine());

                    if (fundoE == 1)
                    {
                        fundo1.relatorioAplicacoes();
                    }
                    else if (fundoE == 2)
                    {
                        fundo2.relatorioAplicacoes();
                    }
                    else if (fundoE == 3)
                    {
                        fundo3.relatorioAplicacoes();
                    }
                    else if (fundoE == 4)
                    {
                        fundo4.relatorioAplicacoes();
                    }
                    else
                    {
                        Console.WriteLine("Opção inválida!");
                    }

                    Console.Clear();
                }

                // OPÇÃO 6

                if (opcao == 6)
                {
                    Console.WriteLine("Informe qual Fundo de investimento você deseja gerar o relatório: ");
                    Console.WriteLine("1 - BOVESPA, 2 - BM&F, 3 - NASDAQ, 4 - NYSE");
                    Console.Write("Digite a opção desejada: ");
                    int fundoE = int.Parse(Console.ReadLine());

                    if (fundoE == 1)
                    {
                        Console.WriteLine("Código do cliente: ");
                        int cod = int.Parse(Console.ReadLine());
                        foreach (Cliente c in clientes)
                        {
                            if (c.getCodigo() == cod)
                            {
                                Console.WriteLine("Nome: {0}", c.getNome());
                            }
                        }
                        fundo1.relatorioPorCliente(cod);
                    }
                    else if (fundoE == 2)
                    {
                        Console.WriteLine("Código do cliente: ");
                        int cod = int.Parse(Console.ReadLine());
                        foreach (Cliente c in clientes)
                        {
                            if (c.getCodigo() == cod)
                            {
                                Console.WriteLine("Nome: {0}", c.getNome());
                            }
                        }
                        fundo2.relatorioPorCliente(cod);
                    }
                    else if (fundoE == 3)
                    {
                        Console.WriteLine("Código do cliente: ");
                        int cod = int.Parse(Console.ReadLine());
                        foreach (Cliente c in clientes)
                        {
                            if (c.getCodigo() == cod)
                            {
                                Console.WriteLine("Nome: {0}", c.getNome());
                            }
                        }
                        fundo3.relatorioPorCliente(cod);
                    }
                    else if (fundoE == 4)
                    {
                        Console.WriteLine("Código do cliente: ");
                        int cod = int.Parse(Console.ReadLine());
                        foreach (Cliente c in clientes)
                        {
                            if (c.getCodigo() == cod)
                            {
                                Console.WriteLine("Nome: {0}", c.getNome());
                            }
                        }
                        fundo4.relatorioPorCliente(cod);
                    }
                    else
                    {
                        Console.WriteLine("Opção inválida!");
                    }

                    Console.Clear();
                }

                // OPÇÃO 7

                if (opcao == 7)
                {
                    fundo1.calculaRemuneracao();
                    fundo2.calculaRemuneracao();
                    fundo3.calculaRemuneracao();
                    fundo4.calculaRemuneracao();
                    Console.WriteLine("Remunerações realizadas com sucesso!");

                    Console.Clear();
                }
            }
        }
        static void Main(string[] args)
        {
            List<Cliente> clientes = new List<Cliente>();
            List<Moeda> moedas = new List<Moeda>();
            List<FundoInvestimento> fundoInvestimento = new List<FundoInvestimento>();
            List<Aplicacao> aplicacoes = new List<Aplicacao>();

            Real real = new Real(2, "real", "R$");
            Dolar dolar = new Dolar(3, "dolar", "U$");

            moedas.Add(real);
            moedas.Add(dolar);

            FundoInvestimento.lerArquivo(fundoInvestimento, moedas[0], moedas[1]);
            Cliente.lerArquivo(clientes);

            Aplicacao aplicacao = null;
            Cliente clientePadrao = null;
            FundoInvestimento novo = null;

            int opcao = -1, opcaoBanco = -1, opcaoCliente = -1;
            String nome, senha, endereco, telefone, senhaBanco;
            double cpf, cpfCliente = 0;

            bool verifica = true;
            String tempCpf = "";
            String senhaCliente = "";

            Console.WriteLine("Por favor, selecione a opção:");
            Console.WriteLine("1 - Banco.");
            Console.WriteLine("2 - Cliente.");
            opcao = int.Parse(Console.ReadLine());

            while (opcao == 1 || opcao == 2)
            {
                if (opcao == 1)
                {
                    //verifica = true;
                   Console.WriteLine("Por favor, digite sua senha: ");
                   senhaBanco = Console.ReadLine();
                   if(senhaBanco.Equals("root"))
                    {
                    Console.WriteLine("1 - Cadastrar clientes.");
                    Console.WriteLine("2 - Remover cliente.");
                    Console.WriteLine("3 - Cadastrar fundos de investimento.");
                    Console.WriteLine("4 - Remover fundos de investimento.");
                    Console.WriteLine("5 - Realizar Aplicação.");
                    opcaoBanco = int.Parse(Console.ReadLine());

                    while (opcaoBanco == 1 || opcaoBanco == 2 || opcaoBanco == 3 || opcaoBanco == 4)
                    {
                        if (opcaoBanco == 1)
                        {
                            for (int i = 0; i < 0; i++)
                            {
                                Console.WriteLine("Digite o nome do {0}º cliente:", i + 1);
                                nome = Console.ReadLine();
                                Console.WriteLine("Digite a senha do {0}º cliente:", i + 1);
                                senha = Console.ReadLine();
                                Console.WriteLine("Digite o endereço completo do {0}º cliente:", i + 1);
                                endereco = Console.ReadLine();
                                Console.WriteLine("Digite o CPF do {0}º cliente:", i + 1);
                                cpf = Convert.ToDouble(Console.ReadLine());
                                Console.WriteLine("Digite o telefone do {0}º cliente: ", i + 1);
                                telefone = Console.ReadLine();

                                clientePadrao = new Cliente(clientes.Count(), nome, senha, endereco, cpf, telefone, DateTime.Now);
                                clientes.Add(clientePadrao);
                            }
                            Console.WriteLine("1 - Cadastrar clientes.");
                            Console.WriteLine("2 - Remover cliente.");
                            Console.WriteLine("3 - Cadastrar fundos de investimento.");
                            Console.WriteLine("4 - Remover fundos de investimento.");
                            Console.WriteLine("5 - Realizar Aplicação.");
                            opcaoBanco = int.Parse(Console.ReadLine());
                        }
                        else
                        {
                            if (opcaoBanco == 2)
                            {
                                Console.WriteLine("LISTA DE CLIENTES: ");
                                Cliente.imprimeListaCliente(clientes);
                                Console.WriteLine("Por favor, digite o código do cliente a ser removido: ");
                                int codCliente = int.Parse(Console.ReadLine());

                                while (Cliente.buscaCliente(clientes, codCliente) == null)
                                {
                                    Console.WriteLine("Cliente não existe! Favor inserir um novo código: ");
                                    codCliente = int.Parse(Console.ReadLine());
                                }

                                Console.WriteLine("Tem certeza que deseja excluir esse cliente {0}?", Cliente.buscaCliente(clientes, codCliente).getNome());
                                Console.WriteLine("1 - Sim.");
                                Console.WriteLine("2 - Não.");
                                int deletaCliente = int.Parse(Console.ReadLine());

                                if (deletaCliente == 1)
                                {
                                    clientes.Remove(Cliente.buscaCliente(clientes, codCliente));
                                }

                            }
                            else
                            {
                                if (opcaoBanco == 3)
                                {
                                    Console.WriteLine("Digite o nome do fundo de investimento: ");
                                    String nomeInvestimento = Convert.ToString(Console.ReadLine());
                                    Console.WriteLine("Digite a moeda do fundo de investimento: Real ou Dolar?");
                                    String moedaInvestimento = Convert.ToString(Console.ReadLine());
                                    if (moedaInvestimento.ToLower().Equals("real"))
                                    {
                                        novo = new FundoInvestimento(fundoInvestimento.Count(), nomeInvestimento, real);
                                    }
                                    else
                                    {
                                        if (moedaInvestimento.ToLower().Equals("dolar"))
                                        {
                                            novo = new FundoInvestimento(fundoInvestimento.Count(), nomeInvestimento, dolar);
                                        }
                                    }

                                    fundoInvestimento.Add(novo);
                                    FundoInvestimento.escreveArquivo(fundoInvestimento);
                                }
                                else
                                {
                                    if (opcaoBanco == 4)
                                    {
                                        Console.WriteLine("LISTA DE FUNDOS: ");
                                        FundoInvestimento.imprimeListaFundos(fundoInvestimento);
                                        Console.WriteLine("Por favor, digite o fundo a ser removido: ");
                                        int codFundo = int.Parse(Console.ReadLine());

                                        while (FundoInvestimento.buscaFundo(fundoInvestimento, codFundo) == null)
                                        {
                                            Console.WriteLine("Fundo não existe! Favor inserir um novo código: ");
                                            codFundo = int.Parse(Console.ReadLine());
                                        }

                                        Console.WriteLine("Tem certeza que deseja excluir esse fundo {0}?", FundoInvestimento.buscaFundo(fundoInvestimento, codFundo).getNome());
                                        Console.WriteLine("1 - Sim.");
                                        Console.WriteLine("2 - Não.");
                                        int deletaFundo = int.Parse(Console.ReadLine());

                                        if (deletaFundo == 1)
                                        {
                                            fundoInvestimento.Remove(FundoInvestimento.buscaFundo(fundoInvestimento, codFundo));
                                            FundoInvestimento.escreveArquivo(fundoInvestimento);
                                        }
                                    }
                                    else
                                    {

                                    }
                                }
                            }
                        }
                    }
                        Console.WriteLine("1 - Cadastrar clientes.");
                        Console.WriteLine("2 - Remover cliente.");
                        Console.WriteLine("3 - Cadastrar fundos de investimento.");
                        Console.WriteLine("4 - Remover fundos de investimento.");
                        opcaoBanco = int.Parse(Console.ReadLine());
                    }
                }
                else
                {
                    if (opcao == 2)
                    {
                        if(verifica){
                            Console.WriteLine("Por favor, digite os dados: ");
                            Console.WriteLine("CPF: ");
                            tempCpf = Console.ReadLine().Replace(".", "");
                            tempCpf = tempCpf.Replace("-", "");
                            cpfCliente = Convert.ToDouble(tempCpf);
                        }
                        while (Cliente.buscaClienteCpf(clientes, cpfCliente) == null)
                        {
                            Console.WriteLine("Esse CPF {0} não existe! Favor inserir um novo CPF: ", cpfCliente);
                            tempCpf = Console.ReadLine().Replace(".", "");
                            tempCpf = tempCpf.Replace("-", "");
                            cpfCliente = Convert.ToDouble(tempCpf);
                        }
                        if (verifica)
                        {
                            Console.WriteLine("Senha: ");
                            senhaCliente = Convert.ToString(Console.ReadLine());
                            verifica = false;
                        }
                        while(!(senhaCliente.Equals(Cliente.buscaClienteCpf(clientes, cpfCliente).getSenha())))
                        {
                            Console.WriteLine("Senha incorreta! Favor digitar a senha: ");
                            senhaCliente = Convert.ToString(Console.ReadLine());
                        }

                        if((senhaCliente.Equals(Cliente.buscaClienteCpf(clientes, cpfCliente).getSenha()))){

                            Console.WriteLine("1 - Realizar aplicação.");
                            Console.WriteLine("2 - Realizar resgate.");
                            Console.WriteLine("3 - Histórico de aplicações.");
                            Console.WriteLine("4 - Histórico de resgates.");
                            opcaoCliente = int.Parse(Console.ReadLine());

                            if(opcaoCliente == 1){
                                Console.WriteLine("Aplicação: ");
                                Console.WriteLine("Por favor, digite o valor a ser aplicacado: ");
                                float valorAplicacao = float.Parse(Console.ReadLine());
                                Console.WriteLine("Por favor, digite o código do Fundo de Investimento que deseja aplicar: ");
                                FundoInvestimento.imprimeListaFundos(fundoInvestimento);
                                int codInvestimento = int.Parse(Console.ReadLine());

                                while(FundoInvestimento.buscaFundo(fundoInvestimento, codInvestimento) == null){
                                        Console.WriteLine("Fundo não existe! Favor inserir um novo código: ");
                                        codInvestimento = int.Parse(Console.ReadLine());
                                }

                                aplicacao = new Aplicacao(valorAplicacao, codInvestimento, DateTime.Now, 0, Cliente.buscaClienteCpf(clientes, cpfCliente).getCodCliente());

                                Aplicacao.escreveArquivo(aplicacao);

                                Console.WriteLine("{0}, tem certeza que deseja incluir essa aplicação de R${1} nesse fundo {2}?", Cliente.buscaClienteCpf(clientes, cpfCliente).getNome(), valorAplicacao, FundoInvestimento.buscaFundo(fundoInvestimento, codInvestimento).getNome());
                                Console.WriteLine("1 - Sim.");
                                Console.WriteLine("2 - Não.");
                                int incluiAplicacao = int.Parse(Console.ReadLine());

                                if(incluiAplicacao == 1)
                                {
                                    Cliente.buscaClienteCpf(clientes, cpfCliente).getFundoInvestimento().Add(FundoInvestimento.buscaFundo(fundoInvestimento, codInvestimento));
                                    FundoInvestimento.buscaFundo(Cliente.buscaClienteCpf(clientes, cpfCliente).getFundoInvestimento(), codInvestimento).buscaAplicacao().Add(aplicacao);
                                    FundoInvestimento.imprimeListaAplicacao(FundoInvestimento.buscaFundo(Cliente.buscaClienteCpf(clientes, cpfCliente).getFundoInvestimento(), codInvestimento).buscaAplicacao());
                                }
                            } else
                                if (opcaoCliente == 2)
                                {
                                    Console.WriteLine("Resgate");
                                    for (int i = 0; i < Cliente.buscaClienteCpf(clientes, cpfCliente).getFundoInvestimento().Count(); i++ )
                                    {
                                        Aplicacao.imprimeListaAplicacao(Cliente.buscaClienteCpf(clientes, cpfCliente).getFundoInvestimento()[i].buscaAplicacao());
                                        Console.WriteLine("Informe o valor que deseja resgatar:");
                                        float valorResgate = float.Parse(Console.ReadLine());
                                        Aplicacao.buscaAplicacaoClienteValor(Aplicacao.buscaAplicacaoCliente(aplicacoes, Cliente.buscaClienteCpf(clientes, cpfCliente).getCodCliente()), valorResgate).resgate(aplicacoes, valorResgate);
                                    }
                                }
                        }
                    }
                }

                Console.WriteLine("Por favor, selecione a opção:");
                Console.WriteLine("1 - Banco.");
                Console.WriteLine("2 - Cliente.");
                opcao = int.Parse(Console.ReadLine());
            }

            Console.ReadKey();
        }