需求:实现用户注册 通过用户名和密码登录
//用的是集合 充当数据库 实现的。 登录成功后可以进行猜字小游戏。
一、分析
用户登录注册案例
分析:
通过面向对象思想分析
A.有哪些类
B.类里面都有哪些东西
C.类和类之间的关系
扫描二维码关注公众号,回复:
1723205 查看本文章
有哪些类:
用户类:
成员变量:用户名、密码
成员方法: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; } } } }输出 实现