Java模拟简易ATM机运行(无界面、无数据库)
2015-10-01 16:04
691 查看
package testATM; /*
* code by Xu Xingrui
*/ public class Atm { public static void main(String[] args) { // TODO Auto-generated method stub Operation o = new Operation(); o.welcome(); o.login(); o.serviceAll(); } }
package testATM; public class Services { private int t=0;//t记录密码输入错误次数及选择服务项目时的输入错误次数 private String password; private int balance; private int depositAll; private int drawAll; public Services(){ password="123456"; balance=20000; depositAll=0; drawAll=0; } public int getT() { return t; } public void setT(int t) { this.t = t; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public int getBalance() { return balance; } public void setBalance(int balance) { this.balance = balance; } public int getDepositAll() { return depositAll; } public void setDepositAll(int depositAll) { this.depositAll = depositAll; } public int getDrawAll() { return drawAll; } public void setDrawAll(int drawAll) { this.drawAll = drawAll; } }
package testATM; import java.util.Scanner; public class Operation { private int f = 0; Services ser; public Operation(){ ser = new Services(); } Scanner scan = new Scanner(System.in); public void login() { //进入系统 System.out.println("1、进入系统\t2、退出"); int i1 = scan.nextInt(); boolean flag = true; while (flag) { switch (i1) { case 1: // welcome(); flag = false; break; case 2: rewelcome(); System.exit(0); default: System.out.println("请重新输入:"); i1 = scan.nextInt(); } } //输入密码及其验证 System.out.println("请输入密码:"); String pw = scan.next(); while (ser.getT() < 2) { if (ser.getPassword().equals(pw)) { ser.setT(0); break; } else { System.out.println("密码错误,请重新输入"); ser.setT(ser.getT() + 1); pw = scan.next(); } } if (ser.getT() == 2) { System.out.println("由于输入的次数过多,您的卡已经被ATM吞掉,请联系工作人员!"); System.exit(0); } //中英文选择(未设定英文) System.out.println("选择服务语言:1 中文\t2 英文"); flag = true; while (flag) { int i2 = scan.nextInt(); switch (i2) { case 1: flag = false; break; case 2: System.out.println("英文系统正在建设中。。。"); System.out.println("选择服务语言:1 中文\t2 英文"); break; default: System.out.println("请输入1或2"); } } } public void serviceAll() {//选择服务项目 boolean flag = true; while (flag) { service(); String i3 = scan.next(); while (ser.getT() < 2) { if ("1".equals(i3)) {//查询余额 System.out.println("账户余额为" + ser.getBalance() + "元"); ser.setT(0); break; } else if (i3.equals("2")) {//取款 ser.setT(0); flag = false; f = 2; // System.out.println(this.f); draw(); break; } else if (i3.equals("3")) {//转账 ser.setT(0); flag = false; f = 3; trans(); break; } else if (i3.equals("4")) {//存款 ser.setT(0); flag = false; f = 4; deposit(); break; } else if (i3.equals("5")) {//退出 rewelcome(); ser.setT(0); System.exit(0); } else { System.out.println("服务项目不存在,请重新选择服务项目!"); ser.setT(ser.getT() + 1); i3 = scan.next(); } } if (ser.getT() == 2) {//3次输入错误的服务项目,则退出系统 System.out.println("不要捣乱了,赶紧回家吧!"); rewelcome(); System.exit(0); } } } public void deposit() {//存款 System.out.println("1)提示该ATM机一次能存款的最大金额为10000元."); System.out.println("2)用户的帐户一天存款累计的最大金额为50000元."); System.out.println("请输入存款金额:"); int balance = 0; while (true) { balance = scan.nextInt(); if (ser.getDepositAll() + balance > 50000) { System.out.println("用户的帐户一天存款累计的最大金额为50000元,您已存款" + ser.getDepositAll() + "元"); service2(); } else { if (balance % 50 != 0) { System.out.println("输入有误,存款金额必须为50的整数倍."); service2(); } else if (balance > 10000) { System.out.println("存款额度最大限度为10000.输入有误."); service2(); } else { ser.setBalance(ser.getBalance() + balance); ser.setDepositAll(ser.getDepositAll() + balance);//更新已存款金额 break; } } } service1(); } public void trans() {//转账 while (true) { System.out.println("请输入转入账户"); String str = scan.next(); if (check(str)) {//账号格式验证 System.out.println("请确认转入账户"); String str1 = scan.next(); if (str.equals(str1)) { System.out.println("转账一次的金额不能超过10000元,请您输入转账金额"); int balance = scan.nextInt(); if (check(String.valueOf(balance)) && balance >= 1 && balance <= 10000) {//转账金额的验证 if (balance > ser.getBalance()) { System.out.println("余额不足"); service2(); } else { ser.setBalance(ser.getBalance() - balance); break; } } else { System.out.println("转账金额必须全是数字,并且在1-10000之间"); service2(); } } else { System.out.println("前后账号要一致"); service2(); } } else { System.out.println("账户必须全都是数字"); service2(); } } service1(); } public void draw() {//取款 boolean flag = true; service3(); int a = 0; int i5 = scan.nextInt(); while (flag) { int balance = 0; switch (i5) { case 1://按1选500 balance = 500; break; case 2://按2选1000 balance = 1000; break; case 3://按3选2000 balance = 2000; break; case 4://按4手动输入金额 if (a == 0) { System.out.println("请输入取款金额(只能输入100的整数倍,并且要小于2000):"); balance = scan.nextInt(); } while (true) { if (checkBalance(balance)) { ser.setBalance(ser.getBalance() - balance);//更新余额 ser.setDrawAll(balance + ser.getDrawAll());//更新已取款金额 service1(); flag = false; break; } else { service2(); flag = true; balance = scan.nextInt(); } } break; default: System.out.println("输入错误."); service2(); } if (flag) { if (checkBalance(balance)) { ser.setBalance(ser.getBalance() - balance); ser.setDrawAll(balance + ser.getDrawAll()); service1(); flag = false; } else { service2(); flag = true; balance = scan.nextInt(); i5 = 4; a = 1; } } } } public boolean check(String str) {//检查输入的是否为数字 boolean flag = true; for (int i = 0; i < str.length(); i++) { if (str.charAt(i) < 48 || str.charAt(i) > 58) { flag = false; break; } } if (flag) return true; else return false; } public boolean checkBalance(//存款时的验证 int balance) { boolean flag = true; if (balance > ser.getBalance()) { System.out.println("余额不足"); flag = false; } else if (balance > 2000) { System.out.println("请输入2000以下的整数"); flag = false; } else if (ser.getDrawAll() == 5000) { System.out.println("您今日取款已达到限制,请选择其他项目或去柜台取钱"); flag = false; } else if (ser.getDrawAll() + balance > 5000) { System.out.println("用户的帐户一天取款累计的最大金额为5000元,今日累计取款" + ser.getDrawAll()); flag = false; } else if (balance % 100 != 0) { System.out.println("请输入100的整数倍"); flag = false; } else flag = true; if (flag) return true; else return false; } public void service2() { System.out.println("1.重新输入\t2 9d81 .退出系统"); System.out.println(""); while (true) { int i6 = scan.nextInt(); if (i6 == 2) { rewelcome(); System.exit(0); } else if (i6 == 1) { break; } else System.out.println("请重新输入"); } } public void service3() { System.out.println("1)提示该ATM机一次能取款的最大金额为2000元."); System.out.println("2)用户的帐户一天取款累计的最大金额为5000元."); System.out .println("-----------------请选择取款金额----------------------"); System.out.println(" 1. 500 2. 1000 3. 2000 4. 其他金额"); System.out.println(""); } public void service() { System.out.println("-------------------请选择服务项目-------------------"); System.out.println(" 1. 查询余额 2. 取款 3. 转账 4. 存款 5. 退出"); System.out.println(""); } public void service1() {//选择 1. 继续服务 2.主页面 3.退出 System.out.println("服务完成,请选择:1. 继续服务 2.主页面 3.退出"); System.out.println(""); boolean flag=true; while (flag) { int i4 = scan.nextInt(); if (i4 == 1) { // System.out.println(this.f); if (f == 2) { System.out.println(f); draw(); flag=false; } else if (f == 3) { System.out.println(f); trans(); flag=false; } else if (f == 4) { System.out.println(f); deposit(); flag=false; } } else if (i4 == 2) { serviceAll(); f = 0; flag=false; } else if (i4 == 3) { rewelcome(); System.exit(0); } else { System.out.println("输入错误,请重新输入"); } } } public void welcome() {//欢迎 System.out .println("-----------------------------------------------------------"); System.out .println("----------------------欢迎使用xxxx银行ATM系统--------------------"); System.out .println("-----------------------------------------------------------"); System.out.println(""); } public void rewelcome() {//退出 System.out .println("-----------------------------------------------------------"); System.out .println("------------------欢迎再次使用xxxx银行ATM系统,再见!----------------"); System.out .println("-----------------------------------------------------------"); System.out.println(""); } }
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统