实验01——java模拟银行ATM系统
用java写的一个模拟银行系统,比较初级。
ATM.java


package cn.tedu.yinhang; import java.util.Scanner; /**
* @author 赵瑞鑫 E-mail:1922250303@qq.com
* @version 1.0
* @创建时间:2020年7月27日 下午7:04:27
* @类说明:
*/
public class ATM implements PayTelInter {
private UnionCard card;
Scanner sc = new Scanner(System.in); // 插卡,不同卡片显示不同的menu
public void insertCard(UnionCard card) {
this.card = card;
// 测试卡片是否为BOC,
// BOC为Card的实例对象
if (card instanceof BOC) {
checkPWA();
}
} public void checkPWA() {
Scanner sc = new Scanner(System.in);
System.out.println("请输入密码:");
int pw = sc.nextInt();
if (card.checkPw(pw)) {
while (true)
showBocMenu();
} else {
System.out.println("密码错误");
}
} // BOC菜单
public void showBocMenu() {
/*Scanner sc = new Scanner(System.in);
System.out.println("请输入密码:");
int pw = sc.nextInt();
if (card.checkPw(pw)) {
while (true) {*/
System.out.println("*******************************");
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("请您选择操作数:");
int key = sc.nextInt();
switch (key) {
case 1:
showBalance();
System.out.println("输入0返回:");
int n = sc.nextInt();
if(n==0)showBocMenu();
break;
case 2:
saveBalance();
System.out.println("输入0返回:");
int n1 = sc.nextInt();
if(n1==0)showBocMenu();
break;
case 3:
takeBalance();
System.out.println("输入0返回:");
int n2 = sc.nextInt();
if(n2==0)showBocMenu();
break;
case 4:
payMethod();
System.out.println("输入0返回:");
int n4 = sc.nextInt();
if(n4==0)showBocMenu();
break;
case 5:
System.exit(0);
break;
default:
System.out.println("请选择合法操作!");
System.out.println("输入0返回:");
int n5 = sc.nextInt();
if(n5==0)showBocMenu();
break;
}
} /*} else {
System.out.println("密码错误");
}*/ // 显示余额
private void showBalance() {
System.out.println(card.getBalance());
} // 存钱
private void saveBalance() {
Scanner sc = new Scanner(System.in);
System.out.println("请存款:(提示:存款数值应不小于100且为100的倍数)");
int money = sc.nextInt();
card.saveMoney(money);
System.out.println("成功!");
System.out.println("您当前余额为:");
System.out.println(card.getBalance());
} // 取钱
private void takeBalance() {
Scanner sc = new Scanner(System.in);
System.out.println("请取款:(提示:取款数值应不小于100且为100的倍数)");
int money = sc.nextInt();
card.takeMoney(money);
System.out.println("您当前余额为:");
System.out.println(card.getBalance());
} private void payMethod() {
System.out.println("*******************************");
System.out.println(" 云尚天成银行ATM系统 ");
System.out.println(" 操作1 手机话费");
System.out.println(" 操作2 水电费");
System.out.println(" 操作3 医疗费 ");
System.out.println(" 操作4 煤气费");
System.out.println(" 操作5 返 回");
System.out.println("请您选择操作数:");
int key = sc.nextInt();
switch (key) {
case 1:
Scanner sc = new Scanner(System.in);
System.out.println("请输入充值数额:");
int money = sc.nextInt();
payTel(money);
System.out.println("成功!");
System.out.println("您当前余额为:");
System.out.println(card.getBalance());
break;
case 2: break;
case 3: break;
case 4: break;
case 5: break;
default:
break;
}
} @Override
public boolean payTel(int money) {
// TODO Auto-generated method stub
if (money<0&&money%100!=0) {
System.err.println("数值不合法!");
}else{
double balance = card.getBalance();
balance -= money;
card.setBalance(balance);
}
return false;
} }
ATM.java
BOC.java


package cn.tedu.yinhang; /**
* @author 赵瑞鑫 E-mail:1922250303@qq.com
* @version 1.0
* @创建时间:2020年7月27日 下午6:58:32
* @类说明:中国银行卡类
*/
public class BOC extends UnionCard {
//构造方法传值
public BOC(String id, double balance, int pw) {
// TODO Auto-generated constructor stub
super(id, balance, pw);
}
}
BOC.java
MainClass.java


package cn.tedu.yinhang; import cn.tedu.yinhang.ATM;
import cn.tedu.yinhang.BOC; /**
* @author 赵瑞鑫 E-mail:1922250303@qq.com
* @version 1.0
* @创建时间:2020年7月27日 下午7:53:08
* @类说明: 测试类
*/
public class MainClass { public static void main(String[] args) {
// TODO Auto-generated method stub
new ATM().insertCard(new BOC("0001", 200, 123)); } }
MainClass.java
PayTelInter.java


package cn.tedu.yinhang; /**
* @author 赵瑞鑫 E-mail:1922250303@qq.com
* @version 1.0
* @创建时间:2020年7月27日 下午7:02:50
* @类说明: 交电话费接口
*/
public interface PayTelInter {
public abstract boolean payTel(int money);
}
PayTelInter
UnionCard.java


package cn.tedu.yinhang; /**
* @author 赵瑞鑫 E-mail:1922250303@qq.com
* @version 1.0
* @创建时间:2020年7月27日 下午6:45:08
* @类说明: UnionCard类,银联卡
*/
public class UnionCard {
private String id;// 卡号
private double balance;// 余额
private int pw;// 密码 // 初始化成员变量
public UnionCard(String id, double balance, int pw) {
super();
this.id = id;
this.balance = balance;
this.pw = pw;
} // set,get方法
public String getId() {
return id;
} public void setId(String id) {
this.id = id;
} public double getBalance() {
return balance;
} public void setBalance(double balance) {
this.balance = balance;
} public int getPw() {
return pw;
} public void setPw(int pw) {
if (pw<0&&pw>6) {
System.err.println("您输入的密码有误,请检查。");
}else{
this.pw = pw;
}
} // 存钱的方法
public void saveMoney(int money) {
if (money%100==0) {
balance += money;
}else{
System.err.println("数值不合法!");
}
} // 取钱的方法
public void takeMoney(int money) {
if (money%100==0) {
balance -= money;
}else{
System.out.println("数值不合法!");
}
} // 验证密码是否相同,相同返回true,否则返回false
public boolean checkPw(int pw) {
if (pw == this.pw) {
return true;
} else {
return false;
}
}
}
UnionCard.java
实验01——java模拟银行ATM系统的更多相关文章
- 模拟银行ATM系统(基础版)
Account类 package ATM; public class Account {//定义Account类 private String accountID;//用于存储学生的用户账号(由八位数 ...
- 用java模拟银行柜台排队
4年前在办理银行业务的时候,看到每个办理柜台窗口前都有很多人排队. 同时在那个时间段,我正好重温了数据结构这本书.好像里面有提到银行. 所以当时就用java写了一段小程序来模拟窗口排队的情况. 有兴趣 ...
- Java的简易ATM系统
大纲 ATM 机系统 1.注册(账户(系统随机生成 15 位) - 密码(6位) - 余额) 2.登录 ...
- 用java实现一个ATM机系统(2.0版)
用java实现一个ATM机系统(2.0版) java实现银行ATM自助取款机,实现功能:用户登录.余额查询.存钱.取钱.转账.修改密码.退出系统. 文章目录 用java实现一个ATM机系统(2.0版) ...
- MySQL银行ATM存取款机系统(需求分析)
银行ATM需求文档 一.E-R图形文 二.开发步骤 1.明确需求--数据库设计--编码实现功能--测试 2.绘制e-r图--绘制数据库模型图--使用三大方式规范数据库结构 三.开发思路 1. 模型图综 ...
- 银行ATM存取款系统(C语言实现)
这里使用的运行工具是DEV C++.老铁们一定要看仔细了.是DEV C++ 仅供借鉴:这个是大一时期写的.大四的时候整理了一下(本人C语言学的也不太好).肯定很多不足和存在漏洞的地方.仅供借鉴.仅供借 ...
- 银行ATM机工作流程模拟编程
[编程内容] 编程,模拟一个ATM(Automatic Teller Machine,自动取款机)的工作流程.依据帐户信息:姓名.帐号.密码.余额,完成ATM机功能:登录.显示余额.取款.修改密码. ...
- Java模拟登录系统抓取内容【转载】
没有看考勤的习惯,导致我的一天班白上了,都是钱啊,系统也不发个邮件通知下.... 为了避免以后还有类似状况特别写了个java模拟登录抓取考勤内容的方法(部分代码来自网络),希望有人修改后也可以 ...
- java——集合、泛型、ArrayList、LinkedList、foreach循环、模拟ktv点歌系统
集合:一系列特殊的类,这些类可以存储任意类型的对象,长度可变,集合类都在java.util包中. 但是集合记不住对象的类型,当把对象从集合中取出时这个对象的编译类型就变成了Object类型.这样在取元 ...
随机推荐
- 学习笔记三:基础篇Linux基础
Linux基础 直接选择排序>快速排序>基数排序>归并排序 >堆排序>Shell排序>冒泡排序=冒泡排序2 =直接插入排序 一.Linux磁盘分区表示 Linux中 ...
- 美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。 一次,他参加某个重要会议,年轻的脸孔引人注目。于是有人询问他的年龄,他回答说:我年龄的立方是个4位数。 我年龄的4次方是个6位数。这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。” 请你推算一下,他当时到底有多年轻。 结果只有一个数。
#include<stdio.h>int main(){ int age=1; int san=0; int si=0; int sum=0; while(age>0) { san= ...
- Java应用服务器之tomcat部署
一.相关术语简介 首先我们来了解下tomcat是什么,tomcat是apache软件基金会中的一个项目,由apache.Sun 和其他一些公司及个人共同开发而成.主要作用是提供servlet和jsp类 ...
- CCNA - Part7:网络层 - ICMP 应该是你最熟悉的协议了
ICMP 协议 在之前网络层的介绍中,我们知道 IP 提供一种无连接的.尽力而为的服务.这就意味着无法进行流量控制与差错控制.因此在 IP 数据报的传输过程中,出现各种的错误是在所难免的,为了通知源主 ...
- java大数据最全课程学习笔记(3)--HDFS 简介及操作
目前CSDN,博客园,简书同步发表中,更多精彩欢迎访问我的gitee pages 目录 HDFS 简介及操作 HDFS概述 HDFS产出背景及定义 HDFS优缺点 HDFS组成架构 HDFS文件块大小 ...
- 题解 CF1354D 【Multiset】
考试拿到题,一看,这不是权值线段树吗? 思路 使用线段树每个节点维护该区间内元素出现次数. 根据题目,对于加入.删除元素,我们可以单点修改(\(+1\).\(-1\)),对于输出,我们可 随便 遍历找 ...
- 手写SpringBoot自动配置及自定义注解搭配Aop,实现升级版@Value()功能
背景 项目中为了统一管理项目的配置,比如接口地址,操作类别等信息,需要一个统一的配置管理中心,类似nacos. 我根据项目的需求写了一套分布式配置中心,测试无误后,改为单体应用并耦合到项目中.项目中使 ...
- k8s(00)入门知识介绍
系列文章说明 本系列文章,可以基本算是 老男孩2019年王硕的K8S周末班课程 笔记,根据视频来看本笔记最好,否则有些地方会看不明白 需要视频可以联系我 k8s概念入门 目录 系列文章说明 k8s概念 ...
- 获取DataGridview中某列的所有数据
/// <summary> /// /// </summary> /// <typeparam name="T"></typeparam& ...
- CentOS7 安装nginx部署vue项目
简单描述:代码开发完了,需要环境来运行测试.服务器上没有nginx,搞起搞起. 在Centos下,yum源不提供nginx的安装,可以通过切换yum源的方法获取安装.也可以通过直接下载安装包的方法 ...