package com.sdbi.JiaQi; import java.util.ArrayList; import java.util.Scanner; public class StudentManagr { public static void main(String[] args) { //创建Scanner对象 Scanner sc = new Scanner(System.in); //创建ArrayList集合用于储存学生对象 ArrayList<Student> list = new ArrayList<>(); //搭建主界面菜单 To: while (true) { 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("请输入您的选择:"); //接收用户键盘录入的选项 String choice = sc.next(); switch (choice) { case "1": //System.out.println("添加学生"); addStudent(list); break; case "2": //System.out.println("删除学生"); deleteStudent(list); break; case "3": //System.out.println("修改学生"); updateStudent(list); break; case "4": //System.out.println("查看学生"); queryStudent(list); break; case "5": System.out.println("感谢您的使用"); break To; default: System.out.println("您的输入有误"); break; } } } //修改学生信息的方法 public static void updateStudent(ArrayList<Student> list) { //判断集合中有无学生对象信息,若没有,给出相应提示 if (list.size() == 0) { System.out.println("现无学生信息,请添加后重新操作..."); return; } //若有,则给出输入提示信息 System.out.println("请输入您要修改的学生学号:"); //键盘接收要修改的学号 Scanner sc = new Scanner(System.in); String updateSid = sc.next(); //调用getIndex方法,查找该学号学生在集合中的索引位置 int index = getIndex(list, updateSid); //根据索引判断,该学号在集合中是否存在 if (index == -1) { //不存在,给出提示 System.out.println("无该学生信息,请重新输入:"); } else { //存在,接收新的学生信息 System.out.println("请输入新的学生姓名:"); String name = sc.next(); System.out.println("请输入新的学生年龄:"); String age = sc.next(); System.out.println("请输入新的学生地址:"); String address = sc.next(); //将以上信息封装为新的学生对象 Student sut = new Student(updateSid, name, age, address); //调用集合的set方法,完成修改 list.set(index, sut); System.out.println("修改成功!"); } } //删除学生信息的方法 public static void deleteStudent(ArrayList<Student> list) { //判断集合中有无学生对象信息,若没有,给出相应提示 if (list.size() == 0) { System.out.println("现无学生信息,请添加后重新操作..."); return; } //若有,则给出输入提示信息 System.out.println("请输入您要删除的学生学号:"); //键盘接收要删除的学号 Scanner sc = new Scanner(System.in); String deleteSid = sc.next(); //调用getIndex方法,查找该学号学生在集合中的索引位置 int index = getIndex(list, deleteSid); //根据索引判断,该学号在集合中是否存在 if (index == -1) { //不存在,给出提示 System.out.println("无该学生信息,请重新输入:"); } else { //存在,则删除 list.remove(index); System.out.println("删除成功!"); } } //判断学号是否存在的方法 public static int getIndex(ArrayList<Student> list, String sid) { //假设传入的学号不存在 int index = -1; //遍历集合,获得每一个学生对象,进行查找 for (int i = 0; i < list.size(); i++) { Student stu = list.get(i); //获得每一个学生对象的学号 String id = stu.getId(); //将获得的每一个学号与传入要查找的学号进行比较 if (id.equals(sid)) { //若该学号存在,则让index记录正确的索引位置 index = i; break; } } return index; } //查看学生信息的方法 public static void queryStudent(ArrayList<Student> list) { //判断集合中有无学生对象信息,若没有,给出相应提升 if (list.size() == 0) { System.out.println("现无学生信息,请添加后重新查询..."); return; } //存在,展示表头信息 System.out.println("学号\t\t姓名\t\t年龄\t\t住址"); //遍历集合,获得每一个学生对象的信息 for (int i = 0; i < list.size(); i++) { Student stu = list.get(i); System.out.println(stu.getId() + "\t\t" + stu.getName() + "\t\t" + stu.getAge() + "\t\t" + stu.getAddress()); } } //添加学生信息的方法 public static void addStudent(ArrayList<Student> list) { Scanner sc = new Scanner(System.in); //判断要添加的学号是否已存在 String id; while (true) { //录入信息的提示 System.out.println("请输入学号:"); id = sc.next(); int index = getIndex(list, id); if (index == -1) { //输入的学号不存在,可以结束循环,继续录入其他信息 break; } else { //若输入的学号存在,则继续进行循环,直到录入的学号不存在为止,并给出相应的提示 System.out.println("您输入的学号已存在,请重新输入:"); } } System.out.println("请输入姓名:"); String name = sc.next(); System.out.println("请输入年龄:"); String age = sc.next(); System.out.println("请输入住址:"); String address = sc.next(); //将键盘录入的信息封装为学生对象 Student student = new Student(id, name, age, address); //将封装好的学生对象储存到集合中 list.add(student); //添加成功的学生信息 System.out.println("添加成功!"); } } //前提需要用封装的思想创建一个Student类,类中书写好相应的成员变量以及get、set方法,无参、满参构造方法等。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?