* 1.ArrayList练习
* 1.1 创建一个集合,存储学生对象,学生对象的数据来自键盘录入,最后,遍历集合
* !!!!学生管理系统
*
* 注意:如果不加break,则跳不出switch语句,他会在匹配标签那一行往下执行,直到default语句输完后跳出switch。()public class A_One { public static void main(String[] args) { // TODO Auto-generated method stub 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 choiceString = sc.nextLine(); switch (choiceString) { //如果不加break,则跳不出switch语句,他会在匹配标签那一行往下执行,直到default语句输完后跳出switch,可以试着注释掉某个break看效果 case "1": System.out.println("查看学生"); break; case "2": System.out.println("2 添加学生"); break; case "3": System.out.println("3 删除学生"); break; case "4": System.out.println("4 修改学生"); break; case "5": System.out.println("5 退出"); default: System.out.println("谢谢你的使用 "); System.exit(0);//结束运行 } } } }
switch (value) { case 1: case 2: case 3: System.out.println("Value is 1, 2, or 3"); break; case 4: System.out.println("Value is 4"); break; default: System.out.println("Value is not 1, 2, 3, or 4"); }
这段代码说明switch内的值和case的值的数据类型是对应的。如第一个代码是String,第二个代码是int。
* 1.2 创建一个集合,存储学生对象,学生对象的数据来自键盘录入,最后,遍历集合
*
* 分析:
* A:定义学生类
* B:创建集合对象
* C:键盘录入数据,创建学生对象,把键盘录入的数据赋值给学生对象的成员变量
* D:把学生对象作为元素存储到集合中
* E:遍历集合public class B_Student { private String name; private int age; public B_Student() { super(); // TODO Auto-generated constructor stub } public B_Student(String name, int age) { super(); this.name = name; this.age = age; } 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 class B_ArrayListTest1 { public static void main(String[] args) { //创建集合对象 ArrayList
array = new ArrayList (); //键盘录入 // Scanner sc = new Scanner(System.in); // System.out.println("请输入学生姓名:"); // String name=sc.nextLine(); // System.out.println("请输入学生年龄:"); // int age=sc.nextInt(); // // //创建学生对象 并赋值键盘录入数据 // B_Student s = new B_Student(name,age); // // //存储学生对象 // array.add(s); //第二种方法:调用方法,可以一次运行存储多次。上面的只能一次运行 存储一次! addStudent(array); addStudent(array); addStudent(array); //遍历集合 for(int i=0;i 1.3 学生管理系统
* 学生管理系统的学生测试类
* 步骤:
* A:定义学生类
* B:学生管理系统的主界面的代码编写
* C:学生管理系统查看所有学生代码编写 : 遍历集合 , 元素为学生对象 ,每个对象调用属性 .getXxx()
* D:学生管理系统增加学生的代码编写 : 直接创建学生对象,将对象调用set方法设置信息,最后将对象存入集合 .setXxx()与add(student);
* E:学生管理系统修改学生的代码编写 : 通过学号查找,然后重新设置属性,调用set(index,student)方法,即将index索引在的地方换成student,做到更新内容
* F:学生管理系统删除学生的代码编写 : 通过学号查找,然后remove(index)索引,直接删除索引位置的元素
*/* * 学生管理系统的学生类 * * */ public class Student { private String sid; private String name; private String age; private String address; public Student() { super(); } public Student(String sid, String name, String age, String address) { super(); 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 StudentManangerTest { public static void main(String[] args) { //1.创建集合对象 用于存储学生信息、查看学生信息、删除学生信息、修改学生信息 ArrayList
array = new ArrayList (); //2.学生管理系统的主界面的编写 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 choiceString = sc.nextLine(); switch (choiceString) { //如果不加break,则跳不出switch语句,他会在匹配标签那一行往下执行,直到default语句输完后跳出switch case "1": findAllStudent(array); break; case "2": addStudent(array); break; case "3": deleteStudent(array); break; case "4": updateStudent(array); break; case "5": default: System.out.println("谢谢你的使用 "); System.exit(0); break; } } } //3.修改学生信息代码编写 private static void updateStudent(ArrayList array) { Scanner sc = new Scanner(System.in); // while(true){ System.out.println("请输入你要修改学生的学号:"); String sid = sc.nextLine(); int index = -1; for (int x = 0; x < array.size(); x++) { //遍历每一个集合元素 Student s = array.get(x); if (s.getSid().equals(sid)) { //遍历之后取得学生的sid属性与键盘输入的学号比较 index = x; //比较成功 , 那么index有值,即不等于-1了,同时这个index也是第n个元素的位置,方便用于后续更新指定位置的信息 break; } } if (index != -1) { //说明比较成功,可以进行更新 System.out.println("请输入新姓名:"); String name = sc.nextLine(); System.out.println("请输入新年龄:"); String age = sc.nextLine(); System.out.println("请输入新地址:"); String address = sc.nextLine(); Student s = new Student(); s.setSid(sid); s.setName(name); s.setAge(age); s.setAddress(address); array.set(index, s);//public E set(int index, E element)用指定的元素替代此列表中指定位置上的元素。 // 注意:public void add(int i,E e)//在指定的索引处添加一个元素,所以综合考虑要选set System.out.println("修改学生成功"); // break; 66行这里若加了一个while,那么就要break,意思是,找到学号修改的学生时,才会跳出循环,否则一直输入学号,因为else无break; } else { System.out.println("不好意思,你要修改的学号对应的学生信息不存在,请回去重新选择你的操作"); } // } } //4.删除学生信息代码编写 private static void deleteStudent(ArrayList array) { Scanner sc = new Scanner(System.in); while(true){ System.out.println("请输入你要删除学生的学号:"); String sid = sc.nextLine(); int index = -1; for (int x = 0; x < array.size(); x++) { Student s = array.get(x); if (s.getSid().equals(sid)) { //x代表索引 ,所以匹配上时, 将x赋值给index,再用remover(index)删除特定索引的学生对象元素 index = x; break; } } if (index != -1) { array.remove(index); System.out.println("删除学生成功"); break; //跳出while循环 } else { System.out.println("不好意思,你要删除的学号对应的学生信息不存在,请回去重新选择你的操作"); //没有break,跳不出循环,直到找到学号,,或者就不要while了,只执行一次。然后回到27行的位置继续选择 } } } //5.添加学生信息代码的编写 private static void addStudent(ArrayList array) { Scanner sc = new Scanner(System.in); String sid; while (true) { System.out.println("请输入学号:"); sid = sc.nextLine(); boolean flag = false; for (int x = 0; x < array.size(); x++) {//遍历集合元素 ,是学生对象, 直接调用学号属性 ,判断已经存在的每一个学生的学号和输入的学号是否相等。相等继续循环,反之下一步 Student s = array.get(x); if (s.getSid().equals(sid)) { flag = true; //匹配到了 , 要继续循环 ,重新输入学号 } } if (flag == true) { //学号匹配到了 , 要继续循环 ,这里没有break; 重新输入学号 System.out.println("你输入的学号已经被占用,请重新输入"); } else { break; //学号没有匹配到 , break跳出循环 , 输入新的信息,执行下一步 } } //上面由于学号没匹配到,跳出循环 , 输入学生新的属性。 System.out.println("请输入姓名:"); String name = sc.nextLine(); System.out.println("请输入年龄:"); String age = sc.nextLine(); System.out.println("请输入地址:"); String address = sc.nextLine(); Student s = new Student(); s.setSid(sid); s.setName(name); s.setAge(age); s.setAddress(address); array.add(s); System.out.println("添加学生成功"); } //6.查询学生信息的代码编写 //判断是否有值 , 节省资源 -在更新那里也可以用 判断没人的时候就不用继续更新了 private static void findAllStudent(ArrayList array) { if (array.size() == 0) { System.out.println("不好意思,目前没有学生信息可供查看,请回去重新选择你的操作"); return; } //集合通过get(i)遍历每个元素,元素.getXxx()方法获取学生的信息 System.out.println("学号\t姓名\t年龄\t居住地"); // \t就是一个制表符 , 会有空格效果 for (int x = 0; x < array.size(); x++) { Student s = array.get(x); System.out.println(s.getSid() + "\t" + s.getName() + "\t" + s.getAge() + "\t" + s.getAddress()); } } } * 2.回顾成员方法:
* 添加元素:
* public boolean add(E e)//添加元素(上面不返回值,但是添加了)
* public void add(int i,E e)//在指定的索引处添加一个元素
*
* 获取元素:
* public E get(int index);返回指定索引处的元素 (上面返回值)
*
* 集合长度:
* public int size();返回集合中的元素的个数
*
* 删除元素:
* public E remove(int index);删除指定索引的元素 , 返回该删除的元素(上面不返回值,但是删除了)
* public boolean remove(Object o);删除指定的元素 , 返回是否成功
*
* 修改元素:
* public E set(int index,E e);修改指定索引处的元素 , 返回被修改的元素(上面不返回值,但是更新了)