java-从零打造学生管理系统
目录:
3.随后重写tostring方法,和导入lombok包,进行有参无参get,set方法的调用
5.用switch语句,把创建方法然后alt回车,把操作逻辑写在方法里面
前言
今天我们根据之前的内容开发一个简单的学生管理系统
在这篇文章学习实现"学生管理系统"之前,需要我们了解并学习过以下知识点(知识点不熟悉的同志可以点下面链接,里面有我对于该知识点的详细讲解):
1.输入与输出
2.if分支和while循环
3.数组
4.面向对象
5.集合
一、学生成绩管理系统
首先我们要知道学生管理系统有以下功能:
1.添加学生
2.查看学生列表
3.修改学生成绩
4.删除学生
5.退出

1.创建学生对象
1.在模块下新建一个包定义Student类:

2.私有化学生数据
这里我们仅存储学生名字数据和分数数据
private String name;
private double score;
3.随后重写tostring方法,和导入lombok包,进行有参无参get,set方法的调用
Student类代码完整如下

这样Student类就写完了
2.创建StudentScoreManager类,
这个类用于我们系统的操作页面,和逻辑,所以最为复杂

1.创建集合用于存储学生信息
ArrayList<Student> students = new ArrayList<>();
3.创建输入语句
Scanner scanner = new Scanner(System.in);
4.用while死循环写学生系统操作页面
while (true) {
System.out.println("\n=== 学生成绩管理系统 ===");
System.out.println("1. 添加学生");
System.out.println("2. 查看学生列表");
System.out.println("3. 修改成绩");
System.out.println("4. 删除学生");
System.out.println("5. 退出");
System.out.print("请选择操作: ");
}
5.用switch语句,把创建方法然后alt回车,把操作逻辑写在方法里面
switch (choice) {
case 1:
addStudent();
break;
case 2:
listStudents();
break;
case 3:
updateScore();
break;
case 4:
deleteStudent();
break;
case 5:
return;
default:
System.out.println("无效的选择,请重新输入");
}
完整代码如下

下面是四种方法的具体实现:
1.增加学生
public void addStudent() {
System.out.print("请输入学生姓名: ");
String name = scanner.nextLine();
System.out.print("请输入学生成绩: ");
double score = scanner.nextDouble();
scanner.nextLine(); // 清除缓冲区(\n)
students.add(new Student(name, score));
System.out.println("学生信息添加成功!");
}
思路实现:
1.我们先用输出System提示用户输出内容,而后用Scanner输入把数据用一个变量存储
注意:第二个输入后我们用Scanner.nextLine();
因为这行代码用于清除Scanner输入缓冲区中残留的换行符。当之前调用nextDouble()、nextInt()等方法后,缓冲区会留下换行符,影响后续nextLine()的读取,因此需要此行代码来清理缓冲区,确保输入流正常。
2.把读取的两个数据存储到最开始创建的Student集合里面
2.打印学生列表
public void listStudents() {
if (students.isEmpty()) {
System.out.println("当前没有学生信息");
return;
}
System.out.println("\n=== 学生列表 ===");
for (int i = 0; i < students.size(); i++) {
System.out.println((i + 1) + ". " + students.get(i));
}
}
思路实现:
1.我们先判断当学生信息为空,也就是没有添加学生信息的情况,我们用到isEmpty方法
2.通过循环输出集合
3.修改学生信息
public void updateScore() {
listStudents();
if (students.isEmpty()) return;
System.out.print("请输入要修改成绩的学生编号: ");
int index = scanner.nextInt() - 1;
scanner.nextLine();
if (index >= 0 && index < students.size()) {
System.out.print("请输入新的成绩: ");
double newScore = scanner.nextDouble();
scanner.nextLine();
Student student = students.get(index);
students.set(index, new Student(student.getName(), newScore));
System.out.println("成绩修改成功!");
} else {
System.out.println("无效的学生编号");
}
思路实现:
1.先把学生列表打印
2.把需要被修改的学生编号用变量保持,这里要-1,因为索引从0开始.
3.用if条件语句判断索引是否正确,若正确,提示用户把要改的成绩输入
4.用set方法,修改要被修改的集合里面的内容
4.删除学生
public void deleteStudent() {
listStudents();
if (students.isEmpty()) return;
System.out.print("请输入要删除的学生编号: ");
int index = scanner.nextInt() - 1;
scanner.nextLine();
if (index >= 0 && index < students.size()) {
students.remove(index);
System.out.println("学生信息删除成功!");
} else {
System.out.println("无效的学生编号");
}
}
思路实现:
1.前面内容跟修改学生内容一致
2.用if语句判断正确后,用remove方法,移除集合当中该学生的成绩
该类完整代码如下:
package itheima.arraylist;
import java.util.ArrayList;
import java.util.Scanner;
public class StudentScoreManager {
ArrayList<Student> students = new ArrayList<>();
Scanner scanner = new Scanner(System.in);
public void addStudent() {
System.out.print("请输入学生姓名: ");
String name = scanner.nextLine();
System.out.print("请输入学生成绩: ");
double score = scanner.nextDouble();
scanner.nextLine(); // 清除缓冲区(\n)
students.add(new Student(name, score));
System.out.println("学生信息添加成功!");
}
public void listStudents() {
if (students.isEmpty()) {
System.out.println("当前没有学生信息");
return;
}
System.out.println("\n=== 学生列表 ===");
for (int i = 0; i < students.size(); i++) {
System.out.println((i + 1) + ". " + students.get(i));
}
}
public void updateScore() {
listStudents();
if (students.isEmpty()) return;
System.out.print("请输入要修改成绩的学生编号: ");
int index = scanner.nextInt() - 1;
scanner.nextLine();
if (index >= 0 && index < students.size()) {
System.out.print("请输入新的成绩: ");
double newScore = scanner.nextDouble();
scanner.nextLine();
Student student = students.get(index);
students.set(index, new Student(student.getName(), newScore));
System.out.println("成绩修改成功!");
} else {
System.out.println("无效的学生编号");
}
}
public void deleteStudent() {
listStudents();
if (students.isEmpty()) return;
System.out.print("请输入要删除的学生编号: ");
int index = scanner.nextInt() - 1;
scanner.nextLine();
if (index >= 0 && index < students.size()) {
students.remove(index);
System.out.println("学生信息删除成功!");
} else {
System.out.println("无效的学生编号");
}
}
public void run() {
while (true) {
System.out.println("\n=== 学生成绩管理系统 ===");
System.out.println("1. 添加学生");
System.out.println("2. 查看学生列表");
System.out.println("3. 修改成绩");
System.out.println("4. 删除学生");
System.out.println("5. 退出");
System.out.print("请选择操作: ");
int choice = scanner.nextInt();
scanner.nextLine();
switch (choice) {
case 1:
addStudent();
break;
case 2:
listStudents();
break;
case 3:
updateScore();
break;
case 4:
deleteStudent();
break;
case 5:
return;
default:
System.out.println("无效的选择,请重新输入");
}
}
}
}
3.创建主函数类
创建main类,在主函数里面创建StudentScoreManager对象,然后调用他的run方法
public class main {
public static void main(String[] args) {
StudentScoreManager manager = new StudentScoreManager();
manager.run();
}
}
最终呈现:
添加学生和打印学生:

修改学生成绩

删除学生

退出

总结
今天我们写了一个学生成绩管理系统的小项目,把前面的知识串了一下。
本次分享到此结束,感谢大家的观看与支持!如果本内容对您有帮助,欢迎点赞、收藏,您的支持将是我持续创作的最大动力,谢谢!
更多推荐

所有评论(0)