我要做一个学生成绩分析管理系统,现在做到差不多了,最被那成绩统计卡住了,很痛苦啊!我用一个hashtable存着学号,姓名,科目,班级,分数等信息,现要提供一个界面输入科目,班级这二项信息,然后输出考生人数,最高分,最低分,平均分,及格人数等信息。我已经完成界面了,但统计考生人数,最高分,最低分,平均分,及格人数的算法却不会。请问各位达人有何良策啊?我的想法是先匹配科目,班级,然后把hashtable中的每个对象中能同时匹配这两项的对象中分数那一项提取出来,如果能的话,后面的我就会做了。但现在我就是不会这个把能匹配的每一个对象中的分数提出来!请问各位这该如何解决呢?还是各位大大认为小弟很蠢,其实这有其他更好的解决方法?
小的第一次来这里提问,没有多少分数,不好意思下面给出我的一些代码:import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.util.*;
public class GradeAnalyse extends JDialog implements ActionListener
{
Hashtable 基本信息表=null;
JTextField 班级,科目,考生人数,最高分,最低分,平均分,及格人数;
JButton 分析;
FileInputStream inOne=null;
ObjectInputStream inTwo=null;
File file=null;
public GradeAnalyse(JFrame f,File file)
{
super(f,"数字型成绩分析框",false);
this.file=file;
班级=new JTextField(10);
科目=new JTextField(10);
考生人数=new JTextField(10);
考生人数.setEditable(false);
分析=new JButton("分析");
班级.addActionListener(this);
科目.addActionListener(this);
分析.addActionListener(this);
最高分=new JTextField(10);
最高分.setEditable(false);
最低分=new JTextField(10);
最低分.setEditable(false);
平均分=new JTextField(10);
平均分.setEditable(false);
及格人数=new JTextField(10);
及格人数.setEditable(false);
Box box1=Box.createHorizontalBox();
box1.add(new JLabel("输入要查询的班级:",JLabel.CENTER));
box1.add(班级);
box1.add(分析);
Box box2=Box.createHorizontalBox();
box2.add(new JLabel("查询科目:",JLabel.CENTER));
box2.add(科目);
Box box3=Box.createHorizontalBox();
box3.add(new JLabel("最高分:",JLabel.CENTER));
box3.add(最高分);
Box box4=Box.createHorizontalBox();
box4.add(new JLabel("最低分:",JLabel.CENTER));
box4.add(最低分);
Box box5=Box.createHorizontalBox();
box5.add(new JLabel("平均分:",JLabel.CENTER));
box5.add(平均分);
Box box6=Box.createHorizontalBox();
box6.add(new JLabel("及格人数:",JLabel.CENTER));
box6.add(及格人数);
Box boxH=Box.createVerticalBox();
boxH.add(box1);
boxH.add(box2);
boxH.add(box3);
boxH.add(box4);
boxH.add(box5);
boxH.add(box6);
boxH.add(Box.createVerticalGlue());
JPanel pCenter=new JPanel();
pCenter.add(boxH);
Container con=getContentPane();
con.add(pCenter,BorderLayout.CENTER);
con.validate();
setVisible(false);
setBounds(474,222,360,270);
addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e)
{
setVisible(false);
}
});
}
public void actionPerformed(ActionEvent e)
{
考生人数.setText(null);
最高分.setText(null);
最低分.setText(null);
平均分.setText(null);
及格人数.setText(null);
/** if(e.getSource()==分析||e.getSource()==班级||e.getSource()==科目)
{
String grade="";
grade=班级.getText();
String disciping="";
disciping=科目.getText();
小的第一次来这里提问,没有多少分数,不好意思下面给出我的一些代码:import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.util.*;
public class GradeAnalyse extends JDialog implements ActionListener
{
Hashtable 基本信息表=null;
JTextField 班级,科目,考生人数,最高分,最低分,平均分,及格人数;
JButton 分析;
FileInputStream inOne=null;
ObjectInputStream inTwo=null;
File file=null;
public GradeAnalyse(JFrame f,File file)
{
super(f,"数字型成绩分析框",false);
this.file=file;
班级=new JTextField(10);
科目=new JTextField(10);
考生人数=new JTextField(10);
考生人数.setEditable(false);
分析=new JButton("分析");
班级.addActionListener(this);
科目.addActionListener(this);
分析.addActionListener(this);
最高分=new JTextField(10);
最高分.setEditable(false);
最低分=new JTextField(10);
最低分.setEditable(false);
平均分=new JTextField(10);
平均分.setEditable(false);
及格人数=new JTextField(10);
及格人数.setEditable(false);
Box box1=Box.createHorizontalBox();
box1.add(new JLabel("输入要查询的班级:",JLabel.CENTER));
box1.add(班级);
box1.add(分析);
Box box2=Box.createHorizontalBox();
box2.add(new JLabel("查询科目:",JLabel.CENTER));
box2.add(科目);
Box box3=Box.createHorizontalBox();
box3.add(new JLabel("最高分:",JLabel.CENTER));
box3.add(最高分);
Box box4=Box.createHorizontalBox();
box4.add(new JLabel("最低分:",JLabel.CENTER));
box4.add(最低分);
Box box5=Box.createHorizontalBox();
box5.add(new JLabel("平均分:",JLabel.CENTER));
box5.add(平均分);
Box box6=Box.createHorizontalBox();
box6.add(new JLabel("及格人数:",JLabel.CENTER));
box6.add(及格人数);
Box boxH=Box.createVerticalBox();
boxH.add(box1);
boxH.add(box2);
boxH.add(box3);
boxH.add(box4);
boxH.add(box5);
boxH.add(box6);
boxH.add(Box.createVerticalGlue());
JPanel pCenter=new JPanel();
pCenter.add(boxH);
Container con=getContentPane();
con.add(pCenter,BorderLayout.CENTER);
con.validate();
setVisible(false);
setBounds(474,222,360,270);
addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e)
{
setVisible(false);
}
});
}
public void actionPerformed(ActionEvent e)
{
考生人数.setText(null);
最高分.setText(null);
最低分.setText(null);
平均分.setText(null);
及格人数.setText(null);
/** if(e.getSource()==分析||e.getSource()==班级||e.getSource()==科目)
{
String grade="";
grade=班级.getText();
String disciping="";
disciping=科目.getText();
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货