Java 学生管理系统

描述

Java SE 综合案例:学生管理系统。

题目

该系统主要功能如下:

  1. 定义一个 集合 容器用于存储全部学生 对象 的信息操作。
  2. 添加学生:通过键盘录入学生信息,添加到集合中。
  3. 删除学生:通过键盘录入要删除学生的学号,将该学生对象从集合中删除。
  4. 修改学生:通过键盘录入要修改学生的学号,将该学生对象其他信息进行修改。
  5. 查看学生:将集合中的学生对象信息进行展示。
  6. 退出系统:结束程序。

题目解决思路

  1. 在主方法中,设计系统总界面,利用 switch 语句,根据用户选择,执行对应的操作。
  2. 定义两个公共 方法,用于判断学生的学号是否重复和获取对象在集合中的索引。
  3. 分别定义添加学生、删除学生、修改学生、查看学生。

代码具体实现

定义学生类

public class Student { private String sid; private String name; private String age; private String address; public Student() { } public Student(String sid, String name, String age, String address) { this.sid = sid; this.name = name; this.age = age; this.address = address; } public String getSid() { return sid; } public void setSid(String sid) { this.sid = sid; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } }

学生信息管理系统具体实现

public class StudentManager { public static void main(String[] args) { ArrayList<Student> students = new ArrayList<>(); Scanner sc = new Scanner(System.in); while (true) { System.out.println("嗨客网(www.haicoder.net)\n"); System.out.println("===========欢迎来到学生管理系统==========="); System.out.println("以下为操作命令:"); System.out.println("1. 添加学生信息:add"); System.out.println("2. 删除学生信息:delete"); System.out.println("3. 修改学生信息:update"); System.out.println("4. 查询学生信息:query"); System.out.println("5. 退出学生系统:exit"); System.out.print("请您输入您要操作的命令:"); String command = sc.nextLine(); switch (command) { case "add": addStudent(students); System.out.println("添加信息成功!!"); break; case "delete": deleteStudent(students); break; case "update": updateStudent(students); break; case "query": queryStudent(students); break; case "exit": System.out.println("退出系统!"); System.exit(0); break; default: System.out.println("您输入的命令有误,请重新输入!"); } System.out.println(""); } } /** * 添加学生信息方法 * * @param students */ public static void addStudent(ArrayList<Student> students) { System.out.println("=================添加学生信息============"); // 直接定义扫描器,录入学生信息 Scanner sc = new Scanner(System.in); String sid; // 接收学生信息 while (true) { System.out.println("请您输入学号:"); sid = sc.nextLine(); // 判断学号是否重复 boolean bool = isSIdRepeat(sid, students); if (bool) { System.out.println("您输入的学号重复!"); } else { break; } } System.out.println("请您输入姓名:"); String name = sc.nextLine(); System.out.println("请您输入年龄:"); String age = sc.nextLine(); System.out.println("请您输入地址:"); String address = sc.nextLine(); // 封装学生信息 Student student = new Student(sid, name, age, address); // 添加学生对象到集合容器 students.add(student); } /** * 删除某个学生的信息 * * @param students */ public static void deleteStudent(ArrayList<Student> students) { System.out.println("=================删除学生信息============"); if (students.size() > 0) { while (true) { System.out.println("请您删除要删除的学号:"); Scanner sc = new Scanner(System.in); String sid = sc.nextLine(); // 判断学号是否存在 Boolean bool = isSIdRepeat(sid, students); if (bool) { int i = getIndex(sid, students); students.remove(i); break; } else { System.out.println("您删除的学生不存在"); System.out.println("请问您要继续吗? Y/N"); String rs = sc.nextLine(); if ("N".equals(rs)) { break; } } } } else { System.out.println("学生信息为空,请先添加学生信息!"); } } /** * 修改某个学生的信息 * * @param students */ public static void updateStudent(ArrayList<Student> students) { System.out.println("=================修改学生信息============"); Scanner sc = new Scanner(System.in); if (students.size() > 0) { while (true) { System.out.println("请输入要修改的学生的学号:"); String sid = sc.nextLine(); // 判断学号是否存在 Boolean bool = isSIdRepeat(sid, students); if (bool) { // 获取到对象集合中的角标 int index = getIndex(sid, students); // 用户输入新的学生信息 System.out.println("请您输入姓名:"); String name = sc.nextLine(); System.out.println("请您输入年龄:"); String age = sc.nextLine(); System.out.println("请您输入地址:"); String address = sc.nextLine(); Student newStu = new Student(sid, name, age, address); students.set(index, newStu); System.out.println("修改学生信息成功"); break; } else { System.out.println("您需要修改的学生不存在!"); System.out.println("请问您要继续吗? Y/N"); String rs = sc.nextLine(); if ("N".equals(rs)) { break; } } } } else { System.out.println("学生信息为空,请先添加学生信息!"); } } /** * 查询全部学生信息 * * @param students */ private static void queryStudent(ArrayList<Student> students) { System.out.println("学生信息为:"); if (students.size() > 0) { System.out.println("学号\t\t姓名\t\t年龄\t\t住址"); for (int i = 0; i < students.size(); i++) { Student s = students.get(i); StringBuilder sb = new StringBuilder(); System.out.println(sb.append(s.getSid()).append("\t\t").append(s.getName()).append("\t\t").append(s.getAge()).append("\t\t").append(s.getAddress())); } } else { System.out.println("学生信息为空,请先添加学生信息!"); } } /** * 判断学生的学号是否重复 * * @param sid * @param students * @return true 代表重复 false 代表没有重复 */ public static boolean isSIdRepeat(String sid, ArrayList<Student> students) { // 遍历集合获取到所有学生对象,并判断学号是否重复 for (int i = 0; i < students.size(); i++) { Student s = students.get(i); if (sid.equals(s.getSid())) { return true; } } return false; } /** * 获取对象在集合中的索引 * * @param sid * @param students * @return */ public static int getIndex(String sid, ArrayList<Student> students) { for (int i = 0; i < students.size(); i++) { Student s = students.get(i); if (sid.equals(s.getSid())) { return i; } } return -1; } }

当未添加学生信息时,进行其他操作,都会返回该学生为空的提示(此处只展示一种),运行如下:

01_java StudentManager.png

添加学生信息(添加 3 个学生信息,此处只展示一个),运行如下:

03_java StudentManager.png

查询学生信息,运行如下:

04_java StudentManager.png

当删除或者更新学生信息时,输入的学号不存在,则提示用户该学生不存在,询问用户是否继续(此处只展示一个),运行如下:

05_java StudentManager.png

删除学生信息,运行如下:

06_java StudentManager.png

删除学生信息之后,查询学生信息,此时发现学号为 03 的学生信息已经删除,运行如下:

07_java StudentManager.png

修改学生信息,运行如下:

08_java StudentManager.png

修改学生信息之后,查询学生信息,此时发现学号为 01 的学生信息已经更改,运行如下:

09_java StudentManager.png

最后执行退出系统操作,运行如下:

10_java StudentManager.png

以上案例运用了 Java SE 知识,实现了一个简易的学生信息管理系统。