集合的学习已经告一段落,接下来用集合的知识做一个小的Demo,用户注册,登录,退出的界面模拟。思路如下:
(1)定义一个接口Userdao(数据访问对象),内含注册registe,登录login方法功能。(定义接口目的方便增加新的功能)
(2)定义一个Userdao接口的实现类UserDaoImpl,重写注册,登录方法,并定义一个集合List,把注册信息保存进去,方便登录时的信息与其校对。
(3)定义一个用户信息类User,含用户的用户名,用户密码;
(4)写一个用户注册登录的实现类StartUse;实现用户的注册,登录功能。
(5)要求:1.用户名为3-6为数字字母组成,用户名开头不能为数字。2.用户登录时,输错密码或用户名,系统会提供三次登录机会3次之后需要重新运行程序注册登录。3.用户在进入系统时需选择数字1.注册2.登录3.退出;如用户输入的不是数字,系统应给出提示,并提醒用户重新选择。4.登录成功后,可以选择玩一个猜数字的小游戏。
代码实现如下:
1.接口UserDao:
public interface UserDao<T> {
public abstract void register(T t1);
public abstract boolean login(String userName,String passWorld);
}
2.import java.util.ArrayList;
public class UserDaoImpl implements UserDao<User> {
ArrayList<User> list=new ArrayList<>();
@Override
public void register(User u1){
list.add(u1);
}
@Override
public boolean login(String userName,String passWorld){
boolean flag=false;
//判断输入的是否和注册的一样
for(User u:list) {
if(userName.equals(u.getUserName())&&passWorld.equals(u.getPassWorld())){
flag=true;
}else{
flag=false;
}
}
return flag;
}
}
3. public class User {
private String userName;
private String passWorld;
public User(){}
public User(String userName,String passWorld){
this.passWorld=passWorld;
this.userName=userName;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWorld() {
return passWorld;
}
public void setPassWorld(String passWorld) {
this.passWorld = passWorld;
}
}
4. import java.util.Random;
import java.util.Scanner;
public class GuessNUmber {
public static void playGame() {
Scanner sc = new Scanner(System.in);
Random random = new Random();
int i = random.nextInt(100)+1;
while (true) {
System.out.println("请输入1-100你猜测的数字:");
int a = sc.nextInt();
if (a > i) {
System.out.println("猜大了");
} else if (a < i) {
System.out.println("猜小了");
} else if (a == i) {
System.out.println("恭喜你,猜对了");
break;
}
}
}
}
5. import java.util.Scanner;
public class StartUser {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
UserDaoImpl userDao=new UserDaoImpl();//注意,必须在外面new,
// 不能在注册里new一个,在登录里new一个
int count=3;
while(true){
System.out.println("-----欢迎使用,请选择1.注册2.登录3.退出------");
try {
int num = sc.nextInt();
switch (num) {
case 1:
System.out.println("---------注册----------");
String regex = "[a-zA-Z][0-9a-zA-Z]{2,5}";
System.out.println("请输入用户名:");
String UserName = sc.next();
boolean b = UserName.matches(regex);
System.out.println("请输入密码:");
String passWord = sc.next();
if (b) {
User user = new User(UserName, passWord);
userDao.register(user);
System.out.println("注册成功");
break;
} else {
System.out.println("您输入的用户名格式错误,请重新注册:");
}
case 2:
System.out.println("----------登录-----------");
System.out.println("请输入用户名:");
String UserName1 = sc.next();
System.out.println("请输入密码:");
String passWord1 = sc.next();
boolean b1 = userDao.login(UserName1, passWord1);
if (b1) {
System.out.println("登录成功");
System.out.println("想玩游戏么,Y/N");
while(true) {
String str = sc.next();
if (str.equalsIgnoreCase("Y")) {
GuessNUmber.playGame();
System.out.println("还想再玩一局吗?Y/N");
} else {
System.exit(0);
}
}
} else {
count--;
if (count > 0) {
System.out.println("您输入的密码或用户名错误,您还有" + count + "次输入机会,请重新登录");
} else {
System.exit(0);
}
}
break;
case 3://用到穿透功能,不用break;
default:
System.out.println("谢谢使用,再见");
System.exit(0);
}
}catch (Exception e){
sc=new Scanner(System.in);//截断,防止一直输出
System.out.println("您输入的格式不正确,请重新选择输入");
}
}
}
}