• 银行——————————账户信息存入数据库


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

    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("请选择您要执行的功能:");
                }
            }
            
            
        }
    }

     

     

     

  • 相关阅读:
    dedecms织梦修改标题默认长度
    Python正课68 —— 实现面向对象编程
    Python正课67 —— 面向对象介绍
    Win10系统下提示VMware与Device/Credential Guard不兼容的解决方法
    周考5 月考1 内容
    Python正课66 —— ATM + 购物车 小有成就
    Python正课65 —— ATM + 购物车 架构
    Python正课64 —— re模块
    Python正课63 —— logging模块
    Python正课62 —— subprocess模块
  • 原文地址:https://www.cnblogs.com/20gg-com/p/5980749.html
Copyright © 2020-2023  润新知