Account
package com.item.huang;
public class Account {
private String idCard;
private String userName;
private char sex;
private String passWord;
private double money;
private double limit;
public String getIdCard() {
return idCard;
}
public void setIdCard(String idCard) {
this.idCard = idCard;
}
public String getUserName() {
return userName + (sex == '男' ? "先生" : "女士");
}
public void setUserName(String userName) {
this.userName = userName;
}
public char getSex() {
return sex ;
}
public void setSex(char sex) {
this.sex = sex;
}
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 getLimit() {
return limit;
}
public void setLimit(double limit) {
this.limit = limit;
}
}
ATM
package com.item.huang;
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
public class ATM {
private ArrayList<Account> accounts = new ArrayList<>();
private Scanner sc = new Scanner(System.in);
private Account logicAccount = new Account();
public void start(){
while (true) {
System.out.println("=====欢迎来到ATM系统======");
System.out.println("1.用户登录");
System.out.println("2.用户开户");
System.out.println("3.显示所有用户账户信息");
System.out.println("请选择:");
int command = sc.nextInt();
switch (command){
case 1:
logic();
break;
case 2:
createAccount();
break;
case 3:
showAllAccount();
break;
default:
System.out.println("没有该操作!!!");
}
}
}
private void createAccount(){
System.out.println("===欢迎进行用户开户===");
Account account = new Account();
System.out.println("请输入用户姓名:");
String userName = sc.next();
account.setUserName(userName);
while (true) {
System.out.println("请输入用户性别:");
char sex = sc.next().charAt(0);
if(sex == '男' || sex == '女'){
account.setSex(sex);
break;
}else{
System.out.println("你输入的性别有问题!!!");
}
}
while (true) {
System.out.println("请输入用户密码:");
String passWord = sc.next();
System.out.println("请输入确认密码:");
String okPassWord = sc.next();
if(okPassWord.equals(passWord)){
account.setPassWord(okPassWord);
break;
}else{
System.out.println("两次输入的密码不相同!!!");
}
}
System.out.println("请输入每次取现额度:");
double limit = sc.nextDouble();
account.setLimit(limit);
account.setIdCard(createIdCard());
System.out.println("尊敬的"+account.getUserName()+"您的卡号是:"+account.getIdCard());
accounts.add(account);
}
private String createIdCard(){
while (true) {
String idCard = "";
Random random = new Random();
for (int i = 0; i < 8; i++) {
idCard += random.nextInt(10);
}
Account account = getAccountByIdCard(idCard);
if (account == null) {
return idCard;
} else {
System.out.println("该卡号已存在!!!");
}
}
}
private Account getAccountByIdCard(String idCard){
Account account = new Account();
for (int i = 0; i < accounts.size(); i++) {
account = accounts.get(i);
if(account.getIdCard().equals(idCard)) {
return accounts.get(i);
}
}
return null;
}
private void logic(){
while (true) {
System.out.println("=====登录系统=====");
if (accounts.size()==0){
System.out.println("当前系统没有账户!!!");
return;
}else{
while (true) {
System.out.println("请输入卡号:");
String idCard = sc.next();
Account account = getAccountByIdCard(idCard);
while (true) {
if (account==null){
System.out.println("卡号不正确!!!");
break;
}else{
while (true) {
System.out.println("请输入账户密码:");
String passWord = sc.next();
if (account.getPassWord().equals(passWord)){
System.out.println("恭喜你"+account.getUserName()+"登陆成功!!!"+"你的卡号是:"+account.getIdCard());
logicAccount = account;
showUserCommand();
return;
}
else{
System.out.println("密码不正确!!!");
break;
}
}
}
}
}
}
}
}
private void showUserCommand(){
while (true) {
System.out.println("=====用户功能菜单=====");
System.out.println(logicAccount.getUserName()+"您可以选择如下功能!!!");
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、注销当前账户");
int command = sc.nextInt();
switch (command){
case 1 :
showLogicAccount();
break;
case 2 :
depositMoney();
break;
case 3 :
drawMoney();
break;
case 4 :
transferMoney();
break;
case 5 :
upDataPassword();
return;
case 6 :
System.out.println(logicAccount.getUserName()+"您已退出系统!!!");
return;
case 7 :
if (deleteAccount()){
return;
}else {
break;
}
default:
System.out.println("输入的命令错误!!!");
}
}
}
private void upDataPassword() {
while (true) {
System.out.println("=====修改密码=====");
System.out.println("请输入密码:");
String passWord = sc.next();
if (passWord.equals(logicAccount.getPassWord())){
while (true) {
System.out.println("请输入新密码:");
String newPassWord = sc.next();
System.out.println("请再次输入新密码:");
String okPassWord = sc.next();
if (newPassWord.equals(okPassWord)){
logicAccount.setPassWord(okPassWord);
System.out.println("恭喜成功修改密码!!!");
return;
}else {
System.out.println("两次输入的密码不相同!!!");
}
}
}else {
System.out.println("输入的密码不正确!!!");
return;
}
}
}
private boolean deleteAccount() {
while (true) {
System.out.println("=====销户操作=====");
System.out.println("是否要注销账户Y/N");
String command = sc.next();
switch (command){
case "Y":
if (logicAccount.getMoney()==0){
accounts.remove(logicAccount);
System.out.println("销户成功!!!");
return true;
}else {
System.out.println("账户内有现金"+logicAccount.getMoney()+"元不允许销户!!!");
return false;
}
case "N":
return false;
}
}
}
private void transferMoney() {
System.out.println("=====转账操作=====");
if (logicAccount.getMoney()<0.01){
System.out.println("抱歉您的余额不足!!!");
return;
}
if (accounts.size()<2){
System.out.println("抱歉您目前是ATM系统唯一的账户,无法为其他账户转账!!!");
return;
}
while (true) {
System.out.println("请输入对方的卡号:");
String idCard = sc.next();
Account account = getAccountByIdCard(idCard);
if(account == null){
System.out.println("该账户不存在!!!");
break;
}else {
System.out.println("请输入该账户户主 "+"*"+account.getUserName().substring(1)+"的姓氏:");
String preName = sc.next();
if (account.getUserName().startsWith(preName)){
while (true) {
System.out.println("请输入转账金额:");
double money = sc.nextDouble();
if (logicAccount.getMoney()>=money){
logicAccount.setMoney(logicAccount.getMoney()-money);
System.out.println("您转账"+money+"元,账户余额为"+logicAccount.getMoney()+"元");
account.setMoney(account.getMoney()+money);
return;
}else {
System.out.println("您的余额不足为"+logicAccount.getMoney());
}
}
}else {
System.out.println("您输入的姓氏错误!!!");
break;
}
}
}
}
private void drawMoney() {
System.out.println("=====欢迎取钱=====");
if (logicAccount.getMoney() < 100){
System.out.println("您的余额不足!!!");
return;
}else{
while (true) {
System.out.println("请输入你的取款金额:");
double money = sc.nextDouble();
if (money > logicAccount.getLimit()){
System.out.println("取款金额大于取款限额!!!");
}else{
logicAccount.setMoney(logicAccount.getMoney()-money);
System.out.println("恭喜您取钱成功,账户余额为"+logicAccount.getMoney());
return;
}
}
}
}
private void depositMoney() {
System.out.println("=====欢迎存钱=====");
System.out.println("请输入存款金额:");
double money = sc.nextDouble();
logicAccount.setMoney(logicAccount.getMoney()+money);
System.out.println("恭喜您存钱成功,账户余额为"+logicAccount.getMoney());
}
private void showLogicAccount(){
System.out.println("=====当前你的账户信息如下=====");
System.out.println("卡号:"+logicAccount.getIdCard());
System.out.println("户主:"+logicAccount.getUserName());
System.out.println("性别:"+logicAccount.getSex());
System.out.println("余额:"+logicAccount.getMoney());
System.out.println("每次取现额度:"+logicAccount.getLimit());
}
private void showAllAccount(){
if (accounts.size()==0){
System.out.println("目前没有账户!!!");
return;
}
System.out.println("=====显示所有用户信息=====");
for (int i = 0; i < accounts.size(); i++) {
System.out.println("户主:"+accounts.get(i).getUserName());
System.out.println("性别:"+accounts.get(i).getSex());
System.out.println("卡号:"+accounts.get(i).getIdCard());
System.out.println("密码:"+accounts.get(i).getPassWord());
System.out.println("余额: "+accounts.get(i).getMoney());
System.out.println("每次取现限额:"+accounts.get(i).getLimit());
System.out.println("=================================");
}
}
}
Test
package com.item.huang;
public class Test {
public static void main(String[] args) {
ATM atm = new ATM();
atm.start();
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?