2020-11-17 java-----------------集合实现用户注册登录

用户注册登录案例分析(集合)

A:有哪些类
B:类有哪些东西
C:类与类之间关系

用户类{用户名,密码,构造方法,成员方法}
假如用户很多,登录注册放入成员方法的话难以维护,所以将用户细分为用户基本描述类和用户操作类
测试类{main方法}
测试类创建用户基本描述对象和用户基本操作对象,使用其功能
用户基本描述类 cn.itcast.pojo
用户操作接口 cn.itcast.dao //规范操作
后面用数据库实现登录注册就只修改操作类,接口定义的规则不变
用户操作类 cn.itcast.dao.impl

结构

user 用户基本类

package cn.itcast.pojo;

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

    public User() {

    }

    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;
    }
}

userdao 用户操作接口

package cn.itcast.dao;

import cn.itcast.pojo.User;

public interface UserDao {
    public abstract boolean isLogin(String username,String password);
    public abstract void regist(User user);
}

userdaoimpl 用户基本操作类实现接口

package cn.itcast.dao.Impl;

import cn.itcast.dao.UserDao;
import cn.itcast.pojo.User;

import java.util.ArrayList;

public class UserDaoImpl implements UserDao {
    private  ArrayList<User> arry = new ArrayList<>();
    @Override
    public boolean isLogin(String username, String password) {
        for (User item : arry)
            if(item.getUsername().equals(username) && item.getPassword().equals(password))
                return true;
        return false;
    }

    @Override
    public void regist(User user) {
        arry.add(user);

    }
}

test 测试类

package cn.itcast.test;

import cn.itcast.dao.Impl.UserDaoImpl;
import cn.itcast.dao.UserDao;
import cn.itcast.pojo.User;

import java.util.Scanner;

public class UserTest {
    public static void main(String[] args) {
        while (true) {
            System.out.println("--------欢迎光临--------");
            System.out.println("1 登录");
            System.out.println("2 注册");
            System.out.println("3 退出");
            System.out.println("请输入");

            Scanner sc = new Scanner(System.in);
            String choice = sc.nextLine();
            UserDao ud = new UserDaoImpl();  //多态.多个地方使用放到外面做全局
            switch (choice) {

                case "1":
                    System.out.println("--------登录--------");
                    System.out.println("请输入用户名");
                    String username = sc.nextLine();
                    System.out.println("请输入密码");
                    String password = sc.nextLine();
                    //UserDao ud=new UserDaoImpl();
                    if (ud.isLogin(username, password)) {
                        System.out.println("登陆成功");
                    } else
                        System.out.println("登陆失败");

                    System.exit(0);
                    //break;是跳出switch
                case "2":
                    System.out.println("--------注册--------");
                    System.out.println("请输入用户名");
                    String newusername = sc.nextLine();
                    System.out.println("请输入密码");
                    String newpassword = sc.nextLine();
                    User user = new User();
                    user.setUsername(newusername);
                    user.setPassword(newpassword);
                    //UserDaoImpl ud=new UserDaoImpl();  //具体类使用
                    //UserDao ud=new UserDaoImpl();
                    ud.regist(user);
                    System.out.println("请输入密码");
                    break;
                case "3":
                    System.out.println("欢迎下次光临");
                    System.exit(0);

            }
        }
    }
}

但是有个问题是注册和登录不能共用一个集合,因为注册和登录会创建两次ud,是不同的ud,所以创建两个的是不同的集合。

--------欢迎光临--------
1 登录
2 注册
3 退出
请输入
2
--------注册--------
请输入用户名
admin
请输入密码
admin
请输入密码
--------欢迎光临--------
1 登录
2 注册
3 退出
请输入
1
--------登录--------
请输入用户名
admin
请输入密码
admin
登陆失败

为了能让多个方法共用一个集合,可以把集合前加上static(静态变量被所有对象拥有)

package cn.itcast.dao.Impl;

import cn.itcast.dao.UserDao;
import cn.itcast.pojo.User;

import java.util.ArrayList;

public class UserDaoImpl implements UserDao {
    private static ArrayList<User> arry = new ArrayList<>();
    @Override
    public boolean isLogin(String username, String password) {
        for (User item : arry)
            if(item.getUsername().equals(username) && item.getPassword().equals(password))
                return true;
        return false;
    }

    @Override
    public void regist(User user) {
        arry.add(user);

    }
}

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值