需求:实现用户注册 通过用户名和密码登录
//用的是集合 充当数据库 实现的。 登录成功后可以进行猜字小游戏。
一、分析
用户登录注册案例
分析:
通过面向对象思想分析
A.有哪些类
B.类里面都有哪些东西
C.类和类之间的关系
有哪些类:
用户类:
成员变量:用户名、密码
成员方法:getXxx,setXxx
用户操作类:
登录、注册
测试类:
main方法
类和类之间的关系:
测试类里面使用用户类和用户操作的功能
分包:分类管理
A.按功能划分
B.按模块划分
C.先按模块划分再按功能划分
按功能划分:
com.shulian.pojo 放实体类
com.shulian.dao 放功能接口
com.shulian.dao.impl 放功能接口的实现类
com.shulian.test 放测试类
今天我们用集合来实现,后面学完IO,再用IO来实现,再学了数据库,就用数据库来实现。
用哪种实现就在com.shulian.dao.impl这个包下面写个具体的实现类就可以了
图解
二、先写实体类
package com.shulian.pojo;
/**
* 用户类
*
* @author zzh
*
*/
public class User {
private String userName;
private String userPwd;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPwd() {
return userPwd;
}
public void setUserPwd(String userPwd) {
this.userPwd = userPwd;
}
}
二、功能接口
package com.shulian.dao;
import com.shulian.pojo.User;
/**
* 用户操作接口
*
* @author zzh
*
*/
public interface UserDao {
/**
* 登录功能
*
* @param userName
* @param userPwd
* @return
*/
public abstract boolean isLogin(String userName, String userPwd);
/**
* 注册功能
*
* @param user
*/
public abstract void isRegister(User user);
}
三、功能实现类
package com.shulian.dao.impl;
import java.util.ArrayList;
import com.shulian.dao.UserDao;
import com.shulian.pojo.User;
/**
* 用户功能实现类(集合版)
* @author zzh
*
*/
public class UserDaoImpl implements UserDao {
private static ArrayList<User> userList = new ArrayList<User>();
@Override
public boolean isLogin(String userName, String userPwd) {
boolean flag = false;
//登录验证
for(User u:userList){
if (u.getUserName().equals(userName) && u.getUserPwd().equals(userPwd)){
return true;
}
}
return flag;
}
@Override
public void isRegister(User user) {
//将用户添加到集合中
userList.add(user);
}
}
四、猜字游戏
package com.shulian.game;
import java.util.Scanner;
public class PlayGame {
private static Scanner sc;
public static void caiZiYouXi() {
int x = (int) (100 * Math.random() + 1);
sc = new Scanner(System.in);
while (true) {
System.out.println("请输入你想要猜的数字");
int n = sc.nextInt();
if (x > n) {
System.out.println("你猜的数字小了!!!");
} else if (x < n) {
System.out.println("你猜的数字大了!!!");
} else {
System.out.println("恭喜你猜对了!!!");
break;
}
}
}
}
五、测试类
package com.shulian.test;
import java.util.Scanner;
import com.shulian.dao.UserDao;
import com.shulian.dao.impl.UserDaoImpl;
import com.shulian.game.PlayGame;
import com.shulian.pojo.User;
public class UserTest {
public static void main(String[] args) {
while (true) {
// 创建键盘录入对象
Scanner sc = new Scanner(System.in);
System.out.println("欢迎使用***系统!!!");
System.out.println("1.登录");
System.out.println("2.注册");
System.out.println("0.退出");
System.out.println("请选择:");
String options = sc.nextLine();
// 可以用if判断 如果选项比较多,用if写起来比较复杂,所以选择用switch
switch (options) {
case "1":
System.out.println("用户名:");
String loginUserName = sc.nextLine();
System.out.println("密码:");
String loginUserPwd = sc.nextLine();
// 创建用户操作类 调用用户操作类的登录功能
UserDao loginUserDao = new UserDaoImpl(); // 多态
boolean flag = loginUserDao
.isLogin(loginUserName, loginUserPwd);
if (flag) {
System.out.println("登陆成功!!!");
System.out.println("欢迎来到猜字小游戏!!!");
PlayGame.caiZiYouXi();
} else {
System.out.println("用户名密码错误!!!");
}
break;
case "2":
System.out.println("用户名:");
String inUserName = sc.nextLine();
System.out.println("密码:");
String inUserPwd = sc.nextLine();
// 创建用户对象
User user = new User();
// 把输入的用户名放到user对象里
user.setUserName(inUserName);
// 把输入的密码放到user对象里
user.setUserPwd(inUserPwd);
// 创建用户操作类对象
UserDao userDao = new UserDaoImpl(); // 多态
// 调用用户操作类的注册功能
userDao.isRegister(user);
System.out.println("注册成功");
break;
case "0":
default:
System.exit(0);
break;
}
}
}
}
输出 实现