JAVA实验2:用户登录系统-UserLoginSystem

这是一个简单的用户登录系统,包括用户创建、登录和查看所有账户的功能。系统通过Scanner获取用户输入,对用户名和密码的长度进行校验,并抛出UserLoginException异常。系统目前存在局限,如用户数据未持久化存储,查看所有用户名权限未限制,以及待进一步的代码优化和功能扩展。

登录系统 

package com.userlogin;

import java.util.Scanner;

public class LoginSystem {
    static int num = 0;        //创建用户的个数

    public static void main(String[] args){         //主函数
        User[] users = new User[10];
        Scanner input = new Scanner(System.in);
        boolean flag = true;

        while(flag){                                //功能实现
            System.out.print("0.退出程序\t");
            System.out.print("1.创建用户\t");
            System.out.print("2.用户登录\t");
            System.out.println("3.查看所有账户");
            System.out.println("请输入您要使用的功能:");
            int p = input.nextInt();
            switch(p){
                case(1):{
                    function1(users,input,true);        //功能1
                    break;
                }
                case(2):{
                    function2(users,input,true);        //功能2
                    break;
                }
                case(3):{
                    usersShow(users);                           //查看所有用户名
                    break;
                }
                case(0):
                default:flag = false;
            }
        }
    }

    public static void function1(User[] users,Scanner input,boolean flag_1){    //实现功能1
        while(flag_1){
            boolean flag_11,flag_12;
            flag_11 = flag_12 = true;
            String psd = "0";

            System.out.println("请输入你要创建的用户名:");
            String uname = input.next();
            try{
                cheekUsername(uname);
            }
            catch(Exception e){
                System.out.println(e.getMessage());
                continue;
            }
            while(flag_11){
                System.out.println("请输入密码:");
                psd = input.next();
                try{
                    cheekUserSetPassword(psd);
                }
                catch(Exception e){
                    System.out.println(e.getMessage());
                    continue;
                }
                flag_11 = false;
            }
            while(flag_12){
                System.out.println("确认密码:");
                try{
                    cheekUserSetPassword(psd,input.next());
                }
                catch(Exception e){
                    System.out.println(e.getMessage());
                    continue;
                }
                flag_12 = false;
            }
            users[num++] = new User(uname,psd);
            System.out.println("创建用户"+users[num-1].getUsername()+"成功!");
            System.out.println("是否继续创建用户?(1/是  0/否)");
            if(input.nextInt() == 0){
                flag_1 = false;
            }
        }
    }

    public static void function2(User[] users,Scanner input,boolean flag_2){    //实现功能2
        while(flag_2)
        {
            System.out.println("请输入用户名:");
            String uname = input.next();
            try{
                cheekUsername(uname);
            }
            catch(Exception e){
                System.out.println(e.getMessage());
                continue;
            }
            System.out.println("请输入密码:");
            String psd = input.next();
            try{
                cheekUserPassword(users,uname,psd);
            }
            catch(Exception e){
                System.out.println(e.getMessage());
                continue;
            }
            System.out.println("登录成功,欢迎"+uname+"回到LoginSystem!");
            flag_2 = false;
        }
    }

    public static void cheekUsername(String uname) throws UserLoginException{       //用户名是否符合要求,不符合抛出异常
        if(uname.length() < 6){
            throw new UserLoginException("用户名过短");
        }
        else if(uname.length() > 14){
            throw new UserLoginException("用户名过长");
        }
    }

    public static void cheekUserPassword(User[] users,String uname,String psd) throws UserLoginException{   //登录时密码是否符合要求,不符合抛出异常
        if(psd.length() > 16){
            throw new UserLoginException("密码输入过长");
        }
        if(psd.length() < 3){
            throw new UserLoginException("密码输入过短");
        }
        for(int i=0;i<num;i++){
            if(users[i].getUsername().equals(uname)){
                if(!users[i].getPassword().equals(psd)){
                    throw new UserLoginException("密码错误");
                }
                else{
                    return;
                }
            }
        }
        throw new UserLoginException("该用户不存在");
    }

    public static void cheekUserSetPassword(String psd) throws UserLoginException{      //创建用户时密码是否符合要求,不符合抛出异常
        if(psd.length() < 3){
            throw new UserLoginException("密码过短");
        }
        else if(psd.length() > 16){
            throw new UserLoginException("密码过长");
        }
    }

    public static void cheekUserSetPassword(String psd,String enpsd) throws UserLoginException{     //创建用户时确认密码是否符合要求,不符合抛出异常
        if(enpsd.length() < 3){
            throw new UserLoginException("密码过短");
        }
        else if(enpsd.length() > 16){
            throw new UserLoginException("密码过长");
        }
        else if(!psd.equals(enpsd)){
            throw new UserLoginException("两次输入密码不一致");
        }
    }

    public static void usersShow(User[] users){     //查看所有用户名
        for(int i=0;i<num;i++){
            System.out.println("用户"+(i+1)+":"+users[i].getUsername());
        }
    }
}

用户类 

package com.userlogin;

public class User {
    public String username;
    public String password;

    public User(String username,String password){
        this.username = username;
        this.password = password;
    }

    public String getUsername(){
        return username;
    }

    public String getPassword(){
        return password;
    }
}

用户登录异常类 

package com.userlogin;

public class UserLoginException extends Exception{
    public UserLoginException(){

    }

    public UserLoginException(String s){
        super(s);
    }
}

运行结果: 

总结:

这个只是一个用户登录系统的雏形,还有很多的地方等待完善

比如用户创建后的数据应该保留在一个文件内,还有可以查看所有用户的用户名应该只有超级管理员才能看,剩下的就是一些代码优化和系统功能的扩充

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值