(以下内容全部来自上述课程)
1.业务分析并搭建主菜单
1.需求
采取控制台的方式去书写学生管理系统
2.分析
1.初始菜单
2.学生类
属性:id,姓名,年龄,家庭住址
3.添加功能
键盘录入每一个学生信息并添加,需要满足以下要求:
- id唯一
4.删除功能
键盘录入要删除的学生id,需要满足以下要求:
- id存在删除
- id不存在,需要提示不存在,并返回的初始菜单
5.修改功能
键盘录入要修改的学生id,需要满足以下要求:
- id存在,继续录入其他信息
- id不存在,需要提示不存在,并返回的初始菜单
6.查询功能
打印所有的学生信息,需要满足以下要求:
- 如果没有学生信息,提示:当前无学生信息,请添加后再查询
- 如果有学生信息,需要按照以下格式输出。(不用过于纠结对齐的问题)
3.流程图
4.代码
1.Javabean
package xueshengguanli;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;}/*** 获取* @return id*/public String getId() {return id;}/*** 设置* @param id*/public void setId(String id) {this.id = id;}/*** 获取* @return name*/public String getName() {return name;}/*** 设置* @param name*/public void setName(String name) {this.name = name;}/*** 获取* @return age*/public int getAge() {return age;}/*** 设置* @param age*/public void setAge(int age) {this.age = age;}/*** 获取* @return address*/public String getAddress() {return address;}/*** 设置* @param address*/public void setAddress(String address) {this.address = address;}public String toString() {return "Student{id = " + id + ", name = " + name + ", age = " + age + ", address = " + address + "}";}
}
2.测试类
package xueshengguanli;import java.util.ArrayList;
import java.util.Scanner;public class StudentSystem {public static void main(String[] args) {// 将 ArrayList<Student> 移到循环外部,确保操作的是同一个列表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 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 loop;// System.exit(0); 停止虚拟机运行default:System.out.println("输入有误");}}}// 添加学生public static void addStudent(ArrayList <Student> list){// 利用空参构造方法创建一个新的学生对象Student newStudent = new Student();Scanner sc = new Scanner(System.in);System.out.println("请输入学生学号:");String id = sc.next();boolean flag = isExist(list,id);if (flag) {System.out.println("当前学号已存在,请重新输入");return;}newStudent.setId(id);System.out.println("请输入学生姓名:");String name = sc.next();newStudent.setName(name);System.out.println("请输入学生年龄:");int age = sc.nextInt();newStudent.setAge(age);System.out.println("请输入学生住址:");String address = sc.next();newStudent.setAddress(address);// 把新的学生对象添加到集合中list.add(newStudent);// 提示添加成功System.out.println("添加成功");}// 删除学生public static void deleteStudent(ArrayList<Student> list){Scanner sc = new Scanner(System.in);System.out.println("请输入要删除的学生学号:");String id = sc.next();// 查询 id 在集合中的索引位置int index = getIndex(list,id);if (index == -1) {System.out.println("当前学号不存在,请重新输入");return;}// 删除list.remove(index);// 提示删除成功System.out.println("删除成功");}// 修改学生public static void updateStudent(ArrayList<Student> list) {// 请输入要修改的 idScanner sc = new Scanner(System.in);System.out.println("请输入要修改的学生学号:");String id = sc.next();// 查询 id 在集合中的索引位置int index = getIndex(list,id);if (index == -1) {System.out.println("当前学号不存在,请重新输入");return;}// 获取要修改的学生对象Student student = list.get(index);// 请输入要修改的学生信息System.out.println("请输入要修改的学生姓名:");String name = sc.next();student.setName(name);System.out.println("请输入要修改的学生年龄:");int age = sc.nextInt();student.setAge(age);System.out.println("请输入要修改的学生住址:");String address = sc.next();student.setAddress(address);// 提示修改成功System.out.println("修改成功");}// 查询学生public static void queryStudent(ArrayList<Student> list){if (list.size() == 0) {System.out.println("当前无学生信息,请添加后重试");return;}// 输出表头System.out.println("学号\t姓名\t年龄\t住址");// 遍历原数组for (int i = 0; i < list.size(); i++) {// 获取当前学生对象Student student = list.get(i);// 输出当前学生对象的信息System.out.println(student.getId() + "\t" + student.getName() + "\t"+ student.getAge() + "\t" + student.getAddress());}}// 判断当前 id 是否存在public static boolean isExist(ArrayList<Student> list,String id){// 遍历原数组for (int i = 0; i < list.size(); i++) {// 判断当前学生对象的 id 是否等于要判断的 idif(list.get(i).getId().equals(id)){// 如果相等,就返回 truereturn true;}}// 如果遍历完都没有相等的,就返回 falsereturn false;}// 通过 id 获取索引public static int getIndex(ArrayList<Student> list,String id){// 遍历原数组for (int i = 0; i < list.size(); i++) {// 判断当前学生对象的 id 是否等于要判断的 idif(list.get(i).getId().equals(id)){// 如果相等,就返回索引return i;}}// 如果遍历完都没有相等的,就返回 -1return -1;}
}