java实现最低优先排序

我就直接上代码,多捞哦,哎,小老板你很皮

package lsd;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.util.Scanner;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;


public class LSD {//最低位优先
public 	Applicant applicants[];
public	int number;
int limiter_number;//录取的人数,由你输入
	LSD(Applicant app[],int n){
		applicants=app;
		number=n;
	}
	/**下面对记录开始排序,用稳定的冒泡排序法**/
public	void Bubblesort_score() {
	int k=number;
	boolean all=true;
	do {
		all=true;
		for(int m=1;m<=k-1;m++) {
			int i=m+1;
			if(applicants[m].score<applicants[i].score) {//比较分数
				Applicant min=applicants[m];
				applicants[m]=applicants[i];
				applicants[i]=min;
				all=false;
			}
		}
		k--;
	}while((all!=true)&&(k!=1));
}
public void Bubblesort_category() {
	int k=number;
	boolean all=true;
	do {
		all=true;
		for(int m=1;m<=k-1;m++) {
			int i=m+1;
			if(applicants[m].category<applicants[i].category) {//比较类别,这里大的往前排
				Applicant min=applicants[m];
				applicants[m]=applicants[i];
				applicants[i]=min;
				all=false;
			}
		}
		k--;
	}while((all!=true)&&(k!=1));
}
void Printf_notice() {
	Bubblesort_score();
	Bubblesort_category();
	/**注意调用排序方法的顺序**/
	System.out.print("请输入您要录取的人数:");
	Scanner scan=new Scanner(System.in);
	 limiter_number=scan.nextInt();
	 if(limiter_number<=number) {//排好序了,可以打印了
		 for(int i=1;i<=limiter_number;i++) {
			 new Certificate(applicants[i].name,applicants[i].politics,applicants[i].Chinese,applicants[i].Math,applicants[i].physics,applicants[i].chemistry,applicants[i].score);
			 System.out.print(" "+applicants[i].name+"+"+applicants[i].politics+"+"+applicants[i].Chinese+"+"+applicants[i].Math+"+"+applicants[i].physics+"+"+applicants[i].chemistry+"+"+applicants[i].score+"  "+applicants[i].category);
		 }
	 }else {
		 for(int i=1;i<=number;i++) {//全部输出
			 new Certificate(applicants[i].name,applicants[i].politics,applicants[i].Chinese,applicants[i].Math,applicants[i].physics,applicants[i].chemistry,applicants[i].score);
			 System.out.print(" "+applicants[i].name+"+"+applicants[i].politics+"+"+applicants[i].Chinese+"+"+applicants[i].Math+"+"+applicants[i].physics+"+"+applicants[i].chemistry+"+"+applicants[i].score+"  "+applicants[i].category);
		 }
		 
	 }
}
class Certificate extends JFrame{
	JPanel jp1,jp2;
	JLabel name_label;
	JLabel polictic_label;
	JLabel chinese_label;
	JLabel math_label;
	JLabel physics_label;
	JLabel chemistry_label;
	JLabel score_label;
	public Certificate(String na,int p,int c,int ma,int ph,int che,int sc) {
		jp1=new JPanel();
		jp2=new JPanel();
		name_label=new JLabel(na);
		polictic_label=new JLabel("政治成绩:"+p);
		chinese_label=new JLabel("语文成绩:"+c);
		math_label=new JLabel("数学成绩"+ma);
		physics_label=new JLabel("物理成绩:"+ph);
		chemistry_label=new JLabel("化学成绩:"+che);
		score_label=new JLabel("总分:"+sc);
		jp1.setLayout(new FlowLayout(FlowLayout.CENTER, 5,5));
		jp2.setLayout(new FlowLayout(FlowLayout.CENTER, 5,5));
		jp1.add(name_label);
		jp2.add(polictic_label);
		jp2.add(chinese_label);
		jp2.add(math_label);
		jp2.add(physics_label);
		jp2.add(chemistry_label);
		jp2.add(score_label);
		Container con=this.getContentPane();
		con.setLayout(new BorderLayout());
		con.add(jp1,BorderLayout.NORTH);
		con.add(jp2,BorderLayout.CENTER);
		name_label.setFont(new Font(Font.MONOSPACED, Font.BOLD, 25));
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setVisible(true);
		this.setBounds(300,200,600,200);
		// TODO Auto-generated constructor stub
	}
}

}
package lsd;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class Record {
	Applicant applicants[];//一维数组的形式存放应聘者记录
	int number;//应聘者人数
	File file;
	BufferedReader read;
	Record(String path) throws NumberFormatException, IOException{
		file=new File(path);
		read=new BufferedReader(new FileReader(file));
		number=Integer.parseInt(read.readLine());//文件第一行即应聘者人数,都取出来,实例化数组
		applicants=new Applicant[number+1];//从下表为1开始放记录
		for(int m=1;m<=number;m++) {
			applicants[m]=new Applicant();//数组的实例化
			//在要用到数组里面的每一个元素使必须挨个实例化,而不是只applicants=new Applicant[number+1];这样实例化
		}
		String name_line1=null;
		int politics_line2=0;
		int Chinese_line3=0;
		int Math_line4=0;
		int Physics_line5=0;
		int Chemistry_line6=0;
		int category=0;//应聘者所属类别,5门都及格则category=5
		//文件里6行是一个人的信息,第一行是姓名,后5行是5门成绩	
		int i=0;
		while((name_line1=read.readLine())!=null) {//第一行是姓名
			i++;//当前读的这6行是第几个人的
			for(int line=1;line<=6;line++) {//每6行6行地读
				if(line==1) {
					applicants[i].name=name_line1;
				}else if(line==2) {
					politics_line2=Integer.parseInt(read.readLine());
					if(politics_line2>=60) {
						category++;
					}
					applicants[i].politics=politics_line2;
				}else if(line==3) {
					Chinese_line3=Integer.parseInt(read.readLine());
					if(Chinese_line3>=60) {
						category++;
					}
					applicants[i].Chinese=Chinese_line3;
				}else if(line==4) {
					Math_line4=Integer.parseInt(read.readLine());
					if(Math_line4>=60) {
						category++;
					}
					applicants[i].Math=Math_line4;
				}else if(line==5) {
					Physics_line5=Integer.parseInt(read.readLine());
					if(Physics_line5>=60) {
						category++;
					}
					applicants[i].physics=Physics_line5;
				}else if(line==6) {
					Chemistry_line6=Integer.parseInt(read.readLine());
					if(Chemistry_line6>=60) {
						category++;
					}
					applicants[i].chemistry=Chemistry_line6;
				}else {System.out.println("出错,不可能的,除非我有女朋友了");}
			}
			if(category<3) {
				category=2;//及格数目小于三门的都属于第四类,这里赋予最小的2
			}
			applicants[i].score=(politics_line2+Chinese_line3+Math_line4+Physics_line5+Chemistry_line6);//给他总分
			applicants[i].category=category;//类别
			category=0;
		}//记录创建完成
	}

}

猜你喜欢

转载自blog.csdn.net/hrwy2920566283/article/details/81070463
今日推荐