## 一、功能介绍
这是一个基于Java控制台的学生管理系统,适合Java初学者练手使用。系统使用ArrayList存储学生数据,实现了完整的增删改查功能。
### 主要功能:
– ✅ 添加学生信息(学号、姓名、年龄、性别、班级)
– ✅ 删除学生信息(按学号删除)
– ✅ 修改学生信息(支持部分修改,回车跳过不修改的项)
– ✅ 查询学生信息(按学号查询、按姓名模糊查询)
– ✅ 查看所有学生列表
– ✅ 输入验证(年龄必须是数字、学号不能重复)
技术特点:
– 纯Java代码,无需任何框架
– 使用ArrayList集合存储数据
– 控制台交互界面,操作简单
– 代码结构清晰,注释详细,适合学习
## 二、小白手把手教程
如果你是完全的编程小白,没关系,跟着下面的步骤一步步来,保证你能成功运行!
### 第一步:安装JDK(Java开发工具包)
JDK是运行Java程序必须的环境,就像你要玩游戏需要先安装游戏引擎一样。
1. 打开浏览器,搜索”JDK下载”,或者直接去Oracle官网下载
2. 选择适合你电脑系统的版本(Windows选Windows版,Mac选Mac版)
3. 下载后双击安装包,一直点”下一步”就可以安装完成
4. **重要提示**:记住你的安装路径,后面配置环境变量会用到
### 第二步:配置环境变量
配置环境变量是为了让电脑在任何地方都能找到Java命令,就像给电脑设置一个”快捷方式”。
**Windows系统配置方法:**
1. 右键点击”此电脑”,选择”属性”
2. 点击”高级系统设置”
3. 点击”环境变量”
4. 在”系统变量”里点击”新建”
– 变量名:`JAVA_HOME`
– 变量值:你的JDK安装路径(比如 `C:\Program Files\Java\jdk1.8.0_202`)
5. 找到”Path”变量,点击”编辑”
6. 点击”新建”,输入 `%JAVA_HOME%\bin`
7. 一路点击”确定”保存
### 第三步:验证Java环境
安装配置完成后,我们来验证一下是否成功:
1. 按 `Win + R` 键,输入 `cmd`,回车打开命令提示符
2. 输入 `java -version`,回车
3. 如果显示出Java版本信息,说明安装成功了!
4. 再输入 `javac -version`,回车
5. 如果也显示版本信息,说明编译器也没问题了
### 第四步:保存代码
1. 在电脑上新建一个文件夹,比如叫 `StudentSystem`
2. 在文件夹里新建两个文本文件
3. 第一个文件命名为 `Student.java`(注意后缀是.java,不是.txt)
4. 第二个文件命名为 `StudentManagementSystem.java`
5. 把下面的源码分别复制到对应的文件里保存
**重要提示**:文件名必须和类名完全一致,包括大小写!否则会编译失败。
### 第五步:编译运行
1. 打开命令提示符(cmd)
2. 用 `cd` 命令进入你的代码文件夹,比如:
“`
cd C:\StudentSystem
“`
3. 输入编译命令:
“`
javac Student.java StudentManagementSystem.java
“`
4. 如果没有报错,说明编译成功了!文件夹里会多出两个.class文件
5. 输入运行命令:
“`
java StudentManagementSystem
“`
6. 恭喜你!程序运行起来了!
### 第六步:操作演示
程序运行后,会显示主菜单,你可以输入数字选择功能:
– 输入 `1`:添加学生
– 输入 `2`:删除学生
– 输入 `3`:修改学生
– 输入 `4`:查询学生
– 输入 `5`:查看所有学生
– 输入 `0`:退出系统
跟着提示操作就可以了,非常简单!


## 三、运行效果展示
下面是程序运行的实际效果截图,大家可以参考一下:
(图片展示:主菜单界面、添加学生功能、查询学生功能等)
## 四、完整源码
下面是完整的Java代码,直接复制就能用,非常适合初学者学习和练手!
### 1. Student.java(学生实体类)
这个类用于存储学生的基本信息,包括学号、姓名、年龄、性别、班级等属性。
/**
* 学生实体类
* 用于存储学生的基本信息
*/
public class Student {
// 学号
private String id;
// 姓名
private String name;
// 年龄
private int age;
// 性别
private String gender;
// 班级
private String className;
// 无参构造方法
public Student() {
}
// 带参构造方法
public Student(String id, String name, int age, String gender, String className) {
this.id = id;
this.name = name;
this.age = age;
this.gender = gender;
this.className = className;
}
// 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 String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
// 重写toString方法,方便打印学生信息
@Override
public String toString() {
return "学号:" + id + "\t姓名:" + name + "\t年龄:" + age + "\t性别:" + gender + "\t班级:" + className;
}
}
### 2. StudentManagementSystem.java(主程序类)
这个类是程序的主入口,包含了所有的功能实现,包括添加、删除、修改、查询学生信息等。使用ArrayList存储学生数据,通过控制台与用户交互。
import java.util.ArrayList;
import java.util.Scanner;
/**
* Java学生管理系统(控制台版)
* 功能:学生信息的增删改查
* 使用ArrayList存储数据
* 控制台交互界面
*/
public class StudentManagementSystem {
// 使用ArrayList存储学生信息
private static ArrayList<Student> studentList = new ArrayList<>();
// 扫描仪对象,用于接收用户输入
private static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
// 程序主循环
while (true) {
// 显示主菜单
showMenu();
// 接收用户选择
System.out.print("请输入您的选择(0-5):");
String choice = scanner.nextLine();
// 根据用户选择执行相应操作
switch (choice) {
case "1":
// 添加学生
addStudent();
break;
case "2":
// 删除学生
deleteStudent();
break;
case "3":
// 修改学生信息
updateStudent();
break;
case "4":
// 查询学生信息
queryStudent();
break;
case "5":
// 显示所有学生
showAllStudents();
break;
case "0":
// 退出系统
System.out.println("========================================");
System.out.println("感谢使用学生管理系统,再见!");
System.out.println("========================================");
System.exit(0);
default:
System.out.println("输入有误,请重新选择!");
System.out.println();
}
}
}
/**
* 显示主菜单
*/
private static 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(" 0. 退出系统");
System.out.println("========================================");
}
/**
* 添加学生
*/
private static void addStudent() {
System.out.println("========== 添加学生信息 ==========");
// 输入学号
System.out.print("请输入学号:");
String id = scanner.nextLine();
// 检查学号是否已存在
if (isIdExists(id)) {
System.out.println("学号 " + id + " 已存在,添加失败!");
System.out.println();
return;
}
// 输入姓名
System.out.print("请输入姓名:");
String name = scanner.nextLine();
// 输入年龄
int age = 0;
while (true) {
System.out.print("请输入年龄:");
try {
age = Integer.parseInt(scanner.nextLine());
if (age > 0 && age < 150) {
break;
} else {
System.out.println("年龄输入不合法,请重新输入!");
}
} catch (NumberFormatException e) {
System.out.println("请输入数字!");
}
}
// 输入性别
System.out.print("请输入性别:");
String gender = scanner.nextLine();
// 输入班级
System.out.print("请输入班级:");
String className = scanner.nextLine();
// 创建学生对象并添加到集合
Student student = new Student(id, name, age, gender, className);
studentList.add(student);
System.out.println("添加成功!");
System.out.println();
}
/**
* 删除学生
*/
private static void deleteStudent() {
System.out.println("========== 删除学生信息 ==========");
if (studentList.isEmpty()) {
System.out.println("暂无学生信息!");
System.out.println();
return;
}
System.out.print("请输入要删除的学生学号:");
String id = scanner.nextLine();
// 查找学生
int index = findStudentIndexById(id);
if (index == -1) {
System.out.println("未找到学号为 " + id + " 的学生!");
System.out.println();
return;
}
// 显示要删除的学生信息
System.out.println("找到以下学生信息:");
System.out.println(studentList.get(index));
System.out.print("确定要删除吗?(y/n):");
String confirm = scanner.nextLine();
if (confirm.equalsIgnoreCase("y")) {
studentList.remove(index);
System.out.println("删除成功!");
} else {
System.out.println("已取消删除操作。");
}
System.out.println();
}
/**
* 修改学生信息
*/
private static void updateStudent() {
System.out.println("========== 修改学生信息 ==========");
if (studentList.isEmpty()) {
System.out.println("暂无学生信息!");
System.out.println();
return;
}
System.out.print("请输入要修改的学生学号:");
String id = scanner.nextLine();
// 查找学生
int index = findStudentIndexById(id);
if (index == -1) {
System.out.println("未找到学号为 " + id + " 的学生!");
System.out.println();
return;
}
// 显示原学生信息
Student student = studentList.get(index);
System.out.println("原学生信息:");
System.out.println(student);
System.out.println("(直接回车表示不修改该项)");
// 输入新姓名
System.out.print("请输入新姓名:");
String name = scanner.nextLine();
if (!name.isEmpty()) {
student.setName(name);
}
// 输入新年龄
System.out.print("请输入新年龄:");
String ageStr = scanner.nextLine();
if (!ageStr.isEmpty()) {
try {
int age = Integer.parseInt(ageStr);
if (age > 0 && age < 150) {
student.setAge(age);
} else {
System.out.println("年龄输入不合法,跳过年龄修改。");
}
} catch (NumberFormatException e) {
System.out.println("年龄输入不合法,跳过年龄修改。");
}
}
// 输入新性别
System.out.print("请输入新性别:");
String gender = scanner.nextLine();
if (!gender.isEmpty()) {
student.setGender(gender);
}
// 输入新班级
System.out.print("请输入新班级:");
String className = scanner.nextLine();
if (!className.isEmpty()) {
student.setClassName(className);
}
System.out.println("修改成功!");
System.out.println("修改后的信息:");
System.out.println(student);
System.out.println();
}
/**
* 查询学生信息
*/
private static void queryStudent() {
System.out.println("========== 查询学生信息 ==========");
if (studentList.isEmpty()) {
System.out.println("暂无学生信息!");
System.out.println();
return;
}
System.out.println("请选择查询方式:");
System.out.println("1. 按学号查询");
System.out.println("2. 按姓名查询");
System.out.print("请输入选择(1-2):");
String choice = scanner.nextLine();
switch (choice) {
case "1":
// 按学号查询
System.out.print("请输入学号:");
String id = scanner.nextLine();
int index = findStudentIndexById(id);
if (index == -1) {
System.out.println("未找到学号为 " + id + " 的学生!");
} else {
System.out.println("查询结果:");
System.out.println(studentList.get(index));
}
break;
case "2":
// 按姓名查询
System.out.print("请输入姓名:");
String name = scanner.nextLine();
ArrayList<Student> result = findStudentsByName(name);
if (result.isEmpty()) {
System.out.println("未找到姓名为 " + name + " 的学生!");
} else {
System.out.println("查询结果(共" + result.size() + "条):");
for (Student s : result) {
System.out.println(s);
}
}
break;
default:
System.out.println("输入有误!");
}
System.out.println();
}
/**
* 显示所有学生
*/
private static void showAllStudents() {
System.out.println("========== 所有学生信息 ==========");
if (studentList.isEmpty()) {
System.out.println("暂无学生信息!");
System.out.println();
return;
}
System.out.println("共 " + studentList.size() + " 名学生:");
System.out.println("----------------------------------------");
for (int i = 0; i < studentList.size(); i++) {
System.out.println((i + 1) + ". " + studentList.get(i));
}
System.out.println("----------------------------------------");
System.out.println();
}
/**
* 根据学号查找学生索引
* @param id 学号
* @return 学生在集合中的索引,找不到返回-1
*/
private static int findStudentIndexById(String id) {
for (int i = 0; i < studentList.size(); i++) {
if (studentList.get(i).getId().equals(id)) {
return i;
}
}
return -1;
}
/**
* 根据姓名查找学生
* @param name 姓名
* @return 匹配的学生列表
*/
private static ArrayList<Student> findStudentsByName(String name) {
ArrayList<Student> result = new ArrayList<>();
for (Student s : studentList) {
if (s.getName().contains(name)) {
result.add(s);
}
}
return result;
}
/**
* 检查学号是否已存在
* @param id 学号
* @return 存在返回true,不存在返回false
*/
private static boolean isIdExists(String id) {
return findStudentIndexById(id) != -1;
}
}








暂无评论内容