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

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

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")+" "
                                    +"\r卡号:"+rt.getString("kahao")+" "
                                    +"\r身份证号:"+rt.getString("sfNum")+" "
                                    +"\r账户余额:"+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")+" "
                                    +"\r卡号:"+rt.getString("kahao")+" "
                                    +"\r身份证号:"+rt.getString("sfNum")+" "
                                    +"\r账户余额:"+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("存款成功!\r 返回主界面请按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")+" "
                                    +"\r卡号:"+rt.getString("kahao")+" "
                                    +"\r身份证号:"+rt.getString("sfNum")+" "
                                    +"\r账户余额:"+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("取款成功!\r 返回主界面请按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("请选择您要执行的功能:");
            }
        }
        
        
    }
}

 

 

 

 

 

 

 

 

posted @ 2016-10-20 14:33  丶疏影横斜  阅读(3043)  评论(0编辑  收藏  举报