Appearance
项目 1:控制台版学生管理系统
项目概述
控制台版学生管理系统是一个基于 Java 控制台的简单应用,用于管理学生信息。它提供了添加学生、删除学生、修改学生信息、查询所有学生和退出系统等功能。
功能需求
- 添加学生:输入学生的学号、姓名、年龄和成绩,将学生信息添加到系统中
- 删除学生:根据学号删除指定的学生信息
- 修改学生信息:根据学号修改学生的姓名、年龄和成绩
- 查询所有学生:显示系统中所有学生的信息
- 退出系统:退出学生管理系统
技术实现
1. 学生类(Student)
首先,我们需要创建一个学生类,用于存储学生的信息。
java
public class Student {
private String id; // 学号
private String name; // 姓名
private int age; // 年龄
private double score; // 成绩
// 构造方法
public Student(String id, String name, int age, double score) {
this.id = id;
this.name = name;
this.age = age;
this.score = score;
}
// getter 和 setter 方法
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
// 重写 toString 方法,用于打印学生信息
@Override
public String toString() {
return "学号: " + id + ", 姓名: " + name + ", 年龄: " + age + ", 成绩: " + score;
}
}2. 学生管理系统类(StudentManagementSystem)
接下来,我们创建学生管理系统类,实现具体的功能。
java
import java.util.ArrayList;
import java.util.Scanner;
public class StudentManagementSystem {
private ArrayList<Student> students; // 存储学生信息的集合
private Scanner scanner; // 用于读取用户输入
// 构造方法
public StudentManagementSystem() {
students = new ArrayList<>();
scanner = new Scanner(System.in);
}
// 显示菜单
public void showMenu() {
System.out.println("===================================");
System.out.println(" 学生管理系统");
System.out.println("===================================");
System.out.println("1. 添加学生");
System.out.println("2. 删除学生");
System.out.println("3. 修改学生信息");
System.out.println("4. 查询所有学生");
System.out.println("5. 退出系统");
System.out.println("===================================");
System.out.print("请选择操作: ");
}
// 启动系统
public void start() {
boolean running = true;
while (running) {
showMenu();
int choice = scanner.nextInt();
scanner.nextLine(); // 消费换行符
switch (choice) {
case 1:
addStudent();
break;
case 2:
deleteStudent();
break;
case 3:
updateStudent();
break;
case 4:
queryAllStudents();
break;
case 5:
running = false;
System.out.println("系统已退出!");
break;
default:
System.out.println("输入错误,请重新选择!");
break;
}
}
}
// 添加学生
public void addStudent() {
System.out.println("===================================");
System.out.println(" 添加学生");
System.out.println("===================================");
System.out.print("请输入学号: ");
String id = scanner.nextLine();
// 检查学号是否已存在
for (Student student : students) {
if (student.getId().equals(id)) {
System.out.println("学号已存在,请重新输入!");
return;
}
}
System.out.print("请输入姓名: ");
String name = scanner.nextLine();
System.out.print("请输入年龄: ");
int age = scanner.nextInt();
scanner.nextLine(); // 消费换行符
System.out.print("请输入成绩: ");
double score = scanner.nextDouble();
scanner.nextLine(); // 消费换行符
// 创建学生对象并添加到集合
Student student = new Student(id, name, age, score);
students.add(student);
System.out.println("添加成功!");
}
// 删除学生
public void deleteStudent() {
System.out.println("===================================");
System.out.println(" 删除学生");
System.out.println("===================================");
System.out.print("请输入要删除的学生学号: ");
String id = scanner.nextLine();
boolean found = false;
for (int i = 0; i < students.size(); i++) {
if (students.get(i).getId().equals(id)) {
students.remove(i);
found = true;
break;
}
}
if (found) {
System.out.println("删除成功!");
} else {
System.out.println("未找到该学生!");
}
}
// 修改学生信息
public void updateStudent() {
System.out.println("===================================");
System.out.println(" 修改学生信息");
System.out.println("===================================");
System.out.print("请输入要修改的学生学号: ");
String id = scanner.nextLine();
boolean found = false;
for (Student student : students) {
if (student.getId().equals(id)) {
System.out.print("请输入新姓名: ");
String name = scanner.nextLine();
System.out.print("请输入新年龄: ");
int age = scanner.nextInt();
scanner.nextLine(); // 消费换行符
System.out.print("请输入新成绩: ");
double score = scanner.nextDouble();
scanner.nextLine(); // 消费换行符
// 修改学生信息
student.setName(name);
student.setAge(age);
student.setScore(score);
found = true;
break;
}
}
if (found) {
System.out.println("修改成功!");
} else {
System.out.println("未找到该学生!");
}
}
// 查询所有学生
public void queryAllStudents() {
System.out.println("===================================");
System.out.println(" 所有学生信息");
System.out.println("===================================");
if (students.isEmpty()) {
System.out.println("暂无学生信息!");
} else {
for (Student student : students) {
System.out.println(student);
}
}
}
// 主方法
public static void main(String[] args) {
StudentManagementSystem system = new StudentManagementSystem();
system.start();
}
}代码解析
1. 学生类(Student)
- 成员变量:学号、姓名、年龄和成绩
- 构造方法:用于创建学生对象
- getter 和 setter 方法:用于访问和修改成员变量
- toString 方法:用于打印学生信息
2. 学生管理系统类(StudentManagementSystem)
成员变量:
students:存储学生信息的 ArrayList 集合scanner:用于读取用户输入的 Scanner 对象
方法:
showMenu():显示系统菜单start():启动系统,处理用户输入addStudent():添加学生deleteStudent():删除学生updateStudent():修改学生信息queryAllStudents():查询所有学生main():主方法,创建系统对象并启动
运行示例
运行结果
===================================
学生管理系统
===================================
1. 添加学生
2. 删除学生
3. 修改学生信息
4. 查询所有学生
5. 退出系统
===================================
请选择操作: 1
===================================
添加学生
===================================
请输入学号: 1001
请输入姓名: 张三
请输入年龄: 18
请输入成绩: 95.5
添加成功!
===================================
学生管理系统
===================================
1. 添加学生
2. 删除学生
3. 修改学生信息
4. 查询所有学生
5. 退出系统
===================================
请选择操作: 1
===================================
添加学生
===================================
请输入学号: 1002
请输入姓名: 李四
请输入年龄: 19
请输入成绩: 88.0
添加成功!
===================================
学生管理系统
===================================
1. 添加学生
2. 删除学生
3. 修改学生信息
4. 查询所有学生
5. 退出系统
===================================
请选择操作: 4
===================================
所有学生信息
===================================
学号: 1001, 姓名: 张三, 年龄: 18, 成绩: 95.5
学号: 1002, 姓名: 李四, 年龄: 19, 成绩: 88.0
===================================
学生管理系统
===================================
1. 添加学生
2. 删除学生
3. 修改学生信息
4. 查询所有学生
5. 退出系统
===================================
请选择操作: 3
===================================
修改学生信息
===================================
请输入要修改的学生学号: 1001
请输入新姓名: 张三
请输入新年龄: 20
请输入新成绩: 98.0
修改成功!
===================================
学生管理系统
===================================
1. 添加学生
2. 删除学生
3. 修改学生信息
4. 查询所有学生
5. 退出系统
===================================
请选择操作: 4
===================================
所有学生信息
===================================
学号: 1001, 姓名: 张三, 年龄: 20, 成绩: 98.0
学号: 1002, 姓名: 李四, 年龄: 19, 成绩: 88.0
===================================
学生管理系统
===================================
1. 添加学生
2. 删除学生
3. 修改学生信息
4. 查询所有学生
5. 退出系统
===================================
请选择操作: 2
===================================
删除学生
===================================
请输入要删除的学生学号: 1002
删除成功!
===================================
学生管理系统
===================================
1. 添加学生
2. 删除学生
3. 修改学生信息
4. 查询所有学生
5. 退出系统
===================================
请选择操作: 4
===================================
所有学生信息
===================================
学号: 1001, 姓名: 张三, 年龄: 20, 成绩: 98.0
===================================
学生管理系统
===================================
1. 添加学生
2. 删除学生
3. 修改学生信息
4. 查询所有学生
5. 退出系统
===================================
请选择操作: 5
系统已退出!扩展功能
- 按学号查询学生:根据学号查询特定学生的信息
- 按姓名查询学生:根据姓名查询学生信息
- 按成绩排序:按学生成绩从高到低或从低到高排序
- 数据持久化:将学生信息保存到文件,下次启动时加载
- 输入验证:对用户输入进行验证,确保输入的有效性
总结
控制台版学生管理系统是一个简单但完整的 Java 应用,它演示了如何使用面向对象编程、集合框架和控制台输入输出等基本 Java 技术。通过这个项目,你可以学习:
- 类的设计:如何设计和实现一个学生类
- 集合的使用:如何使用 ArrayList 存储和管理学生信息
- 用户交互:如何使用 Scanner 读取用户输入
- 控制流程:如何使用循环和 switch 语句控制程序流程
- 异常处理:如何处理用户输入错误等异常情况
这个项目是一个很好的 Java 入门练习,它涵盖了 Java 基础编程的许多重要概念。
