欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java+mysql模擬實現(xiàn)銀行系統(tǒng)

 更新時間:2020年05月27日 10:37:59   作者:wenmiao_  
這篇文章主要為大家詳細(xì)介紹了java+mysql模擬實現(xiàn)銀行系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

模擬電子銀行,開戶,存錢,取錢,查詢用戶信息,修改用戶信息,查詢余額,查詢明細(xì),注銷,退出,等等 

基本實現(xiàn)了相關(guān)功能。但是規(guī)定每次需要重新登錄,還是很麻煩的。

另外用戶注銷時候,沒有規(guī)定刪除operator表中信息,此處會有問題。但想了半天覺得現(xiàn)實中這部分信息需要保留一段時間,不應(yīng)該刪除。orz

數(shù)據(jù)庫設(shè)計:

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("--歡迎使用并沒有錢的銀行系統(tǒng)!--\n"
 + "(1):開戶\n"
 + "(2):顯示余額\n"
 + "(3):存錢\n"
 + "(4):取錢\n"
 + "(5):轉(zhuǎn)賬\n"
 + "(6):明細(xì)查詢\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;
 
/*
 * 為了提高代碼復(fù)用性,進行簡單的封裝
 * */
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("注冊驅(qū)動失敗。。");
 e.printStackTrace();
 }
 }
 /*static{
 try {
 Class.forName(DRIVERNAME);
 } catch (ClassNotFoundException e) {
 System.out.println("注冊驅(qū)動失敗。。");
 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;
 }
 
 //提供一個專門執(zhí)行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<params.length;i++){
 pstmt.setObject(i+1, params[i]);
 }
 return pstmt.executeUpdate();
 }
 
 //提供一個轉(zhuǎn)么執(zhí)行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);
 }
 
 /*
 * 創(chuàng)建連接池
 * */
 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

關(guān)于管理系統(tǒng)的更多內(nèi)容請點擊《管理系統(tǒng)專題》進行學(xué)習(xí)

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • JavaWeb之Filter與Listener使用解析

    JavaWeb之Filter與Listener使用解析

    這篇文章主要介紹了JavaWeb之Filter與Listener使用解析,Filter表示過濾器,是JavaWeb三大組件(Servlet、Filter、Listener)之一,過濾器可以把對資源的請求攔截下來,從而實現(xiàn)一些特殊的功能,需要的朋友可以參考下
    2024-01-01
  • Java文件上傳與文件下載實現(xiàn)方法詳解

    Java文件上傳與文件下載實現(xiàn)方法詳解

    這篇文章主要介紹了Java文件上傳與文件下載實現(xiàn)方法,結(jié)合實例形式詳細(xì)分析了Java文件上傳與文件下載相關(guān)操作原理、實現(xiàn)方法及相關(guān)操作注意事項,需要的朋友可以參考下
    2019-02-02
  • Java mongodb連接配置實踐

    Java mongodb連接配置實踐

    這篇文章主要介紹了Java mongodb連接配置實踐,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • Java使用釘釘創(chuàng)建企業(yè)內(nèi)部機器人的實現(xiàn)

    Java使用釘釘創(chuàng)建企業(yè)內(nèi)部機器人的實現(xiàn)

    釘釘?shù)某霈F(xiàn)為企業(yè)節(jié)約了大量人力成本,其中也開放了大量的外部api接口方便企業(yè)使用。本文主要介紹了Java使用釘釘創(chuàng)建企業(yè)內(nèi)部機器人的實現(xiàn),感興趣的可以了解一下
    2021-11-11
  • Java數(shù)據(jù)結(jié)構(gòu)與算法學(xué)習(xí)之雙向鏈表

    Java數(shù)據(jù)結(jié)構(gòu)與算法學(xué)習(xí)之雙向鏈表

    雙向鏈表也叫雙鏈表,是鏈表的一種,它的每個數(shù)據(jù)結(jié)點中都有兩個指針,分別指向直接后繼和直接前驅(qū)。所以,從雙向鏈表中的任意一個結(jié)點開始,都可以很方便地訪問它的前驅(qū)結(jié)點和后繼結(jié)點。本文將為大家詳細(xì)介紹雙向鏈表的特點與使用,需要的可以參考一下
    2021-12-12
  • Java數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)之棧和隊列

    Java數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)之棧和隊列

    這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)之棧和隊列,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java的小伙伴們有一定的幫助,需要的朋友可以參考下
    2021-05-05
  • springBoot 過濾器去除請求參數(shù)前后空格實例詳解

    springBoot 過濾器去除請求參數(shù)前后空格實例詳解

    這篇文章主要為大家介紹了springBoot 過濾器去除請求參數(shù)前后空格實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • java.lang.OutOfMemoryError: Metaspace異常解決的方法

    java.lang.OutOfMemoryError: Metaspace異常解決的方法

    這篇文章主要介紹了java.lang.OutOfMemoryError: Metaspace異常解決的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Java SpringBoot自動配置原理詳情

    Java SpringBoot自動配置原理詳情

    這篇文章主要介紹了Java SpringBoot自動配置原理詳情,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-07-07
  • java異常機制分析

    java異常機制分析

    這篇文章主要介紹了java異常機制,包括異常機制的捕獲、拋出及常見的異常機制總結(jié),需要的朋友可以參考下
    2014-09-09

最新評論