登陆注册案例分析:
  我们现在写代码需要面向对象,我们必须先找到能完成某个功能的类,接着调用里面的方法完成它。

登陆注册案例中的类:
  用户类
    成员变量:用户名,密码
    成员方法:登陆,注册功能
  测试类
    main
登陆注册案例中的类的详细分解:
  用户类(User):用户名,密码,邮箱,电话,身份证号。。。。—- 标准的java描述类

我们应该把对用户的所有的操作抽取出来形成一个类:
  用户操作类:注册,登陆
  定义一个接口:就是定义的登陆和注册的功能,我们之前说过接口是是对类的功能的一种扩展,其实当时说的还不够完善,接口本质其实是用来定义规则的。
  测试类:main

java中的分包:
  com.edu.domain — 标准的java描述类
  com.edu.dao – 存放的是接口
  com.edu.dao.impl – 存放的是接口实现类
  com.edu.util – 对对象进行操作的工具类
  com.edu.test – 测试类

举例:
①com.edu.domain包下

package com.edu.domain;
public class User {
    private String userName;
    private String password;
    public User() {
        super();
        // TODO Auto-generated constructor stub
    }
    public User(String userName, String password) {
        super();
        this.userName = userName;
        this.password = password;
    }
    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;
    }
}

②com.edu.dao包下:

package com.edu.dao;
import com.edu.domain.User;
public interface UserDao {
    //定义注册的功能
    public abstract void regist(User user);

    //登陆功能
    public abstract boolean isLogin(String userName,String password);
}

③com.edu.dao.impl包下:

package com.edu.dao.impl;
import java.util.ArrayList;
import com.edu.dao.UserDao;
import com.edu.domain.User;
//用户操作类
public class UserDaoImpl implements UserDao{
    //在这里做一个基于集合的登录和注册,相当与接收到用户信息存储到集合,登陆的时候从集合中查找用户信息
    static ArrayList<User> users = new ArrayList<User>();
    @Override
    public void regist(User user) {
        //接收到的用户对象存储到集合中
        users.add(user);
    }

    @Override
    public boolean isLogin(String userName, String password) {
        //登陆:遍历集合,看集合中是否存在前面传递过来的用户名和密码信息,如果存在返回true,如果不存在返回false 
        boolean flag = false;
        for(User user:users){
            if (userName.equals(user.getUserName())&&password.equals(user.getPassword())) {
                flag = true;
                break;
            }
        }
        return flag;
    }
}

④com.edu.game包下:

package com.edu.game;
import java.util.Scanner;
public class GuessNum {
    public void guessNumGame(){
        int r = (int) (Math.random()*100+1);
        Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.println("请输入猜想数字");
            int i = sc.nextInt();
            if (r==i) {
                System.out.println("答对了");
                break;
            }
            if (i>r) {
                System.out.println("大了");
            }
            if (i<r) {
                System.out.println("小了");
            }
        }
    }
}

⑤com.edu.test包下:

package com.edu.test;

import java.util.Scanner;

import com.edu.dao.impl.UserDaoImpl;
import com.edu.domain.User;
import com.edu.game.GuessNum;

public class Test {
    public static void main(String[] args) {
        while (true) {
            //提示用户目前是需要登录还是需要注册还是需要退出呢
            System.out.println("欢迎来到登录注册页面");
            System.out.println("1:注册");
            System.out.println("2:登陆");
            System.out.println("3:退出系统");

            //创建一个用户操作类对象
            UserDaoImpl udi = new UserDaoImpl();

            //创建键盘录入对象获取键盘录入信息
            Scanner sc = new Scanner(System.in);
            String choice = sc.nextLine();

            //使用switch进行判断
            switch (choice) {
            case "1":
                System.out.println("欢迎来到注册页面");
                System.out.println("请输入你的用户名");
                String userName = sc.nextLine();
                System.out.println("请输入你的密码");
                String password = sc.nextLine();
                //将用户名和密码封装成一个user对象
                User user = new User(userName, password);
                //调用用户操作类对象的注册方法
                udi.regist(user);
                System.out.println("注册成功");
                break;
            case "2":
                System.out.println("欢迎来到登陆页面");
                System.out.println("请输入你的用户名");
                String inputUserName = sc.nextLine();
                System.out.println("请输入你的密码");
                String inputpPassword = sc.nextLine();
                //调用用户操作类对象的登陆方法
                boolean flag = udi.isLogin(inputUserName, inputpPassword);
                if (flag) {
                    System.out.println("登陆成功");
                    System.out.println("猜数字小游戏欢迎您");
                    System.out.println("是否进行游戏?请输入Y或N");
                    String next = sc.nextLine();
                    while (next.equalsIgnoreCase("Y")) {
                        GuessNum gs = new GuessNum();
                        gs.guessNumGame();
                        System.out.println("是否进行游戏?请输入Y或N");
                        next = sc.nextLine();
                    }
                }else {
                    System.out.println("登录失败");
                }

                break;
            case "3":
            default:
                //输入3或者其他的选项,全部退出系统
                System.exit(0);
                break;
            }
        }
    }
}
    //测试如下:
    /**欢迎来到登录注册页面
        1:注册
        2:登陆
        3:退出系统
        1
        欢迎来到注册页面
        请输入你的用户名
        admin
        请输入你的密码
        123456
        注册成功
        欢迎来到登录注册页面
        1:注册
        2:登陆
        3:退出系统
        2
        欢迎来到登陆页面
        请输入你的用户名
        admin
        请输入你的密码
        123456
        登陆成功
        猜数字小游戏欢迎您
        是否进行游戏?请输入Y或N
        y
        请输入猜想数字
        23
        大了
        请输入猜想数字
        15
        大了
        请输入猜想数字
        10
        小了
        请输入猜想数字
        13
        小了
        请输入猜想数字
        14
        答对了
        是否进行游戏?请输入Y或N
        n
        欢迎来到登录注册页面
        1:注册
        2:登陆
        3:退出系统
        3
    */