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;
}
}
}
}