设计一个课程管理系统,能录入各科目及学生成绩,排名,显示总分及平均分。
用数组来实现,一维的二维的还有字符数组,最主要的还是如何进行排名问题,我们都知道java数组有这强大的功能,有自动升阶排序,但放在这里显然行不同,如何将一个学生的信息完整的按平均分来正确排名次呢,既有名字也有分数,于是,我们可以用一个字符数组,将他们串连起来,放在字符数组里面,然后我们对这个字符数组按照平均分来用选择排序就行了。
具体代码如下:
import java.util.*;
public class 课程管理系统 {
public static void main(String[] agrs){
Scanner input=new Scanner(System.in);
System.out.print("请输入学生人数:");
int student=input.nextInt();
System.out.print("请输入课程数:");
int course=input.nextInt();
int [][] arr=new int[student][course+3];
String [] name=new String[student];
String [] biaoti=new String[course+4];
String [] str=new String[student];
biaoti[0]="姓名";
biaoti[course+1]="平均分";
biaoti[course+2]="总分";
biaoti[course+3]="排名";
int sum=0;
//定义课程名
for(int i=1;i<=course;i++){
System.out.print("请定义第"+i+"门课程名:");
biaoti[i]=input.next();
}
for(int i=0;i<student;i++){
System.out.print("请输入第"+(i+1)+"个学生姓名:");
name[i]=input.next();
for(int j=1;j<=course;j++){
System.out.print("请输入"+name[i]+"的"+biaoti[j]+"成绩");
arr[i][j-1]=input.nextInt();
sum+=arr[i][j-1];
}
arr[i][course]=sum/course;
arr[i][course+1]=sum;
sum=0;
}
for(int i=0;i<student;i++){
String s=" ";
for(int j=0;j<course+2;j++){
s+=arr[i][j]+"\t";
}
str[i]=name[i]+"\t"+s;
}
for(int i=0;i<course+4;i++){
System.out.print(biaoti[i]+"\t");
}
//排名
for(int i=0;i<student-1;i++){
for(int j=i+1;j<student;j++){
if(arr[i][course]>arr[j][course])
{
String max;
max=str[j];
str[j]=str[i];
str[i]=max;
}
}
}
System.out.println();
for(int i=student-1,j=1;i>=0;i--,j++){
System.out.println(str[i]+"第"+j+"名");
}
}
}