实体类been包:
public class User {
private String id;
private String username;
private String password;
public User() {
}
public User(String id, String username, String password) {
this.id = id;
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;
}
}
持久层接口以及其实现类:
public interface UserDao {
//注册的方法
void registerUser(User user);
//登录的方法
boolean login(String userName, String password);
//判断用户名是否存在
boolean doesItExist(String userName);
}
//实现类 用集合来模拟登录和注册
public class UserDaoImpl implements UserDao {
private ArrayList list = new ArrayList<>();
//注册
@Override
public void registerUser(User user) {
list.add(user);
}
//登录
@Override
public boolean login(String userName, String password) {
for (User user : list) {
if(user.getUsername().equals(userName)&&user.getPassword().equals(password)){
return true;
}
}
return false;
}
@Override
public boolean doesItExist(String userName) {
for (User user : list) {
if (user.getUsername().equals(userName)) {
return false;
}
}
return true; //true代表用户名,不存在,可以注册,false代表用户名存在了不能注册
}
}
在视图层插入的游戏类:
public class GuessNumber {
public static void playGame() {
Random random = new Random();
int num = random.nextInt(100) + 1;
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("请输入一个数字 1----100");
int guessNumber = sc.nextInt();
if (guessNumber > num) {
System.out.println("猜大了");
} else if (guessNumber < num) {
System.out.println("猜小了");
} else{
System.out.println("恭喜你猜对了");
break;
}
}
}
}
业务层接口及其实现类:
public interface UserService {
//注册的方法
boolean registerUser(User user);
//登录的方法
boolean login(String userName, String password);
}
//业务层
public class UserServiceImpl implements UserService {
private UserDao userDao = new UserDaoImpl();
@Override
public boolean registerUser(User user) {
//业务:判断用户名是否存在,如果存在,就不能注册
if(userDao.doesItExist(user.getUsername())){
userDao.registerUser(user);
return true;
}
return false;
}
@Override
public boolean login(String userName, String password) {
boolean b = userDao.login(userName, password);
return b;
}
}
工具类生成随机数字:
public class UUIDUtils {
private UUIDUtils() {
}
public static String getUUID() {
UUID uuid = UUID.randomUUID();
return uuid.toString().replace("-","");
}
}
视图层:
//视图层
public class UserView {
public static void main(String[] args) {
UserService userService = new UserServiceImpl();
while (true) {
System.out.println("---欢迎使用本系统 1 注册 2 登录 3 退出--");
Scanner sc = new Scanner(System.in);
if (sc.hasNextInt()) {
int num = sc.nextInt();
switch (num) {
case 1: //注册
while (true) {
sc = new Scanner(System.in);
System.out.println("请输入用户名");
String username = sc.nextLine();
String regx = "[A-Za-z]{6,16}";
System.out.println("请输入密码");
String password = sc.nextLine();
String regx1 = "[0-9]{6,16}";
if (username.matches(regx) && password.matches(regx1)) {
User user = new User(UUIDUtils.getUUID(), username, password);
//调用业务层注册
boolean b = userService.registerUser(user);
if (b) {
System.out.println("注册成功!");
break;
} else {
System.out.println("用户名重复,请重新注册");
}
}else {
System.out.println("请输入正确的名字和密码格式");
}
}
break;
case 2: //登录逻辑
for (int i = 1; i < 4; i++) {
sc = new Scanner(System.in);
System.out.println("请输入用户名");
String username2 = sc.nextLine();
System.out.println("请输入密码");
String password2 = sc.nextLine();
//调用业务层登录
boolean flag = userService.login(username2, password2);
if (flag) {
System.out.println("登录成功!要玩游戏吗?y/n");
while (true) {
String str = sc.nextLine();
if ("y".equalsIgnoreCase(str)) {
//玩游戏
GuessNumber.playGame();
System.out.println("还要要玩游戏吗?y/n");
} else {
System.out.println("谢谢使用再见!");
System.exit(0);
}
}
} else {
System.out.println("登录失败!你还有" + (3 - i) + "次机会");
}
}
break;
case 3: //退出
System.out.println("谢谢使用再见!");
System.exit(0);
break;
}
} else {
System.out.println("请输入单个数字");
}
}
}
}



