黑马程序员技术交流社区
标题:
Java实现登录、注册(数组存储数据)
[打印本页]
作者:
STARlove
时间:
2015-8-26 00:10
标题:
Java实现登录、注册(数组存储数据)
用户登录注册案例分析
需求:
编写一个系统,需要如下功能:
1,用户注册
注册完成后,保存起来,方便下次登录。
2,用户登录
登录成功,提示登录成功
登录失败,提示三次以后加入黑名单
思路:
1,几个类以及类的成员
用户类:
属性:账户、密码
行为:getters/setters
用户操作类:
登录 注册
用户测试类:
属性:无
行为:main、测试登录以及注册功能
2,类之间的关系
用户操作类:
创建用户对象、并且对该对象进行操作
用户测试类:
创建用户操作类对象,并且对该对象中的方法进行测试(期间或许会用到基本用户类对象)
通过比较,我们的用户登录注册最终选择按操作分:
分包:
cn.itcast.pojo一个简单的实体类
cn.itcasst.dao操作接口
cn.itcast.dao.impl操作的具体实现
cn.itcast.test测试
注意:
写方法的时候,如果参数超过三个,一般传递对象
复制代码
package cn.itcast.test;
import java.util.Scanner;
//import cn.itcast.dao.UserDao;
import cn.itcast.dao.impl.UserDaoImpl;
import cn.itcast.pojo.User;
public class UserTest {
/**
* @param args
*
* @param 登录测试
*
* @param 注册测试
*/
public static void main(String[] args) {
while (true) {
System.out.println("欢迎来到itcast");
System.out.print("1:登录\t");
System.out.print("2:注册\t");
System.out.println("3: 退出");
System.out.println("请根据数字进行选择:");
Scanner sc = new Scanner(System.in);
String line = sc.nextLine();
switch (line) {
case "1":
System.out.println("欢迎来到登录界面!");
// 键盘录入信息
System.out.print("请输入用户名:");
String username = sc.nextLine();
System.out.print("请输入密码:");
String password = sc.nextLine();
/*
* 多态用法 UserDao ud = new UserDaoImpl(); 具体类用法
*/
UserDaoImpl udi = new UserDaoImpl();
boolean flag = udi.isLogin(username, password);
if (flag) {
System.out.println("欢迎来到英雄联盟!");
System.exit(0);
} else {
System.out.println("登录失败,即将返回主界面!!!");
}
break;
case "2":
System.out.println("欢迎来到注册界面");
// 键盘录入用户信息
System.out.println("请输入用户名:");
String newUsername = sc.nextLine();
// 此处可以加入判断,判断用户名是否已经存在、邮箱、电话都可以执行此操作。
System.out.println("请输入密码:");
String newPassword = sc.nextLine();
System.out.println("请输入邮箱:");
String newEmail = sc.nextLine();
System.out.println("请输入电话:");
String newPhone = sc.nextLine();
// 把数据用对象进行封装
User user = new User();
user.setUsername(newUsername);
user.setPassword(newPassword);
user.setEmail(newEmail);
user.setPhone(newPhone);
// 创建用户操作类对象
UserDaoImpl newUdi = new UserDaoImpl();
// 调用注册方法
newUdi.regist(user);
System.out.println("注册成功");
break;
case "3":
System.out.println("谢谢你的使用");
System.exit(0);
break;
default:
System.out.println("输入有误,返回主界面!!!");
break;
}
}
}
}
复制代码
package cn.itcast.pojo;
public class User {
private String username;
private String password;
private String email;
private String phone;
public User() {
super();
// TODO Auto-generated constructor stub
}
public User(String username, String password, String email, String phone) {
super();
this.username = username;
this.password = password;
this.email = email;
this.phone = phone;
}
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;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "User [username=" + username + ",password=" + password
+ ",email=" + email + ",phone" + phone + "]";
}
}
复制代码
package cn.itcast.dao;
import cn.itcast.pojo.User;//不导包。User不能使用
/**
* 用户接口操作
*
* @author s-star
*
*/
public interface UserDao {
/**
* 这是用户登录的功能
*
* @param username
* 用户名
* @param password
* 密码
* @return 返回登录是否成功
*/
public abstract boolean isLogin(String username,String password);
/**
* 这是用户注册的功能
*
* @param user
* 要注册的用户
*/
public abstract void regist(User user);
}
复制代码
package cn.itcast.dao.impl;
//import java.util.ArrayList;
//import java.util.Collection;
import cn.itcast.dao.UserDao;
import cn.itcast.pojo.User;
/**
* 用户操作类实现
*
* @author s-star 如果是注册一个用户,用User保存即可。 但是,注册肯定不止一个用户
* 目前,我们学过的能够存储的:对象,对象数组。通过分析,我们最终选择对象数组。 问题:
* 用对象数组,就得定义数组;定义数组,就得知道数组长度。 所以,对象数组不够好,选择集合。 不过还没学,只能用对象数组,
* 自己固定一个长度:5.
*/
public class UserDaoImpl implements UserDao {
// 定义成员变量数组
private static User[] users = new User[5];
private static int index = 0;
// Collection c = new ArrayList();
//
// User users = new User();
@Override
public boolean isLogin(String username, String password) {
/*
* 遍历数组,获取到每一个对象, 然后再拿着对象的用户名和密码 和传递过来的用户名和密码进行比较
*/
boolean flag = false;
for (int i = 0; i < users.length; i++) {
User user = users[i];
// 判断是否为null
if (user != null) {
if (user.getUsername().equals(username)
&& user.getPassword().equals(password)) {
flag = true;
break;
}
}
}
return flag;
}
@Override
public void regist(User user) {
users[index++] = user;
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2