我就直接上代码,多捞哦,哎,小老板你很皮
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;
}//记录创建完成
}
}