学生管理系统
使用技术:Javase
-
实现功能:增删改查
//程序入口 public static void main(String[] args) { //new一个ArrayList来储存所有Student对象 ArrayList<Student> students = new ArrayList<>(); Scanner scanner = new Scanner(System.in); //无限循环,每次选择后都会继续循环 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("6.根据姓名关键字查询学生"); System.out.println("7.退出系统"); System.out.println("-----------------------"); //接受选项 Integer choice = scanner.nextInt(); //通过switch来决定执行哪一个功能 switch (choice) { //功能全部由静态方法实现 case 1: displayAllStudents(students); break; case 2: addStudent(students); break; case 3: setStudent(students); break; case 4: deleteStudent(students); break; case 5: byStudentNumFind(students); break; case 6: byNameFind(students); break; case 7: System.exit(0); break; default: } //空两行分割每一次循环 System.out.println(); System.out.println(); }
-
展示所有学生信息
public static void displayAllStudents(ArrayList<Student> students) {//局部变量为ArrayList的泛型类 boolean flag = true;//用于判断集合是否为空 for (Student student : students) { //在student类里重写了toString方法 System.out.println(student.toString()); System.out.println("------------------------------"); flag = false;//若集合为空,则flag的值不改变 } if (flag) {//当集合为空时输出“暂无数据” System.out.println("暂无数据"); return; } System.out.println("展示完毕"); }
-
增加学生
public static void addStudent(ArrayList<Student> students) { //由于输入学生信息重复使用,所有我把它封装成了函数,返回值为Student Student student = scannerStudent(students); //直接使用list的add()方法 students.add(student); System.out.println("添加成功"); }
-
输入学生信息
public static Student scannerStudent(ArrayList<Student> students) //需要输入ArrayList<Student>集合,输出值为Student类 { Scanner scanner = new Scanner(System.in); System.out.printf("请输入学号:"); Integer studentNum = scanner.nextInt(); System.out.printf("请输入姓名:"); String name = scanner.next(); System.out.printf("请输入年龄:"); Integer age = scanner.nextInt(); System.out.printf("请输入性别:"); String sex = scanner.next(); return new Student(studentNum, name, age, sex); }
-
修改学生信息
public static void setStudent(ArrayList<Student> students) { Scanner scanner = new Scanner(System.in); System.out.printf("请输入需要修改的学生的学号:"); Integer studentNum = scanner.nextInt(); boolean flag = true;//判断是否找到学号 for (Student student : students) { //找到学号,执行修改操作 if (student.getStudentNum() == studentNum) { //同样的,先获取修改后的student类 Student studentNew = scannerStudent(students); //从修改后的Student类中取出学号,年龄,姓名,性别,修改原来的Student类 student.setStudentNum(studentNew.getStudentNum()); student.setAge(studentNew.getAge()); student.setName(studentNew.getName()); student.setSex(studentNew.getSex()); flag = false;//执行完修改操作后,改变flag的值 } } //未找到学号,则flag值不变,执行if语句 if (flag) { System.out.println("未找到学号"); return; } System.out.println("修改完成"); }
-
删除学生信息
public static void deleteStudent(ArrayList<Student> students) { //删除操作与修改操作流程一致,区别在于删除使用了list的remove方法 Scanner scanner = new Scanner(System.in); System.out.printf("请输入学号:"); Integer studentNum = scanner.nextInt(); boolean flag = true; for (Student student : students) { if (student.getStudentNum().equals(studentNum) ) { students.remove(student); flag = false; break; } System.out.println(1); } if (flag) { System.out.println("未找到学号"); return; } System.out.println("删除成功"); }
-
通过学号查找学生
public static void byStudentNumFind(ArrayList<Student> students) //流程上与修改操作一致,展示学生方法也介绍过了 { Scanner scanner = new Scanner(System.in); System.out.printf("请输入学号:"); Integer studentNum = scanner.nextInt(); boolean flag = true; for (Student student : students) { if (student.getStudentNum() == studentNum) { System.out.println(student.toString()); flag = false; } } if (flag) { System.out.println("未找到学号"); return; } System.out.println("查找完成"); }
-
通过姓名关键字查找
public static void byNameFind(ArrayList<Student> students) { //流程上与修改操作一致,只是使用了String类的contain方法 Scanner scanner = new Scanner(System.in); System.out.printf("请输入姓名关键字:"); String nameImport = scanner.next(); boolean flag = true; for (Student student : students) { if (student.getName().contains(nameImport)) { System.out.println(student.toString()); flag = false; } } if (flag) { System.out.println("未找到学号"); return; } System.out.println("查找完成"); }
-
Contains()
返回一个值,该值指示指定的子串是否出现在此字符串中。
public boolean contains(CharSequence s) { return indexOf(s.toString()) > -1; } //输入值为字符串,程序会自动查找,返回值为boolean
-
Student类
public class Student { /*要注意的点: 1.属性全部私有化 2.有参构造方法 3.重写了toSting方法 */ private Integer studentNum; private String name; private Integer age; private String sex; public Student() { } public Student(Integer studentNum, String name, Integer age, String sex) { this.studentNum = studentNum; this.name = name; this.age = age; this.sex = sex; } @Override public String toString() { return "Student{" + "studentNum=" + studentNum + ", name='" + name + '\'' + ", age=" + age + ", sex='" + sex + '\'' + '}'; } public Integer getStudentNum() { return studentNum; } public void setStudentNum(Integer studentNum) { this.studentNum = studentNum; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } }
不足
-
没有捕获错误,一旦出现bug,代码就会终止
-
数据没有保存,一旦退出,数据就会消失
升级方向:
-
利用IO流保存数据到文件里
-
编写异常类捕获并处理数据