我要做一个学生成绩分析管理系统,现在做到差不多了,最被那成绩统计卡住了,很痛苦啊!我用一个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();