1、Java语言编写实现银行账号开户存款取款和转账等功能Java语言编写实现银行账号开户、存款、取款、查询和转账源代码详解需求分析1. ATM柜员机系统保存所有开户用户的信息(银行卡号、密码、真实姓名、家庭地址、联系电话、卡内金额),限制最大开户数1002. 用户通过开户能实现自助开户,银行卡号随机数生成5位整数,卡内金额默认为0,其他信息由客户在控制台上输入,要求银行卡号不能重复3. 用户可以选择存款选项办理存款业务 要求存款客户必须是已经在我行合法开户的用户,卡号、密码必须进过验证才能登录系统进行存款业务的办理,业务办理完毕后显示该客户目前的卡内余额信息并提示办理成功4. 用户可以选择取款选择
2、办理取款 要求取款客户必须是已经在我行合法开户的用户,卡号、密码必须进过验证才能登录系统进行取款业务的办理,输入存款金额后,显示目前卡内余额信息并提示办理成功5. 用户可以选择查询余额选择办理查询业务 要求取款客户必须是已经在我行合法开户的用户,卡号、密码必须进过验证才能登录系统进行查询业务的办理,登录信息验证成功后显示该用户的详细信息6. 用户可以选择转账选项办理查询业务本系统只支持本地行内转账 要求取款客户必须是已经在我行合法开户的用户,卡号、密码必须进过验证才能登录系统进行转账业务的办理,用户输入的转账帐号必须是已经在我行合法开户的用户,合法的转账帐号显示该用户姓名,输入转账金额,完成转
3、账功能显示自己的卡内余额并提示业务办理成功7. 用户选择退出,结束本次业务办理8. 该项目中的相关逻辑判断请自行斟酌1. 将用户的卡号、密码、姓名、手机号码、家庭住址和卡上余额属性封装成对象,代码如下package com.zsrt.test;import java.util.*;public class BankAccount private int cardNum; private String passWord; private String name; private String address; private long telephone; private float money
4、; public int getCardNum() return cardNum; public void setCardNum(int cardNum) this.cardNum = cardNum; public String getPassWord() return passWord; public void setPassWord(String passWord) this.passWord = passWord; public String getName() return name; public void setName(String name) this.name = name
5、; public String getAddress() return address; public void setAddress(String address) this.address = address; public long getTelephone() return telephone; public void setTelephone(long telephone) this.telephone = telephone; public float getMoney() return money; public void setMoney(float money) this.m
6、oney = money; 2. 建立测试类Junit Test文件package com.zsrt.test;import static org.junit.Assert.*;import java.util.*;import java.text.DecimalFormat;import org.junit.Before;import org.junit.Test;public class ATMTest Scanner sn=new Scanner(System.in); List clientList=new ArrayList(); /采用动态数组来存放用户的信息 DecimalFor
7、mat df=new DecimalFormat(0.00);/格式化输出余额 Before public void setUp() throws Exception Test public void test() System.out.println(ttt*); System.out.println(ttt* *); System.out.println(ttt* *); System.out.println(ttt* 欢迎进入中国银行 *); System.out.println(ttt* *); System.out.println(ttt* *); System.out.printl
8、n(ttt*); while(true) System.out.println(ttt请选择您要办理的手续:); System.out.println(tttt1.开户); System.out.println(tttt2.存款); System.out.println(tttt3.取款); System.out.println(tttt4.查询余额); System.out.println(tttt5.转账); System.out.println(tttt6.退出); System.out.println(ttt请输入您要办理的项目); int num=sn.nextInt(); if(n
9、um=1) openAccount(); else if(num=2) saveMoney(); else if(num=3) takeMoney(); else if(num=4) checkMoney(); else if(num=5) transferMoney(); else if(num=6) System.out.println(退出); break; else System.out.println(请输入正确的选项!); public class BankAccount private int cardNum; private String passWord; private S
10、tring name; private String address; private long telephone; private double money; public int getCardNum() return cardNum; public void setCardNum(int cardNum) this.cardNum = cardNum; public String getPassWord() return passWord; public void setPassWord(String passWord) this.passWord = passWord; public
11、 String getName() return name; public void setName(String name) this.name = name; public String getAddress() return address; public void setAddress(String address) this.address = address; public long getTelephone() return telephone; public void setTelephone(long telephone) this.telephone = telephone
12、; public double getMoney() return money; public void setMoney(double money) this.money = money; public void openAccount()/开户函数 BankAccount account=new BankAccount(); int cardNum=(int)(Math.random()*90000+10000); account.setCardNum(cardNum); System.out.println(系统已为您随机分配一个卡号+cardNum); System.out.print
13、ln(请为您的账户设置密码:); String passWord=sn.next(); account.setPassWord(passWord); System.out.println(请输入您的姓名:); String name=sn.next(); account.setName(name); System.out.println(请输入您的地址); String address=sn.next(); account.setAddress(address); System.out.println(请输入您的联系电话:); long telephone=sn.nextLong(); acc
14、ount.setTelephone(telephone); if(clientList.isEmpty() clientList.add(account); System.out.println(开户成功!+您的卡号是:+account.getCardNum(); else BankAccount account_1=checkCardNum(account.getCardNum();/卡号应是唯一的,若已在clientList中则表示卡号重复,需要重新开户,否则可以将account对象添加到clientList中 if(account_1=null) account.setMoney(0);
15、 clientList.add(account); System.out.println(开户成功!您的卡号是:+account.getCardNum(); /end public void saveMoney() /存款函数 BankAccount account=login();/每次操作前需要先登录 if(account=null) System.out.println(账号或密码有误,登录失败!); else System.out.println(登录成功!请输入您的存款金额:); double money=sn.nextFloat(); account.setMoney(money+
16、account.getMoney(); String str=df.format(account.getMoney(); System.out.println(存款成功!您现在的卡上余额为:+str); public void takeMoney() /取款函数 BankAccount account=login(); if(account=null) System.out.println(您输入的账号或密码有误,登录失败!); else System.out.println(登录成功!请输入您的取款金额:); double money=sn.nextFloat(); if(account.g
17、etMoney()account.getMoney() System.out.println(您的卡上余额不足+money+,转账失败!); else account.setMoney(account.getMoney()-money); account_1.setMoney(money+account_1.getMoney(); String str=df.format(account.getMoney(); System.out.println(转账成功!您现在的卡上余额是:+str); else System.out.println(您输入的卡号在本行不存在,转账失败!); public
18、 BankAccount checkCardNum(int cardNum)/查询卡号在clientList中是否存在clientList,若找到则返回其中的account对象,否则返回null BankAccount account=null; for(BankAccount account_1: clientList) /遍历clientList列表 if(account_1.getCardNum()=cardNum) account=account_1; break; else account=null; /end return account; public BankAccount l
19、ogin() /登录函数 如果客户输入的卡号和密码与存入clientList中找到的account对象的卡号和密码相同才表示登录成功 BankAccount account_1=null; System.out.println(请输入您的卡号:); int cardNum=sn.nextInt(); BankAccount account=checkCardNum(cardNum); System.out.println(请输入您的密码:); String passWord=sn.next(); if(account!=null & account.getPassWord().equals(passWord) account_1=account; else account_1=null; return account_1;