JTABLE STUDENT CONTROL – JSC Gil Eduardo de Andrade / Emílio Rudolfo Fey Neto INTRODUÇÃO / DESCRIÇÃO O sistema JTable Student Control - JSC disponibiliza uma interface gráfica em Java que possibilita ao Instituto Federal do Paraná, IFPR – Paranaguá armazenar e gerenciar digitalmente todas as informações dos seus alunos através da conexão e interação com o Sistema Gerenciador de Banco Dados MySQL, sendo possível, ainda, gerenciar posteriormente todas as informações armazenadas, alterando-as quando preciso e removendo-as se necessário. O JSC permite que as informações manipuladas sejam armazenadas de forma consistente, ou seja, ele controla os dados de entrada através da utilização de componentes gráficos adequados, escolhidos de acordo com os tipos de entrada dados, ou seja, os campos são formatados para garantir que as informações especificadas pelo usuário possam ser limitadas e filtradas, não produzindo armazenamentos incorretos ou duplicados. Motivação Atualmente, o armazenamento e a manipulação das informações acadêmicas, relativas aos alunos inscritos nos diversos cursos oferecidos pelo IFPR – Paranaguá é feito através da utilização de planilhas eletrônicas. Tal fato dificulta o gerenciamento e a logística dos profissionais técnicos administrativos que trabalham na secretaria, bem como dos coordenadores e gestores disciplinares. Portanto a utilização de um sistema, desenvolvido com intuito de dar suporte a manipulação dessas informações, permite que as buscas dos alunos sejam feitas, por cursos, nomes ou disciplinas de forma mais rápida e precisa, além de permitir que relatórios sejam gerados através de filtros especificados pelos usuários do sistema. Desafios A principal dificuldade no desenvolvimento do JSC está na identificação precisa de todas as funcionalidades a serem desenvolvidas, visto que a organização atual da secretaria acadêmica é pouco prática, e os profissionais que ali trabalham possuem dificuldade em definir os mais elementares requisitos do aplicativo, além de estarem ainda muito ligados a manipulação e metodologia das planilhas eletrônicas. Objetivos O sistema proposto tem como objetivo geral aperfeiçoar o processo de armazenamento e gerenciamento das informações acadêmicas do IFPR – Paranaguá. Tendo ainda como objetivos específicos: Salvar, alterar, remover e disponibilizar todas as informações dos alunos; Gerar relatório dos alunos: por curso, disciplina e turma; Gerar gráficos estatísticos com gráficos 2D e 3D; LISTA DE SÍMBOLOS ? L U A # * ‘‘ + – apenas letras são permitidas – apenas letras minúsculas são permitidas – apenas letras maiúsculas são permitidas – apenas letras e números são permitidos – apenas números são permitidos – qualquer tipo de caractere é permitido – caractere de espaço é permitido – agrega um novo caractere a permissão LISTA DE ABREVIATURAS jcb jlb jta jlt jsp ii jtf jftf jb jp mf dlm dtm jmb jm jmi jck jrb bg obj – JComboBox – JLabel – JTextArea – JLits – JScrollPane – ImageIcon – JtextField – JFormattedTextField – JButton – JPanel – MaskFormatter – DefaultListModel – DefaultTableModel – JMenuBar – JMenu – JMenuItem – JCheckBox – JRadioButton – ButtonGroup – Objeto/Instância de uma Classe PROTÓTIPO: TELAS DO SISTEMA CADASTRO DE ALUNOS Descrição / Funcionalidades A janela de cadastro de alunos é utilizada para efetuar a adição, atualização, remoção e visualização de todos os alunos armazenados no banco de dados do sistema. Um aluno deve possui as seguintes informações: matricula, nome, curso, turma (ano), data de nascimento e foto. Layout Componentes jtb_alunos: tabela para visualização de dados, apresenta as informações: matrícula, nome, curso, ano e data de nascimento. Possibilita que o usuário selecione apenas um aluno por vez, podendo alterar suas informações ou removê-lo do banco dados. Ao ser capturado o evento de seleção do aluno, os dados do mesmo devem ser apresentados nos campos (componentes) localizados no painel “DADOS DO ALUNO”. - Tabelas Acessadas: tb_alunos jsp_alunos: barra de rolagem vertical, permite ao usuário visualizar os alunos que ainda não estão sendo apresentados pela tabela, a barra vertical fica visível apenas quando a quantidade de alunos a ser apresentada é maior que o espaço definido para a tabela. Jftf_nome: campo formatado de texto para entrada de dados, permite ao usuário especificar o nome de um aluno, utilizado tanto no processo de inserção quanto no processo de alteração dos alunos. Permanece desabilitado durante o processo de visualização/seleção dos alunos, é habilitado mantendo o seu conteúdo quando uma alteração é escolhida pelo usuário, ou ainda, é habilitado apagando o seu conteúdo quando uma inserção é escolhida pelo usuário. O evento de clique (mouse) sobre o campo deve ser capturado, e ao ocorrer o seu conteúdo deve ser apagado. - Formatação: Tamanho: 30 caracteres Formato: U+´´ jcb_curso: caixa de combinação para entrada de dados, permite ao usuário selecionar um dos cursos pré-definidos no sistema e carregados dinamicamente. O usuário pode escolher apenas uma das opções apresentadas, não sendo permitido ao mesmo digitar o nome de um novo curso, diferente dos apresentados pelo componente. - Tabelas Acessadas: tb_cursos jftf_ano: campo formatado de texto para entrada de dados, permite ao usuário especificar a qual turma (ano) pertence um determinado aluno, utilizado tanto no processo de inserção quanto no processo de alteração dos alunos. Permanece desabilitado durante o processo de visualização/seleção dos alunos, é habilitado mantendo o seu conteúdo quando uma alteração é escolhida pelo usuário, ou ainda, é habilitado apagando o seu conteúdo quando uma inserção é escolhida pelo usuário. O evento de clique (mouse) sobre o campo deve ser capturado, e ao ocorrer o seu conteúdo deve ser apagado. - Formatação: Tamanho: 4 caracteres Formato: #### jftf_nasc: campo formatado de texto para entrada de dados, permite ao usuário especificar a data de nascimento para um determinado aluno, utilizado tanto no processo de inserção quanto no processo de alteração dos alunos. Permanece desabilitado durante o processo de visualização/seleção dos alunos, é habilitado mantendo o seu conteúdo quando uma alteração é escolhida pelo usuário, ou ainda, é habilitado apagando o seu conteúdo quando uma inserção é escolhida pelo usuário. O evento de clique (mouse) sobre o campo deve ser capturado, e ao ocorrer o seu conteúdo deve ser apagado. - Formatação: Tamanho: 10 caracteres Formato: ##/##/#### Jftf_caminho_foto: campo formatado de texto para entrada de dados, permite ao sistema apresentar o caminho e nome da foto vinculada a um aluno, permanece o tempo todo desabilitado, modificando seu conteúdo quando o usuário seleciona um aluno já cadastrado ou, ao cadastrar um novo aluno, especifica, através de uma janela de navegação pelos diretórios e arquivos da máquina, o caminho e nome da foto a ser vinculada ao mesmo. jb_adicionar: botão para captura de evento, permite ao usuário indicar ao sistema que um novo aluno será inserido. O botão deve estar visível quando a janela é exibida, entretanto ao ser acionado (clique) deve tornar-se invisível juntamente com os botões jb_alterar e jb_remover, sendo apresentados ao usuário os botões jb_confirmar e jb_cancelar, até então invisíveis. Os campos jftf_nome, jcb_curso, jftf_ano, jftf_nasc e jb_abrir devem ser habilitados e seu conteúdo deve ser apagado. jb_alterar: botão para captura de evento, permite ao usuário indicar ao sistema que os dados de um aluno serão alterados. O botão deve estar visível quando a janela é exibida, entretanto ao ser acionado (clique) deve tornar-se invisível juntamente com os botões jb_adicionar e jb_remover, sendo apresentados ao usuário os botões jb_confirmar e jb_cancelar, até então invisíveis. Os campos jftf_nome, jcb_curso, jftf_ano, jftf_nasc e jb_abrir devem ser habilitados e seu conteúdo deve ser mantido. jb_remover: botão para captura de evento, permite ao usuário indicar ao sistema que o aluno selecionado deve ser removido. O botão deve estar visível quando a janela é exibida, e ao ser acionado (clique) uma janela de diálogo (JOptionPane) pedindo a confirmação da remoção (“Deseja realmente remover o aluno selecionado?”) deve apresentada ao usuário, esta janela deve conter as opções: “sim”, o sistema deve então remover o aluno do banco de dados e reatualizar as informações da tabela de visualização (jtb_alunos) – “não”, o sistema cancela a operação de remoção e volta a sua execução normal – “cancelar”, o sistema cancela a operação e volta a sua execução normal. jb_cancelar: botão para captura de evento, permite ao usuário indicar que um evento previamente especificado (adicionar / alterar aluno) deve ser cancelado. O botão deve estar invisível quando a janela é exibida, ao ser acionado (clique) deve tornar-se novamente invisível juntamente com o botão jb_confirmar, sendo apresentados ao usuário os botões jb_adicionar, jb_alterar e jb_remover, que estavam invisíveis. Os campos jftf_nome, jcb_curso, jftf_ano, jftf_nasc e jb_abrir devem ser desabilitados e seu conteúdo deve ser preenchido de acordo com o aluno selecionado na tabela de alunos (jtb_alunos). jb_confirmar: botão para captura de evento, permite ao usuário indicar que um evento previamente especificado (adicionar / alterar aluno) deve ser confirmar. O botão deve estar invisível quando a janela é exibida, ao ser acionado (clique) deve tornar-se novamente invisível juntamente com o botão jb_confirmar, sendo apresentados ao usuário os botões jb_adicionar, jb_alterar e jb_remover, que estavam invisíveis. Os campos jftf_nome, jcb_curso, jftf_ano, jftf_nasc e jb_abrir devem ser desabilitados e seus conteúdos devem ser limpos, o sistema deve então alterar ou adicionar o aluno ao banco de dados, de acordo com o que foi especificado anteriormente pelo usuário, e então reatualizar os dados a tabela de visualização (jtb_alunos). jlb_eventos: rótulo para apresentação de informações, permite ao sistema mostrar ao usuário qual a funcionalidade de cada um dos botões: jb_adicionar, jb_alterar, jb_remover, jb_confirmar e jb_cancelar. Ao passar o mouse sobre esses botões os seguintes textos devem ser apresentados pelo componente: - jb_adicionar: “Inserir Aluno” - jb_alterar: “Alterar Aluno” - jb_remover: “Remover Aluno” - jb_adicionar: “Confirmar Operação” - jb_adicionar: “Cancelar Operação” jb_abrir: botão para captura de evento, permite ao usuário navegar, através de uma janela, pelos diretórios e arquivos da máquina, selecionando a foto que deve ser vinculada a um determinado aluno. jlb_foto_aluno: rótulo para apresentação de informações, permite ao sistema mostrar ao usuário a foto que está vinculada a um determinado aluno. Caso o aluno não possua foto uma imagem padrão deve ser apresentada. Deve ser alterada sem que o usuário selecionar um aluno na tabela de alunos (jtb_alunos). Classes Relacionadas Visualização: Controle: Modelo: Utilidade: VCadastroAluno.java CCadastroAluno.java MAlunosDAO.java, MAlunos.java, MCursosDAO.java, MCursos.java Conexão.java Tabelas Relacionadas tb_alunos tb_cursos CLASSES: ESTRUTURA E DESCRIÇÃO mvc.java: Main Estrutura Descrição Trata-se da classe principal do projeto, possui o método estático void main() da aplicação, dentro dele é instanciado um objeto da classe VCadastroAluno.java que irá apresentar a janela inicial do aplicativo. VCadastroAluno.java: Visualização Estrutura Descrição Trata-se de uma classe de visualização, possui uma relação de herança com a classe JFrame, sendo a primeira janela a ser invocada pelo aplicativo, para tal seu construtor instancia e configura todos os componentes gráficos necessários para que seja possível ao usuário manipular e gerenciar as informações dos alunos cadastrados no sistema. Todos os eventos desta classe são controlados pela classe CCadastroAluno.java, por isso uma referência sua é recebida pelo construtor da CCadastroAluno.java. CCadastroAluno.java: Controle Estrutura Descrição Trata-se de uma classe de controle, sendo assim implementa os métodos abstratos das interfaces ActionListener e MouseListener controlando os eventos gerados pela classe de visualização VCadastroAlunos.java. Possui objetos das classes: MAlunosDAO.java e MCursosDAO.java que a permitem ter acesso aos dados armazenados nas tabelas tb_alunos e tb_cursos do banco de dados. MAlunosDAO.java: Modelo Estrutura Descrição Trata-se de uma classe modelo que tem por objetivo manipular as informações armazenadas no banco de dados, possui uma relação de herança com a classe Conexao.java que se encarrega de efetuar e abstrair toda parte de conexão e transação com o banco. Possui uma lista de objetos da classe MAlunos.java que é carregada durante a leitura da tabela tb_alunos do banco de dados. MAlunos.java: Modelo Estrutura Descrição Trata-se de uma classe modelo que tem por objetivo armazenar as informações carregadas do banco de dados e representar, em tempo de execução, a entidade aluno. Cada objeto dessa classe tem por objetivo representar uma linha da tabela tb_alunos. MCursosDAO.java: Modelo Estrutura Descrição Trata-se de uma classe modelo que tem por objetivo manipular as informações armazenadas no banco de dados, possui uma relação de herança com a classe Conexao.java que se encarrega de efetuar e abstrair toda parte de conexão e transação com o banco. Possui uma lista de objetos da classe MCursos.java que é carregada durante a leitura da tabela tb_cursos do banco de dados. Conexão.java: Utilidade Estrutura Descrição Trata-se de uma classe de utilidade, servindo como superclasse para subclasses que precisam conectar e efetuar transações com o banco de dados. Depende do pacote mysql-connector.jar, que precisa ser adicionado ao projeto, já que contém o driver necessário para que comunicação em a aplicação e banco de dados ocorra corretamente.