java任务--GradeSort

这是一个Java应用程序,用户可以输入学生姓名和分数,程序根据分数进行排序,并在文本区域展示排序后的姓名与分数列表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编写一个应用程序,用户分别从两个文本框输入学术的姓名和分数,程序按成绩排序将这些学生的姓名和分数显示在一个文本区中:

import java.awt.*;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;

import javax.swing.*;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;

class Gradesort extends JFrame implements ActionListener{
	JLabel name = new JLabel("姓名");  
	JTextField textname = new JTextField(6);  //文本框用于输入姓名
	JLabel grade = new JLabel("成绩");
	JTextField textgrade = new JTextField(6);//文本框用于输入成绩
	JButton bsure = new JButton("确定");
	JTextArea text = new JTextArea(5,25);    //用于显示的文本区域  
	List<Student> list = new ArrayList<Student>();  //用数组存放输入的数据
	Gradesort(){
		super("学生成绩排序");
		Container contentPane = getContentPane();
		JPanel panel = new JPanel();
		panel.setLayout(new GridLayout(2,3));
		Box box = Box.createHorizontalBox();   //用一个横向的盒式容器,在容器中添加姓名成绩等组件
		box.add(Box.createHorizontalStrut(3));
		box.add(name);
		box.add(textname);
		box.add(Box.createHorizontalStrut(3));
		box.add(grade);
		box.add(textgrade);
		box.add(bsure);
		
		bsure.addActionListener(this);  //为组件按钮bsure添加事件监听
		panel.add(box);  //面板中添加box
		contentPane.add(panel, BorderLayout.NORTH);//将面板添加在容器的最上面
		JScrollPane scroll = new JScrollPane(text);  //在文字区域创建一个滚动条
		contentPane.add(scroll,BorderLayout.CENTER);//将滚动条添加到容器中
		
		setVisible(true);  //刷新,保存设置
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  //设置默认关闭方式
		setSize(500, 400);
	}
	    
		@Override
		public void actionPerformed(ActionEvent a) {   //重写事件监听的方法,只要点击就执行
			// TODO Auto-generated method stub
			 text.setText("");
		     String name = textname.getText().trim();
		     String grade = textgrade.getText().trim();
		     list.add(new Student(name,Float.parseFloat(grade)));  //在list中添加数据
            // text.append("当前插入的信息为:姓名:"+name+"    成绩:"+grade+"\n");
             
             Collections.sort(list);//对数据进行排序
             Iterator<Student> iterator = list.iterator();//为list添加迭代器
			 Student student;
			 while (iterator.hasNext()) {  //只要迭代器中还有数据就执行
				 student = iterator.next();
				 text.append("姓名:"+student.name+"    成绩:"+student.grade+"\n");
				}
		}
}
class Student implements Comparable<Student>{

    String name;
    float grade;

    public Student(String name, float f) {
        super();
        this.name = name;
        this.grade = f;
    }
	@Override
	public int compareTo(Student s) {
		// TODO Auto-generated method stub
		return (int) (s.grade*10 - this.grade*10);
	}
}

Test:

public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Gradesort fram = new Gradesort(); //创建窗口

	}

}

运行结果:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值