学生管理系统无图形界面版(源码见文末)
学生管理系统效果展示
主界面:
添加功能测试:
修改功能测试:
遍历功能测试:
删除功能测试:
学号不重复测试:
学生管理系统实现思路
-
定义学生类
思路:
学生类:
Student成员变量:
学号:id
姓名:name
年龄:age
居住地:address构造方法以及get/set方法
源代码:
Student.java
package com.zeng; /** * 学生类 * Alt+Insert 可以快速添加构造方法以及get/set方法 */ public class Student { // 学号 private String id; // 姓名 private String name; // 年龄 private int age; // 住址 private String address; public Student() { } public Student(String id, String name, int age, String address) { this.id = id; this.name = name; this.age = age; this.address = address; } 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 getAddress() { return address; } public void setAddress(String address) { this.address = address; } }
-
主界面的代码编写
思路:
- 用输出语句完成主界面的编写
- 用Scanner实现键盘录入数据
- 用switch语句完成操作的选择
- 用循环完成再次回到主界面
源代码:
StudentManager.java
package com.zeng; import java.util.Scanner; public class StudentManager { public static void main(String[] args) { // 创建集合对象,用于存储学生数据 ArrayList<Student> stuList = new ArrayList<Student>(); // 用循环完成再次回到主界面 while(true) { // 用输出语句完成主界面的编写 System.out.println("--------欢迎来到学生管理系统--------"); System.out.println("1 添加学生"); System.out.println("2 删除学生"); System.out.println("3 修改学生"); System.out.println("4 遍历学生"); System.out.println("0 退出系统"); System.out.println("请输入你的选择:"); // 用Scanner实现键盘录入数据 Scanner sc = new Scanner(System.in); String choice = sc.next(); // 用switch语句完成操作的选择 switch (choice) { case "1": System.out.println("添加学生"); break; case "2": System.out.println("删除学生"); break; case "3": System.out.println("修改学生"); break; case "4": System.out.println("遍历学生"); break; case "0": System.out.println("谢谢使用"); // JVM退出 System.exit(0); } } }
-
添加学生的代码编写
思路:
- 用键盘录入选择添加学生
- 定义一个方法,用于添加学生
- 显示提示信息,提示要输入何种信息
- 键盘录入学生对象所需要的数据
- 创建学生对象,把键盘录入的数据赋值给学生对象的成员变量
- 将学生对象添加到集合中(保存)
- 给出添加成功提示
- 调用方法
源代码:
StudentManager.java
public static void addStudent(ArrayList<Student> stuArray) { // 键盘录入学生对象所需要的数据 Scanner sc = new Scanner(System.in); System.out.println("请输入学生学号"); String id = sc.next(); System.out.println("请输入学生姓名"); String name = sc.next(); System.out.println("请输入学生年龄"); int age = sc.nextInt(); System.out.println("请输入学生住址"); String address = sc.next(); // 创建学生对象,把键盘录入的数据赋值给学生对象的成员变量 Student stu = new Student(); stu.setId(id); stu.setName(name); stu.setAge(age); stu.setAddress(address); // 将学生对象添加到集合中(保存) stuArray.add(stu); // 给出添加成功提示 System.out.println("添加学生成功!"); }
-
查看学生的代码编写
思路:
- 用键盘录入选择查看遍历学生信息
- 定义一个方法,用于遍历学生信息
- 判定集合中是否有数据,如果没有显示提示信息
- 显示表头信息
- 将集合中数据按照对应格式显示学生信息,年龄显示补充“岁”
- 调用方法
源代码:
StudentManager.java
// 遍历学生 public static void findAllStudent(ArrayList<Student> stuList) { // 判定集合中是否有数据,如果没有显示提示信息 if (stuList.size() == 0) { System.out.println("无信息,请先添加信息在查询!"); return; } // 显示表头信息 System.out.println("学号\t\t姓名\t\t年龄\t\t住址"); // 将集合中数据按照对应格式显示学生信息,年龄显示补充“岁” for (int i = 0; i < stuList.size(); i++) { Student stu = stuList.get(i); System.out.println(stu.getId() + "\t" + stu.getName() + "\t" + stu.getAge() + "\t" + stu.getAddress()); } }
-
删除学生的代码编写
思路:
- 用键盘录入选择删除学生信息
- 定义一个方法,用于删除学生信息
- 显示提示信息
- 键盘录入要删除的学生学号,如果学号不存在,则显示提示信息
- 遍历集合将对应学生对象从集合中删除
- 给出删除成功提示
- 调用方法
源代码:
StudentManager.java
// 删除学生 public static void deleteStudent(ArrayList<Student> stuList) { // 键盘录入要删除的学生学号,显示提示信息 Scanner sc = new Scanner(System.in); System.out.println("请输入你要删除的学生的学号:"); String stuId = sc.next(); // 用于记录删除元素的下标 int index = -1; // 遍历集合将对应学生对象从集合中删除 for (int i = 0; i < stuList.size(); i++) { Student stu = stuList.get(i); if (stu.getId().equals(stuId)) { index = i; break; } } if (index == -1) { System.out.println("该学号不存在,请重新输入"); } else { stuList.remove(index); System.out.println("删除学生成功!"); } }
-
修改学生的代码编写
思路:
- 用键盘录入选择修改学生信息
- 定义一个方法,用于修改学生信息
- 显示提示信息
- 键盘录入要修改的学生学号
- 键盘录入要修改的学生信息
- 遍历集合修改对应的学生信息
- 给出修改成功提示
- 调用方法
源代码:
StudentManager.java
// 修改学生 public static void updateStudent(ArrayList<Student> stuList) { // 键盘录入要修改的学生学号,显示提示信息 Scanner sc = new Scanner(System.in); System.out.println("请输入你要修改的学生的学号:"); String id = sc.next(); // 用于记录修改元素的下标 int index = -1; // 键盘录入要修改的学生信息 System.out.println("请输入学生新姓名:"); String name = sc.next(); System.out.println("请输入学生新年龄:"); int age = sc.nextInt(); System.out.println("请输入学生新住址:"); String address = sc.next(); // 创建学生对象 Student stu = new Student(); stu.setId(id); stu.setName(name); stu.setAge(age); stu.setAddress(address); // 集合遍历修改对应的学生信息 for (int i = 0; i < stuList.size(); i++) { Student temp = stuList.get(i); if (temp.getId().equals(id)) { index = i; break; } } if (index == -1) { System.out.println("该学号不存在,请重新输入!"); } else { stuList.set(index, stu); System.out.println("修改学生成功!"); } }
解决添加学生学号重复问题
思路:
-
定义一个方法,对学号是否被使用进行判断
如果与集合中的某一个学生学号相同,返回true
如果都不相同,返回false
-
在添加学生录入学号后调用该方法
- 如果返回true,弹出提示,重新输入学号
- 如果返回false,正常添加学生对象
源代码:
StudentManager.java
// 判断学号是否被使用 public static boolean isUesd(ArrayList<Student> stuList, String id) { boolean flag = false; for (int i = 0; i < stuList.size(); i++) { Student stu = stuList.get(i); if (stu.getId().equals(id)) { flag = true; break; } } return flag; }
//改进addStudent()方法, 上面的被弃用 // 添加学生 public static void addStudent(ArrayList<Student> stuArray) { // 键盘录入学生对象所需要的数据 Scanner sc = new Scanner(System.in); String id; while (true) { System.out.println("请输入学生学号:"); id = sc.next(); boolean flag = isUesd(stuArray, id); if (flag) { System.out.println("你输入的学号已经被舒勇,请重新输入"); } else { break; } } System.out.println("请输入学生姓名:"); String name = sc.next(); System.out.println("请输入学生年龄:"); int age = sc.nextInt(); System.out.println("请输入学生住址:"); String address = sc.next(); // 创建学生对象,把键盘录入的数据赋值给学生对象的成员变量 Student stu = new Student(); stu.setId(id); stu.setName(name); stu.setAge(age); stu.setAddress(address); // 将学生对象添加到集合中(保存) stuArray.add(stu); // 给出添加成功提示 System.out.println("添加学生成功!"); }
源码:https://gitee.com/dwadzxd_1812806483/student-management-system.git
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?