Java ArrayList 实现简单登录注册功能

需求:

为学生管理系统书写一个登陆、注册、忘记密码的功能。

只有用户登录成功之后,才能进入到学生管理系统中进行增删改查操作。

代码实现:

main方法:

public static void main(String[] args) {
    // 新建集合存放管理员信息
    ArrayList<LoginRegister> list = new ArrayList<>();

    // 新建管理员信息
    LoginRegister manger1 = new LoginRegister("manger1", "reyF4HD4Yh0yQY8V", "410505201006200289", "15253614139");
    LoginRegister manger2 = new LoginRegister("manger2", "4pMg2kBlzbIUOYPb", "230407192201272095", "14689569413");
    LoginRegister manger3 = new LoginRegister("manger3", "DmXvIunxgi3AXlHx", "513423199007065318", "15709183373");
    LoginRegister manger4 = new LoginRegister("manger4", "ozegkXS7dElCNCf6", "430523194911158694", "13173130728");
    LoginRegister manger5 = new LoginRegister("manger5", "V4GpwnkfoXMmWeWl", "632725197811024206", "15088666544");

    //添加管理员信息
    list.add(manger1);
    list.add(manger2);
    list.add(manger3);
    list.add(manger4);
    list.add(manger5);
    
    int chose;
    Scanner sc = new Scanner(System.in);
    System.out.println("欢迎来到学生管理系统");
    while (true) {
        while (true) {
            System.out.println("请选择操作 1登录 2注册 3忘记密码");
            String input = sc.next();
            chose = choseCheck(input);
            if (chose != -1) {
                break;
            } else {
                System.out.println("输入有误,请重新输入:");
            }
        }
        switch (chose) {
            case 1: {
                login(list);
                continue;
            }
            case 2: {
                register(list);
                continue;
            }
            case 3: {
                forget(list);
            }
        }
    }
}

方法函数:

public static int choseCheck(String chose) {
    if (chose.equals("1")) {
        return 1;
    }
    if (chose.equals("2")) {
        return 2;
    }
    if (chose.equals("3")) {
        return 3;
    }
    return -1;
}
public static boolean usernameCheck(String username) {
    int count = 0;
    if (username.length() < 3 || username.length() > 15) {
        System.out.println("用户名长度必须在3~15位之间,请重新输入用户名:");
        return false;
    }
    for (int i = 0; i < username.length(); i++) {
        char c = username.charAt(i);
        if (c > '9' || c < '0') {
            count++;
        }
    }
    if (count == 0) {
        System.out.println("用户名不合法,请重新输入用户名:");
        return false;
    }
    return true;
}
public static boolean usernameRepeated(ArrayList<LoginRegister> list, String username) {
    for (int i = 0; i < list.size(); i++) {
        String str = list.get(i).getUsername();
        if (username.equals(str)) {
            System.out.println("用户名重复,请重新输入用户名:");
            return false;
        }
    }
    return true;
}
public static boolean usernameExist(ArrayList<LoginRegister> list, String username) {
    for (int i = 0; i < list.size(); i++) {
        String str = list.get(i).getUsername();
        if (username.equals(str)) {
            return true;
        }
    }
    return false;
}
public static boolean idCardCheck(String idCard) {
    int len = idCard.length();
    int count = 0;
    String index = idCard.substring(0, 1);
    if (len != 18 || index.equals("0")) {
        System.out.println("身份证输入有误,请重新输入:");
        return false;
    }
    for (int i = 0; i < len - 1; i++) {
        char c = idCard.charAt(i);
        if (c > '9' || c < '0') {
            count++;
        }
    }
    if (count != 0) {
        System.out.println("身份证输入有误,请重新输入:");
        return false;
    }
    String Index = idCard.substring(17);
    char c = idCard.charAt(len - 1);
    boolean flag;
    if (c >= '0' && c <= '9') {
        flag = true;
    } else {
        flag = false;
    }
    if (Index.equals("X") || idCard.substring(17).equals("x") || flag) {
        return true;
    } else {
        return false;
    }
}
public static boolean phoneNumCheck(String phoneNum) {
    int len = phoneNum.length();
    int count = 0;
    String index = phoneNum.substring(0, 1);
    if (len != 11) {
        System.out.println("手机号输入有误,请重新输入:");
        return false;
    }
    if (index.equals("0")) {
        System.out.println("手机号输入有误,请重新输入:");
        return false;
    }
    for (int i = 0; i < len; i++) {
        char c = phoneNum.charAt(i);
        if (c > '9' || c < '0') {
            count++;
        }
    }
    if (count != 0) {
        System.out.println("手机号输入有误,请重新输入:");
        return false;
    }
    return true;
}
public static String verify() {
    char chara[] = new char[52];
    for (int i = 0; i < chara.length; i++) {
        if (i <= 25) {
            //添加小写字母
            chara[i] = (char) (97 + i);
        } else {
            //添加大写字母
            chara[i] = (char) (65 + i - 26);
        }
    }
    Random randomIndex = new Random();
    String result = "";
    for (int i = 0; i < 4; i++) {
        int cap = randomIndex.nextInt(52);
        result = result + chara[cap];
    }
    int num = randomIndex.nextInt(10);
    result = result + num;

    char[] c = result.toCharArray();
    Random random = new Random();
    for (int i = 0; i < c.length; i++) {
        int ran = random.nextInt(result.length());
        char temp = c[i];
        c[i] = c[ran];
        c[ran] = temp;
    }
    result = new String(c);
    return result;
}
public static void login(ArrayList<LoginRegister> list) {
    Scanner sc = new Scanner(System.in);
    String username, password2, rightVerify, verify, name, pass;
    System.out.println("请输入需要登录的用户名:");
    while (true) {
        username = sc.next();
        boolean input = usernameCheck(username);
        if (input) {
            break;
        }
    }
    boolean exist = usernameExist(list, username);
    if (!exist) {
        System.out.println("用户名未注册,请先注册");
        return;
    }
    rightVerify = verify();
    System.out.println("当前正确验证码为:" + rightVerify);
    System.out.println("请输入验证码:");
    while (true) {
        verify = sc.next();
        if (verify.equals(rightVerify)) {
            break;
        } else {
            System.out.println("输入有误,请重新输入:");
        }
    }
    int count = 3;
    System.out.println("请输入密码:");
    while (true) {
        password2 = sc.next();
        for (int i = 0; i < list.size(); i++) {
            name = list.get(i).getUsername();
            pass = list.get(i).getPassword();
            if (username.equals(name) && password2.equals(pass)) {
                System.out.println("登录成功");
                return;
            } else {
                if (count == 0) {
                    System.out.println("您的错误次数已用完");
                    return;
                }
                System.out.println("密码错误," + "还剩余" + count + "次机会,请重新输入:");
                break;
            }
        }
        count--;
    }
}
public static void register(ArrayList<LoginRegister> list) {
    Scanner sc = new Scanner(System.in);
    String username, password, idCard, phoneNum;

    // 注册用户名
    System.out.println("请输入需要注册的用户名:");
    while (true) {
        username = sc.next();
        boolean input = usernameCheck(username);
        boolean repeated = usernameRepeated(list, username);
        if (input && repeated) {
            break;
        }
    }

    // 注册密码
    System.out.println("请输入需要注册的密码:");
    while (true) {
        password = sc.next();
        System.out.println("请再次输入需要注册的密码:");
        String password1 = sc.next();
        if (password1.equals(password)) {
            break;
        } else {
            System.out.println("两次密码输入不一致,请重新输入密码:");
        }
    }

    // 注册身份证
    System.out.println("请输入身份证号:");
    while (true) {
        idCard = sc.next();
        boolean flag = idCardCheck(idCard);
        if (flag) {
            break;
        }
    }
public static void forget(ArrayList<LoginRegister> list) {
    String name, idCard, phoneNum, infoName, infoIdCard, infoPhoneNum, password, infoPassword;
    System.out.println("请输入您的用户名:");
    Scanner sc = new Scanner(System.in);
    name = sc.next();
    boolean flag = usernameExist(list, name);
    if (!flag) {
        System.out.println("用户名未注册,请先注册");
        return;
    }
    System.out.println("请输入身份证号码:");
    while (true) {
        idCard = sc.next();
        boolean flagId = idCardCheck(idCard);
        if (flagId) {
            break;
        }
    }
    System.out.println("请输入手机号码:");
    while (true) {
        phoneNum = sc.next();
        boolean flagPhone = phoneNumCheck(phoneNum);
        if (flagPhone) {
            break;
        }
    }
    for (int i = 0; i < list.size(); i++) {
        infoName = list.get(i).getUsername();
        if (name.equals(infoName)) {
            infoIdCard = list.get(i).getIdCard();
            infoPhoneNum = list.get(i).getPhoneNum();
            if (!idCard.equals(infoIdCard) || !infoPhoneNum.equals(phoneNum)) {
                System.out.println("账号信息不匹配,修改失败");
                return;
            } else {
                break;
            }
        }
    }
    System.out.println("请输入需要修改的密码:");
    while (true) {
        password = sc.next();
        System.out.println("请再次输入需要修改的密码:");
        String password1 = sc.next();
        if (password1.equals(password)) {
            for (int i = 0; i < list.size(); i++) {
                infoName = list.get(i).getUsername();
                if (name.equals(infoName)) {
                    list.get(i).setPassword(password);
                }
            }
            break;
        } else {
            System.out.println("两次密码输入不一致,请重新输入密码:");
        }
    }
}

JavaBean:

public class LoginRegister {
    private String username;
    private String password;
    private String idCard;
    private String phoneNum;

    public LoginRegister() {
    }

    public LoginRegister(String username, String password, String idCard, String phoneNum) {
        this.username = username;
        this.password = password;
        this.idCard = idCard;
        this.phoneNum = phoneNum;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getIdCard() {
        return idCard;
    }

    public void setIdCard(String idCard) {
        this.idCard = idCard;
    }

    public String getPhoneNum() {
        return phoneNum;
    }

    public void setPhoneNum(String phoneNum) {
        this.phoneNum = phoneNum;
    }
}

  • 14
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值