ATM


package com.bank;
public class CardStatus {
private String cardNo;
private Integer status;//密码
public CardStatus(String cardNo,Integer status) {
this.cardNo=cardNo;
this.status=status;
}
public String getCardNo() {
return cardNo;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer ps) {
status=ps;
//return true;
}
//重写方法 比较
public boolean equals(Object obj) {
if(this==obj) {
return true;
}
if(obj instanceof CardStatus) {
CardStatus anotherC=(CardStatus)obj;
if(this.cardNo.equals(anotherC.cardNo)) {
return true;
}
}
return false;
}
public int hashCode() {
return this.cardNo.hashCode();
}
}
package com.bank;
import java.util.*;
import java.util.Map.Entry;
public class Atm {
//所有卡号,密码
private HashSet<CardStatus> cardNo=new HashSet<CardStatus>();
//身份证,卡号
private TreeMap<String,String> idCard=new TreeMap<String,String>();
//卡号,金额;
private TreeMap<String,Integer> idCardMoney=new TreeMap<String,Integer>();
{
cardNo.add(new CardStatus("4567894567894567564",0));
cardNo.add(new CardStatus("4567894567894567565",0));
cardNo.add(new CardStatus("4567894567894567566",0));
cardNo.add(new CardStatus("4567894567894567567",0));
}
ArrayList<CardStatus> cardNoA=new ArrayList<CardStatus>(this.cardNo);//卡号,密码数组
//开户
public void openCard(String idcard) {
boolean cg=false;
if(idCard.containsKey(idcard)) {
System.out.println("你已经有本银行的卡了,不能再开卡了");
}else {
for(int i=0;i<cardNoA.size();i++) {
if(cardNoA.get(i).getStatus()==0) {
Integer ps=123456;//初始密码
String blankCardNo=cardNoA.get(i).getCardNo();//卡号;
idCard.put(idcard, blankCardNo);//身份证,卡号对应;
cardNoA.get(i).setStatus(ps);//卡号,密码;
idCardMoney.put(blankCardNo,0);//卡号,金额;
System.out.println("恭喜你开卡成功,卡号为:"+cardNoA.get(i).getCardNo()+"密码为:"+cardNoA.get(i).getStatus());
System.out.println(idcard+"对应的卡号:"+idCard.get(idcard));
System.out.println(blankCardNo+"对应的金额为:"+idCardMoney.get(blankCardNo));
cg=true;
break;
}
}
if(!cg) {System.out.println("抱歉,银行所有卡全已开户,咱们会尽快补卡");}
}
}
//根据卡号,查身份证
public String checkIdCard(String id) {
/*
Set<String> a=idCard.keySet();
Iterator<String> it=a.iterator();
while(it.hasNext()) {
System.out.println(it.next());
String idd=(String)idCard.get(it.next());
if(idd.equals(id)) {
return it.next();
}
}
*/
Set<Entry<String,String>> mn=idCard.entrySet();
Iterator<Entry<String,String>> ii=mn.iterator();
while(ii.hasNext()){
Entry<String,String> nn=ii.next();
String kk=nn.getKey();
String vv=nn.getValue();
if(vv.equals(id)) {
return kk;
}
}
return "未查询到";
}
//销户
public boolean accountCancell(String id) {
for(int i=0;i<cardNoA.size();i++) {
if(cardNoA.get(i).getCardNo().equals(id)){
cardNoA.get(i).setStatus(0);//密码设为0;
idCardMoney.remove(id);
idCard.remove(this.checkIdCard(id));
return true;
}
}
return false;
}
//登录;
public boolean login(String id,Integer password){
for(int i=0;i<cardNoA.size();i++) {
if(cardNoA.get(i).getCardNo().equals(id)) {
if(cardNoA.get(i).getStatus().equals(password)) {
//System.out.println(((Integer)cardNoA.get(i).getStatus())==password);//Integer单独写比较成功,这里是false;
return true;
}
break;
}
}
return false;
}
//查询余额
public int check(String id) {
return idCardMoney.get(id);
}
//存款
public int deposit(String id,int money) {
int oldMoney=this.check(id);
//System.out.println(idCardMoney.get(id));
oldMoney+=money;
//System.out.println(oldMoney);
idCardMoney.put(id,oldMoney);//put返回的值为原来的旧金额;
//System.out.println(idCardMoney.get(id));
return idCardMoney.get(id);
}
//取款
public boolean drawMoney(String id,int money) {
int oldMoney=this.check(id);
if(money!=0 && money<=oldMoney) {
oldMoney-=money;
idCardMoney.put(id, oldMoney);
return true;
}
return false;
}
//转账
public boolean transferAccout(String myid,String othid,int money) {
for(int i=0;i<cardNoA.size();i++) {
if(!(myid.equals(othid)) && cardNoA.get(i).getCardNo().contentEquals(othid)) {//判断他人卡号存在吗?
//查询本卡余额;
int myOldMoney=this.check(myid);
if(myOldMoney>=money) {
int othOldMoney=this.check(othid);
othOldMoney+=money;
myOldMoney-=money;
idCardMoney.put(myid,myOldMoney);
idCardMoney.put(othid,othOldMoney);
return true;
}
break;
}
}
return false;
}
}
package com.bank;
public class Person {
private String name;
private Integer password;
public Person(String name,Integer password) {
this.name=name;
this.password=password;
}
public String getName() {
return this.name;
}
public Integer getPassword() {
return this.password;
}
}
package com.bank;
import java.util.*;
public class TestMain {
public static void main(String[] args) {
// TODO Auto-generated method stub
boolean flag=false;
String id=null;
Atm bank=new Atm();
ba:while(true) {
Scanner input=new Scanner(System.in);
System.out.println("请输入您想要操作的内容?开户k、查询余额cx、查询身份证cxid、存款c、取款q、转账z、销户x、退出o");
String operation=input.nextLine();
if(operation.contentEquals("k")) {
System.out.println("请您输入身份证号:");
String idcard=input.nextLine();
if(idcard.length()==18) {
bank.openCard(idcard);
}else {
System.out.println("身份证号输入错误!");
}
flag=false;
}else if(operation.contentEquals("o")) {
System.out.println("退出登录成功!");
break ba;
}else if(operation.equals("cx") || operation.equals("cxid") || operation.equals("c") || operation.equals("q") || operation.equals("z") || operation.equals("x") || operation.equals("o")) {
if(!flag) {
System.out.println("请输入卡号:");
id=input.nextLine();
System.out.println("请输入密码:");
Integer ps=input.nextInt();
input.nextLine();
Person p=new Person(id,ps);
if(bank.login(p.getName(),p.getPassword()) && (ps+"").length()>=6){
flag=true;
}else{
System.out.println("卡号或密码错误!");
continue;
}
}
switch(operation) {
case "cx":
System.out.println("您的卡号余额为:"+bank.check(id));
break;
case "cxid":
System.out.println(bank.checkIdCard(id));
break;
case "c":
System.out.println("请您输入存入金额");
int money=input.nextInt();
input.nextLine();
System.out.println("存入成功,您的卡号余额为:"+bank.deposit(id,money));
break;
case "q":
System.out.println("请您输入取款金额");
int outmoney=input.nextInt();
input.nextLine();
if(bank.drawMoney(id,outmoney)){
System.out.println("恭喜您,取款成功!");
}else {
System.out.println("余额不足,取款失败!");
}
break;
case "z":
System.out.println("请输入转入卡号:");
String othid=input.nextLine();
System.out.println("请您输入转款金额:");
int zkmoney=input.nextInt();
input.nextLine();
if(bank.transferAccout(id,othid,zkmoney)){
System.out.println("恭喜您,转款成功");
}else {
System.out.println("转款卡号或转款金额异常");
}
flag=false;
break;
case "x":
if(bank.accountCancell(id)) {
System.out.println("销户成功");
flag=false;
}else {
System.out.println("销户失败");
}
break;
case "o":
System.out.println("退卡成功");
break ba;
}
}else {
System.out.println("无法识别您输入的内容!");
}
}
}
}
越努力,越幸运!!!
good good study,day day up!!!
浙公网安备 33010602011771号