银行管理系统--使用JAVA+JDBC对数据库的数据进行增加、修改、删除、查询等操作

 

 BankAccountDaoImpl部分:

package dao.impl;
import dao.IBankAccountDao;
import dao.util.BaseDao;
import model.BankAccount;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class BankAccountDaoImpl implements IBankAccountDao {
    Date now = new Date();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
    String currentTime = sdf.format(now);

    @Override
    public int insertAccount(String name, String pwd, int advanceMoney,int cardNum) {
        int insertSuccess = 0;
        Connection connection = BaseDao.getConnection();
        PreparedStatement ps = null;
        try {
            String sql = "insert into bankaccount values(0,?,?,null,?,?,?)";
            ps = connection.prepareStatement(sql);
            ps.setString(1,name);
            ps.setString(2,pwd);
            ps.setInt(3,advanceMoney);
            ps.setString(4,currentTime);
            ps.setInt(5,cardNum);
            insertSuccess = ps.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return insertSuccess;
    }

    @Override
    public List<BankAccount> getAllAccount() {
        List<BankAccount> accountList = new ArrayList<>();
        Connection connection = BaseDao.getConnection();
        PreparedStatement ps = null;
        ResultSet rs = null;
        try {
            String sql = "select cardID, customerName, password, oldPassword, balance, openDate,cardNum from bankaccount";
            ps = connection.prepareStatement(sql);
            rs = ps.executeQuery();
            while(rs.next()){
                BankAccount bankAccount = new BankAccount();
                bankAccount.setCardID(rs.getInt("cardID"));
                bankAccount.setCustomerName(rs.getString("customerName"));
                bankAccount.setPassword(rs.getString("password"));
                bankAccount.setCustomerName(rs.getString("oldPassword"));
                bankAccount.setBalance(rs.getInt("balance"));
                bankAccount.setOpenDate(rs.getString("openDate"));
                bankAccount.setCardNum(rs.getInt("cardNum"));
                accountList.add(bankAccount);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            BaseDao.closeAll(connection,ps,rs);
        }
        return accountList;
    }

    @Override
    public int addMoney(int deposotMoney,int cardNum) {
        Connection connection = BaseDao.getConnection();
        PreparedStatement ps = null;
        int addMoneySuccess = 0;
        try {
            String sql = "update bankaccount set balance=balance + ? where cardNum = ?";
            ps = connection.prepareStatement(sql);
            ps.setInt(1,deposotMoney);
            ps.setInt(2,cardNum);
            addMoneySuccess = ps.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            BaseDao.closeAll(connection,ps,null);
        }
        return addMoneySuccess;
    }

    @Override
    public int reduceMoney(int takeMoney, int cardNum) {
        Connection connection = BaseDao.getConnection();
        PreparedStatement ps = null;
        int reduceMoneySuccess = 0;
        try {
            String sql = "update bankaccount set balance=balance - ? where cardNum = ?";
            ps = connection.prepareStatement(sql);
            ps.setInt(1,takeMoney);
            ps.setInt(2,cardNum);
            reduceMoneySuccess = ps.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            BaseDao.closeAll(connection,ps,null);
        }
        return reduceMoneySuccess;
    }

    @Override
    public int changePwd(int cardNum, String newPwd) {
        Connection connection = BaseDao.getConnection();
        PreparedStatement ps = null;
        int changeSuccess = 0;
        try {
            String sql = "update bankaccount set password = ? where cardNum = ?";
            ps = connection.prepareStatement(sql);
            ps.setString(1,newPwd);
            ps.setInt(2,cardNum);
            changeSuccess = ps.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            BaseDao.closeAll(connection,ps,null);
        }
        return changeSuccess;
    }

    @Override
    public int closeAccount(int cardNum) {
        Connection connection = BaseDao.getConnection();
        PreparedStatement ps = null;
        int closeSuccess = 0;
        try {
            String sql = "delete from bankaccount where cardNum = ?";
            ps = connection.prepareStatement(sql);
            ps.setInt(1,cardNum);
            closeSuccess = ps.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            BaseDao.closeAll(connection,ps,null);
        }
        return closeSuccess;
    }

    @Override
    public BankAccount selectAccount(int cardNum) {
        Connection connection = BaseDao.getConnection();
        PreparedStatement ps = null;
        ResultSet rs = null;
        BankAccount bankAccount = null;
        try {
            String sql = "select cardID,customerName,password,balance,openDate,cardNum from bankaccount where cardNum = ?";
            ps = connection.prepareStatement(sql);
            ps.setInt(1,cardNum);
            rs = ps.executeQuery();
            while(rs.next()){
                bankAccount = new BankAccount();
                bankAccount.setCardID(rs.getInt("cardID"));
                bankAccount.setCustomerName(rs.getString("customerName"));
                bankAccount.setPassword(rs.getString("password"));
                bankAccount.setBalance(rs.getInt("balance"));
                bankAccount.setOpenDate(rs.getString("openDate"));
                bankAccount.setCardNum(rs.getInt("cardNum"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            BaseDao.closeAll(connection,ps,rs);
        }
        return bankAccount;
    }
}

实现:

package service.impl;

import dao.IBankAccountDao;
import dao.IBankRecordDao;
import dao.impl.BankAccountDaoImpl;
import dao.impl.BankRecordDaoImpl;
import model.BankAccount;
import service.IBankAccountService;
import service.IBankRecordService;

import java.util.List;
import java.util.Scanner;

public class BankAccountServiceImpl implements IBankAccountService {
    Scanner input = new Scanner(System.in);
    IBankAccountDao bankAccountDao = new BankAccountDaoImpl();
    int cardNum;
    IBankRecordDao bankRecordDao = new BankRecordDaoImpl();
    IBankRecordService bankRecordService = new BankRecordServiceImpl();
    BankAccount bankAccount = null;

    /**
     * 登录菜单页面
     * @return 返回用户的选择
     */
    public int menu(){
        System.out.println("*********************************************");
        System.out.println("\t\t\t\t银行管理系统");
        System.out.println("*********************************************");
        System.out.println("\t\t\t\t1.开户");
        System.out.println("\t\t\t\t2.登录");
        System.out.println("\t\t\t\t3.退出");
        System.out.println("*********************************************");
        System.out.println("请选择服务种类:");
        int firstmenuChoose = input.nextInt();
        return firstmenuChoose;
    }

    /**
     * 子菜单
     * @return 返回用户的选择
     */
    public int secondMenu(){
        System.out.println("\t\t\t\t1.存钱");
        System.out.println("\t\t\t\t2.取钱");
        System.out.println("\t\t\t\t3.查询账户余额");
        System.out.println("\t\t\t\t4.查询交易记录");
        System.out.println("\t\t\t\t5.转账");
        System.out.println("\t\t\t\t6.修改密码");
        System.out.println("\t\t\t\t7.注销账户");
        System.out.println("\t\t\t\t8.退出");
        System.out.println("请选择要进行的业务:");
        int secondMenuChoose = input.nextInt();
        return secondMenuChoose;
    }

    public void start() {
        int firstmenuChoose = menu();
        switch (firstmenuChoose) {
            case 1:
                addAccount();
                start();
                break;
            case 2:
                cardNum = login();
                start02();
                break;
            case 3:
                System.exit(0);
                break;
            default:
                System.out.println("输入错误,请重新输入!");
                start();
        }
    }

    public void start02(){
        int secondMenuChoose = secondMenu();
        switch(secondMenuChoose){
            case 1:
                addMoney(cardNum);
                start02();
                break;
            case 2:
                outputMoney(cardNum);
                start02();
                break;
            case 3:
                selectBalance(cardNum);
                start02();
                break;
            case 4:
                bankRecordService.showAllRecord(cardNum);
                start02();
                break;
            case 5:
                transferAccount(cardNum);
                start02();
                break;
            case 6:
                changePwd(cardNum);
                start();
                break;
            case 7:
                closeAccount(cardNum);
                start();
                break;
            case 8:
                start();
                break;
            default:
                System.out.println("输入错误,请重新输入:");
                start();
        }
    }
    @Override
    public void addAccount() {
        boolean flag = false;
        String password = null;
        System.out.println("*********************************************");
        System.out.println("请输入姓名:");
        String name = input.next();

        while (!flag ) { //验证两次输入密码是否一致
            System.out.println("请输入密码:");
            password = input.next();
            System.out.println("请再次输入密码:");
            String password_define = input.next();
            if (password.equals(password_define)) {
                System.out.println("请缴纳预存金额(元)");
                int advanceMoney = input.nextInt();
                int cardNum1 = (int) (Math.random() * 100 + 1);
                int addSuccess = bankAccountDao.insertAccount(name,password,advanceMoney,cardNum1);
                bankRecordDao.openAccountRecord(cardNum1,advanceMoney);
                if(addSuccess > 0){
                    System.out.println("开户成功!");
                    System.out.println("您的卡号为:" + cardNum1);
                    flag = true;
                }
            } else {
                System.out.println("您两次输入的密码不匹配");
            }
        }
    }

    @Override
    public int login() {
        System.out.println("**************用户登录界面*****************");
            System.out.println("请输入卡号:");
            int cardNumInput = input.nextInt();
            System.out.println("输入密码:");
            String loginPassword = input.next();
            bankAccount = bankAccountDao.selectAccount(cardNumInput);
            if(bankAccount != null){
                if(bankAccount.getPassword().equals(loginPassword)){
                    System.out.println("登陆成功!");
                    System.out.println("欢迎您 "+bankAccount.getCustomerName());
                }else{
                    System.out.println("用户名或密码错误,请重新输入!");
                    login();
                }
            }else{
                System.out.println("卡号不存在,请重新输入:");
                login();
            }

            return cardNumInput;
    }

    @Override
    public void addMoney(int cardNum) {
        System.out.println("请输入要存的金额:");
        int deposotMoney = input.nextInt();
        int addMoneySuccess = bankAccountDao.addMoney(deposotMoney,cardNum);
        if( addMoneySuccess > 0){
            System.out.println("存款成功");
            bankRecordService.recordAddMoney(cardNum,deposotMoney);
//            System.out.println("您存储的金额为:"+deposotMoney+"元");
//            int balance = bankAccountDao.selectBalance(cardID);
//            System.out.println("您账号中现有金额为:"+balance+"元");
        }
    }

    @Override
    public void outputMoney(int cardNum) {
            System.out.println("请输入要取的金额:");
            int takeMoney = input.nextInt();
            if (takeMoney % 100 == 0  && takeMoney >= 100){
                 bankAccount = bankAccountDao.selectAccount(cardNum);
                if(takeMoney <= bankAccount.getBalance()){
                    int reduceMoneySuccess = bankAccountDao.reduceMoney(takeMoney,cardNum);
                    if(reduceMoneySuccess > 0){
                        System.out.println("取款成功");
                        bankRecordService.recordTakeMoney(cardNum,takeMoney);
                    }
                }else {
                    System.out.println("余额不足!");
                    outputMoney(cardNum);
                }
            }else{
                System.out.println("金额不得小于100,且需为100的整数倍");
                outputMoney(cardNum);
            }
        }

    @Override
    public void selectBalance(int cardNum) {
        bankAccount = bankAccountDao.selectAccount(cardNum);
        System.out.println("账户余额为:"+bankAccount.getBalance());
    }

    @Override
    public void transferAccount(int cardNum) {
        System.out.println("请输入要转到的账户:");
        int receiveCardID = input.nextInt();
        System.out.println("请输入要转的金额:");
        int Money = input.nextInt();
        bankAccount = bankAccountDao.selectAccount(cardNum);
        if(bankAccount != null){
            bankAccountDao.reduceMoney(Money,cardNum);
            bankAccountDao.addMoney(Money,receiveCardID);
            System.out.println("转账成功");
            bankRecordService.recordTransferMoney(cardNum,Money);
        }else{
            System.out.println("抱歉!您输入的账户不存在");
            transferAccount(cardNum);
        }
    }

    @Override
    public void changePwd(int cardNum) {
        System.out.println("请输入旧密码:");
        String oldPwd = input.next();
        bankAccount = bankAccountDao.selectAccount(cardNum);
        if(bankAccount.getPassword().equals(oldPwd)){
            System.out.println("请输入新密码:");
            String newPwd01 = input.next();
            System.out.println("请确认新密码:");
            String newPwd = input.next();
            if(newPwd01.equals(newPwd)){
                bankAccountDao.changePwd(cardNum,newPwd);
                bankRecordService.recordChangePwd(cardNum);
                System.out.println("修改密码成功");
                System.out.println("请重新登录");
            }else{
                System.out.println("您输入的密码不正确,请重新输入:");
                changePwd(cardNum);
            }
        }else {
            System.out.println("您输入的密码不正确,请重新输入:");
            changePwd(cardNum);
        }
    }

    @Override
    public void closeAccount(int cardNum) {
        bankAccount = bankAccountDao.selectAccount(cardNum);
        int closeSuccess = bankAccountDao.closeAccount(cardNum);
        if(closeSuccess > 0 ){
            System.out.println("账户注销成功,退返金额:"+bankAccount.getBalance());
        }
    }
}
  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为你提供一些关于Java教务管理系统数据库设计的建议。 首先,你需要定义数据库模式,包括表和表之间的关系。以下是可能涉及到的表: 1. 学生表:包含学生的基本信息,如学号、姓名、性别、年龄、出生日期、班级等。 2. 课程表:包含课程的基本信息,如课程号、课程名称、学分等。 3. 成绩表:包含学生的成绩信息,包括学生学号和所选的课程号以及成绩。 4. 教师表:包含教师的基本信息,如工号、姓名、性别、联系方式等。 5. 班级表:包含班级的基本信息,如班级号、班级名称、班主任等。 6. 选课表:包含学生选课的信息,包括学生学号和所选的课程号。 7. 教师授课表:包含教师授课的信息,包括教师工号和所授的课程号。 在设计完表之后,你需要考虑表之间的关系。以下是可能的关系: 1. 学生表和班级表之间的一对多关系,一个班级可以有多个学生,但每个学生只能属于一个班级。 2. 学生表和成绩表之间的一对多关系,一个学生可以有多个成绩,但每个成绩只能属于一个学生。 3. 课程表和成绩表之间的一对多关系,一个课程可以有多个成绩,但每个成绩只能属于一个课程。 4. 教师表和教师授课表之间的一对多关系,一个教师可以授多门课程,但每门课程只能由一个教师授课。 5. 课程表和选课表之间的多对多关系,一个学生可以选多门课程,一个课程可以被多个学生选。 最后,你需要使用JDBC和SQL Server来实现你的数据库。你可以使用JDBC来连接数据库,并使用SQL语句来创建表、插入数据操作。在你的Java代码中,你可以使用Java对象来表示数据库中的表和关系,并使用JDBCJava对象映射到数据库中的表。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值