package com.itheima.arraylist;
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
public class ATMSystem {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
ArrayList<Account> accounts=new ArrayList<>();
while(true){
System.out.println("-------------AYM系统------------");
System.out.println("1,登录账户");
System.out.println("2,账户开户");
System.out.println("请您选择操作");
int command=sc.nextInt();
switch (command){
case 1:
//登录
login(accounts,sc);
break;
case 2:
//开户
register(accounts,sc);
break;
default:
System.out.println("您输入的操作命令不存在");
}
}
}
//开户
private static void register(ArrayList<Account> accounts,Scanner sc){
System.out.println("============系统开户操作===========");
Account account=new Account();
//输入账户信息
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(passWord);
break;
}
else System.out.println("两次密码不一致,请重新输入。");
}
System.out.println("请输入账户当次限额:");
double quotaMoney=sc.nextDouble();
account.setQutaMoney(quotaMoney);
String cardId=getRandomCardId(accounts);
account.setCardId(cardId);
accounts.add(account);
System.out.println("恭喜您," + userName + "先生/女士,您开户成功,您的卡号是" + cardId + ",请妥善保管");
return;
}
private static String getRandomCardId(ArrayList<Account> accounts) {
String cardId="";
Random r=new Random();
while (true) {
for (int i = 0; i < 8; i++) {
cardId+=r.nextInt();
}
//卡号是否重复
Account acc=getAccountByCardId(cardId,accounts);
if(acc==null){
//卡号没重复
return acc.getCardId();
}
}
}
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;//查无此账号
}
private static void login(ArrayList<Account> accounts,Scanner sc){
System.out.println("============系统登录操作===========");
if(accounts.size()==0){
System.out.println("对不起,当前系统中无任何账户,请先开户");
return;
}
while (true) {
System.out.println("请您输入登录卡号:");
String cardId= sc.next();
Account acc=getAccountByCardId(cardId,accounts);
if(acc!=null){
while (true) {
System.out.println("请您输入登录密码:");
String passWord= sc.next();
if(acc.getPassword().equals(passWord)){
//登录成功
System.out.println("恭喜您," + acc.getUserName() + "先生/女士进入系统,您的卡号是:" + acc.getCardId());
showUserCommand(sc,acc,accounts);
return;
}else {
System.out.println("对不起,您输入的密码有误。");
}
}
}
else System.out.println("对不起,卡号不存在,请重新输入。");
}
}
//展示登录后的操作页
private static void showUserCommand(Scanner sc,Account acc,ArrayList<Account> accounts) {
while (true) {
System.out.println("==========用户操作页==========");
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=sc.nextInt();
switch (command){
case 1:
showAccount(acc);
break;//展示
case 2:
deposiMoney(acc,sc);
break;//存钱
case 3:
drawMoney(acc,sc);
break;//取款
case 4:
transferMoney(sc,acc,accounts);
break;//转账
case 5:
updataPassWord(sc,acc);
return;//改密码
case 6:
System.out.println("退出成功");
return;//退出
case 7:
deleteAccount(acc,sc,accounts);
return;//销户
default:
System.out.println("您输入的命令不正确");
}
}
}
private static void deleteAccount(Account acc, Scanner sc, ArrayList<Account> accounts) {
System.out.println("============用户销户操作============");
System.out.println("您真的要销户吗?y/n");
String rs=sc.next();
switch (rs){
case "y":
if(acc.getMoney()>0){
System.out.println("您当前账户还有钱没有取完,不允许销户");
}
else {
accounts.remove(acc);
System.out.println("您的账户销户成功");
}
break;
default :
System.out.println("好的,当前账户保留");
}
}
private static void updataPassWord(Scanner sc, Account acc) {
System.out.println("============用户密码修改操作============");
while (true) {
System.out.println("请您输入当前密码:");
String passWord= sc.next();
if(passWord.equals(acc.getPassword())){
while (true) {
System.out.println("请您输入新密码:");
String newPassWord=sc.next();
System.out.println("请您确认新密码:");
String okPassWord=sc.next();
if(newPassWord.equals(okPassWord)){
acc.setPassword(newPassWord);
System.out.println("恭喜您,密码修改成功");
return;
}else {
System.out.println("您输入的两次密码不一致");
}
}
}
else{
System.out.println("您输入的密码不正确");
}
}
}
private static void transferMoney(Scanner sc, Account acc, ArrayList<Account> accounts) {
System.out.println("============用户转账操作============");
if(accounts.size()<2){
System.out.println("当前系统中不足两个账户,不能转账");
return;
}
if(acc.getMoney()==0){
System.out.println("对不起,您自己都没钱,就别转了");
return;
}
while (true) {
System.out.println("请您输入对方账号的卡号:");
String cardId=sc.next();
if(cardId.equals(acc.getCardId())){
System.out.println("对不起,您不可以给自己转账。");
continue;
}
Account account=getAccountByCardId(cardId,accounts);
if(account==null)
System.out.println("对不起,您输入的对方账号不存在");
else {
String userName=account.getUserName();
String tip="*"+userName.substring(1);
System.out.println("请您输入["+tip+"]的姓氏");
String preName=sc.next();
if(preName.startsWith(preName)){
while (true) {
System.out.println("请您输入转账金额:");
double money=sc.nextDouble();
if(money>acc.getMoney())
System.out.println("对不起,您的余额不足 ,您最多可转账:" + acc.getMoney());
else{
acc.setMoney(acc.getMoney()-money);
account.setMoney(account.getMoney()+money);
System.out.println("转账成功,您的账户还剩:" + acc.getMoney());
return;
}
}
}else {
System.out.println("对不起,您输入的信息有误");
}
}
}
}
private static void drawMoney(Account acc, Scanner sc) {
System.out.println("============用户取钱操作============");
if(acc.getMoney()<100) {
System.out.println("对不起,当前账户不足100元,不能取钱");
return;
}
while (true) {
System.out.println("请您输入取款金额:");
double money=sc.nextDouble();
if(money<=acc.getQutaMoney()){
if(money>acc.getMoney()){
System.out.println("抱歉,余额不足。");
}
else{
//可以取钱
System.out.println("取钱成功!");
acc.setMoney(acc.getMoney()-money);
showAccount(acc);
return;
}
}else{
System.out.println("对不起,您当前取款金额超过每次限额,每次最多取:" + acc.getQutaMoney());
}
}
}
private static void deposiMoney(Account acc, Scanner sc) {
System.out.println("============用户存钱操作============");
System.out.println("请您输入存款金额:");
double money=sc.nextDouble();
acc.setMoney(acc.getMoney()+money);
System.out.println("恭喜您,存钱成功,当前账户信息如下:");
showAccount(acc);
}
private static void showAccount(Account acc) {
System.out.println("===========当前账户信息如下==========");
System.out.println("卡号:" + acc.getCardId());
System.out.println("户主:" + acc.getUserName());
System.out.println("余额:" + acc.getMoney());
System.out.println("限额:" + acc.getQutaMoney());
}
}
package com.itheima.arraylist;
public class Account {
private String cardId;
private String userName;
private String password;
private double money;
private double qutaMoney;//取款额度
public Account(String cardId, String userName, String password, double money, double qutaMoney) {
this.cardId = cardId;
this.userName = userName;
this.password = password;
this.money = money;
this.qutaMoney = qutaMoney;
}
public Account() {
}
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 getQutaMoney() {
return qutaMoney;
}
public void setQutaMoney(double qutaMoney) {
this.qutaMoney = qutaMoney;
}
}