模拟用户的注册和登录
模拟用户登录的特点分析:
一个实体用户类(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
游戏结束....