Olá tenho que entregar este trabalho na faculdade hj e estou apanhando feio.
Olhem só :
Ele está somando as notas das matérias…
e se colocar mais de 2 alunos ele só faz de um aluno não faz do 2º e da a mensagem java.lang.ArrayIndexOutOfBoundsException: 4
Olhem como está:
[color=green][/color][code]
package avaliacao;
import aluno.;
import javax.swing.;
/**
-
class Avaliacao
-
Esta classe e respónsavel por guardar
-
calculos da avaliacao do aluno como
-
nota, total e media
-
@name class Avaliacao
-
@access public
*/
public class Avaliacao {public float nota[] =new float [4];
public float total = 0;
public float media[] = new float[4];
int c = 0;
int m = 0;
int n = 0;/**Responsável por buscar dados e calcular a media dos alunos
- com as notas digitadas
- @name mediaAluno()
- @access public
- @type float
-
@return mediaAluno()
*/
public float mediaAluno() {
JOptionPane.showMessageDialog(null,"Calculo da media do aluno(a): "+Aluno.nome[m]);
for (c = 0; c<=Aluno.qtdAluno; c++) {
for (m =0; m<=Aluno.materia.length; m++) {
for (n=0;n<4;n++) {
nota[n] = Float.parseFloat(JOptionPane.showInputDialog("Digite a "+(n+1)+"ª nota de " +Aluno.materia[m]+ " do(a) aluno(a) "+Aluno.nome[c]));
total += nota[n];
media[n] = total/4;
System.out.println("total nota de " + Aluno.materia[m] + total);
System.out.println("media de " + Aluno.materia[m]+ media[n]);
//break;
}
}
}
return mediaAluno();
}
}
[/code]
[color=olive][/color][code]
package aluno;
import menu.Menu;
import avaliacao.Avaliacao;
public class Programa {
private static Avaliacao av;
/**
* @param args
*/
public static void main (String []args) {
Menu menu = new Menu();
av = new Avaliacao();
menu.MenuPrograma();
return;
}
}[/code]
[color=green][/color][code]
package menu;
import javax.swing.JOptionPane;
import aluno.;
import avaliacao.;
public class Menu {
public int opcao =0;
Aluno al = new Aluno();
Avaliacao av = new Avaliacao();
/**
*
* @return
*/
public String MenuPrograma() {
opcao = Integer.parseInt(JOptionPane.showInputDialog( "--SISPRO-- MENU OPCÕES:\n1-CADASTRA;\n2-SAIR;\n3-relatorio.\n digite sua opcao."));
while (opcao !=0) {
switch (opcao) {
case 1:
if (al.qtdAluno() == 0){
al.qtdAluno();
} else {
al.cadastraAluno();
av.mediaAluno();
al.frequencia();
al.aprovacao();
MenuPrograma();
}
break;
case 2:
al.sair();
return al.sair();
case 3:
int resp = 0;
//al.relatorio();
resp = Integer.parseInt(JOptionPane.showInputDialog("Deseja Voltar ao Menu?\n 1-SIM\n 2-NÃO: "));
if (resp == 1) {
MenuPrograma();
//break;
} else {
return al.sair();
}
//break;
default: JOptionPane.showMessageDialog(null, "Valor invalido, Tente novamente.");
return MenuPrograma();
}
}
return null;
}
}[/code]
[color=olive][/color][code]
package aluno;
import javax.swing.JOptionPane;
/**
-
class Aluno
-
Esta classe e respónsavel por guarda as principais
-
informações dos alunos como
-
nome, matricula, materias
-
e principais funções
-
cadastrar, pesquisar e sair.
-
@name class Aluno
-
@access public
-
@author 700424Marcos, 0700499Taís, 0700542Vanessa
-
@version 0.0.3
*/
public class Aluno {public static String nome[] = new String[5];
public int matricula = 0;
public static String materia[] = { “Portugues”, “Matematica”, “Ciencias”, “Estudos Sociais” };
public float nota[][] = new float[10][10];
public float media[][] = new float[10][10];
public float diaAula[] = new float[4];
public float frequencia[] = new float[4];
public float diaFalta[] = new float[4];
public float falta[] = new float[4];
public static int qtdAluno = 0;
public float total;
int c, n, i, m = 0;
/**- principal função saber quantos alunos o usuário quer cadastrar
- Caso seja digitado um valor invalido retornara uma mensagem de erro.
- @name qtdAluno()
- @access public
- @type int
- @since
- */
public int qtdAluno() {
qtdAluno = Integer.parseInt(JOptionPane.showInputDialog(“Digite a quantidade de alunos para cadastro”));
c = qtdAluno;
System.out.println("Quantidade " + c);
if (qtdAluno == 0) {
JOptionPane.showMessageDialog(null, “Quantidade inválida”);
qtdAluno();
} else {} return c;
}
/**- Responsavel por guardar os dados digitados pelo usuário
- como nome do aluno, quantidade de aluno, matérias.
- @name cadastraAluno()
- @access public
- @type String[]
- @return nome
- */
public String[] cadastraAluno() {
for (c = 0; c <= qtdAluno - 1; c++) {
nome[c] = JOptionPane.showInputDialog("Digite o nome do aluno. ");
matricula += c;
System.out.println("matricula " + matricula + " nome " + nome[c]);
}
// System.out.println("matricula " + matricula + "nome " + nome[c]);
materia[c] += (“MATERIAS:” + materia[c]);
return nome;
}
/**
- Responsável por buscar as matérias já cadastradas
- @name materia()
- @acess public
- @type String[]
- @return materia
/
public String[] materia() {
for (m = 0; m < materia.length; m++) {
System.out.println("MATERIAS: " + materia[m]);
}
return materia;
}
/*-
principal função gerar relatorio com os sequintes dados:
*nome, matricula, materias com as médias. -
@name relatorio()
-
@access public
-
@type String
-
@return null
-
/
public String relatorio() {
for (c = 1; c <= 2; c++) {
for (m = 1; m <= 4; m++) {
JOptionPane.showMessageDialog(null, “nome aluno\n” + nome[c]
+ “matricula\n” + matricula + “media\n” + media[i]
+ “\nmaterias:\n” + materia[m]);
}
}
return null;
}
/* -
principal função captura a opção de saida do programa
- digitada pelo usuário e fecha o programa
-
@name sair()
-
@access public
-
@type String
-
@return “”
-
/
public String sair() {
JOptionPane.showMessageDialog(null, “Fim do programa”);
System.exit(0);
return “”;
}
/* -
Responsavel por buscar os dados e calcular as notas e
- médias digitados pelo usuário
-
@name frequencia()
-
@access public
-
@param boolean
-
*/
public boolean frequencia() {
System.out.println(“inicio frequencia.”);
for (c = 0; c <= qtdAluno; c++) {
diaAula[i] = Float.parseFloat(JOptionPane
.showInputDialog("digite o total de aulas do aluno ? "));
falta[i] = Float.parseFloat(JOptionPane
.showInputDialog("digite o total de faltas do aluno ? "));frequencia[i] = (float) (diaAula[i] * 0.75); diaFalta[i] = diaAula[i] - falta[i]; System.out.println("frequencia" + frequencia); System.out.println("diaFalta" + diaFalta[i]);
}
if (diaFalta[i] <= frequencia[i]) {
System.out.println(“Aluno reprovado.”);
return false;
} else {
System.out.println(“Aluno aprovado.”);
return true;
}
}
/**
- Responsavel em dar mensagem se aprovado ou reprovado
- de acordo com a média do aluno
- @name aprovacao()
- @access public
- @param boolean
- */
public boolean aprovacao() {
for (i = 0; i < 2; i++) {
if ((media[i][c] == 6) && (frequencia() == false)) {
System.out.println(“Reprovado por faltas”);
return false;
} else if ((media[i][c] < 6) && (frequencia() == true)) {
System.out.println(“aprovado”);
return true;
} else if (frequencia() == true) {
System.out.println(“reprovado por nota”);
return false;
} else {
System.out.println(“Reprovado por faltas e notas.”);
return true;
}
}
return false;
}
}[/code]
Com o Erro
[color=red]
java.lang.ArrayIndexOutOfBoundsException: 4
at avaliacao.Avaliacao.mediaAluno(Avaliacao.java:34)
at menu.Menu.MenuPrograma(Menu.java:25)
at aluno.Programa.main(Programa.java:17)
[/color]