Prova P5A1 de PC-II 2009
1 Nome: Matricula:
Questão 1: (10,0):
Deseja-se construir uma interface gráfica que seja capaz de recuperar das notas de um cadastro de alunos (nome e 4 notas). A Figura 1 fornece uma sugestão de interface gráfica.
Figura 1: Interface gráfica do cadastro de notas dos alunos.
Observe que a Figura 1 fornece uma sugestão de organização dos elementos gráficos e que não necessariamente a sua interface deve ter a mesma organização. Porém, é obrigatória a existência dos mesmos elementos gráficos (JButton, JTextField, etc) que são apresentados na Figura 1. Uma especificação detalhada destes elementos é dada na Tabela 1. Construir as funcionalidades relacionadas a cada elemento gráfico descrito na Figura 1 de acordo com o detalhado na Tabela 1.
Pontuação Elemento Detalhamento funcional
Item (A):(4,0) JMenuItem Ao ser selecionado deverá mostrar em JTable os dados de nome e 4 notas de provas de cada aluno que estão armazenados em um arquivo .txt. Além disso, deverá ser calculada a média de cada aluno.
Item (B): (3,0) JButton1 Calcular a média da turma e número de alunos com média menor que 7.0 e colocar estes resultados nos campos JTextField1 e JTextField2, respectivamente.
Item (C): (3,0) JButton2 A partir dos valores das médias dos alunos construir o gráfico dado em Figura que representa o número de notas nos intervalos: [0,2), [2,4), [4,6), [6,8) e [8,10].
Tabela 1: Elementos gráficos e a descrição de suas funcionalidades.
Prova P5A1 de PC-II 2009
2 Observações importantes:
Item (B): Para calcular a média da turma a partir dos valores de média de cada aluno armazenadas na JTable é útil empregar os seguintes comandos:
aux = Double.parseDouble((String) modeloEntrada.getValueAt(i,5));
Item (C): Para a construção do gráfico é útil empregar a seguinte seqüência de comandos:
Graphics g = p12.getGraphics();
int largura = p12.getWidth()/10;
int altura = p12.getHeight()/10;
// Percorrendo a tabela e obtendo a frequencia de ocorrencia de notas.
for (int i=0; i < 5; i++) {
switch (i) {
case 0:
g.setColor(Color.RED);
break;
case 1:
g.setColor(Color.ORANGE);
break;
case 2:
g.setColor(Color.YELLOW);
break;
case 3:
g.setColor(Color.GREEN);
break;
default:
g.setColor(Color.BLUE);
}
g.fillRect(largura*i+largura*3, altura*9-altura*freq[i], largura, altura*freq[i]);
}