java编写一个学生成绩管理程序,创建一个单链表,要求能输入和打印学生成绩,并求出所有学生的平均成绩
时间: 2024-10-02 07:04:14 浏览: 35
SingleLinkedDropOutStack:使用单链表退出堆栈实现
为了编写一个简单的学生成绩管理程序,我们可以利用Java的链表结构存储学生信息,包括姓名和成绩。这里我将演示如何创建一个StudentNode类表示链表节点,以及如何创建一个LinkedList类来操作这个链表。首先,我们需要定义两个类:
1. **StudentNode** (表示单链表中的一个节点)
```java
public class StudentNode {
String name;
int score;
// 构造函数
public StudentNode(String name, int score) {
this.name = name;
this.score = score;
}
// 获取和设置方法
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public int getScore() { return score; }
public void setScore(int score) { this.score = score; }
}
```
2. **StudentList** (单链表类)
```java
import java.util.Scanner;
public class StudentList {
private Node head;
private class Node {
StudentNode student;
Node next;
Node(StudentNode student, Node next) {
this.student = student;
this.next = next;
}
}
// 添加新学生到链表
public void addStudent(String name, int score) {
if (head == null) {
head = new Node(new StudentNode(name, score), null);
} else {
Node current = head;
while (current.next != null) {
current = current.next;
}
current.next = new Node(new StudentNode(name, score), null);
}
}
// 打印链表中的所有学生及其成绩
public void printStudents() {
Node currentNode = head;
while (currentNode != null) {
System.out.println("学生姓名: " + currentNode.student.getName() + ", 成绩: " + currentNode.student.getScore());
currentNode = currentNode.next;
}
}
// 计算平均成绩
public double calculateAverage() {
double totalScore = 0;
int count = 0;
Node currentNode = head;
while (currentNode != null) {
totalScore += currentNode.student.getScore();
count++;
currentNode = currentNode.next;
}
return count > 0 ? totalScore / count : 0;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
StudentList studentList = new StudentList();
System.out.println("请输入学生信息(输入 'q' 结束):");
while (true) {
System.out.print("姓名: ");
String name = scanner.nextLine();
if (name.equalsIgnoreCase("q")) break;
System.out.print("成绩: ");
int score = scanner.nextInt();
studentList.addStudent(name, score);
}
studentList.printStudents();
double average = studentList.calculateAverage();
System.out.printf("所有学生的平均成绩: %.2f\n", average);
scanner.close();
}
}
```
在这个程序中,用户可以持续添加学生直到输入'q'结束,然后会打印出所有的学生姓名和成绩,以及计算并显示平均成绩。
阅读全文