要求
使用常量定义成绩权值
设计一个测试类完成测试
思路
学生类的设计:首先,我定义了一个Student
类,包括姓名、学号和各科成绩等信息作为数据成员,并提供了构造方法来初始化这些数据成员。同时,我还添加了修改单科成绩、求平均成绩和求带权值的总成绩等方法成员。
构造方法:构造方法用于在创建对象时对数据成员进行初始化,接受姓名、学号以及各科成绩作为参数,并将其赋值给对应的数据成员。
修改单科成绩的方法:提供了针对每门课程的成绩进行修改的方法,以便在需要时更新学生成绩信息。
求平均成绩的方法:根据学生的各科成绩,计算出平均成绩并返回。
求带权值的总成绩的方法:根据预先定义好的权值,计算出带权值的总成绩并返回。
测试类:在TestStudent
类中,我创建了一个Student
对象并调用了其各项方法来测试Student
类的功能。
重难点
需要理解如何将学生的信息封装成一个类,确定合适的数据成员和方法,并考虑它们之间的关系。这包括确定学生类的属性、行为以及如何封装和访问这些信息。
需要编写方法来计算学生的平均成绩和带权值的总成绩。这涉及到对学生各科成绩的累加和计算,需要注意数据类型的选择和计算逻辑的正确性。
需要编写各种方法来实现对学生信息的操作,例如修改单科成绩、求平均成绩和求带权值总成绩等。需要理解方法的语法、参数传递和返回值类型的选择,以及如何在类内部和外部正确调用这些方法。
需要理解如何使用封装将数据和方法组织在一起,并通过访问修饰符来控制对类成员的访问。初学者可能需要了解如何正确定义私有和公共成员,并在需要时使用getter和setter方法来访问和修改数据。
代码的正确性需要通过编写测试类来验证。需要学习如何设计合适的测试用例,并检查输出结果是否符合预期。同时,需要了解如何调试代码以解决潜在的错误。
java
// 学生类
class Student {
private String name; // 姓名
private String id; // 学号
private double mathScore; // 数学成绩
private double englishScore; // 英语成绩
private double computerScore; // 计算机成绩
private double politicalScore; // 政治成绩
// 构造方法
public Student(String name, String id, double mathScore, double englishScore, double computerScore, double politicalScore) {
this.name = name;
this.id = id;
this.mathScore = mathScore;
this.englishScore = englishScore;
this.computerScore = computerScore;
this.politicalScore = politicalScore;
}
// 修改单科成绩的方法
public void setMathScore(double mathScore) {
this.mathScore = mathScore;
}
public void setEnglishScore(double englishScore) {
this.englishScore = englishScore;
}
public void setComputerScore(double computerScore) {
this.computerScore = computerScore;
}
public void setPoliticalScore(double politicalScore) {
this.politicalScore = politicalScore;
}
// 求平均成绩的方法
public double calculateAverageScore() {
return (mathScore + englishScore + computerScore + politicalScore) / 4;
}
// 求带权值的总成绩的方法
public double calculateWeightedTotalScore() {
final double MATH_WEIGHT = 0.3;
final double ENGLISH_WEIGHT = 0.3;
final double COMPUTER_WEIGHT = 0.2;
final double POLITICAL_WEIGHT = 0.2;
return mathScore * MATH_WEIGHT + englishScore * ENGLISH_WEIGHT + computerScore * COMPUTER_WEIGHT + politicalScore * POLITICAL_WEIGHT;
}
}
// 测试类
public class TestStudent {
public static void main(String[] args) {
Student student1 = new Student("张三", "2023001", 80, 85, 90, 75);
System.out.println("学生姓名:" + student1.name);
System.out.println("学生学号:" + student1.id);
System.out.println("平均成绩:" + student1.calculateAverageScore());
System.out.println("带权值的总成绩:" + student1.calculateWeightedTotalScore());
student1.setMathScore(85);
System.out.println("修改数学成绩后的平均成绩:" + student1.calculateAverageScore());
}
}