コード例 #1
0
        private void btnSalvar_Click(object sender, EventArgs e)
        {
            // Atualiza pesos e notas
            string[] notas = new string[dgvNotasPesos.RowCount];
            float[]  pesos = new float[dgvNotasPesos.RowCount];

            for (int i = 0; i < dgvNotasPesos.RowCount; i++)
            {
                notas[i] = dgvNotasPesos.Rows[i].Cells["NomeNota"].Value.ToString();
                pesos[i] = Convert.ToSingle(dgvNotasPesos.Rows[i].Cells["Peso"].Value);
            }
            new ExecutarDB().Executar("UPDATE materias SET notas = " + (notas.Length != 0 ? "'{\"" + String.Join("\", \"", notas) + "\"}', " : "NULL, ") +
                                      "pesos = " + (pesos.Length != 0 ? "'{" + String.Join("- ", pesos).Replace(',', '.').Replace('-', ',') + "}' " : "NULL ") +
                                      $"WHERE curso = '{cmbCurso.Text}' AND sigla = '{siglaMateria}'");

            // Atualiza notas de cada aluno
            new ExecutarDB().Executar($"DELETE FROM notas WHERE curso = '{cmbCurso.Text}' AND materia = '{siglaMateria}'"); // Deleta todas as notas
            for (int l = 0; l < dgvNotasAlunos.RowCount; l++)
            {
                int idAluno = new ExecutarDB().ListarAlunos("id", "alunos", $"ra = '{dgvNotasAlunos["RA", l].Value}'")[0].ID;
                for (int n = 3; n < dgvNotasAlunos.ColumnCount; n++) // Cada nota
                {
                    if (dgvNotasAlunos[n, l].Value != null)          // Se existir uma nota
                    {
                        new ExecutarDB().Executar($"INSERT INTO notas VALUES ('{cmbCurso.Text}', {idAluno}, '{siglaMateria}', {n - 3}, {dgvNotasAlunos[n, l].Value})");
                    }
                }
            }

            btnCancelar_Click(null, null);
        }
コード例 #2
0
        // Inicia a alteração de uma matéria existente
        private void dgvMaterias_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            // Configura botões e altera texto
            limparCampos();
            Modo                  = "Alterar";
            lblTitulo.Text        = "Alterando Matéria " + dgvMaterias.Rows[e.RowIndex].Cells["Sigla"].Value;
            cmbCurso.Enabled      = false;
            cmbDadosCurso.Enabled = false;
            gpbAlunos.Enabled     = true;
            btnCancelar.Enabled   = true;
            btnSalvar.Text        = "Salvar";
            btnSalvar.Enabled     = true;
            btnExcluir.Enabled    = true;
            for (int i = 0; i < cmbCurso.Items.Count; i++)
            {
                cmbDadosCurso.Items.Add(cmbCurso.Items[i]);
            }
            cmbFiltroProfessor_SelectedIndexChanged(null, null);

            // Preenche os campos com os dados da matéria
            // Dados
            cmbDadosCurso.SelectedIndex = cmbCurso.SelectedIndex;
            txtNome.Text = dgvMaterias.Rows[e.RowIndex].Cells["NomeMateria"].Value.ToString();
            Materia materia = new ExecutarDB().ListarMaterias("*", "materias", $"curso = '{cmbDadosCurso.Text}' AND sigla = " +
                                                              $"'{dgvMaterias.Rows[e.RowIndex].Cells["Sigla"].Value}'")[0];

            txtSigla.Text = materia.Sigla;

            // Professor
            usuarios.Professor lecionador;
            if (materia.Lecionador != -1)
            {
                lecionador = new ExecutarDB().ListarProfessores("registro, rg, cpf, nome", "professores INNER JOIN usuarios ON user_id = usuarios.id", $"professores.id = {materia.Lecionador}")[0];
                txtEntradaProfessor.Text  = lecionador.Registro;
                lblProfessorRegistro.Text = "Registro: " + lecionador.Registro;
                lblProfessorRG.Text       = "RG: " + lecionador.RG;
                lblProfessorCPF.Text      = "CPF: " + lecionador.CPF;
                lblProfessorNome.Text     = "Nome: " + lecionador.Nome;
            }

            // Alunos
            // por causa da atualização no cmbDadosCurso.SelectedIndex, os alunos já são resgatados
            // Marca quais alunos estão cursando essa matéria
            for (int i = 0; i < dgvAlunos.RowCount; i++)
            {
                foreach (int idEstudante in materia.Estudantes)
                {
                    if (Convert.ToInt32(dgvAlunos.Rows[i].Cells["ID"].Value) == idEstudante)
                    {
                        dgvAlunos.Rows[i].Cells["Cursando"].Value = true;
                    }
                }
            }
        }
コード例 #3
0
        private void cmbResultadosProfessor_SelectedIndexChanged(object sender, EventArgs e)
        {
            // Resgata dados do professor selecionado a partir do filtro e da entrada
            string filtro = cmbFiltroProfessor.SelectedItem.ToString().ToLower();

            usuarios.Professor primeiroDaLista = new ExecutarDB().ListarProfessores("registro, rg, cpf, nome", "professores INNER JOIN usuarios ON user_id = usuarios.id", $"{filtro} = '{cmbResultadosProfessor.SelectedItem}'")[0];
            lblProfessorRegistro.Text = "Registro: " + primeiroDaLista.Registro;
            lblProfessorRG.Text       = "RG: " + primeiroDaLista.RG;
            lblProfessorCPF.Text      = "CPF: " + primeiroDaLista.CPF;
            lblProfessorNome.Text     = "Nome: " + primeiroDaLista.Nome;
        }
コード例 #4
0
        private void resgatarInfoCursos()
        {
            List <Curso> cursos = new ExecutarDB().ListarCursos("sigla, nome", "cursos", null);

            foreach (Curso curso in cursos)
            {
                lblNome.Text     += "\n" + curso.Nome;
                lblAlunos.Text   += "\n" + new ExecutarDB().Executar($"SELECT COUNT(id) FROM alunos WHERE curso = '{curso.Sigla}'");
                lblMaterias.Text += "\n" + new ExecutarDB().Executar($"SELECT COUNT(sigla) FROM materias WHERE curso = '{curso.Sigla}'");
            }

            gpbCursos.UseWaitCursor = false;
        }
コード例 #5
0
        private void resgatarAlunos()
        {
            dgvAlunos.Rows.Clear();

            List <usuarios.Aluno> alunosDoCurso = new ExecutarDB().ListarAlunos("ra, nome, rg, cpf, alunos.id", "alunos INNER JOIN usuarios ON user_id = usuarios.id", $"curso = '{cmbDadosCurso.Text}' ORDER BY nome ASC");

            foreach (usuarios.Aluno aluno in alunosDoCurso)
            {
                var novaLinha = dgvAlunos.Rows.Add();
                dgvAlunos.Rows[novaLinha].Cells["Cursando"].Value  = false;
                dgvAlunos.Rows[novaLinha].Cells["RA"].Value        = aluno.RA;
                dgvAlunos.Rows[novaLinha].Cells["NomeAluno"].Value = aluno.Nome;
                dgvAlunos.Rows[novaLinha].Cells["RG"].Value        = aluno.RG;
                dgvAlunos.Rows[novaLinha].Cells["CPF"].Value       = aluno.CPF;
                dgvAlunos.Rows[novaLinha].Cells["ID"].Value        = aluno.ID;
            }
        }
コード例 #6
0
        // Valida os dados inseridos
        private bool validarDados()
        {
            // Verifica se está vazio e troca a cor
            if (String.IsNullOrWhiteSpace(txtSigla.Text))
            {
                txtSigla.BackColor = Color.FromArgb(255, 192, 192);
            }
            else
            {
                txtSigla.BackColor = SystemColors.Window;
            }
            if (String.IsNullOrWhiteSpace(txtNome.Text))
            {
                txtNome.BackColor = Color.FromArgb(255, 192, 192);
            }
            else
            {
                txtNome.BackColor = SystemColors.Window;
            }
            if (String.IsNullOrWhiteSpace(txtSigla.Text) || String.IsNullOrWhiteSpace(txtNome.Text))
            {
                MessageBox.Show(null, "Alguns dados necessários estão incompletos, por favor verificá-los", "Erro " + Modo.ToLower());
                return(false);
            }

            // Verifica se já há outra matéria com a mesma sigla no mesmo curso
            List <Materia> m = new ExecutarDB().ListarMaterias("sigla, nome", "materias", $"curso = '{cmbDadosCurso.SelectedValue}' ORDER BY nome ASC");

            for (int i = 0; i < m.Count; i++)
            {
                if (txtSigla.Text == m[i].Sigla && i != dgvMaterias.SelectedRows[0].Index)
                {
                    MessageBox.Show(null, $"Já existe uma matéria com a sigla {txtSigla.Text} no curso " +
                                    $"{cmbDadosCurso.SelectedValue}:\n{m[i].Nome}.",
                                    "Erro ao criar matéria");
                    splitContainer.Enabled = true;
                    return(false);
                }
            }


            return(true);
        }
コード例 #7
0
        private void Entrar()
        {
            string login = txtLogin.Text.Trim();
            string senha = txtSenha.Text;

            if ((login == "" || login == "Email ou Usuário") &&
                (senha == "" || senha == "Senha"))
            {
                MessageBox.Show("Por favor insira um login e senha!");
                return;
            }
            else if (login == "" || login == "Email ou Usuário")
            {
                MessageBox.Show("Por favor insira um login!");
                return;
            }
            else if (senha == "" || senha == "Senha")
            {
                MessageBox.Show("Por favor insira uma senha!");
                return;
            }

            // Pesquisa no BD um usuário com o mesmo login/email e senha,
            // resgatando o primeiro usuário (deve sempre haver somente 1)
            // da lista retornada
            List <Usuario> usuario = new ExecutarDB().ListarUsuarios(
                "id, nome, tipo", "usuarios",
                $"(login = '******' AND senha = '{senha}') OR " +
                $"(email = '{login}' AND email IS NOT NULL AND senha = '{senha}')"
                );

            if (usuario.Count != 0) // Se existe um usuário com esse login
            {
                infoLogin = new string[3] {
                    usuario[0].Tipo, usuario[0].Nome, usuario[0].ID.ToString()
                };       // Marca qual Menu deve abrir
                Close(); // Fechar tela de login para abrir o FormMenu (no Program.cs)
            }
            else
            {
                MessageBox.Show("Login e/ou senha incorretos!");
            }
        }
コード例 #8
0
        private void cmbMaterias_SelectedIndexChanged(object sender, EventArgs e)
        {
            btnCancelar_Click(null, null); // Reinicia os DataGridViews

            // Resgata os alunos, notas, pesos, notas dos alunos da matéria e preenche
            Materia materia = new ExecutarDB().ListarMaterias("sigla, notas, pesos, estudantes_id", "materias", $"curso = '{cmbCurso.Text}' AND nome = '{cmbMaterias.Text}'")[0];

            siglaMateria = materia.Sigla;
            // Notas e pesos
            for (int i = 0; i < materia.Notas.Length; i++)
            {
                dgvNotasPesos.Rows.Add(materia.Notas[i], materia.Pesos[i], i);
                dgvNotasAlunos.Columns.Add(materia.Notas[i].Replace(' ', '_'), materia.Notas[i]);
                dgvNotasAlunos.Columns[materia.Notas[i].Replace(' ', '_')].Width = 50;
            }
            for (int i = 0; i < materia.Estudantes.Length; i++)
            {
                if (materia.Estudantes[i] == 0)
                {
                    break;
                }

                // Alunos da matéria
                usuarios.Aluno estudante = new ExecutarDB().ListarAlunos("ra, nome", "alunos INNER JOIN usuarios ON user_id = usuarios.id", $"alunos.id = '{materia.Estudantes[i]}'")[0];
                dgvNotasAlunos.Rows.Add(estudante.RA, estudante.Nome);

                // Notas dos alunos
                List <Nota> notasDoEstudante = new ExecutarDB().ListarNotas("num_nota, valor", "notas",
                                                                            $"curso = '{cmbCurso.Text}' AND estudante_id = '{materia.Estudantes[i]}' AND materia = '{siglaMateria}' ORDER BY num_nota ASC");
                for (int j = 0; j < notasDoEstudante.Count; j++)
                {
                    dgvNotasAlunos[notasDoEstudante[j].NumeroDaNota + 3, i].Value = notasDoEstudante[j].Valor;
                }
            }

            calcularMedia();

            dgvNotasAlunos.Enabled = true;
            gpbNotasPesos.Enabled  = true;
            btnSalvar.Enabled      = true;
            btnCancelar.Enabled    = true;
        }
コード例 #9
0
        private void cmbFiltroProfessor_SelectedIndexChanged(object sender, EventArgs e)
        {
            string filtro = cmbFiltroProfessor.SelectedItem.ToString().ToLower();

            cmbResultadosProfessor.Items.Clear();
            txtEntradaProfessor.Clear();

            // Preenche cmbResultadosProfessor com uma lista de dados do tipo filtro de todos professores
            List <usuarios.Professor> professores = new ExecutarDB().ListarProfessores(filtro, $"professores INNER JOIN usuarios ON user_id = usuarios.id ORDER BY {filtro} ASC", null);

            switch (filtro)
            {
            case "registro":
                foreach (usuarios.Professor professor in professores)
                {
                    cmbResultadosProfessor.Items.Add(professor.Registro);
                }
                break;

            case "rg":
                foreach (usuarios.Professor professor in professores)
                {
                    cmbResultadosProfessor.Items.Add(professor.RG);
                }
                break;

            case "cpf":
                foreach (usuarios.Professor professor in professores)
                {
                    cmbResultadosProfessor.Items.Add(professor.CPF);
                }
                break;

            case "nome":
                foreach (usuarios.Professor professor in professores)
                {
                    cmbResultadosProfessor.Items.Add(professor.Nome);
                }
                break;
            }
        }
コード例 #10
0
        // Gerencia os campos que devem ser exibidos dependendo do tipo de usuário
        private void cmbTipoUsuario_SelectedIndexChanged(object sender, EventArgs e)
        {
            switch (cmbTipoUsuario.SelectedItem)
            {
            case "Administrador":
                gpbAluno.Enabled     = false;
                gpbAluno.Visible     = false;
                gpbProfessor.Enabled = false;
                gpbProfessor.Visible = false;
                gpbAdmin.Enabled     = true;
                gpbAdmin.Visible     = true;
                break;

            case "Aluno":
                gpbAdmin.Enabled     = false;
                gpbAdmin.Visible     = false;
                gpbProfessor.Enabled = false;
                gpbProfessor.Visible = false;
                gpbAluno.Enabled     = true;
                gpbAluno.Visible     = true;
                cmbCurso.Items.Clear();
                List <Curso> siglas = new ExecutarDB().ListarCursos("sigla", "cursos", null);
                for (int i = 0; i < siglas.Count; i++)
                {
                    cmbCurso.Items.Add(siglas[i].Sigla);
                }
                break;

            case "Professor":
                gpbAdmin.Enabled     = false;
                gpbAdmin.Visible     = false;
                gpbAluno.Enabled     = false;
                gpbAluno.Visible     = false;
                gpbProfessor.Enabled = true;
                gpbProfessor.Visible = true;
                break;
            }
            btnConfirmar.Enabled = true;
        }
コード例 #11
0
        public short Cadastrar()
        {
            // Pesquisa no BD se esse usuário já existe
            List <Admin> adminComLoginIgual = new ExecutarDB().ListarAdmins(
                "login, email", "usuarios", $"login = '******' OR email = '{Email}'");

            if (adminComLoginIgual.Count != 0) // Se existe
            {
                if (Login == adminComLoginIgual[0].Login &&
                    Email == adminComLoginIgual[0].Email)
                {
                    return(1); // Login e Email em uso
                }
                else if (Login == adminComLoginIgual[0].Login)
                {
                    return(2); // Login em uso
                }
                else
                {
                    return(3); // Email em uso
                }
            }

            // Insere uma nova linha na tabela usuarios
            int idCadastrado = int.Parse(new ExecutarDB().Executar(
                                             "INSERT INTO usuarios (login, senha, rg, cpf, email, nome, telefone, tipo) " +
                                             $"VALUES ('{Login}', '{Senha}', '{RG}', '{CPF}', '{Email}', '{Nome}'," +
                                             $" '{Telefone}', 'Administrador') " +
                                             "RETURNING id", 0));

            // Insere uma nova linha na tabela administradores
            new ExecutarDB().Executar("INSERT INTO administradores (cargo, user_id) " +
                                      $"VALUES ('{Cargo}', {idCadastrado})");

            return(0); // Usuário cadastrado
        }
コード例 #12
0
        public int Cadastrar()
        {
            // Pesquisa no BD se esse usuário já existe
            List <Aluno> alunoComLoginIgual = new ExecutarDB().ListarAlunos(
                "login, email", "usuarios", $"login = '******' OR email = '{Email}'");

            if (alunoComLoginIgual.Count != 0) // Se existe
            {
                if (Login == alunoComLoginIgual[0].Login &&
                    Email == alunoComLoginIgual[0].Email)
                {
                    return(1); // Login e Email em uso
                }
                else if (Login == alunoComLoginIgual[0].Login)
                {
                    return(2); // Login em uso
                }
                else
                {
                    return(3); // Email em uso
                }
            }

            // Insere uma nova linha na tabela usuarios
            int idCadastrado = int.Parse(new ExecutarDB().Executar(
                                             "INSERT INTO usuarios (login, senha, rg, cpf, email, nome, telefone, tipo) " +
                                             $"VALUES ('{Login}', '{Senha}', '{RG}', '{CPF}', '{Email}', '{Nome}', '{Telefone}', 'Aluno') " +
                                             "RETURNING id", 0));

            // Insere uma nova linha na tabela professores
            new ExecutarDB().Executar(
                "INSERT INTO alunos (ra, curso, datamatricula, user_id) " +
                $"VALUES ('{RA}', '{Curso}', '{dataMatricula}', {idCadastrado})");

            return(0); // Usuário cadastrado
        }
コード例 #13
0
        private void txtEntradaProfessor_TextChanged(object sender, EventArgs e)
        {
            cmbResultadosProfessor.Items.Clear();

            string filtro  = cmbFiltroProfessor.SelectedItem.ToString().ToLower();
            string entrada = txtEntradaProfessor.Text;

            // Resgata os professores que correspondem a entrada do filtro inserido
            List <usuarios.Professor> professores;

            if (!String.IsNullOrWhiteSpace(entrada)) // Se estiver filtrando pela entrada
            {
                professores = new ExecutarDB().ListarProfessores(filtro, "professores INNER JOIN usuarios ON user_id = usuarios.id", $"{filtro} ILIKE '{entrada}%' ORDER BY {filtro} ASC");
            }
            else
            {
                professores = new ExecutarDB().ListarProfessores(filtro, $"professores INNER JOIN usuarios ON user_id = usuarios.id ORDER BY {filtro} ASC", null);
            }
            switch (filtro)
            {
            case "registro":
                foreach (usuarios.Professor professor in professores)
                {
                    cmbResultadosProfessor.Items.Add(professor.Registro);
                }
                break;

            case "rg":
                foreach (usuarios.Professor professor in professores)
                {
                    cmbResultadosProfessor.Items.Add(professor.RG);
                }
                break;

            case "cpf":
                foreach (usuarios.Professor professor in professores)
                {
                    cmbResultadosProfessor.Items.Add(professor.CPF);
                }
                break;

            case "nome":
                foreach (usuarios.Professor professor in professores)
                {
                    cmbResultadosProfessor.Items.Add(professor.Nome);
                }
                break;
            }

            // Preenche os campos se há correspondentes e há uma entrada
            if (cmbResultadosProfessor.Items.Count != 0 && !String.IsNullOrWhiteSpace(entrada))
            {
                cmbResultadosProfessor.SelectedIndex = 0;
            }
            else
            {
                // Limpar labels
                lblProfessorRegistro.Text = "Registro: ";
                lblProfessorRG.Text       = "RG: ";
                lblProfessorCPF.Text      = "CPF: ";
                lblProfessorNome.Text     = "Nome: ";
            }
        }
コード例 #14
0
        // Cria ou atualiza uma matéria
        private void btnSalvar_Click(object sender, EventArgs e)
        {
            splitContainer.Enabled = false;

            if (!validarDados())
            {
                splitContainer.Enabled = true;
                return;
            }

            // Resgata os dados que vão ser utilizados nas duas operações
            int idLecionador = -1;
            List <usuarios.Professor> lecionador = new ExecutarDB().ListarProfessores("professores.id", "professores INNER JOIN usuarios ON user_id = usuarios.id",
                                                                                      $"{cmbFiltroProfessor.Text.ToLower()} = '{cmbResultadosProfessor.Text}'");

            if (lecionador.Count != 0)
            {
                idLecionador = lecionador[0].ID;
            }
            MessageBox.Show(idLecionador.ToString());

            string rowsEstudantes = "";

            for (int i = 0; i < dgvAlunos.RowCount; i++)
            {
                // Adiciona apenas os alunos marcados na coluna Cursando
                if (Convert.ToBoolean(dgvAlunos.Rows[i].Cells["Cursando"].Value))
                {
                    rowsEstudantes += dgvAlunos.Rows[i].Cells["ID"].Value.ToString();
                    if (i != dgvAlunos.RowCount - 1)
                    {
                        rowsEstudantes += " ";
                    }
                }
            }
            rowsEstudantes = rowsEstudantes.Trim();
            int[] idsEstudantes = !String.IsNullOrWhiteSpace(rowsEstudantes) ? new int[rowsEstudantes.Split(' ').Length] : new int[0];
            for (int i = 0; i < idsEstudantes.Length; i++)
            {
                idsEstudantes[i] = Convert.ToInt32(rowsEstudantes.Split(' ')[i]);
            }

            // Criando matéria
            if (Modo == "Criar")
            {
                // Resgata os outros dados necessários e insere na tabela materias da DB
                new ExecutarDB().Executar("INSERT INTO materias (curso, sigla, nome, lecionador_id, estudantes_id) VALUES " +
                                          $"('{cmbDadosCurso.Text}', '{txtSigla.Text}', '{txtNome.Text}', {(idLecionador == -1 ? "NULL" : idLecionador.ToString())}, " + (idsEstudantes.Length != 0 ? "'{" + String.Join(", ", idsEstudantes) + "}' " : "NULL ") + ")");
            }
            else

            // Atualizando matéria
            {
                string oldSigla = dgvMaterias.SelectedRows[0].Cells["Sigla"].Value.ToString();

                // Resgata os outros dados necessários e atualiza a linha na tabela materias da DB
                new ExecutarDB().Executar("UPDATE materias SET " + $"curso = '{cmbCurso.Text}', sigla = '{txtSigla.Text}', " + $"nome = '{txtNome.Text}', " +
                                          $"lecionador_id = {(idLecionador != -1 ? idLecionador.ToString() : "NULL")}, " +
                                          "estudantes_id = " + (idsEstudantes.Length != 0 ? "'{" + String.Join(", ", idsEstudantes) + "}' " : "NULL ") +
                                          $"WHERE curso = '{cmbDadosCurso.Text}' AND sigla = '{oldSigla}'");

                Modo = "Criar";
            }


            limparCampos();
            foreach (Curso curso in new ExecutarDB().ListarCursos("sigla", "cursos", null))
            {
                cmbDadosCurso.Items.Add(curso.Sigla);
            }
            cmbCurso_SelectedIndexChanged(null, null);
            cmbCurso.Enabled = true;

            splitContainer.Enabled = true;
        }
コード例 #15
0
        private void btnAlterar_Click(object sender, EventArgs e)
        {
            DataGridViewCellCollection celulas = // Resgata as células da linha da célula selecionada
                                                 dgvResultados.Rows[dgvResultados.SelectedCells[0].RowIndex].Cells;
            FormCadastro formcadastro = new FormCadastro();

            // A classe/colunas de Usuario não consegue guardar todos os atributos de um
            // Admin, Aluno ou Usuario, por isso é preciso resgatar do BD
            // os outros atributos e instanciar a classe especificada no Tipo
            if (cmbTipo.Text == "Todos Usuários")
            {
                int idSelecionado = Convert.ToInt16(celulas["ID"].Value); // ID de usuário
                switch (celulas["Tipo"].Value.ToString())
                {
                case "Administrador":
                    usuarios.Admin admin = new ExecutarDB().ListarAdmins(
                        "cargo", "administradores", $"user_id = {idSelecionado}")[0];
                    admin.ID       = idSelecionado;
                    admin.Login    = celulas["Login"].Value.ToString();
                    admin.Senha    = celulas["Senha"].Value.ToString();
                    admin.RG       = celulas["RG"].Value.ToString();
                    admin.CPF      = celulas["CPF"].Value.ToString();
                    admin.Email    = celulas["Email"].Value.ToString();
                    admin.Nome     = celulas["Nome"].Value.ToString();
                    admin.Telefone = celulas["Telefone"].Value.ToString();
                    formcadastro   = new FormCadastro(admin);
                    break;

                case "Aluno":
                    usuarios.Aluno aluno = new ExecutarDB().ListarAlunos(
                        "ra, curso, datamatricula", "alunos", $"user_id = {idSelecionado}")[0];
                    aluno.ID       = idSelecionado;
                    aluno.Login    = celulas["Login"].Value.ToString();
                    aluno.Senha    = celulas["Senha"].Value.ToString();
                    aluno.RG       = celulas["RG"].Value.ToString();
                    aluno.CPF      = celulas["CPF"].Value.ToString();
                    aluno.Email    = celulas["Email"].Value.ToString();
                    aluno.Nome     = celulas["Nome"].Value.ToString();
                    aluno.Telefone = celulas["Telefone"].Value.ToString();
                    formcadastro   = new FormCadastro(aluno);
                    break;

                case "Professor":
                    usuarios.Professor professor = new ExecutarDB().ListarProfessores(
                        "registro, formacao", "professores", $"user_id = {idSelecionado}")[0];
                    professor.ID       = idSelecionado;
                    professor.Login    = celulas["Login"].Value.ToString();
                    professor.Senha    = celulas["Senha"].Value.ToString();
                    professor.RG       = celulas["RG"].Value.ToString();
                    professor.CPF      = celulas["CPF"].Value.ToString();
                    professor.Email    = celulas["Email"].Value.ToString();
                    professor.Nome     = celulas["Nome"].Value.ToString();
                    professor.Telefone = celulas["Telefone"].Value.ToString();
                    formcadastro       = new FormCadastro(professor);
                    break;
                }
            }

            // Resgata o tipo de usuário e instancia esse tipo com os dados
            switch (cmbTipo.Text)
            {
            case "Administradores":
                usuarios.Admin admin = new usuarios.Admin(
                    celulas["Login"].Value.ToString(),
                    celulas["Senha"].Value.ToString(),
                    celulas["RG"].Value.ToString(),
                    celulas["CPF"].Value.ToString(),
                    celulas["Email"].Value.ToString(),
                    celulas["Nome"].Value.ToString(),
                    celulas["Telefone"].Value.ToString(),
                    celulas["Cargo"].Value.ToString()
                    );
                admin.ID = new ExecutarDB().ListarUsuarios("user_id", "administradores",
                                                           $"id = {celulas["ID"].Value.ToString()}")[0].ID;
                formcadastro = new FormCadastro(admin);
                break;

            case "Alunos":
                usuarios.Aluno aluno = new usuarios.Aluno(
                    celulas["Login"].Value.ToString(),
                    celulas["Senha"].Value.ToString(),
                    celulas["RG"].Value.ToString(),
                    celulas["CPF"].Value.ToString(),
                    celulas["Email"].Value.ToString(),
                    celulas["Nome"].Value.ToString(),
                    celulas["Telefone"].Value.ToString(),
                    celulas["RA"].Value.ToString(),
                    celulas["Curso"].Value.ToString(),
                    Convert.ToDateTime(celulas["dataMatricula"].Value)
                    );
                aluno.ID = new ExecutarDB().ListarUsuarios("user_id", "alunos",
                                                           $"id = {celulas["ID"].Value.ToString()}")[0].ID;
                formcadastro = new FormCadastro(aluno);
                break;

            case "Professores":
                usuarios.Professor professor = new usuarios.Professor(
                    celulas["Login"].Value.ToString(),
                    celulas["Senha"].Value.ToString(),
                    celulas["RG"].Value.ToString(),
                    celulas["CPF"].Value.ToString(),
                    celulas["Email"].Value.ToString(),
                    celulas["Nome"].Value.ToString(),
                    celulas["Telefone"].Value.ToString(),
                    celulas["Registro"].Value.ToString(),
                    celulas["Formacao"].Value.ToString()
                    );
                professor.ID = new ExecutarDB().ListarUsuarios("user_id", "professores",
                                                               $"id = {celulas["ID"].Value.ToString()}")[0].ID;
                formcadastro = new FormCadastro(professor);
                break;
            }

            // Encontra o FormMenu pai e formata o novo FormCadastro para mostrar como MDI dele
            formcadastro.MdiParent = Application.OpenForms["FormMenu"];
            formcadastro.Dock      = DockStyle.Fill;
            //Hide();
            formcadastro.TopMost = true;
            formcadastro.Show();
        }