【无标题】

集合ArrayList

创建集合的对象

<>泛型:限定集合中存储数据的类型

ArrayList list = new ArrayList();

//jdk7的写法,之后的写法省略后面的String

ArrayList list = new ArrayList<>();

ArrayList打印对象不是地址值,而是集合中存储数据内容,在展示的时候会拿[]把所有的数据包裹起来。

int是基本数据类型Integer是int的一个包装类(wrapper),他是类不是基本数据类型,他的内部其实包含一个int型的数据那为什么要用Integer呢,主要是因为面向对象的思想,因为Java语言是面向对象的,这也是它只所以流行的原因之一,对象封装有很多好处,可以把属性也就是数据跟处理这些数据的方法结合在一起,比如Integer就有parseInt()等方法来专门处理int型相关的数据,另一个非常重要的原因就是在Java中绝大部分方法或类都是用来处理类类型对象的,如ArrayList集合类就只能以类作为他的存储对象,而这时如果想把一个int型的数据存入list是不可能的,必须把它包装成类,也就是Integer才能被List所接受。所以Integer的存在是很必要的。

ArrayList<Integer> list = new ArrayList<>();
ArrayList<String> list= new ArrayList<>();
        list.add("你好!");
        list.add("我爱你!");
        list.add("w ye s");
        System.out.println(list);

//jdk5以后int 和Integer之间是可以互相转化的

添加学生信息到集合中:

public class StudentTest {
    public static void main(String[] args) {
        ArrayList<Student> list = new ArrayList<>();
        Scanner sc = new Scanner(System.in);
//        Student s1 = new Student("小王",1,99);
//        Student s2 = new Student("小红",2,100);
//        Student s3 = new Student("小明",3,97);
//        list.add(s1);
//        list.add(s2);
//        list.add(s3);
        for (int i = 0; i < 3; i++) {//添加学生信息
            Student stu = new Student();
            System.out.println("请输入学生姓名:");
            String name = sc.next();
            System.out.println("请输入学生学号:");
            int id = sc.nextInt();
            System.out.println("请输入学生分数:");
            int score = sc.nextInt();
            stu.setName(name);
            stu.setId(id);
            stu.setId(score);
            list.add(stu);

        }
        for (int i = 0; i < 3; i++) {//遍历
            Student stu = new Student();
            stu = list.get(i);
            System.out.println(stu.getName() + "," + stu.getId() + "," + stu.getScore());
        }
    }
}

查找用户信息:

public class SelectUser {
    public static void main(String[] args) {
        ArrayList<User> list = new ArrayList<>();
        String id;
        System.out.println("请输入查找id:");
        Scanner sc = new Scanner(System.in);
        id = sc.next();
        User u1 = new User("1", "xiaowang", "123456");
        User u2 = new User("2", "xiaohong", "123456");
        User u3 = new User("3", "xiaoluo", "123456");
        list.add(u1);
        list.add(u2);
        list.add(u3);
        int index = getIndex(list, id);
        System.out.println("是否存在:" + contains(list, id) + "索引:" + (index));
    }

    private static int getIndex(ArrayList<User> list, String id) {
        for (int i = 0; i < list.size(); i++) {
            boolean b = list.get(i).getId().equals(id);
            if (b) {
                return i;
            }
        }
        return -1;
    }

    private static boolean contains(ArrayList<User> list, String id) {
        return getIndex(list, id) >= 0;
    }
}

返回低于3000价格的手机:

public class PhoneTest {
    public static void main(String[] args) {
        ArrayList<Phone> list = new ArrayList<>();
        ArrayList<Phone> result = new ArrayList<>();
        Phone p1 = new Phone("小米", 1999);
        Phone p2 = new Phone("华为", 2900);
        Phone p3 = new Phone("苹果", 3999);
        list.add(p1);
        list.add(p2);
        list.add(p3);
        result = getPhoneInfo(list);
        for (int i = 0; i < result.size(); i++) {
            System.out.println(result.get(i).getPrice() + result.get(i).getBrand());
        }
    }

    private static ArrayList<Phone> getPhoneInfo(ArrayList<Phone> list) {
        ArrayList<Phone> result = new ArrayList<>();
        Phone p = new Phone();
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).getPrice() < 3000) {
                p = list.get(i);
                result.add(p);
            }
        }
        return result;
    }
}

学生成绩管理系统:

Student:

public class Student {
    private String id;
    private String name;
    private int age;
    private String address;

    public Student() {
    }

    public Student(String id, String name, int age, String address) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.address = address;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    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 String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}

StudentSystem:

public class StudentSystem {
    public static void startStudentSystem() {
        ArrayList<Student> list = new ArrayList<>();
        Scanner sc = new Scanner(System.in);
        label:
        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("请输入你的选择:");
            String choose = sc.next();
            switch (choose) {
                case "1":
                    addStudent(list, sc);
                    break;
                case "2":
                    deleteStudent(list, sc);
                    break;
                case "3":
                    updateStudent(list, sc);
                    break;
                case "4":
                    queryStudent(list);
                    break;
                case "5":
                    exitSystem();
                default:
                    System.out.println("输入有误,请再尝试一次!");
                    break;
            }
        }
    }

    private static void updateStudent(ArrayList<Student> list, Scanner sc) {
        System.out.println("请输入要修改学生的id:");
        String id = sc.next();
        int index = getIndex(list, id);//获取学生的索引
        System.out.println("学号为:" + id + "的学生信息如下:");
        //打印单行学生信息
        querySingleStudent(list, index);
        System.out.println("请输入修改学生的内容(id,姓名,年龄,家庭住址):");
        String choose = sc.next();
        switch (choose) {
            case "id":
                System.out.println("请输入需要修改id为:");
                String newId = sc.next();
                list.get(index).setId(newId);
                break;
            case "姓名":
                System.out.println("请输入需要修改姓名为:");
                String newName = sc.next();
                list.get(index).setName(newName);
                break;
            case "年龄":
                System.out.println("请输入需要修改年龄为:");
                int newAge = sc.nextInt();
                list.get(index).setAge(newAge);
                break;
            case "家庭住址":
                System.out.println("请输入需要修改家庭住址为:");
                String newAddress = sc.next();
                list.get(index).setAddress(newAddress);
                break;
        }
    }

    private static void queryStudent(ArrayList<Student> list) {
        if (list.size() == 0) {
            System.out.println("当前无学生信息,请添加后再查询!");
            return;//结束方法
        }
        System.out.println("id\t\t姓名\t年龄\t家庭住址");
        for (int i = 0; i < list.size(); i++) {
            querySingleStudent(list, i);
        }
    }

    private static void querySingleStudent(ArrayList<Student> list, int i) {
        Student s = list.get(i);
        System.out.println(s.getId() + "\t\t" + s.getName() + "\t" + s.getAge() + "\t" + s.getAge());
    }

    private static void deleteStudent(ArrayList<Student> list, Scanner sc) {
        System.out.println("请输入需要删除学生的id:");
        String id = sc.next();
        int index = getIndex(list, id);
        if (index >= 0) {
            list.remove(index);
        } else {
            System.out.println("该学生id不存在");
        }
    }

    private static int getIndex(ArrayList<Student> list, String id) {
        for (int i = 0; i < list.size(); i++) {
            Student stu = list.get(i);
            if (stu.getId().equals(id)) {
                //返回索引值
                return i;
            }
        }
        //表示索引不存在
        return -1;
    }

    private static void addStudent(ArrayList<Student> list, Scanner sc) {
        Student stu = new Student();

        while (true) {
            System.out.println("请输入学生id:");
            String id = sc.next();
            //判断id是否重复
            boolean flag = contains(list, id);
            if (flag) {
                System.out.println("id已重复,请重新录入!");
            } else {
                System.out.println("id未重复,可用!");
                stu.setId(id);
                break;
            }
        }
        System.out.println("请输入学生姓名:");
        String name = sc.next();
        stu.setName(name);

        System.out.println("请输入学生年龄:");
        int age = sc.nextInt();
        stu.setAge(age);

        System.out.println("请输入学生家庭住址:");
        String address = sc.next();
        stu.setAddress(address);

        //把学生对象添加到集合中
        list.add(stu);
        System.out.println("添加成功!");
    }

    private static boolean contains(ArrayList<Student> list, String id) {
//        for (int i = 0; i < list.size(); i++) {
//            //id重复
//            if (list.get(i).getId().equals(id)) {
//                return true;
//            }
//            ;
//        }
//        return false;
        return getIndex(list, id) >= 0;//如果索引存在返回true
    }

    private static void exitSystem() {
        System.out.println("退出");
        System.exit(0);//停止虚拟机运行
        //break label;
    }

}

User:

public class User {
    private String userName;
    private String userPassword;
    private String userPhone;
    private String userCard;

    public User() {
    }
    public User(String userName, String userPassword, String userPhone, String userCard) {
        this.userName = userName;
        this.userPassword = userPassword;
        this.userPhone = userPhone;
        this.userCard = userCard;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getUserPassword() {
        return userPassword;
    }

    public void setUserPassword(String userPassword) {
        this.userPassword = userPassword;
    }

    public String getUserPhone() {
        return userPhone;
    }

    public void setUserPhone(String userPhone) {
        this.userPhone = userPhone;
    }

    public String getUserCard() {
        return userCard;
    }

    public void setUserCard(String userCard) {
        this.userCard = userCard;
    }
}

Welcome:

public class Welcome {
    public static void main(String[] args) {
        ArrayList<User> list = new ArrayList<>();
        Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.println("---------欢迎来到登陆界面---------");
            System.out.println("请输入你的操作!1:登录 2:注册 3:忘记密码 4:退出");
            String choose = sc.next();
            switch (choose) {
                case "1":
                    login(list, sc);
                    break;
                case "2":
                    register(list, sc);
                    break;
                case "3":
                    forgetPassword(list, sc);
                    break;
                //退出
                case "4":
                    System.exit(0);
                    break;
                default:
                    System.out.println("操作失败,没有此选项!");
                    break;
            }
        }
    }

    //忘记密码
    private static void forgetPassword(ArrayList<User> list, Scanner sc) {
        System.out.println("请输入用户名:");
        String name = sc.next();
        boolean flag = contains(list, name);
        if (flag) {
            System.out.println("用户名不存在,请先注册!");
            return;
        }
        System.out.println("请输入身份证号码:");
        String userCard = sc.next();
        System.out.println("请输入手机号码:");
        String userNumber = sc.next();
        //获取用户名所在索引
        int i = getIndex(name, list);
        if (!(userCard.equals(list.get(i).getUserCard()) && userNumber.equals(list.get(i).getUserPhone()))) {
            System.out.println("账号信息不匹配,修改失败");
            return;
        }
        String password1;
        while (true) {
            System.out.println("请输入新的密码:");
            password1 = sc.next();
            System.out.println("请输入确认密码:");
            String password2 = sc.next();
            boolean j = judge(password1, password2);
            if (j) {
                System.out.println("两次输入密码一致!");
                break;
            } else {
                System.out.println("两次密码不一致,请重新输入!");
            }
        }
        list.get(i).setUserPassword(password1);
        System.out.println("密码修改成功!");
    }

    private static int getIndex(String name, ArrayList<User> list) {
        for (int i = 0; i < list.size(); i++) {
            User user = list.get(i);
            if (name.equalsIgnoreCase(user.getUserName())) {
                return i;
            }
        }
        return -1;
    }

    //注册
    private static void register(ArrayList<User> list, Scanner sc) {
        User u = new User();
        String userName;
        String userPassword1;
        String userPassword2;
        String userPhone;
        String userCard;
        while (true) {
            System.out.println("请输入用户名:");
            userName = sc.next();
            boolean flag1 = checkUserName(userName);
            boolean flag2 = contains(list, userName);
            if (flag1 && flag2) {
                u.setUserName(userName);
                break;
            } else if (!flag1) {
                System.out.println("格式错误,请重新输入!");
            } else {
                System.out.println("用户名已存在,请重新输入!");
            }
        }

        while (true) {
            System.out.println("请输入密码:");
            userPassword1 = sc.next();
            System.out.println("请输入确认密码:");
            userPassword2 = sc.next();
            boolean flag1 = judge(userPassword2, userPassword1);
            if (flag1) {
                u.setUserPassword(userPassword1);
                break;
            } else {
                System.out.println("两次输入密码不一致请重新输入!");
            }
        }

        while (true) {
            System.out.println("请输入手机号:");
            userPhone = sc.next();
            boolean flag = checkUserPhone(userPhone);
            if (flag) {
                u.setUserPhone(userPhone);
                break;
            } else {
                System.out.println("手机号不符合格式,请重新输入!");
            }
        }

        while (true) {
            System.out.println("请输入身份证:");
            userCard = sc.next();
            boolean flag = checkUserCard(userCard);
            if (flag) {
                u.setUserCard(userCard);
                break;
            } else {
                System.out.println("身份证不符合格式,请重新输入!");
            }
        }
        list.add(u);
        System.out.println("注册成功!");
        printList(list);
    }

    //打印存入的数据
    private static void printList(ArrayList<User> list) {
        for (int i = 0; i < list.size(); i++) {
            User user = list.get(i);
            System.out.println(user.getUserName() + ',' + user.getUserPassword() + ',' + user.getUserPhone() + ',' + user.getUserCard());
        }
    }

    //判断身份证号是否符合格式
    private static boolean checkUserCard(String userCard) {
        int len = userCard.length();
        if (len != 18) {
            return false;
        }
        if (userCard.startsWith("0")) {
            //如果以0开头,那么返回false
            return false;
        }
        for (int i = 0; i < len - 1; i++) {
            char c = userCard.charAt(i);
            if (!(c >= '0' && c <= '9')) {
                return false;
            }
        }
        char c = userCard.charAt(len - 1);
        if ((c >= '0' && c <= '9') || c == 'X' || c == 'x') {
            return true;
        } else {
            return false;
        }
    }

    //判断手机号是否符合格式
    private static boolean checkUserPhone(String userPhone) {
        int len = userPhone.length();
        if (len != 11) {
            return false;
        }
        if (userPhone.charAt(0) == '0') {
            return false;
        }
        for (int i = 0; i < len; i++) {
            char c = userPhone.charAt(i);
            if (!(c >= '0' && c <= '9')) {
                return false;
            }
        }
        return true;
    }

    //判断两次输入密码是否一致
    private static boolean judge(String userPassword2, String userPassword1) {
        if (userPassword1.equals(userPassword2)) {
            return true;
        }
        return false;
    }

    //判断用户名是否唯一
    private static boolean contains(ArrayList<User> list, String userName) {
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).getUserName().equals(userName)) {
                return false;
            }
        }
        return true;
    }

    private static boolean checkUserName(String userName) {
        //长度在3~15之间
        int len = userName.length();
        if (len < 3 || len > 15) {
            return false;
        }
        //格式只能由数字和字母组成
        for (int i = 0; i < len; i++) {
            char c = userName.charAt(i);
            if (!(c >= 'a' && c <= 'z') && !(c >= 'A' && c <= 'Z') && !(c >= '0' && c <= '9')) {
                return false;
            }
        }
        //不能是纯数字和纯字母
        int count = 0;
        for (int i = 0; i < len; i++) {
            char c = userName.charAt(i);
            if ((c >= '0' && c <= '9')) {
                count++;
            }
        }
        return count != len && count != 0;
    }

    //获取5位随机验证码
    private static String getCode() {
        StringBuilder sb = new StringBuilder();
        ArrayList<Character> list = new ArrayList<>();
        for (int i = 0; i < 26; i++) {
            //添加大写小写字母到集合中
            list.add((char) ('a' + i));
            list.add((char) ('A' + i));
        }
        Random r = new Random();
//        System.out.println(list);
        for (int i = 0; i < 5; i++) {
            //获取随机索引
            int index = r.nextInt(list.size());
            char c = list.get(index);
            //添加随机字母
            sb.append(c);

        }
        //获取一个随机数字
        int number = r.nextInt(10);
        //获取随机验证码任意位置的索引
        int index = r.nextInt(5);
        //将sb转化为一个字符数组
        char[] arr = sb.toString().toCharArray();
        //将某一个位置的字母修改为随机数字
        char c = arr[index];
        arr[index] = (char) ('0' + number);
        String code = new String(arr);
        return code;
    }

    //登录
    private static void login(ArrayList<User> list, Scanner sc) {
        for (int i = 0; i < 3; i++) {
            System.out.println("请输入用户名:");
            String name = sc.next();
            boolean flag = contains(list, name);
            if (flag) {
                System.out.println("用户名不存在,请先注册!");
                return;
            }
            System.out.println("请输入密码:");
            String password = sc.next();
            while (true) {
                String getCode = getCode();
                System.out.println("请输入验证码:" + getCode);
                String code = sc.next();
                if (getCode.equalsIgnoreCase(code)) {
                    System.out.println("验证码输入正确!");
                    break;
                } else {
                    System.out.println("验证码输入错误,请重新输入!");
                }
            }
            //可以把零散的数据封装成对象,传递参数从传递一个整体即可
            User u = new User(name, password, null, null);
            //校验输入的用户名和密码
            boolean result = checkUserInfo(u, list);
            if (result) {
                System.out.println("登录成功,进入学生成绩管理系统!");
                StudentSystem ss = new StudentSystem();
                ss.startStudentSystem();
                break;
            } else {
                System.out.println("登录失败,用户名或密码错误");
                if (i == 2) {
                    System.out.println("连续三次输入错误,账户已经锁定,请联系*****");
                    return;
                } else {
                    System.out.println("您还剩" + (2 - i) + "次机会");
                }
            }
        }
    }

    private static boolean checkUserInfo(User u, ArrayList<User> list) {
        for (int i = 0; i < list.size(); i++) {
            User cu = list.get(i);
            if (u.getUserName().equals(cu.getUserName()) && u.getUserPassword().equals(cu.getUserPassword())) {
                return true;
            }
        }
        return false;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值