java代码实现学生成绩统计程序,输入课程名称,选择考核方式为考试还是考察,若为考试则总成绩为平时分加上考试分数的平均数,若为考察则直接是考察分数,再输入学生的学号、姓名、所有科目的平均成绩,并对学生成绩进行排序
时间: 2023-12-09 19:03:11 浏览: 103
好的,这个问题需要编写一个Java程序来实现。下面是代码实现:
```java
import java.util.*;
public class ScoreStatistics {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
// 输入课程名称
System.out.print("请输入课程名称:");
String courseName = input.nextLine();
// 选择考核方式
System.out.print("请选择考核方式(考试/考察):");
String testType = input.nextLine();
boolean isExam = false;
if (testType.equals("考试")) {
isExam = true;
}
// 输入学生信息
System.out.print("请输入学生数量:");
int studentNum = input.nextInt();
Student[] students = new Student[studentNum];
for (int i = 0; i < studentNum; i++) {
System.out.println("请输入第" + (i+1) + "个学生的信息:");
System.out.print("学号:");
int id = input.nextInt();
input.nextLine(); // 消耗掉多余的换行符
System.out.print("姓名:");
String name = input.nextLine();
System.out.print("平均成绩:");
double avgScore = input.nextDouble();
students[i] = new Student(id, name, avgScore);
}
// 计算成绩并排序
for (int i = 0; i < studentNum; i++) {
double totalScore = 0;
if (isExam) {
System.out.print("请输入第" + (i+1) + "个学生的考试成绩:");
double examScore = input.nextDouble();
totalScore = (students[i].getAvgScore() + examScore) / 2;
} else {
totalScore = students[i].getAvgScore();
}
students[i].setTotalScore(totalScore);
}
Arrays.sort(students, new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
if (o1.getTotalScore() < o2.getTotalScore()) {
return 1;
} else if (o1.getTotalScore() > o2.getTotalScore()) {
return -1;
} else {
return 0;
}
}
});
// 输出成绩排名
System.out.println("成绩排名:");
System.out.println("姓名\t学号\t总成绩");
for (int i = 0; i < studentNum; i++) {
System.out.println(students[i].getName() + "\t" + students[i].getId() + "\t" + students[i].getTotalScore());
}
}
}
class Student {
private int id;
private String name;
private double avgScore;
private double totalScore;
public Student(int id, String name, double avgScore) {
this.id = id;
this.name = name;
this.avgScore = avgScore;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public double getAvgScore() {
return avgScore;
}
public double getTotalScore() {
return totalScore;
}
public void setTotalScore(double totalScore) {
this.totalScore = totalScore;
}
}
```
这个程序实现了以下功能:
1. 输入课程名称和考核方式(考试/考察);
2. 输入学生数量和每个学生的学号、姓名和平均成绩;
3. 根据考核方式计算每个学生的总成绩;
4. 对学生按照总成绩进行降序排序;
5. 输出成绩排名。
注意,这个程序还有一些限制和不足之处,例如没有对输入进行严格判断和异常处理,也没有考虑同分的情况。可以根据实际需要进行改进。
阅读全文