标题说明:
因为使用的是数组,不像使用数据库那样,所以使用的数组要使用其全局变量。注册和登录逻辑都使用方法实现。
目录:
创建实体类
创建逻辑实现类
创建测试方法
创建实体类:
public class Account {
private String accountId;
private String accountName;
private String accountRealName;
private String accountPwd;
private String accountPhone;
private String accountBirthday;
public String getAccountId() {
return accountId;
}
public void setAccountId(String accountId) {
this.accountId = accountId;
}
public String getAccountName() {
return accountName;
}
public void setAccountName(String accountName) {
this.accountName = accountName;
}
public String getAccountRealName() {
return accountRealName;
}
public void setAccountRealName(String accountRealName) {
this.accountRealName = accountRealName;
}
public String getAccountPwd() {
return accountPwd;
}
public void setAccountPwd(String accountPwd) {
this.accountPwd = accountPwd;
}
public String getAccountPhone() {
return accountPhone;
}
public void setAccountPhone(String accountPhone) {
this.accountPhone = accountPhone;
}
public String getAccountBirthday() {
return accountBirthday;
}
public void setAccountBirthday(String accountBirthday) {
this.accountBirthday = accountBirthday;
}
public Account() {
super();
}
public Account(String accountName, String accountPwd) {
super();
this.accountName = accountName;
this.accountPwd = accountPwd;
}
public Account(String accountId, String accountName, String accountRealName, String accountPwd, String accountPhone,
String accountBirthday) {
super();
this.accountId = accountId;
this.accountName = accountName;
this.accountRealName = accountRealName;
this.accountPwd = accountPwd;
this.accountPhone = accountPhone;
this.accountBirthday = accountBirthday;
}
public Account(String accountName, String accountPwd, String accountPhone) {
super();
this.accountName = accountName;
this.accountPwd = accountPwd;
this.accountPhone = accountPhone;
}
创建逻辑实现类
创建全局作用域 存放Student类型的数组
public static Account[] accounts = new Account[25];
为Student数组添加初始数据
static {
accounts[0] = new Account("001","admin","管理员", "123","123555",new Date().toString());
accounts[1] = new Account("002","xiaoming","小红", "123456","123555",new Date().toString());
accounts[2] = new Account("003","xiaoming","小明", "456","123555",new Date().toString());
}
注册逻辑实现
//注册
public boolean register(Account account) {
//判断哪个数组位置是空,如果为空,然后存储该对象
for (Integer i = 0; i < accounts.length; i++) {
//找到数组元素是空的
if(accounts[i] == null) {
//对空的位置赋值
accounts[i] = account;
//1. 注册的元素没有对id进行赋值,需要系统自行赋值
accounts[i].setAccountId("00"+((Integer)(i+1)).toString());
return true;
}
//检查用户名是否存在
if(accounts[i].getAccountName().equals(account.getAccountName())) {
System.out.println("账户已经存在,不能注册");
return false;
}
}
return false;
}
登录逻辑实现
//登录
public boolean login(Account account) {
for (int i = 0; i < accounts.length; i++) {
if (accounts[i] != null && account.getAccountName().equals(accounts[i].getAccountName()) && account.getAccountPwd().equals(accounts[i].getAccountPwd())) {
return true;
}
}
return false;
}
验证码逻辑实现
//验证码
public char[] checkCode() {
char[] code = new char[4];
int j = 0;
while(j < 4) {
int rand = (int) (Math.random()*58+65);
while(true) {
if (rand >= 91 && rand <= 96) {
rand = (int)(Math.random()*58+65);
}
break;
}
code[j] += (char)rand;
j++;
}
return code;
}
AccountDAO总体代码
public class AccountDao {
//成员变量 属性:private修饰,提供set、get方法
public static Account[] accounts = new Account[25];
int length = accounts.length;
static {
accounts[0] = new Account("001","admin","管理员", "123","123555",new Date().toString());
accounts[1] = new Account("002","xiaoming","小红", "123456","123555",new Date().toString());
accounts[2] = new Account("003","xiaoming","小明", "456","123555",new Date().toString());
}
//注册
public boolean register(Account account) {
//判断哪个数组位置是空,如果为空,然后存储该对象
for (Integer i = 0; i < accounts.length; i++) {
//找到数组元素是空的
if(accounts[i] == null) {
//对空的位置赋值
accounts[i] = account;
//1. 注册的元素没有对id进行赋值,需要系统自行赋值
accounts[i].setAccountId("00"+((Integer)(i+1)).toString());
return true;
}
//检查用户名是否存在
if(accounts[i].getAccountName().equals(account.getAccountName())) {
System.out.println("账户已经存在,不能注册");
return false;
}
}
return false;
}
//登录
public boolean login(Account account) {
for (int i = 0; i < accounts.length; i++) {
if (accounts[i] != null && account.getAccountName().equals(accounts[i].getAccountName()) && account.getAccountPwd().equals(accounts[i].getAccountPwd())) {
return true;
}
}
return false;
}
//验证码
public char[] checkCode() {
char[] code = new char[4];
int j = 0;
while(j < 4) {
int rand = (int) (Math.random()*58+65);
while(true) {
if (rand >= 91 && rand <= 96) {
rand = (int)(Math.random()*58+65);
}
break;
}
code[j] += (char)rand;
j++;
}
return code;
}
}
创建测试类
注册操作测试
Scanner sc = new Scanner(System.in);
AccountDao accountDao = new AccountDao();
//注册操作
System.out.println("请输入用户名 真实姓名 密码 电话 生日 ");
Account account = new Account(null,sc.next(),sc.next(),sc.next(),sc.next(),sc.next());
System.out.println(accountDao.register(account)?"注册成功":"注册失败");
System.out.println(account);
登录操作测试
验证码功能测试
//登录操作
//添加验证码功能,在登录之前输入验证码,并比较,如果验证码正确才比较用户名和密码
//验证码
System.out.println("验证码:");
char[] codes = accountDao.checkCode();
for (int i = 0; i < codes.length; i++) {
System.out.print((char)codes[i]);
}
System.out.println();
while(true) {
System.out.println("请输入验证码:");
String code = sc.next();
String checkCodes = String.valueOf(codes);
if(code.equals(checkCodes)) {
System.out.println("验证码正确,进行登录操作");
break;
}else {
System.out.println("错误,请重新输入");
}
}
登录操作测试
//登录
System.out.println("请输入用户名");
String name = sc.next();
System.out.println("请输入密码");
String pwd = sc.next();
Account accountLogin = new Account();
accountLogin.setAccountName(name);
accountLogin.setAccountPwd(pwd);
boolean result = accountDao.login(accountLogin);
if (result) {
System.out.println("登录成功");
}else {
System.out.println("登录失败");
}
总体测试方法:
public class AccountDaoTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
AccountDao accountDao = new AccountDao();
//注册操作
System.out.println("请输入用户名 真实姓名 密码 电话 生日 ");
Account account = new Account(null,sc.next(),sc.next(),sc.next(),sc.next(),sc.next());
System.out.println(accountDao.register(account)?"注册成功":"注册失败");
System.out.println(account);
//
//登录操作
//添加验证码功能,在登录之前输入验证码,并比较,如果验证码正确才比较用户名和密码
//验证码
System.out.println("验证码:");
char[] codes = accountDao.checkCode();
for (int i = 0; i < codes.length; i++) {
System.out.print((char)codes[i]);
}
System.out.println();
while(true) {
System.out.println("请输入验证码:");
String code = sc.next();
String checkCodes = String.valueOf(codes);
if(code.equals(checkCodes)) {
System.out.println("验证码正确,进行登录操作");
break;
}else {
System.out.println("错误,请重新输入");
}
}
//登录
System.out.println("请输入用户名");
String name = sc.next();
System.out.println("请输入密码");
String pwd = sc.next();
Account accountLogin = new Account();
accountLogin.setAccountName(name);
accountLogin.setAccountPwd(pwd);
boolean result = accountDao.login(accountLogin);
if (result) {
System.out.println("登录成功");
}else {
System.out.println("登录失败");
}
}