银行

来源:互联网 发布:qq晒号软件 编辑:程序博客网 时间:2024/04/19 14:39
package com.cntrong.java;import java.util.Date;import java.util.Scanner;import com.cntrong.bean.Log;import com.cntrong.bean.User;import com.cntrong.dao.LogDao;import com.cntrong.dao.UserDao;import com.cntrong.dao.ss;import com.cntrong.jdbc.JDBCTools;//操作类public class Operate {    public static void showMain() {        Scanner  sc = new Scanner(System.in);        System.out.println("*****************************************");        System.out.println("|\t\t银行管理系统\t\t|");        System.out.println("*****************************************");        System.out.println("|\t\t1、开户\t\t\t|");        System.out.println("|\t\t2、存款\t\t\t|");        System.out.println("|\t\t3、取款\t\t\t|");        System.out.println("|\t\t4、查询\t\t\t|");        System.out.println("|\t\t5、修改密码\t\t|");        System.out.println("|\t\t6、转账\t\t\t|");        System.out.println("|\t\t7、销户\t\t\t|");        System.out.println("|\t\t8、退出系统\t\t|");        System.out.println("|_______________________________________|");        System.out.print("请输入您的选择:");        int key =sc.nextInt();        switch (key) {        case 1:            openAccount();            break;        case 2:            save();            break;        case 3:            withdraw();            break;        case 4:            query();            break;       case 5:           change();            break;       case 6:           transfer();            break;       case 7:           deleteAccount() ;            break;       case 8:            System.out.println("谢谢使用!!!");            System.exit(0);               break;        default:            break;        }        showMain();    }    // 销户    private static void deleteAccount() {        // TODO Auto-generated method stub        String type = "销户";        User user = new User();        Log log = new Log();//创建对象        log.setType(type);//赋值        Scanner sc = new Scanner(System.in);//键盘录入        System.out.println("欢迎您来办理销户业务!请根据提示输入");        System.out.println("请输入您的账号:");        int account = sc.nextInt();        log.setAccount(account);        int i = 1;        while (i <= 3) {//判断            System.out.println("请输入密码,你有" + (4 - i) + "次机会!");            String password = sc.next();            Date date = new Date();            log.setDate(date);            if (UserDao.check(account, password)){                UserDao.deletebByAccount(account, 0);                System.out.println("正在销户中。。。。。。。");                System.out.println("销户成功!");                break;            }        log.setAccount(account);            }        }    // 转账    //     private static void transfer() {        String type = "转账";        String type1 = "入账";        Log log = new Log();        Log log1 = new Log();        log.setType(type);        log1.setType(type1);        Scanner sc = new Scanner(System.in);        System.out.println("欢迎您来办理转账业务!请根据提示输入");        System.out.println("请输入您的账号:");        int account = sc.nextInt();        if (UserDao.getBalanceByAccount(account) == 0) {//验证卡号是否存在            System.out.println("没有该用户,请重新输入!");        } else {        log.setAccount(account);        int i = 1;        while (i <= 3) {            System.out.println("请输入密码,你有" + (4 - i) + "次机会!");            String password = sc.next();            // 验证            if (UserDao.check(account, password)) {                System.out.println("请输入要转入的账号:");                int account1 = sc.nextInt();                if (UserDao.getBalanceByAccount(account1) == 0) {                    System.out.println("没有该用户,请重新输入!");                } else {                    log1.setAccount(account1);                    System.out.println("请输入要转入的金额:");                    double money = sc.nextDouble();                    double money1 = UserDao.getBalanceByAccount(account);                    if (money > money1) {                        System.out.println("您的账户余额不足,请重新输入!");                    } else {                        log.setRunMoney(money);                        log.setNewPassword(password);                        log.setOldPassword(password);                        log1.setRunMoney(money);                        log1.setNewPassword(password);                        log1.setOldPassword(password);                        System.out.println("请稍后,正在转账中...");                        UserDao.withdraw(account, money); //调用取款 自己账户减少金额                        System.out.println("恭喜你转账成功!");                        System.out.println("您的余额是:"+ UserDao.getBalanceByAccount(account));                        UserDao.transfer(account1, money); //入账 别人账户增加金额                        // UserDao.getBalanceByAccount(account1);                        Date date = new Date();                        System.out.println("转账日期为:" + JDBCTools.dateToDate(date));                        log.setDate(date);                        log1.setDate(date);                        LogDao.addLog(log);//addLog 增加一条日记记录                        LogDao.addLog(log1);                        break;                    }                }            } else {                if (i >= 3) {                    System.out.println("登录失败,请退出系统!");                    break;                } else {                    System.out.println("密码错误,请重新输入!");                    i++;                }            }        }}    }    private static void change() {        String type = "修改密码";        Log log = new Log();//创建对象        log.setType(type);//赋值        Scanner sc = new Scanner(System.in);//键盘输入        System.out.println("欢迎您来办理密码业务! 请根据提示输入!");        System.out.println("请输入账号:");        int account = sc.nextInt();        log.setAccount(account);        int i = 1;        while (i <= 3) {            System.out.println("请输入密码,您有" + (4 - i) + "次输入机会:");            String passWord = sc.next();            log.setOldPassword(passWord);            log.setNewPassword(passWord);            User s = new User();            if (UserDao.check(account, passWord)) {                System.out.println("请输入新密码:");                String password2 = sc.next();                UserDao.getBalanceByAccount1(account);                log.setNewPassword(password2);                System.out.println("恭喜你密码修改成功!");                System.out.println("您的新密码是:" + password2);                System.out.println("您的余额是:"                        + UserDao.getBalanceByAccount(account));                Date date = new Date();                log.setDate(date);                System.out.println("修改日期是:" + JDBCTools.dateToDate(date));                LogDao.addLog(log);                break;            } else {                if (i >= 3) {                    System.out.println("登录失败,请退出系统!");                    break;                }                System.out.println("密码错误!请再次输入密码!");            }            i++;        }    }    // TODO Auto-generated method stub    /// 取款    private static void withdraw() {        String type = "取款";        Log log = new Log();//创建对象,向数据库内添加信息        log.setType(type);        Scanner sc = new Scanner(System.in);        System.out.println("欢迎您来办理取款业务! 请根据提示输入!");        System.out.println("请输入账号:");        int account = sc.nextInt();             log.setAccount(account);        if (UserDao.getBalanceByAccount(account) == 0) {//验证卡号是否存在            System.out.println("没有该用户,请重新输入!");        } else {                    int i = 1;            while (i <= 3) {                //验证密码,共有三次机会                System.out.println("请输入密码,您有" + (4 - i) + "次输入机会:");                String passWord = sc.next();                log.setOldPassword(passWord);                log.setNewPassword(passWord);                if (UserDao.check(account, passWord)) {//验证密码                    System.out.println("请输入取款金额:");                    double money = sc.nextDouble();                    log.setRunMoney(money);                    //判断余额是否足够                    double money1=0;                    if(money>UserDao.getBalanceByAccount(account)){//验证余额是否足够                                   do{                            System.out.println("余额不足,请重新选择:");                            money1 = sc.nextDouble();                        }while(money1>UserDao.getBalanceByAccount(account));                                UserDao.withdraw(account, money1);                                      System.out.println("恭喜你取款成功!");                            System.out.println("您的余额是:"+ UserDao.getBalanceByAccount(account));                                             Date date = new Date();                            log.setDate(date);                            System.out.println("取款日期是:" + JDBCTools.dateToDate(date));                            LogDao.addLog(log);                            break;                    }else{                        UserDao.withdraw(account, money);                                       System.out.println("恭喜你取款成功!");                        System.out.println("您的余额是:"+ UserDao.getBalanceByAccount(account));                        Date date = new Date();                        log.setDate(date);                        System.out.println("取款日期是:" + JDBCTools.dateToDate(date));                        LogDao.addLog(log);                    }                    break;                } else {                    if (i >= 3) {                        System.out.println("登录失败,请退出系统!");                    break;                }                System.out.println("密码错误!请再次输入密码!");                }                i++;            }        }    }    // 存款    private static void save() {        String type = "存款";        Log log = new Log();        log.setType(type);        Scanner sc = new Scanner(System.in);        System.out.println("欢迎您来办理存款业务! 请根据提示输入!");        System.out.println("请输入账号:");        int account = sc.nextInt();        log.setAccount(account);        if (UserDao.getBalanceByAccount(account) == 0) {//验证卡号是否存在            System.out.println("没有该用户,请重新输入!");        } else {            int i = 1;        while (i <= 3) {            System.out.println("请输入密码,您有" + (4 - i) + "次输入机会:");            String passWord = sc.next();            log.setOldPassword(passWord);            log.setNewPassword(passWord);            if (UserDao.check(account, passWord)) {                System.out.println("请输入存款金额:");                double money = sc.nextDouble();                log.setRunMoney(money);                UserDao.save(account, money);                System.out.println("恭喜你存款成功!");                System.out.println("您的余额是:"                        + UserDao.getBalanceByAccount(account));                Date date = new Date();                log.setDate(date);                System.out.println("存款日期是:" + JDBCTools.dateToDate(date));                LogDao.addLog(log);                break;            } else {                if (i >= 3) {                    System.out.println("登录失败,请退出系统!");                    break;                }                System.out.println("密码错误!请再次输入密码!");            }            i++;        }        }    }    // TODO Auto-generated method stub    // 开户:    private static void openAccount() {        String type = "开户";        //定义Scanner对象进行键盘输入        Scanner sc = new Scanner(System.in);        //创建用户对象        User user = new User();        //创建Log对象 将数据保存到操作日志中        Log log = new Log();        log.setType(type);//将输入的数据保存到操作日志中        System.out.println("欢迎您来开办新账户!请根据系统提示输入!");        System.out.println("请输入姓名:");        String name = sc.next();//键盘输入姓名        user.setUsername(name);        System.out.println("请输入密码:");        String passWord = sc.next();//键盘输入密码        user.setPassword(passWord);        log.setOldPassword(passWord);        log.setNewPassword(passWord);        System.out.println("请输入初始余额:");        double balance = sc.nextDouble();//键盘输入初始余额        user.setBalance(balance);        log.setRunMoney(balance);           //随机自动生成 一个 账户        int account = (int) (Math.random() * 10000);        user.setAccount(account);        log.setAccount(account);//将账户保存到操作日志和表中         //定义日期对象date        Date date = new Date();        user.setDate(date);        log.setDate(date);        System.out.println("请稍后正在开户....");        // 开户        UserDao.open(user);        //让线程等两秒        try {            Thread.sleep(2000);        } catch (InterruptedException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        System.out.println("恭喜开户成功!");        System.out.println("您的账号为:" + account);        System.out.println("您的密码为:" + passWord);        System.out.println("您的开户日期为:" + JDBCTools.dateToDate(date));        LogDao.addLog(log);        showMain();    }    // 查询    private static void query() {        String type = "查询";        Log log = new Log();        log.setType(type);        Scanner sc = new Scanner(System.in);        System.out.println("欢迎您来办理查询业务! 请根据提示输入!");        System.out.println("请输入账号:");        int account = sc.nextInt();        log.setAccount(account);        int i = 1;        while (i <= 3) {            System.out.println("请输入密码,您有" + (4 - i) + "次输入机会:");            String passWord = sc.next();            log.setOldPassword(passWord);            log.setNewPassword(passWord);            if (UserDao.check(account, passWord)) {                System.out.println("恭喜你查询成功!");                System.out.println("姓名:"+account);                System.out.println("您的余额是:"                        + UserDao.getBalanceByAccount(account));                Date date = new Date();                log.setDate(date);                System.out.println("查询日期是:" +JDBCTools.dateToDate(date));                LogDao.addLog(log);                break;            } else {                if (i >= 3) {                    System.out.println("登录失败,请退出系统!");                    break;                }                System.out.println("密码错误!请再次输入密码!");            }            i++;        }ss n=new ss();        n.selectUser(account);    }}

SS

package com.cntrong.dao;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import com.cntrong.bean.User;import com.cntrong.jdbc.JDBCTools;public class ss {    private Connection conn;    private PreparedStatement ps;    private Statement st1;    private ResultSet rs;     public User selectUser(int account){      User st=null;       conn=JDBCTools.getConnection();      String sql="select*from log where account=?";      try {            ps=conn.prepareStatement(sql);            ps.setInt(1, account);            rs=ps.executeQuery();            while(rs.next()){            //  rs.getString("name");                st=new User();                System.out.println("操作类型:"+rs.getString("TYPE"));                System.out.println("操作金额:"+rs.getDouble("runmoney"));                System.out.println("新密码:"+rs.getInt("newpassword"));                System.out.println("旧密码:"+rs.getInt("oldpassword"));                System.out.println("时间:"+rs.getString("DATE"));            }        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }finally{            JDBCTools.getConnection();        }    //返回得到的st 就是在数据库所查到的           return st;     }}

userdao

package com.cntrong.dao;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import com.cntrong.bean.User;import com.cntrong.jdbc.JDBCTools;public class UserDao {    //开户  保存用户的操作     //定义方法 根据你自己的需求完成什么功能    public static void open(User user){        // 定义Connection 对象用来连接数据库        Connection conn = null;        //PrepareStatement是预编译的sql语句对象,sql语句被预编译并保存在对象中。        PreparedStatement ps = null;        //对数据库进行赋值  对应的sql语句 insert into 插入        String sql = "insert into user values(?,?,?,?,?)";        try {            //  连接数据库            conn = JDBCTools.getConnection();            ps = conn.prepareStatement(sql);            //根据返回的数据类型进行对应的接收            ps.setInt(1, user.getAccount());            ps.setString(2, user.getUsername());            ps.setString(3, user.getPassword());            ps.setDouble(4, user.getBalance());            ps.setString(5, JDBCTools.dateToDate(user.getDate()));            //增删该用executeUpdate()方法   ,   查询用executeQuery()方法            ps.executeUpdate();        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }finally{            JDBCTools.close(conn, ps, null);        }    }    //验证密码    public static boolean check(int account,String passWord) {        boolean flag = false;        Connection conn = null;        PreparedStatement ps = null;        ResultSet rs = null;        conn = JDBCTools.getConnection();        String sql = "select * from user where account = ? and password = ?";        try {            ps = conn.prepareStatement(sql);            ps.setInt(1, account);            ps.setString(2, passWord);            rs = ps.executeQuery();//返回的结果集类型  rs获取到结果集            if(rs.next()){                flag = true;            }else{                flag = false;            }        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }finally{            JDBCTools.close(conn, ps, rs);        }        return flag;    }    //取款    public static void withdraw(int account, double money) {        Connection conn = null;        PreparedStatement ps = null;        String sql = "update user set balance = balance - ? where account = ?";        try {            conn = JDBCTools.getConnection();            ps = conn.prepareStatement(sql);            ps.setDouble(1, money);            ps.setInt(2, account);            ps.executeUpdate();        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }finally{            JDBCTools.close(conn, ps, null);        }    }    public static double getBalanceByAccount1(int account){        double balance = 0;        Connection conn = null;        PreparedStatement ps = null;        ResultSet rs = null;        String sql = "select * from user where account = ?";        try {            conn = JDBCTools.getConnection();            ps = conn.prepareStatement(sql);            ps.setInt(1, account);            rs = ps.executeQuery();            if(rs.next()){                balance = rs.getDouble("balance");            }        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }finally{            JDBCTools.close(conn, ps, rs);        }        return balance;    }    //存款    public static void save(int account, double money) {        Connection conn = null;        PreparedStatement ps = null;        String sql = "update user set balance = balance + ? where account = ?";        try {            conn = JDBCTools.getConnection();            ps = conn.prepareStatement(sql);            ps.setDouble(1, money);            ps.setInt(2, account);            ps.executeUpdate();        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }finally{            JDBCTools.close(conn, ps, null);        }    }     //查询某个账号的    public static double getBalanceByAccount(int account){        double balance = 0;        Connection conn = null;        PreparedStatement ps = null;        ResultSet rs = null;        String sql = "select * from user where account = ?";        try {            conn = JDBCTools.getConnection();            ps = conn.prepareStatement(sql);            ps.setInt(1, account);            rs = ps.executeQuery();            if(rs.next()){                balance = rs.getDouble("balance");            }        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }finally{            JDBCTools.close(conn, ps, rs);        }        return balance;    }    //查询    public static void query(int account, double money) {        Connection conn = null;        PreparedStatement ps = null;        String sql = "select *from user set balance ";        try {            conn = JDBCTools.getConnection();            ps = conn.prepareStatement(sql);            ps.setDouble(1, money);            ps.setInt(2, account);            ps.executeQuery();        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }finally{            JDBCTools.close(conn, ps, null);        }    }    public static double getBalanceByAccount2(int account){        double balance = 0;        Connection conn = null;        PreparedStatement ps = null;        ResultSet rs = null;        String sql = "select * from user where account = ?";        try {            conn = JDBCTools.getConnection();            ps = conn.prepareStatement(sql);            ps.setInt(1, account);            rs = ps.executeQuery();            if(rs.next()){                balance = rs.getDouble("balance");            }        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }finally{            JDBCTools.close(conn, ps, rs);        }        return balance;    }//转账   修改数据    public static void transfer(int account, double money) {        Connection conn = null;        PreparedStatement ps = null;        String sql = "update user set balance = balance + ? where account = ?";        try {            conn = JDBCTools.getConnection();            ps = conn.prepareStatement(sql);            ps.setDouble(1, money);            ps.setInt(2, account);            ps.executeUpdate();        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }finally{            JDBCTools.close(conn, ps, null);        }    }//输入一个账号根数据库里面的账号进行对比//如果有就输入密码然后判断密码的对错,密码错就输入三次系统退出,对就往下进行,然后判断是否有余额,有,取出,注销//销户 定义账户余额方法     public static void deletebByAccount(int account,double balance){         Connection conn = null;          PreparedStatement ps = null;         try {             conn=JDBCTools.getConnection();//连接数据库             String sql ="delete from user where account =? ";//sql语句             ps = conn.prepareStatement(sql);             ps.setInt(1, account);//定义第一个问号赋值             ps.executeUpdate();//进行更新数据库            if(balance==0){                 System.out.println("销户成功");             }else{                 System.out.println("请取出余额后再进行销户操作");             }        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }finally{//关闭数据库            JDBCTools.close(conn, ps, null);     }     }}logdao

package com.cntrong.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;

import com.cntrong.bean.Log;
import com.cntrong.jdbc.JDBCTools;

public class LogDao {
//增加一条日志信息
public static void addLog(Log log){
Connection conn = null;
PreparedStatement ps = null;
String sql = “insert into log values(?,?,?,?,?,?)”;

    try {        conn = JDBCTools.getConnection();        ps = conn.prepareStatement(sql);        ps.setInt(1, log.getAccount());        ps.setString(2, log.getType());        ps.setDouble(3, log.getRunMoney());        ps.setString(4, log.getOldPassword());        ps.setString(5, log.getNewPassword());        ps.setString(6, JDBCTools.dateToDate(log.getDate()));        ps.executeUpdate();    } catch (Exception e) {        // TODO Auto-generated catch block        e.printStackTrace();    }finally{        JDBCTools.close(conn, ps, null);    }}

}

0 0
原创粉丝点击