java atm模拟系统_ATM机模拟系统

这是一个用Java编写的ATM模拟系统,包括了账号管理、信息输入、操作记录等功能。系统能够读取并更新账号信息文件,支持存款、取款、转账、密码修改和余额查询等操作,并对输入错误进行处理。
摘要由CSDN通过智能技术生成

/*信1705-1 20173458 王嘉梁*/

packageatm;importjava.util.Scanner;import java.io.*;importjava.util.Date;importjava.text.SimpleDateFormat;classAccount {privateString accountID;privateString accountname;privateString operatedate;private intoperatetype;privateString accountpassword;private intaccountbalance;private intamount;public String[] operation = new String[100]; //记录所有的操作

int operationTimes; //存取款、转账、改密、查询余额操作的次数

public int inputTimes; //录入密码错误的次数

public voidsetAccountID(String a) {

accountID=a;

}public voidsetAccountname(String a) {

accountname=a;

}public voidsetOperatedate(String a) {

operatedate=a;

}public void setOperatetype(inta) {

operatetype=a;

}public voidsetAccountpassword(String a) {

accountpassword=a;

}public void setAccountbalance(inta) {

accountbalance=a;

}public void setAmount(inta) {

amount=a;

}publicString getAccountID() {returnaccountID;

}publicString getAccountname() {returnaccountname;

}publicString getOperatedate() {returnoperatedate;

}public intgetOperatetype() {returnoperatetype;

}publicString getAccountpassword() {returnaccountpassword;

}public intgetAccountbalance() {returnaccountbalance;

}public intgetAmount() {returnamount;

}

Account()

{

accountID=null;

accountname=null;

operatedate=null;

operatetype=0;

accountpassword=null;

accountbalance=0;

amount=0;for(int i=0;i<100;i++)

operation[i]=null;

operationTimes=0;

inputTimes=0;

}

}classAccountManager{static Scanner sc = newScanner(System.in);static Account[] account = new Account[10];static int m=0;public void informationInput() throwsIOException {

BufferedReader br= new BufferedReader(new InputStreamReader(new FileInputStream("accountinformation.txt")));

String data= null;int i=1;while((data = br.readLine())!=null) //将accountinformation.txt的内容导入到对象数组account内

{switch(i)

{case 1:account[m].setAccountID(data);break;case 2:account[m].setAccountname(data);break;case 3:account[m].setAccountpassword(data);break;case 4:account[m].setAccountbalance(Integer.parseInt(data));break;

}

i++;if(i>4)

{

i=1;

m++;

}

}

br.close();

}public void listInput() throwsIOException {

BufferedReader br= new BufferedReader(new InputStreamReader(new FileInputStream("accountlist.txt")));

String data;for(int i=1,j=0;i<5*m && j

{

data=br.readLine();if(i%5==3)

account[j].setOperatedate(data);else if(i%5==4)

account[j].setOperatetype(Integer.parseInt(data));else if(i%5==0)

{

account[j].setAmount(Integer.parseInt(data));

j++;

}

}

br.close();

}

AccountManager()throwsIOException {for(int i=0;i<10;i++)

account[i]= newAccount();

informationInput();

listInput();

}public void outputAll() throwsIOException {

BufferedWriter bw1= new BufferedWriter(new OutputStreamWriter(new FileOutputStream("accountinformation.txt")));

BufferedWriter bw2= new BufferedWriter(new OutputStreamWriter(new FileOutputStream("accountlist.txt")));for(int i=0;i

{

bw1.write(account[i].getAccountID()+ "\r\n"); //更新accountinformation.txt的内容

bw1.write(account[i].getAccountname() + "\r\n");

bw1.write(account[i].getAccountpassword()+ "\r\n");

bw1.write(Integer.toString(account[i].getAccountbalance())+ "\r\n");

bw1.flush();

bw2.write(account[i].getAccountID()+ "\r\n"); //更新accountlist.txt的内容

bw2.write(account[i].getAccountname() + "\r\n");

bw2.write(account[i].getOperatedate()+ "\r\n");

bw2.write(Integer.toString(account[i].getOperatetype())+ "\r\n");

bw2.write(Integer.toString(account[i].getAmount())+ "\r\n");

bw2.flush();

}bw1.close();

bw2.close();

}public int input() throwsIOException {

String regex= "[0-9]{8}";

System.out.println("***************************************************************");

System.out.println(" 欢迎使用中国工商银行自动柜员系统");

System.out.println("***************************************************************");

System.out.print(" 请输入您的账号:");

String ID=sc.next();boolean isExist = false;if(ID.matches(regex)) //判断是否为数字和数字位数是否为8位

{for(int i=0;i

if(ID.compareTo(account[i].getAccountID())==0)

{

isExist=true;while(account[i].inputTimes<3)

{

System.out.println("\n\n\n***************************************************************");

System.out.println(" 欢迎"+account[i].getAccountname()+"使用中国工商银行自助柜员系统");

System.out.println("***************************************************************");

System.out.print(" 请输入您的密码:");

String pw=sc.next();if(pw.compareTo(account[i].getAccountpassword())==0) //密码输入正确

returni;elseSystem.out.println("密码录入错误");

account[i].inputTimes++;

}

System.out.println("该账号三次录入密码错误,该卡已被系统没收,请与工行及时联系处理");

}if(isExist==false)

{

System.out.println("该账号不存在"); //没有找到

return -1;

}

}elseSystem.out.println("该卡不是工行卡"); //不符合要求

return -1;

}public int face(int t) throwsIOException {int i=1;do{

System.out.println("\n\n\n***************************************************************");

System.out.println(" 欢迎"+account[t].getAccountname()+"使用中国工商银行自助柜员系统");

System.out.println("***************************************************************");

System.out.println(" 1、存款;\n 2、取款;\n 3、转账汇款;\n 4、修改密码;\n 5、查询余额;");

System.out.print("***************************************************************\n请选择:");

String s=sc.next();switch(s)

{case "1":i=save(t);break;case "2":i=take(t);break;case "3":transfer(t);break;case "4":changePassword(t);break;case "5":findBalance(t);break;case "Q":i=0;break;case "q":i=0;break;default:System.out.println("请正确选择!");

}

}while(i!=0);return -1; //返回值为-1使主函数while语句结束,重新输入账号密码

}public int save(int t) throwsIOException {do{

String regex= "[0-9]+";

System.out.println("\n\n\n***************************************************************");

System.out.println(" 欢迎"+account[t].getAccountname()+"使用中国工商银行自助柜员系统");

System.out.println("***************************************************************");

System.out.print(" 请输入存款金额:");

String s=sc.next();if(s.matches(regex))

{

account[t].setAccountbalance(account[t].getAccountbalance()+Integer.parseInt(s));

System.out.println("\n\n\n***************************************************************");

System.out.println(" 欢迎"+account[t].getAccountname()+"使用中国工商银行自助柜员系统");

System.out.println("***************************************************************");

System.out.println("\t\t当前账户存款操作成功。");

System.out.println("\t\t当前账户余额为:"+account[t].getAccountbalance()+"元");

System.out.println("****************************************************************");

Date d= newDate();

SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");

account[t].setOperatedate(sdf.format(d));

account[t].setOperatetype(1);

account[t].setAmount(Integer.parseInt(s));

account[t].operation[account[t].operationTimes]="1"+sdf.format(d)+s; //用于存储所有进行过的存款操作,格式为操作类型、操作时间、操作金额

account[t].operationTimes++;

outputAll();return 1; //1为存款成功

}else if(s.compareTo("q")==0)return 0; //0为返回输入账号密码界面

elseSystem.out.println("输入金额有误");

}while(true);

}public int take(int t) throwsIOException{do{

System.out.println("\n\n\n***************************************************************");

System.out.println(" 欢迎"+account[t].getAccountname()+"使用中国工商银行自助柜员系统");

System.out.println("***************************************************************");

System.out.println("\t\t当前账户每日可以支取2万元。\n\t\t1、100元\n\t\t2、500元\n\t\t3、1000元\n\t\t4、1500元\n\t\t5、2000元\n\t\t6、5000元\n\t\t7、其他金额\n\t\t8、退卡\n\t\t9、返回");

System.out.print("***************************************************************\n请选择:");

String s=sc.next();int money=0;switch(s)

{case "1":money=100;break;case "2":money=500;break;case "3":money=1000;break;case "4":money=1500;break;case "5":money=2000;break;case "6":money=5000;break;case "7":

System.out.println("\n\n\n***************************************************************");

System.out.println(" 欢迎"+account[t].getAccountname()+"使用中国工商银行自助柜员系统");

System.out.println("***************************************************************");

System.out.print(" 请输入取款金额:");

String regex= "[0-9]+";

String str=sc.next();if(str.matches(regex))

money=Integer.parseInt(str);elseSystem.out.println("输入金额有误");break;case "8":return 0; //回到输入账号密码界面

case "9":return 1; //回到选择功能界面

default:System.out.println("请正确选择!");

}if(money==0)continue;else if(account[t].getAccountbalance()

System.out.println("账户余额不足");else{

account[t].setAccountbalance(account[t].getAccountbalance()-money);

System.out.println("\n\n\n***************************************************************");

System.out.println(" 欢迎"+account[t].getAccountname()+"使用中国工商银行自助柜员系统");

System.out.println("***************************************************************");

System.out.println("\t\t当前账户取款操作"+money+"元成功。");

System.out.println("\t\t当前账户余额为:"+account[t].getAccountbalance()+"元");

System.out.println("****************************************************************");

Date d= newDate();

SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");

account[t].setOperatedate(sdf.format(d));

account[t].setOperatetype(2);

account[t].setAmount(money);

account[t].operation[account[t].operationTimes]="2"+sdf.format(d)+Integer.toString(money); //用于存储所有进行过的取款操作

account[t].operationTimes++;

outputAll();

}

}while(true);

}public void transfer(int t) throwsIOException{

System.out.println("\n\n\n***************************************************************");

System.out.println(" 欢迎"+account[t].getAccountname()+"使用中国工商银行自助柜员系统");

System.out.println("***************************************************************");

System.out.print(" 请输入转账账户:");

String ID=sc.next();boolean isExist = false;for(int i=0;i

if(ID.compareTo(account[i].getAccountID())==0)

{

isExist=true;

System.out.println("\n\n\n***************************************************************");

System.out.println(" 欢迎"+account[t].getAccountname()+"使用中国工商银行自助柜员系统");

System.out.println("***************************************************************");

System.out.print(" 请输入金额:");int money=sc.nextInt();if(account[t].getAccountbalance()

System.out.println("账户余额不足");else{

StringBuffer name= new StringBuffer(account[i].getAccountname()); //隐藏被转账者账户姓名

name.replace(0, 1, "*");

System.out.println("\n\n\n***************************************************************");

System.out.println(" 欢迎"+account[t].getAccountname()+"使用中国工商银行自助柜员系统");

System.out.println("***************************************************************");

System.out.println(" 请确认是否向"+name.toString()+"转账"+money+"元。(y/n)");

String s=sc.next();if(s.compareTo("Y")==0||s.compareTo("y")==0)

{

account[t].setAccountbalance(account[t].getAccountbalance()-money);

account[i].setAccountbalance(account[i].getAccountbalance()+money);

Date d= newDate();

SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");

account[t].setOperatedate(sdf.format(d));

account[t].setOperatetype(3);

account[t].setAmount(money);

account[t].operation[account[t].operationTimes]="3"+sdf.format(d)+account[i].getAccountID()+Integer.toString(money); //用于存储进行过的转账操作

account[t].operationTimes++;

outputAll();

System.out.println("\n\n\n***************************************************************");

System.out.println(" 欢迎"+account[t].getAccountname()+"使用中国工商银行自助柜员系统");

System.out.println("***************************************************************");

System.out.println(" 当前账户向"+name.toString()+"成功转账"+money+"元。");

System.out.println(" 当前账户余额为:"+account[t].getAccountbalance()+"元");

System.out.println("***************************************************************");

}

}

}if(isExist==false)

System.out.println("该账号不存在"); //没有找到被转账者账户

}public void changePassword(int t) throwsIOException{do{

System.out.println("\n\n\n***************************************************************");

System.out.println(" 欢迎"+account[t].getAccountname()+"使用中国工商银行自助柜员系统");

System.out.println("***************************************************************");

System.out.print(" 请输入当前密码:");

String oldPassword=sc.next();if(oldPassword.compareTo(account[t].getAccountpassword())!=0)

System.out.println("当前密码录入错误");else{

System.out.print(" 请输入修改密码:");

String newPassword=sc.next();

System.out.print(" 请输入确认密码:");

String confirmPassword=sc.next();if(newPassword.compareTo(confirmPassword)!=0)

System.out.println("修改密码与确认密码不一致");else{

Date d= newDate();

SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");

account[t].setOperatedate(sdf.format(d));

account[t].setOperatetype(4);

account[t].setAmount(0);

account[t].operation[account[t].operationTimes]="4"+sdf.format(d)+account[t].getAccountpassword()+newPassword; //用于存储进行过的改密操作

account[t].operationTimes++;

account[t].setAccountpassword(newPassword);

outputAll();

System.out.println("\n\n\n***************************************************************");

System.out.println(" 欢迎"+account[t].getAccountname()+"使用中国工商银行自助柜员系统");

System.out.println("***************************************************************");

System.out.print(" 当前账户密码修改成功");return;

}

}

}while(true);

}public void findBalance(int t) throwsIOException{

Date d= newDate();

SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");

account[t].setOperatedate(sdf.format(d));

account[t].setOperatetype(4);

account[t].setAmount(0);

outputAll();

System.out.println("\n\n\n***************************************************************");

System.out.println(" 欢迎"+account[t].getAccountname()+"使用中国工商银行自助柜员系统");

System.out.println("***************************************************************");

System.out.println("\t\t当前账户余额为:"+account[t].getAccountbalance()+"元");

System.out.println("\t\t账户清单信息为:");for(int i=0,j=1;i

{

String s1=account[t].operation[i].substring(0,1);

String date=account[t].operation[i].substring(1,11);switch(s1)

{case "1":

String amount1=account[t].operation[i].substring(11);

System.out.println("\t"+j+"、"+date+"\t存款\t\t"+amount1+"元");

j++;break;case "2":

String amount2=account[t].operation[i].substring(11);

System.out.println("\t"+j+"、"+date+"\t取款\t\t"+amount2+"元");

j++;break;case "3":

String man=account[t].operation[i].substring(11,19);

String amount3=account[t].operation[i].substring(19);

System.out.println("\t"+j+"、"+date+"\t转账汇款\t\t"+"向账户"+man+"转账"+amount3+"元");

j++;break;case "4":

String operate=account[t].operation[i].substring(11,17)+"修改为"+account[t].operation[i].substring(17);

System.out.println("\t"+j+"、"+date+"\t修改账户密码\t"+operate);

j++;break;

}

}

System.out.println("***************************************************************");

}

}public classATM {public static void main(String[] args) throwsIOException {

AccountManager am= newAccountManager();do{int t=am.input();while(t>=0)

t=am.face(t);

}while(true);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值