ATM抽象类

public abstract class ATM {

    private double balance;
private String idcard;
private String password;
public String getIdcard() {
return idcard;
}
public void setIdcard(String idcard) {
this.idcard = idcard;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
public void balance()
{ }
public boolean cunkuan(double cun)
{
if(cun >0)
{
balance += cun;
System.out.println("存款成功!");
return true;
}
else
{
System.out.println("您输入的存款数不正确,将退出该服务!");
return false;
}
}
public boolean qukuan(double qu)
{
if(qu <= balance)
{ balance -=qu;
System.out.println("取款成功!");
return true;
}
else
{
System.out.println("取款失败,将退出该服务!");
return false;
}
}
//添加开户的抽象方法
public abstract void kaihu(); }

ATM子类,并实现其开户的方法

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner; public class ChildATM extends ATM { //添加抽象类的开户方法并实现该方法
@Override
public void kaihu() {
System.out.println("*********************");
System.out.println("您选择的为开户功能");
System.out.println("请输入您的姓名:");
ChildATM cs= new ChildATM();
cs.setBalance(300);
Scanner sc = new Scanner(System.in);
String name=sc.nextLine();
for(int i=1;i>0;i++)
{
System.out.println("请输入您的身份证号");
Scanner sc1= new Scanner(System.in);
String idcard=sc1.nextLine();
if(idcard.length()==18)
{ //判断密码输入的次数
for(i=0;i<3;i++)
{
System.out.println("请输入您的密码");
String password =sc.nextLine();
int input =Integer.parseInt(password) ;
if(input >=100000 && input <1000000)
{
System.out.println("开户成功");
cs.setIdcard(idcard);
cs.setPassword(password);
break;
}
else
{
System.out.println("请输入6位数的密码");
}
System.out.println("您输入的密码有误,请重新输入"+"您的输入次数还有"+(2-i)); }
break;
}
else
{
System.out.println("身份证位数不正确,请继续输入"); }
}
int account =(int)((Math.random()*10)*100000);
System.out.println("您的账号为:"+account);
//访问数据库
//1.加载驱动,加载数据库提供的驱动类
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
//2.获取数据库的连接 :通过数据库的管理
//url:数据库的地址
//user:用户名
//password:密码
Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl", "test0816", "laoer123");
System.out.println("数据库连接成功");
//操作数据库
//3.获得操作数据库的声明
Statement st = conn.createStatement();
//4.DML增加数据
//执行更新操作
//返回值代表该操作值记录返回的条数
//将输入的数据存入数据库中 int i = st.executeUpdate("insert into account (a_id,a_name,a_password,a_idcard,a_balance)"+"values('"+account+"','"+name+"','"+cs.getPassword()+"','"+cs.getIdcard()+"','"+cs.getBalance()+"')");
System.out.println("操作数据成功,返回值="+i);
//关闭释放资源
st.close();
conn.close();
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
} } }

实现查询账户数据

 public void cha()
{
System.out.println("*******************");
System.out.println("您选择的是查询功能");
System.out.println("请输入您的卡号");
ChildATM cs= new ChildATM();
Scanner sc= new Scanner(System.in);
String kahao=sc.nextLine();
//判断卡号是否正确
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl", "test0816", "laoer123");
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("select * from account where a_id='"+kahao+"'");
//查询用户输入卡号的结果集
if(rs.next())
{
String ss = rs.getString("a_password");
for(int i=0;i<3;i++)
{
System.out.println("请输入您的密码");
Scanner sc2 = new Scanner(System.in);
String mima=sc2.nextLine();
if(ss.equals(mima))
{
System.out.println("姓名:"+rs.getString("a_name")+"账号:"+rs.getString("a_id")+"密码:"+rs.getString("a_password")+"身份证号:"+rs.getString("a_idcard")+"余额:"+rs.getString("a_balance"));
break;
}
else
{
System.out.println("请重新输入密码");
}
}
}
else
{
System.out.println("您输入的卡号不存在!");
}
st.close();
conn.close();
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
} }

实现存款

 public  void cunkuan()
{
System.out.println("*******************");
System.out.println("您选择的是存款功能");
System.out.println("请输入您的卡号");
ChildATM cs= new ChildATM();
Scanner sc= new Scanner(System.in);
String kahao=sc.nextLine();
//判断卡号是否正确
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl", "test0816", "laoer123");
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("select * from account where a_id='"+kahao+"'");
//查询用户输入卡号的结果集
if(rs.next())
{
String ss = rs.getString("a_password");
for(int i=0;i<3;i++)
{
System.out.println("请输入您的密码");
Scanner sc2 = new Scanner(System.in);
String mima=sc2.nextLine();
if(ss.equals(mima))
{
System.out.println("姓名:"+rs.getString("a_name")+"账号:"+rs.getString("a_id")+"密码:"+rs.getString("a_password")+"身份证号:"+rs.getString("a_idcard")+"余额:"+rs.getString("a_balance"));
System.out.println("请输入您要存款的金额");
double cun=sc2.nextDouble();
//执行语句
if(cun>0)
{
double money =rs.getDouble("a_balance");
money+=cun;
String sql ="update account set a_balance="+money+"where a_id ='"+kahao+"'";
st.executeUpdate(sql);
System.out.println("存款成功");
}
else
{
System.out.println("存款失败!");
}
break;
} else
{
System.out.println("请重新输入密码");
}
}
}
else
{
System.out.println("您输入的卡号不存在!");
}
st.close();
conn.close();
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
} }

实现取款

 public  void qukuan()
{
System.out.println("*******************");
System.out.println("您选择的是存款功能");
System.out.println("请输入您的卡号");
ChildATM cs= new ChildATM();
Scanner sc= new Scanner(System.in);
String kahao=sc.nextLine();
//判断卡号是否正确
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl", "test0816", "laoer123");
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("select * from account where a_id='"+kahao+"'");
//查询用户输入卡号的结果集
if(rs.next())
{
String ss = rs.getString("a_password");
for(int i=0;i<3;i++)
{
System.out.println("请输入您的密码");
Scanner sc2 = new Scanner(System.in);
String mima=sc2.nextLine();
if(ss.equals(mima))
{
System.out.println("姓名:"+rs.getString("a_name")+"账号:"+rs.getString("a_id")+"密码:"+rs.getString("a_password")+"身份证号:"+rs.getString("a_idcard")+"余额:"+rs.getString("a_balance"));
System.out.println("请输入您要存款的金额");
double qu=sc2.nextDouble();
//执行语句
double money =rs.getDouble("a_balance");
if(qu< money)
{ money-=qu;
String sql ="update account set a_balance="+money+"where a_id ='"+kahao+"'";
st.executeUpdate(sql);
System.out.println("取款成功");
}
else
{
System.out.println("取款失败!");
}
break;
} else
{
System.out.println("请重新输入密码");
}
}
}
else
{
System.out.println("您输入的卡号不存在!");
}
st.close();
conn.close();
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
} }

ATM测试类

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner; import unionpay.ChildATM; public class TestBank { public static void main(String[] args) {
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---------------退出");
ChildATM ca= new ChildATM();
for(int i=1;i>0;i++){
System.out.println("请输入您要选择的功能");
Scanner sc = new Scanner(System.in);
int num=sc.nextInt();
switch(num)
{
case 0:
ca.kaihu();
break;
         
                case 1:
ca.cha();
break;
                        case 2:
ca.cunkuan();
break;
         case 3:
ca.qukuan();
break;
case 4:
System.out.println("您选择的是退出功能,系统将要退出");
return; default:
System.out.println("您选择的功能不正确,请重新选择");
break;
            }
}
}
}

模拟ATM机将输入的数据插入数据库的更多相关文章

  1. 模拟ATM机银行系统

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

  2. Ajax实现xml文件数据插入数据库(一)--- 构建解析xml文件的js库

    Ajax实现将xml文件数据插入数据库的过程所涉及到的内容比较多,所以对于该过程的讲解本人打算根据交互的过程将其分为三个部分,第一部分为构建解析xml文件的javascript库,第二部分为ajax与 ...

  3. Ajax实现xml文件数据插入数据库(二)--- ajax实现与jsp的数据交互。

    在上一篇文章中我们成功得到了重新组织后的数据,接下来需要做的便是将数据插入到数据库中了.在与数据库打交道的过程中有一些方法是普遍的,我们将这些通用方法封装到一个DbUtil类中,以便复用,封装好的Db ...

  4. mysql 带换行符的字符串数据插入数据库异常

    带换行符的字符串数据插入数据库异常现象 某个字符串类型的字段中部分记录中带换行符,数据同步插入异常,提示如下类似警告信息: Incorrect string value:'<aherf=&quo ...

  5. 连接数据库——模拟ATM机查、存、取、开户功能

    1.界面:包含开户.查询.存款.取款.功能 package com.bank.test; /** * * @author Administrator *界面类 */ public class Jiem ...

  6. 序列化,反序列化,模拟ATM机

    package com.bank.unionpay; //银行卡的接口 public interface I_yinhangka { //抽象方法 //public abstract默认修饰抽象的 p ...

  7. C/s从文件(TXT)中读取数据插入数据库

    流程: 1.当按钮单击时,弹出OpenFileDialog 2.判断后缀名是否合法 3.导入数据库 按钮事件中的代码: 1.判断用户是否选中文件. 2.判断用户选择的文件是否为txt //第一步,当按 ...

  8. 从word得到表格数据插入数据库(6位行业代码)

    复制表格到excel 点击表格左上角选中全部表格,然后crtl+c,再贴到excel中 可以发现,大类代码,单元格往下走,碰到下一个有值的之前,都是上一个的范围 填充空白单元格 1.选中前四列,然后c ...

  9. c# 使用SqlBulkCopy 提高大数据插入数据库速度

    自己得一点总结: 1.BulkCopy采用的是插入方式,不是覆盖方式(原数据不动,在原数据的后面复制上dataTable中的内容) 2.自增的字段不用赋值 3.数据库字段名和dataTable列名可以 ...

随机推荐

  1. 限制文本框只能输入数字或浮点数的JS脚步

    1.oninput,onpropertychange,onchange的用法 l          onchange触发事件必须满足两个条件: a)当前对象属性改变,并且是由键盘或鼠标事件激发的(脚本 ...

  2. node.js笔记

    在node环境上面运行js代码,js相当于php,node相当于apache环境 第一步装 node 环境1.从官网下载 dmg 文件安装2.通过命令行安装 需要用到 homebrew(mac上专门用 ...

  3. 《统计推断(Statistical Inference)》读书笔记——第4章 统计分布族

    数据分析工作中最常和多维随机变量打交道,第四章介绍了多维随机变量的基本知识,其中核心概念是条件分布和条件概率.条件分布和条件概率可以抽象出条件期望的概念,在随机分析的研究中,理解随机积分和鞅理论和关键 ...

  4. asp.net Routing 用法

    http://www.cnblogs.com/youring2/archive/2011/07/22/2113595.html asp.net 4.0中提供了Routing 的支持.通过使用routi ...

  5. python数据分析之pandas库的DataFrame应用二

    本节介绍Series和DataFrame中的数据的基本手段 重新索引 pandas对象的一个重要方法就是reindex,作用是创建一个适应新索引的新对象 ''' Created on 2016-8-1 ...

  6. winform基本控件----按钮

    这次来引用一个我们上课时候老师给的一个实验内容,来说一下winform程序设计中的按钮控件的使用.下面是我们老师给的实验内容. 实验目的: 掌握Winform的开发环境. 掌握窗体的创建和基本方法. ...

  7. winform中dataGridView高度自适应填充完数据的高度

    // winform中dataGridView高度自适应填充完数据的高度,就是dataGridView自身不产生滚动条,自己的高度是根据数据的多少而变动. 在load的时候,数据绑定后,加上如下代码: ...

  8. JsonResult序列化并保存json文件 以及对json文件读取反序列

    项目中我们经常遇到一些经常访问的接口,并且更新及时度不是特别高,那么我们可以利用文件来做一些数据请求的缓存. 这里以微信公众号获取粉丝用户列表为例,我们把微信公众号查到的用户先缓存在文件中,这样在翻页 ...

  9. 【uTenux实验】任务管理

    任务就是一个无限循环.uTenux提供的任务管理功能是很强大的,包括建立和删除一个任务,启动或退出任务,取消一个任务的启动请求,改变任务的优先级和査询任务状态,使任务进人睡眠状态和唤醒状态,取消唤醒请 ...

  10. HBase使用场景和成功案例 (转)

    HBase 使用场景和成功案例 有时候了解软件产品的最好方法是看看它是怎么用的.它可以解决什么问题和这些解决方案如何适用于大型应用架构,能够告诉你很多.因为HBase有许多公开的产品部署,我们正好可以 ...