实现以下功能:
1.账户开户:创建账户,输入密码,获得随机卡号;
2.账户登录:查询余额功能已完成,其余功能类似,节约时间没写
代码展示:
一共创建两个类:Account类(创建账户对象),ATMSystem类(main方法实现功能)
Account类代码如下:
**
* 用户对象构建
*
* @author 30115
*/
public class Account {
private String cardId;
private String userName;
private String passWord;
private String money;
private String quotMoney;
public Account() {
}
public Account(String cardId, String userName, String passWord, String money, String quotMoney) {
this.cardId = cardId;
this.userName = userName;
this.passWord = passWord;
this.money = money;
this.quotMoney = quotMoney;
}
public String getCardId() {
return cardId;
}
public void setCardId(String cardId) {
this.cardId = cardId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
public String getMoney() {
return money;
}
public void setMoney(String money) {
this.money = money;
}
public String getQuotMoney() {
return quotMoney;
}
public void setQuotMoney(String quotMoney) {
this.quotMoney = quotMoney;
}
}
ATMSystem类代码如下:
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
public class ATMSystem {
public static void main(String[] args) {
//定义一个集合
ArrayList accounts = new ArrayList<>();
//显示系统信息
while (true) {
System.out.println("======ATM=====");
System.out.println("1.账户登录");
System.out.println("2.账户开户");
Scanner sc = new Scanner(System.in);
System.out.println("输入命令");
int command = sc.nextInt();
switch (command) {
case 1 ->
//登录
login(accounts, sc);
case 2 ->
//开户
register(accounts, sc);
default -> System.out.println("错误命令");
}
}
}
private static void login(ArrayList accounts, Scanner sc) {
System.out.println("==========登录页面========");
//判断事故否存在账户
if (accounts.size() == 0) {
System.out.println("无账号,先开户");
return;
}
//登录操作
System.out.println("输入卡号");
String cardId = sc.next();
//判断账户是否存在
Account acc = getAccountByCardId(accounts, cardId);
if (acc == null) {
System.out.println("没有此账号!");
}
System.out.println("输入密码");
String passWord = sc.next();
if (acc.getPassWord().equals(passWord)) {
System.out.println("登录成功!");
//进入具体操作页面
displayUserSpecificInformation(accounts, cardId, sc);
} else {
System.out.println("密码错误!");
}
}
private static void displayUserSpecificInformation(ArrayList accounts,String cardId,Scanner sc) {
System.out.println("=========用户信息=======");
System.out.println("输入命令:");
System.out.println("1.查询余额");
System.out.println("2.转账");
System.out.println("3.注销");
System.out.println("4.改密码");
int command = sc.nextInt();
switch (command) {
case 1 ->
//查询余额
checkBalances(accounts, cardId);
case 2 ->
//转账
System.out.println("转账");
case 3 ->
//注销
System.out.println("注销");
case 4 ->
//注销
System.out.println("改密码");
default -> System.out.println("错误命令");
}
}
private static void checkBalances(ArrayList accounts,String cardId) {
System.out.println("查询余额");
//得到卡号,调用卡号查账户功能,获得账户,然后获得余额,为展示功能,方便直接存入10000
getAccountByCardId(accounts, cardId).setMoney("10000");
//获得余额
System.out.println(getAccountByCardId(accounts, cardId).getMoney());
}
public static void register(ArrayList accounts, Scanner sc) {
System.out.println("==========开户页面==========");
Account a = new Account();
System.out.println("你的名字");
String userName = sc.next();
System.out.println("请输入密码");
String passWord = sc.next();
System.out.println("请再次输入密码");
String passWord_1 = sc.next();
if (passWord.equals(passWord_1)) {
//将数据放入对象
a.setPassWord(passWord);
a.setUserName(userName);
} else {
System.out.println("密码不一致");
}
System.out.println("输入每日限额");
String quotMoney = sc.next();
a.setQuotMoney(quotMoney);
//随机生成8位随机账户,不重复,写个独立方法
String cardId = getRandomCardId(accounts);
a.setCardId(cardId);
//将账户放进集合
accounts.add(a);
System.out.println("账户创建成功" + "卡号:" + cardId);
}
private static String getRandomCardId(ArrayList accounts) {
Random ran = new Random();
while (true) {
String cardId = "";
//产生8位随机数
for (int i = 0; i < 8; i++) {
cardId += ran.nextInt(9);
}
Account acc = getAccountByCardId(accounts, cardId);
if (acc == null) {
return cardId;
//返回可以用的卡号
}
}
}
private static Account getAccountByCardId(ArrayList accounts, String CardId) {
for (Account acc : accounts) {
if (acc.getCardId().equals(CardId)) {
return acc;
}
}
return null;
}
}
完毕



