java登录页面

发布时间:2024年01月22日
public class MainTest {
    //模拟一个登录界面
    //需求:系统的正确登录名是:cxk521;正确的密码是:kk521;
    // 要求设置一个登录界面,要求用户输入;判断是否登录成功;
    // 如果登录成功,则显示登陆成功,如果登录失败,则提示重新输入,并最多三次登录机会;
    //另外加一个验证码认证;
    public static void main(String[] args) {
        //步骤:
        //1.模拟界面
        //2.要求用户输入;
        //3.写一个判断的方法;
        //4.开始简单的判断;
        //5.加入条件:利用循环限制最大尝试次数;

        System.out.println("===欢迎来到登录页面===");

        for (int i = 0; i < 3; i++) {
            Scanner sc = new Scanner(System.in);
            System.out.println("请您输入用户名:");
            String name = sc.next();
            System.out.println("请您输入密码:");
            String pass = sc.next();

            String okcode = creatcode(4);//正确的验证码;
            System.out.println("正确的验证码为:" + okcode);
            System.out.println("请您输入验证码:");
            String code = sc.next();

            if (judge(name, pass)&& okcode.equals(code)) {
                System.out.println("登录成功");
                break;
            } else {
                if (i == 2) {
                    System.out.println("您的输入有误,您没有机会了!");
                    System.out.println("您已经三次登录失败,账号已锁定!");
                } else {
                    System.out.println("您的输入有误,请检查用户名和密码并重新输入:");
                    System.out.println("您只有" + (2 - i) + "次输入机会了!");
                }
            }

        }
    }

    //判断密码方法;
    public static boolean judge(String name, String pass) {
        //需要先提供正确的用户名和密码;
        String okname = "cxk521";
        String okpass = "kk521";

        return (okname.equals(name) && okpass.equals(pass));
    }

    //生成特定位数的验证码(数字,大小写字母):这里规定为四位;
    public static String creatcode(int n)//n==4;
    {
        //总的思路:
        //先确定每一位是什么类型的验证码;0,1,2分别对应数字,大写字母,小写字母;
        //根据0,1,2再生成对应类型的字符;
        //每生成一位字符都相连;
        int a = 0;
        String code = "";
        Random r = new Random();
        for (int i = 0; i < n; i++) {
            a = r.nextInt(3);//0~2的数字;
            switch (a) {
                case 0:
                    code += r.nextInt(10);
                    break;
                case 1:
                    code += (char) (r.nextInt(25) + 65);//大写ascii码
                    break;
                case 2:
                    code += (char) (r.nextInt(25) + 97);//小写ascii码
                    break;
            }

        }
        return code;
    }
}
文章来源:https://blog.csdn.net/2303_79380171/article/details/135710056
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。