JDBC数据库操作 ——简易版银行管理

简易版银行管理(50分)

已知:现有账户表account,创建的SQL语句如下。

create table account(

id int PRIMARY KEY auto_increment,

name varchar(20) not null,

money double not null);

基本要求:

(1)利用面向对象方式实现功能;

(2)利用三层架构实现;

(3)应用事务处理。

功能要求:

(1)开户——增加记录

增加3个账户,姓名分别为:张三、李四、王五,账户初始金额:0元;

开户成功,显示所有账户信息。

(2)销户——删除记录

对姓名为“王五”的账户给予销户。成功操作后,显示所有账户信息。

(3)存钱——修改记录

张三、李四账户分别存入2000元。成功操作后,显示所有账户信息。

(4)取钱——修改记录

张三账户取出1000元,显示张三账户信息。

(5)转账——修改记录

李四给张三转账500元,显示张三和李四账户信息。

(6)查询所有账户信息。

前提:建数据库时我建的表名字为bank

三层架构:
这里写图片描述

Bank.java

package po;

public class Bank {
    private int id;
    private String name;
    private double money;
    public Bank() {
        super();
    }
    public Bank(int id, String name, double money) {
        super();
        this.id = id;
        this.name = name;
        this.money = money;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public double getMoney() {
        return money;
    }
    public void setMoney(double money) {
        this.money = money;
    }
    public String toString() {
        return "Bank [id=" + id + ", name=" + name + ",money=" + money + "]";

    }
}

BaseDao.java

package dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class BaseDao {
    Connection con;
    PreparedStatement pst;
    ResultSet rs;

    public Connection getConn() throws ClassNotFoundException, SQLException {
        // 1 加载驱动
        Class.forName("com.mysql.jdbc.Driver");
        // 2 获得数据库的连接
        Connection con = DriverManager.getConnection(
                "jdbc:mysql://localhost:3306/school?useUnicode=true&characterEncoding=utf-8", "root", "usbw");
        return con;
    }

    public void closeAll() throws SQLException {
        if (rs != null) {
            rs.close();
        }
        if (pst != null) {
            pst.close();
        }
        if (con != null) {
            pst.close();
        }
    }
}

BankDao.java

package dao;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import po.Bank;

public class BankDao extends BaseDao{

    //开户:增加,显示所有账户信息
    public int openBank(Bank bank) throws ClassNotFoundException, SQLException {
        con = getConn();
        String insertSQL = "insert into bank values(null, ?, ?)";
        pst = con.prepareStatement(insertSQL);
        pst.setString(1, bank.getName());
        pst.setDouble(2, bank.getMoney());

        int result = pst.executeUpdate();
        closeAll();

        return result;      
    }


    //销户(给出姓名):删除,成功后显示所有账户信息
    public int delBank(String name) throws ClassNotFoundException, SQLException {
        con = getConn();
        String deleteSQL = "delete from bank where name = ?";
        pst = con.prepareStatement(deleteSQL);
        pst.setString(1, name);

        int result = pst.executeUpdate();
        closeAll();

        return result;
    }


    //存钱(两个人都存):修改,显示所有账户信息。取钱:修改,显示此人的账户信息
    public int updateBank(Bank bank) throws ClassNotFoundException, SQLException {
        con = getConn();
        String updateSQL = "update bank set money=? where name = ?";
        pst = con.prepareStatement(updateSQL);
        pst.setDouble(1, bank.getMoney());
        pst.setString(2, bank.getName());

        int result = pst.executeUpdate();
        closeAll();

        return result;
    }


    //转账:修改,显示两个人的账户信息
    public int transBank(Bank bank1, Bank bank2) throws ClassNotFoundException, SQLException {
        con = getConn();
        String transSQL = "update bank set bank1.money = ?, bank2.money = ? where bank1.name=? and bank2.name = ?";
        pst = con.prepareStatement(transSQL);
        pst.setDouble(1, bank1.getMoney());
        pst.setDouble(2, bank2.getMoney());
        pst.setString(3, bank1.getName());
        pst.setString(4, bank2.getName());

        int result = pst.executeUpdate();
        closeAll();

        return result;
    }


    //查询所有账户信息:查询
    public List<Bank> queryAll() throws ClassNotFoundException, SQLException{
        con = getConn();
        String sql = "select * from bank";
        pst = con.prepareStatement(sql);
        rs = pst.executeQuery();

        List<Bank> list = new ArrayList<Bank>();
        while(rs.next()) {
            Bank acc = new Bank();
            acc.setId(acc.getId());
            acc.setName(acc.getName());
            acc.setMoney(acc.getMoney());

            list.add(acc);
        }
        closeAll();

        return list;
    }


    //根据主键(姓名)查询单条记录
    public Bank queryByName(String name) throws ClassNotFoundException, SQLException {
        con = getConn();
        String sql = "select * from bank from name = ?";
        pst = con.prepareStatement(sql);
        pst.setString(1, name);

        rs = pst.executeQuery();
        Bank bank = null;
        if(rs.next()) {
            bank = new Bank(rs.getInt(1), rs.getString(2), rs.getDouble(3));
        }

        closeAll();
        return bank;
    }
}
Main.java

package aMain;

import java.sql.SQLException;
import java.util.List;

import dao.BankDao;
import po.Bank;

public class Main {

public static void main(String[] args) throws ClassNotFoundException, SQLException {
    BankDao dao = new BankDao();

    //给三个人开户
    Bank bank1 = new Bank(1, "张三", 0);
    Bank bank2 = new Bank(2, "李四", 0);
    Bank bank3 = new Bank(3, "王五", 0);

    int result1 = dao.openBank(bank1);
    int result2 = dao.openBank(bank2);
    int result3 = dao.openBank(bank3);

    if(result1 == 1 && result2 == 1 && result3 == 1) {
        System.out.println("开户成功!");
           //开户成功后查询所有账户信息
        List<Bank> list = dao.queryAll();
        for(Bank bank:list) {
            System.out.println(bank);
        }
        System.out.println("==========这是分割线===========");
    }

    //对“王五”的账户进行销户
    int result4 = dao.delBank("王五");
    if(result4 == 1) {
        System.out.println("销户成功!");
         //销户成功后查询所有账户信息
        List<Bank> list = dao.queryAll();
        for(Bank bank:list) {
            System.out.println(bank);
        }
        System.out.println("==========这是分割线===========");
    }


    //存钱——修改记录:张三、李四账户分别存入2000元。成功操作后,显示所有账户信息。
    Bank bank4 = new Bank(1, "张三", 2000);
    Bank bank5 = new Bank(2, "李四", 2000);
    int result5 = dao.updateBank(bank4);
    int result6 = dao.updateBank(bank5);
    if(result5 == 1 && result6 == 1) {
        System.out.println("存钱成功!");
         //存钱成功后查询所有账户信息
        List<Bank> list = dao.queryAll();
        for(Bank bank:list) {
            System.out.println(bank);
        }
        System.out.println("==========这是分割线===========");
    }

    //取钱——修改记录:张三账户取出1000元,显示张三账户信息。
    Bank bank6 = new Bank(1, "张三", 1000);
    int result7 = dao.updateBank(bank6);
    if(result7 == 1) {
        System.out.println("取钱成功!");
        //取钱成功后显示此账户信息(张三)
        Bank bank7 = dao.queryByName("张三");
        System.out.println(bank7);
    }

    //转账——修改记录:李四给张三转账500元,显示张三和李四账户信息。
    Bank bank8 = new Bank(1, "张三", 1500);
    Bank bank9 = new Bank(2, "李四", 1500);
    int result8 = dao.transBank(bank8, bank9);
    if(result8 == 1) {
        System.out.println("转账成功!");
        //显示张三和李四账户信息
        Bank bank11 = dao.queryByName("张三");
        Bank bank22 = dao.queryByName("李四");
        System.out.println(bank11);
        System.out.println(bank22);
    }

    //查询所有账户信息
    List<Bank> list = dao.queryAll();
    for(Bank bank:list) {
        System.out.println(bank);
    }
    System.out.println("==========程序结束!===========");
}
}

猜你喜欢

转载自blog.csdn.net/gx17864373822/article/details/80189236