1. 程式人生 > 其它 >ATM機案例3之賬戶實體類及操作類(二)

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

}
未完