数据库存储ATM机,开户、查询等信息
- package com.bank.unionpay;
- //银行卡的接口
- public interface I_yinhangka
- {
- //抽象方法
- //public abstract默认修饰抽象的
- public abstract void cxyue();//查询余额
- void cunkuan();//存款
- void qukuan();//取款
- void accound();//账户
- }
- package com.bank.unionpay;
- import java.util.ArrayList;
- import java.util.List;
- public class Zhujiemian {
- public void zhujiemian()
- {
- System.out.println("银行自助终端系统");
- System.out.println();
- System.out.println("************************");
- List<String> li=new ArrayList<>();
- li.add("开户");
- li.add("查询");
- li.add("存款");
- li.add("取款");
- li.add("退出");
- for(int i=0;i<5;i++)
- {
- System.out.println(i+"------"+li.get(i));
- }
- System.out.println();
- System.out.println("请选择您要执行的功能");
- }
- }
- package com.bank.unionpay;
- public abstract class Atm implements I_yinhangka
- {
- String leixing;//银行卡类型
- String accound;//账户
- double qukuan;//取款
- double cunkuan;//存款
- double cxyue ;//余额
- String name;
- String sfzheng;//省份证号
- public Atm(String name,String sfzheng,String accound, double cxyue ) {
- super();
- this.accound = accound;
- this.cxyue = cxyue;
- this.name = name;
- this.sfzheng = sfzheng;
- }
- public Atm() {
- super();
- }
- @Override
- public void cxyue()
- {
- // 查询余额
- cxyue-=qukuan;
- cxyue+=cunkuan;
- System.out.println("您的余额="+cxyue);
- }
- @Override
- public void cunkuan()
- {
- // 存款
- cxyue+=cunkuan;
- System.out.println("存款成功,您的存款金额为"+cunkuan);
- System.out.println("本次操作后您的余额为:"+cxyue);
- }
- @Override
- public void qukuan()
- {
- // 取款
- cxyue-=qukuan;
- if(cxyue>=0)
- {
- System.out.println("取款成功,本次取款金额= "+qukuan);
- System.out.println("本次操作后您的余额= "+cxyue);
- }
- else
- {
- System.out.println("余额不足,无法取款");
- }
- }
- @Override
- public void accound() {
- // 账户
- }
- //声明成员方法
- public double qukuan(double qukuan)//取款
- {
- cxyue-=qukuan;
- if(cxyue>=0)
- {
- System.out.println("取款成功,本次取款金额= "+qukuan);
- System.out.println("本次操作后您的余额= "+cxyue);
- }
- else
- {
- System.out.println("余额不足,无法取款");
- }
- return qukuan;
- }
- public double cunkuan(double cunkuan)//存款
- {
- cxyue+=cunkuan;
- System.out.println("存款成功,您的存款金额为"+cunkuan);
- System.out.println("本次操作后您的余额为:"+cxyue);
- return cunkuan;
- }
- public double cxyue(double cxyue)
- {
- cxyue-=qukuan;
- cxyue+=cunkuan;
- System.out.println("您的余额="+cxyue);
- return cxyue;
- }
- //添加开户的抽象方法
- public abstract void kaihu();
- }
- package com.bank.unionpay;
- //银行枚举类型
- public enum Leixing
- {
- ABC("农行"),ICBC("工行"),CCB("建行"),BOC("中行");
- private final String leixing;
- public String getLeixing()
- {
- return this.leixing;
- }
- //构造方法
- private Leixing(String leixing)
- {
- this.leixing=leixing;
- }
- }
- package com.bank.abc;
- import java.io.Serializable;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import com.bank.unionpay.Leixing;
- //单利模式
- public class Bank implements Serializable
- {
- private Bank()//禁止外部访问构造方法
- {
- }
- private static Bank bank=new Bank();//内部产生唯一实例
- public static Bank getBank()//开放一个方法给调用者返回这个实例
- {
- return bank;
- }
- final Leixing lx=Leixing.ABC;//农行类型
- private String yhName;//银行名称
- public List <String>card=new ArrayList<>();//银行卡列表
- //public Map<String, CxCard > account=new HashMap<>();//账号储蓄卡集合
- }
- package com.bank.abc;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.SQLException;
- import java.sql.Statement;
- import java.util.Random;
- import java.util.Scanner;
- import com.bank.unionpay.Atm;
- import com.bank.unionpay.Leixing;
- public class Atm2 extends Atm
- {
- public CxCard cx=new CxCard();//
- public Atm2(String name, String sfzheng, String accound, double cxyue) {
- super(name, sfzheng, accound, cxyue);
- // TODO 自动生成的构造函数存根
- }
- public Atm2() {
- // TODO 自动生成的构造函数存根
- super();
- }
- final Leixing lx = Leixing.ABC;
- @Override
- public void kaihu()// 实现开户
- {
- System.out.println("您选择的为开户功能");
- Scanner sc0=new Scanner(System.in);
- System.out.println("请输入姓名");
- String name=sc0.nextLine();
- for(int i=1;i>0;i++)
- {
- System.out.println("请输入身份证号");
- String sfzheng=sc0.nextLine();
- if(sfzheng.length()==18)//判断身份证
- {
- for(int j=1;j>0;j++)
- {
- System.out.println("请输入密码");
- String mm="\\d{6}";//6位数字正则表达式
- String password=sc0.nextLine();
- if(password.matches(mm))
- {
- //cx.setPassword(password);//写入密码
- Random ra=new Random();//随机生成6位卡号
- int[] ch=new int[6];
- StringBuilder str=new StringBuilder();
- String s;//用于下面拼接
- for(int k=0;k<6;k++)
- {
- ch[k]=ra.nextInt(9);//0-9
- }
- for(Integer c:ch)
- {
- str.append(c.toString());//遍历 拼接6位数字
- }
- s=str.toString();
- //cx.setCairNumber(s);//写入卡号
- // Bank.getBank().card.add(cx.getCairNumber());//将生成的储蓄卡号存到银行的银行卡列表中
- //
- // Bank.getBank().account.put(cx.getCairNumber(), cx); //id+储蓄卡对象
- System.out.println("开户成功");
- System.out.println("您的账号为: "+s);
- // 访问数据库
- //1.加载驱动:加载数据库提供的驱动类
- try {
- Class.forName("oracle.jdbc.driver.OracleDriver");
- } catch (ClassNotFoundException e) {
- // TODO 自动生成的 catch 块
- e.printStackTrace();
- }
- //2.获取数据库连接
- Connection conn;
- try {
- conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl",
- "test0816", "123456");
- System.out.println("连接成功");
- //操作数据库:增删改查
- //3.获得操作数据库的声明
- Statement st;
- st = conn.createStatement();
- int y=st.executeUpdate("insert into ATM(cairNumber,name,sfzheng,cxyue,password)"
- +"values('"+s+"','"+name+"','"+sfzheng+"','"+cx.getCxyue()+"','"+password+"')");
- }
- catch (SQLException e) {
- // TODO 自动生成的 catch 块
- e.printStackTrace();
- }
- break;
- }
- else
- {
- System.out.println("请输入6位纯数字密码");
- }
- }
- break;
- }
- else
- {
- System.out.println("请重新输入身份证号");
- }
- }
- }
- }
- package com.bank.abc;
- import java.io.Serializable;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.sql.Statement;
- import java.util.Scanner;
- import com.bank.unionpay.Leixing;
- //储蓄卡
- //只有实现了Serializable和Externalizable接口的类的对象才能被序列化。
- public class CxCard implements Serializable
- {
- //属性
- final Leixing lx=Leixing.ABC;
- String name;//姓名
- String sfzheng;//身份证号
- String cairNumber2;//卡号
- String password;//密码
- double cxyue ;//余额
- //生成卡号的get set方法
- public String getCairNumber() {
- return cairNumber2;
- }
- public void setCairNumber(String cairNumber) {
- this.cairNumber2 = cairNumber;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getSfzheng() {
- return sfzheng;
- }
- public void setSfzheng(String sfzheng) {
- this.sfzheng = sfzheng;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- public double getCxyue() {
- return cxyue;
- }
- public void setCxyue(double cxyue) {
- this.cxyue = cxyue;
- }
- public CxCard(String cairNumber, String password) {
- super();
- this.cairNumber2 = cairNumber;
- this.password = password;
- }
- @Override
- public String toString() {
- return "姓名:" + name + "\n"+" 身份证:" + sfzheng + "\n"+"卡号: " + cairNumber2 +"\n"+ " 余额:" + cxyue;
- }
- public CxCard() {
- // TODO 自动生成的构造函数存根
- }
- //声明成员方法
- public void qukuan()//取款
- {
- if(true)
- {
- System.out.println("您选择的为取款功能");
- for(int i=1;i>0;i++)
- {
- Scanner sc1=new Scanner(System.in);
- System.out.println("请输入您要取款的卡号");
- String c2=sc1.nextLine();
- try
- {
- Class.forName("oracle.jdbc.driver.OracleDriver") ;
- Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl",
- "test0816","123456") ;
- Statement st = conn.createStatement() ;
- //查询用户输入卡号的结果集
- ResultSet rs =st.executeQuery("select * from ATM where cairnumber = '" +c2 +"' ") ;
- if(rs.next())
- {
- String ss = rs.getString("password") ;
- for(int k = 0 ; k<3; k++ )
- {
- System.out.println("请输入您的密码:");
- Scanner mm = new Scanner(System.in) ;
- String mima = mm.nextLine();
- if(ss.equals(mima))
- {
- System.out.println("请输入取款金额");
- Scanner sc =new Scanner(System.in);
- double qk =sc.nextDouble();
- if(qk>0)
- {
- double yue = rs.getDouble("cxyue");
- if(qk<=yue)
- {
- double sumyue =yue-qk;
- st.executeUpdate("update ATM set cxyue='"+sumyue+"' where cairnumber "
- + "= '" +c2 +"' ");
- System.out.println("取款成功");
- break;
- }
- else
- {
- System.out.println("您的余额不足,无法取款");
- }
- }
- else
- {
- System.out.println("您输入的取款金额,系统不识别");
- }
- }
- else
- {
- System.out.println("密码不对");
- }
- break;
- }
- break;
- }
- rs.close();
- st.close();
- conn.close();
- } catch (ClassNotFoundException | SQLException e) {
- // TODO 自动生成的 catch 块
- e.printStackTrace();
- }
- }
- }
- }
- public void cunkuan()//存款
- {
- if(true)
- {
- System.out.println("您选择的为存款功能");
- for(int i=1;i>0;i++)
- {
- Scanner sc1=new Scanner(System.in);
- System.out.println("请输入您要存款的卡号");
- String c2=sc1.nextLine();
- try
- {
- Class.forName("oracle.jdbc.driver.OracleDriver") ;
- Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl",
- "test0816","123456") ;
- Statement st = conn.createStatement() ;
- //查询用户输入卡号的结果集
- ResultSet rs =st.executeQuery("select * from ATM where cairnumber = '" +c2 +"' ") ;
- if(rs.next())
- {
- String ss = rs.getString("password") ;
- for(int k = 0 ; k<3; k++ )
- {
- System.out.println("请输入您的密码:");
- Scanner mm = new Scanner(System.in) ;
- String mima = mm.nextLine();
- if(ss.equals(mima))
- {
- System.out.println("请输入存款金额");
- Scanner sc =new Scanner(System.in);
- double ck =sc.nextDouble();
- if(ck>=0)
- {
- double yue = rs.getDouble("cxyue");
- double sumyue =yue+ck;
- st.executeUpdate("update ATM set cxyue='"+sumyue+"' where cairnumber "
- + "= '" +c2 +"' ");
- System.out.println("存款成功");
- break;
- }
- else
- {
- System.out.println("您输入的存款金额,系统不识别");
- }
- }
- else
- {
- System.out.println("密码不对");
- }
- break;
- }
- break;
- }
- rs.close();
- st.close();
- conn.close();
- } catch (ClassNotFoundException | SQLException e) {
- // TODO 自动生成的 catch 块
- e.printStackTrace();
- }
- }
- }
- }
- public void cxyue()//查询
- {
- if(true)
- {
- System.out.println("您选择的为查询功能");
- for(int i=1;i>0;i++)
- {
- Scanner sc1=new Scanner(System.in);
- System.out.println("请输入您要查询的卡号");
- String c2=sc1.nextLine();
- try
- {
- Class.forName("oracle.jdbc.driver.OracleDriver") ;
- Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl",
- "test0816","123456") ;
- Statement st = conn.createStatement() ;
- ResultSet rs =st.executeQuery("select * from ATM where cairnumber = '" +c2 +"' ") ;
- if(rs.next())
- {
- String ss = rs.getString("password") ;
- for(int k = 0 ; k<3; k++ )
- {
- System.out.println("请输入您的密码:");
- Scanner mm = new Scanner(System.in) ;
- String mima = mm.nextLine();
- if(ss.equals(mima))
- {
- System.out.println("您的信息为:");
- System.out.println("姓名:"+rs.getString("name")+"\t身份证号:"+rs.getString("sfzheng")
- +"\t账号:"+rs.getString("cairnumber")+"\t余额"+rs.getString("cxyue"));
- break;
- }
- else
- {
- System.out.println("密码不对");
- }
- break;
- }
- break;
- }
- rs.close();
- st.close();
- conn.close();
- } catch (ClassNotFoundException | SQLException e) {
- // TODO 自动生成的 catch 块
- e.printStackTrace();
- }
- }
- }
- }
- }
- package com.bank.test;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.ObjectInputStream;
- import java.io.ObjectOutputStream;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.Statement;
- import java.util.HashMap;
- import java.util.Map;
- import java.util.Scanner;
- import com.bank.abc.Atm2;
- import com.bank.abc.Bank;
- import com.bank.abc.CxCard;
- import com.bank.unionpay.Atm;
- import com.bank.unionpay.Leixing;
- import com.bank.unionpay.Zhujiemian;
- public class A
- {
- public static void main(String[] args) throws Exception
- {
- for(int i=1;i>0;i++)
- {
- Zhujiemian zjm=new Zhujiemian();
- zjm.zhujiemian();
- Scanner sc=new Scanner(System.in);
- int in=sc.nextInt();
- if(in==0||in==1||in==2||in==3||in==4)
- {
- if(in==0)
- {//测试开户
- Atm2 a2=new Atm2();
- a2.kaihu();
- continue;
- }
- //查询
- if(in==1)
- {
- Atm2 a2=new Atm2();
- a2.cx.cxyue();
- continue;
- }
- if(in==2)
- {
- //存款
- Atm2 a2=new Atm2();
- a2.cx.cunkuan();
- continue;
- }
- if(in==3)
- {
- //取款
- Atm2 a2=new Atm2();
- a2.cx.qukuan();
- continue;
- }
- if(in==4)
- {
- //退出
- System.out.println("系统即将退出");
- // File fi=new File("d:/abc122");
- // if(!fi.exists())
- // {
- // fi.mkdirs();
- // }
- // ObjectOutputStream obj=new ObjectOutputStream(new FileOutputStream("d:/abc122/abc.obj"));
- // obj.writeObject(Bank.getBank().account);
- // System.out.println("数据保存完成");
- // obj.close();
- //
- break;
- }
- }
- else
- {
- System.out.println("该菜单不存在");
- }
- }
- }
- }
数据库存储ATM机,开户、查询等信息的更多相关文章
- MySQL 按照数据库表字段动态排序 查询列表信息
MySQL 按照数据库表字段动态排序 查询列表信息 背景描述 项目中数据列表分页展示的时候,前端使用的Table组件,每列自带对当前页的数据进行升序或者降序的排序. 但是客户期望:随机点击某一列的时候 ...
- 模拟ATM机银行系统
淄博汉企Java基础考核项目 模拟银行自助终端系统 一. 本系统模拟银行用户使用ATM机开户.查询.存款.取款功能,要求使用java语言编程实现. 说明: 1. 对于数据输入异常,可使用java异常处 ...
- 用java实现一个ATM机系统(2.0版)
用java实现一个ATM机系统(2.0版) java实现银行ATM自助取款机,实现功能:用户登录.余额查询.存钱.取钱.转账.修改密码.退出系统. 文章目录 用java实现一个ATM机系统(2.0版) ...
- 连接数据库——模拟ATM机查、存、取、开户功能
1.界面:包含开户.查询.存款.取款.功能 package com.bank.test; /** * * @author Administrator *界面类 */ public class Jiem ...
- python实现用户登陆(sqlite数据库存储用户信息)
python实现用户登陆(sqlite数据库存储用户信息) 目录 创建数据库 数据库管理 简单登陆 有些地方还未完善. 创建数据库 import sqlite3 #建一个数据库 def create_ ...
- 原创:Python编写通讯录,支持模糊查询,利用数据库存储
1.要求 数据库存储通讯录,要求按姓名/电话号码查询,查询条件只有一个输入入口,自动识别输入的是姓名还是号码,允许模糊查询. 2.实现功能 可通过输入指令进行操作. (1)首先输入“add”,可以对通 ...
- 将从mysql数据库查询的信息,遍历到List<>以及一些随机数的生成
将从mysql数据库查询的信息,遍历到List<>以及一些随机数的生成. 代码比较乱,但是方法还是对的,大家又需要的选择看,希望对博友 有帮助,欢迎留言分享! public class s ...
- 利用数据库视图实现WEB查询敏感信息接口动态脱敏
前言: 利用数据库视图,实现web接口查询敏感信息时动态脱敏. 具体目标:某接口为用户信息查询接口,返回敏感用户信息(id,姓名.手机号[敏感].身份证号[敏感]),如果web用户为管理员角色,则查询 ...
- python实现atm机基本操作及购物车
一.需求分析 ATM机要为用户提供转账,提现,还款,付款,消费流水,操作记录等操作接口 ATM机要为管理员提供创建用户,冻结解冻,修改额度的功能 ATM机管理员认证使用装饰器来实现 购物车要提供管理员 ...
随机推荐
- 模板模式与策略模式/template模式与strategy模式/行为型模式
模板模式 模版模式,又被称为模版方法模式,它可以将工作流程进行封装,并且对外提供了个性化的控制,但主流程外界不能修改,也就是说,模版方法模式中,将工作的主体架构规定好,具体类可以根据自己的需要,各自去 ...
- canvas加载进度条
<!DOCTYPE html> <html><head><meta http-equiv="Content-Type" content=& ...
- Java学习笔记(九)——继承
一.继承 1.概念: 继承是类于类之间的关系,是一种"is a "的关系 Ps: Java是单继承 2.优势: (1)子类直接拥有父类的所有属性和方法(除了privata) (2) ...
- C++的模板特化 和 STL中iterator_traits模板的偏特化
C++中有类模板和函数模板,它们的定义如下所示: 类模板: template<class T1,class T2> class C { //... }; 函数模板: template< ...
- SQL数据库的基本语句
1.修改字段类型语句: alter table 表名 alter column 列名 类型 例如: alter table D alter column no char(15): 2.从其他地方插 ...
- AJAX案例四:省市联动
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...
- ASP.Net MVC开发基础学习笔记(5):区域、模板页与WebAPI初步
一.区域—麻雀虽小,五脏俱全的迷你MVC项目 1.1 Area的兴起 为了方便大规模网站中的管理大量文件,在ASP.NET MVC 2.0版本中引入了一个新概念—区域(Area). 在项目上右击创建新 ...
- Java命令行输入求和的简单学习
思想:命令行输入的参数,必须先转换为数字才能进行加法计算,这就需要引用java.util.Scanner; 流程框图: 源代码: //实现几个整数相加的程序 //高开拓,2015.9.26 packa ...
- css3 -- 渐变
1.Firefox中的线性渐变 E{ background-image:-moz-linear-gradient(point or angle , form-stop, color-stop, to- ...
- js库写法
前言: 现在javascript库特别多,其写法各式各样,总结几种我们经常见到的,作为自己知识的积累.而目前版本的 JavaScript 并未提供一种原生的.语言级别的模块化组织模式,而是将模块化的方 ...