Java用集合知识做一个用户注册,登录,退出的界面模拟

集合的学习已经告一段落,接下来用集合的知识做一个小的Demo,用户注册,登录,退出的界面模拟。思路如下:
(1)定义一个接口Userdao(数据访问对象),内含注册registe,登录login方法功能。(定义接口目的方便增加新的功能)
(2)定义一个Userdao接口的实现类UserDaoImpl,重写注册,登录方法,并定义一个集合List,把注册信息保存进去,方便登录时的信息与其校对。
(3)定义一个用户信息类User,含用户的用户名,用户密码;
(4)写一个用户注册登录的实现类StartUse;实现用户的注册,登录功能。
(5)要求:1.用户名为3-6为数字字母组成,用户名开头不能为数字。2.用户登录时,输错密码或用户名,系统会提供三次登录机会3次之后需要重新运行程序注册登录。3.用户在进入系统时需选择数字1.注册2.登录3.退出;如用户输入的不是数字,系统应给出提示,并提醒用户重新选择。4.登录成功后,可以选择玩一个猜数字的小游戏。
代码实现如下:

1.接口UserDao:
public interface UserDao<T> {
    public abstract void register(T t1);
    public abstract  boolean login(String userName,String passWorld);
}

2.import java.util.ArrayList;
public class UserDaoImpl implements UserDao<User> {
    ArrayList<User> list=new ArrayList<>();
    @Override
    public void register(User u1){
        list.add(u1);
    }
    @Override
    public boolean login(String userName,String passWorld){
        boolean flag=false;
        //判断输入的是否和注册的一样
        for(User u:list) {
            if(userName.equals(u.getUserName())&&passWorld.equals(u.getPassWorld())){
                flag=true;
            }else{
                flag=false;
            }
        }
        return flag;
    }
}
3. public class User {
    private String userName;
    private String passWorld;

    public User(){}
    public User(String userName,String passWorld){
        this.passWorld=passWorld;
        this.userName=userName;
    }

    public String getUserName() {
        return userName;
    }

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

    public String getPassWorld() {
        return passWorld;
    }

    public void setPassWorld(String passWorld) {
        this.passWorld = passWorld;
    }
}
4. import java.util.Random;
import java.util.Scanner;

public class GuessNUmber {
    public static void playGame() {
        Scanner sc = new Scanner(System.in);
        Random random = new Random();
        int i = random.nextInt(100)+1;
        while (true) {
            System.out.println("请输入1-100你猜测的数字:");
            int a = sc.nextInt();
            if (a > i) {
                System.out.println("猜大了");
            } else if (a < i) {
                System.out.println("猜小了");
            } else if (a == i) {
                System.out.println("恭喜你,猜对了");
                break;
            }
        }
    }
}
5. import java.util.Scanner;
public class StartUser {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        UserDaoImpl userDao=new UserDaoImpl();//注意,必须在外面new,
                                              // 不能在注册里new一个,在登录里new一个
        int count=3;
        while(true){
         System.out.println("-----欢迎使用,请选择1.注册2.登录3.退出------");
        try {
            int num = sc.nextInt();
            switch (num) {
                case 1:
                    System.out.println("---------注册----------");
                    String regex = "[a-zA-Z][0-9a-zA-Z]{2,5}";
                    System.out.println("请输入用户名:");
                    String UserName = sc.next();
                    boolean b = UserName.matches(regex);
                    System.out.println("请输入密码:");
                    String passWord = sc.next();
                    if (b) {
                        User user = new User(UserName, passWord);
                        userDao.register(user);
                        System.out.println("注册成功");
                        break;
                    } else {
                        System.out.println("您输入的用户名格式错误,请重新注册:");
                    }

                case 2:
                    System.out.println("----------登录-----------");
                    System.out.println("请输入用户名:");
                    String UserName1 = sc.next();
                    System.out.println("请输入密码:");
                    String passWord1 = sc.next();
                    boolean b1 = userDao.login(UserName1, passWord1);
                    if (b1) {
                        System.out.println("登录成功");
                        System.out.println("想玩游戏么,Y/N");
                        while(true) {
                            String str = sc.next();
                            if (str.equalsIgnoreCase("Y")) {
                                GuessNUmber.playGame();
                                System.out.println("还想再玩一局吗?Y/N");
                            } else {
                                System.exit(0);
                            }
                        }

                    } else {
                        count--;
                        if (count > 0) {
                            System.out.println("您输入的密码或用户名错误,您还有" + count + "次输入机会,请重新登录");

                        } else {
                            System.exit(0);
                        }
                    }
                    break;
                case 3://用到穿透功能,不用break;
                default:
                    System.out.println("谢谢使用,再见");
                    System.exit(0);
            }
        }catch (Exception e){
            sc=new Scanner(System.in);//截断,防止一直输出
            System.out.println("您输入的格式不正确,请重新选择输入");
         }
        }
    }
}
  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值