银行
来源:互联网 发布: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