zoukankan      html  css  js  c++  java
  • Java第一课——模拟ATM机代码

    //信1705_2班20173640刘世朝
    package Accunt;

    import java.text.SimpleDateFormat;
    import java.util.Date;

    public class Account
    {
    private String accountID,accountname,operatedate,accontpassword;
    private int operatetype,accountbalance,amount;//“1”表示存款,“2”表示取款,“3”表示转账汇款,“4”表示修改账户密码,“5”表示查询余额。
    public Account() {}
    public Account(String accountID,String accountname,String accontpassword,int accountbalance)
    {
    this.accountID = accountID;
    this.accountname = accountname;
    this.accontpassword = accontpassword;
    this.accountbalance = accountbalance;
    }
    public int getAccountbalance()
    {
    return accountbalance;
    }
    public void setAccountbalance(int accountbalance)
    {
    this.accountbalance = accountbalance;
    }
    public String getAccountID()
    {
    return accountID;
    }
    public void setAccountID(String accountID)
    {
    this.accountID = accountID;
    }
    public String getAccountname()
    {
    return accountname;
    }
    public void setAccountname(String accountname)
    {
    this.accountname = accountname;
    }
    public String getOperatedate()
    {
    return operatedate;
    }
    public void setOperatedate()
    {
    Date now = new Date( );
    SimpleDateFormat ft = new SimpleDateFormat ("yyyy.MM.dd");
    this.operatedate = ft.format(now);
    }
    public String getAccontpassword()
    {
    return accontpassword;
    }
    public void setAccontpassword(String accontpassword)
    {
    this.accontpassword = accontpassword;
    }
    public int getOperatetype()
    {
    return operatetype;
    }
    public void setOperatetype(int operatetype)
    {
    this.operatetype = operatetype;
    }
    public int getAmount()
    {
    return amount;
    }
    public void setAmount(int amount)
    {
    this.amount = amount;
    }

    }

    //信1705_2班20173640刘世朝
    package Accunt;
    import java.io.*;
    import java.util.ArrayList;
    import java.util.Scanner;
    public class AccountManager
    {

    public static void main(String[] args)
    {
    Scanner input=new Scanner(System.in);
    ArrayList<Account> ac=new ArrayList<Account>();
    int select1=1,flag1=0,flag2=0,flagq=0,flag4=0,k;
    String q="q";
    getInformation(ac);
    for(;;)
    {

    do
    {
    face(1);//账户对比
    flag1=id(input.next(),ac);
    if(flag1==-2) {face(0,12,ac);}
    if(flag1==-1) {face(0,13,ac);}
    }while(flag1<0);

    for(k=0;k<3;k++)
    {

    face(2);//密码对比
    flag2=login(flag1,input.next(),ac);
    if(flag2<0) {face(flag1,14,ac);}
    if(flag2>0) {break;}
    }
    if(flag2>0&&k<3)
    {
    do
    {
    face(flag1,3,ac);//主界面
    try
    {
    select1=input.nextInt();
    if(select1<=0) throw new Exception ();
    }
    catch(Exception e)
    {
    face(flag1,15,ac);
    }
    switch(select1)
    {
    case 1://存款
    {
    cunkuan(flag1,ac);
    if(q.equals(input.next()))
    {
    q="";
    flagq=1;
    }
    }break;
    case 2://取款
    {
    flag4=qukuan(flag1,ac);
    if(flag4==2)continue;
    if(flag4==1)flagq=1;
    }break;
    case 3://转账
    {
    zhuanzhang(flag1,ac);
    if(q.equals(input.next()))
    {
    q="";
    flagq=1;
    }
    }break;
    case 4://修改密码
    {
    resetpassward(flag1, ac);
    if(q.equals(input.next()))
    {
    q="";
    flagq=1;
    }
    }break;
    case 5://查看
    {
    face(flag1,10,ac);
    if(q.equals(input.next()))
    {
    q="";
    flagq=1;
    }
    }break;
    }
    }while(flagq!=1);
    }
    else
    {
    face(flag1,11,ac);
    }

    }
    }
    public static void getInformation(ArrayList<Account> ac)//获得信息
    {

    try
    {
    FileReader fr=new FileReader("AccountInformation");
    Scanner r=new Scanner(fr);
    while(r.hasNext())
    {
    Account a=new Account();
    a.setAccountID(r.next());
    a.setAccontpassword(r.next());
    a.setAccountname(r.next());
    a.setAccountbalance(r.nextInt());
    ac.add(a);
    }
    fr.close();
    r.close();
    }
    catch(Exception e)
    {
    System.out.println("文件写入失败");
    }
    }
    public static void setInformation(ArrayList<Account> ac)//写入信息
    {
    try
    {
    int i=0;
    FileWriter fw=new FileWriter("AccountInformation");
    PrintWriter pw=new PrintWriter(fw);
    for(i=0;i<ac.size();i++)
    {

    pw.println(ac.get(i).getAccountID()+" "+ac.get(i).getAccontpassword()+" "+ ac.get(i).getAccountname()+" "+ac.get(i).getAccountbalance());
    }
    pw.flush();
    pw.close();
    fw.close();
    }
    catch(Exception e)
    {
    System.out.println("文件写入失败");
    }
    }
    public static String getList(int i,ArrayList<Account> ac)//读取流水
    {
    try
    {
    FileReader fr=new FileReader("AccountList");
    Scanner in=new Scanner(fr);
    String iid=ac.get(i).getAccountID();
    String id=new String();
    String s=new String();
    String sum="";
    int z=1;
    while(in.hasNextLine())
    {
    id=in.next();
    if(iid.equals(id))
    {
    s=id+" "+in.nextLine()+" ";
    sum=sum+"( "+z+" ) "+s;
    z++;
    }
    }
    fr.close();
    in.close();
    return sum;
    }
    catch(Exception e)
    {
    System.out.println("文件读取失败");
    return "";
    }
    }
    public static void setList(int i,ArrayList<Account> ac)//写入流水
    {
    try
    {
    Account a=ac.get(i);
    FileWriter fw=new FileWriter("AccountList",true);
    PrintWriter pw=new PrintWriter(fw);
    pw.println(a.getAccountID()+" "+a.getAccountname()+" "+ a.getOperatedate()+" "+a.getOperatetype()+" "+a.getAmount());
    pw.flush();
    pw.close();
    fw.close();
    }
    catch(Exception e)
    {
    System.out.println("文件写入失败");
    }
    }
    public static void zhuanzhang(int i,ArrayList<Account> ac)
    {
    Account a=new Account();
    Account b=new Account();
    Scanner input=new Scanner(System.in);
    String z="",x="";
    int t=0,m=0,f1=0;
    while(f1==0)
    {
    face(i,6,ac);
    z=input.next();
    if((t=id(z,ac))>=0)//判断
    {
    try
    {
    face(i,7,ac);
    m=input.nextInt();
    if(m<=0)throw new Exception();
    }
    catch(Exception e)
    {
    face(i,13,ac);
    f1=1;
    continue;
    }

    if(f1==0)//输入正确 开始转账
    {
    a=ac.get(i);
    b=ac.get(t);
    a.setAmount(-m);
    b.setAmount(m);
    ac.set(i, a);
    face(i,t,1,ac);
    x=input.next();
    if(x.equals("Y")==true)
    {
    a.setOperatedate();
    a.setOperatetype(3);
    b.setOperatedate();
    b.setOperatetype(3);
    if(ac.get(i).getAccountbalance()>=m)
    {
    a.setAccountbalance(a.getAccountbalance()-m);//取款
    ac.set(i, a);
    setList(i, ac);
    b.setAccountbalance(b.getAccountbalance()+m);//存款
    ac.set(t, b);
    setList(t, ac);
    setInformation(ac);
    face(i,t,2,ac);
    break;
    }
    else
    {
    face(i,19,ac);
    break;
    }

    }
    else if(x.equals("N")==true)
    {
    break;
    }
    else
    {
    face(i,20,ac);
    }

    }
    }
    }
    }
    public static void resetpassward(int i,ArrayList<Account> ac)
    {
    Account a=new Account();
    Scanner input=new Scanner(System.in);
    String s1="",s2="",s3="";
    int f1=0,f2=0,t=0;
    face(i,8,ac);
    s1=input.next();
    f1=login(i,s1,ac);//密码正确
    if(f1==1)
    {
    s2=input.next();
    s3=input.next();
    if(s2.equals(s3))//相等
    {
    if(s2.length()!=6)//格式
    {
    f2= -1;
    face(i,16,ac);
    }
    for(t=0;t<s2.length();t++)//格式
    {
    if(s2.charAt(t)<'0'||s2.charAt(t)>'9')
    {
    f2= -1;
    face(i,16,ac);
    }
    }
    if(f2==0)
    {
    a=ac.get(i);
    a.setAmount(0);
    a.setOperatetype(4);
    a.setOperatedate();
    a.setAccontpassword(s2);
    ac.set(i, a);
    setList(i, ac);
    setInformation(ac);
    face(i,9,ac);
    }
    }
    else
    {
    face(i,17,ac);
    }
    }
    else
    {
    face(i,18,ac);
    }
    }
    public static int qukuan(int i,ArrayList<Account> ac)
    {
    Account a=new Account();
    Scanner input=new Scanner(System.in);
    int f=0,m=0;
    face(i,5,ac);
    do
    {
    try
    {
    f=input.nextInt();
    if(f<=0)throw new Exception();
    }
    catch(Exception e)
    {
    face(i,15,ac);
    continue;
    }
    switch(f)
    {
    case 1:m=100;break;
    case 2:m=500;break;
    case 3:m=1000;break;
    case 4:m=1500;break;
    case 5:m=2000;break;
    case 6:m=5000;break;
    case 7:
    {
    try
    {
    m=input.nextInt();
    if(m<=0)throw new Exception();
    }
    catch(Exception e)
    {
    face(i,15,ac);
    continue;
    }
    };break;
    case 8:return 1;
    case 9:return 2;
    }
    }while(f>8);
    if(ac.get(i).getAccountbalance()>=m)
    {
    a=ac.get(i);
    a.setAccountbalance(a.getAccountbalance()-m);
    a.setAmount(m*-1);
    a.setOperatetype(2);
    a.setOperatedate();
    ac.set(i, a);
    setList(i, ac);
    setInformation(ac);
    face(i,22,ac);
    }
    else
    {
    face(i,19,ac);
    }
    return 0;
    }
    //@SuppressWarnings("resource")
    public static void cunkuan(int i,ArrayList<Account> ac)
    {
    Account a=new Account();
    Scanner input=new Scanner(System.in);
    int m=0,f=0;
    face(i,4,ac);
    try
    {
    m=input.nextInt();
    if(m<=0) throw new Exception();

    }
    catch(Exception e)
    {
    face(i,15,ac);
    f= -1;
    }
    a=ac.get(i);
    a.setAccountbalance(a.getAccountbalance()+m);
    a.setAmount(m);
    a.setOperatetype(1);
    a.setOperatedate();
    ac.set(i, a);
    setList(i, ac);
    setInformation(ac);
    if(f==0)
    {
    face(i,21,ac);
    }
    }
    public static int id(String accountID,ArrayList<Account> ac)
    {
    int i=0,t=0;
    if(accountID.length()!=8)//格式
    {
    return -2;
    }
    for(t=0;t<accountID.length();t++)//格式
    {
    if(accountID.charAt(t)<'0'||accountID.charAt(t)>'9')
    {
    return -2;
    }
    }
    for(i=0;i<ac.size();i++)//查找 i 为账户序号
    {
    if(ac.get(i).getAccountID().equals(accountID)==true)
    {
    return i;
    }
    }
    return -1;
    }

    public static int login(int i,String accountpassword,ArrayList<Account> ac)
    {
    int t=0;
    if(accountpassword.length()!=6)//格式
    {
    return -1;
    }
    for(t=0;t<accountpassword.length();t++)//格式
    {
    if(accountpassword.charAt(t)<'0'||accountpassword.charAt(t)>'9')
    {
    return -1;
    }
    }
    if(ac.get(i).getAccontpassword().equals(accountpassword)==true)//正误
    {
    return 1;
    }
    else
    {
    return -1;
    }
    }
    public static void face(int select)
    {
    System.out.println("**********************************************");
    System.out.println(" 欢迎使用中国工商银行自助柜台系统");
    System.out.println("**********************************************");
    switch(select)
    {
    case 1://输入账号
    {
    System.out.println(" 请输入你的账号");
    }break;
    case 2://输入密码
    {
    System.out.println(" 请输入你的密码");

    }break;
    }
    }
    public static void face(int i,int select,ArrayList<Account> ac)
    {
    System.out.println("**********************************************");
    System.out.println(" 欢迎"+ac.get(i).getAccountname()+"使用中国工商银行自助柜台系统");
    System.out.println("**********************************************");
    switch(select)
    {

    case 3://主界面
    {
    System.out.println(" 1、 存款");
    System.out.println(" 2、 取款");
    System.out.println(" 3、 转账汇款");
    System.out.println(" 4、 修改密码");
    System.out.println(" 5、 查询余额");
    }break;
    case 4://存款
    {
    System.out.println(" 请输入存款金额");
    }break;
    case 5://取款
    {
    System.out.println(" "+ac.get(i).getAccountname()+"账户当前账户每日可以支取2万元。");
    System.out.println(" 1、100元");
    System.out.println(" 2、500元");
    System.out.println(" 3、1000元");
    System.out.println(" 4、1500元");
    System.out.println(" 5、2000元");
    System.out.println(" 6、5000元");
    System.out.println(" 7、其他金额");
    System.out.println(" 8、退卡");
    System.out.println(" 9、返回");
    }break;
    case 6://输入转账账户
    {
    System.out.println(" 请输入转账账户:");
    }break;
    case 7://输入转账金额
    {
    System.out.println(" 请输入转账金额:");
    }break;
    case 8://修改密码
    {
    System.out.println(" 请输入当前密码:");
    System.out.println(" 请输入修改密码:");
    System.out.println(" 请输入确认密码:");
    }break;
    case 9://修改密码成功
    {
    System.out.println(" 当前账户修改密码成功");
    }break;
    case 10://显示余额和操作流程
    {
    System.out.println(" 当前账户余额为 "+ac.get(i).getAccountbalance()+" 元。");
    System.out.println(" 当前账户清单信息为:");
    System.out.print(getList(i, ac));
    Account a=ac.get(i);
    a.setAmount(0);
    a.setOperatetype(5);
    a.setOperatedate();
    setList(i, ac);
    }break;
    case 11:
    {
    System.out.println(" 该账号三次录入密码错误,该卡已被系统没收,请与工商银行及时联系。");
    }break;
    case 12:
    {
    System.out.println(" 该卡不是工商卡");
    }break;
    case 13:
    {
    System.out.println(" 该账号不存在");
    }break;
    case 14:
    {
    System.out.println(" 密码录入错误");
    }break;
    case 15:
    {
    System.out.println(" 请输入正整数");
    }break;
    case 16:
    {
    System.out.println(" 密码格式错误");
    }break;
    case 17:
    {
    System.out.println(" 修改密码与确认密码不一致");
    }break;
    case 18:
    {
    System.out.println(" 当前密码录入错误");
    }break;
    case 19:
    {
    System.out.println(" 账户余额不足");
    }break;
    case 20:
    {
    System.out.println(" 请输入"Y"或"N"");
    }break;
    case 21:
    {
    System.out.println(" 当前账户存款款"+ac.get(i).getAmount()+"成功。");
    System.out.println(" 当前账户余额为 "+ac.get(i).getAccountbalance()+" 元。");
    }break;
    case 22:
    {
    System.out.println(" 当前账户取款"+ac.get(i).getAmount()+"成功。");
    System.out.println(" 当前账户余额为 "+ac.get(i).getAccountbalance()+" 元。");
    }break;
    }
    }
    public static void face(int i,int t,int select,ArrayList<Account> ac)
    {
    String s=ac.get(t).getAccountname();
    String star=s.substring(1);
    star="*"+star;
    System.out.println("*********************************************");
    System.out.println(" 欢迎"+ac.get(i).getAccountname()+"使用中国工商银行自助柜台系统");
    System.out.println("**********************************************");
    switch(select)
    {
    case 1://确认
    {
    System.out.println(" 请确认是否向"+star+"转账"+ac.get(i).getAmount()*-1+"元");
    }break;
    case 2:
    {
    System.out.println(" 当前账户成功向"+star+"转账"+ac.get(i).getAmount()*-1+"元");
    System.out.println(" 当前账户余额为 "+ac.get(i).getAccountbalance()+" 元。");
    }break;
    }
    }

    }

  • 相关阅读:
    PHP关于异常说明
    PHP关于微信授权
    python flask使用方法
    scrcpy启动方法
    ADB shell出现error:device offline提示
    使用Spring框架整合Java Mail
    基于Aspectj表达式配置的Spring AOP
    如何安装和使用Maven
    在Linux系统下安装nginx教程
    了解Maven的基本知识
  • 原文地址:https://www.cnblogs.com/0518liu/p/9697375.html
Copyright © 2011-2022 走看看