Java实现用户登录注册案例(集合版)

图片展示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

需求:用户登录注册案例

    A:有哪些类呢?
    B:每个类有哪些东西呢?
    C:类与类之间的关系是什么呢?

分析:
A:有哪些类呢?
用户类
测试类
B:每个类有哪些东西呢?
用户类:
成员变量:用户名,密码
构造方法:无参构造
成员方法:getXxx()/setXxx()
登录,注册

            假如用户类的内容比较多,将来维护起来就比较麻烦,为了更清晰的分类,我就把用户又划分成了2类
                用户基本描述类
                    成员变量:用户名,密码
                    构造方法:无参构造
                    成员方法:getXxx()/setXxx()
                用户操作类
                    登录,注册

        测试类:
                main方法
C:类与类之间的关系是什么呢?
      在测试类中创建用户操作类和用户基本描述类的对象,并使用功能

分包:
A:功能划分
B:模块划分
C:先按模块划分,再按功能划分

今天我选择按照功能划分

用户类基本描述类包 cn.itcast.pojo
用户操作接口 cn.itcast.dao
用户类操作包 cn.itcast.dao.impl
   
  ( 今天是集合实现,过几天是IO实现,再过几天是GUI实现,最后数据库实现)
    
用户测试类 cn.itcast.test

下面是源代码:

用户类基本描述类包 cn.itcast.pojo

package cn.itcast.pojo;

/*
* 这是用户基本描述类
*
* @author 徐文
* @version v1.0
* */
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;
    }
}

用户操作接口 cn.itcast.dao

package cn.itcast.dao;

import cn.itcast.pojo.User;

/**
* 这是针对用户进行操作的接口
*
* @author 徐文
* @version v1.0
* */
public interface UserDao {
    /**
     * 这是用户登录功能
     * @param username 用户名
     * @param password 密码
     * @return  返回登录是否成功
     * */
    public abstract boolean isLogin(String username,String password);

    /**
     * 这是用户注册功能
     * @param user 需注册的用户信息
     * */
    public abstract void regist(User user);
}

用户类操作包 cn.itcast.dao.impl

package cn.itcast.dao.impl;

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

import java.util.ArrayList;

/**
 * 这是用户操作的具体实现类(集合版)
 *
 * @author 徐文
 * @version v1.0
 * */
public class UserDaoImpl implements UserDao {
    //为了让多个方法能够使用同一个集合,就把集合定义为成员变量
    //为了不让外人看到,用private
    //为了让多个对象共享同一个成员变量,用static
    private static ArrayList<User> array = new ArrayList<User>();


    @Override
    public boolean isLogin(String username, String password) {
        //遍历集合,获取每一个用户,并判断该用户的用户名和密码是否和传递过来的匹配
        boolean flag = false;

        for(User u : array){
            if(u.getUsername().equals(username)&&u.getPassword().equals(password)){
                flag = true;
                break;
            }
        }

        return flag;
    }

    @Override
    public void regist(User user) {
        //把用户信息存储集合
        //ArrayList<User> array = new ArrayList<User>();
        array.add(user);
    }
}

猜数字小游戏cn.itcast.game

package cn.itcast.game;

import java.util.Scanner;

/**
 * 这是猜数字小游戏
 *
 * @author 徐文
 * @version v1.0
 *
 * */
public class GuessNumber {
    private GuessNumber(){}

    public static void start(){
        System.out.println("--------------欢迎进入猜数字小游戏--------------");
        //产生一个随机数
        int number = (int) (Math.random()*100)+1;

        //定义一个统计变量
        int count = 0;

        while (true) {
            //键盘录入一个数据
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入数据(1-100):");
            int guessNumber = sc.nextInt();

            count++;

            //判断
            if (guessNumber > number) {
                System.out.println("你猜的数据" + guessNumber + "大了");
            } else if (guessNumber < number) {
                System.out.println("你猜的数据" + guessNumber + "小了");
            } else {
                System.out.println("恭喜你"+count+"次就猜中了");
                break;
            }

        }
    }
}

用户测试类 cn.itcast.test

/**
 * 用户测试类
 *
 * @author 徐文
 * @version v1.0
 * */
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 choiceString = sc.nextLine();

            //swich语句多个地方要使用,我就定义到外面
            UserDao ud = new UserDaoImpl();

            //经过简单的思考,我选择了swich
            switch (choiceString) {
                case "1":
                    //登录界面,请输入用户名和密码
                    System.out.println("--------------登录界面--------------");
                    System.out.println("请输入用户名:");
                    String username = sc.nextLine();
                    System.out.println("请输入密码:");
                    String password = sc.nextLine();

                    //调用登录功能
                    //UserDao ud = new UserDaoImpl();

                    boolean flag = ud.isLogin(username, password);
                    if (flag) {
                        System.out.println("登陆成功,可以选择是否开始玩游戏了");

                        System.out.println("您玩猜数字小游戏吗?y/n");
                        while (true) {
                            String resultString = sc.nextLine();
                            if (resultString.equalsIgnoreCase("y")) {
                                //玩游戏
                                GuessNumber.start();
                                System.out.println("您还玩吗?y/n");
                            } else {
                                break;
                            }
                        }
                        System.exit(0);
                        //break;//这里写break,结束的是swich
                    } else {
                        System.out.println("用户名或者密码有误,登陆失败");
                    }

                    break;
                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);

                    //调用注册功能
                    //多态
                    //UserDao ud = new UserDaoImpl();
                    //具体类使用
                    //UserDaoImpl udi = new UserDaoImpl();

                    ud.regist(user);
                    System.out.println("注册成功");
                    break;
                case "3":
                default:
                    System.out.println("谢谢使用,欢迎下次再来");
                    System.exit(0);
                    break;
            }
        }
    }
}

发布了4 篇原创文章 · 获赞 13 · 访问量 142

猜你喜欢

转载自blog.csdn.net/weixin_46316012/article/details/105641296