package demo_ATM;
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
public class ATM {
private ArrayList<Account> accountsnew =new ArrayList<>();
private Account loginacc;//记录登录后的用户账户
private Scanner sc=new Scanner(System.in);
//ATM启动系统
public void start(){
while (true) {
System.out.println("====欢迎您进入ATM系统===");
System.out.println("1.用户登录");
System.out.println("2.用户开户");
System.out.println("请选择:");
int command=sc.nextInt();
switch (command){
case 1:
//用户登录
login();
break;
case 2:
createAccount();
//用户开户
break;
default:
System.out.println("您输入的操作有误请重新输入!");
break;
}
}
}
private void createAccount(){
Account acc=new Account();
System.out.println("请您输入您的账户名称:");
String name=sc.next();
acc.setUserName(name);
while (true) {
System.out.println("请输入您的性别:");
char sex=sc.next().charAt(0);
if (sex=='男'||sex=='女') {
acc.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)){
acc.setPassWord(passWord);
break;
}
else {
System.out.println("您输入的两次密码不一致,请您确认一次--");
}
}
System.out.println("请你输入您的取款限额:");
double limit=sc.nextDouble();
acc.setLimit(limit);
String newCardId=createCardId();
acc.setCardId(newCardId);
accountsnew.add(acc);
System.out.println("恭喜您,"+acc.getUserName()+"开户成功,您的卡号是:"+acc.getCardId());
}
/** 返回8位数卡号且不重复*/
private String createCardId(){
while (true) {
String cardId="";
Random r=new Random();
for (int i=0;i<8;i++){
int data=r.nextInt(10);
cardId+=data;
}
Account acc=getAccountByCardId(cardId);
if (acc==null){
return cardId;
}
}
}
private Account getAccountByCardId(String cardId){
for (int i = 0; i < accountsnew.size(); i++) {
Account acc=accountsnew.get(i);
if (acc.getCardId().equals(cardId)){
return acc;
}
}
return null;
}
private void login(){
System.out.println("==系统登录==");
//系统不存在对象时
if (accountsnew.size()==0){
System.out.println("该系统无任何用户,请先开户!");
return ;
}
while (true){
System.out.println("请您输入您的登录卡号:");
String cardId=sc.next();
Account acc=getAccountByCardId(cardId);
if (acc==null)
{
System.out.println("您输入的登录账号不存在,请确定--");
}
else {
while (true){
System.out.println("请输入登录密码:");
String passWord=sc.next();
if (acc.getPassWord().equals(passWord)){
loginacc=acc;
System.out.println("恭喜您,"+acc.getUserName()+"成功登录了系统,您的卡号是:"+acc.getCardId());
showUSerCommand();
return;
}
else {
System.out.println("您输入的密码有误,请确认!");
}
}
}
}
}
private void showUSerCommand(){
while (true) {
System.out.println(loginacc.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:
showLoginAccount();
break;
case 2:
depositMoney();
break;
case 3:
dropMoney();
break;
case 4:
transferMoney();
break;
case 5:
updatePassWord();
return;
case 6:
return;
case 7:
if ( deleteAccount()) {
return;
}
break;
default:
System.out.println("请重新输入操作数!");
break;
}
}
}
private void showLoginAccount(){
System.out.println("---当前您的账户信息如下---");
System.out.println("卡号:"+loginacc.getCardId());
System.out.println("户主:"+loginacc.getUserName());
System.out.println("性别:"+loginacc.getSex());
System.out.println("余额:"+loginacc.getMoney());
System.out.println("每次取款额度:"+loginacc.getLimit());
}
private void depositMoney(){
System.out.println("---存钱操作---");
System.out.println("请输入存款金额:");
double money=sc.nextDouble();
loginacc.setMoney(loginacc.getMoney()+money);
System.out.println("恭喜您,存钱:"+money+"成功,存钱后金额是:"+loginacc.getMoney());
}
private void dropMoney(){
System.out.println("==取钱操作==");
if (loginacc.getMoney()<100){
System.out.println("您的账户余额不足100元,不允许取钱");
}
System.out.println("请输入取款金额:");
double money=sc.nextDouble();
if (loginacc.getMoney()>=money){
if (money>loginacc.getLimit()){
System.out.println("您当前取款金额超过了每次限额,您每次最多可取:"+loginacc.getLimit());
}else{
loginacc.setMoney(loginacc.getMoney()-money);
System.out.println("您取款"+"成功"+"取款后剩余:"+loginacc.getMoney());
}
}else {
System.out.println("余额不足,您的账户中的余额是:"+loginacc.getMoney());
}
}
private void transferMoney() {
System.out.println("--用户转账--");
if (accountsnew.size()<2){
System.out.println("当前系统中只有一个账户,无法为其他账户转账--");
return;
}
if (loginacc.getMoney()==0){
System.out.println("您自己都没钱就别转了---");
return;
}
while (true) {
没有合适的资源?快使用搜索试试~ 我知道了~
基于Java编写的简易ATM系统
共15个文件
xml:4个
class:4个
java:4个
需积分: 0 0 下载量 88 浏览量
2024-01-19
23:05:35
上传
评论
收藏 14KB RAR 举报
温馨提示
Java编写的ATM系统通常需要实现以下基本功能: 登录功能:用户需要输入正确的账户名和密码才能登录系统。 查询余额功能:用户可以查询自己的账户余额。 存款功能:用户可以将钞票放入ATM机中进行存款,存储金额应该即时更新到用户账户余额中。 取款功能:用户可以在ATM机中选择想要取出的金额,如果账户余额充足,则ATM机应该发放相应的钞票,并同时更新账户余额。 转账功能:用户可以将自己的一部分账户余额转移到其他用户的账户中。 修改密码功能:用户可以修改自己的登录密码。 退出功能:用户可以从ATM系统中安全退出。
资源推荐
资源详情
资源评论
收起资源包目录
ATM.rar (15个子文件)
ATM
src
demo_ATM
ATM.java 11KB
Main.java 292B
Test.java 47B
Account.java 1KB
out
production
ATM
demo_ATM
Account.class 2KB
Test.class 255B
Main.class 467B
ATM.class 8KB
.idea
uiDesigner.xml 9KB
workspace.xml 4KB
misc.xml 284B
modules.xml 253B
.gitignore 190B
ATM.iml 433B
.gitignore 344B
共 15 条
- 1
资源评论
小A远离BUG
- 粉丝: 259
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 华为云会议安装包适配华为擎云L410 -1060 ARM架构
- 清空redis缓存脚本指令
- STM8S微控制器-寄存器操作指南
- apk一键安装,获取apk签名信息
- opencv4.8.0+contrib+cuda文件
- 【全网最新最全】大气公司年度月度总结汇报PPT
- C语言实现低功耗STM32F411开发板(原理图+PCB源文件+官方例程+驱动等).zip
- C语言实现基于STM32 的联合调试侦听设备解决方案(原理图、PCB源文件、调试工具、视频).zip
- 【全网最全最酷】部门年度年终工作总结汇报PPT模板
- C语言实现基于STM32F103RC的电子相册(原理图、PCB源文件、程序源码及制作).zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功