static void Main(string[] args)
        {
            Console.OutputEncoding = Encoding.UTF8;

            sbyte escolha = 0;

            const int tamanhoDataBase = 1001;

            FolhaDePagamento.funcionarios = new Funcionario[tamanhoDataBase];
            Relatorio.MensagemSucesso("Projeto Finanças");

            do
            {
                Console.WriteLine("");
                Relatorio.TextDecoration("O Que deseja fazer?");
                Console.WriteLine($"\n1- Cadastrar um Funcionario\n2- Exibir Folha De Pagamento\n3- Exibir total de custos bruto da folha de pagamento\n4- Aumentar o salario de um funcionario\n5- Exibir total de custos liquido da folha de pagamento\n6- Ver maior salario\n7- Ver menor salario\n8- Alterar cadastro\n9- Remover cadastro\n0 - Sair\n10- Criar DataBase (Aleatorio)\n11- Listar funcionarios\n");
                sbyte.TryParse(Console.ReadLine().ToString(), out escolha);
                int id = 0;

                switch (escolha)
                {
                case 1:    //   Cadastrar funcionario   //
                    for (int i = 0; i < tamanhoDataBase - 1; i++)
                    {
                        if (FolhaDePagamento.funcionarios[i] == null)
                        {
                            FolhaDePagamento.funcionarios[i] = new Funcionario();
                            FolhaDePagamento.CadastrarFuncionario(i);
                            break;
                        }
                    }
                    break;

                case 2:    //   Exibir folha de pagamento   //
                    Relatorio.TextDecoration("Digite o numero de identificação do funcionario");
                    int.TryParse(Console.ReadLine(), out id);
                    if (FolhaDePagamento.funcionarios[id] != null)
                    {
                        FolhaDePagamento.MostrarFolhaDePagamento(id);
                    }
                    else
                    {
                        Relatorio.FuncionarioNaoEncontrado(id);
                    }
                    break;

                case 3:    //   Exibir total de custos bruto    //
                    FolhaDePagamento.TotalCustosBruto();
                    break;

                case 4:    //   Aumentar Salario de um funcionario  //
                    Relatorio.TextDecoration("Informe o numero de identificação do funcionario no qual você quer aumentar o salario");
                    int.TryParse(Console.ReadLine(), out id);
                    if (id < 1001 && id >= 0)
                    {
                        if (FolhaDePagamento.funcionarios[id] != null)
                        {
                            FolhaDePagamento.AumentarSalario(id);
                        }
                        else
                        {
                            Relatorio.FuncionarioNaoEncontrado(id);
                        }
                    }
                    else
                    {
                        Relatorio.TextDecoration($"O valor inserido ({id}) não está dentro dos limites do banco de dados");
                    }
                    break;

                case 5:    //   Exibir total de custos liquido da folha de pagamento    //
                    FolhaDePagamento.TotalCustosLiquido();
                    break;

                case 6:    //   Ver maior salario   //
                    FolhaDePagamento.MaiorSalario();
                    break;

                case 7:    //   Ver menor salario   //
                    FolhaDePagamento.MenorSalario();
                    break;

                case 8:    //   Alterar cadastro    //
                    Console.WriteLine("Digite o ID do funcionario que você quer alterar");
                    int.TryParse(Console.ReadLine(), out id);
                    if (id < tamanhoDataBase && id >= 0)
                    {
                        if (FolhaDePagamento.funcionarios[id] != null)
                        {
                            FolhaDePagamento.AlterarCadastro(id);
                        }
                        else
                        {
                            Relatorio.TextDecoration($"Não existe nenhum funcionario cadastrado no ID {id}.");
                            Console.WriteLine("\nDeseja cadastar um funcionario nesse ID?\n1- Sim\n2- Não");
                            sbyte.TryParse(Console.ReadLine(), out sbyte esc);
                            switch (esc)
                            {
                            case 1:
                                FolhaDePagamento.CadastrarFuncionario(id);
                                break;

                            default:
                                //porra nenhuma acontece ;-;
                                break;
                            }
                        }
                    }
                    else
                    {
                        Relatorio.TextDecoration($"O valor inserido ({id}) não está dentro dos limites do banco de dados");
                    }
                    break;

                case 9:    //   Remover cadastro    //
                    Console.WriteLine("Digite o ID do funcionario que você quer remover");
                    int.TryParse(Console.ReadLine(), out id);
                    if (id < tamanhoDataBase && id >= 0)
                    {
                        if (FolhaDePagamento.funcionarios[id] != null)
                        {
                            Console.WriteLine($"\nDeseja mesmo excluir o Funcionario {FolhaDePagamento.funcionarios[id].nome} no indice {id}?\n1- Sim\n2- Não");
                            sbyte.TryParse(Console.ReadLine(), out sbyte esc);
                            switch (esc)
                            {
                            case 1:
                                Relatorio.MensagemSucesso($"Funcionario {FolhaDePagamento.funcionarios[id].nome} removido com sucesso");
                                FolhaDePagamento.funcionarios[id] = null;
                                break;

                            default:
                                //porra nenhuma acontece ;-;
                                break;
                            }
                        }
                        else
                        {
                            Relatorio.TextDecoration($"Não há funcionario no indice {id}.");
                        }
                    }
                    else
                    {
                        Relatorio.TextDecoration($"O valor inserido ({id}) não está dentro dos limites do banco de dados");
                    }
                    break;

                case 10:    // Gerar funcionarios aleatorio //
                    Relatorio.TextDecoration($"Insira a quantidade de funcionarios");
                    Console.WriteLine($"um numero entre 1 e {tamanhoDataBase}");
                    int.TryParse(Console.ReadLine(), out int valor);

                    FolhaDePagamento.funcionarios = new Funcionario[tamanhoDataBase];

                    if (valor < tamanhoDataBase && valor > 0)
                    {
                        for (int i = 0; i < valor; i++)
                        {
                            FolhaDePagamento.GerarDataBase(i);
                        }
                    }
                    else
                    {
                        Relatorio.TextDecoration("O numero inserido não é valido.");
                    }
                    break;

                case 11:    //  Listar Funcionario  //
                    foreach (Funcionario item in FolhaDePagamento.funcionarios)
                    {
                        if (item != null)
                        {
                            Console.WriteLine($"ID : {item.id} , Nome : {item.nome} , Salario R${item.salarioBruto}");
                        }
                    }
                    break;

                case 12:
                    Relatorio.EasterEgg();
                    break;

                case 0:    //   Sair     //
                    Console.WriteLine("Aperte qualquer tecla para sair");
                    break;

                default:    //  Exceção //
                    escolha = 1;
                    Relatorio.TextDecoration("Você deve escolhe qualquer uma dessas escolhas numeradas");
                    continue;
                }
                if (escolha != 0)
                {
                    Console.WriteLine("Aperte qualquer tecla para continuar");
                    Console.ReadKey();
                }
            }while(escolha != 0);
            Console.ReadKey();
        }