集合实现用户登录注册案例

来源:互联网 发布:电脑版ftp 软件 编辑:程序博客网 时间:2024/06/15 09:50

 用户登陆注册案例



使用面向对象思想的特点?
符合我们正常的思想行为习惯
1)拿到一个需求:当前这个需求有哪些类:UML语言:名词提取法
2)每一个类中又有哪些功能
3)类与类之间的关系





分析:当前需求中有哪些类?
1)用户类
用户类中又有哪些东西呢?
成员变量:
构造方法:
成员方法:setXxx()/GetXXx()

如果用户类比较多,为了防止代码的量大,就将用户类又分为具体的两个类:
用户描述类:用户名,用户密码等等....
用户操作类:
登陆
注册


2)测试类
就是测试用户类的

测试类和用户类(用户描述类和用户操作类)之间的关系:
在测试类:创建用户类的对象或者创建用户操作类对象,调用每个类中的功能

实际开发中:
1)按照模块划分
2)按功能划分
3)先按模块划分,在按照功能划分

当前需求:登陆和 注册:按照功能划分

实际开发中:如何进行包的命名:公司的域名反写:(字母小写)
用户描述类包:org.westos.user;
用户操作接口包:org.westos.dao;---------->接口:------>抽象方法
用户操作实现类的包:org.westos.dao.impl----->实现类
用户测试类包:org.westos.test;

代码:

1.用户类

package org.westos.user;
/**
 * 
 * 这是用户信息类,描述了用户的信息
 * @author Apple
 * @version V1.0
 * */
public class User {
/**
* 成员变量

* */
private String username ;
private String password;


public User() {
super();
}


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;
}



}

2. 接口:登录和注册

package org.westos.dao;


import org.westos.user.User;


/**
 * 这是用户操作类的接口:登录和注册
 * @author Beibei
 * @version V1.0
 *
 */
public interface UserDao {

/**
 * 这是用户登录操作
 * @param username
 *         用户名
 * @param  password
 *         密码
 * @return
 * return表示的是登录是否成功
 */
    public abstract boolean isLogin(String username,String password);
    /**
     * 这是用户注册操作
     * @param User
     *        需要注册的用户
     */
     public abstract void regist(User user);
}  

3。子实现类

package org.westos.dao.impl;


import java.util.ArrayList;


import org.westos.dao.UserDao;
import org.westos.user.User;


/**
 * 这是用户操作的接口实现类
 * @author Beibei
 * @version V1.0
 *
 */
public  class UserDaoImpl implements UserDao {
private static ArrayList<User> array=new ArrayList<User>();
//登录功能
public boolean isLogin(String username,String password){
//注册完毕用户才能登录,用户注册的信息将储存在集合中,需要遍历集合
//遍历集合前,先要创建ArrayList并且定义一个标记
//为了让多个功能共同使用一个集合调用对象,所以将集合对象定义到成员变量中
//为了 不让外界看到,用private修饰
//为了让两个对象共用一个集合,用static修饰
boolean flag=false;
//增强for遍历,获取每一个信息
for(User u:array){
//使用if判断功能,如果输入的用户名和密码与注册的内容一致则登录成功,否则给出提示
if(u.getUsername().equals(username)&&u.getPassword().equals(password)){
flag=true;
break;
}
}
return flag;
}
//注册功能
public void regist(User user){
array.add(user);
}
}

4.玩游戏

package org.westos.game;


import java.util.Scanner;


public class GuessNumberGame {
//构造方法私有
public GuessNumberGame(){
}
//静态方法
public static void show(){
//定义一个随机数
int number=(int) (Math.random()*100+1);
//定义统计变量
int count=0;
//为了多次循环
while(true){

//键盘录入您要猜的数字
Scanner sc=new Scanner(System.in);
System.out.println("请输入您要才的数字");
int x=sc.nextInt();
count++;

if(x>number){
System.out.println("您猜的数字"+x+"大了");
  }else if(x<number){
System.out.println("您猜的数字"+x+"小了");
}else{
System.out.println("恭喜您第"+count+"次猜对了");
    break;
}
}

}
}

5.测试类

package org.westos.test;


import java.util.Scanner;


import org.westos.dao.UserDao;
import org.westos.dao.impl.UserDaoImpl;
import org.westos.game.GuessNumberGame;
import org.westos.user.User;


/**
 * 用户登录注册案例的测试
 * @author Beibei
 * @version V1.0
 *
 */
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  退出");
//创建键盘录入对象
Scanner sc=new Scanner(System.in);
//为了让同一个对象调用不同的功能,将该对象定义在switch语句的外面
UserDao ud=new UserDaoImpl();
//接受并录入数据
System.out.println("请输入您的选择");
String choice=sc.nextLine();
switch(choice){
case"1":
System.out.println("-------欢迎来到登录界面-------");
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.show();
System.out.println("还继续玩么?y/n");
}else{
break;
}
}
System.out.println("谢谢使用,欢迎下次再来");
System.exit(0);
break;
}else{
System.out.println("用户名和密码错误");
}
case"2":
System.out.println("-------欢迎来到注册界面-------");
System.out.println("请输入用户名");
String newUsername=sc.nextLine();
System.out.println("请输入密码");
String newPassword=sc.nextLine();
//将信息封装到User中
User user=new User();
user.setUsername(newUsername);
user.setPassword(newPassword);
//调用ud对象的注册功能
ud.regist(user);
System.out.println("注册成功");
break;
case"3":
default:
System.out.println("谢谢使用,欢迎下次光临");
System.exit(0);
break;

}
   }
 }
}