项目来源:黑马程序员
ATM系统-01、项目介绍、功能演示_哔哩哔哩_bilibili
本功能目前只实现账户的开户
新建一个Accout类
package ATM;
/**
* @author new wei
* @date 2022/12/4 17:44
*/
public class Account {
private String cardId; //银行卡号
private String userName; //用户名
private String passWord; //账户密码
private double money; //账面金额
private double quoteMoney; //取款限额值
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 double getMoney() {
return money;
}
public void setMoney(double money) {
this.money = money;
}
public double getQuoteMoney() {
return quoteMoney;
}
public void setQuoteMoney(double quoteMoney) {
this.quoteMoney = quoteMoney;
}
}
ATM系统
package ATM;
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
/**
* @author new wei
* @date 2022/12/4 17:47
*/
public class ATMSystem {
public static void main(String[] args) {
ArrayList<Account> accounts = new ArrayList<>();
// 菜单界面
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:
//账户登录
break;
case 2:
//账户开户
register(accounts,sc);
break;
default:
System.out.println("你输入的操作不存在");
}
}
/**
*用户开户功能的实现
* @param accounts 接收的账户集合
*/
private static void register(ArrayList<Account> accounts, Scanner sc) {
System.out.println("======系统开户操作======");
//1、创建一个账户对象,用于后期封装账户信息
Account account = new Account();
//2、录入当前这个账户的信息,注入到账户对象中去
System.out.println("请输入用户名");
String username = sc.next();
account.setUserName(username);
while(true) {
System.out.println("请输入账户密码");
String password = sc.next();
System.out.println("请再次确认账户密码");
String okpassword = sc.next();
if (password.equals(okpassword)) {
//密码确认成功
account.setPassWord(okpassword);
break;
} else {
System.out.println("您输入的密码不相符");
}
}
System.out.println("请输入账户的每次限额");
double quotamoney = sc.nextDouble();
account.setQuoteMoney(quotamoney);
String cardId = getRandomCard(accounts);
account.setCardId(cardId);
//3、把账户对象添加到账户集合中去
accounts.add(account);
System.out.println(username + "您好,您的卡号为" + cardId + "请您妥善保管");
}
/**
* 创建一个8位不重复的账户号码
* @param accounts
* @return
*/
private static String getRandomCard(ArrayList<Account> accounts) {
//1、首先生成一个8位的随机数字作为账户
Random r = new Random();
while(true){
String cardId = " ";
for (int i = 0; i < 8; i++) {
cardId += r.nextInt(10);
}
//2、判断这个8位的卡号是否与现存的账户卡号重复了
Account acc = getAccountByCardId(cardId,accounts);
if(acc == null){
return cardId;
}
return null;
}
}
/**
*根据输入的卡号遍历查询目前所存的账户中是否有重复账户
* @param cardId
* @param accounts
* @return 账户对象、null
*/
private static Account getAccountByCardId(String cardId,ArrayList<Account> accounts){
for (int i = 0; i < accounts.size(); i++) {
Account acc = accounts.get(i);
if(acc.getCardId().equals(cardId)){
return acc;
}
}
return null;
}
}
该项目的难点:生成一个8位的账户号码,并且该号码不能够与已存在的账户号码重复
开户功能的软件流程图
方法之间的调用