搜档网
当前位置:搜档网 > java编写小程序 ATM自助取款机

java编写小程序 ATM自助取款机

import java.sql.*;
import java.io.*;
import java.util.*;
public class operate {
String str1="sun.jdbc.odbc.JdbcOdbcDriver";
String str2="jdbcdbc:my";
Connection con=null;
Statement sta=null;
ResultSet rs=null;
card ca;
private String num;
private String num()throws Exception {
String sql="select 帐号 from atm ";
sta.execute(sql);
return num;
}
public operate()throws Exception{
ca=new card();
Class.forName(str1);
con=DriverManager.getConnection(str2);
sta=con.createStatement();
}


public void insert(Scanner f )throws Exception{ //形成一个新的帐户
//由于此ATM机的特殊性,为了实现存款业务,必须要求用户输入最准确的信息便于日后追查未经银行同意而非法存款的用户,并作出相应的处罚
//银行需要公安部门提供相关户口信息,并以此为根据建立一个数据库(ID)
System.out.println(" 温馨提示:");
System.out.println("您所输入的姓名与码必须相符,否则不能开通新帐户");
System.out.println("请输入身份证号");
String IDnum=f.next();
System.out.println("请输入姓名");
String name=f.next();
String sql1="select 姓名 from ID" +
" where 身份证号码=' "+IDnum+" '"; //查询姓名为name的身份证号码
rs=sta.executeQuery(sql1);
while(rs.next()){
if(rs.getString("姓名").equals(name)){
String sql3="select 帐号 from atm";
rs=sta.executeQuery(sql3);
boolean be1=true; //控制接下来的while循环
while(be1){
String s1="62270022";
int k=(int)Math.round(Math.random()*100000+100000); //随机产生一个六位整数
String s2=Integer.toString(k); //把整数转换成为十进制字符串
int w=(int)Math.round(Math.random()*10000+10000); //随机产生一个五位整数
String s3=Integer.toString(w); //把整数转换成为十进制字符串
String num=s1+s2+s3; //产生一个19位卡号(字符串)

while(rs.next()){
if(!rs.getString("帐号").equals(num)){ //判断数据库中是否已有与此相同的卡号
be1=false; //结束第一个while循环(也就是上面所要控制的循环)

System.out.println(num); //输出卡号
}
}

}
int password=(int)Math.round(Math.random()*100000+100000); //随机产生一个六位整数作为密码
System.out.println(password); //输出随机产生的六位密码
System.out.println("是否需要修改密码 1:修改 2:以后再说");
Scanner sc1=new Scanner(System.in);
if(sc1.nextInt()==1){
boolean be2=true;
while(be2){
System.out.println("请输入新密码");
Scanner sc2=new Scanner(System.in);
int p1=sc2.nextInt();
System.out.println("请输入新密码");
Scanner sc3=new Scanner(System.in);
int p2=sc3.nextInt();
if(p1==p2){
password=p1; //重新赋值给p(新密码)
be2=false;
}
else
System.out.println("密码输入有误,请重新输入");
}
}
double balance=0; //初始帐户余额为0
System.out.println("是否需要存款 1:存款 2:以后再说");
Scanner sc2=new Scanner(System.in);
if(sc2.nextInt()==1){
System.out.println("请输入所要存款的数额");
//此项功能需由银行同意并给出证明,否则视为违法操作,会被处罚!!
Scanner sc3=new Scanner(System.in);
balance=sc3.nextDouble();
}
String sql4="insert into atm('ss','IDnum','password','name','balance')";
sta.execute(sql4);
System.out.println("新帐户已建立,各项内容亦修改成功");
}
else{
System.out.println("输入错误!");
System.out.println("请重新输入!");
IDnum=f.next();
}
}
}

public void update(Scanner f)throws Exception{ //修改信息
boolean be1=true;
while(be1){
System.out.println("请输入新密码");
int p1=f.nextInt();
System.out.println("请输入再次输入新密码");
int p

2=f.nextInt();
if(p1==p2){
be1=false;
int password=p1;
String sql1=" update atm" +
" set 密码="+password+" " +
" where 帐号='"+num+"'";
sta.execute(sql1); //重新把密码写入数据库中
}

else{
System.out.println("密码输入有误!!!");
System.out.println("请从新输入密码");
}
}
System.out.println("密码修改成功!");
}


public void delete(Scanner f)throws Exception{ //注销帐户
System.out.println("请输入所要注销的帐户");
String num=f.next();
String sql1="select 帐号 from atm";
rs=sta.executeQuery(sql1);
while(rs.next()){
boolean be1=true;
while(be1){
if(rs.getString("帐号").equals(num)){
be1=false; //结束while循环
System.out.println("请输入银行卡密码");
}
else{
System.out.println("卡号有误,请重新输入");
num=f.next();
rs=sta.executeQuery(sql1);
}
int password=f.nextInt();
String sql2="select 密码 from atm";
rs=sta.executeQuery(sql2);
boolean be=true;
while(rs.next()){
while (be){
if(rs.getInt("密码")==password){
be=false;
String sql="delete from atm where 帐号='"+num+"'";
sta.execute(sql);
}
else{
System.out.println("密码输入有误,请重新输入");

password=f.nextInt();
rs=sta.executeQuery(sql2);
}
}
}
}
}
}

public void query(Scanner f,String num)throws Exception{ //查询余额或者通过身份证号来查询帐号
System.out.println ("====请选择所要查询的内容====");
System.out.println(" 1:查询余额 2:查询帐号");
int a=f.nextInt();
if(a==1){
String sql1="select 余额 from atm " +
" where 帐号='"+num+"'";
rs=sta.executeQuery(sql1);
while(rs.next()){
System.out.println("您的余额为:"+rs.getInt("余额"));
}
}

else{
System.out.println("请输入身份证号码");
String IDnum=f.next();
String sql1="select 身份证号 from atm";
rs=sta.executeQuery(sql1);
boolean be=true;
while(be){
while(rs.next()){
if(rs.getString("身份证号").equalsIgnoreCase(IDnum)){
be=false;
String sql2="select 帐号 from atm " +
"where 身份证号='"+IDnum+"'"; //通过身份证号来查询银行卡卡号
rs=sta.executeQuery(sql2);
System.out.println(" 您所查询的帐号如下:");
int count=0;
while(rs.next()){
count=count+1;
System.out.println(rs.getString("帐号")); //输出所要查询的卡号
}
if(count==0){
System.out.println("没有相关信息,请检查身份证号码是否输入正确!");
System.out.println("1:重新输入 2:退出 ");
if(f.nextInt()==1){
System.out.println("请输入身份证号码");
IDnum=f.next();
rs=sta.executeQuery(sql1);
}

else{
operate op=new operate();
op.contuine();
}
}
}
}
}
}
}
public void fentch(Scanner f)throws Exception{ //取款
System.out.println("----温馨提示:");
System.out.println("您所取款的数额最多不超过 5000元,若大于5000元请到柜台办理!");
System.out.println("*****请选择取款数额*****");
System.out.println(" 100元 300元");
System.out.println(" 500元 1000元");
System.out.println(" 2000元 3000元");
int b=f.nextInt();
String sql3="select 余额 from atm " +
"where 帐号='"+num()+"'";
rs=sta.executeQuery(sql3);
while(rs.next()){
int balance=rs.getInt("余额");
if(balance>=b){
System.out.println("-*-取款中请稍候-*-");
balance=balance-b;
String sql4="update atm " +
"set 余额=balance" +
"where 帐号=num"; //取款使帐户中余额减少
System.out.println("请取走您的钱币");
System.out.println("感谢您的使用,祝您好运");
}
else{
boolean be3=true;
while(be3){
System.out.println("您的余额少于"+b+"元!不能完成取款。对于您的不便我们表示抱歉");
System.out.println("您是否重新选择取款的数额?");
System.out.println("1:是 2:否");
if(f.nextInt()==1){
System.out.println("100元 300元");
System.out.println("500元 1000元");
System.out.println("2000元 3000元");
b=f.nextInt();
if(balance>=b){
be3=false;
System.out.println("-*-取款中请稍候-*-");
balance=balance-b;
String sql4="update atm " +
"set 余额=balance" +
"where 帐号=num"; //取款使帐户中

余额减少
System.out.println("请取走您的钱币");
System.out.println("感谢您的使用,祝您好运");

}
}
else
System.exit(0); //退出取款程序
}
}
}



}


public void save(Scanner f)throws Exception{ //存款
System.out.println("**温馨提示**");
System.out.println("存款金额最高不得超过3000元");
System.out.println("通过取款机存款需要输入帐号、身份证号码。只有全部输入正确才能存款");
System.out.println("存款需要由银行同意,并给出证明后才能进行存款;否则视为违法操作,银行会对其进行处罚");
System.out.println("详情请咨询银行服务热线 :95533");
System.out.println(" 此项说明由银行负责解释");
System.out.println("请输入身份证号码");
boolean be1=true;
while(be1){
String IDnum=f.next(); //输入身份证号
String sql1="select * from atm " ;
rs=sta.executeQuery(sql1);
while(rs.next()){
if(rs.getString("身份证号").equals(IDnum)){
be1=false;
}
else{
System.out.println("对不起身份证号码输入错误!!!请重新输入!");
IDnum=f.next();
rs=sta.executeQuery(sql1);
}
}
System.out.println("请输入所要存款的金额:");
System.out.println("100元 500元");
System.out.println("1000元 3000元");
int b=f.nextInt();
String sql2="select 余额 from atm" +
"where 帐号='"+num+"'";
rs=sta.executeQuery(sql2);
int a=0;
while (rs.next()){

a=rs.getInt("余额");
}

String sql3="update atm" +

"set 余额=a" +
"where 帐号='"+num+"'";
System.out.println("您已成功存入帐户"+b+"元");
}
}
public void AtoB(Scanner f)throws Exception{ //转帐业务
System.out.println("为了我们方便为您服务请再次输入卡号以及身份证号码");
System.out.println("对您造成的不便我们表示抱歉!");
System.out.println("感谢您的配合!");
System.out.println("请输入您的帐号:");
String num=f.next();
String sql1="select * from atm";
rs=sta.executeQuery(sql1);
while(rs.next()){
int count=0;
boolean be1=true;
while (be1){
if(rs.getString("帐号").equals(num)){
System.out.println("请输入您的身份证号码");
be1=false;
}
else{
count=count+1;
System.out.println("帐号输入错误!请重新输入");
if(count>=4){
System.out.println("您输入的次数已超过三次!不能完成转帐业务");
System.out.println("系统自动退出");
System.exit(0); //系统自动退出
}
}
}
String IDnum=f.next();
boolean be2=true;
while (be2){
if(rs.getString("身份证号").equals(IDnum)){
be2=false;
System.out.println("请输入您所要转入的帐号");
String num1=f.next();
String sql2="select 帐号 from atm";
rs=sta.executeQuery(sql2);
while(rs.next()){
if(rs.getString("帐号").equals(num1)){
String sql3="select 余额 from atm " +
"where 帐号='"+num+"'";
rs=sta.executeQuery(sql3); //查询自己帐号的余额,依此来确定转帐的数额

while(rs.next()){
int aa=rs.getInt("余额");
System.out.println("您的余额为:"+aa);
System.out.println("请输入你所要转帐的数额:");

int a=f.nextInt(); //输入转帐数额
if(a<=aa){
int b=aa-a;//帐户中转帐后的余额
String sql4="update atm" +
"set 余额="+b+"" +
"where 帐号='"+num+"'";
sta.execute(sql4);
String sql5="select 余额 from atm " +
" where 帐号='"+num1+"'"; //查询num1卡号的余额
rs=sta.executeQuery(sql5);
while(rs.next()){
int c=rs.getInt("余额")+a; //转入后的余额
String sql6="update atm" +
"set 余额="+c+"" +
"where 帐号='"+num1+"'";
sta.execute(sql6);
System.out.println("转帐成功!感谢您的使用!");
}
}
else{
System.out.println("您转帐的数目超过您最大余额!请重新输入");
System.out.println("请重新输入:");
a=f.nextInt() ;
}
}
}
else{
System.out.println("您所要转入的帐户不存在,

请重新输入:");
num1=f.next();
}
}
}
else{
System.out.println("输入错误!请重新输入:");
IDnum=f.next();
if(count>=4){
be2=false;
System.out.println("对不起,您输入次数已超过三次");
System.out.println("转帐失败!");
System.out.println("系统自动退出");
System.exit(0);
}
}
}
}
}
public void save()throws Exception{ //备份
String sql1="select * from my-atm";//从数据库中读取所有信息
rs=sta.executeQuery(sql1);
PrintWriter pw=new PrintWriter("ID");
String s1="帐号";
String s2="密码";
String s3="身份证号";
String s4="余额";
String s5="姓名";
pw.printf("%-20s %-10s %-15s %-10s %-10s",s1,s2,s3,s4,s5);//形成表头
while(rs.next()){
pw.printf("%-20s %-10d %-15s %-10d %-10s", rs.getString("帐号"), rs.getInt("密码"),rs.getString("身份证号"), rs.getInt("余额"), rs.getString("姓名"));
}
pw.close();

}
public void contuine()throws Exception{
//此方法在主方法中用于被调用的方法之后循环执行程序(也就是说执行完一次任务后可以继续交易避免多次输入卡号和密码的繁琐)

operate op=new operate();
Scanner f=new Scanner(System.in);
boolean be=true;
while(be){
System.out.println(" 是否继续交易?");
System.out.println(" 1:继续 2:退出");
Scanner sc3=new Scanner(System.in);
int a=sc3.nextInt();
if(a==1){
System.out.println(" 请选择服务种类:");
System.out.println("------------------------------");
System.out.println("1:办理新帐户 2:注销帐户");
System.out.println("3:取款 4:修改银行卡信息");
System.out.println("5:查询 6:转帐 ");
System.out.println("7:退出系统 ");
Scanner sc4=new Scanner(System.in);
int n=sc4.nextInt();
if(n==1){
op.in

sert(f);
}
if(n==2){
op.delete(f);
}
if(n==3){
op.fentch(f);
}
if(n==4){
op.update(f);
}
if(n==5){
op.query(f,num);
}
if(n==6){
op.AtoB(f);
}
if(n==7){
System.exit(0);
}
}
else
be=false;
}
System.exit(0);
}
public void close()throws Exception{
sta.close();
con.close();
rs.close();
}

}

相关文档