模拟电子银行,开户,存钱,取钱,查询用户信息,修改用户信息,查询余额,查询明细,注销,退出,等等
基本实现了相关功能。但是规定每次需要重新登录,还是很麻烦的。
另外用户注销时候,没有规定删除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<params.length;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
关于管理系统的更多内容请点击《管理系统专题》进行学习
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自学编程网。