需求:
利用ArrayList集合模拟用户登录注册的过程,如果登录成功玩家可选择是否玩猜数字小游戏。
package org.westos.entity;
/**
* 这是用户的描述类(实体类)
* @author Administrator
* @version v1.0
*/
public class User {
//成员变量
private String name ;
private String password ;
public User() {
super();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
package org.westos.dao;
import org.westos.entity.User;
/**
* 这是用户操作的接口
* @author Administrator
* @version V1.0
*
*/
public interface UserDao {
/**
* 这是用户的登录功能
* @param username 登录的用户名
* @param password 登录的密码
* @return 返回值表示登录是否成功,如果是true,表示登录;false,登录失败
*/
public abstract boolean isLogin(String username,String password) ;
/**
* 这是用户的注册功能,一旦注册,就注册成功
* @param user 需要注册的用户
*/
public abstract void regist(User user) ;
}
package org.westos.dao;
import org.westos.entity.User;
/**
* 这是用户操作的接口
* @author Administrator
* @version V1.0
*
*/
public interface UserDao {
/**
* 这是用户的登录功能
* @param username 登录的用户名
* @param password 登录的密码
* @return 返回值表示登录是否成功,如果是true,表示登录;false,登录失败
*/
public abstract boolean isLogin(String username,String password) ;
/**
* 这是用户的注册功能,一旦注册,就注册成功
* @param user 需要注册的用户
*/
public abstract void regist(User user) ;
}
package org.westos.game;
import java.util.Scanner;
/**
*
*这是猜数字小游戏的类
*/
public class GuessNumberGame {
//私有化构造方法,通过静态功能调用
private GuessNumberGame() {}
public static void start() {
//获取1~100之间随机数
int num = (int) (Math.random()*100 +1) ;
//定义一个统计变量
int count = 0 ;
while(true) {
Scanner sc = new Scanner(System.in) ;
System.out.println("请猜一个数字:");
int guessNumber = sc.nextInt();
count ++ ;
if(guessNumber>num) {
System.out.println("您要猜的数字大了...");
}else if(guessNumber <num) {
System.out.println("你要猜的数字小了...");
}else {
System.out.println("恭喜您"+count+"次猜中了");
break ;
}
}
}
}
package org.westos.test;
import java.util.Scanner;
import org.westos.dao.UserDao;
import org.westos.dao.impl.UserDaoImpl;
import org.westos.entity.User;
import org.westos.game.GuessNumberGame;
/**
* 针对用户登录注册功能的测试类
* @author Administrator
* @version V1.0
*
*
*
*问题:
* 1)注册成功,保存了用户名和密码到ArrayList集合中,但是登录时候同样的用户名和密码,结果登录失败..
* 这集合的问题,在逻辑层中登录和注册功能将集合没有被共用
* 2)登录成功,又出了界面,程序没有结束点,break只是在结束switch语句,并没有结束while循环
* 终止jvm
*
*/
public class UserTest {
public static void main(String[] args) {
//为了保证多次进行选择,使用while循环
while(true) {
//给用户提供一些选择,需要一些界面
System.out.println("------------------欢迎光临-------------------");
System.out.println("1 登录");
System.out.println("2 注册");
System.out.println("3 退出");
//多个逻辑都需要调用注册和登录.所以放到switch外面,共同可以使用
UserDao ud = new UserDaoImpl() ;
//创建键盘录入对象
Scanner sc = new Scanner(System.in) ;
//录入数据
System.out.println("请输入您的选择:");
String choice = sc.nextLine() ;
//简单思考,用swtich语句
switch(choice) {
case "1":
//登录
System.out.println("请输入您的用户名:");
String username = sc.nextLine() ;
System.out.println("请输入您的密码:");
String password = sc.nextLine() ;
//调用登录功能
boolean flag = ud.isLogin(username, password) ;
if(flag) {
System.out.println("登录成功,可以开始玩游戏了吗?");
System.out.println("开始玩游戏了!y/n");
//猜数字小游戏...
while(true) {
String result = sc.nextLine() ;
if(result.equalsIgnoreCase("y")) {
GuessNumberGame.start();
System.out.println("还玩吗?y/n");
}else {
break ;
}
}
// break ;
System.out.println("谢谢使用,下次再来...");
System.exit(0);
}else {
System.out.println("您的用户名或者密码错误...");
}
break;
case "2":
//注册
System.out.println("请输入您的用户名:");
String newUserName = sc.nextLine() ;
System.out.println("请输入您的密码:");
String newPassword = sc.nextLine() ;
//将用户名和密码封装到User对象中
User user = new User() ;
user.setName(newUserName);
user.setPassword(newPassword);
//调用注册功能
//创建Dao对象
// UserDao ud = new UserDaoImpl() ;
ud.regist(user);
System.out.println("注册成功....");
break;
case "3":
//退出
default :
System.out.println("谢谢使用,下次再来");
System.exit(0); //退出jvm
break ;
}
}
}
}