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

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

目录
image

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

}
未完
posted @ 2021-11-14 19:32  边缘气息  阅读(120)  评论(0)    收藏  举报