static void Main(string[] args)
        {
            int opc;

            Program p = new Program();

            do
            {
                Title = "CONTROLE FINANCEIRO SON";
                Uteis.MontaMenu();
                opc = Convert.ToInt32(ReadLine());

                if (!(opc >= 1 && opc <= 6))
                {
                    Clear();
                    // muda cores de background e texto no console
                    BackgroundColor = ConsoleColor.DarkRed;
                    ForegroundColor = ConsoleColor.White;
                    Uteis.MontaHeader("INFORME UMA OPÇÃO VÁLIDA !", 'X');
                    ResetColor();
                }
                else
                {
                    Clear();
                    switch (opc)
                    {
                    case 1:

                        Title = "LISTAGEM DE CONTAS - CONTROLE FINANCEIRO SON";
                        Uteis.MontaHeader("Listagem de Contas");

                        ListarContas(p);

                        ReadLine();
                        Clear();

                        break;

                    case 2:

                        Title = "NOVA CONTA - CONTROLE FINANCEIRO SON";
                        Uteis.MontaHeader("CADASTRANDO UMA NOVA CONTA");

                        CadastrarConta(p);

                        ReadLine();
                        Clear();

                        break;

                    case 3:

                        Title = "EDITAR CONTAS - CONTROLE FINANCEIRO SON";
                        Uteis.MontaHeader("Editar Conta");
                        ReadLine();
                        Clear();

                        break;

                    case 4:

                        Title = "EXCLUIR CONTA - CONTROLE FINANCEIRO SON";
                        Uteis.MontaHeader("Excluir uma Conta");
                        ReadLine();
                        Clear();

                        break;

                    case 5:

                        Title = "RELATÓRIO DE CONTAS - CONTROLE FINANCEIRO SON";
                        Uteis.MontaHeader("Relatório por Data de Vencimento");

                        Write("Informe a data inicial (dd/mm/aaaa): ");
                        string data_inicial = ReadLine();

                        Write("Informe a data final (dd/mm/aaaa): ");
                        string data_final = ReadLine();

                        // irá listar apenas as contas com data de vencimento dentro do intervalo especificado
                        ListarContas(p, data_inicial, data_final);

                        ReadLine();
                        Clear();

                        break;
                    }
                }
            } while (opc != 6);
        }
        private static void CadastrarConta(Program p)
        {
            string descricao = "";

            // validação para descrição
            do
            {
                Write("Informe a descriçao da conta: ");
                descricao = ReadLine();

                if (descricao.Equals(""))
                {
                    BackgroundColor = ConsoleColor.DarkRed;
                    ForegroundColor = ConsoleColor.White;
                    Uteis.MontaHeader("INFORME UMA DESCRIÇÃO PARA A CONTA", '*');
                    ResetColor();
                }
            } while (descricao.Equals(""));

            Write("Informe o valor: ");
            double valor = Convert.ToDouble(ReadLine());

            Write("Informe o tipo (R para Receber ou P para Pagar): ");
            char tipo = Convert.ToChar(ReadLine());

            Write("Informe o data de vencimento (dd/mm/aaaa): ");
            DateTime dataVencimento = DateTime.Parse(ReadLine());

            // exibirá a lista de categorias para escolha
            WriteLine("Selecione uma categoria pela ID: \n");
            p.categorias = p.categoria.ListarTodos();
            ConsoleTable table = new ConsoleTable("ID", "Nome");

            foreach (var c in p.categorias)
            {
                // adiciona linha para cada registro
                table.AddRow(c.Id, c.Nome);
            }
            table.Write();

            Write("Categoria: ");
            int       cat_id       = Convert.ToInt32(ReadLine());
            Categoria cat_cadastro = p.categoria.GetCategoria(cat_id);

            // criando obj conta
            Conta conta = new Conta()
            {
                Descricao      = descricao,
                Valor          = valor,
                Tipo           = tipo,
                DataVencimento = dataVencimento,
                Categoria      = cat_cadastro
            };

            // salvando no banco de dados
            p.conta.Salvar(conta);

            BackgroundColor = ConsoleColor.DarkGreen;
            ForegroundColor = ConsoleColor.White;
            Uteis.MontaHeader("CONTA SALVA COM SUCESSO !", '+');
            ResetColor();
        }