java实现银行的ATM机

阅读: 评论:0

java实现银行的ATM机

java实现银行的ATM机

利用ArrayList集合来实现ATM机的,开户,登录,存款,取款,转账,销户等操作

有待完善地方:

1:开户时密码的设置应该有强制的安全性要求,取款,转账,销户时需要再次输入密码,提现安全性

2:密码错误的次数应设置要求

--------------------------------------------------------------------------------------------------------------------------------

1:首先定义一个Account类

public class  Account
{private String carid;private String username;private String password;private char sex;private double money;//账户余额private double limit;//账户限制额度public String getCarid() {return carid;}public void setCarid(String carid) {this.carid = carid;}public String getUsername() {return username+(sex=='男'?"先生":"女士");}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public char getSex() {return sex;}public void setSex(char sex) {this.sex = sex;}public double getMoney() {return money;}public void setMoney(double money) { = money;}public double getLimit() {return limit;}public void setLimit(double limit) {this.limit = limit;}
}

2:定义ATM的主体功能,ATM类

import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
public class ATM
{private ArrayList<Account> accounts=new ArrayList<>();private Scanner sc=new Scanner(System.in);private Account loginacc;
//欢迎的页面public void start(){while (true){System.out.println("---------欢迎来到xu的银行---------");System.out.println("1:用户登录");System.out.println("2:用户开户");System.out.println("请选择您的操作");int command&#Int();switch (command){case 1://用户登陆login();break;case 2://用户开户creatAccount();break;default:System.out.println("没有该操作");}}}

3:开户操作

//开户操作public void creatAccount(){System.out.println("-----开户页面-------");//创造一个账户对象,用于封装用户的开户信息Account acc=new Account();//用户输入开户信息,赋值给账户对象System.out.println("请输入您的用户名");String name&#();acc.setUsername(name);//设置用户的性别while(true){System.out.println("请输入您的性别");char sex&#().charAt(0);if(sex=='男'||sex=='女'){acc.setSex(sex);break;}else{System.out.println("您输入的性别有误,只能输入 男 ,女");}}//设置用户的密码while(true){System.out.println("请输入您的密码");String password1&#();System.out.println("请确认您的密码");String password2&#();if(password1.equals(password2)){acc.setPassword(password1);break;}else {System.out.println("您第2次输入的密码有误,请重新输入");}}//设置账号的限制余额System.out.println("请输入您的限制额度");double limit&#Double();acc.setLimit(limit);//生成卡号String newid=carId();acc.setCarid(newid);//把账户对象填加到集合中去accounts.add(acc);System.out.println("恭喜您"&#Username()+"开户成功,您的卡号是"&#Carid());}//随机生成一个卡号8位数private String carId(){while(true){String carid="";Random r=new Random();for(int i=0;i<8;i++){int date&#Int(10);//0-9carid+=date;}//判断是否有相同的卡号,没有就返回当前卡号,有就继续创造新的卡号Account acc=getid(carid);if(acc==null){//没有相同账户的卡号return carid;}}}//判断ATM中是否有相同的卡号private Account getid(String carid){for(int i=0;i<accounts.size();i++){Account acc&#(i);Carid().equals(carid)){return acc;}}//如果没有相同的卡号就返回空return null;}}

4:登录操作以及登录后的页面

 public  void login(){System.out.println("-----登录页面------");if(accounts.size()==0){System.out.println("账户上没有用户,请先开户");return;}while (true){System.out.println("请输入您的登录卡号");String carid&#();Account acc=getid(carid);if(acc==null){System.out.println("您输入的卡号不存在,请重新输入");}else {while(true){System.out.println("请输入您的密码");String password&#();//判断是否正常Password().equals(password)){loginacc=acc;System.out.println("恭喜您"&#Username()+"登录成功,您的卡号:"&#Carid());//登录后的页面展示showusercommand();return;}else{System.out.println("您输入的密码有误");}}}}}//登录后的页面展示private void showusercommand(){while(true){System.out.Username()+"您可以选择如下功能对账户进行处理:");System.out.println("1:查询账户");System.out.println("2:存款");System.out.println("3:取款");System.out.println("4:转账");System.out.println("5:密码修改");System.out.println("6:退出");System.out.println("7:注销当前账户");System.out.println("请选择您的操作");int command&#Int();switch (command){case 1://查询账户showloginacc();break;case 2://存款depositmoney();break;case 3://取款drawmoney();break;case 4://转账transfermoney();break;case 5://密码修改updatepassword();return;//返回欢迎界面case 6://退出System.out.Username()+"恭喜您退出成功");return;case 7://注销当前账户if(deleteaccount()){//销户成功了,返回欢迎页面return;}break;default:System.out.println("当前命令不存在");}}}

5:各种功能操作

//查询账户private  void showloginacc(){System.out.println("-----当前您的账户信息如下------");System.out.println("卡号:"&#Carid());System.out.println("户主:"&#Username());System.out.println("余额:"&#Money());System.out.println("限制额度:"&#Limit());}
//存款功能private  void depositmoney(){System.out.println("----存款操作---");System.out.println("请输入您的存款金额");double money&#Double();loginacc.Money()+money);System.out.println("恭喜您成功存款"+money+"您的当前余额为"&#Money());}//取款功能private void drawmoney(){System.out.println("------取款操作------");Money()<100){System.out.println("您的账户余额不足,当前余额为"&#Money());return;}System.out.println("请输入您要取款的金额");double money&#Double();while (true){Money()>=money){if(money> Limit()){System.out.println("您的取款金额超出了最高限制"&#Limit());break;}else {loginacc.Money()-money);System.out.println("恭喜您成功取款"+money+"您的当前账户余额为"&#Money());break;}}else {System.out.println("您的余额不足,您当前余额为"&#Money());break;}}}
//转账功能private void transfermoney() {System.out.println("-----转账操作-------");//判断账号个数if (accounts.size() < 2) {System.out.println("当前账户上只有您一个账号,无法转账请开户");return;}//判断有没有钱if (Money() == 0) {System.out.println("余额不足无法转账");return;}//转账开始while (true) {System.out.println("请输入要转入的卡号");String carid = sc.next();//判断卡号是否正正确Account acc = getid(carid);if (acc == null) {System.out.println("您输入的卡号不存在,请重新输入");} else {//卡号正确开始转账String name = "*" + Username().substring(1);//*三System.out.println("请您输入" + name + "的姓");String putname = sc.next();//判断是否正确if (Username().startsWith(putname)) {//认证通过while (true) {System.out.println("请输入您要转账的金额");double money = sc.nextDouble();if (Money() >= money) {//转账给对方loginacc.Money() - money);//自己扣钱acc.Money() + money);//对方加钱System.out.println("转账成功:"+money);return;} else {System.out.println("您的账户余额不足,您的当前余额为" + Money());}}}else {System.out.println("认证失败,请重新输入");}}}}
//密码修改private void updatepassword(){System.out.println("-----修改密码操作-------");while(true){System.out.println("请输入您的当前账户密码");String password&#();Password().equals(password)){while (true){System.out.println("请输入新的密码");String newpassword1&#();//第二次确认密码System.out.println("请确认您的密码");String newpassword2&#();if(newpassword1.equals(newpassword2)){//将进行密码修改loginacc.setPassword(newpassword2);System.out.println("密码修改成功");//返回欢迎界面return;}else{System.out.println("您输入的密码不一致,请重新输入");}}}else {System.out.println("您输入的密码不正确");}}}
//销户功能private boolean deleteaccount(){System.out.println("----销户操作-----");System.out.println("请问您确定销户吗?y/n");String command&#();switch (command){case "y"://判断账户是否有钱Money()==0){ve(loginacc);System.out.println("销户成功");return true;}else {System.out.println("您的账户还有余额,销户失败");return  false;}default:System.out.println("取消销户操作");return false;}}

主函数部分

public class Test {public static void main(String[] args){ATM atm=new ATM();atm.start();}
}

 

 

本文发布于:2024-02-03 09:02:47,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170692216750016.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:银行   java   ATM
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23