在集合的基础上,我们可以做一个登录注册案例
登陆注册案例分析:
利用面向对象的思想,我们必须先找到能完成某个功能的类,接着调用里面的方法完成它
登陆注册案例中的类:
用户类
成员变量:用户名,密码
成员方法:登陆,注册功能
测试类 :就是我们的main方法
登陆注册案例中的类的详细分解:
用户类(User):用户名,密码,邮箱,电话,身份证号。。。。— 标准的java描述类
我们应该把对用户的所有的操作抽取出来形成一个类:
用户操作类:注册,登陆
定义一个接口:就是定义的登陆和注册的功能,接口本质其实是用来定义规则的。
java中的分包:
com.edu.domain — 标准的java描述类
com.edu.dao – 存放的是接口
com.edu.dao.impl – 存放的是接口实现类
com.edu.util – 对对象进行操作的工具类
com.edu.test – 测试类
下面是 代码实现部分,添加了一个 注册成功后可以 玩一个猜数字小游戏的方法
先写一个标准的用户描述类:
public class User {
private String useName;
private String passWord;
public User() {
super();
// TODO Auto-generated constructor stub
}
public User(String useName, String passWord) {
super();
this.useName = useName;
this.passWord = passWord;
}
public String getUseName() {
return useName;
}
public void setUseName(String useName) {
this.useName = useName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
}
用户的操作类,为了之后代码修改方便,利用接口的方法来实现。
import com.edu.domain.User;
public interface UserDao {
//定义注册的功能
public abstract void regist(User user);
//定义一个登陆的功能
public abstract boolean isLogin(String userName,String passWord );
}
接口的实现类:
import java.util.ArrayList;
import com.edu.dao.UserDao;
import com.edu.domain.User;
//创建一个用户操作类
public class UserDaoImpl implements UserDao {
ArrayList<User> users = new ArrayList<User>();
//目前在集合的基础上使用用户注册和登陆的功能, 将用户的信息存储在集合中,登录时拿信息与集合中的信息匹配
@Override
public void regist(User user) {
// TODO Auto-generated method stub
users.add(user);
}
@Override
public boolean isLogin(String userName, String passWord) {
boolean flag = false;
for(User user:users){
if(userName.equals(user.getUseName())&&passWord.equals(user.getPassWord())){
flag = true;
}
}
return flag;
}
}
测试类:
import java.util.Scanner;
import com.edu.dao.impl.UserDaoImpl;
import com.edu.domain.User;
public class Test {
public static void main(String[] args) {
int real = (int) (Math.random()*100+1);
UserDaoImpl udi = new UserDaoImpl();
//先创建一个用户操作类对象,来完成一定的操作
//UserDaoImpl udi = new UserDaoImpl();
while(true){
System.out.println("欢迎来到登录注册页面");
System.out.println("1:注册");
System.out.println("2:登录");
System.out.println("3:退出系统");
Scanner sc = new Scanner(System.in);
String line = sc.nextLine();
//注意这里接受数字选择的时候,要用字符串类型来接,因为如果用int类型来接受的话,后面用的是String类型接受,这样会导致程序运行时发生错误,而且编译的时候不会报错,所以一定要切记
switch(line){
case "1" :
System.out.println("欢迎来到注册页面");
System.out.println("请输入你的用户名");
String userName = sc.nextLine();
System.out.println("请输入你的密码");
String passWord = sc.nextLine();
User user = new User(userName,passWord);
udi.regist(user);
System.out.println("注册成功");
break;
case "2":System.out.println("欢迎来到登录页面");
System.out.println("请输入你的用户名");
String intputuserName = sc.nextLine();
System.out.println("请输入你的用户密码");
String intputpassWord = sc.nextLine();
boolean flag = udi.isLogin(intputuserName, intputpassWord);
if(flag){
System.out.println("等录成功");
System.out.println("你现在可以玩一个猜数字小游戏了");
while(true){
System.out.println("请输入你猜的一个在1到100之间的数字");
int guess = sc.nextInt();
if(real>guess){
System.out.println("你猜的数字偏小");
}else if(guess>real){
System.out.println("你猜的数字偏大");
}else if(guess==real){
System.out.println("恭喜你答对了");break;
}
}
}else{
System.out.println("登录失败,请确保你的用户信息正确");
}
break;
case "3": System.out.println("系统即将退出");System.exit(0);
default: System.out.println("您输入有误,系统将自动退出,请重新启动");System.exit(0);
}
}
}
}