葵花宝典:JavaSE-day09

发布于:2022-10-18 ⋅ 阅读:(354) ⋅ 点赞:(0)

JavaSE 第 09 天 —— ArrayList、学生管理系统

能力目标

  1. 能说出集合和数组的区别:
  2. 能使用集合对数据进行增删改查:
  3. 能看懂学生管理系统执行流程:

1. ArrayList

☆1.1 集合同数组的区别对比(理解)

视频时长 / 10’38’’

1.1.1 「集合同数组的区别对比」问题

  1. 集合和数组有和区别?

1.1.2 「集合同数组的区别对比」答案

  1. 集合和数组有和区别?

    • 数组:长度不可变,可以存基本类型或引用类型的数据。
    • 集合:长度可变,只能存引用数据类型数据。


☆1.2 ArrayList的构造方法和添加方法(掌握)

视频时长 / 11’15’’

1.2.1 「ArrayList的构造方法和添加方法」问题

  1. ArrayList集合后面的这个代表什么意思?

1.2.2 「ArrayList的构造方法和添加方法」答案

  1. ArrayList集合后面的这个代表什么意思?
    • :泛型。代表该ArrayList集合对象中只能存储String类型的数据。
    • 用于约束集合中存储元素的数据类型。

1.2.3 「ArrayList的构造方法和添加方法」课堂练习

练习时长:6分钟。

需求:创建集合对象,泛型使用,并任意添加5个数据到集合中,最后在控制台输出集合。

public static void main(String[] args){
   //创建集合
  ArrayList<String> array = new ArrayList<String>();
  //添加元素
  array.add("hello");
  array.add("world");
  array.add("java");
  array.add("IOS");
  array.add("PHP");
  System.out.println(array);
}

☆1.3 ArrayList常用方法(掌握)

视频时长 / 10’15’’

1.2.1 「ArrayList的构造方法和添加方法」课堂练习

练习时长:10分钟。

需求:练习视频中讲解的方法。

public static void main(String[] args) {
        //创建集合
        ArrayList<String> array = new ArrayList<String>();
        //添加元素
        array.add("hello");
        array.add("world");
        array.add("java");
        //public boolean remove(Object o):删除指定的元素,返回删除是否成功
        System.out.println(array.remove("world"));
        System.out.println(array.remove("javaee"));
        //public E remove(int index):删除指定索引处的元素,返回被删除的元素
        System.out.println(array.remove(1));
        //IndexOutOfBoundsException
        System.out.println(array.remove(3));
        //public E set(int index,E element):修改指定索引处的元素,返回被修改的元素
        System.out.println(array.set(1,"javaee"));
        //IndexOutOfBoundsException
        System.out.println(array.set(3,"javaee"));
        //public E get(int index):返回指定索引处的元素
        System.out.println(array.get(0));
        System.out.println(array.get(1));        				         System.out.println(array.get(2));
        //System.out.println(array.get(3)); //?????? 自己测试
        //public int size():返回集合中的元素的个数
        System.out.println(array.size());
        //输出集合
        System.out.println("array:" + array);
    }

☆1.4 集合存储字符串并遍历(操作)

视频时长 / 04’27’’

1.4.1 「集合存储字符串并遍历」课堂练习

练习时长:5分钟。

需求:创建集合对象,将任意字符串添加到集合中,并遍历集合输出字符串。

public static void main(String[] args){
   //创建集合
  ArrayList<String> array = new ArrayList<String>();
  //添加元素
  array.add("hello");
  array.add("world");
  array.add("java");
  array.add("IOS");
  array.add("PHP");
  //遍历集合
  for(int i = 0;i < array.size();i++){
      String s = array.get(i);
	  System.out.println(s);
  }
}

☆1.5 集合存储学生对象并遍历(操作)

视频时长 / 03’40’’

1.5.1 「集合存储学生对象并遍历」问题

  1. 集合存储学生对象时,集合中保存的是什么?

1.5.2 「集合存储学生对象并遍历」答案

  1. 集合存储学生对象时,集合中保存的是什么?
    • 集合中保存的是学生对象的地址值。

1.5.3 「集合存储学生对象并遍历」课堂练习

练习时长:8分钟。

需求:定义学生类,在定义测试类,在测试类中创建集合对象,再创建3个学生对象,添加到集合中,并遍历集合输出学生对象中的属性值。

// 学生类定义,此处省略,大家自行完成...

public static void main(String[] args) {
  //创建集合对象
  ArrayList<String> array = new ArrayList<String>();
  //往集合中添加字符串对象
   //创建学生对象
  Student s1 = new Student("林青霞", 30);
  Student s2 = new Student("风清扬", 33);
  Student s3 = new Student("张曼玉", 18);
  //添加学生对象到集合中
  array.add(s1);
  array.add(s2);
  array.add(s3);
  //遍历集合的通用格式
  for(int i=0; i<array.size(); i++) {
    String s = array.get(i);
    System.out.println(s);
  }
}

☆1.6 键盘录入学生信息到集合(操作)

视频时长 / 05’48’’

1.6.1 「键盘录入学生信息到集合」课堂练习

练习时长:10分钟。

需求:定义一个方法,方法中完成键盘录入学生对象的功能,在main方法中调用该方法,获取学生对象,再将学生对象存入集合中并遍历。

 public static void main(String[] args) {
   //创建集合对象
   ArrayList<Student> array = new ArrayList<Student>();
   //为了提高代码的复用性,我们用方法来改进程序
   Student s = addStudent();
   Student s2 = addStudent();
   Student s3 = addStudent();
   // 将学生对象添加到集合中
   array.add(s);
   array.add(s2);
   array.add(s3);
   //遍历集合,采用通用遍历格式实现
   for (int i = 0; i < array.size(); i++) {
     Student s = array.get(i);
     System.out.println(s.getName() + "," + s.getAge());
   }
 }

public static Student addStudent() {
  //键盘录入学生对象所需要的数据
  Scanner sc = new Scanner(System.in);
  System.out.println("请输入学生姓名:");
  String name = sc.next();
  System.out.println("请输入学生年龄:");
  String age = sc.nextAge();
  //创建学生对象,把键盘录入的数据赋值给学生对象的成员变量
  Student s = new Student(name,age);
  //往集合中添加学生对象
  return s;
}

☆1.7 集合删除元素(操作)

视频时长 / 09’52’’

1.7.1 「集合删除元素」问题

  1. 调用一次remove(Object o)是否能删除集合中指定的所有元素?

1.7.2 「集合删除元素」答案

  1. 调用一次remove(Object o)是否能删除集合中指定的所有元素?

    • 不行。remove()只能删除集合中的第一个元素。
    • 如果想要删除所有指定的元素,需要遍历集合。

1.7.3 「集合删除元素」课堂练习

练习时长:7分钟。

需求:创建集合对象,将任意字符串添加到集合中,添加的字符串中"java"有多个元素重复,切有些连在一次,要求删除所有"java"元素,最后打印集合。

public static void main(String[] args){
   //创建集合
  ArrayList<String> array = new ArrayList<String>();
  //添加元素
  array.add("hello");
  array.add("java");
  array.add("java");
  array.add("world");
  array.add("java");
  array.add("java");
  array.add("java");
  array.add("IOS");
  array.add("PHP");
  //遍历集合
  for(int i = 0;i < array.size();i++){
      String s = array.get(i);
    // 判断字符串是否是"java"
	 if(s.equals("java")){
        // 如果是,则删除
        array.remove(i);
        // 删除后,元素会补位,所以将索引回退
        i--;
      }
  }
   System.out.println(array);
}

☆1.8 集合数据筛选(操作)

视频时长 / 08’32’’

1.8.1 「集合数据筛选」问题

  1. 视频中,getList()方法中的集合对象,同main方法中的集合对象是否是同一个?

1.8.2 「集合数据筛选」答案

  1. 视频中,getList()方法中的集合对象,同main方法中的集合对象是否是同一个?
    • 不是。getList()方法中新建了一个集合对象,所以同main方法中的集合对象不是同一个。而是两个完全不相干的集合。

1.8.3 「集合数据筛选」答案

练习时长:8分钟。

需求:定义一个方法,方法接收一个集合对象,方法内部先新建一个集合,再将传入集合中的年龄低于18岁的学生对象添加到新集合中,方法返回新集合。

public static void main(String[] args){
  //创建集合对象
  ArrayList<String> array = new ArrayList<String>();
  //往集合中添加字符串对象
   //创建学生对象
  Student s1 = new Student("林青霞", 30);
  Student s2 = new Student("风清扬", 13);
  Student s3 = new Student("张曼玉", 18);
  //添加学生对象到集合中
  array.add(s1);
  array.add(s2);
  array.add(s3);
  ArrayList<Student> newArray = getList(array);
  // 遍历
  for(int i = 0;i<list.size();i++){
     Student stu = newArray.get(i);
     System.out.println(stu.getName()+"---" + stu.getAge());
  }
}

public static ArrayList<Student> getList(ArrayList<Student> list){
     // 创建一个新集合
  	 ArrayList<Student> array = new ArrayList<Student>();
     // 遍历集合找出年龄低于18岁的学生对象,添加到新集合中
     for(int i = 0;i<list.size();i++){
         Student s = list.get(i);
         if(s.getAge() >= 18){
              //添加到新集合中
               array.add(s);
	     }
     }
    return array;
}

2 学生管理系统

☆2.1 学生管理系统项目演示(理解)

视频时长 / 03’23’’

2.1.1 「学生管理系统项目演示」问题

  1. 学生管理系统大概会使用到哪些学过的知识点?

2.1.2 「学生管理系统项目演示」答案

  1. 学生管理系统大概会使用到哪些学过的知识点?
    • 循环: 欢迎界面循环展示
    • 判断: 判断学号是否重复
    • 键盘录入: 用户录入数据
    • 集合: 存储学生对象
    • switch: 匹配用户选择

☆2.2 实现步骤分析和学生类的代码编写(操作)

视频时长 / 06’06’’

2.2.1 「实现步骤分析和学生类的代码编写」课堂练习

练习时长:4分钟。

需求:完成学生类的定义。

public class Student {
    //学号
    private String sid;
    //姓名
    private String name;
    //年龄
    private int age;
    //生日
    private String brithday;

    public Student() {
    }

    public Student(String sid, String name, int age, String brithday) {
        this.sid = sid;
        this.name = name;
        this.age = age;
        this.brithday = brithday;
    }

    public String getSid() {
        return sid;
    }

    public void setSid(String sid) {
        this.sid = sid;
    }

    public String getName() {
        return name;
    }

    public void setName(int name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public String getBrithday() {
        return brithday;
    }

    public void setBrithday(String brithday) {
        this.brithday = brithday;
    }
}

☆2.3 菜单搭建(操作)

视频时长 / 07’03’’

2.3.1 「菜单搭建」课堂练习

练习时长:6分钟。

需求:完成菜单搭建。

public static void main(String[] args) {
  //创建集合对象,用于保存学生数据信息
  ArrayList<Student> array = new ArrayList<Student>();
  //用循环完成再次回到主界面
  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实现键盘录入数据
    Scanner sc = new Scanner(System.in);
    String line = sc.next();
    //用switch语句完成操作的选择
    switch (line) {
      case "1":
        //添加学生
        break;
      case "2":
        //删除学生
        break;
      case "3":
        //修改学生
        break;
      case "4":
        // 查看所有学生
        break;
      case "5":
        System.out.println("谢谢使用");
        System.exit(0); //JVM退出
    }
  }
}				

☆2.4 添加学生逻辑-基本实现(操作)

视频时长 / 08’06’’

2.4.1 「添加学生逻辑-基本实现」课堂练习

练习时长:5分钟。

需求:完成添加学生逻辑。

//定义一个方法,用于添加学生信息
public static void addStudent(ArrayList<Student> array) {
  //键盘录入学生对象所需要的数据,显示提示信息,提示要输入何种信息
  Scanner sc = new Scanner(System.in);
  String sid = sc.next();
  System.out.println("请输入学生姓名:");
  String name = sc.next();
  System.out.println("请输入学生年龄:");
  int age = sc.next();
  System.out.println("请输入学生生日:");
  String brithday = sc.next();
  //创建学生对象,把键盘录入的数据赋值给学生对象的成员变量
  Student s = new Student(sid,name,age,brithday);
  //将学生对象添加到集合中
  array.add(s);
  //给出添加成功提示
  System.out.println("添加学生成功");
}

☆2.5 查看学生代码实现(操作)

视频时长 / 08’20"

2.5.1 「查看学生代码实现」课堂练习

练习时长:5分钟。

需求:完成添加学生逻辑。

//定义一个方法,用于查看学生信息
public static void findAllStudent(ArrayList<Student> array) {
  //判断集合中是否有数据,如果没有显示提示信息
  if (array.size() == 0) {
    System.out.println("无信息,请先添加信息再查询");
    //为了让程序不再往下执行,我们在这里写上return;
    return;
  }
  //显示表头信息
  //\t其实是一个tab键的位置
  System.out.println("学号\t\t\t姓名\t\t年龄\t\t生日"); 
  //将集合中数据取出按照对应格式显示学生信息,年龄显示补充“岁”
  for (int i = 0; i < array.size(); i++) {
    Student s = array.get(i);
    System.out.println(s.getSid() + "\t" + s.getName() + "\t" + s.getAge() + "岁\t\t" + s.getBrithday());
  }
}

☆2.6 判断学号是否存在的方法定义(操作)

视频时长 / 09’52’‘’

2.6.1 「判断学号是否存在的方法定义」课堂练习

练习时长: 10分钟。

需求:完成下面案例。

 //定义一个方法,判断学号是否被使用
public static boolean getIndex(ArrayList<Student> array, String sid) {
  //如果与集合中的某一个学生学号相同,则index为对应的索引值,如果没有相同则index=-1
  int index = -1;
  // 遍历集合
  for(int i=0; i < array.size(); i++) {
    Student s = array.get(i);
    if(s.getSid().equals(sid)) {
      index = i;
      break;
    }
  }
  return index;
}

☆2.7 删除学生代码实现(操作)

视频时长 / 06’01’’

2.7.1 「删除学生代码实现」课堂练习

练习时长:7分钟

需求:完成删除学生代码实现。

 //定义一个方法,用于删除学生信息
public static void deleteStudent(ArrayList<Student> array) {
  //键盘录入要删除的学生学号,显示提示信息
  Scanner sc = new Scanner(System.in);
  System.out.println("请输入你要删除的学生的学号:");
  String sid = sc.nextLine();

  // 调用getIndex()获取sid学生所在集合中的索引位置
  // 如果不存在,则返回-1
  int index = getIndex(array,sid);

  if (index == -1) {
    System.out.println("该信息不存在,请重新输入");
  } else {
    array.remove(index);
    //给出删除成功提示
    System.out.println("删除学生成功");
  }
}

☆2.8 修改学生代码实现(操作)

视频时长 / 06’34’’

2.8.1 「修改学生代码实现」课堂练习

练习时长:8分钟。

需求:定义一个字符串,统计该字符串中大写字母字符,小写字母字符,数字字符出现的次数(不考虑其他字符)

//定义一个方法,用于修改学生信息
public static void updateStudent(ArrayList<Student> array) {
  //键盘录入要修改的学生学号,显示提示信息
  Scanner sc = new Scanner(System.in);
  System.out.println("请输入你要修改的学生的学号:");
  String sid = sc.nextLine();
  // 调用getIndex()获取sid学生所在集合中的索引位置
  // 如果不存在,则返回-1
  int index = getIndex(array,sid);
  if (index == -1) {
    System.out.println("该信息不存在,请重新输入");
  } else {
    //键盘录入要修改的学生信息
    System.out.println("请输入学生新姓名:");
    String name = sc.nextLine();
    System.out.println("请输入学生新年龄:");
    int age = sc.nextLine();
    System.out.println("请输入学生新生日:");
    String brithday = sc.nextLine();

    //创建学生对象
    Student s = new Student(sid,name,age,brithday);
    // 修改集合中的学生对象
    array.set(index,s);
    //给出修改成功提示
    System.out.println("修改学生成功");
  }
}

☆2.9 解决添加学生学号的重复问题(操作)

视频时长 / 06’09’’

2.9.1 「解决添加学生学号的重复问题」课堂练习

练习时长:5分钟

需求:完成解决添加学生学号的重复问题。

//定义一个方法,用于添加学生信息
public static void addStudent(ArrayList<Student> array) {
  //键盘录入学生对象所需要的数据,显示提示信息,提示要输入何种信息
  Scanner sc = new Scanner(System.in);
  String sid;
  while (true) {
    System.out.println("请输入学生学号:");
    sid = sc.nextLine();
    int index = getIndex(array, sid);
    if (index == -1) {
      // index=-1,则证明学号不存在,可以结束循环
      break;
    }
  }
  System.out.println("请输入学生姓名:");
  String name = sc.next();
  System.out.println("请输入学生年龄:");
  int age = sc.next();
  System.out.println("请输入学生生日:");
  String brithday = sc.next();

  //创建学生对象,把键盘录入的数据赋值给学生对象的成员变量
  Student s = new Student(sid,name,age,brithday);
  //将学生对象添加到集合中
  array.add(s);
  //给出添加成功提示
  System.out.println("添加学生成功");
}
本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到