目录

一、题目要求

(1)注册功能

(2)登录功能

二、设计思路

(1)银行卡类——BankCard类

(2)银行类——Bank类

(3)ATM机类——ATM类

三、程序代码

(1)BankCard.java文件

(2)Bank.java文件

(3)ATM.java文件

(4)Main.java文件


一、题目要求

根据大家平时在ATM机上的操作,编写程序实现ATM机的常见功能。具体功能包括:

(1)注册功能

根据用户输入的账号密码申请一张银行卡,存储在银行卡类型的数组中(一张银行卡对应一个有效用户

(2)登录功能

登陆失败:重新登陆或注册
登陆成功:对登陆的这张银行卡可以进行以下操作:存款、取款、查余额、转账、退卡功能。

二、设计思路

根据题目要求,设置银行卡类、银行类和ATM机类三个类。

(1)银行卡类——BankCard类

属性:卡号、密码、余额

操作:获取卡号、重置卡号、获取密码、重置密码、存钱、取钱、查询余额

(2)银行类——Bank类

属性:银行卡数组、银行卡的数量、初始最大银行卡数(可以设为静态常量)

操作:查询银行卡是否存在、登录、添加银行卡、根据卡号密码返回对应银行卡、存款、取款、查余额、转账

(3)ATM机类——ATM类

属性:卡号、密码、银行、银行卡

操作:显示主界面的方法(无限循环)、注册、登录、具体的业务功能(插卡后的操作,包括查询、存取款、转账等)

三、程序代码

(1)BankCard.java文件

package package_ATM;public class BankCard {private int cardnum;private int password;private double balance;//创建一个银行卡public BankCard(int cardnum, int password) {this.cardnum = cardnum;this.password = password;}//获取卡号public int GetCardnum() {return cardnum;}//重置卡号public void ResetCardnum(int cardnum) {this.cardnum = cardnum;}//获取密码public int GetPassword() {return password;}//重置密码public void ResetPassword(int password) {this.password = password;}//存钱public boolean SaveMoney(double money) {this.balance += money;return true;}//取钱public boolean DrawMoney(double money) {if(this.balance>=money){this.balance -= money;return true;}System.out.println("余额不足!");return false;}//获取余额public double GetBalance(){return this.balance;}
}

(2)Bank.java文件

package package_ATM;public class Bank {private BankCard[] cardlist;private static int cardsnum = 0;private static final int Maxcardnum = 10;public Bank(){cardlist = new BankCard[Maxcardnum];System.out.println("银行开门了!");}//查询账号是否存在public boolean isExist(int cardnum) {for(int i=0;i<cardsnum;i++){if (cardlist[i].GetCardnum() == cardnum){return true;}}return false;}//登录函数public boolean Login(int cardnum,int password) {for(int i=0;i<cardsnum;i++){//账号与密码都对的上则登录成功if (cardlist[i].GetCardnum() == cardnum && cardlist[i].GetPassword() == password){return true;}}return false;}//添加新的银行卡public boolean AddCard(BankCard card) {//判断数组cardlist是否已满if(cardsnum == Maxcardnum){System.out.println("存储空间不足!");return false;}else {//将新卡存入银行卡类型数组cardlist[cardsnum] = card;//银行卡数加1cardsnum++;return true;}}//根据卡号密码返回银行卡public BankCard GetCardByPd(int cardnum, int password){for(int i=0;i<cardsnum;i++){if (cardlist[i].GetBalance() == cardnum && cardlist[i].GetPassword()== password){return cardlist[i];}}System.out.println("银行卡不存在!");return null;}//存款public boolean SaveMoney(BankCard card,double money){return card.SaveMoney(money);}//取款public boolean DrawMoney(BankCard card,double money){return card.DrawMoney(money);}//查余额public double GetBalance(BankCard card){return card.GetBalance();}//转账public boolean TransferAccounts(BankCard card, int aim_cardnum, double money){BankCard aim_card;for(int i=0;i<cardsnum;i++) {if(cardlist[i].GetCardnum()==aim_cardnum) {aim_card=GetcardBynum(aim_cardnum);if(card.DrawMoney(money)){aim_card.SaveMoney(money);return true;}else {return false;}}}return false;}//根据卡号返回银行卡public BankCard GetcardBynum(int cardnum){for(int i=0;i<cardsnum;i++){if (cardlist[i].GetCardnum() == cardnum){return cardlist[i];}}System.out.println("目标银行卡不存在!");return null;}
}

(3)ATM.java文件

package package_ATM;
import java.util.Scanner;public class ATM {private static boolean flag=true;private int cardnum;private int password;private BankCard bankcard;private Bank bank;Scanner sc = new Scanner(System.in);//创建一个ATMpublic ATM() {bank = new Bank();System.out.println("ATM开机了!");}//主窗口public void MainWindow() {int choice;while(flag==true) {try {System.out.println("请选择服务:1.注册 2.登录 3.退出");choice = sc.nextInt();switch(choice){case 1:System.out.println("请输入账号");cardnum=sc.nextInt();System.out.println("请输入密码");password=sc.nextInt();Enroll(cardnum,password);break;case 2:System.out.println("请输入账号");cardnum=sc.nextInt();System.out.println("请输入密码");password=sc.nextInt();Login(cardnum,password);break;case 3:flag=false;break;   default:break;}}catch(Exception e) {System.out.println("输入不符合要求!");sc=new Scanner(System.in);}}}//注册账号public void Enroll(int cardnum,int password) {//检查账号是否已经被注册if(bank.isExist(cardnum)){System.out.println("卡号已存在!");}else{//创建新卡bankcard = new BankCard(cardnum,password);if(bank.AddCard(bankcard)) {System.out.println("注册成功!");}else {System.out.println("注册失败!");}}}    //登录账号public void Login(int cardnum,int password) {//检查账号是否存在if(bank.isExist(cardnum)) {if(bank.Login(cardnum, password)) {System.out.println("登录成功!");bankcard=bank.GetcardBynum(cardnum);function(bankcard);}else{System.out.println("密码不正确");}}else {System.out.println("账号不存在!");}}//ATM功能函数public void function(BankCard bankcard) {double money;int aim_cardnum;int choice;boolean flag1 = true;while(flag1==true) {try {System.out.println("请选择服务:1.查询余额 2.存款 3.取款 4.转账 5.重置卡号 6.重置密码 7.退出");choice = sc.nextInt();switch(choice) {case 1:System.out.println("本卡余额为:"+bank.GetBalance(bankcard));break;case 2:System.out.println("请输入存款金额:");money=sc.nextDouble();if(bankcard.SaveMoney(money)) {System.out.println("存款成功!");System.out.println("现有余额:"+bankcard.GetBalance()+"元");}break;case 3:System.out.println("请输入取款金额:");money=sc.nextDouble();if(bankcard.DrawMoney(money)) {System.out.println("取款成功!");System.out.println("现有余额:"+bankcard.GetBalance()+"元");}break;case 4:System.out.println("请输入目标卡号:");aim_cardnum=sc.nextInt();System.out.println("请输入转账金额:");money=sc.nextDouble();if(bank.TransferAccounts(bankcard, aim_cardnum, money)) {System.out.println("转账成功!");System.out.println("现有余额:"+bankcard.GetBalance()+"元");}else {System.out.println("转账失败!");}break;case 5:System.out.println("请输入新卡号:");int new_cardnum;new_cardnum=sc.nextInt();//检查账号是否存在if(bank.isExist(new_cardnum)) {System.out.println("账号已存在!");}else {bankcard.ResetCardnum(new_cardnum);}break;case 6:System.out.println("请输入新密码:");int new_password;new_password=sc.nextInt();bankcard.ResetPassword(new_password);break;case 7:flag1=false;break;default:break;}}catch(Exception e) {System.out.println("输入不符合要求!");sc=new Scanner(System.in);}}}
}

(4)Main.java文件

package package_ATM;public class Main {public static void main(String[] args) {ATM atm=new ATM();atm.MainWindow();}
}

用Java实现ATM机功能(附带源码)相关推荐

  1. app商城源码_海量的SpringBoot和SSM项目【附带源码+视频教程】快速成为全栈

    为了帮助更多的小伙伴进行项目的锻炼,孟哥整理较多的实战项目,包括SSM.Springboot.Springcloud.小程序等. 各种项目还在不断的更新中--仅限制学习使用,若有侵权,请联系删除. 点 ...

  2. java web atm机_Java项目实现模拟ATM机

    本文实例为大家分享了Java实现模拟ATM机的具体代码,供大家参考,具体内容如下 项目名称 模拟ATM机 项目描述 简单实现ATM机功能 代码实现 测试类 public class Test { // ...

  3. 出自北大教授java项目大鱼吃小鱼游戏开发教学 附带源码和资料

    课程介绍: 大鱼吃小鱼,又称吞食鱼,是一款动作类小游戏.通过不断的吞吃比自己小的鱼类快速成长,最终成为海洋霸主. 本课程讲解一个大鱼吃小鱼游戏的详细开发过程.只要60分钟就可以完成一个你自己亲手开发出 ...

  4. java天眼培训_Java天眼大型分布式跟踪系统 附带源码_IT教程网

    资源名称:Java天眼大型分布式跟踪系统 附带源码 教程内容: APP: 接入skyeye-client的系统会通过kafkaAppender向kafka写入日志 es-indexer-group: ...

  5. 保姆级别 附带源码 Django集成channels(一)实现简单聊天功能

    目录 前言 不想看我瞎BB可以直接跳到这里 1.WebSocket 1.1 ajax轮询 1.2 long poll 1.3 Websocket 2.Channels 2.1 WSGI 2.2 ASG ...

  6. srs可以用java开发吗,为SRS流媒体服务器添加HLS加密功能(附源码)

    #为SRS流媒体服务器添加HLS加密功能(附源码)# 之前测试使用过nginx的HLS加密功能,会使用到一个叫做nginx-rtmp-module的插件,但此插件很久不更新了,网上搜索到一个中国制造的 ...

  7. android类中定义颜色,自定义实现简单的Android颜色选择器(附带源码)

    在写Android App过程中需要一个简单的颜色选择器,Android自带的ColorPicker和网上的一些ColorPicker都太高端了,都实现了颜色渐变功能,我要的不需要那么复杂,只想提供几 ...

  8. java B2B2C springmvc mybatis电子商务平台源码-Consul服务发现原理...

    Consul 是什么 Consul 是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件,由 HashiCorp 公司用 Go 语言开发, 基于 Mozilla Public License ...

  9. 手把手搭建Java金融借贷系统【附源码】(毕设)

    一.项目简介 本课程演示的是一套基于基于JavaWeb实现的金融借贷系统 或 P2P金融管理系统 或 小额贷款系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的java人群. 详细介绍 ...

最新文章

  1. [原]three.js 地形纹理混合
  2. oracle数据库硬恢复,ORACLE数据库恢复技术
  3. Android通过百度地图API用Service和Alarm在后台定时获取地理位置信息
  4. hdi-shared Service plan的分配
  5. 【ArcGIS遇上Python】从入门到精通系列之第二章:ArcGIS Python基本语法基础速递
  6. 程序员提高建议之踏踏实实“扎马步”
  7. 获取客户端ip_获取客户端访问真实IP
  8. String.GetEnumerator 方法的C#例子
  9. Linux - Ubuntu中使用7zip和zip命令
  10. Matlab画柱状图和饼状图以及横纵坐标设置,宽度设置等
  11. 解决QFontDatabase: Cannot find font directory XXX/lib/fonts
  12. Struts2 的 s:property标签用法
  13. 集群服务器中定时任务多次执行的解决方案
  14. 学习CANopen --- [3] NMT报文
  15. flink设置checkpoint部署后一直重启,出现检查点无法写入的问题
  16. php中上传图片的大小,php如何修改上传图片大小
  17. Python与R的区别与联系
  18. 微信小程序开发实战11_4 微信支付退款流程
  19. Vue项目报错sockjs.js?9be2:1606 GET http://192.168.43.226:8080/sockjs-node/info?t=1584966826465 net::ERR_
  20. PS技巧---撕纸效果

热门文章

  1. Win10无法搜索应用解决
  2. python查看字符串的编码格式_Python 3 查看字符编码方法
  3. mysql绑定多个ip地址 (mysql给用户授权了, 还是无法远程连接)
  4. oracle中间人投毒漏洞,Oracle Database Server 'TNS Listener'远程数据投毒漏洞(CVE-2012-1675)的完美解决方法...
  5. 人工智能在各个领域里的应用场景
  6. JavaScript 设计模式之发布-订阅模式(上)
  7. 匈牙利算法python代码实现以及原理图解
  8. 【IDEA】使用@slf4j 运行时提示找不到符号log
  9. Android超简单时间轴的实现
  10. 格式: echo -e \033[字背景颜色 字体颜色m字符串\033[0m