java设计一个学生类,包含学生的姓名、学号、课程数(不可修改)、各门课程的成绩;可以获取学生的学号,但不能修改;可以获取和修改姓名;可以输入和读取成绩;可以获得学生的平均成绩。 写出具体类的成员方法和函数定义,并写出测试的main函数。
时间: 2024-10-13 07:07:50 浏览: 22
Java课程设计-基于web的学生信息管理系统 .rar
在Java中,我们可以创建一个名为`Student`的类来表示上述需求。下面是一个具体的类定义:
```java
public class Student {
private String name; // 学生姓名
private int id; // 学号
private final int numberOfCourses; // 课程数,不可修改
private double[] scores = new double[numberOfCourses]; // 各门课程的成绩
public Student(String name, int id, int numberOfCourses) {
this.name = name;
this.id = id;
this.numberOfCourses = numberOfCourses;
}
// 获取学号
public int getId() {
return id;
}
// 设置姓名,只读属性,通过setter方法提供修改
public void setName(String newName) {
this.name = newName;
}
// 获取姓名
public String getName() {
return name;
}
// 输入成绩
public void setScore(int courseIndex, double score) {
if (courseIndex >= 0 && courseIndex < numberOfCourses) {
scores[courseIndex] = score;
} else {
throw new IndexOutOfBoundsException("Course index out of range");
}
}
// 读取成绩
public double getScore(int courseIndex) {
if (courseIndex >= 0 && courseIndex < numberOfCourses) {
return scores[courseIndex];
} else {
throw new IndexOutOfBoundsException("Course index out of range");
}
}
// 计算并返回平均成绩
public double getAverageGrade() {
if (scores.length == 0) {
return 0.0;
}
double sum = 0.0;
for (double score : scores) {
sum += score;
}
return sum / numberOfCourses;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", id=" + id +
", courses=[" + Arrays.toString(scores) + "]" +
'}';
}
public static void main(String[] args) {
// 测试
Student student = new Student("张三", 12345, 5);
student.setName("李四");
student.setScore(0, 90); // 设置第一门课的成绩
student.setScore(1, 85); // 设置第二门课的成绩
System.out.println("Student: " + student);
System.out.println("Average grade: " + student.getAverageGrade());
}
}
```
这个`Student`类包含了所有所需的功能,包括设置和获取姓名、输入和读取成绩以及计算平均成绩。在`main`函数中,我们进行了简单的测试操作。
阅读全文