Flask接口签名sign原理与实例代码浅析
281
2022-12-06
java+mysql模拟实现银行系统
模拟电子银行,开户,存钱,取钱,查询用户信息,修改用户信息,查询余额,查询明细,注销,退出,等等
基本实现了相关功能。但是规定每次需要重新登录,还是很麻烦的。
另外用户注销时候,没有规定删除operator表中信息,此处会有问题。但想了半天觉得现实中这部分信息需要保留一段时间,不应该删除。orz
数据库设计:
bank.java:
package mybank;
import org.apache.commons.dbutils.QueryRunner;
//import java.sql.Date;
import java.util.*;
import java.util.Date;
import java.sql.*;
import java.text.DecimalFormat;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayHandler;
import org.apache.commons.dbutils.handlers.ArrayListHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
public class bank {
// public static Connection getConnection() throws Exception
// {
//// Class.forName("com.mysql.cj.jdbc.Driver");
//// Properties info=new Properties();
//// info.setProperty("user", "root");
//// info.setProperty("password", "wenmiao11");
////
//// Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/scsxbank?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false", info);
////
//
//
// return conn;
// }
public static int writeoperator(String type,double num,int fromid,int toid) throws Exception
{
Connection conn=JdbcUtil.getConn();
PreparedStatement pstmt = conn.prepareStatement("insert into operator "
+ "values(0,?,?,?,?,?,?)");
pstmt.setString(1,type);
pstmt.setDouble(2,num);
pstmt.setInt(3,fromid);
pstmt.setInt(4,toid);
//Date d=new Date();
java.sql.Date timePara = new java.sql.Date(new Date().getTime());
pstmt.setDate(5,timePara);
Calendar cal = Calendar.getInstance();//日期类
java.sql.Timestamp timestampnow = new java.sql.Timestamp(cal.getTimeInMillis());//转换成正常的日期格式
java.util.Date current =new java.util.Date();
timestampnow = new java.sql.Timestamp(current.getTime());
pstmt.setTimestamp(6, timestampnow);
int k=pstmt.executeUpdate();
return k;
}
public static int testmoneyenough(int idnum,double awaymoney) throws Exception
{
double balance=getbalance(idnum);
if(balance>awaymoney)
{
return 1;
}
else
{
System.out.println("money is not enough!");
return 0;
}
}
public static double getbalance(int idnum) throws Exception
{
Connection conn=JdbcUtil.getConn();
String sql="select * from balance where id=?;";
Object[] params2 = {idnum};
QueryRunner qr = new QueryRunner(JdbcUtil2.getDataSource());
Object[] obj = qr.query(conn, sql, new ArrayHandler(),params2);
if(obj.length>0)
{
System.out.println(obj[1]);
return ((double)obj[1]);
}
else
{
System.out.println("error");
return -1;
}
}
public static int updatebalance(double num,int idnum) throws Exception
{
Connection conn=JdbcUtil.getConn();
PreparedStatement pstmt ;
pstmt = conn.prepareStatement("update balance set balance=balance+? where id=?;");
pstmt.setDouble(1, num);
pstmt.setInt(2, idnum);
int k=pstmt.executeUpdate();
return k;
}
public static int testpassword() throws Exception
{
System.out.println("input your id number:");
Scanner cin=new Scanner(System.in);
int idnum=cin.nextInt();
System.out.println("input your password:");
String password = cin.next();
Connection conn=JdbcUtil.getConn();
String sql="select * from user where id=? and password=?";
Object[] params = {idnum,password,};
QueryRunner qr = new QueryRunner(JdbcUtil2.getDataSource());
Object[] obj = qr.query(conn, sql, new ArrayHandler(),params);
if(obj.length>0)
{
return idnum;
}
else
{
System.out.println("wrong message!");
return -1;
}
}
public static void openAnAccount() throws Exception
{
Scanner cin=new Scanner(System.in);
System.out.println("input your name:");
String name=cin.next();
String password;
String passwordagain;
while(true)
{
System.out.println("input your password:");
password=cin.next();
System.out.println("input your password again:");
passwordagain=cin.next();
if(password.equals(passwordagain))
{
break;
}
else
{
System.out.println("different password, please input again!");
}
}
Connection conn=JdbcUtil.getConn();
PreparedStatement pstmt = conn.prepareStatement("select * from maxid");
//String sql="select max(id) from user";
ResultSet rs=pstmt.executeQuery();
rs.next();
//rs.getObject(1);
int id=rs.getInt(1)+1;
pstmt = conn.prepareStatement("update maxid set id=id+1");
pstmt.executeUpdate();
//String strmaxid=rs.getString(1);
//System.out.println(id);
//sql="insert into user values(%d,%s,%s)";
pstmt = conn.prepareStatement("insert into user values(?,?,?)");
pstmt.setInt(1, id);
pstmt.setString(2, name);//System.out.println("again!");
pstmt.setString(3, password);
int k = pstmt.executeUpdate();
pstmt = conn.prepareStatement("insert into balance values(?,?)");
pstmt.setInt(1, id);
pstmt.setDouble(2, 0);
int l = pstmt.executeUpdate();
//System.out.println("dif");
DecimalFormat df=new DecimalFormat("0000000000");
if(k!=0&&l!=0)
System.out.println("create the account successfully,your id is "+df.format(id));
//15246785055
k=writeoperator("enroll",-1,id,0);
// pstmt = conn.prepareStatement("insert into operator values(?,?,?,?,?)");
// pstmt.setInt(1, 0);
// pstmt.setString(2, "enroll");//System.out.println("again!");
// pstmt.setInt(3, 0);
// pstmt.setString(4, String.valueOf(id));//System.out.println("again!");
// pstmt.setString(5, "");//System.out.println("again!");
// k=pstmt.executeUpdate();
if(k==1)
System.out.println("success again");
else
System.out.println("TAT");
}
public static void showbalance() throws Exception
{
System.out.println("input your id number:");
Scanner cin=new Scanner(System.in);
int idnum=cin.nextInt();
//System.out.println(idnum);
System.out.println("input your password:");
String password = cin.next();
Connection conn=JdbcUtil.getConn();
String sql="select * from user where id=? and password=?";
Object[] params = {idnum,password,};
QueryRunner qr = new QueryRunner(JdbcUtil2.getDataSource());
Object[] obj = qr.query(conn, sql, new ArrayHandler(),params);
//System.out.println("2w2w");
//String id=obj[0].toString();
if(obj.length>0)
{
//System.out.println("-----");
System.out.println(obj[1]+" : 你好!");
}
else
{
System.out.println("wrong message!");
return;
}
int k=writeoperator("login",-1,idnum,0);
// PreparedStatement pstmt ;
// pstmt = conn.prepareStatement("insert into operator values(?,?,?,?,?)");
// pstmt.setInt(1, 0);
// pstmt.setString(2, "login");//System.out.println("again!");
// pstmt.setInt(3, 0);
// pstmt.setString(4, String.valueOf(id));//System.out.println("again!");
// pstmt.setString(5, "");//System.out.println("again!");
// int k=pstmt.executeUpdate();
if(k==1)
System.out.println("success again");
else
System.out.println("TAT");
getbalance(idnum);
// sql="select * from balance where id=?;";
// Object[] params2 = {idnum};
// qr = new QueryRunner(JdbcUtil2.getDataSource());
// obj = qr.query(conn, sql, new ArrayHandler(),params2);
//
// if(obj.length>0)
// System.out.println(obj[1]);
// else
// System.out.println("error");
}
public static void saving() throws Exception
{
Scanner cin=new Scanner(System.in);
int idnum=testpassword();
if(idnum==-1)
{
System.out.println("wrong message!");
return;
}
else
{
System.out.println("input saving number:");
double accountnum=cin.nextDouble();
System.out.println("before saving, your balance is "+getbalance(idnum)+"¥");
updatebalance(accountnum,idnum);
writeoperator("saving",accountnum,idnum,0);
System.out.println("after saving, your balance is "+getbalance(idnum)+"¥");
}
}
public static void withdrawal() throws Exception
{
Scanner cin=new Scanner(System.in);
int idnum=testpassword();
if(idnum==-1)
{
System.out.println("wrong message!");
return;
}
else
{
System.out.println("input withdrawal number:");
double accountnum=cin.nextDouble();
int flag=testmoneyenough(idnum,accountnum);
if(flag>0)
{
System.out.println("before withdrawal, your balance is "+getbalance(idnum)+"¥");
updatebalance(accountnum*(-1),idnum);
writeoperator("withdrawal",accountnum,idnum,0);
System.out.println("after withdrawal, your balance is "+getbalance(idnum)+"¥");
}
else
return;
}
}
public static void transfer() throws Exception
{
Scanner cin=new Scanner(System.in);
int idnum=testpassword();
if(idnum>0)
{
System.out.println("which evil will deprive your little money?");
int toidnum=cin.nextInt();
System.out.println("And how much?");
double accountnum=cin.nextInt();
int flag=testmoneyenough(idnum,accountnum);
if(flag>0)
{
System.out.println("before transfer, your balance is "+getbalance(idnum)+"¥");
Connection conn=JdbcUtil.getConn();
conn.setAutoCommit(false);
String sql1 = "update balance set balance=balance-? where id=?";
String sql2 = "update balance set balance=balance+? where id=?";
PreparedStatement pstmt = conn.prepareStatement(sql1);
pstmt.setDouble(1,accountnum);
pstmt.setInt(2,idnum);
pstmt.executeUpdate();
pstmt = conn.prepareStatement(sql2);
pstmt.setDouble(1,accountnum);
pstmt.setInt(2,toidnum);
pstmt.executeUpdate();
conn.commit();
writeoperator("transfer",accountnum,idnum,toidnum);
System.out.println("after transfer, your balance is "+getbalance(idnum)+"¥");
}
else
return;
}
else
return;
}
public static void seekdetails() throws Exception
{
int idnum=testpassword();
writeoperator("seek",0,idnum,0);
if(idnum>0)
{
Connection conn=JdbcUtil.getConn();
String sql = "select * from operator where fromid=?;";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1,idnum);
ResultSet rs = pstmt.executeQuery();
while(rs.next())
{
System.out.println(rs.getInt(1)+" "+rs.getString(2));
}
}
else
{
return;
}
}
public static void logoff() throws Exception
{
int idnum=testpassword();
if(idnum>0)
{
System.out.println("are you sure?(Y/N)");
Scanner cin=new Scanner(System.in);
String s=cin.next();
if(s.equals("Y"))
{
Connection conn=JdbcUtil.getConn();
String sql = "delete from user where id=?;";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1,idnum);
int k=pstmt.executeUpdate();
sql = "delete from balance where id=?;";
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1,idnum);
int l=pstmt.executeUpdate();
if(k>0&&l>0)
{
writeoperator("delete",0,idnum,0);
System.out.println("delete successfully!");
}
else
{
System.out.println("there must be something wrong!");
}
}
else
{
return;
}
}
else
{
return;
}
}
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
Scanner cin=new Scanner(System.in);
int flag=0;
while(true)
{
System.out.println("--欢迎使用并没有钱的银行系统!--\n"
+ "(1):开户\n"
+ "(2):显示余额\n"
+ "(3):存钱\n"
+ "(4):取钱\n"
+ "(5):转账\n"
+ "(6):明细查询\n"
+ "(7):注销\n"
+ "(0):退出\n"
+ "请输入你的操作:\n");
int i=cin.nextInt();
switch(i)
{
case 1 :
{
openAnAccount();
break;
}
case 2 :
{
showbalance();
break;
}
case 3 :
{
saving();
break;
}
case 4 :
{
withdrawal();
break;
}
case 5 :
{
transfer();
break;
}
case 6 :
{
seekdetails();
break;
}
case 7 :
{
logoff();
break;
}
case 0:
{
System.out.println("欢迎下次使用!");
flag=1;
break;
}
default:
{
System.out.println("输入错误,请重试!");
}
}
if(flag==1)
break;
}
cin.close();
}
}
JdbcUtil.java:
package mybank;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Properties;
/*
* 为了提高代码复用性,进行简单的封装
* */
public class JdbcUtil {
/*public static final String DRIVERNAME = "com.mysql.jdbc.Driver";
public static final String URL = "jdbc:mysql:///test";
public static final String USER = "root";
public static final String PASSWORD = "123456";*/
/* public static String driver;
public static String url;
public static String user;
public static String password;
*/
//加载配置文件
public static Properties ps = null;
static{
ps = new Properties();
Reader r = null;
try {
r = new FileReader("src/db.properties");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
ps.load(r);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//driver = ps.getProperty(driver);
}
static{
try {
Class.forName(ps.getProperty("driver"));
} catch (ClassNotFoundException e) {
System.out.println("注册驱动失败。。");
e.printStackTrace();
}
}
/*static{
try {
Class.forName(DRIVERNAME);
} catch (ClassNotFoundException e) {
System.out.println("注册驱动失败。。");
e.printStackTrace();
}
}*/
//提供获取连接对象的方法
public static Connection getConn(){
Connection conn = null;
try {
conn = DriverManager.getConnection(ps.getProperty("url"), ps.getProperty("user"), ps.getProperty("password"));
} catch (SQLException e) {
System.out.println("获取连接失败。");
e.printStackTrace();
}
return conn;
}
//提供一个专门执行dml语句的方法
public static int executeUDI(String sql,Object[] params) throws Exception{
Connection conn = getConn();
PreparedStatement pstmt = conn.prepareStatement(sql);
for(int i=0;params!=null&&i pstmt.setObject(i+1, params[i]); } return pstmt.executeUpdate(); } //提供一个转么执行select语句的方法,返回对象集合 public static ArrayList executeQuery(String sql,Object[] params){ //.... return null; } } JdbcUtil2.java: package mybank; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.Reader; import java.util.Properties; import javax.sql.DataSource; import org.apache.commons.dbcp2.BasicDataSource; public class JdbcUtil2 { //加载配置文件 public static Properties ps = null; static{ ps = new Properties(); Reader r = null; try { r = new FileReader("src/db.properties"); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { ps.load(r); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } //driver = ps.getProperty(driver); } /* * 创建连接池 * */ public static BasicDataSource dataSource = new BasicDataSource(); /* * 对连接池进行配置,基本配置 * */ static{ dataSource.setDriverClassName(ps.getProperty("driver")); dataSource.setUrl(ps.getProperty("url")); dataSource.setUsername(ps.getProperty("user")); dataSource.setPassword(ps.getProperty("password")); } /* * 返回连接对象 * */ public static DataSource getDataSource(){ return dataSource; } } db.properties: driver=com.mysql.cj.jdbc.Driver url=jdbc:mysql://localhost:3306/scsxbank?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false user=root password=xxx 关于管理系统的更多内容请点击《管理系统专题》进行学习
pstmt.setObject(i+1, params[i]);
}
return pstmt.executeUpdate();
}
//提供一个转么执行select语句的方法,返回对象集合
public static ArrayList executeQuery(String sql,Object[] params){
//....
return null;
}
}
JdbcUtil2.java:
package mybank;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.commons.dbcp2.BasicDataSource;
public class JdbcUtil2 {
//加载配置文件
public static Properties ps = null;
static{
ps = new Properties();
Reader r = null;
try {
r = new FileReader("src/db.properties");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
ps.load(r);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//driver = ps.getProperty(driver);
}
/*
* 创建连接池
* */
public static BasicDataSource dataSource = new BasicDataSource();
/*
* 对连接池进行配置,基本配置
* */
static{
dataSource.setDriverClassName(ps.getProperty("driver"));
dataSource.setUrl(ps.getProperty("url"));
dataSource.setUsername(ps.getProperty("user"));
dataSource.setPassword(ps.getProperty("password"));
}
/*
* 返回连接对象
* */
public static DataSource getDataSource(){
return dataSource;
}
}
db.properties:
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/scsxbank?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false
user=root
password=xxx
关于管理系统的更多内容请点击《管理系统专题》进行学习
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~