您的位置:首页 > 编程语言 > Java开发

JAVA基础模拟ATM系统

2020-07-19 14:53 197 查看

ATM系统

题目

封装类

ATM类

package com.cpd.atmTest.entity;

import com.cpd.atmTest.entity.Card;

import java.util.List;
import java.util.Map;
import java.util.Set;

public class Atm {
private String name; // 名字
private String num; // 编号
private boolean type; // 是否继续循环

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getNum() {
return num;
}

public void setNum(String num) {
this.num = num;
}

public boolean isType() {
return type;
}

public void setType(boolean type) {
this.type = type;
}

}

Card类

package com.cpd.atmTest.entity;

public class Card {
private String account;  //账号
private String password; //密码
private double balance;  //余额
private String bankName; //银行卡名字
private String name;     //持卡人姓名

public String getAccount() {
return account;
}

public void setAccount(String account) {
this.account = account;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

public double getBalance() {
return balance;
}

public void setBalance(double balance) {
this.balance = balance;
}

public String getBankName() {
return bankName;
}

public void setBankName(String bankName) {
this.bankName = bankName;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public Card(String account, String password, double balance, String bankName, String name) {
this.account = account;
this.password = password;
this.balance = balance;
this.bankName = bankName;
this.name = name;
}

public Card() {
}

@Override
public String toString() {
return "Card{" +
"account='" + account + '\'' +
", password='" + password + '\'' +
", balance=" + balance +
", bankName='" + bankName + '\'' +
", name='" + name + '\'' +
'}';
}
}

ATM的接口方法

package com.cpd.atmTest.dao;

import com.cpd.atmTest.entity.Card;

public interface AtmDao {

//1.余额查询  inquireMoney
public void inquireMoney();
//2.取款 takeMoney
public void takeMoney();
//3.存款 saveMoney
public void saveMoney();
//4.转账 turnMoney
public void turnMoney();
//5.打印 print
public void print();
//6.退卡 checkCard
public void checkCard();
//7.查询转账信息 queryTurnI
public void queryTurnI();
}

ATM的接口方法实现ATMimpl

package com.cpd.atmTest.impl;

import com.cpd.atmTest.entity.CardInfo;
import com.cpd.atmTest.dao.AtmDao;
import com.cpd.atmTest.entity.Card;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.*;

public class AtmDaoImpl implements AtmDao{
// 获取银行卡信息的List,Map,Set集合
private List<Card> cardList = null;
private Map<String, Card> cardMap = null;
private Set<Card> cardSet = null;
private Card card = null;
// ATM机构造方法
public AtmDaoImpl() {
cardInfo();
}
//存储账号所有操作信息
List<String> AllIn=new ArrayList<>();
//存储转账信息
List<String> OutIn=new ArrayList<>();
//扫描仪对象
Scanner scanner = new Scanner(System.in);
// 初始化银行卡信息
public void cardInfo() {
CardInfo cardInfo = new CardInfo();
cardList = cardInfo.getCardInfo();
cardMap = cardInfo.getCardInfoMap();
cardSet = cardInfo.getCardInfoSet();
}
public void login(){
if(card!=null){
//显示菜单
showMenu();
}
System.out.println("请输入银行卡账号:");
String inaccount=scanner.next();
boolean cz=true;
//判断卡号是否存在
for (String key : cardMap.keySet()) {
if(inaccount.equals(key)){
card=cardMap.get(key);
System.out.println("请输入银行卡密码:");
String inpassword=scanner.next();
cz=false;
//判断密码是否正确
if(inpassword.equals(card.getPassword())){
//将登录信息存入Alllist
String str="户主:"+card.getName()+"   账号:"+card.getAccount();
AllIn.add(str);
OutIn.add(str);
//显示菜单
showMenu();
}else {
System.out.println("密码错误,请重新输入");
login();
}
}else{//重新登录
continue;
}
}
if (cz){
System.out.println("账号不存在");
login();
}
}

// 显示主菜单
public void showMenu() {
// 4、显示主菜单。
System.out.println("***********************************");
System.out.println("*******请输入你想要操作类型*******");
System.out.println("******1.余额查询  2.取款***********");
System.out.println("******3.存款        4.转账***********");
System.out.println("******5.打印        6.退卡***********");
System.out.println("******7.查询转账信息**************");
System.out.println("**********************************");
}
@Override
public void inquireMoney() {
//将当前操作存入Alllist
String str="查询余额————>当前账户余额查询"+card.getBalance();
AllIn.add(str);
System.out.println("当前账户余额查询"+card.getBalance());
}

@Override
public void takeMoney() {
System.out.println("请输入取款金额:");
double outMoney=scanner.nextDouble();
if(outMoney>=0&&outMoney<=card.getBalance()){
card.setBalance(card.getBalance()-outMoney);
//将当前操作存入Alllist
String str="取款————>取款前:"+(card.getBalance()+outMoney)+"  取款:"+outMoney+"  当前账户余额查询:"+card.getBalance();
AllIn.add(str);
System.out.println("当前账户余额查询"+card.getBalance());
}else {
System.out.println("取款金额错误或余额不足:");
takeMoney();
}
}

@Override
public void saveMoney() {
System.out.println("请输入存款金额:");
double inMoney=scanner.nextDouble();
if(inMoney>=0){
card.setBalance(card.getBalance()+inMoney);
//将当前操作存入Alllist
String str="存款————>存款前:"+(card.getBalance()-inMoney)+"  存款:"+inMoney+"  当前账户余额查询:"+card.getBalance();
AllIn.add(str);
System.out.println("当前账户余额查询"+card.getBalance());
}else {
System.out.println("存款金额输入错误:");
saveMoney();
}
}

@Override
public void turnMoney() {
System.out.println("请输入转账银行卡账号:");
String turnaccount=scanner.next();
boolean cz=true;
if(turnaccount.equals(card.getAccount())){
System.out.println("不能给自己转账!!!!");
cz=false;
turnMoney();
}else {
//判断卡号是否存在
for (String key : cardMap.keySet()) {
if(turnaccount.equals(key)){
Card turncard=cardMap.get(key);
System.out.println("请输入转账金额:");
double turnMoney=scanner.nextDouble();
cz=false;
//判断密码是否正确
if(turnMoney>=0&&turnMoney<=card.getBalance()){
card.setBalance(card.getBalance()-turnMoney);
turncard.setBalance(turncard.getBalance()+turnMoney);
//将当前操作存入Alllist ,OUtin
String str="转账————>转账前:"+(card.getBalance()+turnMoney)+"  转账:"+turnMoney+"  当前账户余额查询:"+card.getBalance()+"  转账户主:"+turncard.getName()+"  转账账户:"+turncard.getAccount();
AllIn.add(str);
OutIn.add(str);
System.out.println("当前账户余额查询"+card.getBalance());
}else {
System.out.println("转账金额错误或余额不足:");
turnMoney();
}
}else{//重新登录
continue;
}
}
}
if (cz){
System.out.println("账号不存在");
turnMoney();
}
}

@Override
public void print() {
System.out.println("文件存放路径:C:\\m.txt");
// 打开一个文件
File file = new File("C:\\m.txt");
if (file.exists()) {//判断文件是否存在,存在删除
file.delete();
}

try {
FileWriter fw = new FileWriter(file);;
for (String str:AllIn){
fw.write(str+"\n");
fw.write("--------------------------------------"+"\n");
fw.flush();
}

} catch (IOException e) {

e.printStackTrace();
}
}

@Override
public void checkCard() {
System.out.println("当前账户信息:"+card.toString());
System.out.println("谢谢您的使用,欢迎下次光临!!!");
}

@Override
public void queryTurnI() {
// 使用Map循环显示用户信息
System.out.println("-----------------------");
for (String str : cardMap.keySet()) {
Card card = cardMap.get(str);
System.out.println(card.getName() + "\t" + card.getAccount()+ "\t" + card.getPassword() + "\t" + card.getBalance()+ "\t" + card.getBankName());

}
System.out.println("------当前用户转账信息----");
for (String str : OutIn) {
System.out.println(str);
}
if (OutIn.size()==1){
System.out.println("当前用户无转账信息!!!!");
}
System.out.println("-----------------------");
}
}

Person测试类

package com.cpd.atmTest.test;

import com.cpd.atmTest.entity.Card;
import com.cpd.atmTest.impl.AtmDaoImpl;

import java.util.Scanner;

public class Person {
public static void main(String[] args) {
//欢迎登录
System.out.println("---欢迎登录ATM系统---");
AtmDaoImpl atmDao = new AtmDaoImpl();
Scanner scanner = new Scanner(System.in);
boolean type=true;
//调用登录方法
atmDao.login();
while (type){

System.out.println("---请选择你想要操作类型*---");
int choose=scanner.nextInt();
switch (choose){
case 1:
atmDao.inquireMoney();
atmDao.showMenu();
break;
case 2:
atmDao.takeMoney();
atmDao.showMenu();
break;
case 3:
atmDao.saveMoney();
atmDao.showMenu();
break;
case 4:
atmDao.turnMoney();
atmDao.showMenu();
break;
case 5:
atmDao.print();
atmDao.showMenu();
break;
case 6:
atmDao.checkCard();
type=false;
break;
case 7:
atmDao.queryTurnI();
atmDao.showMenu();
break;
default:
System.out.println("default");
break;
}
}
}
}

代码实现展示

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: