import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.event.*;
import java.util.Collections;
import java.util.Comparator;
import java.util.Vector;
class Student{ //先创建一个学生类 包含学号(sno) 成绩(grade)
String sno;
int grade;
public Student(String s,int g) {
sno=s;
grade=g;
}
public String getsno() {
return sno; //读取学号
}
public int getgrade() {
return grade; //读取成绩
}
public void changegrade(int x) {
grade=x; //当输入相同学号的学生时用来更新数据
}
}
public class Grades extends JFrame {
Vector<Student> students;
鼠标 h;
//主界面的组件
JPanel 输入 , 查询 , 排序;
JTabbedPane 选项卡;
//输入成绩界面使用的组件
Box box1_输入,box2_输入,baseBox_输入;
JButton jb_输入;
JTextField jtf1_输入,jtf2_输入,jtf3_输入,jtf4_输入;
//查询成绩界面使用的组件
Box box1_查询,box2_查询,baseBox_查询;
JButton jb_查询;
JLabel jla_查询,show_查询;
JTextField jtf_查询;
JTextArea JTA_查询;
//成绩排序界面使用的组件
Box box1_排序,box2_排序;;
JButton jb_排序;
JTextArea JTA_排序;
//创建专门用来处理鼠标点击事件的类
class 鼠标 implements ActionListener{
public void actionPerformed(ActionEvent e) {
if(e.getSource() == jb_输入) { //输入功能
int flag=0;
String s = jtf1_输入.getText();
int gra = Integer.parseInt( jtf2_输入.getText() );
Student stu = new Student( s, gra );
for(int i=0;i<students.size();i++) {
String t = students.get(i).getsno(); //遇到相同学号更新该同学的成绩数据
if(s.equals(t)) {
flag=1;
students.get(i).changegrade(gra);
}
}
if(flag==0) {
students.add( stu );
JOptionPane.showMessageDialog( null, "输入成功","输入数据",JOptionPane.PLAIN_MESSAGE );
}
else {
JOptionPane.showMessageDialog( null, "修改该学生成绩成功","修改成绩",JOptionPane.PLAIN_MESSAGE );
}
jtf1_输入.setText( null );
jtf2_输入.setText( null ); //输入成功后清空 等待下一次输入
}
else if(e.getSource()==jb_查询) {
int flag=0;
String s = jtf_查询.getText();
for(int i=0;i<students.size();i++) {
String t = students.get(i).getsno();
if(s.equals(t)) {
flag=1;
JTA_查询.setText("存在该学生:\n\n");
JTA_查询.append("学号:"+s+" 成绩:"+students.get(i).getgrade());
break;
}
}
if(flag==0) {
JTA_查询.setText("查询失败\n 不存在学号为"+s+"的学生");
}
}
else if(e.getSource()==jb_排序) {
if(students.size()>0) {
Collections.sort( students, new Comparator() {
public int compare( Object o1, Object o2 )
{
return ((Student)o2).getgrade()-((Student)o1).getgrade();
}
});
JTA_排序.setText("学生成绩由高到低为:\n");
for(int i=0;i<students.size();i++) {
JTA_排序.append("学号为:"+students.get(i).getsno()+"的成绩为 "+students.get(i).getgrade()+"\n");
}
}
else {
JTA_排序.setText("暂无学生成绩数据");
}
}
}
}
public Grades() {
super("成绩");
students = new Vector<Student>();
h = new 鼠标();
输入 = new JPanel();
查询 = new JPanel();
排序 = new JPanel();
选项卡 = new JTabbedPane();
选项卡.add("成绩输入",输入);
选项卡.add("成绩查询",查询);
选项卡.add("成绩排序",排序);
this.add(选项卡);
this.setSize(500,600);
this.setLocation(400, 200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
输入.setLayout(new FlowLayout());
jtf1_输入 = new JTextField(12);
jtf2_输入 = new JTextField(12);
jtf3_输入 = new JTextField("学号");
jtf4_输入 = new JTextField("成绩");
jtf3_输入.setFont(new Font("宋体",Font.BOLD,20));
jtf4_输入.setFont(new Font("宋体",Font.BOLD,20));
jtf3_输入.setEditable(false);
jtf4_输入.setEditable(false);
jb_输入 = new JButton( "确认" );
jb_输入.addActionListener( h );
box1_输入 = Box.createHorizontalBox();
box1_输入.add( jtf3_输入 );
box1_输入.add(Box.createHorizontalStrut(12) );
box1_输入.add( jtf1_输入 );
box2_输入 = Box.createHorizontalBox();
box2_输入.add( jtf4_输入 );
box2_输入.add(Box.createHorizontalStrut(12));
box2_输入.add( jtf2_输入 );
baseBox_输入 = Box.createVerticalBox();
baseBox_输入.add( Box.createVerticalStrut(60) );
baseBox_输入.add( box1_输入 );
baseBox_输入.add( Box.createVerticalStrut(15) );
baseBox_输入.add( box2_输入 );
baseBox_输入.add( Box.createVerticalStrut(160) );
baseBox_输入.add( jb_输入 );
输入.add( baseBox_输入 );
//查询成绩界面
查询.setLayout( new FlowLayout() );
jla_查询 = new JLabel( "学号" );
jla_查询.setFont(new Font("宋体",Font.BOLD,20));
jtf_查询 = new JTextField(12);
jb_查询 = new JButton( "查询" );
jb_查询.addActionListener( h );
JTA_查询 = new JTextArea( 20, 30 );
JTA_查询.setEditable( false );
box1_查询 = Box.createHorizontalBox();
box1_查询.add( Box.createHorizontalStrut(30) );
box1_查询.add( jla_查询 );
box1_查询.add( Box.createHorizontalStrut(18) );
box1_查询.add( jtf_查询 );
box1_查询.add( Box.createHorizontalStrut(30) );
box2_查询 = Box.createVerticalBox();
box2_查询.setPreferredSize( new Dimension( 200,350 ) );
box2_查询.add( new JScrollPane( JTA_查询 ) );
baseBox_查询 = Box.createVerticalBox();
baseBox_查询.add( Box.createVerticalStrut(10) );
baseBox_查询.add( box1_查询 );
baseBox_查询.add( Box.createVerticalStrut(15) );
baseBox_查询.add( jb_查询 );
baseBox_查询.add( Box.createVerticalStrut(25) );
baseBox_查询.add( box2_查询 );
查询.add( baseBox_查询 );
//成绩排序界面
box1_排序 = Box.createHorizontalBox();
box2_排序 = Box.createVerticalBox();
box2_排序.setPreferredSize( new Dimension( 300,450 ) );
jb_排序 = new JButton( "排序" );
jb_排序.addActionListener( h );
JTA_排序 = new JTextArea( 25, 30 );
box2_排序.add( Box.createVerticalStrut( 20 ) );
box2_排序.add( new JScrollPane( JTA_排序 ) );
box1_排序.add( jb_排序 );
box1_排序.add( Box.createHorizontalStrut(50) );
box2_排序.add( box1_排序 );
排序.add( box2_排序 );
}
public static void main(String args[]) {
Grades g= new Grades();
}
}