模拟用户的注册和登录
模拟用户登录的特点分析:
一个实体用户类(User类)
创建用户名和密码的变量
一个接口(UserDao)
创建注册和登录的功能
一个子实现类(UserDaoimpl)
去实现接口中的注册和登录功能
一个测试类,去调用接口中的方法从而达到注册和登录的功能
给每一个包命名的时候:
用户的描述类:user类
包:公司域名.entity;实体类
org.westos.entity;
用户操作的接口:
包:公司域名.dao:里面放的 是接口
org.westos.dao :接口层
用户操作接口的实现类:
包:
org.westos.dao.impl:业务逻辑层:接口子实现类
测试类:
包:
org.westos.test:需要针对注册或者的登陆进行测试
例如:
package com.westos.entity; /** * 这是用户的实体类 * @author 杰哥 * @version 2.0 */ public class User { private String username; private String password; public User() { super(); } 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; } }
package com.westos.Dao; import com.westos.entity.User; /** * @author 杰哥 *这是用户进行注册和登录的接口 */ public interface UserDao { /** *这是用户的注册方法 *输入用户名和密码即表示注册成功 * @param user */ public abstract void regist(User user) ; /** * 这是用户的登录方法 * return返回的值是true代表登录成功,false代表登录失败 * @param username * @param password * @return */ public abstract boolean Login(String username,String password); }
package com.westos.Dao.impl; import java.util.ArrayList; import com.westos.Dao.UserDao; import com.westos.entity.User; /** * @author 杰哥 *这是对UserDao接口的子实现接口 */ public class UserDaoimpl implements UserDao { private static ArrayList<User> list=new ArrayList<User>(); @Override public void regist(User user) { list.add(user); } @Override public boolean Login(String username, String password) { //先假设登录失败,给一个失败的初始值 boolean flag=false; //增强for循环遍历集合 for(User x:list) { //如果输入的值和注册的值一样,那么将会返回true if(x.getUsername().equals(username)&&x.getPassword().equals(password)) { flag=true; break; } } return flag; } }
package com.westos.game; import java.util.Scanner; /** * @author 杰哥 *这是一个猜字小游戏 */ public class GuessNumberGame { private GuessNumberGame() { } public static void strat (){ //创建一个随机获取100以内的数字 int num=(int) (Math.random()*100)+1; //猜字小游戏 while(true) { Scanner sc=new Scanner(System.in); System.out.println("请您输入您要猜测的数字..."); int number =sc.nextInt(); if(number>num) { System.out.println("有点偏大哦..."); }else if(number<num) { System.out.println("有点偏小哦..."); }else { System.out.println("恭喜你,猜中了..."); break; } } } }
package com.westos.test; import java.util.Scanner; import com.westos.Dao.UserDao; import com.westos.Dao.impl.UserDaoimpl; import com.westos.entity.User; import com.westos.game.GuessNumberGame; 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 退出"); //创建接口类对象,多态的形式体现,可以去调用接口中的方法 UserDao ud=new UserDaoimpl(); //创建键盘录入 Scanner sc2=new Scanner(System.in); int n=sc2.nextInt(); Scanner sc=new Scanner(System.in); switch(n) { case 1: //注册 System.out.println("请输入您的用户名:"); String str2=sc.nextLine(); System.out.println("请输入您的密码:"); String str3=sc.nextLine(); //创建实体类对象 User user=new User(); //通过封装将登录的用户名和密码加入实体类中,然后进入集合中 user.setPassword(str3); user.setUsername(str2); //调用接口中的regist方法 ud.regist(user); System.out.println("恭喜您注册成功..."); break; case 2: //登录 System.out.println("请输入您的用户名:"); String str4=sc.nextLine(); System.out.println("请输入您的密码:"); String str5=sc.nextLine(); boolean flag=ud.Login(str4, str5); if(flag) { System.out.println("恭喜您登录成功...,准备好玩游戏了吗?"); System.out.println("要玩吗?yes/no"); while(true) { //键盘录入yes或者no String st=sc.nextLine(); if(st.equalsIgnoreCase("yes")) { GuessNumberGame.strat(); System.out.println("还有继续吗?yes/no"); }else { System.out.println("游戏结束...."); break; } } System.exit(0); }else { System.out.println("您输入的有误,请重新输入..."); } break; //这里运用了case穿透 case 3: default: System.out.println("欢迎您下次再来,再见"); System.exit(0); } } } }
运行结果: 请您选择以下选项 1 注册 2 登录 3 退出 1 请输入您的用户名: admin 请输入您的密码: admin 恭喜您注册成功... 请您选择以下选项 1 注册 2 登录 3 退出 2 请输入您的用户名: admin 请输入您的密码: admin 恭喜您登录成功...,准备好玩游戏了吗? 要玩吗?yes/no yes 请您输入您要猜测的数字... 15 有点偏小哦... 请您输入您要猜测的数字... 30 有点偏小哦... 请您输入您要猜测的数字... 40 有点偏小哦... 请您输入您要猜测的数字... 60 有点偏小哦... 请您输入您要猜测的数字... 80 恭喜你,猜中了... 还有继续吗?yes/no no 游戏结束....