模拟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列名可以 ...
随机推荐
- Oracle数据库初级学习 2
今天我们介绍Oracle数据库中剩余的查询方法,今天的查询方法会比昨天的更为复杂一些(PS:我也是个初学者,请见谅..). 一.分组函数 分组函数是为了区分同一个表中的不同数据而建立,其关键字为GRO ...
- 超级有用的各类web常用手册
以下是链接地址: 各种web常用手册
- HttpClient_4 用法 由HttpClient_3 升级到 HttpClient_4 必看
转自:http://www.blogjava.net/stevenjohn/archive/2012/09/26/388609.html HttpClient程序包是一个实现了 HTTP 协议的客户端 ...
- iOS常用设计模式和机制之代理
Delegate : 1 代理设计模式的使用我们首先需要明白三个要素 *委托方:委托别人去执行某些操作的人(对象) *代理方:被委托区执行某些操作的人(对象) *协议:(protocol)委托方需要代 ...
- linux之log_format
log_format是指存储日志的时候所采用的格式,可以在/usr/local/nginx/conf/nginx.conf的http字段中设置 下面是一个典型的log_format设置 log_for ...
- 理解伪元素 :before和:after
在CSS中有一特性允许我们添加额外元素而不扰乱文档本身,就是伪元素. 下面举例说明: html: <blockquote> blockquote只是一个块引用 </blockquo ...
- pull方法解析xml
private void getData() { new Thread() { public void run() { try { ...
- C/C++的四大内存分区 分类: C/C++ 2015-05-09 01:36 163人阅读 评论(0) 收藏
导读 正确的理解C/C++程序的内存分区,是合格程序猿的基本要求. 网络上流形两大版本内存分区,分别为: 1. 五大内存分区:堆.栈.全局/静态存储区.自由存储区和常量存储区. 2. 五大内存分区:堆 ...
- Yii2.0中文开发向导——Yii2中多表关联查询(join、joinwith)
我们用实例来说明这一部分 表结构 现在有客户表.订单表.图书表.作者表, 客户表Customer (id customer_name) 订单表Order (id order_ ...
- 初识WebSocket协议
1.什么是WebSocket协议 RFC6455文档的表述如下: The WebSocket Protocol enables two-way communication between a clie ...