银行交易系统 BankSystemFunction

package jdbc.eduask.banksystem;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Random;
import java.util.Scanner;

import oracle.net.aso.p;

/*
*
*/
//测试oracle数据库Myeclipse;
public class BankSystemFunction {
// 开户功能;
/*
* 判断开户金额-产生一个随机号-添加客户表信息-添加银行卡信息-添加开卡信息到交易表-开卡成功;
*/
public static void openAnAccount(Connection conn)
throws Exception {
System.out.println("你好!欢迎进入开卡业务!请认真填写如下信息!");
Scanner openInput = new Scanner(System.in);
System.out.println("请输入你的开卡金额");
int openMoney = openInput.nextInt();
if (openMoney >= 10) {
// 产生一随机数 1-1000;
int numberRandom = (int) (Math.random() * 1000 + 1);
System.out.println("-------------请填写客户表信息-------------");
System.out.println("请输入你的用户名");
String clientName = openInput.next();
System.out.println("请输入省份证号码");
String PID = openInput.next();
System.out.println("请输入你的性别");
String sex = openInput.next();
System.out.println("请输入你的出生日期");
String birthday = openInput.next();
Calendar cal = Calendar.getInstance();
// 日期类
java.sql.Timestamp timestampnow = new java.sql.Timestamp(
cal.getTimeInMillis());// 转换成正常的日期格式
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
ParsePosition pos = new ParsePosition(0);
java.util.Date current = formatter.parse(birthday, pos);
timestampnow = new java.sql.Timestamp(current.getTime());
System.out.println("请输入你的籍贯");
String myNative = openInput.next();
System.out.println("请输入你的家庭地址");
String address = openInput.next();
System.out.println("请输入你的联系电话");
String telephone = openInput.next();
String sql = "insert into clientInfo values(?,?,?,?,?,?,?,?)";
PreparedStatement ps=null;
ps = conn.prepareStatement(sql);
ps.setObject(1, numberRandom);
ps.setObject(2, clientName);
ps.setObject(3, PID);
ps.setObject(4, sex);
ps.setObject(5, timestampnow);
ps.setObject(6, myNative);
ps.setObject(7, address);
ps.setObject(8, telephone);
boolean isInserted = ps.execute();// 执行语句

System.out.println("-------------请填写银行卡信息-------------");
// 银行卡号随机生成8位数字,作为用户的卡号;
int cardID = new Random().nextInt(99999999);
;
String newCardID = String.valueOf(cardID);
System.out.println("请输入你的存款类型");
String savingType = openInput.next();
System.out.println("请设置你的银行卡密码");
String password = openInput.next();
String sql1 = "insert into cardInfo (cardID,savingType,password) values('"
+ newCardID + "','" + savingType + "','" + password + "')";
ps = conn.prepareStatement(sql1);
ResultSet rs = ps.executeQuery(sql1);
System.out.println("-----------客户信息读取检查进行中-----------");
System.out.println("请耐心等待···············");
for (int i = 0; i < 3; i++) {
Thread.sleep(1000);
}
// 交易流水号;
int transID = new Random().nextInt(99999999);
;
// 获取系统时间,
String sql2 = "insert into transInfo (transID,cardID) values('"
+ transID + "','" + newCardID + "')";
ps = conn.prepareStatement(sql2);
ResultSet rs1 = ps.executeQuery(sql2);
System.out.println("-----------开户成功-----------");
} else {
System.out.println("开卡失败,开卡金额不能小于10元");
}
}

// 存款取款;
/*
* 判断卡号是否存在,判断卡号是否挂失,
*/
public static void depositWithDrawsls(Connection conn)
throws Exception {
Scanner input = new Scanner(System.in);
System.out.println("请输入你的卡号");
String cardID = input.next();
System.out.println("请输入你的密码");
String password = input.next();
String sql = "select count(*) from cardInfo where cardID=? and password=?";
PreparedStatement ps=null;
ps = conn.prepareStatement(sql);
// 查询用户输入的信息到数据库中;
ps.setObject(1, cardID);
ps.setObject(2, password);
ResultSet rs = ps.executeQuery();
// 统计查询的结果,如果不存在,则返回小于0,如果存在则返回大于0;
int count = 0;
if (rs.next()) {
count = rs.getInt(1);// 显示第一列的数;
}
if (count == 0) {
System.out.println("该卡不存在或密码错误,请重新选择");
} else {
String sql1 = "select count(*) from cardInfo where cardID=? and IsReportLoss=0";
ps = conn.prepareStatement(sql1);
// 查询用户输入的信息到数据库中;
ps.setObject(1, cardID);
ResultSet rs1 = ps.executeQuery();
// 统计查询的结果,如果不存在,则返回小于0,如果存在则返回大于0;
int count1 = 0;
if (rs1.next()) {
count1 = rs1.getInt(1);// 显示第一列的数;
}
if (count1 == 0) {
System.out.println("该卡已经挂失");
} else {
System.out.println("----请选择----");
System.out.println("1 存钱 -------- 2 取钱");
int cq = input.nextInt();
if (cq == 1) {
System.out.println("请输入你存款金额");
int putMoney = input.nextInt();
String putMoneySql = "update cardInfo set balance=balance+'"
+ putMoney + "'where cardID='" + cardID + "'";
ps = conn.prepareStatement(putMoneySql);
ResultSet rs2 = ps.executeQuery();
System.out.println("存款成功");
rs = ps.executeQuery("select * from cardInfo where cardID='"+cardID+"'");
//对结果集进行处理
while (rs.next()) {
int id = rs.getInt("balance");
DecimalFormat df = new DecimalFormat("######0.00");
System.out.println("当前余额: "+df.format(id)+"RMB");
}

}
if (cq == 2) {
System.out.println("请输入取款金额");
int outMoney = input.nextInt();
String outMoneySql = "update cardInfo set balance=balance-'"
+ outMoney + "'where cardID='" + cardID + "'";
ps = conn.prepareStatement(outMoneySql);
ResultSet rs3 = ps.executeQuery();
System.out.println("取款成功");
rs = ps.executeQuery("select * from cardInfo where cardID='"+cardID+"'");
//对结果集进行处理
while (rs.next()) {
int id = rs.getInt("balance");
DecimalFormat df = new DecimalFormat("######0.00");
System.out.println("当前余额: "+df.format(id)+"RMB");
}

}
}
}

}

// 转账;
/*
* 判断转出卡号是否存在或挂失; 判断转入卡号是否存在或挂失 判断余额是否足够 判断密码是否正确
*/
public static void transferAccounts(Connection conn)
throws Exception {
Scanner input = new Scanner(System.in);
System.out.println("请输入转出卡号");
// 转出;
String outCardID = input.next();
String sql1 = "select count(*) from cardInfo where cardID=?";
PreparedStatement ps=null;
ps = conn.prepareStatement(sql1);
// 查询用户输入的信息到数据库中;
ps.setObject(1, outCardID);
ResultSet rs = ps.executeQuery();
// 统计查询的结果,如果不存在,则返回小于0,如果存在则返回大于0;
int count = 0;
if (rs.next()) {
count = rs.getInt(1);// 显示第一列的数;
}
if (count == 0) {
System.out.println("转出卡不存在");
} else {
String sql2 = "select count(*) from cardInfo where cardID=? and IsReportLoss=0";
ps = conn.prepareStatement(sql2);
// 查询用户输入的信息到数据库中;
ps.setObject(1, outCardID);
ResultSet rs1 = ps.executeQuery();
// 统计查询的结果,如果不存在,则返回小于0,如果存在则返回大于0;
int count1 = 0;
if (rs1.next()) {
count1 = rs1.getInt(1);// 显示第一列的数;
}
if (count1 == 0) {
System.out.println("此转出卡挂失");
} else {
// 转入卡;
System.out.println("请输入转入卡号");
String inCardID = input.next();
String sql3 = "select count(*) from cardInfo where cardID=?";
ps = conn.prepareStatement(sql3);
// 查询用户输入的信息到数据库中;
ps.setObject(1, inCardID);
ResultSet rs3 = ps.executeQuery();
// 统计查询的结果,如果不存在,则返回小于0,如果存在则返回大于0;
int count3 = 0;
if (rs3.next()) {
count3 = rs3.getInt(1);// 显示第一列的数;
}
if (count3 == 0) {
System.out.println("转入卡不存在");
} else {
String sql4 = "select count(*) from cardInfo where cardID=? and IsReportLoss=0";
ps = conn.prepareStatement(sql4);
// 查询用户输入的信息到数据库中;
ps.setObject(1, inCardID);
ResultSet rs4 = ps.executeQuery();
// 统计查询的结果,如果不存在,则返回小于0,如果存在则返回大于0;
int count4 = 0;
if (rs4.next()) {
count4 = rs4.getInt(1);// 显示第一列的数;
}
if (count4 == 0) {
System.out.println("此转入卡挂失");
} else {
System.out.println("请输入转账金额");
int outMoney = input.nextInt();
System.out.println("请输入交易密码");
String password = input.next();
String sql5 = "select count(*) from cardInfo where cardID=? and password=?";
ps = conn.prepareStatement(sql5);
// 查询用户输入的信息到数据库中;
ps.setObject(1, outCardID);
ps.setObject(2, password);
ResultSet rs5 = ps.executeQuery();
// 统计查询的结果,如果不存在,则返回小于0,如果存在则返回大于0;
int count5 = 0;
if (rs5.next()) {
count5 = rs5.getInt(1);// 显示第一列的数;
}
if (count5 == 0) {
System.out.println("密码不正确");
} else {
String putMoneySql = "update cardInfo set balance=balance+'"
+ outMoney
+ "'where cardID='"
+ inCardID
+ "'";
ps = conn.prepareStatement(putMoneySql);
ResultSet rs6 = ps.executeQuery();
System.out.println("转入方存款成功");
rs = ps.executeQuery("select * from cardInfo where cardID='"+inCardID+"'");
//对结果集进行处理
while (rs.next()) {
int id = rs.getInt("balance");
DecimalFormat df = new DecimalFormat("######0.00");
System.out.println("当前余额: "+df.format(id)+"RMB");
}

String outMoneySql = "update cardInfo set balance=balance-'"
+ outMoney
+ "'where cardID='"
+ outCardID
+ "'";
ps = conn.prepareStatement(outMoneySql);
ResultSet rs7 = ps.executeQuery();
System.out.println("转出方扣款成功");

rs = ps.executeQuery("select * from cardInfo where cardID='"+outCardID+"'");
//对结果集进行处理
while (rs.next()) {
int id = rs.getInt("balance");
DecimalFormat df = new DecimalFormat("######0.00");
System.out.println("当前余额: "+df.format(id)+"RMB");
}
}

}
}

}
}

}

// 结算利息;
public static void settlementInterest(Connection conn)throws Exception {
Scanner input = new Scanner(System.in);
System.out.println("请输入卡号");
String cardID = input.next();
System.out.println("请输入密码");
String password = input.next();
String sql = "select count(*) from cardInfo where cardID=? and password=?";
PreparedStatement ps=null;
ps = conn.prepareStatement(sql);
ps.setObject(1, cardID);
ps.setObject(2, password);
ResultSet rs = ps.executeQuery();
int count = 0;
if (rs.next()) {
count = rs.getInt(1);// 显示第一列的数;
}
if (count == 0) {
System.out.println("该卡不存在或密码输入不正确");
} else {
String isLoss = "select count(*) from cardInfo where cardID='"
+ cardID + "' and IsReportLoss=1";
PreparedStatement isPs=null;
isPs = conn.prepareStatement(isLoss);
ResultSet isRSLoss = isPs.executeQuery();
int count2 = 0;
if (isRSLoss.next()) {
count2 = isRSLoss.getInt(1);// 显示第一列的数;
}
if(count2==0){
String dateSql=" select opendate from cardInfo where cardID='"+cardID+"' ";

ps=conn.prepareStatement(dateSql);//执行sql
rs=ps.executeQuery();
if(rs.next()){
//获得数据开户时间日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date d = sdf.parse(rs.getString("opendate"));
// 通过该日期得到一个毫秒值
long myTime = d.getTime();
// 获取当前时间的毫秒值
long nowTime = System.currentTimeMillis();
// 用D-C得到一个毫秒值
long time = nowTime - myTime;
long day = time / 1000 / 60 / 60 / 24;
double dayRate=day*0.00136986;
/*银行按天计算 利息是:0.00136986;
*
*/
String rateSql="update cardInfo set balance=balance+balance*'"+dayRate+"' where cardID='"+cardID+"'";
ps=conn.prepareStatement(rateSql);
ResultSet rs7 = ps.executeQuery();
System.out.println("利息计算成功!");

rs = ps.executeQuery("select * from cardInfo where cardID='"+cardID+"'");
//对结果集进行处理
while (rs.next()) {
int id = rs.getInt("balance");
DecimalFormat df = new DecimalFormat("######0.00");
System.out.println("当前余额: "+df.format(id)+"RMB");
}

}else{
System.out.println("该卡已经挂失,无法结算利息");
}
}
}

}

// 修改密码;
public static void modifyPassword(Connection conn)
throws Exception {
Scanner input = new Scanner(System.in);
System.out.println("请输入卡号");
String cardID = input.next();
System.out.println("请输入密码");
String password = input.next();
String sql = "select count(*) from cardInfo where cardID=? and password=?";
PreparedStatement ps=null;
ps = conn.prepareStatement(sql);
ps.setObject(1, cardID);
ps.setObject(2, password);
ResultSet rs = ps.executeQuery();
int count = 0;
if (rs.next()) {
count = rs.getInt(1);// 显示第一列的数;
}
if (count == 0) {
System.out.println("该卡不存在或密码输入不正确");
} else {
String isLoss = "select count(*) from cardInfo where cardID='"
+ cardID + "' and IsReportLoss=1";
PreparedStatement isPs=null;
isPs = conn.prepareStatement(isLoss);
ResultSet isRSLoss = isPs.executeQuery();
int count2 = 0;
if (isRSLoss.next()) {
count2 = isRSLoss.getInt(1);// 显示第一列的数;
}
if(count2==0){
System.out.println("请输入新的密码");
String oneNewPassword = input.next();
System.out.println("请再次输入新的密码");
String twoNewPassword = input.next();
if (oneNewPassword.equals(twoNewPassword)) {
String passwordSql = "update cardInfo set password='"
+ oneNewPassword + "' where cardID='" + cardID + "'";
ps = conn.prepareStatement(passwordSql);
ResultSet rsPassWord = ps.executeQuery();
System.out.println("密码修改成功");
} else {
System.out.println("密码不一致");
}
}else{
System.out.println("该卡之前挂失,无法修改密码!");
}

}
}

// 挂失;
public static void reportTheLoss(Connection conn)
throws Exception {
Scanner input = new Scanner(System.in);
System.out.println("请输入银行卡");
String cardID = input.next();
System.out.println("请输入密码");
String password = input.next();
String lossSql = "select count(*) from cardInfo where cardID='"
+ cardID + "' and password='" + password + "' ";
PreparedStatement ps=null;
ps = conn.prepareStatement(lossSql);
ResultSet rs = ps.executeQuery();
int count = 0;
if (rs.next()) {
count = rs.getInt(1);// 显示第一列的数;
}
if (count == 0) {
System.out.println("密码输入不正确或此卡不存在");
} else {

String isLoss = "select count(*) from cardInfo where cardID='"
+ cardID + "' and IsReportLoss=1";
PreparedStatement isPs=null;
isPs = conn.prepareStatement(isLoss);
ResultSet isRSLoss = isPs.executeQuery();
int count1 = 0;
if (isRSLoss.next()) {
count1 = isRSLoss.getInt(1);// 显示第一列的数;
}
if(count1==0){
String updateLossSql = "update cardInfo set IsReportLoss=1 where cardID='"
+ cardID + "'";
ps = conn.prepareStatement(updateLossSql);
ResultSet rs1 = ps.executeQuery();
System.out.println("挂失成功");

}else{
System.out.println("对不起!该卡之前挂失过!");
}

}
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值