分别开两个类:
效果如图:
第一个类:
package ATMSystem;
public class Account {
private String cardId;//账号ID
private String userName;//用户名称
private String passWord;//用户密码
private double money;//剩余金额
private double quotaMoney;//每次取现额度
public void setCardId(String cardId) {
this.cardId = cardId;
}
public void setUserName(String userName) {
this.userName = userName;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
public void setMoney(double money) {
this.money = money;
}
public void setQuotaMoney(double quotaMoney) {
this.quotaMoney = quotaMoney;
}
public String getCardId() {
return cardId;
}
public String getUserName() {
return userName;
}
public String getPassWord() {
return passWord;
}
public double getMoney() {
return money;
}
public double getQuotaMoney() {
return quotaMoney;
}
}
第二个类:
package ATMSystem;
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
public class ATMSystems {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
ArrayList accounts = new ArrayList<>();
while (true) {
System.out.println("================ATM系统==============");
System.out.println("1:账户登入");
System.out.println("2:账户开户");
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 login(ArrayList accounts, Scanner sc) {//登入功能
if (accounts.size() == 0)
{
System.out.println("对不起,当前系统中没有账户,请先开户~ ~");
return ;
}
while (true) {
System.out.println("请输入登入卡号");
String cardId = sc.next();
Account acc = GetaccountbycardId(accounts, cardId);
if (acc != null)
{
while (true) {
System.out.println("请输入密码");
String password = sc.next();
if (acc.getPassWord().equals(password))
{
System.out.println("恭喜您进入ATM系统" + 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 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:
storageMoney(acc, sc);
break;
case 3:
getMoney(acc, sc);
break;
case 4:
switchMoney(acc, sc, accounts);
break;
case 5:
modifyPassWord(acc, sc);
break;
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 accounts) {
System.out.println("===============用户注销=============");
System.out.println("您确定要销户?, Y/N");
String option = sc.next();
if (option.equals("Y"))
{
if (acc.getMoney() > 0)
{
System.out.println("您账户中还有钱没有去玩,不允许销户~~~~");
showAccount(acc);
return;
}
else
{
accounts.remove(acc);
System.out.println("您的账户销户完成~~~");
return;
}
}
else
{
System.out.println("好的,您的当前账户继续保留");
showAccount(acc);
return;
}
}
private static void modifyPassWord(Account acc, Scanner sc) {
System.out.println("==============欢迎来到密码修改系统================");
while (true) {
System.out.println("请输入您当前的密码");
String nowpassword = sc.next();
if (acc.getPassWord().equals(nowpassword))
{
System.out.println("密码输入正确");
System.out.println("请输入修改后的密码");
String modifyps = sc.next();
acc.setPassWord(modifyps);
System.out.println("恭喜您, 密码修改成功");
showAccount(acc);
return;
}
else
{
System.out.println("您输入的密码有误,请重新输入");
}
}
}
private static void switchMoney(Account acc, Scanner sc, ArrayList accounts) {
System.out.println("==================欢迎来到转账系统===================");
if (accounts.size() < 2)
{
System.out.println("对不起现在账户数量不足两个,请先开户");
return;
}
if (acc.getMoney() == 0)
{
System.out.println("对不起,您的账户余额不足,请先存款");
showAccount(acc);
return ;
}
while (true) {
System.out.println("请输入您要存入的账户号码:");
String cardID = sc.next();
boolean flag = false;
int i;
for (i = 0; i < accounts.size(); i ++ )
{
if (accounts.get(i).getCardId().equals(cardID))
{
flag = true;
break;
}
}
if (flag)
{
System.out.println("请输入您要转账的金额");
double monkey = sc.nextDouble();
if (acc.getQuotaMoney() < monkey)
{
System.out.println("您的限额过大, 请重新输入转账卡号");
}
else if (acc.getMoney() < monkey)
{
System.out.println("您的金额不足,请重新输入");
}
else
{
accounts.get(i).setMoney(accounts.get(i).getMoney() + monkey);
acc.setMoney(acc.getMoney() - monkey);
System.out.println("您成功将: " + monkey + "转入卡号为:" + accounts.get(i).getCardId() + "的账户中");
showAccount(acc);
return;
}
}
else
{
System.out.println("您输入的卡号不存在,请重新输入");
}
}
}
private static void getMoney(Account acc, Scanner sc) {
System.out.println("================欢迎来到取款系统==================");
while (true) {
System.out.println("请输入取款的金额");
double getmonkey = sc.nextDouble();
if (acc.getQuotaMoney() < getmonkey)
{
System.out.println("您取款的金额超过预定限额,您的预定限额为:" + acc.getQuotaMoney());
break;
}
if (acc.getMoney() < getmonkey)
{
System.out.println("您的余额不足请重新输入,您当前的余额为: " + acc.getMoney());
break;
}
else
{
acc.setMoney(acc.getMoney() - getmonkey);
System.out.println("取款成功您当前的余额为:" + acc.getMoney());
showAccount(acc);
return ;
}
}
}
private static void storageMoney(Account acc, Scanner sc) {
System.out.println("==============用户存钱操作===============");
System.out.println("请输入存款金额");
double monkeys = sc.nextDouble();
acc.setMoney(acc.getMoney() + monkeys);
System.out.println("恭喜: " + acc.getUserName() + "先生/女士存款成功,您现在的余额是:" + acc.getMoney());
showAccount(acc);
return;
}
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.getQuotaMoney());
}
private static void register(ArrayList accounts, Scanner sc) {//注册功能
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))
{
System.out.println("密码正确");
account.setPassWord(password);
break;
}
else {
System.out.println("密码不一致,请重新输入");
}
}
System.out.println("请输入每次取现额度");
double quote = sc.nextDouble();
account.setQuotaMoney(quote);
String cardId = GetRandomCard(accounts);
account.setCardId(cardId);
//把账户对象添加到账户集合中去
accounts.add(account);
System.out.println("恭喜您, " + username + "先生/女生,您开户成功,您的卡号是:" + cardId + ", 请您妥善保管卡号");
}
public static String GetRandomCard(ArrayList accounts){//随机得到一个ID
Random rd = new Random();
while (true) {
String cardID = "";
for (int i = 0; i < 8; i ++ )
{
int rds = rd.nextInt(10);
cardID += rds;
}
Account acc = GetaccountbycardId(accounts, cardID);
if (acc == null) return cardID;
}
}
public static Account GetaccountbycardId(ArrayList accounts, String cardId){//判断ID是否重复
for (int i = 0; i < accounts.size(); i ++ )
{
Account acc = accounts.get(i);
if (acc.getCardId().equals(cardId))
{
return acc;
}
}
return null;
}
}
暑期编程PK赛
得CSDN机械键盘等精美礼品!


