Java implements test score and ranking statistics of online examination system
In modern education, more and more schools and institutions choose to use online examination systems to conduct examinations and assess students’ abilities. In order to better manage and analyze test scores, an important function is to count and rank students' test performance. In this article, I will show you how to use Java to implement exam score and ranking statistics for an online exam system.
First of all, we need to make it clear that the system needs to include the following main categories: Student, Exam, ExamScore, and ScoreStatistics. , and the main class (Main) to initialize data and run the entire system.
First, let’s create the Student class:
public class Student { private String name; private int studentId; public Student(String name, int studentId) { this.name = name; this.studentId = studentId; } // getter 和 setter 方法省略 @Override public String toString() { return "Student{" + "name='" + name + ''' + ", studentId=" + studentId + '}'; } }
The Student class has two attributes: name and student number. We use the constructor to initialize the student object and provide corresponding getter and setter methods, as well as an overridden toString() method to conveniently output student information.
Next, we create the exam class (Exam):
public class Exam { private String subject; private List<ExamScore> scores; public Exam(String subject) { this.subject = subject; this.scores = new ArrayList<>(); } public void addScore(ExamScore score) { scores.add(score); } // getter 和 setter 方法省略 // 计算平均分方法 public double calculateAverageScore() { double totalScore = 0; int count = 0; for (ExamScore score : scores) { totalScore += score.getScore(); count++; } return totalScore / count; } @Override public String toString() { return "Exam{" + "subject='" + subject + ''' + ", scores=" + scores + '}'; } }
The exam class has two attributes: subjects and test score list. We use the constructor to initialize the exam object and provide a method to add exam scores, as well as corresponding getter and setter methods. In addition, we also provide a method to calculate the average score of the exam and override the toString() method to output the exam information.
Then, we create the exam score class (ExamScore):
public class ExamScore { private Student student; private double score; public ExamScore(Student student, double score) { this.student = student; this.score = score; } // getter 和 setter 方法省略 @Override public String toString() { return "ExamScore{" + "student=" + student + ", score=" + score + '}'; } }
The exam score class has two attributes: students and scores. We use the constructor to initialize the test score object and provide corresponding getter and setter methods, as well as an overridden toString() method to output the test score information.
Next, we create the score statistics class (ScoreStatistics):
public class ScoreStatistics { private List<ExamScore> scores; public ScoreStatistics(List<ExamScore> scores) { this.scores = scores; } public void printExamScores() { for (ExamScore score : scores) { System.out.println(score); } } public void printRanking() { Collections.sort(scores, Comparator.comparingDouble(ExamScore::getScore).reversed()); int rank = 1; for (ExamScore score : scores) { System.out.println("Rank " + rank + ": " + score.getStudent().getName() + ", Score: " + score.getScore()); rank++; } } }
The score statistics class has a score list attribute. We use the constructor to initialize the statistics object and provide two methods to output test scores and rankings. When outputting the rankings, we use the Collections.sort() method to sort the grade list in descending order based on the score, and use the Comparator.comparingDouble() method to specify the basis for sorting. We then use a loop to output each student's rank and score.
Finally, we create the main class (Main) to initialize the data and run the entire system:
public class Main { public static void main(String[] args) { // 初始化学生对象 Student student1 = new Student("张三", 1001); Student student2 = new Student("李四", 1002); Student student3 = new Student("王五", 1003); // 初始化考试成绩对象 ExamScore score1 = new ExamScore(student1, 80); ExamScore score2 = new ExamScore(student2, 90); ExamScore score3 = new ExamScore(student3, 85); // 初始化考试对象 Exam exam = new Exam("数学"); // 添加考试成绩到考试对象 exam.addScore(score1); exam.addScore(score2); exam.addScore(score3); // 创建成绩统计对象 List<ExamScore> scores = new ArrayList<>(); scores.add(score1); scores.add(score2); scores.add(score3); ScoreStatistics statistics = new ScoreStatistics(scores); // 输出考试成绩和排名 System.out.println("Exam Scores:"); statistics.printExamScores(); System.out.println(); System.out.println("Exam Ranking:"); statistics.printRanking(); } }
In the main class, we first create the student and test score objects, and add the test to the Scores are added to the exam object. Then, we create a score statistics object and use this object to output test scores and rankings.
Run this program and you will see the following output:
Exam Scores: ExamScore{student=Student{name='张三', studentId=1001}, score=80.0} ExamScore{student=Student{name='李四', studentId=1002}, score=90.0} ExamScore{student=Student{name='王五', studentId=1003}, score=85.0} Exam Ranking: Rank 1: 李四, Score: 90.0 Rank 2: 王五, Score: 85.0 Rank 3: 张三, Score: 80.0
The above is the sample code for using Java to implement test score and ranking statistics of the online examination system. Through this system, you can easily manage and analyze students' test scores and rank students according to their scores. Of course, this is just a simple example and you can expand and optimize it according to your actual needs. Good luck writing your online exam system!
The above is the detailed content of Java implements test score and ranking statistics of online examination system. For more information, please follow other related articles on the PHP Chinese website!