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. H5版俄罗斯方块(1)---需求分析和目标创新

    前言: 俄罗斯方块和五子棋一样, 规则简单, 上手容易. 几乎每个开发者, 都会在其青春年华时, 签下"xx到此一游". 犹记得大一老师在布置大程作业的时候提过: "什么 ...

  2. Error:(1, 0) Your project path contains non-ASCII characters. This will most likely cause the build to fail on Windows. Please move your project to a different directory. See http://b.android.com/9574

    这个一般是因为你打开的项目所在的目录存在中文,把项目换到全英文目录下就没问题了

  3. UVA340 猜数字游戏

    一个经典的找数字位置正确并且找到正确数列中存在的数字而错误的序列存在但是不是正确位置的算法. 看似很难的算法,但是lrj却很简单解决. #include<cstdio> #define M ...

  4. // 开始无限播放 ViewPager

    public class MainActivity extends Activity { private ViewPager vp;    private Handler handler = new ...

  5. Windows 2003上 SaltStack/Salt 和 psutil 可能存在的问题及解决

    今天把salt安装在windows 2003上,发现无法启动,随之而来的是一个有一个的坑,让我们一起逐个排查. 问题一(salt无法启动) salt无法启动,错误结果如图:

  6. MyEclipse Spring 学习总结三 SpringMVC

    MyEclipse Spring 学习总结三 SpringMVC 一.SpringMVC原理 1.Springmvc 框架介绍 1)Spring 框架停工了构建Web应用程序的全功能MVC模块.Spr ...

  7. Linux下安装php加速器xcache

    一.环境说明 php安装目录:/usr/local/php php.ini配置文件路径:/usr/local/php/etc/php.ini Nginx安装目录:/usr/local/nginx Ng ...

  8. BYTE 和字符串转换

    string hanzi = "汉字"; byte[] arr = System.Text.Encoding.UTF8.GetBytes(hanzi); string temp = ...

  9. INNO 补丁制作技术, 打开 INNO 补丁制作方法的第一页

    INNO 补丁制作技术, 打开 INNO 补丁制作方法的第一页 作者:xin 日期:2005-09-23 字体大小: 小 中 大   VPatch 在 INNO 中的应用. VPatch 属于专为NS ...

  10. 将WeX5部署到自己的Tomcat服务器上

    页面服务UIServer布署 WeX5自带页面服务UIServer的是标准Web应用,可以部署在Java Web应用服务器上.下面介绍如何在Tomcat和WebLogic中部署WeX5的UIServe ...