第三次博客作业

第三次博客作业

前言:

这三次作业主要是对Java中类的继承,多态等做考查,重点考查了,类的运用

 

关于第七次作业:

掌握类的继承、多态性使用方法以及接口的应用。

掌握类的继承、多态性使用方法以及接口的应用。 

难度适中,适合用于理解类的各种性质的学习。

 

关于第八次作业:

设计ATM仿真系统,具体要求参见作业说明。

难度适中,是对类的设计的考验,如果类设计错误,那会变得很麻烦

 

关于第九次作业:

设计ATM仿真系统,具体要求参见作业说明。

难度中偏上,是对第八次作业的提升。

考点也是类的设计

 

设计与分析

第七题1.

源码如下:

 

import java.util.ArrayList;

import java.util.List;

import java.util.Scanner;

import java.util.TreeSet;

 

public class Main {

 

       public static void main(String[] args) {

              // TODO Auto-generated method stub

              Scanner in=new Scanner(System.in);

              int x=in.nextInt();

              List<Integer> shape_chioce=new ArrayList<Integer>();

              while(x!=0) {

                     if(x>4||x<0) {

                            System.out.print("Wrong Format");

                            System.exit(0);

                     }

                     shape_chioce.add(x);

                     x=in.nextInt();

              }

             

              List<Card> shape_card=new ArrayList<Card>();

              for(Integer temp:shape_chioce) {

                     if(temp==0) {

                            break;

                     }

                     switch(temp) {

                     case 1:

                            double r=in.nextDouble();

                           

                            shape_card.add(new Card(new Circle(r)));

                            break;

                     case 2:

                            double longth = in.nextDouble();

                            double width=in.nextDouble();

                            shape_card.add(new Card(new Rectangle(longth,width)));

                            break;

                     case 3:

                            double r1=in.nextDouble();

                            double r2=in.nextDouble();

                            double r3=in.nextDouble();

                            shape_card.add(new Card(new Triangle(r1,r2,r3)));

                            break;

                     case 4:

                            double longth_1=in.nextDouble();

                            double width_1=in.nextDouble();

                            double high=in.nextDouble();

                            shape_card.add(new Card(new Trapezoid(longth_1,width_1,high)));

                            break;

                     }

              }

             

              boolean flag=true;

              for(Card v:shape_card) {

                     flag=v.getShape().validate();

              }

              if(flag==false) {

                     System.out.print("Wrong Format");

                     System.exit(0);

              }

             

              System.out.println("The original list:");

              for(Card i:shape_card) {

                     System.out.print(i.getShape().getName()+":");

                     System.out.printf("%.2f",i.getShape().area());

                     System.out.print(" ");

              }

              System.out.println("\nThe sorted list:");

              Card c;

             

               TreeSet<Card> kp = new TreeSet<>(shape_card);

               for (Card a : kp) {

                      System.out.print(a.getShape().getName()+":");

                            System.out.printf("%.2f",a.getShape().area());

                            System.out.print(" ");

               }

               double sum = 0;

               for(Card i:shape_card) {

                      sum=sum+i.getShape().area();

               }

              

               System.out.printf("\nSum of area:%.2f\n",sum);

       }

}

 

class Card implements Comparable<Card>{

       private Shape shape;

       public Card(Shape s) {

              this.shape=s;

       }

       public Shape getShape() {

              return shape;

       }

       public void setShape(Shape shape) {

              this.shape = shape;

       }

       @Override

       public int compareTo(Card o) {

              // TODO Auto-generated method stub

              if(this.shape.area()==o.shape.area())

              return 0;

              if(this.shape.area()<o.shape.area())

                     return 1;

              if(this.shape.area()>o.shape.area())

                     return -1;

             

              return 1;

       }

      

}

 

abstract class Shape{

       private String Name;

      

       public Shape() {}

       public Shape(String name) {

              this.Name=name;

       }

      

       public String getName() {

              return Name;

       }

 

       public void setName(String name) {

              Name = name;

       }

       public abstract double area();

       public abstract boolean validate();

      

      

}

 

class Circle extends Shape{

       private double r;

      

       public Circle(double R) {

              this.r=R;

              this.setName("Circle");

       }

      

       public double getR() {

              return r;

       }

 

       public void setR(double r) {

              this.r = r;

       }

 

       @Override

       public double area() {

              // TODO Auto-generated method stub

              return Math.PI*r*r;

       }

 

       @Override

       public boolean validate() {

              // TODO Auto-generated method stub

              if(r<=0) {

                     return false;

              }

              return true;

       }

       public void show() {

              System.out.print(this.getName()+":");

              System.out.printf("%.2f",Math.PI*r*r);

       }

}

 

class Rectangle extends Shape{

       private double longth;

       private double width;

       public Rectangle(double Longth,double Width) {

              this.setName("Rectangle");

              this.longth=Longth;

              this.width=Width;

       }

       public double getLongth() {

              return longth;

       }

       public void setLongth(double longth) {

              this.longth = longth;

       }

       public double getWidth() {

              return width;

       }

       public void setWidth(double width) {

              this.width = width;

       }

       @Override

       public double area() {

              // TODO Auto-generated method stub

              return longth*width;

       }

       @Override

       public boolean validate() {

              // TODO Auto-generated method stub

              if(longth<0)

              return false;

              if(width<0) {

                     return false;

              }

              return true;

       }

       public void show() {

              System.out.print(this.getName()+":");

              System.out.printf("%.2f",longth*width);

       }

}

 

class Triangle extends Shape{

       private double r1;

       private double r2;

       private double r3;

      

       public Triangle(double r1,double r2,double r3) {

              this.r1 = r1;

              this.r2 = r2;

              this.r3 = r3;

              this.setName("Triangle");

       }

       double area=0;

       @Override

       public double area() {

              // TODO Auto-generated method stub

             

             

              double s1;

        s1=(r1+r2+r3)/2;

        area=Math.sqrt(s1*(s1-r1)*(s1-r2)*(s1-r3));

       

              return area;

       }

 

       @Override

       public boolean validate() {

              // TODO Auto-generated method stub

              double rr1=r1;double rr2=r2;double rr3=r3;

              double[] rrr=new double[3];

              rrr[0]=rr1;rrr[1]=rr2;rrr[2]=rr3;

             

             

              for(int i=1;i<3;i++) {

                     double temp;

                     if(rrr[i]<rrr[i-1]) {

                            temp=rrr[i];

                            rrr[i]=rrr[i-1];

                            rrr[i-1]=temp;

                     }

              }

             

              if(rrr[0]+rrr[1]>rrr[2]) {

                     return true;

              }

             

              return false;

       }

       public void show() {

              System.out.print(this.getName()+":");

              System.out.printf("%.2f",area);

       }

}

 

class Trapezoid extends Shape{

       private double upline;

       private double downline;

       private double high;

       public Trapezoid(double u,double d,double h){

              this.setName("Trapezoid");

              this.upline=u;

              this.downline=d;

              this.high=h;

       }

       public double getUpline() {

              return upline;

       }

       public void setUpline(double upline) {

              this.upline = upline;

       }

       public double getDownline() {

              return downline;

       }

       public void setDownline(double downline) {

              this.downline = downline;

       }

       public double getHigh() {

              return high;

       }

       public void setHigh(double high) {

              this.high = high;

       }

       double area;

       @Override

       public double area() {

              // TODO Auto-generated method stub

              area=(upline+downline)*high/2;

              return area;

       }

       @Override

       public boolean validate() {

              // TODO Auto-generated method stub

              if(upline<0||downline<0||high<0)

              return false;

              return true;

       }

       public void show() {

              System.out.print(this.getName()+":");

              System.out.printf("%.2f",area);

       }

}

 

第七题2:

 

import java.util.ArrayList;

import java.util.List;

import java.util.Scanner;

import java.util.TreeSet;

 

public class Main {

 

       public static void main(String[] args) {

              // TODO Auto-generated method stub

              Scanner in=new Scanner(System.in);

              int x=in.nextInt();

              List<Integer> shape_chioce=new ArrayList<Integer>();

              while(x!=0) {

                     if(x>4||x<0) {

                            System.out.print("Wrong Format");

                            System.exit(0);

                     }

                     shape_chioce.add(x);

                     x=in.nextInt();

              }

              if(shape_chioce.size()==0)

              {

                     System.out.print("Wrong Format");

                     System.exit(0);

              }

              List<Card> shape_card=new ArrayList<Card>();

              for(Integer temp:shape_chioce) {

                     if(temp==0) {

                            break;

                     }

                     switch(temp) {

                     case 1:

                            double r=in.nextDouble();

                           

                            shape_card.add(new Card(new Circle(r)));

                            break;

                     case 2:

                            double longth = in.nextDouble();

                            double width=in.nextDouble();

                            shape_card.add(new Card(new Rectangle(longth,width)));

                            break;

                     case 3:

                            double r1=in.nextDouble();

                            double r2=in.nextDouble();

                            double r3=in.nextDouble();

                            shape_card.add(new Card(new Triangle(r1,r2,r3)));

                            break;

                     case 4:

                            double longth_1=in.nextDouble();

                            double width_1=in.nextDouble();

                            double high=in.nextDouble();

                            shape_card.add(new Card(new Trapezoid(longth_1,width_1,high)));

                            break;

                     }

              }

             

              boolean flag=true;

              for(Card v:shape_card) {

                     flag=v.getShape().validate();

              }

              if(flag==false) {

                     System.out.print("Wrong Format");

                     System.exit(0);

              }

             

              System.out.println("The original list:");

             

              System.out.print("[");

              for(Card i:shape_card) {

                     System.out.print(i.getShape().getName()+":");

                     System.out.printf("%.2f",i.getShape().area());

                     System.out.print(" ");

              }

              System.out.print("]");

             

              System.out.println("\nThe Separated List:");

             

              System.out.print("[");

              List<Card> shape_Circle=new ArrayList<Card>();

              for(Card i:shape_card) {

                     if(i.getShape().getName()=="Circle") {

                            shape_Circle.add(i);

                           

                     }

              }

              for(Card i:shape_Circle)

              {

                     System.out.print(i.getShape().getName()+":");

                     System.out.printf("%.2f",i.getShape().area());

                     System.out.print(" ");

              }

              System.out.print("]");

             

              System.out.print("[");

              List<Card> shape_Rectangle=new ArrayList<Card>();

              for(Card i:shape_card) {

                     if(i.getShape().getName()=="Rectangle") {

                            shape_Rectangle.add(i);

                     }

              }

              for(Card i:shape_Rectangle)

              {

                     System.out.print(i.getShape().getName()+":");

                     System.out.printf("%.2f",i.getShape().area());

                     System.out.print(" ");

              }

              System.out.print("]");

             

              System.out.print("[");

              List<Card> shape_Triangle=new ArrayList<Card>();

              for(Card i:shape_card) {

                     if(i.getShape().getName()=="Triangle") {

                            shape_Triangle.add(i);

                     }

              }

              for(Card i:shape_Triangle)

              {

                     System.out.print(i.getShape().getName()+":");

                     System.out.printf("%.2f",i.getShape().area());

                     System.out.print(" ");

              }

              System.out.print("]");

             

              System.out.print("[");

              List<Card> shape_Trapezoid=new ArrayList<Card>();

              for(Card i:shape_card) {

                     if(i.getShape().getName()=="Trapezoid") {

                            shape_Trapezoid.add(i);

                     }

              }

              for(Card i:shape_Trapezoid)

              {

                     System.out.print(i.getShape().getName()+":");

                     System.out.printf("%.2f",i.getShape().area());

                     System.out.print(" ");

              }

              System.out.print("]");

             

              System.out.println("\nThe Separated sorted List:");

              double area1=0;

              TreeSet<Card> kp = new TreeSet<>(shape_Circle);

              System.out.print("[");

        for (Card a : kp) {

               System.out.print(a.getShape().getName()+":");

                     System.out.printf("%.2f",a.getShape().area());

                     System.out.print(" ");

                     area1=area1+a.getShape().area();

        }

        System.out.print("]");

       

        double area2=0;

        TreeSet<Card> k = new TreeSet<>(shape_Rectangle);

              System.out.print("[");

        for (Card a : k) {

               System.out.print(a.getShape().getName()+":");

                     System.out.printf("%.2f",a.getShape().area());

                     System.out.print(" ");

                     area2=area2+a.getShape().area();

        }

        System.out.print("]");

       

        double area3=0;

        TreeSet<Card> p = new TreeSet<>(shape_Triangle);

              System.out.print("[");

        for (Card a : p) {

               System.out.print(a.getShape().getName()+":");

                     System.out.printf("%.2f",a.getShape().area());

                     System.out.print(" ");

                     area3=area3+a.getShape().area();

        }

        System.out.print("]");

             

        double area4=0;

        TreeSet<Card> f = new TreeSet<>(shape_Trapezoid);

              System.out.print("[");

        for (Card a : f) {

               System.out.print(a.getShape().getName()+":");

                     System.out.printf("%.2f",a.getShape().area());

                     System.out.print(" ");

                     area4=area4+a.getShape().area();

        }

        System.out.print("]");

       

//            TreeSet<Card> kp = new TreeSet<>(shape_card);

//            for (Card a : kp) {

//                   System.out.print(a.getShape().getName()+":");

//                         System.out.printf("%.2f",a.getShape().area());

//                         System.out.print(" ");

//            }

               double maxsum=0;

               if(area1>maxsum)

                      maxsum=area1;

               if(area2>maxsum)

                      maxsum=area2;

               if(area3>maxsum)

                      maxsum=area3;

               if(area4>maxsum)

                      maxsum=area4;

               System.out.printf("\nThe max area:%.2f",maxsum);

       }

}

 

class Card implements Comparable<Card>{

       private Shape shape;

       public Card(Shape s) {

              this.shape=s;

       }

       public Shape getShape() {

              return shape;

       }

       public void setShape(Shape shape) {

              this.shape = shape;

       }

       @Override

       public int compareTo(Card o) {

              // TODO Auto-generated method stub

              if(this.shape.area()==o.shape.area())

              return 0;

              if(this.shape.area()<o.shape.area())

                     return 1;

              if(this.shape.area()>o.shape.area())

                     return -1;

             

              return 1;

       }

      

}

 

abstract class Shape{

       private String Name;

      

       public Shape() {}

       public Shape(String name) {

              this.Name=name;

       }

      

       public String getName() {

              return Name;

       }

 

       public void setName(String name) {

              Name = name;

       }

       public abstract double area();

       public abstract boolean validate();

      

      

}

 

class Circle extends Shape{

       private double r;

      

       public Circle(double R) {

              this.r=R;

              this.setName("Circle");

       }

      

       public double getR() {

              return r;

       }

 

       public void setR(double r) {

              this.r = r;

       }

 

       @Override

       public double area() {

              // TODO Auto-generated method stub

              return Math.PI*r*r;

       }

 

       @Override

       public boolean validate() {

              // TODO Auto-generated method stub

              if(r<=0) {

                     return false;

              }

              return true;

       }

       public void show() {

              System.out.print(this.getName()+":");

              System.out.printf("%.2f",Math.PI*r*r);

       }

}

 

class Rectangle extends Shape{

       private double longth;

       private double width;

       public Rectangle(double Longth,double Width) {

              this.setName("Rectangle");

              this.longth=Longth;

              this.width=Width;

       }

       public double getLongth() {

              return longth;

       }

       public void setLongth(double longth) {

              this.longth = longth;

       }

       public double getWidth() {

              return width;

       }

       public void setWidth(double width) {

              this.width = width;

       }

       @Override

       public double area() {

              // TODO Auto-generated method stub

              return longth*width;

       }

       @Override

       public boolean validate() {

              // TODO Auto-generated method stub

              if(longth<=0)

              return false;

              if(width<=0) {

                     return false;

              }

              return true;

       }

       public void show() {

              System.out.print(this.getName()+":");

              System.out.printf("%.2f",longth*width);

       }

}

 

class Triangle extends Shape{

       private double r1;

       private double r2;

       private double r3;

      

       public Triangle(double r1,double r2,double r3) {

              this.r1 = r1;

              this.r2 = r2;

              this.r3 = r3;

              this.setName("Triangle");

       }

       double area=0;

       @Override

       public double area() {

              // TODO Auto-generated method stub

             

             

              double s1;

        s1=(r1+r2+r3)/2;

        area=Math.sqrt(s1*(s1-r1)*(s1-r2)*(s1-r3));

       

              return area;

       }

 

       @Override

       public boolean validate() {

              // TODO Auto-generated method stub

              if(r1<=0||r2<=0||r3<=0) {

                     return false;

              }

              double rr1=r1;double rr2=r2;double rr3=r3;

              double[] rrr=new double[3];

              rrr[0]=rr1;rrr[1]=rr2;rrr[2]=rr3;

             

             

              for(int i=1;i<3;i++) {

                     double temp;

                     if(rrr[i]<rrr[i-1]) {

                            temp=rrr[i];

                            rrr[i]=rrr[i-1];

                            rrr[i-1]=temp;

                     }

              }

             

              if(rrr[0]+rrr[1]>rrr[2]) {

                     return true;

              }

             

              return false;

       }

       public void show() {

              System.out.print(this.getName()+":");

              System.out.printf("%.2f",area);

       }

}

 

class Trapezoid extends Shape{

       private double upline;

       private double downline;

       private double high;

       public Trapezoid(double u,double d,double h){

              this.setName("Trapezoid");

              this.upline=u;

              this.downline=d;

              this.high=h;

       }

       public double getUpline() {

              return upline;

       }

       public void setUpline(double upline) {

              this.upline = upline;

       }

       public double getDownline() {

              return downline;

       }

       public void setDownline(double downline) {

              this.downline = downline;

       }

       public double getHigh() {

              return high;

       }

       public void setHigh(double high) {

              this.high = high;

       }

       double area;

       @Override

       public double area() {

              // TODO Auto-generated method stub

              area=(upline+downline)*high/2;

              return area;

       }

       @Override

       public boolean validate() {

              // TODO Auto-generated method stub

              if(upline<=0||downline<=0||high<=0)

              return false;

              return true;

       }

       public void show() {

              System.out.print(this.getName()+":");

              System.out.printf("%.2f",area);

       }

}

 

第八题1.

 

import java.util.ArrayList;

import java.util.List;

import java.util.Scanner;

 

 

 

public class Main {

       public static void main(String[] args) {

              double balance=10000.00;

              //输入

              Scanner in=new Scanner(System.in);

              String putIN=in.nextLine();

              if(putIN.equals("#")) {

                     System.exit(0);

              }

              //去除空格

              String[] data=putIN.split("\\s+");

             

              //开始初始化数据

                            //ATM的编号编写进了数组

                            List<ATM> atm_ChinaConstructionBank=new ArrayList<ATM>();

                            for(int i=1;i<=4;i++) {

                                   atm_ChinaConstructionBank.add(new ATM(i));

                            }

                            int[] atm_CCB=new int[4] ;

                            for(int i=0;i<4;i++) {

                                   atm_CCB[i]=atm_ChinaConstructionBank.get(i).getNum();

                            }

                           

                            List<ATM> atm_ICBC=new ArrayList<ATM>();

                            for(int i=5;i<=6;i++) {

                                   atm_ICBC.add(new ATM(i));

                            }

                            int[] atm_ICBC_A=new int[2];

                            for(int i=0;i<2;i++) {

                                   atm_ICBC_A[i]=atm_ICBC.get(i).getNum();

                            }

              //检测

//                         for(int i=0;i<atm_ICBC_A.length;i++) {

//                                System.out.println(atm_ICBC_A[i]);

//                         }

//                         for(int i=0;i<atm_ICBC_A.length;i++) {

//                                if(atm_ICBC_A[i]==5) {

//                                       System.out.println("yes");

//                                }

//                         }

                           

                            //初始化所有人的信息

                            //at user 杨过

                            // 从卡号开始

                            List<Card> card_YangGuo_1=new ArrayList<Card>();

                            card_YangGuo_1.add(new Card("6217000010041315709"));

                            card_YangGuo_1.add(new Card("6217000010041315715"));

                            List<Card> card_YangGuo_2=new ArrayList<Card>();

                            card_YangGuo_2.add(new Card("6217000010041315718"));

                            //账户

                            List<Account> Account_YangGuo=new ArrayList<Account>();//总的list

                            Account_YangGuo.add(new Account("3217000010041315709",balance,card_YangGuo_1));//下标为0

                            Account_YangGuo.add(new Account("3217000010041315715",balance,card_YangGuo_2));//下标为1

                           

                            //对账户的检测

//                         System.out.println(Account_YangGuo.get(0).getBalance());

//                         System.out.println(Account_YangGuo.get(1).getBalance());

                           

                            //银行

                            List<Bank> Bank_YangGuo=new ArrayList<Bank>();

                            Bank_YangGuo.add(new Bank(atm_ChinaConstructionBank,"中国建设银行 ",Account_YangGuo));//0号bank

                           

                            //用户

                            User YG=new User("杨过", Bank_YangGuo);

                           

                     //at user 郭靖

                            List<Card> card_GuoJin_1=new ArrayList<Card>();

                            card_GuoJin_1.add(new Card("6217000010051320007"));

                           

                            List<Account> Account_GuoJin_1=new ArrayList<Account>();

                            Account_GuoJin_1.add(new Account("3217000010051320007",balance,card_GuoJin_1));

                            //银行

                            List<Bank> Bank_GuoJin=new ArrayList<Bank>();

                            Bank_GuoJin.add(new Bank(atm_ChinaConstructionBank,"中国建设银行 ",Account_GuoJin_1));

                            //用户

                            User GJ=new User("郭靖",Bank_GuoJin);

                           

                     //at user 张无忌

                            //卡号

                            List<Card> card_ZhangWuJi_1=new ArrayList<Card>(); //卡包1

                            card_ZhangWuJi_1.add(new Card("6222081502001312389"));//1.1

                            List<Card> card_ZhangWuJi_2=new ArrayList<Card>(); //卡包2

                            card_ZhangWuJi_2.add(new Card("6222081502001312390"));//2.1

                            List<Card> card_ZhangWuJi_3=new ArrayList<Card>(); //卡包3

                            card_ZhangWuJi_3.add(new Card("6222081502001312399"));//3.1

                            card_ZhangWuJi_3.add(new Card("6222081502001312400"));//3.2

                            //账户

                            List<Account> Account_ZhangWuJi=new ArrayList<Account>();//总账户

                            Account_ZhangWuJi.add(new Account("3222081502001312389",balance,card_ZhangWuJi_1));//1

                            Account_ZhangWuJi.add(new Account("3222081502001312390",balance,card_ZhangWuJi_2));//2

                            Account_ZhangWuJi.add(new Account("3222081502001312399",balance,card_ZhangWuJi_3));//3

                            //银行

                            List<Bank> Bank_ZhangWuJi=new ArrayList<Bank>();

                            Bank_ZhangWuJi.add(new Bank(atm_ICBC,"中国工商银行",Account_ZhangWuJi));

                            //用户

                            User ZWJ=new User("张无忌", Bank_ZhangWuJi);

                           

                     //at user 韦小宝

                            //卡号

                            List<Card> card_WeiXiaoBao_1=new ArrayList<Card>();

                            card_WeiXiaoBao_1.add(new Card("6222081502051320785"));

                            List<Card> card_WeiXiaoBao_2=new ArrayList<Card>();

                            card_WeiXiaoBao_2.add(new Card("6222081502051320786"));

                            //账户

                            List<Account> Account_WeiXiaoBao=new ArrayList<Account>();

                            Account_WeiXiaoBao.add(new Account("3222081502051320785",balance,card_WeiXiaoBao_1));//1

                            Account_WeiXiaoBao.add(new Account("3222081502051320785",balance,card_WeiXiaoBao_2));//2

                            //银行

                            List<Bank> Bank_WeiXiaoBao=new ArrayList<Bank>();

                            Bank_WeiXiaoBao.add(new Bank(atm_ICBC,"中国工商银行",Account_WeiXiaoBao));

                            //用户

                            User WXB=new User("韦小宝", Bank_WeiXiaoBao);

                           

                            //添加各个工具类

                            //创建各个合法性控制类

                            CheckCardNumLength check_CNL = new CheckCardNumLength();

                           

                            Check_password check_PW=new Check_password();

                           

                            Check_ATM check_atm=new Check_ATM();

                           

                            Check_exist check_e=new Check_exist();

                           

                            select_find s_f=new select_find();

                           

                            //开始工作

                            while(putIN!="#") {

                                   //给的是卡号,查询账户内的钱

                                   if(data.length==1) {

                                          String temp_card=data[0];

                                          if(check_CNL.check_result(temp_card)==false) {

                                                 return;

                                          }

                                          if(check_e.check_result(temp_card)==false) {

                                                 return;

                                          }

                                          //锁定了用户和账户

                                          String name=s_f.find_name(temp_card);

                                          String a=s_f.Find_Account();

                                          //存储余额

                                          double temp_balance;

                                          System.out.print("¥");

                                         

                                          if(name.equals("杨过")) {

                                                 if(a.equals("3217000010041315709")) {

                                                        temp_balance=YG.userBank.get(0).account.get(0).getBalance();

                                                        System.out.printf("%.2f",temp_balance);

                                                 }

                                                 if(a.equals("3217000010041315715")) {

                                                        temp_balance=YG.userBank.get(0).account.get(1).getBalance();

                                                        System.out.printf("%.2f",temp_balance);

                                                 }

                                          }

                                         

                                          if(name.equals("郭靖")) {

                                                 if(a.equals("3217000010051320007")) {

                                                        temp_balance=GJ.userBank.get(0).account.get(0).getBalance();

                                                        System.out.printf("%.2f",temp_balance);

                                                 }

                                          }

                                         

                                          if(name.equals("张无忌")) {

                                                 if(a.equals("3222081502001312389")) {

                                                        temp_balance=ZWJ.userBank.get(0).account.get(0).getBalance();

                                                        System.out.printf("%.2f",temp_balance);

                                                 }

                                                 if(a.equals("3222081502001312390")) {

                                                        temp_balance=ZWJ.userBank.get(0).account.get(1).getBalance();

                                                        System.out.printf("%.2f",temp_balance);

                                                 }

                                                 if(a.equals("3222081502001312399")) {

                                                        temp_balance=ZWJ.userBank.get(0).account.get(2).getBalance();

                                                        System.out.printf("%.2f",temp_balance);

                                                 }

                                          }

                                         

                                          if(name.equals("韦小宝")) {

                                                

                                                 if(a.equals("3222081502051320785")) {

                                                        temp_balance=WXB.userBank.get(0).account.get(0).getBalance();

                                                        System.out.printf("%.2f",temp_balance);

                                                 }

                                                 if(a.equals("3222081502051320786")) {

                                                        temp_balance=WXB.userBank.get(0).account.get(1).getBalance();

                                                        System.out.printf("%.2f",temp_balance);

                                                 }

                                          }

                                   }

                                  

                                   if(data.length==4) {

                                          String temp_card=data[0];

                                          String temp_pw=data[1];

                                          String temp_atm=data[2];

                                          String temp_Money=data[3];

                                          double Money=Double.parseDouble(temp_Money);//金钱

                                          int atm=Integer.parseInt(temp_atm);//atm序号

                                          String temp_name=s_f.find_name(temp_card);//持卡人名字

                                          String temp_a=s_f.Find_Account();//持卡人账户

                                          double x;

                                          double abs_money=Math.abs(Money);

                                         

                                          boolean atm_flag=false;

                                          if(check_CNL.check_result(temp_card)==false) {

                                                 return;

                                          }

                                          if(check_e.check_result(temp_card)==false) {

                                                 return;

                                          }

                                          if(check_PW.check_resualt(temp_pw)==false) {

                                                 return;

                                          }

                                          if(check_atm.check_resualt(temp_atm)==false) {

                                                 return;

                                          }

                                          //杨过begin

                                          if(temp_name.equals("杨过")) {

                                                 //检测atm

                                                 for(int i=0;i<4;i++) {

                                                        if(atm_CCB[i]==atm) {

                                                               atm_flag=true;

                                                        }

                                                 }

                                                 if(atm_flag==false) {

                                                        System.out.print("Sorry,cross-bank withdrawal is not supported.");

                                                        return;

                                                 }

                                                

                                                 if(temp_a.equals("3217000010041315709")) {

                                                        if(Money<0) {

                                                               x=YG.userBank.get(0).account.get(0).getBalance()-Money;

                                                               YG.userBank.get(0).account.get(0).setBalance(x);

                                                               System.out.print("杨过在中国建设银行的0"+atm+"号ATM机上存款¥");

                                                               System.out.printf("%.2f",abs_money);

                                                               System.out.println();

                                                               System.out.printf("当前余额为¥%.2f", x);

                                                        }

                                                        if(Money>0) {

                                                               x=YG.userBank.get(0).account.get(0).getBalance()-Money;

                                                               if(x<0) {

                                                                      System.out.print("Sorry,your account balance is insufficient.");

                                                                      return;

                                                               }

                                                               YG.userBank.get(0).account.get(0).setBalance(x);

                                                              

                                                               System.out.print("杨过在中国建设银行的0"+atm+"号ATM机上取款¥");

                                                               System.out.printf("%.2f",abs_money);

                                                               System.out.println();

                                                               System.out.printf("当前余额为¥%.2f", x);

                                                              

                                                        }

                                                       

                                                 }

                                                 if(temp_a.equals("3217000010041315715")) {

                                                        if(Money<0) {

                                                               x=YG.userBank.get(0).account.get(1).getBalance()-Money;

                                                               YG.userBank.get(0).account.get(1).setBalance(x);

                                                               System.out.print("杨过在中国建设银行的0"+atm+"号ATM机上存款¥");

                                                               System.out.printf("%.2f",abs_money);

                                                               System.out.println();

                                                               System.out.printf("当前余额为¥%.2f", x);

                                                        }

                                                        if(Money>0) {

                                                               x=YG.userBank.get(0).account.get(1).getBalance()-Money;

                                                               if(x<0) {

                                                                      System.out.print("Sorry,your account balance is insufficient.");

                                                                      return;

                                                               }

                                                               YG.userBank.get(0).account.get(1).setBalance(x);

                                                               System.out.print("杨过在中国建设银行的0"+atm+"号ATM机上取款¥");

                                                               System.out.printf("%.2f",abs_money);

                                                               System.out.println();

                                                               System.out.printf("当前余额为¥%.2f", x);

                                                 }

                                                

                                                

                                          }

                                         

                                   }

                                   //杨过end

                                   //郭靖begin

                                          if(temp_name.equals("郭靖")) {

                                                 for(int i=0;i<4;i++) {

                                                        if(atm_CCB[i]==atm) {

                                                               atm_flag=true;

                                                        }

                                                 }

                                                 if(atm_flag==false) {

                                                        System.out.print("Sorry,cross-bank withdrawal is not supported.");

                                                        return;

                                                 }

                                                 if(temp_a.equals("3217000010051320007")) {

                                                        if(Money<0) {

                                                               x=GJ.userBank.get(0).account.get(0).getBalance()-Money;

                                                               GJ.userBank.get(0).account.get(0).setBalance(x);

                                                               System.out.print("郭靖在中国建设银行的0"+atm+"号ATM机上存款¥");

                                                               System.out.printf("%.2f",abs_money);

                                                               System.out.println();

                                                               System.out.printf("当前余额为¥%.2f", x);

                                                        }

                                                        if(Money>0) {

                                                               x=GJ.userBank.get(0).account.get(0).getBalance()-Money;

                                                               if(x<0) {

                                                                      System.out.print("Sorry,your account balance is insufficient.");

                                                                      return;

                                                               }

                                                               GJ.userBank.get(0).account.get(0).setBalance(x);

                                                               System.out.print("郭靖在中国建设银行的0"+atm+"号ATM机上取款¥");

                                                               System.out.printf("%.2f",abs_money);

                                                               System.out.println();

                                                               System.out.printf("当前余额为¥%.2f", x);

                                                        }

                                                 }

                                          }

                                          //郭靖end

                                         

                                          //张无忌begin

                                          if(temp_name.equals("张无忌")) {

                                                 for(int i=0;i<2;i++) {

                                                        if(atm_ICBC_A[i]==atm) {

                                                               atm_flag=true;

                                                        }

                                                 }

                                                 if(atm_flag==false) {

                                                        System.out.print("Sorry,cross-bank withdrawal is not supported.");

                                                        return;

                                                 }

                                                 if(temp_a.equals("3222081502001312389")) {

                                                        if(Money<0) {

                                                               x=ZWJ.userBank.get(0).account.get(0).getBalance()-Money;

                                                               ZWJ.userBank.get(0).account.get(0).setBalance(x);

                                                               System.out.print("张无忌在中国工商银行的0"+atm+"号ATM机上存款¥");

                                                               System.out.printf("%.2f",abs_money);

                                                               System.out.println();

                                                               System.out.printf("当前余额为¥%.2f", x);

                                                        }

                                                        if(Money>0) {

                                                               x=ZWJ.userBank.get(0).account.get(0).getBalance()-Money;

                                                               if(x<0) {

                                                                      System.out.print("Sorry,your account balance is insufficient.");

                                                                      return;

                                                               }

                                                               ZWJ.userBank.get(0).account.get(0).setBalance(x);

                                                               System.out.print("张无忌在中国工商银行的0"+atm+"号ATM机上取款¥");

                                                               System.out.printf("%.2f",abs_money);

                                                               System.out.println();

                                                               System.out.printf("当前余额为¥%.2f", x);

                                                        }

                                                 }

                                                 if(temp_a.equals("3222081502001312390")) {

                                                        if(Money<0) {

                                                               x=ZWJ.userBank.get(0).account.get(1).getBalance()-Money;

                                                               ZWJ.userBank.get(0).account.get(1).setBalance(x);

                                                               System.out.print("张无忌在中国工商银行的0"+atm+"号ATM机上存款¥");

                                                               System.out.printf("%.2f",abs_money);

                                                               System.out.println();

                                                               System.out.printf("当前余额为¥%.2f", x);

                                                        }

                                                        if(Money>0) {

                                                               x=ZWJ.userBank.get(0).account.get(1).getBalance()-Money;

                                                               if(x<0) {

                                                                      System.out.print("Sorry,your account balance is insufficient.");

                                                                      return;

                                                               }

                                                               ZWJ.userBank.get(0).account.get(1).setBalance(x);

                                                               System.out.print("张无忌在中国工商银行的0"+atm+"号ATM机上取款¥");

                                                               System.out.printf("%.2f",abs_money);

                                                               System.out.println();

                                                               System.out.printf("当前余额为¥%.2f", x);

                                                        }

                                                       

                                                 }

                                                 if(temp_a.equals("3222081502001312399")) {

                                                        if(Money<0) {

                                                               x=ZWJ.userBank.get(0).account.get(2).getBalance()-Money;

                                                               if(x<0) {

                                                                      System.out.print("Sorry,your account balance is insufficient.");

                                                                      return;

                                                               }

                                                               ZWJ.userBank.get(0).account.get(2).setBalance(x);

                                                               System.out.print("张无忌在中国工商银行的0"+atm+"号ATM机上存款¥");

                                                               System.out.printf("%.2f",abs_money);

                                                               System.out.println();

                                                               System.out.printf("当前余额为¥%.2f", x);

                                                        }

                                                        if(Money>0) {

                                                               x=ZWJ.userBank.get(0).account.get(2).getBalance()-Money;

                                                               ZWJ.userBank.get(0).account.get(2).setBalance(x);

                                                               System.out.print("张无忌在中国工商银行的0"+atm+"号ATM机上取款¥");

                                                               System.out.printf("%.2f",abs_money);

                                                               System.out.println();

                                                               System.out.printf("当前余额为¥%.2f", x);

                                                        }

                                                       

                                                 }

                                                

                                          }

                                          //张无忌end

                                         

                                          //韦小宝begin

                                          if(temp_name.equals("韦小宝")) {

                                                 for(int i=0;i<2;i++) {

                                                        if(atm_ICBC_A[i]==atm) {

                                                               atm_flag=true;

                                                        }

                                                 }

                                                 if(atm_flag==false) {

                                                        System.out.print("Sorry,cross-bank withdrawal is not supported.");

                                                        return;

                                                 }

                                                

                                                 if(temp_a.equals("3222081502051320785")) {

                                                        if(Money<0) {

                                                               x=WXB.userBank.get(0).account.get(0).getBalance()-Money;

                                                               WXB.userBank.get(0).account.get(0).setBalance(x);

                                                               System.out.print("韦小宝在中国工商银行的0"+atm+"号ATM机上存款¥");

                                                               System.out.printf("%.2f",abs_money);

                                                               System.out.println();

                                                               System.out.printf("当前余额为¥%.2f", x);

                                                        }

                                                        if(Money>0) {

                                                               x=WXB.userBank.get(0).account.get(0).getBalance()-Money;

                                                               if(x<0) {

                                                                      System.out.print("Sorry,your account balance is insufficient.");

                                                                      return;

                                                               }

                                                               WXB.userBank.get(0).account.get(0).setBalance(x);

                                                               System.out.print("张无忌在中国工商银行的0"+atm+"号ATM机上取款¥");

                                                               System.out.printf("%.2f",abs_money);

                                                               System.out.println();

                                                               System.out.printf("当前余额为¥%.2f", x);

                                                        }

                                                 }

                                                 if(temp_a.equals("3222081502051320786")) {

                                                        if(Money<0) {

                                                               x=WXB.userBank.get(0).account.get(1).getBalance()-Money;

                                                               WXB.userBank.get(0).account.get(1).setBalance(x);

                                                               System.out.print("韦小宝在中国工商银行的0"+atm+"号ATM机上存款¥");

                                                               System.out.printf("%.2f",abs_money);

                                                               System.out.println();

                                                               System.out.printf("当前余额为¥%.2f", x);

                                                        }

                                                        if(Money>0) {

                                                               x=WXB.userBank.get(0).account.get(1).getBalance()-Money;

                                                               if(x<0) {

                                                                      System.out.print("Sorry,your account balance is insufficient.");

                                                                      return;

                                                               }

                                                               WXB.userBank.get(0).account.get(1).setBalance(x);

                                                               System.out.print("张无忌在中国工商银行的0"+atm+"号ATM机上取款¥");

                                                               System.out.printf("%.2f",abs_money);

                                                               System.out.println();

                                                               System.out.printf("当前余额为¥%.2f", x);

                                                        }

                                                       

                                                 }

                                                

                                          }

                                         

                                         

                                          //韦小宝end

                                         

                                  

                                  

                            }

                                   putIN=in.nextLine();

                                   if(putIN.equals("#")) {

                                          System.exit(0);

                                   }

                    System.out.println();

                                   data=putIN.split("\\s+");

       }     

}

}     

       class select_find{

              String account;

              String name=null;

              public String find_name(String card_num){

                    

                 if(card_num.equals("6217000010041315709")||card_num.equals("6217000010041315715")) {

                            name="杨过";

                            account="3217000010041315709";

                     }

                     if(card_num.equals("6217000010041315718")) {

                            name="杨过";

                            account="3217000010041315715";

                     }

                     if(card_num.equals("6217000010051320007")) {

                            name="郭靖";

                            account="3217000010051320007";

                     }

                     if(card_num.equals("6217000010051320007")) {

                            name="张无忌";

                            account="3222081502001312389";

                     }

                     if(card_num.equals("6222081502001312390")) {

                            name="张无忌";

                            account="3222081502001312390";

                     }

                 if(card_num.equals("6222081502001312399")||card_num.equals("6222081502001312400")) {

                            name="张无忌";

                            account="3222081502001312399";

                     }

                     if(card_num.equals("6222081502051320785")) {

                            name="韦小宝";

                            account="3222081502051320785";

                     }

                     if(card_num.equals("6222081502051320786")) {

                            name="韦小宝";

                            account="3222081502051320786";

                     }

                     return name;

                    

              }

             

              public String Find_Account() {

                     return account;

              }

       }

 

       class Check_exist{

              List<String> e=new ArrayList<String>();

              public boolean check_result(String temp) {

                     e.add("6217000010041315709");

                     e.add("6217000010041315715");

                     e.add("6217000010041315718");

                     e.add("6217000010051320007");

                     e.add("6222081502001312389");

                     e.add("6222081502001312390");

                     e.add("6222081502001312399");

                     e.add("6222081502001312400");

                     e.add("6222081502051320785");

                     e.add("6222081502051320786");

                     if(e.contains(temp)) {

                            return true;

                     }

                     System.out.print("Sorry,this card does not exist.");

                     return false;

              }

       }

 

       class CheckCardNumLength{

              String L=new String("6222081502001312390");

              int CardNumLength=L.length();

             

              public boolean check_result(String x) {

                     if(this.L.length()==x.length()) {

                            return true;

                     }

                     System.out.print("Sorry,this card does not exist.");

                     return false;

              }

       }

 

       class Check_password{

              String password="88888888";

              public boolean check_resualt(String pw) {

                     if(pw.equals(password)) {

                            return true;

                     }

                     System.out.print("Sorry,your password is wrong.");

                     return false;

              }

       }

 

       class Check_ATM{

             

              public boolean check_resualt(String atm) {

                     int a_atm=Integer.parseInt(atm);

                    

                     if(a_atm<0) {

                            System.out.print("Sorry,the ATM's id is wrong.");

                            return false;

                           

                     }

                     if(a_atm>6) {

                            System.out.print("Sorry,the ATM's id is wrong.");

                            return false;

                     }

                     return true;

                    

              }

       }

 

       class ATM{

              private int num;

 

              public int getNum() {

                     return num;

              }

 

              public void setNum(int num) {

                     this.num = num;

              }

             

              public ATM(int num){

                     this.num = num;

              }

       }

 

       class Account{

              private String Account_id;

              private double balance;

              List<Card> card;

             

              public List<Card> getCard() {

                     return card;

              }

              public String getAccount_id() {

                     return Account_id;

              }

              public void setAccount_id(String account_id) {

                     Account_id = account_id;

              }

              public double getBalance() {

                     return balance;

              }

              public void setBalance(double balance) {

                     this.balance = balance;

              }

              public void setCard(List<Card> card) {

                     this.card = card;

              }

             

              public Account(String Account_id,double balance2,List<Card> card) {

                     this.Account_id=Account_id;

                     this.balance = balance2;

                     this.card = card;

              }

             

       }

 

       class Bank{

              List<ATM> atm;

              List<Account> account;

             

              public List<Account> getAccount() {

                     return account;

              }

              public void setAccount(List<Account> account) {

                     this.account = account;

              }

 

              private String bankName;

             

              public List<ATM> getAtm() {

                     return atm;

              }

              public void setAtm(List<ATM> atm) {

                     this.atm = atm;

              }

              public String getBankName() {

                     return bankName;

              }

              public void setBankName(String bankName) {

                     this.bankName = bankName;

              }

             

              public Bank(List<ATM> atm,String bankName,List<Account> account) {

                     this.atm = atm;

                     this.bankName = bankName;

                     this.account = account;

              }

       }

 

       class User{

              private String userName;

              List<Bank> userBank;

              public String getUserName() {

                     return userName;

              }

              public void setUserName(String userName) {

                     this.userName = userName;

              }

              public List<Bank> getUserBank() {

                     return userBank;

              }

              public void setUserBank(List<Bank> userBank) {

                     this.userBank = userBank;

              }

             

              public User(String userName,List<Bank> userBank) {

                     this.userName = userName;

                     this.userBank = userBank;

              }

       }

 

       class Card{

              private String Cardnum;

 

              public String getCardnum() {

                     return Cardnum;

              }

 

              public void setCardnum(String cardnum) {

                     Cardnum = cardnum;

              }

             

              public Card(String Cardnum) {

                     this.Cardnum=Cardnum;

              }

       }

 

第九题1.

 

 

import java.util.ArrayList;

import java.util.List;

import java.util.Scanner;

 

 

 

public class Main {

       static int balance=10000;

       public static void main(String[] args) {

              //初始化数据

              //at user 杨过

              // 从卡号开始

              List<Card> card_YangGuo_1=new ArrayList<Card>();

              card_YangGuo_1.add(new Card("6217000010041315709"));

              card_YangGuo_1.add(new Card("6217000010041315715"));

              List<Card> card_YangGuo_2=new ArrayList<Card>();

              card_YangGuo_2.add(new Card("6217000010041315718"));

              //账户

              List<Account> Account_YangGuo=new ArrayList<Account>();//总的list

              Account_YangGuo.add(new Account("3217000010041315709",balance,card_YangGuo_1));//下标为0

              Account_YangGuo.add(new Account("3217000010041315715",balance,card_YangGuo_2));//下标为1

             

              //银行

              List<Bank> Bank_YangGuo=new ArrayList<Bank>();

              Bank_YangGuo.add(new Bank("中国建设银行",Account_YangGuo));//0号bank

             

              //用户

              User YG=new User("杨过", Bank_YangGuo);

             

       //at user 郭靖

              List<Card> card_GuoJin_1=new ArrayList<Card>();

              card_GuoJin_1.add(new Card("6217000010051320007"));

             

              List<Account> Account_GuoJin_1=new ArrayList<Account>();

              Account_GuoJin_1.add(new Account("3217000010051320007",balance,card_GuoJin_1));

              //银行

              List<Bank> Bank_GuoJin=new ArrayList<Bank>();

              Bank_GuoJin.add(new Bank("中国建设银行",Account_GuoJin_1));

              //用户

              User GJ=new User("郭靖",Bank_GuoJin);

             

       //at user 张无忌

              //卡号

              List<Card> card_ZhangWuJi_1=new ArrayList<Card>(); //卡包1

              card_ZhangWuJi_1.add(new Card("6222081502001312389"));//1.1

              List<Card> card_ZhangWuJi_2=new ArrayList<Card>(); //卡包2

              card_ZhangWuJi_2.add(new Card("6222081502001312390"));//2.1

              List<Card> card_ZhangWuJi_3=new ArrayList<Card>(); //卡包3

              card_ZhangWuJi_3.add(new Card("6222081502001312399"));//3.1

              card_ZhangWuJi_3.add(new Card("6222081502001312400"));//3.2

              //账户

              List<Account> Account_ZhangWuJi=new ArrayList<Account>();//总账户

              Account_ZhangWuJi.add(new Account("3222081502001312389",balance,card_ZhangWuJi_1));//1

              Account_ZhangWuJi.add(new Account("3222081502001312390",balance,card_ZhangWuJi_2));//2

              Account_ZhangWuJi.add(new Account("3222081502001312399",balance,card_ZhangWuJi_3));//3

              //银行

              List<Bank> Bank_ZhangWuJi=new ArrayList<Bank>();

              Bank_ZhangWuJi.add(new Bank("中国工商银行",Account_ZhangWuJi));

              //用户

              User ZWJ=new User("张无忌", Bank_ZhangWuJi);

             

       //at user 韦小宝

              //卡号

              List<Card> card_WeiXiaoBao_1=new ArrayList<Card>();

              card_WeiXiaoBao_1.add(new Card("6222081502051320785"));

              List<Card> card_WeiXiaoBao_2=new ArrayList<Card>();

              card_WeiXiaoBao_2.add(new Card("6222081502051320786"));

              //账户

              List<Account> Account_WeiXiaoBao=new ArrayList<Account>();

              Account_WeiXiaoBao.add(new Account("3222081502051320785",balance,card_WeiXiaoBao_1));//1

              Account_WeiXiaoBao.add(new Account("3222081502051320786",balance,card_WeiXiaoBao_2));//2

              //银行

              List<Bank> Bank_WeiXiaoBao=new ArrayList<Bank>();

              Bank_WeiXiaoBao.add(new Bank("中国工商银行",Account_WeiXiaoBao));

              //用户

              User WXB=new User("韦小宝", Bank_WeiXiaoBao);

             

       //at user 张三丰

              //卡号

              List<Card> card_ZhangSanFeng_1=new ArrayList<Card>();

              card_ZhangSanFeng_1.add(new Card("6640000010045442002"));

              card_ZhangSanFeng_1.add(new Card("6640000010045442003"));

              //账户

              List<Account> Account_ZhangSanFeng=new ArrayList<Account>();

              Account_ZhangSanFeng.add(new Account("3640000010045442002", balance, card_ZhangSanFeng_1));

              //银行

              List<Bank> Bank_ZhangSanFeng=new ArrayList<Bank>();

              Bank_ZhangSanFeng.add(new Bank("中国建设银行", Account_ZhangSanFeng));

              //用户

              User ZSF=new User("张三丰", Bank_ZhangSanFeng);

             

       //at user 令狐冲

              //卡号

              List<Card> card_LingHuChong_1=new ArrayList<Card>();

              card_LingHuChong_1.add(new Card("6640000010045441009"));

              //账户

              List<Account> Account_LingHuChong=new ArrayList<Account>();

              Account_LingHuChong.add(new Account("3640000010045441009 ", balance, card_LingHuChong_1));

              //银行

              List<Bank> Bank_LingHuChong=new ArrayList<Bank>();

              Bank_LingHuChong.add(new Bank("中国工商银行", Account_LingHuChong));

              //用户

              User LHC=new User("令狐冲", Bank_LingHuChong);

             

       //at user 乔峰

              //卡号

              List<Card> card_QiaoFeng_1=new ArrayList<Card>();

              card_QiaoFeng_1.add(new Card("6630000010033431001"));

              //账户

              List<Account> Account_QiaoFeng=new ArrayList<Account>();

              Account_QiaoFeng.add(new Account("3630000010033431001", balance, card_QiaoFeng_1));

              //银行

              List<Bank> Bank_QiaoFeng=new ArrayList<Bank>();

              Bank_QiaoFeng.add(new Bank("中国农业银行", Account_QiaoFeng));

              //用户

              User QF=new User("乔峰", Bank_QiaoFeng);

             

       //at user 洪七公

              //卡号

              List<Card> card_HongQiGong_1=new ArrayList<Card>();

              card_HongQiGong_1.add(new Card("6630000010033431008"));

              //账户

              List<Account> Account_HongQiGong=new ArrayList<Account>();

              Account_HongQiGong.add(new Account("3630000010033431008", balance, card_HongQiGong_1));

              //银行

              List<Bank> Bank_HongQiGong=new ArrayList<Bank>();

              Bank_HongQiGong.add(new Bank("中国农业银行", Account_HongQiGong));

              //用户

              User HQG=new User("洪七公", Bank_HongQiGong);

             

       //user list

              List<User> user_list=new ArrayList<User>();

              user_list.add(HQG);

              user_list.add(QF);

              user_list.add(LHC);

              user_list.add(ZSF);

              user_list.add(WXB);

              user_list.add(ZWJ);

              user_list.add(GJ);

              user_list.add(YG);

             

       //atm list

              List<ATM> atm_sum=new ArrayList<ATM>();

              atm_sum.add(new ATM(1, "中国建设银行",0.02));

              atm_sum.add(new ATM(2, "中国建设银行",0.02));

              atm_sum.add(new ATM(3, "中国建设银行",0.02));

              atm_sum.add(new ATM(4, "中国建设银行",0.02));

              atm_sum.add(new ATM(5, "中国工商银行",0.03));

              atm_sum.add(new ATM(6, "中国工商银行",0.03));

              atm_sum.add(new ATM(7, "中国农业银行",0.04));

              atm_sum.add(new ATM(8, "中国农业银行",0.04));

              atm_sum.add(new ATM(9, "中国农业银行",0.04));

              atm_sum.add(new ATM(10, "中国农业银行",0.04));

              atm_sum.add(new ATM(11, "中国农业银行",0.04));

              // 输入数据

              Scanner in=new Scanner(System.in);

              String putIN=in.nextLine();

              if(putIN.equals("#")) {

                     System.exit(0);

              }

              //去除空格

              String[] data=putIN.split("\\s+");

             

              //开始工作

              Check_ATM c_atm=new Check_ATM();

              Check_password c_password=new Check_password();

              Check_CardExist c_cardExist=new Check_CardExist();

              select_find s_f=new select_find();

             

              while(putIN!="#") {

                    

                     if(data.length==1) {

                            String temp_card=data[0];

                            if(c_cardExist.check_result(temp_card)==false) {

                                   return;

                            }

                            String temp_name=s_f.find_name(temp_card);

                            String temp_account=s_f.Find_Account();

                            User x=null;

                            for(int i=0;i<user_list.size();i++) {

                                   if(user_list.get(i).getUserName()==temp_name) {

                                          x=user_list.get(i);

                                   }

                            }

//                         System.out.println(temp_name);

                            for(int i=0;i<x.getUserBank().size();i++) {

                                   for(int j=0;j<x.getUserBank().get(i).getAccount().size();j++)

                                   if(x.getUserBank().get(i).getAccount().get(j).getAccount_id()==temp_account) {

                                          System.out.print("业务:查询余额 ¥");

                                          System.out.printf("%.2f",x.getUserBank().get(i).getAccount().get(j).getBalance());

                                   }

                            }

                     }

                    

                     if(data.length==4) {

                            String temp_card=data[0];

                            String temp_pw=data[1];

                            String temp_atm=data[2];

                            String temp_Money=data[3];

                            if(c_cardExist.check_result(temp_card)==false) {

                                   return;

                            }

                            if(c_password.check_resualt(temp_pw)==false) {

                                   return;

                            }

                            if(c_atm.check_resualt(temp_atm)==false) {

                                   return;

                            }

                            double Money=Double.parseDouble(temp_Money);//金钱

                            double abs_money=Math.abs(Money);

                            double rate_money=0;

                            int atm=Integer.parseInt(temp_atm);//atm序号

                            String temp_name=s_f.find_name(temp_card);

                            String temp_account=s_f.Find_Account();

                            double new_balance=0;

                            int save_account=0;//记录account的下标

                            int save_bank = 0;

                            boolean atm_flag=false;

                            double rate=atm_sum.get(atm-1).getRate();//跨行取款抽取

                            User x=null;

                            for(int i=0;i<user_list.size();i++) {

                                   if(user_list.get(i).getUserName()==temp_name) {

                                          x=user_list.get(i);

                                          save_bank=i;

                                   }

                            }

                            if(atm_sum.get(atm-1).getBank_name()==x.userBank.get(0).getBankName()) {

                                   atm_flag=true;

                                   rate=0;

                            }

                            for(int i=0;i<x.userBank.get(0).account.size();i++) {

                                   if(temp_account==x.userBank.get(0).getAccount().get(i).getAccount_id()) {

                                          save_account=i;//acount 的下标

                                   }

                            }

                           

                            if(Money<=0) {

                                   new_balance=x.userBank.get(0).account.get(save_account).getBalance()-Money;

                                   x.userBank.get(0).account.get(save_account).setBalance(new_balance);

                                   System.out.print("业务:存款 "+x.getUserName()+"在"+atm_sum.get(atm-1).getBank_name()+"的"+data[2]+"号ATM机上存款¥");

                                   System.out.printf("%.2f", abs_money);

                                   System.out.println();

                                   System.out.print("当前余额为¥");

                                   System.out.printf("%.2f", x.userBank.get(0).account.get(save_account).getBalance());

                            }

                            if(Money>0) {

                                   rate_money=Money*rate;

                                  

                                   if(save_bank>3) {

                                          new_balance=x.userBank.get(0).account.get(save_account).getBalance()-Money-rate_money;

                                          if (new_balance<0) {

                                                 System.out.print("Sorry,your account balance is insufficient.");

                                                 return;

                                          }

                                          x.userBank.get(0).account.get(save_account).setBalance(new_balance);

                                          System.out.print("业务:取款 "+x.getUserName()+"在"+atm_sum.get(atm-1).getBank_name()+"的"+data[2]+"号ATM机上取款¥");

                                          System.out.printf("%.2f", abs_money);

                                          System.out.println();

                                          System.out.print("当前余额为¥");

                                          System.out.printf("%.2f", x.userBank.get(0).account.get(save_account).getBalance());

                                   }

                                   if(save_bank<=3) {

                                   if(x.userBank.get(0).account.get(save_account).getBalance()>Money&&x.userBank.get(0).account.get(save_account).getBalance()>0) {

                                                 new_balance=x.userBank.get(0).account.get(save_account).getBalance()-Money-rate_money;

                                                 x.userBank.get(0).account.get(save_account).setBalance(new_balance);

                                          }

                                          else if(x.userBank.get(0).account.get(save_account).getBalance()<Money&&x.userBank.get(0).account.get(save_account).getBalance()>0) {

                                                 new_balance=x.userBank.get(0).account.get(save_account).getBalance()-Money-rate_money-0.05*(Money-x.userBank.get(0).account.get(save_account).getBalance());

                                                 x.userBank.get(0).account.get(save_account).setBalance(new_balance);

                                          }else if(x.userBank.get(0).account.get(save_account).getBalance()<Money&&x.userBank.get(0).account.get(save_account).getBalance()<=0) {

                                                 new_balance=x.userBank.get(0).account.get(save_account).getBalance()-Money-0.05*(Money);

                                                 x.userBank.get(0).account.get(save_account).setBalance(new_balance);

                                          }

                                          if(x.userBank.get(0).account.get(save_account).getBalance()>=(-50000)) {

                                          System.out.print("业务:取款 "+x.getUserName()+"在"+atm_sum.get(atm-1).getBank_name()+"的0"+atm_sum.get(atm-1).getAtm_num()+"号ATM机上取款¥");

                                          System.out.printf("%.2f", abs_money);

                                          System.out.println();

                                          System.out.print("当前余额为¥");

                                          System.out.printf("%.2f", x.userBank.get(0).account.get(save_account).getBalance());

                                          }else {

                                                 System.out.print("Sorry,your account balance is insufficient.");

                                                 return;

                                          }

                                         

                                         

//                                       new_balance=x.userBank.get(0).account.get(save_account).getBalance()-Money-rate_money;

//                                       if(x.userBank.get(0).account.get(save_account).getBalance()-Money>0) {

//                                              new_balance=x.userBank.get(0).account.get(save_account).getBalance()-Money-rate_money;

//                                              x.userBank.get(0).account.get(save_account).setBalance(new_balance);

//                                              System.out.print("业务:取款 "+x.getUserName()+"在"+atm_sum.get(atm-1).getBank_name()+"的0"+atm_sum.get(atm-1).getAtm_num()+"号ATM机上取款¥");

//                                              System.out.printf("%.2f", abs_money);

//                                              System.out.println();

//                                              System.out.print("当前余额为¥");

//                                              System.out.printf("%.2f", x.userBank.get(0).account.get(save_account).getBalance());

//                                       }

//                                       if(x.userBank.get(0).account.get(save_account).getBalance()-Money<0) {

//                                              if(x.userBank.get(0).account.get(save_account).getBalance()>0) {

//                                                     new_balance=x.userBank.get(0).account.get(save_account).getBalance()-Money-rate_money-0.05*(Money-x.userBank.get(0).account.get(save_account).getBalance());

//                                                     if (new_balance<-50000) {

//                                                            System.out.print("Sorry,your account balance is insufficient.");

//                                                            return;

//                                                     }

//                                                     x.userBank.get(0).account.get(save_account).setBalance(new_balance);

//                                                     System.out.print("业务:取款 "+x.getUserName()+"在"+atm_sum.get(atm-1).getBank_name()+"的0"+atm_sum.get(atm-1).getAtm_num()+"号ATM机上取款¥");

//                                                     System.out.printf("%.2f", abs_money);

//                                                     System.out.println();

//                                                     System.out.print("当前余额为¥");

//                                                     System.out.printf("%.2f", x.userBank.get(0).account.get(save_account).getBalance());

//                                              }else {

//                                                     new_balance=x.userBank.get(0).account.get(save_account).getBalance()-Money-0.05*(Money);

//                                                     if(new_balance<-50000) {

//                                                            System.out.print("Sorry,your account balance is insufficient.");

//                                                            return;

//                                                     }

//                                                     x.userBank.get(0).account.get(save_account).setBalance(new_balance);

//                                                     System.out.print("业务:取款 "+x.getUserName()+"在"+atm_sum.get(atm-1).getBank_name()+"的0"+atm_sum.get(atm-1).getAtm_num()+"号ATM机上取款¥");

//                                                     System.out.printf("%.2f", abs_money);

//                                                     System.out.println();

//                                                     System.out.print("当前余额为¥");

//                                                     System.out.printf("%.2f", x.userBank.get(0).account.get(save_account).getBalance());

//                                                    

//                                              }

//                                       }

                                         

                                  

                                   }

                            }

                     }

                    

                    

                     putIN=in.nextLine();

                     if(putIN.equals("#")) {

                            System.exit(0);

                     }

                     System.out.println();

                     data=putIN.split("\\s+");

              }

       }

}

 

class select_find{

       String account;

       String name=null;

       public String find_name(String card_num){

             

          if(card_num.equals("6217000010041315709")||card_num.equals("6217000010041315715")) {

                     name="杨过";

                     account="3217000010041315709";

              }

              if(card_num.equals("6217000010041315718")) {

                     name="杨过";

                     account="3217000010041315715";

              }

              if(card_num.equals("6217000010051320007")) {

                     name="郭靖";

                     account="3217000010051320007";

              }

              if(card_num.equals("6222081502001312389")) {

                     name="张无忌";

                     account="3222081502001312389";

              }

              if(card_num.equals("6222081502001312390")) {

                     name="张无忌";

                     account="3222081502001312390";

              }

          if(card_num.equals("6222081502001312399")||card_num.equals("6222081502001312400")) {

                     name="张无忌";

                     account="3222081502001312399";

              }

              if(card_num.equals("6222081502051320785")) {

                     name="韦小宝";

                     account="3222081502051320785";

              }

              if(card_num.equals("6222081502051320786")) {

                     name="韦小宝";

                     account="3222081502051320786";

              }

          if(card_num.equals("6640000010045442002")||card_num.equals("6640000010045442003")) {

                     name="张三丰";

                     account="3640000010045442002";

              }

              if(card_num.equals("6640000010045441009")) {

                     name="令狐冲";

                     account="3640000010045441009";

              }

              if(card_num.equals("6630000010033431001")) {

                     name="乔峰";

                     account="3630000010033431001";

              }

              if(card_num.equals("6630000010033431008")) {

                     name="洪七公";

                     account="3630000010033431008";

              }

              return name;

             

       }

      

       public String Find_Account() {

              return account;

       }

}

 

class Check_ATM{

       public boolean check_resualt(String atm) {

              int a_atm=Integer.parseInt(atm);

              if(a_atm<0) {

                     System.out.print("Sorry,the ATM's id is wrong.");

                     return false;

              }

              if(a_atm>11) {

                     System.out.print("Sorry,the ATM's id is wrong.");

                     return false;

              }

              return true;

       }

}

 

class Check_password{

       String password="88888888";

       public boolean check_resualt(String pw) {

              if(pw.equals(password)) {

                     return true;

              }

              System.out.print("Sorry,your password is wrong.");

              return false;

       }

}

 

 

class Check_CardExist{

       List<String> e=new ArrayList<String>();

       public boolean check_result(String temp) {

              e.add("6217000010041315709");

              e.add("6217000010041315715");

              e.add("6217000010041315718");

              e.add("6217000010051320007");

              e.add("6222081502001312389");

              e.add("6222081502001312390");

              e.add("6222081502001312399");

              e.add("6222081502001312400");

              e.add("6222081502051320785");

              e.add("6222081502051320786");

              e.add("6640000010045442002");

              e.add("6640000010045442003");

              e.add("6640000010045441009");

              e.add("6630000010033431001");

              e.add("6630000010033431008");

              if(e.contains(temp)) {

                     return true;

              }

              System.out.print("Sorry,this card does not exist.");

              return false;

       }

}

 

class Card{

       private String Cardnum;

       public String getCardnum() {

              return Cardnum;

       }

       public void setCardnum(String cardnum) {

              Cardnum = cardnum;

       }

       public Card(String Cardnum) {

              this.Cardnum=Cardnum;

       }

}

class Account{

       private String Account_id;

       private double balance;

       List<Card> card;

       public List<Card> getCard() {

              return card;

       }

       public String getAccount_id() {

              return Account_id;

       }

       public void setAccount_id(String account_id) {

              Account_id = account_id;

       }

       public double getBalance() {

              return balance;

       }

       public void setBalance(double balance) {

              this.balance = balance;

       }

       public void setCard(List<Card> card) {

              this.card = card;

       }

       public Account(String Account_id,double balance2,List<Card> card) {

              this.Account_id=Account_id;

              this.balance = balance2;

              this.card = card;

       }

}

class Bank{

       List<Account> account;

      

       public List<Account> getAccount() {

              return account;

       }

       public void setAccount(List<Account> account) {

              this.account = account;

       }

 

       private String bankName;

      

       public String getBankName() {

              return bankName;

       }

       public void setBankName(String bankName) {

              this.bankName = bankName;

       }

      

       public Bank(String bankName,List<Account> account) {

              this.bankName = bankName;

              this.account = account;

       }

}

class User{

       private String userName;

       List<Bank> userBank;

       public String getUserName() {

              return userName;

       }

       public void setUserName(String userName) {

              this.userName = userName;

       }

       public List<Bank> getUserBank() {

              return userBank;

       }

       public void setUserBank(List<Bank> userBank) {

              this.userBank = userBank;

       }

       public User(String userName,List<Bank> userBank) {

              this.userName = userName;

              this.userBank = userBank;

       }

}

 

class ATM{

       private int atm_num;

       private String Bank_name;

       private double rate;

       public ATM(int atm_num,String Bank_name,double rate) {

              this.atm_num=atm_num;

              this.Bank_name=Bank_name;

              this.rate=rate;

       }

       public int getAtm_num() {

              return atm_num;

       }

       public void setAtm_num(int atm_num) {

              this.atm_num = atm_num;

       }

       public String getBank_name() {

              return Bank_name;

       }

       public void setBank_name(String bank_name) {

              Bank_name = bank_name;

       }

       public double getRate() {

              return rate;

       }

       public void setRate(double rate) {

              this.rate = rate;

       }

      

}

 

 

采坑心得:

对于第八题和第九题,因为一开始做题时没有设计好,所以花费了大量时间做补救,有些地方在纯粹堆砌代码而毫无意义,耦合度高,没有发挥面向对象的优势。

 

改进建议:

下次做题会更加小心

 

总结:

有所提升,再接再厉。

posted @ 2021-12-19 18:27  紀氿  阅读(29)  评论(0)    收藏  举报