zoukankan      html  css  js  c++  java
  • 银行——————————账户信息存入数据库

    每注册一个用户,该用户的信息会自动存到数据库中,并且下次再启动查询时信息不会丢失。

    package com.Bank.unionpay;
    
    //     ATM 抽象类
    public abstract class ATM
    {
                //成员属性
                public ICard account ;
    
                // 抽象方法
                public abstract void kaiHu() ;
                
    }
    package com.Bank.unionpay;
    
    // 银行枚举
    public enum Fourbank
    {
            //    首行放置
            ABC("农行") , ICBC("工行") ,    CCB("建行") , BOC("中行");
            
            private String name ;
            
            public String getName()
            {
                return name;
            }
    
            Fourbank(String name)
            {
                this.name = name ;
            }
    }
    package com.Bank.unionpay;
    
    //  银行卡接口
    public interface ICard
    {
        //   查询余额
        public void chaXun( ) ;
        
        //   存款
        public void cunKuan( ) ;
        
        //   取款
        public void quKuan( ) ;
        
    }
    package com.Bank.abc;
    
    import com.Bank.unionpay.Fourbank;
    
    
    public class ABCBank 
    {
        //私有属性
        final Fourbank bank = Fourbank.ABC ;             //银行类型 
        
        private  String bankName ;              // 银行名称
        
        //私有构造方法,防止该类被实例化
        private  ABCBank()
        {
                
        }
            
        //创建Bank的一个对象
        private static ABCBank bk = new ABCBank() ;
            
        //获取唯一可用对象
        public static ABCBank getBk()
        {
            return bk ;
        }
        
        
    }
    package com.Bank.abc;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Scanner;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    import com.Bank.unionpay.ATM;
    import com.Bank.unionpay.Fourbank;
    
    public class AutoATM extends ATM {
        // 属性
        final Fourbank bank = Fourbank.ABC;
    
    //    /*    
    //      map集合 卡号映射密码    
    //    不将密码存入数据库表格
    //    防止用户密码泄露给数据库管理员
    //     */
    //    Map<String, String> maps = new HashMap<String, String>();
    // 
        @Override
        public void kaiHu() {
            for (int i = 0; i > -1; i++) {
                // 分支语句,判断用户输入,提供相关功能
                System.out.println("************************************");
                System.out.println("您选择的为开户功能!");
                System.out.println("请输入您的姓名:");
    
                // 提供输入,供用户注册名字
                for (int j1 = 1; j1 > 0; j1++) {
                    Scanner can = new Scanner(System.in);
                    String ss = can.nextLine();
    
                    String regEx = "[u4e00-u9fa5]";
                    Pattern p = Pattern.compile(regEx);
                    int num = 0;
                    // 汉字长度
                    for (int s = 0; s < ss.length(); s++) {
                        if (p.matches(regEx, ss.substring(s, s + 1))) {
                            num++;
                        }
                    }
                    // 判断名字是否合法
                    if (num < 2) {
                        System.out.println("您输入的名字不合法!");
                    } else {
                        System.out.println("您输入的名字是:" + ss);
                        // 判断身份证号码是否合法
                        for (int j2 = 1; j2 > 0; j2++) {
                            System.out.println("请输入您的身份证号:");
    
                            Scanner sf = new Scanner(System.in);
                            String sfNum = sf.nextLine();
    
                            // 定义判别用户身份证号的正则表达式(18位,最后一位可以为字母)
                            Pattern idNumPattern = Pattern.compile("(\d{17}[0-9a-zA-Z])");
                            // 通过Pattern获得Matcher
                            Matcher idNumMatcher = idNumPattern.matcher(sfNum);
                            // 判断用户输入是否为身份证号
                            if (idNumMatcher.matches()) 
                            {
                                System.out.println("您的身份证号是:" + sfNum);
                                // 判断密码是否合法
                                for (int j = 1; j > 0; j++) {
                                    System.out.println("请输入您的密码:");
    
                                    Scanner mm = new Scanner(System.in);
                                    String mmNum = mm.nextLine();
    
                                    // 定义判别用户密码的正则表达式(6位纯数字)
                                    Pattern idNumPattern1 = Pattern.compile("(\d{5}[0-9])");
                                    // 通过Pattern获得Matcher
                                    Matcher idNumMatcher1 = idNumPattern.matcher(mmNum);
                                    // 判断用户输入的密码格式是否正确
                                    if (idNumMatcher.matches()) {
                                        while (true) {
                                            System.out.println("您的密码是:" + mmNum);
                                            System.out.println("请再次输入您的密码,进行确认:");
                                            Scanner mm1 = new Scanner(System.in);
                                            String mmNum1 = mm.nextLine();
                                            if (mmNum1.equals(mmNum) == true) {
                                                System.out.println("开户成功,谢谢使用!");
                                                System.out.println("银行自助终端系统");
                                                
                                                //连接访问数据库
                                                try {
                                                    Class.forName("oracle.jdbc.driver.OracleDriver") ;  //加载驱动
                                                    
                                                    String url = "jdbc:oracle:thin:@localhost:1521:orcl" ;        //    获取数据库连接
                                                    
                                                    Connection conn = DriverManager.getConnection(url, "test0816", "934617699");
                                                    
                                                    Statement st = conn.createStatement() ;//  获得操作数据库声明
                                                    
    //                                                //在数据库中建立一个表格,用来存储
    //                                                String sql ="CREATE TABLE account_Bank ( " +
    //                                                                    "kahao number not null  ,"
    //                                                                    +"name varchar(18) not null ,  "
    //                                                                    +"sfNum varchar(20) not null , "
    //                                                                    +"balance number(10,2) not null ) ";
    //                                                
    //                                                boolean rs1 = st.execute(sql) ;
    //                                                
                                                    CXCard cd = new CXCard() ;
                                                    
                                                    cd.setBalance(0);             //初始账户余额为零
                                                    String a = kaHao() ;
    //                                                //首先判断生成卡号是否与数据库中卡号重复
    //                                                ResultSet rt = st.executeQuery("select * from account_Bank where kahao = ' "+a+" ' ") ;
    //                                                
    //                                            //对卡号进行遍历
    //                                                if(rt.next())                                                
    //                                                {
    //                                                        kaHao() ;
    //                                                }
                                                    System.out.println("您的卡号为:"+a);
                                                    
    //                                                //将卡号密码存入map集合
    //                                                maps.put(a, mmNum) ;
                                                    
                                                    //将联系人卡号、姓名、身份证号、账户余额存入数据库表格存入
                                                    st.executeUpdate("insert into account_Bank(kahao,name,sfNum,balance,password)"
                                                            +"values(' "+a+" ' , ' "+ss+" ' , ' "+sfNum+" ' , ' "+cd.getBalance()+" ', ' "+mmNum+" ' )") ;
                                                    System.out.println("3");
                                                    ResultSet rst = st.executeQuery("select * from account_Bank") ;
                                                    
                                                    while(rst.next())
                                                    {
                                                        String kh = rst.getString("kahao") ;
                                                        
                                                        String xm = rst.getString("name") ;
                                                        
                                                        String sfz = rst.getString("sfNum") ;
                                                        
                                                        double ye = rst.getDouble("balance") ;
                                                        
                                                        System.out.println("kahao:"+kh+",name:"+xm+",sfNum:"+sfz+"balance:"+ye);
                                                    }
                                                    
                                                    rst.close();
                                                    
                                                    st.close();//关闭,释放资源
                                                    
                                                    conn.close(); //关闭,释放资源
                                                    
                                                } catch (ClassNotFoundException | SQLException e) {
                                                    // TODO 自动生成的 catch 块
                                                    e.printStackTrace();
                                                }
                                                
                                                
                                                System.out.println("银行自助终端系统");
    
                                                System.out.println("************************************");
                                                System.out.println();
                                                System.out.println("0——————开户");
                                                System.out.println("1——————查询");
                                                System.out.println("2——————存款");
                                                System.out.println("3——————取款");
                                                System.out.println("4——————退出");
                                                System.out.println();
                                                System.out.println("************************************");
    
                                                System.out.println();
    
                                                System.out.println("请选择您要执行的功能:");
    
                                                break;
                                            } else {
                                                System.out.println("您两次输入密码不一样,请重新设置密码!");
                                            }
                                        }
                                        break;
                                    } else {
                                        // 如果不是,输出信息提示用户
                                        System.out.println("您输入的密码必须为六位数字!");
                                    }
                                }
                                break;
                            }
    
                            else {
                                // 如果不是,输出信息提示用户
                                System.out.println("请输入合法的身份证号!");
                            }
                            break;
                        }
                        break;
                    }
                }
                break;
            }
            
    
        }
    
        //卡号获取方法
        public String kaHao() {
            String num = "";
    
            for (int i = 0; i < 6; i++) {
                num += (int)(Math.random() * 10) + ""; // 生成六位随机卡号
            }
            return num;
        }
    
    }
    package com.Bank.abc;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    import java.util.Scanner;
    
    import com.Bank.unionpay.ICard;
    
    
    //储蓄卡
    public class CXCard implements ICard 
    {
    
        //属性
        private double balance ;          //账户余额
        
        
        public double getBalance() {
            return balance;
        }
    
        public void setBalance(double balance) {
            this.balance = balance;
        }
    
        AutoATM am = new AutoATM() ;
        
        @Override
        public void chaXun()
        {
            System.out.println("************************************");
            System.out.println("您选择的为查询功能!");
            
            
            //提供用户输入渠道
            while(true)
            {
                System.out.println("请输入您的卡号:");
                Scanner id = new Scanner(System.in) ;
                String idNum = id.nextLine();
            
                
                //判断用户输入卡号是否存在
                
                try {
                    Class.forName("oracle.jdbc.driver.OracleDriver") ;
                    
                    String url = "jdbc:oracle:thin:@localhost:1521:orcl" ;   //本机地址
                    
                    Connection conn = DriverManager.getConnection(url ,"test0816","934617699" );//建立连接
                    
                    Statement st = conn.createStatement() ;
                    
                    //查询用户输入卡号的结果集
                    ResultSet rt =  st.executeQuery("select * from account_Bank where kahao = ' " +idNum +" ' ") ;
                    
                    //  if  else    判断该结果集是否有数据
                    if(rt.next()) 
                    {
                        String ss = rt.getString("password") ;
                        for(int i = 0 ; i<3; i++ )
                        {
                            System.out.println("请输入您的密码:");
                            Scanner mm = new Scanner(System.in) ;
                            String mima = mm.nextLine();
                            if(ss.equals(mima))
                            {
                                System.out.println("姓名:"+rt.getString("name")+" "
                                        +"
    卡号:"+rt.getString("kahao")+" "
                                        +"
    身份证号:"+rt.getString("sfNum")+" "
                                        +"
    账户余额:"+rt.getString("balance"));
                                break ;
                            }
                            else
                            {
                                System.out.println("重新输入密码!");
                            }
                        }
                        break ; //跳出循环
                    }
                    else
                    {
                        System.out.println("卡号不存在!");
                    }
                    
                    st.close();
                    rt.close();
                    conn.close();
                } catch (ClassNotFoundException | SQLException e) {
                    // TODO 自动生成的 catch 块
                    e.printStackTrace();
                }   //驱动加载
            }
        }
    
        @Override
        public void cunKuan() 
        {
            System.out.println("************************************");
            System.out.println("您选择的为存款功能!");
            
            
            //提供用户输入渠道
            while(true)
            {
                System.out.println("请输入您的卡号:");
                Scanner id = new Scanner(System.in) ;
                String idNum = id.nextLine();
            
                
                //判断用户输入卡号是否存在
                
                try {
                    Class.forName("oracle.jdbc.driver.OracleDriver") ;
                    
                    String url = "jdbc:oracle:thin:@localhost:1521:orcl" ;   //本机地址
                    
                    Connection conn = DriverManager.getConnection(url ,"test0816","934617699" );//建立连接
                    
                    Statement st = conn.createStatement() ;
                    
                    //查询用户输入卡号的结果集
                    ResultSet rt =  st.executeQuery("select * from account_Bank where kahao = ' " +idNum +" ' ") ;
                    
                    //  if  else    判断该结果集是否有数据
                    if(rt.next()) 
                    {
                        String ss = rt.getString("password") ;
                        
                        for(int i = 0 ; i<3; i++ )
                        {
                            System.out.println("请输入您的密码:");
                            
                            Scanner mm = new Scanner(System.in) ;
                            
                            String mima = mm.nextLine();
                            
                            if(ss.equals(mima))
                            {
                                System.out.println("姓名:"+rt.getString("name")+" "
                                        +"
    卡号:"+rt.getString("kahao")+" "
                                        +"
    身份证号:"+rt.getString("sfNum")+" "
                                        +"
    账户余额:"+rt.getString("balance"));
                                
                                System.out.println("请输入您要存款的金额");
                                
                                Scanner sr = new Scanner(System.in) ;//存款金额
                                
                                double money = sr.nextDouble();
                                
                                if(money>0) 
                                {
                                    double yue = rt.getDouble("balance") ;
                                    
                                    double sum =yue + money ;
                                    
                                    //将用户新的余额修改在数据库中
                                    st.executeUpdate("update account_bank set balance= ' "
                                            +sum+" '  where kahao = ' " +idNum +" ' ") ;
                                    
                                    System.out.println("存款成功!
     返回主界面请按1");
                                    
                                    Scanner sss= new Scanner(System.in) ;
                                    
                                    int  t = sss.nextInt() ;
                                    if(t==1)
                                    {
                                        System.out.println("银行自助终端系统");
                                        
                                        System.out.println("************************************");
                                        System.out.println();
                                        System.out.println("0——————开户");
                                        System.out.println("1——————查询");
                                        System.out.println("2——————存款");
                                        System.out.println("3——————取款");
                                        System.out.println("4——————退出");
                                        System.out.println();
                                        System.out.println("************************************");
                                        
                                        System.out.println();
                                        
                                        System.out.println("请选择您要执行的功能:");
                                    }
                                    break ;
                                }
                                else
                                {
                                    System.out.println("您的存款金额不对!");
                                    System.out.println("请重新输入密码,进行相关操作,您还有"+(3-i)+"次机会");
                                }
                                
                            }
                            else
                            {
                                System.out.println("重新输入密码!");
                            }
                        }
                        break ; //跳出循环
                    }
                    else
                    {
                        System.out.println("卡号不存在!");
                    }
                    st.close();
                    rt.close();
                    conn.close();
                } catch (ClassNotFoundException | SQLException e) {
                    // TODO 自动生成的 catch 块
                    e.printStackTrace();
                }   //驱动加载
            }
        }
    
        @Override
        public void quKuan() 
        {
            System.out.println("************************************");
            System.out.println("您选择的为取款功能!");
            
            
            //提供用户输入渠道
            while(true)
            {
                System.out.println("请输入您的卡号:");
                Scanner id = new Scanner(System.in) ;
                String idNum = id.nextLine();
            
                
                //判断用户输入卡号是否存在
                
                try {
                    Class.forName("oracle.jdbc.driver.OracleDriver") ;
                    
                    String url = "jdbc:oracle:thin:@localhost:1521:orcl" ;   //本机地址
                    
                    Connection conn = DriverManager.getConnection(url ,"test0816","934617699" );//建立连接
                    
                    Statement st = conn.createStatement() ;
                    
                    //查询用户输入卡号的结果集
                    ResultSet rt =  st.executeQuery("select * from account_Bank where kahao = ' " +idNum +" ' ") ;
                    
                    //  if  else    判断该结果集是否有数据
                    if(rt.next()) 
                    {
                        String ss = rt.getString("password") ;
                        
                        for(int i = 0 ; i<3; i++ )
                        {
                            System.out.println("请输入您的密码:");
                            
                            Scanner mm = new Scanner(System.in) ;
                            
                            String mima = mm.nextLine();
                            
                            if(ss.equals(mima))
                            {
                                System.out.println("姓名:"+rt.getString("name")+" "
                                        +"
    卡号:"+rt.getString("kahao")+" "
                                        +"
    身份证号:"+rt.getString("sfNum")+" "
                                        +"
    账户余额:"+rt.getString("balance"));
                                
                                System.out.println("请输入您要取款的金额");
                                
                                Scanner sr = new Scanner(System.in) ;//存款金额
                                
                                double money = sr.nextDouble();
                                
                                if(money>0) 
                                {
                                    double yue = rt.getDouble("balance") ;
                                    if(money <= yue)
                                    {
                                        double sum =yue - money ;
                                    
                                        //将用户新的余额修改在数据库中
                                        st.executeUpdate("update account_bank set balance= ' "
                                            +sum+" '  where kahao = ' " +idNum +" ' ") ;
                                    
                                        System.out.println("取款成功!
     返回主界面请按1");
                                        
                                        Scanner sss= new Scanner(System.in) ;
                                        
                                        int  t = sss.nextInt() ;
                                        if(t==1)
                                        {
                                            System.out.println("银行自助终端系统");
                                            
                                            System.out.println("************************************");
                                            System.out.println();
                                            System.out.println("0——————开户");
                                            System.out.println("1——————查询");
                                            System.out.println("2——————存款");
                                            System.out.println("3——————取款");
                                            System.out.println("4——————退出");
                                            System.out.println();
                                            System.out.println("************************************");
                                            
                                            System.out.println();
                                            
                                            System.out.println("请选择您要执行的功能:");
                                        }
                                        break ;
                                        
                                    
                                    }
                                    else
                                    {
                                        System.out.println("您的账户余额不足!");
                                        System.out.println("请重新输入密码,进行相关操作,您还有"+(3-i)+"次机会");
                                    }
                                }
                                else
                                {
                                    System.out.println("您的取款金额不对!");
                                    System.out.println("请重新输入密码,进行相关操作,您还有"+(3-i)+"次机会");
                                }
                                
                            }
                            else
                            {
                                System.out.println("重新输入密码!");
                            }
                        }
                        break ; //跳出循环
                    }
                    else
                    {
                        System.out.println("卡号不存在!");
                    }
                    st.close();
                    rt.close();
                    conn.close();
                } catch (ClassNotFoundException | SQLException e) {
                    // TODO 自动生成的 catch 块
                    e.printStackTrace();
                }   //驱动加载
            }
        }
    
    }
    package com.Bank.test;
    
    import java.util.Scanner;
    
    import com.Bank.abc.AutoATM;
    import com.Bank.abc.CXCard;
    
    public class Test {
    
        public static void main(String[] args)
        {
            CXCard cd = new CXCard() ;
            
            AutoATM am = new AutoATM() ;
            
            System.out.println("银行自助终端系统");
            
            System.out.println("************************************");
            System.out.println();
            System.out.println("0——————开户");
            System.out.println("1——————查询");
            System.out.println("2——————存款");
            System.out.println("3——————取款");
            System.out.println("4——————退出");
            System.out.println();
            System.out.println("************************************");
            
            System.out.println();
            
            System.out.println("请选择您要执行的功能:");
            while(true)
            {
                //提供输入
                Scanner sc = new Scanner(System.in) ;
                int it = sc.nextInt( ) ;
                try
                {
                    if(it==0)
                    {
                        am.kaiHu();
                    }
                    if(it==1)
                    {
                        cd.chaXun();
                    }
                    if(it==2)
                    {
                        cd.cunKuan();
                    }
                    if(it==3)
                    {
                        cd.quKuan();
                    }
                    if(it==4)
                    {
                        System.out.println("系统即将退出!");
                        break ;
                    }
                }
                catch(Exception e)
                {
                    System.out.println("输入有误!");
                    System.out.println("银行自助终端系统");
                    
                    System.out.println("************************************");
                    System.out.println();
                    System.out.println("0——————开户");
                    System.out.println("1——————查询");
                    System.out.println("2——————存款");
                    System.out.println("3——————取款");
                    System.out.println("4——————退出");
                    System.out.println();
                    System.out.println("************************************");
                    
                    System.out.println();
                    
                    System.out.println("请选择您要执行的功能:");
                }
            }
            
            
        }
    }

     

     

     

  • 相关阅读:
    面向对象的继承关系体现在数据结构上时,如何表示
    codeforces 584C Marina and Vasya
    codeforces 602A Two Bases
    LA 4329 PingPong
    codeforces 584B Kolya and Tanya
    codeforces 584A Olesya and Rodion
    codeforces 583B Robot's Task
    codeforces 583A Asphalting Roads
    codeforces 581C Developing Skills
    codeforces 581A Vasya the Hipster
  • 原文地址:https://www.cnblogs.com/20gg-com/p/5980749.html
Copyright © 2011-2022 走看看