**

7-1 ATM机类结构设计(一) (100 分)

**
设计ATM仿真系统,具体要求参见作业说明。 OO作业8-1题目说明.pdf

输入格式:

每一行输入一次业务操作,可以输入多行,最终以字符#终止。具体每种业务操作输入格式如下:
存款、取款功能输入数据格式: 卡号 密码 ATM机编号 金额(由一个或多个空格分隔), 其中,当金额大于0时,代表取款,否则代表存款。
查询余额功能输入数据格式: 卡号

输出格式:
①输入错误处理
如果输入卡号不存在,则输出Sorry,this card does not exist.。
如果输入ATM机编号不存在,则输出Sorry,the ATM’s id is wrong.。
如果输入银行卡密码错误,则输出Sorry,your password is wrong.。
如果输入取款金额大于账户余额,则输出Sorry,your account balance is insufficient.。
如果检测为跨行存取款,则输出Sorry,cross-bank withdrawal is not supported.。

②取款业务输出
输出共两行,格式分别为:

[用户姓名]在[银行名称]的[ATM编号]上取款¥[金额]

当前余额为¥[金额]

其中,[]说明括起来的部分为输出属性或变量,金额均保留两位小数。

③存款业务输出

输出共两行,格式分别为:

[用户姓名]在[银行名称]的[ATM编号]上存款¥[金额]

当前余额为¥[金额]

其中,[]说明括起来的部分为输出属性或变量,金额均保留两位小数。

④查询余额业务输出

¥[金额]

金额保留两位小数。

输入样例1:

6222081502001312390 88888888 06 -500.00

输出样例1:

张无忌在中国工商银行的06号ATM机上存款¥500.00
当前余额为¥10500.00

输入样例2:

6217000010041315709 88888888 02 3500.00

输出样例2:

杨过在中国建设银行的02号ATM机上取款¥3500.00
当前余额为¥6500.00

输入样例3:

6217000010041315715

输出样例3:

¥10000.00

输入样例4:

6222081502001312390 88888888 06 -500.00
6222081502051320786 88888888 06 1200.00
6217000010041315715 88888888 02 1500.00
6217000010041315709 88888888 02 3500.00
6217000010041315715

输出样例4:

张无忌在中国工商银行的06号ATM机上存款¥500.00
当前余额为¥10500.00
韦小宝在中国工商银行的06号ATM机上取款¥1200.00
当前余额为¥8800.00
杨过在中国建设银行的02号ATM机上取款¥1500.00
当前余额为¥8500.00
杨过在中国建设银行的02号ATM机上取款¥3500.00
当前余额为¥5000.00 ¥5000.00


import java.util.Scanner;
import java.util.ArrayList;//Bank类
class Bank {String bankname;ArrayList<String> ATMList;//创建无参构造方法public Bank(){}//创建带参构造方法public Bank(String bankname,ArrayList<String> ATMList){this.bankname=bankname;this.ATMList=ATMList;}//getterpublic String getBankname() {return bankname;}public ArrayList<String> getATMList() {return ATMList;}//setterpublic void setBankname(String bankname){this.bankname=bankname;}public void setATMList(ArrayList<String> tATMList){this.ATMList=ATMList;}
}
//Account类
class Account {private String name;private String account;private String password;private double balance;ArrayList<Bank> banklist;Bank bank;private  ArrayList<String> cardList;//创建无参构造方法public Account(){}//创建带参构造方法public Account(String name,String account,String password,double balance,ArrayList<Bank> banklist,Bank bank,ArrayList<String> cardList){this.name=name;this.account=account;this.password=password;this.balance=balance;this.bank=bank;this.banklist=banklist;this.cardList=cardList;}//getterpublic String getName() {return name;}public String getAccount() {return account;}public String getPassword() {return password;}public double getBalance() {return balance;}public ArrayList<String> getCardList() {return cardList;}//setterpublic void setName(String name) {this.name = name;}public void setAccount(String account) {this.account = account;}public void setPassword(String password) {this.password = password;}public void setBalance(double balance) {this.balance = balance;}public void setCardList(ArrayList<String> cardList) {this.cardList = cardList;}
}//存取款的检查类
class Check {ArrayList<Account> accountList;String card;String password;String number;double money;public Check(ArrayList<Account> accountList,String card,String password,String number,double money){this.accountList=accountList;this.card=card;this.password=password;this.number=number;this.money=money;}public boolean check(){int flag=0;int i,j;int k=0;//检查账号是否正确for(i=0;i<accountList.size();i++){for(j=0;j<accountList.get(i).getCardList().size();j++){if (card.equals(accountList.get(i).getCardList().get(j))){flag=1;k=i;break;}}if(flag==1){break;}}//检查密码是否正确if(flag==1){if(password.equals(accountList.get(k).getPassword())){flag=2;}else{System.out.println("Sorry,your password is wrong.");//银行卡密码错误return false;}}else{System.out.println("Sorry,this card does not exist.");//卡号不存在return false;}//检查ATM机编号是否正确if(flag==2){for(i=0;i<accountList.get(k).banklist.size();i++){for(j=0;j<accountList.get(k).banklist.get(i).ATMList.size();j++){if(number.equals(accountList.get(k).banklist.get(i).ATMList.get(j))){flag=3;break;}}}}//检查金额是否正确if(flag==3){if(money<=accountList.get(k).getBalance()){flag=4;}else{System.out.println("Sorry,your account balance is insufficient.");//取款金额大于账户余额return false;}}else{System.out.println("Sorry,the ATM's id is wrong.");//ATM机编号不存在return false;}//检查是否跨行if(flag==4){for(i=0;i<accountList.get(k).bank.ATMList.size();i++){if(number.equals(accountList.get(k).bank.ATMList.get(i))){flag=5;break;}}}if(flag!=5){System.out.println("Sorry,cross-bank withdrawal is not supported.");//跨行存取款return false;}elsereturn true;}}
//余额查询的检查类
class Check1 {ArrayList<Account> accountList;String card;public Check1(ArrayList<Account> accountList, String card){this.accountList = accountList;this.card = card;}public boolean check(){int i,j;int flag=0;//卡号校验for(i=0;i<accountList.size();i++){for(j=0;j<accountList.get(i).getCardList().size();j++){if (card.equals(accountList.get(i).getCardList().get(j))){flag=1;break;}}if(flag==1){break;}}if(flag==1)return true;else{System.out.println("Sorry,this card does not exist.");//卡号不存在return false;}}
}//存取款类
class Access{ArrayList<Account> accountList;String card;String password;String number;double money;public Access(ArrayList<Account> accountList,String card,String password,String number,double money){this.password=password;this.number=number;this.card=card;this.accountList=accountList;this.money=money;}public void access(){int i,j;int t=0;//卡号校验for(i=0;i<accountList.size();i++){for(j=0;j<accountList.get(i).getCardList().size();j++){if(card.equals(accountList.get(i).getCardList().get(j))){t=i;break;}}}accountList.get(t).setBalance(accountList.get(t).getBalance()-money);}
}//存取款的展示类
class Show{ArrayList<Account> accountList;String card;String password;String number;double money;public Show(ArrayList<Account> accountList,String card,String password,String number,double money){this.password=password;this.number=number;this.card=card;this.accountList=accountList;this.money=money;}public void show(){int i,j;int t=0;//卡号校验for(i=0;i<accountList.size();i++){for(j=0;j<accountList.get(i).getCardList().size();j++){if(card.equals(accountList.get(i).getCardList().get(j))){t=i;break;}}}if(money>=0){//取款System.out.printf(accountList.get(t).getName()+"在"+accountList.get(t).bank.bankname+"的"+number+"号ATM机上取款¥%.2f\n",money);}else{money=-money;System.out.printf(accountList.get(t).getName()+"在"+accountList.get(t).bank.bankname+"的"+number+"号ATM机上存款¥%.2f\n",money);}System.out.printf("当前余额为¥%.2f\n",accountList.get(t).getBalance());}
}
//余额查询的展示类
class Show1{ArrayList<Account> accountList;String card;public Show1(ArrayList<Account> accountList,String card){this.accountList=accountList;this.card=card;}public void show1(){int i,j;int t=0;//卡号校验for(i=0;i<accountList.size();i++){for(j=0;j<accountList.get(i).getCardList().size();j++){if(card.equals(accountList.get(i).getCardList().get(j))){t=i;break;}}}System.out.printf("¥%.2f\n",accountList.get(t).getBalance());}
}//主类
public class Main {public static void main(String[] args) {//ATM机编号数组ArrayList<String> ATMList1 = new ArrayList<>();ATMList1.add("01");ATMList1.add("02");ATMList1.add("03");ATMList1.add("04");Bank jsyh = new Bank("中国建设银行", ATMList1);ArrayList<String> ATMList2 = new ArrayList<>();ATMList2.add("05");ATMList2.add("06");Bank gsyh = new Bank("中国工商银行", ATMList2);//银行数组ArrayList<Bank> bankList = new ArrayList<>();bankList.add(jsyh);bankList.add(gsyh);//用户数组ArrayList<String> cardList1 = new ArrayList<>();cardList1.add("6217000010041315709");cardList1.add("6217000010041315715");Account account1 = new Account("杨过", "3217000010041315709", "88888888", 10000.00, bankList, jsyh,cardList1);ArrayList<String> cardList2 = new ArrayList<>();cardList2.add("6217000010041315718");Account account2 = new Account("杨过", "3217000010041315715", "88888888", 10000.00, bankList,jsyh,cardList2);ArrayList<String> cardList3 = new ArrayList<>();cardList3.add("6217000010051320007");Account account3 = new Account("郭靖", "3217000010051320007", "88888888", 10000.00, bankList,jsyh,cardList3);ArrayList<String> cardList4 = new ArrayList<>();cardList4.add("6222081502001312389");Account account4 = new Account("张无忌", "3222081502001312389", "88888888", 10000.00, bankList,gsyh,cardList4);ArrayList<String> cardList5 = new ArrayList<>();cardList5.add("6222081502001312390");Account account5 = new Account("张无忌", "3222081502001312390", "88888888", 10000.00, bankList,gsyh,cardList5);ArrayList<String> cardList6 = new ArrayList<>();cardList6.add("6222081502001312399");cardList6.add("6222081502001312400");Account account6 = new Account("张无忌", "3222081502001312399", "88888888", 10000.00, bankList,gsyh,cardList6);ArrayList<String> cardList7 = new ArrayList<>();cardList7.add("6222081502051320785");Account account7 = new Account("韦小宝", "3222081502051320785", "88888888", 10000.00, bankList,gsyh,cardList7);ArrayList<String> cardList8 = new ArrayList<>();cardList8.add("6222081502051320786");Account account8 = new Account("韦小宝", "3222081502051320786", "88888888", 10000.00, bankList,gsyh,cardList8);//用户总数组ArrayList<Account> accountList = new ArrayList<>();accountList.add(account1);accountList.add(account2);accountList.add(account3);accountList.add(account4);accountList.add(account5);accountList.add(account6);accountList.add(account7);accountList.add(account8);Scanner x=new Scanner(System.in);String kp;Check check;Check1 check1;kp=x.nextLine();while(!kp.equals("#")){int i,j;String[] shuju=kp.split("\\s+");//输入的每行数据用空格隔开,存为数组/*for(i=0;i<shuju.length;i++) {System.out.println(shuju[i]);}*/if(shuju.length!=1){check = new Check(accountList,shuju[0],shuju[1],shuju[2],Double.parseDouble(shuju[3]));if (check.check()){Access access = new Access(accountList,shuju[0], shuju[1],shuju[2],Double.parseDouble(shuju[3]));access.access();Show show = new Show(accountList,shuju[0], shuju[1],shuju[2],Double.parseDouble(shuju[3]));show.show();}}else {check1=new Check1(accountList,shuju[0]);if(check1.check()){Show1 show1= new Show1(accountList,shuju[0]);show1.show1();}}kp=x.nextLine();}}
}

7-1 ATM机类结构设计(一) (100 分)相关推荐

  1. 7-1 ATM机类结构设计(二) (100 分)

    ** 7-1 ATM机类结构设计(二) (100 分) ** 设计ATM仿真系统,具体要求参见作业说明. OO作业9-1题目说明.pdf 输入格式: 每一行输入一次业务操作,可以输入多行,最终以字符# ...

  2. ATM机类结构设计(一)

    7-5 ATM机类结构设计(一) 分数 84 作者 段喜龙 单位 南昌航空大学 设计ATM仿真系统,具体要求参见作业说明. OO作业8-1题目说明.pdf 输入格式: 每一行输入一次业务操作,可以输入 ...

  3. ATM机为什么不能存100张?

    "ATM机为什么不能存100张?"这样的问法容易引起歧义,ATM不是只能存100张,而是: 银行ATM存款机单次只能放100张. 所有人到银行ATM存款的时候,都会听到这样的语音& ...

  4. atm机java设计_JAVA提款机设计报告

    <JAVA提款机设计报告>由会员分享,可在线阅读,更多相关<JAVA提款机设计报告(24页珍藏版)>请在人人文库网上搜索. 1.沈阳理工大学应用技术学院JAVA程序设计综合实验 ...

  5. 课程设计:基于JavaWeb实现ATM机系统

    作者主页:编程千纸鹤 作者简介:Java.前端.Pythone开发多年,做过高程,项目经理,架构师 主要内容:Java项目开发.毕业设计开发.面试技术整理.最新技术分享 一,项目简介 本项目主要实现一 ...

  6. ATM柜员机JAVA课程设计_JAVA课程设计报告银行ATM机系统.doc

    JAVA课程设计报告银行ATM机系统 Java课程设计报告 题 目 银行ATM机系统 所在院系 软件学院 学生姓名 金磊 专 业 R机械+软件 班 级 R机械094 学 号 2011年 7 月 15日 ...

  7. 模拟ATM机存取款管理系统C语言课程设计

    模拟ATM机存取款管理系统(只列出了大体的框架,需要源码的朋友请私信联系.) 1.问题描述 模拟银行的自动取款机使用过程中的界面和用户交互过程.实现查询银行卡余额.取款.修改密码.退出系统等功能. 2 ...

  8. java模拟atm 课程设计_java课程设计ATM机(图形用户)代码

    [实例简介] 这是我在大二的时候学java时自己写的一个模拟ATM机的小程序,用了图形用户界面,数据库,绝对原创 [实例截图] [核心代码] atm └── atm ├── bin │   └── c ...

  9. java小项目 ATM机(简易版)

    目录 说明 项目介绍 功能介绍 结构图 各模块代码 登录界面 服务选择界面 存取款界面 修改密码模块 转账模块 总代码 说明 简单做了一个java的ATM机项目.本项目只能作为一个简单的运行程序.因为 ...

最新文章

  1. 英国熊孩子频繁攻击学校网络,政府被逼爹味儿下场:当白帽黑客吧!年薪45万...
  2. getline及读文件总结
  3. http://blog.csdn.net/churximi/article/details/61210129
  4. 图像分割 | 训练集输入labe(mask)处理以及类别不均衡的处理-以segnet为例
  5. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol 52][第35篇]给针对ECDLP问题的Pollard rho,parallel Pollard rho攻击的一个粗略的描述
  6. 我们是否能信任算法?不信任又能怎么办?
  7. inputstream 初始化_如何完美回答面试官问的Mybatis初始化原理!
  8. 任务完成从不加班_我如何从不知道如何编码转变为在9个月内交付9个项目-都在我15岁之前就完成了……...
  9. 电脑计算机无法安3.5,Windows无法安装以下功能:.NET Framework 3.5(包括 .NET 2.0 和 3.0)解决方法...
  10. 网页性能优化{雅虎[转载]}
  11. 【爱你 祖国】细看我国智能无人机如何从无到有?都是被逼出来的!
  12. iOS开发Assertion failure in -[AFJSONRequestSerializer requestWithMethod:URLString:parameters:error:]
  13. Vaa3d_DIADEM metric基本介绍_SWC拓扑结构量纲
  14. 《自学SpringCloud微服务架构》之第 10 篇 —— API 网关服务 SpringCloud Zuul
  15. Windows用户账户控制详解
  16. 迭代、原型、螺旋、敏捷模型之间的区别
  17. scrapy爬虫实践之抓取拉钩网招聘信息(2)
  18. 【JS教程】移动端 Touch(触摸)事件
  19. PyTorch入门学习-4.自然语言分类任务
  20. C++中fstream 的使用一

热门文章

  1. Java基础---内部类详解
  2. Swift-类、结构体、枚举
  3. iOS8上本地通知接收不到的问题
  4. DbHelper数据库通用类使用方法
  5. GIS的下个十年(Chuck Drinnan, principal, eWAM Associates)
  6. flutter GestureDetector 手势处理
  7. CNI portmap插件实现源码分析
  8. MSSql Server 自定义导出
  9. MapReduce的基本流程
  10. bzoj:1692 [Usaco2007 Dec]队列变换1640 [Usaco2007 Nov]Best Cow Line 队列变换