模拟ATM机将输入的数据插入数据库
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机将输入的数据插入数据库的更多相关文章
- 模拟ATM机银行系统
淄博汉企Java基础考核项目 模拟银行自助终端系统 一. 本系统模拟银行用户使用ATM机开户.查询.存款.取款功能,要求使用java语言编程实现. 说明: 1. 对于数据输入异常,可使用java异常处 ...
- Ajax实现xml文件数据插入数据库(一)--- 构建解析xml文件的js库
Ajax实现将xml文件数据插入数据库的过程所涉及到的内容比较多,所以对于该过程的讲解本人打算根据交互的过程将其分为三个部分,第一部分为构建解析xml文件的javascript库,第二部分为ajax与 ...
- Ajax实现xml文件数据插入数据库(二)--- ajax实现与jsp的数据交互。
在上一篇文章中我们成功得到了重新组织后的数据,接下来需要做的便是将数据插入到数据库中了.在与数据库打交道的过程中有一些方法是普遍的,我们将这些通用方法封装到一个DbUtil类中,以便复用,封装好的Db ...
- mysql 带换行符的字符串数据插入数据库异常
带换行符的字符串数据插入数据库异常现象 某个字符串类型的字段中部分记录中带换行符,数据同步插入异常,提示如下类似警告信息: Incorrect string value:'<aherf=&quo ...
- 连接数据库——模拟ATM机查、存、取、开户功能
1.界面:包含开户.查询.存款.取款.功能 package com.bank.test; /** * * @author Administrator *界面类 */ public class Jiem ...
- 序列化,反序列化,模拟ATM机
package com.bank.unionpay; //银行卡的接口 public interface I_yinhangka { //抽象方法 //public abstract默认修饰抽象的 p ...
- C/s从文件(TXT)中读取数据插入数据库
流程: 1.当按钮单击时,弹出OpenFileDialog 2.判断后缀名是否合法 3.导入数据库 按钮事件中的代码: 1.判断用户是否选中文件. 2.判断用户选择的文件是否为txt //第一步,当按 ...
- 从word得到表格数据插入数据库(6位行业代码)
复制表格到excel 点击表格左上角选中全部表格,然后crtl+c,再贴到excel中 可以发现,大类代码,单元格往下走,碰到下一个有值的之前,都是上一个的范围 填充空白单元格 1.选中前四列,然后c ...
- c# 使用SqlBulkCopy 提高大数据插入数据库速度
自己得一点总结: 1.BulkCopy采用的是插入方式,不是覆盖方式(原数据不动,在原数据的后面复制上dataTable中的内容) 2.自增的字段不用赋值 3.数据库字段名和dataTable列名可以 ...
随机推荐
- JSTL 将double值保留小数点后两位
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> <div ...
- Kubuntu 使用YaH3C进行中大校园网认证
之前都是用路由器连网线上网,我也没注意到inode校园网客户端在linux上的问题.直到前两天把路由器给搞残废了,只能默默的找办法装inode.根据学校网络中心给的教程,在kubuntu上尝试安装in ...
- cocos2d 保存最近登陆多个账号最多一个月
用的是一个单例来管理 ,数据是存在本地的xml文件里的格式如下 <?xml version="1.0" encoding = "utf-8" ?> ...
- segmentation fault
今天在hanoi问题上出现了segmentation fault 在gcc编译的过程中 没出现error,然而程序运行到一半就出现segmentation fault: 上网发现 这条语句是非法的内存 ...
- hdu4686 Arc of Dream ——构造矩阵+快速幂
link: http://acm.hdu.edu.cn/showproblem.php?pid=4686 构造出来的矩阵是这样的:根据题目的ai * bi = ……,可以发现 矩阵1 * 矩阵3 = ...
- python笔记集合
1.win_64下编译pyd(编译器用的tdm-gcc-5.1) gcc test.c -shared -Ic:\Python27\include -Lc:\Python27\libs -lpytho ...
- C#中的async和await
其实这两个关键字的功效比之前的异步方法调用有一个好处,那就是异步阻塞的方法可以有返回值.之前都是通过回调函数实现,执行上下文会切换,不过和这个执行过程类似.可以对这两个关键字这么理解:遇到async的 ...
- JS识记
1.重新按照URL地址加载本页? window.location.reload(); 2.JS中实现命名空间一例? <script type="text/javascript" ...
- SQL总结(五)存储过程
SQL总结(五)存储过程 概念 存储过程(Stored Procedure):已预编译为一个可执行过程的一个或多个SQL语句. 创建存储过程语法 CREATE proc | procedure pro ...
- 【转】STM32定时器输出比较模式中的疑惑
OCx与OCxREF和CCxP之间的关系 初学STM32,我这个地方卡了很久,现在终于有些明白了,现在把我的理解写下与大家共享,如果有不对的地方,还请指出. OCxREF就是一个参考信号,并且约定: ...