1、界面:包含开户、查询、存款、取款、功能

 1 package com.bank.test;
 2 /**
 3  *
 4  * @author Administrator
 5  *界面类
 6  */
 7 public class Jiemian {
 8     public static void jiemian() {
 9         System.out.println("银行自助终端系统");
10         System.out.println("****************************");
11         System.out.println("0.------开户");
12         System.out.println("1.------查询");
13         System.out.println("2.------存款");
14         System.out.println("3.------取款");
15         System.out.println("4.------退出");
16         System.out.println("****************************");
17         System.out.println("请选择你要执行的功能:");
18     }
19 }

2、ATM子类——实现开户功能,将新开户信息写入数据库

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Random;
import java.util.Scanner;import com.bank.unionpay.ATM;
import com.bank.unionpay.Bank;
/*** * @author Administrator*ATM机的子类*/public class ATMzi extends ATM{private final Bank ABC=Bank.ABC;                    //银行类型(枚举类型=ABC)
    @Overridepublic void Kaihu() {                               //开户功能Bankchuxu bk=new Bankchuxu(); System.out.println("请输入您的姓名:");while(true){                                    //输入姓名try{                                        //异常处理Scanner sc=new Scanner(System.in);bk.setName(sc.nextLine());break;}catch(Exception e){System.out.println("输入有误!");System.out.println("请重新输入:");continue;}}while(true){                                         //输入身份证号try{System.out.println("请输入您的身份证号:");Scanner sc=new Scanner(System.in);String a=sc.nextLine();String regex="\\d{15}|\\d{17}[\\dxX]";                  //正则表达式控制身份证号if(a.matches(regex)){bk.setIDcard(a);break;}else{System.out.println("身份证号格式输入有误!");continue;}}catch(Exception e){System.out.println("输入有误!");System.out.println("请重新输入:");continue;}}while(true){                                    //输入密码try{System.out.println("请输入6位纯数字密码:");Scanner sc=new Scanner(System.in);String a=sc.nextLine();String regex="\\d{6}";                        //正则表达式控制密码if(a.matches(regex)){bk.setPassword(a);break;}else{System.out.println("输入密码格式有误!");continue;}}catch(Exception e){System.out.println("输入有误!");System.out.println("请重新输入:");continue;}}while(true){    Random a=new Random();Long c=a.nextLong();                //生成储蓄卡号String regex="\\d{19}";if(c>0&&c.toString().matches(regex)){bk.setCard(c);           //将生成的储蓄卡号赋给储蓄卡卡号属性try {// 访问数据库//1、加载驱动:加载数据库提供的驱动类Class.forName("oracle.jdbc.driver.OracleDriver");//2、获取数据库连接,通过java的驱动管理器//url-数据库地址,不同的数据库写法不一样;user-用户名;password-密码Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl ","test01", "131281huazioo");//操作数据库——增删改查//3、获得操作数据库的声明Statement st=conn.createStatement();//4、DML增加数据,执行更新操作int i=st.executeUpdate("insert into BANKCARD values('"+bk.getCard()+"','"+bk.getName()+"','"+bk.getPassword()+"','"+bk.getYue()+"','"+bk.getIDcard()+"')");//关闭声明,释放资源
                    st.close();//关闭连接
                    conn.close();} catch (Exception e) {e.printStackTrace();}System.out.println("您的账号为:"+bk.getCard());break;}else{continue;}}}
}

3、储蓄卡类——实现查询、存款、取款功能

 1 import java.io.BufferedReader;
 2 import java.io.FileOutputStream;
 3 import java.io.FileReader;
 4 import java.sql.Connection;
 5 import java.sql.DriverManager;
 6 import java.sql.ResultSet;
 7 import java.sql.Statement;
 8 import java.util.Scanner;
 9
10 import com.bank.test.Jiemian;
11 import com.bank.unionpay.Bank;
12 import com.bank.unionpay.Yinlian;
13
14 /**
15  *
16  * @author Administrator
17  *储蓄卡类
18  */
19 public class Bankchuxu implements Yinlian{
20     protected final Bank ABC=Bank.ABC;                    //银行类型(枚举类型=ABC)
21     private String name;                                //姓名
22     private String IDcard;                                //身份证号
23     protected long card;                                //银行卡号
24     private String password;                               //密码
25     protected int yue;                              //余额
26     //储蓄卡号get、set方法
27     public long getCard() {
28         return card;
29     }
30     public void setCard(long card) {
31         this.card = card;
32     }
33     //姓名get、set方法
34     public String getName() {
35         return name;
36     }
37     public void setName(String name) {
38         this.name = name;
39     }
40     //身份证号get、set方法
41     public String getIDcard() {
42         return IDcard;
43     }
44     public void setIDcard(String iDcard) {
45         IDcard = iDcard;
46     }
47     //密码get、set方法
48     public String getPassword() {
49         return password;
50     }
51     public void setPassword(String password) {
52         this.password = password;
53     }
54     //余额get、set方法
55     public int getYue() {
56         return yue;
57     }
58     public void setYue(int yue) {
59         this.yue = yue;
60     }

查询功能:通过输入的卡号,从数据库中查询数据,存在将数据打印出来

 1 public void Chaxun(Yinlian yinl) {              //查询功能
 2
 3         System.out.println("请输入您要查的账号:");                  //输入账号
 4         while(true){
 5             try{
 6                 Scanner sc=new Scanner(System.in);
 7                 long a=sc.nextLong();
 8                 // 访问数据库
 9                 //1、加载驱动:加载数据库提供的驱动类
10                 Class.forName("oracle.jdbc.driver.OracleDriver");
11
12                 //2、获取数据库连接,通过java的驱动管理器
13                 //url-数据库地址,不同的数据库写法不一样;user-用户名;password-密码
14                 Connection conn = DriverManager.getConnection(
15                         "jdbc:oracle:thin:@localhost:1521:orcl ",
16                         "test01", "131281huazioo");
17
18                 //操作数据库——增删改查
19                 //3、获得操作数据库的声明
20                 Statement st=conn.createStatement();
21                 //5、查询数据
22                 //ResultSet 数据结果集
23                 ResultSet rs = st.executeQuery("select * from BANKCARD where card='"
24                         +a+"'");
25                 //遍历结果集
26                 //next()判断是否存在下一条记录,移动指针到下一条记录
27                 if(rs.next())
28                 {
29                     String pw=rs.getString("password");
30                     System.out.println("请输入您的密码:");            //输入密码
31                     int i=0;
32                     while(true){
33                     Scanner s=new Scanner(System.in);
34                         String pws=s.nextLine();
35                             if(pws.equals(pw)){                           //验证密码
36                                 System.out.println("你查询的账号信息为:");
37                                 System.out.println("******************************");
38                                 System.out.println("姓名     身份证号                                     卡号                             金额");
39                                 System.out.println(rs.getString("name")+" "+rs.getString("idcard")+" "+rs.getString("card")+" "+rs.getString("yue"));
40                                 break;
41                             }else{
42                                 i++;
43                                 if(i==3){                                               //控制输入次数最多3次
44                                     System.out.println("密码输错超过3次,无法继续输入!");
45                                     break;
46                                 }else{
47                                     System.out.println("密码输入错误!请重新输入:");
48                                     continue;
49                                 }
50                             }
51                         }
52                     //关闭数据结果集,释放资源
53                     rs.close();
54                     //关闭声明,释放资源
55                     st.close();
56                     //关闭连接
57                     conn.close();
58                         break;
59                 }else{
60                     System.out.println("您输入的卡号不存在,请重新输入:");
61                     continue;
62                 }
63
64             }catch(Exception e){
65                 System.out.println("您输入的账号格式有误!");
66                 System.out.println("请重新输入:");
67                 continue;
68             }
69         }
70     }

存款功能:通过输入的卡号从数据库中查询数据,若存在,则将重新计算的余额通过修改数据改到相应的余额中

 1     public void Cunkuan(Yinlian yinl) { // 存款
 2
 3         System.out.println("请输入您要存款的账号:");
 4         while (true) {
 5             try {
 6                 Scanner sc = new Scanner(System.in);
 7                 long a = sc.nextLong();
 8                 // 访问数据库
 9                 // 1、加载驱动:加载数据库提供的驱动类
10                 Class.forName("oracle.jdbc.driver.OracleDriver");
11
12                 // 2、获取数据库连接,通过java的驱动管理器
13                 // url-数据库地址,不同的数据库写法不一样;user-用户名;password-密码
14                 Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl ", "test01",
15                         "131281huazioo");
16
17                 // 操作数据库——增删改查
18                 // 3、获得操作数据库的声明
19                 Statement st = conn.createStatement();
20                 // 5、查询数据
21                 // ResultSet 数据结果集
22                 ResultSet rs = st.executeQuery("select * from BANKCARD where card='" + a + "'");
23                 // 遍历结果集
24                 // next()判断是否存在下一条记录,移动指针到下一条记录
25
26                 if (rs.next()) { // 验证卡号
27                     String pw = rs.getString("password");
28                     System.out.println("请输入您的密码:"); // 输入密码
29                     int i = 0;
30                     while (true) {
31                         Scanner s = new Scanner(System.in);
32                         String pws = s.nextLine();
33                         if (pws.equals(pw)) { // 验证密码
34                             System.out.println("您要存款的账号信息为:");
35                             System.out.println("******************************");
36                             System.out.println(
37                                     "姓名     身份证号                                     卡号                                       金额");
38                             System.out.println(rs.getString("name") + "   " + rs.getString("idcard") + "   "
39                                     + rs.getString("card") + "   " + rs.getString("yue"));
40                             while (true) {
41                                 try {
42                                     System.out.println("请输入存款金额:");
43                                     Scanner cun = new Scanner(System.in);
44                                     int jine = cun.nextInt(); // 输入存款金额
45                                     if (jine < 0) {
46                                         System.out.println("您输入的数据无效,系统将自动退出!谢谢使用"); // 负数提示
47                                         break;
48                                     } else {
49                                         yue = rs.getInt("yue");
50                                         yue += jine; // 重新计算余额
51                                         try {
52                                             int ss = st.executeUpdate(
53                                                     "update bankcard set yue='" + yue + "' where card='" + a + "'");
54                                         } catch (Exception e) {
55                                             e.printStackTrace();
56                                         }
57                                         System.out.println("存款成功,谢谢使用!");
58                                         break;
59                                     }
60                                 } catch (Exception e) {
61                                     System.out.println("您输入的存款金额格式有误!");
62                                     System.out.println("请重新输入:");
63                                     continue;
64                                 }
65                             }
66                             break;
67                         } else {
68                             i++;
69                             if (i == 3) { // 控制输入次数最多3次
70                                 System.out.println("密码输错超过3次,无法继续输入!");
71                                 break;
72                             } else {
73                                 System.out.println("密码输入错误!请重新输入:");
74                                 continue;
75                             }
76                         }
77                     }
78                     //关闭数据结果集,释放资源
79                     rs.close();
80                     //关闭声明,释放资源
81                     st.close();
82                     //关闭连接
83                     conn.close();
84                     break;
85                 } else {
86                     System.out.println("您输入的卡号不存在,请重新输入:");
87                     continue;
88                 }
89             } catch (Exception e) {
90                 System.out.println("您输入的账号格式有误!");
91                 System.out.println("请重新输入:");
92                 continue;
93             }
94         }
95     }

取款功能:通过输入的卡号从数据库中查询数据,若存在,则将重新计算的余额通过修改数据改到相应的余额中

    @Overridepublic void Qukuan(Yinlian yinl) { // 取款System.out.println("请输入您要取款的账号:");while(true){try{Scanner sc=new Scanner(System.in);long a=sc.nextLong();// 访问数据库//1、加载驱动:加载数据库提供的驱动类Class.forName("oracle.jdbc.driver.OracleDriver");//2、获取数据库连接,通过java的驱动管理器//url-数据库地址,不同的数据库写法不一样;user-用户名;password-密码Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl ","test01", "131281huazioo");//操作数据库——增删改查//3、获得操作数据库的声明Statement st=conn.createStatement();//5、查询数据//ResultSet 数据结果集ResultSet rs = st.executeQuery("select * from BANKCARD where card='"+a+"'");//遍历结果集//next()判断是否存在下一条记录,移动指针到下一条记录if(rs.next()){          //验证卡号String pw=rs.getString("password");yue=rs.getInt(yue);System.out.println("请输入您的密码:");            //输入密码int i=0;while(true){Scanner qumi=new Scanner(System.in);String pws=qumi.nextLine();if(pws.equals(pw)){  //验证密码System.out.println("您要取款的账号信息为:");System.out.println("******************************");System.out.println("姓名     身份证号                                     卡号                                       金额");System.out.println(rs.getString("name")+"   "+rs.getString("idcard")+"   "+rs.getString("card")+"   "+rs.getString("yue"));while(true){try{System.out.println("请输入取款金额:");Scanner quj=new Scanner(System.in);int jine=quj.nextInt();                      //输入存款金额if(jine>yue||jine<0){System.out.println("您输入的数据无效,系统将自动退出!谢谢使用");       //负数提示break;}else{yue-=jine;                              //重新计算余额try {int ss=st.executeUpdate("update bankcard set yue='"+yue+"' where card='"+a+"'");} catch (Exception e) {e.printStackTrace();}System.out.println("取款成功,谢谢使用!");break;}}catch(Exception e){System.out.println("您输入的存款金额格式有误!");System.out.println("请重新输入:");continue;}}break;}else{i++;if(i==3){                                               //控制输入次数最多3次System.out.println("密码输错超过3次,无法继续输入!");break;}else{System.out.println("密码输入错误,请重新输入:");continue;}}}//关闭数据结果集,释放资源
                    rs.close();//关闭声明,释放资源
                    st.close();//关闭连接
                    conn.close();break;}else{System.out.println("您输入的卡号不存在,请重新输入:");continue;}}catch(Exception e){System.out.println("您输入的账号格式有误!");System.out.println("请重新输入:");continue;}}    }
}

测试类:

 1 import java.util.Scanner;
 2
 3 import com.bank.abc.ATMzi;
 4 import com.bank.abc.Bankchuxu;
 5 import com.bank.abc.Bankclass;
 6 import com.bank.unionpay.Yinlian;
 7
 8 /**
 9  *
10  * @author Administrator
11  *测试类
12  */
13 public class Test {
14     public static void main(String[] args) {
15         Jiemian.jiemian();                                       //调界面
16         Yinlian yinl=new Bankchuxu();
17         while(true){                                             //死循环实现输入错误返回
18             Scanner sc=new Scanner(System.in);
19             try{                                                 //输入异常
20                 int shuru=sc.nextInt();
21                 switch(shuru){
22                 case 0:
23                     System.out.println("****************************");
24                     System.out.println("您选择的为开户功能");
25                     ATMzi a=new ATMzi();
26                     a.Kaihu();                                     //调用开户
27                     System.out.println("开户成功!");
28                     Jiemian.jiemian();
29                     break;
30                 case 1:
31                     System.out.println("****************************");
32                     System.out.println("您选择的为查询功能");
33                     yinl.Chaxun(yinl);
34                     Jiemian.jiemian();
35                     break;
36                 case 2:
37                     System.out.println("****************************");
38                     System.out.println("您选择的为存款功能");
39                     yinl.Cunkuan(yinl);
40                     Jiemian.jiemian();
41                     break;
42                 case 3:
43                     System.out.println("****************************");
44                     System.out.println("您选择的为取款功能");
45                     yinl.Qukuan(yinl);
46                     Jiemian.jiemian();
47                     break;
48                 case 4:
49                     System.out.println("谢谢使用!");
50                     break;
51                 default:
52                     System.out.println("您选择的菜单不存在!");
53                     System.out.println("请重新选择:");
54                     continue;
55                 }
56                 if(shuru==4)break;
57             }catch(Exception e){
58                 System.out.println("输入有误!");
59                 System.out.println("请重新选择:");
60             }
61         }
62     }
63 }

其它类:接口、枚举、单例等

 1 package com.bank.unionpay;
 2 /**
 3  *
 4  * @author Administrator
 5  *银联接口
 6  */
 7 public interface Yinlian {
 8     void Chaxun(Yinlian yinl);             //查询余额
 9     void Cunkuan(Yinlian yinl);           //存款
10     void Qukuan(Yinlian yinl);            //取款
11 }

 1 package com.bank.unionpay;
 2 /**
 3  *
 4  * @author Administrator
 5  *四大银行——枚举
 6  */
 7 public enum Bank {
 8     ABC("农行"),ICBC("工行"),CCB("建行"),BOC("中行");     //枚举类型    枚举列表
 9     private final String name;             //常量银行名
10     public String getName(){               //getter方法返回银行名
11         return this.name;
12     }
13     private Bank(String name){             //私有构造方法
14         this.name=name;
15     }
16 }

 1 package com.bank.unionpay;
 2
 3 import java.util.Scanner;
 4
 5 /**
 6  *
 7  * @author Administrator
 8  *ATM机抽象类
 9  */
10 public abstract class ATM {
11     private int yue;                  //变量余额
12     public abstract void Kaihu();     //抽象方法——开户
13     public int getYue() {             //get余额方法
14         return yue;
15     }
16     public void setYue(int yue) {     //set余额方法
17         this.yue = yue;
18     }
19     public void Chaxun(Yinlian yinl) {              //查询余额
20         System.out.println("您的账户余额为:"+yue);
21     }
22     public void Cunkuan(Yinlian yinl) {             //存款
23         while(true){
24             System.out.println("请输入存款金额:");
25             Scanner sc=new Scanner(System.in);
26             int jine=sc.nextInt();                      //输入存款金额
27             if(jine<0){
28                 System.out.println("输入有误!");       //负数提示
29                 continue;
30             }else{
31                 yue+=jine;                              //重新计算余额
32                 break;
33             }
34         }
35     }
36     public void Qukuan(Yinlian yinl) {                  //取款
37         while(true){
38             System.out.println("请输入取款金额:");
39             Scanner sc=new Scanner(System.in);
40             int jine=sc.nextInt();                      //输入取款金额
41             if(jine<=yue){
42                 yue-=jine;                              //重新计算余额
43                 break;
44             }else if(jine>yue){
45                 System.out.println("余额不足,无法取款!");      //余额不足提示
46                 continue;
47             }else{
48                 System.out.println("输入有误!");               //负数提示
49                 continue;
50             }
51         }
52     }
53 }

package com.bank.abc;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;import com.bank.unionpay.Bank;
/*** * @author Administrator*银行类——单例模式*/
public class Bankclass {private Bankclass(){                 //禁止外部访问构造方法
        }private static Bankclass bank=new Bankclass();      //内部产生唯一实例public static Bankclass getBankclass()              //开放一个方法给调用者返回这个实例
    {    return bank;}private final Bank ABC=Bank.ABC;                    //银行类型(枚举类型=ABC)private String bankname;                                //银行名称public List<Long> card=new ArrayList();                //银行卡列表——集合public Map<Long,Bankchuxu> Account=new HashMap<>();       //账号储蓄卡集合
}

测是结果

转载于:https://www.cnblogs.com/jingzhenhua/p/5982558.html

连接数据库——模拟ATM机查、存、取、开户功能相关推荐

  1. 模拟ATM机存取款管理系统设计(C++)

    模拟ATM机存取款管理系统设计 有问题欢迎私信哦 1.1问题描述: 模拟银行自动存取款机使用过程中的界面和用户交互过程,实现查询银行卡余额.取款.修改密码.退出系统等功能. 1.2基本要求(功能要求) ...

  2. 模拟ATM机存取款管理系统C语言课程设计

    模拟ATM机存取款管理系统(只列出了大体的框架,需要源码的朋友请私信联系.) 1.问题描述 模拟银行的自动取款机使用过程中的界面和用户交互过程.实现查询银行卡余额.取款.修改密码.退出系统等功能. 2 ...

  3. java web atm机_java笔记——模拟ATM机例子

    模拟ATM机,实现用户登录.查询.取款.存款和退出. 假定一个银行卡账户,程序执行的时候提示用户输入账号,然后输入密码,如果输入内容不符合规范,则程序会给出相应提示,连续3次输入有误,则退出系统.登录 ...

  4. 模拟ATM机银行系统

    淄博汉企Java基础考核项目 模拟银行自助终端系统 一. 本系统模拟银行用户使用ATM机开户.查询.存款.取款功能,要求使用java语言编程实现. 说明: 1. 对于数据输入异常,可使用java异常处 ...

  5. c语言模拟自动饮料机,C语言--小程序--简单模拟ATM机

    原标题:C语言--小程序--简单模拟ATM机 ATM.H #ifndef ATM_h #define ATM_h #include #include #include typedef struct _ ...

  6. Java模拟ATM机系统

    要求: 模拟ATM机系统的登陆.显示个人信息.存取款等基本功能. 图形用户界面,要有登陆界面,主界面有菜单: 连接MySQL数据库:服务器端存放用户账户信息: 实现存.取款,查询余额.显示个人信息等功 ...

  7. c语言做出的atm机怎样运行,c语言模拟ATM机界面

    问题描述: 相信大家都在ATM机上取过钱吧,本博客将模拟ATM机的界面以及实现简易的功能(账户密码修改,账户余额查询,取款,存款) 鉴于水平有限,如有不足之处,请多多指教 头文件:ATM.H #ifn ...

  8. java程序模拟atm机_Java项目实现模拟ATM机

    本文实例为大家分享了Java实现模拟ATM机的具体代码,供大家参考,具体内容如下 项目名称 模拟ATM机 项目描述 简单实现ATM机功能 代码实现 测试类 public class Test { // ...

  9. java web atm机_Java项目实现模拟ATM机

    本文实例为大家分享了Java实现模拟ATM机的具体代码,供大家参考,具体内容如下 项目名称 模拟ATM机 项目描述 简单实现ATM机功能 代码实现 测试类 public class Test { // ...

最新文章

  1. 收藏!中国卫星互联网产业发展白皮书
  2. Eclipse 配置 maven 的两个 settings 文件
  3. 多线程读取同一个文件_前端进阶:多线程Web Workers的工作原理及使用场景
  4. 安卓开发fragment之间的切换_Android开发必会的组件化技术—Android架构和提升必备...
  5. html怎么让方块自动旋转,如何使用纯CSS实现一个圆环旋转错觉的动画效果(附源码)...
  6. 2016030206 - mysql常用命令
  7. 码农干私活的建议(转)
  8. 他们在大学本科实现童年梦想!自研火箭,飞向外太空,创造人类新纪录
  9. OCR文字识别技术总结(三)
  10. 想用好大数据,你需要先了解这些事
  11. C#中声明、调用和配置事件的演示源码
  12. java64字节指令包,JVM 字节码指令解析
  13. Eucalyptus学习汇总
  14. 学习java兴趣之作模仿原神抽卡模块。希望哥、姐指点一下以下是代码;
  15. 如何用电脑制作VR全景图
  16. Android 自动检测版本更新(包含强制更新)并安装
  17. 随机创建圆形、三角形或者矩形类的对象, 存放在数组中,并计算出每个形状的面积和周长
  18. C++表白代码(较差)
  19. Python PIL.Image之制作GIF图片
  20. 农夫过河——python贪心算法实现

热门文章

  1. Python 兵器谱
  2. rt-thread+SAL+W5500 以太网Socket通信
  3. 程序员眼中的 Eclipse
  4. 如何报p20手机数据导入计算机,华为P20系列手机与电脑共享内容传输文件的方法...
  5. 操作系统_第三章处理器管理_批处理作业的调度算法
  6. [linux]platform总线机制与wtd驱动开发
  7. LInux查看系统信息命令
  8. 数据库 not in 的坑
  9. BlackHat USA 2021 洞察(三):议题技术解读
  10. 步进电机 步距角 编码器_我如何迈出了学习编码的第一步