package cn.itcast.pojo;
/**
* 这是用户基本描述类
* @author 周志武
* @version v1.0
*
*/
public class User {
//用户名
private String username;
//密码
private String password;
public User() {
}
public User(String username, String password) {
super();
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;
}
}
package cn.itcast.dao;
import cn.itcast.pojo.User;
/**
* 这是针对用户进行操作的接口
* @author 周志武
* @version v1.0
*/
public interface UserDao {
//杠,星星,回车出来的,
/**
* 这是用户的登陆功能
* @param username 用户名
* @param password 密码
* @return 返回登陆是否成功
*/
//如果方法参数小于等于3个,就传参数过来,如果参数过多,就传对象 isLogin翻译为是登陆
public abstract boolean isLogin(String username,String password);
/**
* 这是用户注册功能
* @param user 要注册的用户信息
*/
public abstract void regist(User user);
}
package cn.itcast.dao.impl;
import cn.itcast.dao.UserDao;
import cn.itcast.pojo.User;
import java.util.ArrayList;
/**
* 这是用户操作的具体实现类(集合版)、
* @author 周志武
* @version v1.0
*/
public class UserDaoTmpl implements UserDao {
//输入方法名前几个单词回车即可自动补全函数
//为了让多个方法能够使用同一个集合,就把集合定义为成员变量
//为了不让外人看到,用private
//在测试类中,注册是一个对象,登陆是一个对象,但是array集合不能呗多个对象共同使用,所有前面登陆是永远不会登陆成功的
//为了让多个对象共享一个集合,用static
//private ArrayList<User> array=new ArrayList<User>();
private static ArrayList<User> array=new ArrayList<User>();
@Override
public boolean isLogin(String username, String password) {
//遍历集合,获取每一个用户,并判断该用户的用户名和密码是否和传递过来的匹配
boolean flag=false;
for(User u:array){
if(u.getUsername().equals(username)&&u.getPassword().equals(password)){
//一但有匹配的,把标记改为true;有就返回true;
flag=true;
break;
}
}
//如果全部遍历完还没有匹配的,就返回false;
return true;
}
@Override
public void regist(User user) {
//把用户信息存入集合
//ArrayList<User> array=new ArrayList<User>();
array.add(user);
}
}
package cn.itcast.game;
import java.util.Scanner;
/**
* 这是猜数字小游戏
* @author 周志武
* @version v1.0
*/
public class GuseeNumber {
private GuseeNumber(){}
public static void start() {
//产生一个随机数
int number = (int) (Math.random() * 100) + 1;
//定义一个统计变量
int count=0;
while (true) {
//请输入一个数据
Scanner sc = new Scanner(System.in);
System.out.println("请输入数据(1-100)");
int guessNumber = sc.nextInt();
count++;
//判断
if (guessNumber > number) {
System.out.println("你猜的数据大了");
} else if (guessNumber < number) {
System.out.println("你猜的数据小了");
} else {
System.out.println("恭喜你猜中了,猜中次数花费:"+count);
break;
}
}
}
}
/*
边敲边改
能放里面的就先放里面,发现不能放里面在放外面,发现有共同的重用的在方外面:能小范围尽量不大范围
*/
package cn.itcast.test;
import cn.itcast.dao.UserDao;
import cn.itcast.dao.impl.UserDaoTmpl;
import cn.itcast.game.GuseeNumber;
import cn.itcast.pojo.User;
import java.util.Scanner;
/**
* 用户测试类
* @author 周志武
* @version v1.0
*/
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:退出");
System.out.println("请输入您的选择");
//键盘录入选择,根据选择做不同的操作
Scanner sc = new Scanner(System.in);
//为了后面的录入信息的方便,我所有的数据录入全部用字符串接受
String choiceString = sc.nextLine();
//switch语句的多个地方要使用,我就定义到外面
UserDao ud = new UserDaoTmpl();
switch (choiceString) {
case "1":
//登陆欢迎界面,请输入用户名和密码
System.out.println("-------------登陆界面-------------");
System.out.println("请输入用户名");
String username = sc.nextLine();
System.out.println("请输入密码");
String password = sc.nextLine();
//调用登陆功能
//UserDao ud=new UserDaoTmpl();
boolean flag = ud.isLogin(username, password);
if (flag) {
System.out.println("登陆成功");
//玩游戏
System.out.println("登陆成功,可以玩飞机了,你玩吗?y/n");
while(true) {
String resultString = sc.nextLine();
if (resultString.equalsIgnoreCase("y")) {
GuseeNumber.start();
System.out.println("你还要玩飞机吗?y/n");
} else {
break;
}
}
System.out.println("谢谢使用,欢迎下次在来");
System.exit(0);
//break;这里写break结束的是swich;
} else {
System.out.println("用户名或者密码错误,登陆失败");
}
break;
case "2":
//给出欢迎界面,请输入用户名和密码
System.out.println("-------------注册界面-------------");
System.out.println("请输入用户名");
String newUsername = sc.nextLine();
System.out.println("请输入密码");
String newPassword = sc.nextLine();
//把用户名和对象封装到一个对象中;
User user = new User();
user.setUsername(newUsername);
user.setPassword(newPassword);
//调用注册功能
// 具体类使用
//UserDaoTmpl udi=new UserDaoTmpl();
//一般用多态用法,因为后面实现是可以替换的
//UserDao ud=new UserDaoTmpl():
ud.regist(user);
System.out.println("注册成功");
break;
case "3":
break;
default:
System.out.println("谢谢使用,欢迎下次在来");
System.exit(0);
break;
}
}
}
}