day11-ArrayList Java学生信息管理系统 day13-面向对象进阶-继承 静态 子类有参构造前如果没有super就默认一句super();父类无参构造

 ArrayList-01-基本使用

import java.util.ArrayList;

public class StringDemo {
    public static void main(String[] args) {

        //1.创建一个集合
        ArrayList<String> list = new ArrayList<>();

        //2.添加元素
        list.add("aaa");
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");

        //3.删除元素
        /*
        boolean result = list.remove("aa");
        System.out.println(result);
        
        String str = list.remove(0);
        System.out.println(str);
        
        //修改元素   return 被修改元素
        String result = list.set(1, "ddd");
        System.out.println(result);

        //查询元素   return 查询到的元素
        String s = list.get(0);
        System.out.println(s);
         */
        //集合遍历
        for (int i = 0; i < list.size(); i++) {
            //list.get(i);表示集合里的每个元素
            String s = list.get(i);
            System.out.println(s);
        }

        System.out.println(list);
    }
}



ArrayList-02-集合练习-添加字符串和整数并遍历

ArrayList-03-集合练习-添加学生对象并遍历的两个练习   
后面是
键盘录入版

ArrayList-04-集合练习-查找用户是否存在
ArrayList-05-集合练习-返回多个数据

技巧: if要return多个数据 ,可以把这些数据放到一个 集合 当中,再把 集合 返回;

学生管理系统-01-业务分析并搭建主菜单
学生管理系统-02-查询和添加
学生管理系统-03-删除和修改

 

import java.util.ArrayList;
import java.util.Scanner;

public class StudentSystem {
    public static void main(String[] args) {
        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 choose = sc.next();
            switch (choose) {
                case "1" -> addStudent(list);
                case "2" -> deleteStudent(list);
                case "3" -> updateStudent(list);
                case "4" -> queryStudent(list);
                case "5" -> {
                    System.out.println("退出");
                    //break loop;  退出循环
                    System.exit(0);//停止虚拟机运行
                }
                default -> System.out.println("没有这个选项");
            }
        }

    }

    //添加学生
    public static void addStudent(ArrayList<Student> list) {

        Scanner sc = new Scanner(System.in);

        System.out.println("请输入学生学号");
        String id = sc.next();
        System.out.println("请输入学生姓名");
        String name = sc.next();
        System.out.println("请输入学生年龄");
        int age = sc.nextInt();
        System.out.println("请输入学生地址");
        String address = sc.next();

        if (!contains(list, id)) {
            Student s = new Student(id, name, age, address);
            list.add(s);
            System.out.println("学生信息添加成功");
        } else {
            System.out.println("id已存在,请重新输入");
        }
    }

    //删除学生
    public static void deleteStudent(ArrayList<Student> list) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要删除的id");
        String id = sc.next();
        int index = getIndex(list, id);
        if (index != -1) { //存在id 删除
            list.remove(index);
            System.out.println("id为" + id + "的学生删除成功");
        } else {
            System.out.println("id不存在,请重新输入");
        }
    }

    //修改学生
    public static void updateStudent(ArrayList<Student> list) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要修改的id");
        String id = sc.next();
        int index = getIndex(list, id);

        if (index == -1) {
            System.out.println("要修改的id" + id + "不存在,请重新输入");
            return;
        }

        Student stu = list.get(index);
        list.remove(index);
        System.out.println("请输入要修改的学生姓名");
        String name = sc.next();
        System.out.println("请输入要修改的学生年龄");
        int age = sc.nextInt();
        System.out.println("请输入要修改的学生地址");
        String address = sc.next();

        Student s = new Student(id, name, age, address);
        list.add(s);
        System.out.println("学生信息修改成功");
    }
    //查询学生

    public static void queryStudent(ArrayList<Student> list) {
        System.out.println("查询学生");
        if (list.size() == 0) {
            System.out.println("当前无学生信息,请添加后再查询");
            return;
        }
        System.out.println("id\t姓名\t年龄\t家庭住址");
        for (int i = 0; i < list.size(); i++) {
            Student stu = list.get(i);
            System.out.println(stu.getIg() + "\t" + stu.getName() + "\t" + stu.getAge() + "\t" + stu.getAddress());
        }
    }

    //判断id唯一性
    public static boolean contains(ArrayList<Student> list, String id) {
        /*for (int i = 0; i < list.size(); i++) {
            Student stu = list.get(i);
            String sid = stu.getIg();
            if (sid.equals(id)) {//重复
                return true;
            }
        }
        return false;*/
        /*if (getIndex(list, id) == -1)     return false;
        else return true;
        */
        return (getIndex(list, id) >= 0);
    }

    //通过id获取索引
    public static int getIndex(ArrayList<Student> list, String id) {
        for (int i = 0; i < list.size(); i++) {
            Student stu = list.get(i);
            String sid = stu.getIg();
            if (sid.equals(id)) {//重复
                return i;
            }
        }
        return -1;
    }

}

Day13

竖着选择的小技巧:     
        左键按住&滑动滚轮;   or  左键按住&按住Alt键.

面向对象进阶-01-static-静态变量

静态变量是随着类的加载而加载的,优先于对象出现在内存中的

面向对象进阶-02-static-静态方法和工具类

public class ArrayUtil {

    //私有化构造方法 目的:不让外界创建他的对象
    private ArrayUtil() {
    }

    public static String printArr(int[] arr) {
        StringBuilder sb = new StringBuilder();
        sb.append("[");

        for (int i = 0; i < arr.length; i++) {
            if (i == arr.length - 1)
                sb.append(arr[i]);
            else
                sb.append(arr[i]).append(", ");
        }
        sb.append("]");
        return sb.toString();
    }

    public static double getAverage(double[] arr) {
        double sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        return sum / arr.length;
    }

    //TestDemo 测试工具类
    public static void main(String[] args) {

        int[] arr1 = {1, 2, 3, 4, 5};
        String str = ArrayUtil.printArr(arr1);
        System.out.println(str);

        double[] arr2 = {1.5, 3.7, 4.9, 5.8, 6.6};
        System.out.println(ArrayUtil.getAverage(arr2));
    }
}

面向对象进阶-03-static的注意事项


面向对象进阶-04-继承的概述

封装:对象代表什么,就得封装对应的数据,并提供数据对应的行为

面向对象进阶-05-继承的特点和继承体系的设计

 

面向对象进阶-06-子类到底能继承父类中的哪些内容
面向对象进阶-07-继承中成员变量和成员方法的访问特点

 成员变量: 就近原则
this.hobby 先在本类成员位置找没找到再去父类

面向对象进阶-08-继承中的构造方法和thissuper关键字

数据做默认值的时候会用到 this 本类其它构造

posted @ 2022-07-04 18:19  软工菜鸡  阅读(11)  评论(0编辑  收藏  举报  来源