ATM機案例3之賬戶實體類及操作類(二)
阿新 • • 發佈:2021-11-14
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; } }