2.学生管理系统
2.1学生管理系统实现步骤
-
案例需求
针对目前我们的所学内容,完成一个综合案例:学生管理系统。该系统主要功能如下:
添加学生:通过键盘录入学生信息,添加到集合中
删除学生:通过键盘录入要删除学生的学号,将该学生对象从集合中删除
修改学生:通过键盘录入要修改学生的学号,将该学生对象其他信息进行修改
查看学生:将集合中的学生对象信息进行展示
退出系统:结束程序
-
实现步骤
-
定义学生类,包含以下成员变量
private String sid // 学生id
private String name // 学生姓名
private String age // 学生年龄
private String address // 学生所在地
-
学生管理系统主界面的搭建步骤
2.1 用输出语句完成主界面的编写 2.2 用Scanner实现键盘输入 2.3 用switch语句完成选择的功能 2.4 用循环完成功能结束后再次回到主界面
-
学生管理系统的添加学生功能实现步骤
3.1 定义一个方法,接收ArrayList<Student>集合 3.2 方法内完成添加学生的功能 ①键盘录入学生信息 ②根据录入的信息创建学生对象 ③将学生对象添加到集合中 ④提示添加成功信息 3.3 在添加学生的选项里调用添加学生的方法
-
学生管理系统的查看学生功能实现步骤
4.1 定义一个方法,接收ArrayList<Student>集合 4.2 方法内遍历集合,将学生信息进行输出 4.3 在查看所有学生选项里调用查看学生方法
-
学生管理系统的删除学生功能实现步骤
5.1 定义一个方法,接收ArrayList<Student>集合 5.2 方法中接收要删除学生的学号 5.3 遍历集合,获取每个学生对象 5.4 使用学生对象的学号和录入的要删除的学号进行比较,如果相同,则将当前学生对象从集合中删除 5.5 在删除学生选项里调用删除学生的方法
-
学生管理系统的修改学生功能实现步骤
6.1 定义一个方法,接收ArrayList<Student>集合 6.2 方法中接收要修改学生的学号 6.3 通过键盘录入学生对象所需的信息,并创建对象 6.4 遍历集合,获取每一个学生对象。并和录入的修改学生学号进行比较.如果相同,则使用新学生对象替换当前学生对象 6.5 在修改学生选项里调用修改学生的方法
-
退出系统
使用System.exit(0);退出JVM
-
2.2学生类的定义
package com.itheima.studentsystem; public class Student { private String id; private String name; private int age; private String address; //下面是空参,有参,get和set方法 }
2.3测试类的定义
public class StudentSystem { public static void main(String[] args) { ArrayList<Student> list = new ArrayList<>(); loop: 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("请输入您的选择:"); Scanner sc = new Scanner(System.in); String choose = sc.next(); switch (choose) { case "1" -> addStudent(list); case "2" -> deleteStudent(list); case "3" -> updateStudent(list); case "4" -> queryStudent(list); case "5" -> { System.out.println("退出"); //break loop; System.exit(0);//停止虚拟机运行 } default -> System.out.println("没有这个选项"); } } } //添加学生 public static void addStudent(ArrayList<Student> list) { //利用空参构造先创建学生对象 Student s = new Student(); Scanner sc = new Scanner(System.in); String id = null; while (true) { System.out.println("请输入学生的id"); id = sc.next(); boolean flag = contains(list, id); if(flag){ //表示id已经存在,需要重新录入 System.out.println("id已经存在,请重新录入"); }else{ //表示id不存在,表示可以使用 s.setId(id); break; } } System.out.println("请输入学生的姓名"); String name = sc.next(); s.setName(name); System.out.println("请输入学生的年龄"); int age = sc.nextInt(); s.setAge(age); System.out.println("请输入学生的家庭住址"); String address = sc.next(); s.setAddress(address); //把学生对象添加到集合当中 list.add(s); //提示一下用户 System.out.println("学生信息添加成功"); } //删除学生 public static void deleteStudent(ArrayList<Student> list) { Scanner sc = new Scanner(System.in); System.out.println("请输入要删除的id"); String id = sc.next(); //查询id在集合中的索引 int index = getIndex(list, id); //对index进行判断 //如果-1,就表示不存在,结束方法,回到初始菜单 if(index >= 0){ //如果大于等于0的,表示存在,直接删除 list.remove(index); System.out.println("id为:" + id + "的学生删除成功"); }else{ System.out.println("id不存在,删除失败"); } } //修改学生 public static void updateStudent(ArrayList<Student> list) { Scanner sc = new Scanner(System.in); System.out.println("请输入要修改学生的id"); String id = sc.next(); int index = getIndex(list, id); if(index == -1){ System.out.println("要修改的id" + id + "不存在,请重新输入"); return; } //当代码执行到这里,表示什么?表示当前id是存在的。 //获取要修改的学生对象 Student stu = list.get(index); //输入其他的信息并修改 System.out.println("请输入要修改的学生姓名"); String newName = sc.next(); stu.setName(newName); System.out.println("请输入要修改的学生年龄"); int newAge = sc.nextInt(); stu.setAge(newAge); System.out.println("请输入要修改的学生家庭住址"); String newAddress = sc.next(); stu.setAddress(newAddress); System.out.println("学生信息修改成功"); } //查询学生 public static void queryStudent(ArrayList<Student> list) { if (list.size() == 0) { System.out.println("当前无学生信息,请添加后再查询"); //结束方法 return; } //打印表头信息 System.out.println("id\t\t姓名\t年龄\t家庭住址"); //当代码执行到这里,表示集合中是有数据的 for (int i = 0; i < list.size(); i++) { Student stu = list.get(i); System.out.println(stu.getId() + "\t" + stu.getName() + "\t" + stu.getAge() + "\t" + stu.getAddress()); } } //判断id在集合中是否存在 public static boolean contains(ArrayList<Student> list, String id) { //循环遍历集合得到里面的每一个学生对象 /*for (int i = 0; i < list.size(); i++) { //拿到学生对象后,获取id并进行判断 Student stu = list.get(i); String sid = stu.getId(); if(sid.equals(id)){ //存在,true return true; } } // 不存在false return false;*/ return getIndex(list,id) >= 0; } //通过id获取索引的方法 public static int getIndex(ArrayList<Student> list, String id){ //遍历集合 for (int i = 0; i < list.size(); i++) { //得到每一个学生对象 Student stu = list.get(i); //得到每一个学生对象的id String sid = stu.getId(); //拿着集合中的学生id跟要查询的id进行比较 if(sid.equals(id)){ //如果一样,那么就返回索引 return i; } } //当循环结束之后还没有找到,就表示不存在,返回-1. return -1; } }
课堂演示:
package StudentSystem; public class Student { //id name age address 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; } }
package StudentSystem; import java.util.ArrayList; import java.util.Scanner; public class StudentSystem { public static void main(String[] args) { ArrayList<Student> list = new ArrayList<>(); loop: 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("请输入您的选择:"); Scanner sc = new Scanner(System.in); String choose = sc.next(); switch (choose) { case "1" -> addStudent(list); case "2" -> deleteStudent(list); case "3" -> updateStudent(list); case "4" -> queryStudent(list); case "5" -> { System.out.println("退出"); //break loop; System.exit(0);//停止虚拟机运行 } default -> System.out.println("没有这个选项"); } } } //添加学生 public static void addStudent(ArrayList<Student> list) { //利用空参构造先创建学生对象 Student s = new Student(); Scanner sc = new Scanner(System.in); String id = null; while (true) { System.out.println("请输入学生的id"); id = sc.next(); boolean flag = contains(list, id); if(flag){ //两者必须要有一个break,才能执行其他语句 //表示id已经存在,需要重新录入 System.out.println("id已经存在,请重新录入"); }else{ //表示id不存在,表示可以使用 s.setId(id); break; } } System.out.println("请输入学生的姓名"); String name = sc.next(); s.setName(name); System.out.println("请输入学生的年龄"); int age = sc.nextInt(); s.setAge(age); System.out.println("请输入学生的家庭住址"); String address = sc.next(); s.setAddress(address); //把学生对象添加到集合当中 list.add(s); //提示一下用户 System.out.println("学生信息添加成功"); } //删除学生 public static void deleteStudent(ArrayList<Student> list) { Scanner sc = new Scanner(System.in); System.out.println("请输入要删除的id"); String id = sc.next(); //查询id在集合中的索引 int index = getIndex(list, id); //对index进行判断 //如果-1,就表示不存在,结束方法,回到初始菜单 if(index >= 0){ //如果大于等于0的,表示存在,直接删除 list.remove(index); System.out.println("id为:" + id + "的学生删除成功"); }else{ System.out.println("id不存在,删除失败"); } } //修改学生 public static void updateStudent(ArrayList<Student> list) { Scanner sc = new Scanner(System.in); System.out.println("请输入要修改学生的id"); String id = sc.next(); int index = getIndex(list, id); if(index == -1){ System.out.println("要修改的id" + id + "不存在,请重新输入"); return; } //当代码执行到这里,表示什么?表示当前id是存在的。 //获取要修改的学生对象 Student stu = list.get(index); //输入其他的信息并修改 System.out.println("请输入要修改的学生姓名"); String newName = sc.next(); stu.setName(newName); System.out.println("请输入要修改的学生年龄"); int newAge = sc.nextInt(); stu.setAge(newAge); System.out.println("请输入要修改的学生家庭住址"); String newAddress = sc.next(); stu.setAddress(newAddress); System.out.println("学生信息修改成功"); } //查询学生 public static void queryStudent(ArrayList<Student> list) { if (list.size() == 0) { System.out.println("当前无学生信息,请添加后再查询"); //结束方法 return; } //打印表头信息 System.out.println("id\t\t姓名\t年龄\t家庭住址"); //当代码执行到这里,表示集合中是有数据的 for (int i = 0; i < list.size(); i++) { Student stu = list.get(i); System.out.println(stu.getId() + "\t" + stu.getName() + "\t" + stu.getAge() + "\t" + stu.getAddress()); } } //判断id在集合中是否存在 public static boolean contains(ArrayList<Student> list, String id) { //循环遍历集合得到里面的每一个学生对象 /*for (int i = 0; i < list.size(); i++) { //拿到学生对象后,获取id并进行判断 Student stu = list.get(i); String sid = stu.getId(); if(sid.equals(id)){ //存在,true return true; } } // 不存在false return false;*/ return getIndex(list,id) >= 0; } //通过id获取索引的方法 public static int getIndex(ArrayList<Student> list, String id){ //遍历集合 for (int i = 0; i < list.size(); i++) { //得到每一个学生对象 Student stu = list.get(i); //得到每一个学生对象的id String sid = stu.getId(); //拿着集合中的学生id跟要查询的id进行比较 if(sid.equals(id)){ //如果一样,那么就返回索引 return i; } } //当循环结束之后还没有找到,就表示不存在,返回-1. return -1; } }