引言
登陆和注册是生活中经常会碰到的问题,无论在使用什么软件时,都会涉及登陆注册的功能,下面我想简单的介绍一下使用集合的方法做一个登陆注册案例的简单过程。
登陆注册
那么,我们要采用面向对象的方法,在登陆注册案例中,会用到哪些类呢?
登陆注册案例中的类:
用户类
成员变量:用户名,密码
成员方法:登陆,注册功能
测试类
main
登陆注册案例中的类的详细分解:
用户类(User):用户名,密码,邮箱,电话,身份证号。。。。— 标准的java描述类(在这里只简单的使用用户名和密码这两个成员变量)
我们应该把对用户的所有的操作抽取出来形成一个类:
用户操作类:注册,登陆
所以定义一个接口:就是定义的登陆和注册的功能,我们之前说过接口是是对类的功能的一种扩展,本质其实是用来定义规则的。
测试类:
main
java中的分包:
com.stu.domain — 标准的java描述类
com.stu.dao – 存放的是接口
com.stu.dao.impl – 存放的是接口实现类
com.stu.util – 对对象进行操作的工具类
com.stu.test – 测试类
也就是说,在敲代码的过程中,有关类要放在对应的包下,如图所示:
在写具体的代码之前,应当对登陆注册做一个自我分析,如下图所示:
下面开始介绍有关代码的实现:
//User
package com.edu.domain;
public class User {
private String userName;
private String password;
public User() {
super();
// TODO Auto-generated constructor stub
}
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;
}
}
//UserDao
package com.stu.dao;
import com.stu.domain.User;
public interface UserDao {
//定义注册功能
public abstract void regist(User user);
//定义登陆功能
public abstract boolean isLogin(String userName,String password);
}
//UserDaoImpl
package com.stu.dao.impl;
import java.util.ArrayList;
import com.stu.dao.UserDao;
import com.stu.domain.User;
//用户操作类
public class UserDaoImpl implements UserDao{
//在这里做一个基于集合的登录和注册,相当与接收到用户信息存储到集合,登陆的时候从集合中查找用户信息
ArrayList<User> users= new ArrayList<User>();
@Override
public void regist(User user) {
//接收到的用户对象存储到集合中
users.add(user);
}
@Override
public boolean isLogin(String userName, String password) {
//登陆:遍历集合,看集合中是否存在前面传递过来的用户名和密码信息,如果存在返回true,如果不存在返回false
boolean flag=false;
for(User user:users){
if(userName.equals(user.getUserName())&&password.equals(user.getPassword())){
flag=true;
break;
}
}
return flag;
}
}
//Teat
package com.stu.test;
import java.util.Scanner;
import com.stu.dao.impl.UserDaoImpl;
import com.stu.domain.User;
public class Test {
public static void main(String[] args) {
while(true){
//提示用户目前是需要登录还是需要注册还是需要退出呢
System.out.println("欢迎来到登陆注册:");
System.out.println("1、注册");
System.out.println("2、登陆");
System.out.println("3、退出");
//创建一个用户操作类对象
UserDaoImpl udi=new UserDaoImpl();
//创建键盘录入对象获取键盘录入信息
Scanner sc =new Scanner (System.in);
System.out.print("请输入你的选择:");
String choice =sc.nextLine();
//使用switch进行判断
switch(choice){
case "1":
System.out.println("欢迎来到登录注册页面:");
System.out.println("请输入你的用户名:");
String userName=sc.nextLine();
System.out.println("请输入你的密码:");
String password=sc.nextLine();
//将用户名和密码封装成一个user对象
User user=new User(userName,password);
//调用用户操作类对象的注册方法
udi.regist(user);
System.out.println("注册成功");
break;
case "2":
System.out.println("欢迎来到登录注册页面:");
System.out.println("请输入你的用户名:");
String inputUserName=sc.nextLine();
System.out.println("请输入你的密码:");
String inputPassword=sc.nextLine();
//调用用户操作类对象的登陆方法
boolean flag=udi.isLogin(inputUserName, inputPassword);
if(flag){
System.out.println("登陆成功");
}
else{
System.out.println("登陆失败");
}
break;
case "3":
default:
//输入3或者其他的选项,全部退出系统
System.exit(0);
break;
}
}
}
}
以上为代码的完整部分,编译运行后如下:
欢迎来到登陆注册:
1、注册
2、登陆
3、退出
请输入你的选择:1
欢迎来到登录注册页面:
请输入你的用户名:
admin
请输入你的密码:
admin
注册成功
欢迎来到登陆注册:
1、注册
2、登陆
3、退出
请输入你的选择:2
欢迎来到登录注册页面:
请输入你的用户名:
admin
请输入你的密码:
admin
登陆失败
欢迎来到登陆注册:
1、注册
2、登陆
3、退出
请输入你的选择:3