java+mysql模擬實(shí)現(xiàn)銀行系統(tǒng)
模擬電子銀行,開(kāi)戶,存錢,取錢,查詢用戶信息,修改用戶信息,查詢余額,查詢明細(xì),注銷,退出,等等
基本實(shí)現(xiàn)了相關(guān)功能。但是規(guī)定每次需要重新登錄,還是很麻煩的。
另外用戶注銷時(shí)候,沒(méi)有規(guī)定刪除operator表中信息,此處會(huì)有問(wèn)題。但想了半天覺(jué)得現(xiàn)實(shí)中這部分信息需要保留一段時(shí)間,不應(yīng)該刪除。orz
數(shù)據(jù)庫(kù)設(shè)計(jì):





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());//轉(zhuǎn)換成正常的日期格式
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("--歡迎使用并沒(méi)有錢的銀行系統(tǒng)!--\n"
+ "(1):開(kāi)戶\n"
+ "(2):顯示余額\n"
+ "(3):存錢\n"
+ "(4):取錢\n"
+ "(5):轉(zhuǎn)賬\n"
+ "(6):明細(xì)查詢\n"
+ "(7):注銷\n"
+ "(0):退出\n"
+ "請(qǐng)輸入你的操作:\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("輸入錯(cuò)誤,請(qǐng)重試!");
}
}
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;
/*
* 為了提高代碼復(fù)用性,進(jìn)行簡(jiǎn)單的封裝
* */
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("注冊(cè)驅(qū)動(dòng)失敗。。");
e.printStackTrace();
}
}
/*static{
try {
Class.forName(DRIVERNAME);
} catch (ClassNotFoundException e) {
System.out.println("注冊(cè)驅(qū)動(dòng)失敗。。");
e.printStackTrace();
}
}*/
//提供獲取連接對(duì)象的方法
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;
}
//提供一個(gè)專門(mén)執(zhí)行dml語(yǔ)句的方法
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<params.length;i++){
pstmt.setObject(i+1, params[i]);
}
return pstmt.executeUpdate();
}
//提供一個(gè)轉(zhuǎn)么執(zhí)行select語(yǔ)句的方法,返回對(duì)象集合
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);
}
/*
* 創(chuàng)建連接池
* */
public static BasicDataSource dataSource = new BasicDataSource();
/*
* 對(duì)連接池進(jìn)行配置,基本配置
* */
static{
dataSource.setDriverClassName(ps.getProperty("driver"));
dataSource.setUrl(ps.getProperty("url"));
dataSource.setUsername(ps.getProperty("user"));
dataSource.setPassword(ps.getProperty("password"));
}
/*
* 返回連接對(duì)象
* */
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
關(guān)于管理系統(tǒng)的更多內(nèi)容請(qǐng)點(diǎn)擊《管理系統(tǒng)專題》進(jìn)行學(xué)習(xí)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
使用springboot結(jié)合vue實(shí)現(xiàn)sso單點(diǎn)登錄
這篇文章主要為大家詳細(xì)介紹了如何使用springboot+vue實(shí)現(xiàn)sso單點(diǎn)登錄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-06-06
關(guān)于fastjson的常見(jiàn)API詳解
這篇文章主要介紹了關(guān)于fastjson的常見(jiàn)API詳解,Fastjson是一個(gè)Java庫(kù),可用于將Java對(duì)象轉(zhuǎn)換為其JSON表示,它還可用于將JSON字符串轉(zhuǎn)換為等效的Java對(duì)象,Fastjson可以處理任意Java對(duì)象,包括您沒(méi)有源代碼的預(yù)先存在的對(duì)象,需要的朋友可以參考下2023-07-07
Java二維數(shù)組與動(dòng)態(tài)數(shù)組ArrayList類詳解
這篇文章主要給大家介紹了關(guān)于Java二維數(shù)組與動(dòng)態(tài)數(shù)組ArrayList類的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
Java?windows環(huán)境構(gòu)建圖文教程
這篇文章主要為大家介紹了Java?windows環(huán)境構(gòu)建圖文教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪<BR>2023-12-12
詳解MyBatis-Puls中saveBatch批量添加慢的問(wèn)題
本文主要介紹了詳解MyBatis-Puls中saveBatch批量添加慢的問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
基數(shù)排序簡(jiǎn)介及Java語(yǔ)言實(shí)現(xiàn)
這篇文章主要介紹了基數(shù)排序簡(jiǎn)介及Java語(yǔ)言實(shí)現(xiàn),涉及基數(shù)排序的基本思想簡(jiǎn)單介紹和桶排序的分析,以及基數(shù)排序的Java實(shí)現(xiàn),具有一定借鑒價(jià)值,需要的朋友可以參考下。2017-11-11
springboot啟動(dòng)后卡住無(wú)日志的幾種情況小結(jié)
這篇文章主要介紹了springboot啟動(dòng)后卡住無(wú)日志的幾種情況小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12

