集合:学生管理系统
JAVA面向对象集合学生管理系统
-
功能:增加,删除,修改,查询单个学生,显示全部学生,登录账号与退出系统。
-
模块:将每个功能独立开来写出对应方法。
-
创建一个实体学生类,声明变量,写出无参, 带参构造
public class Student { private String stuId;//学生学号 private String stuName;//学生姓名 private short stuAge;//学生年龄 private String stuClass;//学生班级 //无参构造 public Student() { }//带参构造 public Student(String stuId, String stuName, short stuAge, String stuClass) { this.stuId = stuId; this.stuName = stuName; this.stuAge = stuAge; this.stuClass = stuClass; }
-
定义get,set方法
public String getStuId() { return stuId; } public void setStuId(String stuId) { this.stuId = stuId; } public String getStuName() { return stuName; } public void setStuName(String stuName) { this.stuName = stuName; } public short getStuAge() { return stuAge; } public void setStuAge(short stuAge) { this.stuAge = stuAge; } public String getStuClass() { return stuClass; } public void setStuClass(String stuClass) { this.stuClass = stuClass; } }
-
创建学生Demo类
这里注意方法外的集合要加static关键字,不然后面创建Student对象会报错!
1.若是对象的特有行为(某个实例方法特有的行为),不加static。
2.若是对象集合共有的集合,则加static。
public class StudentDemo { // 创建ArrayList集合 static ArrayList<Student> a = new ArrayList<Student>();
-
写出main方法,循环内给出提示并用switch提供选择。
// 用while循环回到主界面 while (true) { System.out.println("欢迎来到学生管理系统!"); System.out.println("1-添加学生\t2-删除学生\t3-修改学生\t4-查看单个学生\t5-查看所有学生\t6-退出系统"); Scanner scanner = new Scanner(System.in); System.out.println("请输入你的选择:"); String s = scanner.nextLine(); // 使用switch提供选择 switch (s) { case "1": { addStu(); break; } case "2": { deleteStu(); break; } case "3": { updateStu(); break; } case "4": { findStu(); break; } case "5": { findAllStu(); break; } case "6": { System.out.println("退出系统成功!"); System.exit(0);// JVM虚拟机退出系统 break; } default: System.out.println("输入的选择不存在!,请重新输入"); break; } } }
-
添加学生Add方法
关于tianbu()这个方法调用,主要是解决用户输入学号可能出现重复的问题,下面会详细说。
public static void addStu() { Scanner scanner = new Scanner(System.in); String id; //采用while语句,解决添加的学号重复问题 while (true) { System.out.println("请输入要添加的学生学号:"); id = scanner.nextLine(); boolean flag = tianbu(id); if (flag) { System.out.println("输入的学号已存在!请重新输入"); } else { break; } } // 创建学生对象,把键盘录入的学生的数据赋值给学生对象 Student s = new Student(); System.out.println("请输入要添加的学生姓名:"); String name = scanner.nextLine(); System.out.println("请输入要添加的学生班级:"); String classStu = scanner.nextLine(); System.out.println("请输入要添加的学生年龄:"); short age = scanner.nextShort(); if(age<=120&&age>=0) { s.setStuAge(age); s.setStuId(id); s.setStuName(name); s.setStuClass(classStu); a.add(s); System.out.println("添加学生成功!"); }else { System.out.println("添加失败,输入的年龄不合法!"); } // 将整个学生对象添加到集合中,注:集合存储学生对象,存储的是对象的内存地址 }
-
tianbu()
这里主要通过声明布尔类型flag标志变量来做add方法中if语句的判断条件
首先给flag设置成false,遍历集合,将集合的元素赋值给Student对象。
通过对象调用Student类中的学号与用户输入的学号做比较,若学号相同,则出现了学号重复的问题,
给flag赋值为true,返回flag的值。
-
public static boolean tianbu(String id) { boolean flag = false; for (int i = 0; i < a.size(); i++) { Student student = a.get(i); if (student.getStuId().equals(id)) { flag = true; break; } } return flag; }
-
删除学生Delete方法
这里通过flag解决了学号不存在问题,遍历集合可采取迭代器也可用for循环。
-
public static void deleteStu() { // 键盘录入要删除的学生学号 Scanner scanner = new Scanner(System.in); System.out.println("请输入要删除的学生学号:"); String string1 = scanner.nextLine(); //定义布尔类型变量,提供条件判断 boolean flag = true; /* 遍历集合,此处可采用for循环的方法 for (int i = 0; i < a.size(); i++) { Student student = a.get(i); if (student.getStuId().equals(string1)) { a.remove(i); flag = false; System.out.println("删除成功!"); } } if(flag) { System.out.println("该学号不存在!"); } */ //采用迭代器遍历集合,并添加相应判断 Iterator<Student> iterator = a.iterator(); while (iterator.hasNext()) { Student student = iterator.next(); if (student.getStuId().equals(string1)) { iterator.remove(); System.out.println("删除成功!"); flag = false; break; } } if (flag) { System.out.println("删除失败!,输入的学号有误!"); } }
-
修改学生Updata方法
与上面添加的方法类似,比较简单,没什么好说的。
-
public static void updateStu() { // 键盘录入要修改的学生学号 Scanner scanner = new Scanner(System.in); String id; //while语句解决,用户修改的学号重复问题 while (true) { System.out.println("请输入要修改的学生学号:"); id = scanner.nextLine(); boolean flag = xiubu(id); if (flag) { System.out.println("要修改的学号不存在!请重新输入"); } else { break; } } System.out.println("请输入要修改的学生姓名:"); String name = scanner.nextLine(); System.out.println("请输入要修改的学生班级:"); String classStu = scanner.nextLine(); System.out.println("请输入要修改的学生年龄:"); short age = scanner.nextShort(); // 创建学生对象,存储键盘录入的数据 Student student = new Student(); student.setStuId(id); student.setStuAge(age); student.setStuName(name); student.setStuClass(classStu); // 遍历集合,通过if条件控制语句修改对于学生信息 for (int i = 0; i < a.size(); i++) { Student student1 = a.get(i); if (student1.getStuId().equals(id)) { a.set(i, student1); System.out.println("修改学生成功"); break; } } }
-
xiubu()方法
-
public static boolean xiubu(String id) { boolean flag = true; for (int i = 0; i < a.size(); i++) { Student student = a.get(i); if (student.getStuId().equals(id)) { flag = false; break; } } return flag; }
-
查询单个学生Query方法
这里表头信息输出语句加\t是为了隔开信息。
-
public static void findStu() { //采用条件判断语句,若集合无数据,提供相应提示 if (a.size() == 0) { System.out.println("该系统未录入学生信息,请添加学生信息!"); } else { Scanner scanner = new Scanner(System.in); System.out.println("请输入要查找学生的学号:"); String str = scanner.nextLine(); for (int i = 0; i < a.size(); i++) { Student s = a.get(i); if (str.equals(s.getStuId())) { // 显示表头信息 System.out.println("学号\t姓名\t年龄\t班级"); System.out.println(s.getStuId() + "\t" + s.getStuName() + "\t" + s.getStuAge() + "\t" +s.getStuClass()); } } } }
-
显示全部学生Query方法
-
public static void findAllStu() { if (a.size() == 0) { System.out.println("该系统未录入学生信息,请添加学生信息!"); } else { // 显示表头信息 System.out.println("学号\t姓名\t年龄\t班级"); // 遍历集合,将集合中的数据的数据取出,按照对应的格式显示 for (int i = 0; i < a.size(); i++) { Student s = a.get(i); System.out.println(s.getStuId() + "\t" + s.getStuName() + "\t" + s.getStuAge() + "\t" +s.getStuClass()); } } }