ATM机案例3之账户实体类及操作类(二)
ATM机案例3之账户实体类及操作类(二)
目录

一、Account(账户实体类)
点击查看代码
public class Account {
//账户id
private int id;
//用户名字
private String username;
//用户密码
private String password;
//用户性别
private String gender;
//账户状态
private String status = "可用";
//get、set方法作为操作变量的唯一入口
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
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 getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
}
二、AccounDAO(账户操作类)
此类主要实现对账户类的操作;
类中有两个单独的判断账户状态的方法judgeIsNull和judgeIsDelete,
judgeIsNull通过传入的id判断该账号id是否已被注册使用,用于创建账户时的前置。
judgeIsDelete通过传入的id判断该账号id状态是否可用,不可用时代表该账号id已被注销,用于账户登录验证。
login方法实现只有当judgeIsNull和judgeIsDelete两个判断的方法返回值都为false时,表示所登录的账号存在且状态可用,再进行密码的验证。
点击查看代码
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class AccountDAO {
//创建账户
public void createAccount(int id,String name,String password,String gender) {
Account account = new Account();
account.setId(id);
account.setUsername(name);
account.setPassword(password);
account.setGender(gender);
Connection connection = DBUtils.getConnection();
Statement statement = null;
try {
statement = connection.createStatement();
String string = "insert into t_account values(%d,'%s','%s','%s','%s')";
String sql = String.format(string, account.getId(), account.getUsername(),
account.getPassword(), account.getGender(), account.getStatus());
statement.executeUpdate(sql);
System.out.println("注册成功!");
} catch (SQLException e) {
e.printStackTrace();
}finally {
DBUtils.close(statement, connection);
}
}
//删除账户
public void deleteAccount(int id) {
Connection connection = DBUtils.getConnection();
Statement statement = null;
try {
statement.executeUpdate("DELETE FROM T_ACCOUNT WHERE ACCOUNT_ID =" + id);
System.out.println("销户成功!");
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtils.close(statement, connection);
}
}
//登录验证,返回true为验证通过,否则不通过
public boolean login(int id, String password) {
boolean judgement = false;
if (judgeIsNull(id)) {
System.out.println("该账号不存在!");
} else if (judgeIsDelete(id)) {
System.out.println("该账号当前状态不可用!");
} else {
Connection connection = DBUtils.getConnection();
Statement statement = null;
ResultSet resultSet = null;
try {
String pd = null;
statement = connection.createStatement();
String string = "select password from t_account where account_id= " + id;
resultSet = statement.executeQuery(string);
while (resultSet.next()) {
pd = resultSet.getString("password");
}
if (pd.equals(password)) {
judgement = true;
} else {
System.out.println("密码错误请重试!");
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtils.close(resultSet, statement, connection);
}
}
return judgement;
}
//判断该id是否已被创建,返回true表示已被创建,false表示该id未被占用
public boolean judgeIsNull(int number) {
Connection connection = DBUtils.getConnection();
Statement statement = null;
ResultSet resultSet = null;
boolean judgement = false;
try {
int count = 0;
statement = connection.createStatement();
resultSet = statement.executeQuery("select count(1) from T_ACCOUNT where account_id = " + number);
while (resultSet.next()) {
count = resultSet.getInt("count(1)");
}
if (count == 0) {
judgement = true;
} else {
judgement = false;
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtils.close(resultSet, statement, connection);
return judgement;
}
}
//判断status字段是否可用,不可用表示删除状态
public boolean judgeIsDelete(int number) {
Connection connection = DBUtils.getConnection();
Statement statement = null;
ResultSet resultSet = null;
boolean judgement = false;
try {
String status = null;
statement = connection.createStatement();
String string = "select status from t_account where account_id= " + number;
resultSet = statement.executeQuery(string);
while (resultSet.next()) {
status = resultSet.getString("status");
}
if (status.equals("可用")) {
judgement = false;
} else if (status.equals("不可用")) {
judgement = true;
System.out.println("该账号已被删除!状态不可用");
} else {
System.out.println("异常错误");
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtils.close(resultSet, statement, connection);
}
return judgement;
}
}

浙公网安备 33010602011771号